mcmc/0000755000175100001440000000000013074643067011221 5ustar hornikusersmcmc/inst/0000755000175100001440000000000013063023671012165 5ustar hornikusersmcmc/inst/designDoc/0000755000175100001440000000000013063023671014064 5ustar hornikusersmcmc/inst/designDoc/Makefile0000644000175100001440000000031413074514645015532 0ustar hornikusers all : metrop.pdf temper.pdf clean metrop.pdf : metrop.tex pdflatex metrop.tex pdflatex metrop.tex temper.pdf : temper.tex pdflatex temper.tex pdflatex temper.tex clean : rm -f *.dvi *.aux *.log mcmc/inst/designDoc/metrop.tex0000644000175100001440000003622113063023671016120 0ustar hornikusers \documentclass{article} \usepackage{indentfirst} \begin{document} \title{An MCMC Package for R} \author{Charles J. Geyer} \maketitle \section{Introduction} This package is a simple first attempt at a sensible \emph{general} MCMC package. It doesn't do much yet. It only does ``normal random-walk'' Metropolis for continuous distributions. No non-normal proposals. No Metropolis-Hastings or Metropolis-Hastings-Green. No discrete state. No dimension jumping. No simulated tempering. No perfect sampling. There's a lot left to do. Still, limited as it is, it does equilibrium distributions that no other R package does. Its basic idea is the following. Given an R function \verb@fred@ that calculates the unnormalized density of the desired equilibrium distribution of the Markov chain, or, better yet, \emph{log} unnormalized density, so we avoid overflow and underflow, the \verb@metrop@ function should generate a Markov chain having this stationary distribution. The package does not do any of the following. \begin{itemize} \item \textbf{Theory.} (What R package does?) It doesn't prove the Markov chain is irreducible or ergodic or positive recurrent or Harris recurrent or geometrically ergodic or uniformly ergodic or satisfies conditions for the central limit theorem. \item \textbf{Diagnostics.} There are no non-bogus Markov chain diagnostics (except for perfect sampling). This package doesn't do any bogus diagnostics (other R packages do them). \item \textbf{Calculus.} If the putative unnormalized density specified by \verb@fred@ is not integrable, then it does not specify an equilibrium distribution. But this package doesn't check that either. \end{itemize} Thus the only requirement the package has to satisfy is that given a function \verb@fred@ it correctly simulates a Markov chain that actually has \verb@fred@ as its equilibrium distribution (when \verb@fred@ actually does specify some equilibrium distribution) \section{Design Issues} \subsection{First Try} For a start we have a function with signature \begin{verbatim} metrop(lud, initial, niter, ...) \end{verbatim} such that when \begin{itemize} \item \verb@initial@ is a real vector, the initial state of the Markov chain, \item \verb@lud@ is a function, the log unnormalized density of the equilibrium distribution of the Markov chain, such that \begin{itemize} \item \verb@lud(initial, ...)@ works and produces a finite scalar value and \item \verb@lud(x, ...)@ works for any real vector \verb@x@ having the same length as \verb@initial@ and all elements finite and and produces a scalar value that is finite or \verb@-Inf@, \end{itemize} \end{itemize} then the function produces an \verb@niter@ by \verb@length(initial)@ matrix whose rows are the iterations of the Markov chain. \subsubsection{Checks} If \begin{verbatim} logh <- lud(initial, ...) \end{verbatim} then \verb@is.finite(logh)@ is \verb@TRUE@. Moreover, if \verb@x@ is any vector such that \verb@length(x) == length(initial)@ and \verb@all(is.finite(x))@ are \verb@TRUE@ and \begin{verbatim} logh <- lud(x, ...) \end{verbatim} then \begin{verbatim} is.finite(logh) | (logh == -Inf) \end{verbatim} is \verb@TRUE@. Points \verb@x@ having log unnormalized density \verb@-Inf@ have density zero (normalized or unnormalized, since a constant times zero is zero) hence cannot occur. Thus if \begin{verbatim} path <- metrop(fred, x, n, some, extra, arguments) \end{verbatim} then \begin{verbatim} all(is.finite(apply(path, 1, fred, some, extra, arguments))) \end{verbatim} is \verb@TRUE@. This is how we specify log unnormalized densities for distribution having support that is not all of Euclidean space. The value of the log unnormalized density off the support is \verb@-Inf@. Thus when coding a log unnormalized density, we should normally do something like \begin{verbatim} fred <- function(x, ...) { if (! is.numeric(x)) stop("argument x not numeric") if (length(x) != d) stop("argument x wrong length") if (! all(is.finite(x))) stop("elements of argument x not all finite") if (! is.in.the.support(x)) return(-Inf) return(log.unnormalized.density(x)) } \end{verbatim} where \verb@d@ is the dimension of the state space of the Markov chain (defined in the global environment or in the \verb@...@ arguments), \verb@is.in.the.support(x)@ returns \verb@TRUE@ if \verb@x@ is in the support of the desired equilibrium distribution and \verb@FALSE@ otherwise and \verb@log.unnormalized.density(x)@ calculates the log unnormalized density of the desired equilibrium distribution at the point \verb@x@, which is guaranteed to be finite because \verb@x@ is in the support if the this code is executed. Of course, you needn't actually have functions named \verb@is.in.the.support@ and \verb@log.unnormalized.density@. The point is that you use this logic. First you check whether \verb@x@ is in the support. If not return \verb@-Inf@. If it is, return a finite value. Do not crash. Do not return \verb@NA@, \verb@NaN@, or \verb@Inf@. If you do, then \verb@metrop@ crashes, and it's your fault. Of course, a crash is no big deal. Lots of first efforts in R crash. You just fix the problem and retry. Error messages are your friends. \subsection{Proposal} We also need to specify the proposal distribution (the preceding stuff assumed some default proposal). This can be any multivariate normal distribution on the Euclidean space of dimension \verb@length(initial)@ having mean zero. Thus it is specified by specifying its covariance matrix. But to avoid having to check whether the specified covariance matrix actually is a covariance matrix, we make the specification an arbitrary \verb@d@ by \verb@d@ matrix, call it \verb@scale@, where \verb@d@ is the dimension of the state space, specified by \verb@length(initial)@, and use the proposal \verb@x + scale %*% z@, where \verb@x@ is the current state and \verb@z@ is a standard normal random vector (``standard'' meaning its covariance matrix is the identity matrix). Thus we need to add this to the argument list of our function. It is now \begin{verbatim} metrop(lud, initial, niter, scale, ...) \end{verbatim} The covariance matrix specified by this is, of course, \verb@scale %*% t(scale)@. If you want the proposal to have covariance matrix \verb@melvin@, then specifying \verb@scale = t(chol(melvin))@ will do the job. (Of course, many other specifications will also do the job.) For convenience, we also allow \verb@scale@ to be a vector of length \verb@d@ and in this case take \verb@scale = sally@ to mean the same thing as \verb@scale = diag(sally)@. For convenience, we also allow \verb@scale@ to be a vector of length 1 and in this case take \verb@scale = sally@ to mean the same thing as \verb@scale = sally * diag(d)@ where \verb@d@ is still the dimension of the state space \verb@length(initial)@. We can use this last convenience option to give \verb@scale@ a default \begin{verbatim} metrop(lud, initial, niter, scale = 1, ...) \end{verbatim} In order to tell what is sensible scaling, we need to return the acceptance rate (the proportion of proposals that are accepted). The only criterion known for choosing sensible scaling is to adjust so that the acceptance rate is about 20\%. Of course, that recommendation was derived for a specific toy model that is not very much like what people do in real MCMC applications, so 20\% is only a very rough guideline. But acceptance rate is all we know to use, so that's what we will output. Thus the result of \verb@metrop@, assuming we write it in R will be something like \begin{verbatim} return(structure(list(path = path, rate = rate), class = "mcmc")) \end{verbatim} and if we write it in C will be whatever does the same job. \subsection{Output I} Generally we don't want \verb@path@ to be as described above. It may be way too big. We might have \verb@d@, the dimension of the state space $10^3$ or even larger and we might have \verb@niter@ $10^7$ or even larger, the resulting \verb@path@ matrix would be $10^{10}$ doubles or $8 \times 10^{10}$ bytes. Too big to fit in my computer! Thus we facilitate subsampling and batching of the output. \subsubsection{Subsampling} If the Markov chain exhibits high autocorrelation, subsampling the chain may lose little information. (Most users way overdo the subsampling, but it's not the job of a computer program to keep users from overdoing things). Thus we add an argument \verb@nspac@ that specifies subsampling. Only every \verb@nspac@ iterate is output. \subsubsection{Batching} The method of batch means uses ``batches'' which are sums over consecutive blocks of output. For most purposes batching is better than subsampling. It loses no information while reducing the amount of output even more than subsampling. So we introduce arguments \verb@nbatch@ specifying the number of batches and \verb@blen@ specifying the length of the batches. Our function now has signature \begin{verbatim} metrop(lud, initial, nbatch, blen = 1, nspac = 1, scale = 1, ...) \end{verbatim} Note that the argument \verb@niter@ formerly present has vanished. The number of iterations that will now be done is \verb@nbatch * blen * nspac@. If we accept the defaults \verb@blen = 1@ and \verb@nspac = 1@, then \verb@nbatch@ is the same as the former argument \verb@niter@. Otherwise, it is quite different. \subsection{Output II} The preceding section takes care of of the problem of \verb@niter@ being too big. This section deals with the dimension of the state space being too big. When the dimension of the state space is large, we generally do not want to output the whole state, but only some function of the state. Thus we need another function (besides \verb@lud@) to produce the output vector. Call it \verb@outfun@. The requirements on \verb@outfun@ are \begin{itemize} \item If \verb@is.finite(lud(x, ...))@, then \verb@outfun(x, ...)@ works (it does not crash) and produces a vector having all elements finite and always of the same length (say \verb@k@). \end{itemize} \verb@outfun@ will never be called in any other situation (that is, never when \verb@x@ is not in the support of the equilibrium distribution). Now we can describe the \verb@path@ component of the output. We'll use a little math here. Write $L$ for \verb@blen@ and $M$ for \verb@nspac@. Write $x_i$ for the $i$-th iterate of the Markov chain, and write $g$ for \verb@outfun@. Then \verb@path[@$j$\verb@, ]@ is the vector $$ \frac{1}{L} \sum_{i = 1}^L g(x_{M [L (j - 1) + i]}) $$ For convenience, we also allow \verb@outfun@ to be a logical vector of length \verb@d@ or an integer vector having elements in \verb@1:d@ or in \verb@-(1:d)@ and in this case take \verb@outfun = fred@ to mean the same thing as \verb@outfun = function(x) x[fred]@. For convenience, we also allow \verb@outfun@ to be missing take this to mean the same thing as \verb@outfun = function(x) x@, that is, the ``outfun'' is the identity function and we are back to outputting the entire state. Our function now has signature \begin{verbatim} metrop(lud, initial, nbatch, blen = 1, nspac = 1, scale = 1, outfun, ...) \end{verbatim} \subsection{Restarting} It should be possible to restart the Markov chain and get exactly the same results. It should be possible to continue the Markov chain and get exactly the same results. Thus we need to save the initial and final state of the Markov chain and the initial and final state of the random number generator (the R object \verb@.Random.seed@). Thus the result of \verb@metrop@ now looks like \begin{verbatim} return(structure(list(path = path, rate = rate, initial = initial, final = final, initial.seed = iseed, final.seed = .Random.seed), class = "mcmc")) \end{verbatim} We also need to add arguments to \verb@metrop@. It now has signature \begin{verbatim} metrop(lud, initial, nbatch, blen = 1, nspac = 1, scale = 1, outfun, object, restart = FALSE, ...) \end{verbatim} Here \verb@object@ is an R object of class \verb@"mcmc"@, the output a previous call to \verb@metrop@, from which we take either initial or final state and seed depending the value of \verb@restart@. While we are at it, it is convenient to allow any or all of the other arguments to be missing if \verb@object@ is supplied. We just take the argument from \verb@object@. Thus we can make calls like \begin{verbatim} out <- metrop(fred, x, 1e3, scale = 4, blen = 3) out.too <- metrop(object = out, nbatch = 1e4) \end{verbatim} Woof! I now see (how embarrasing) after four earlier versions how to use the R class system to make this convenient. We have three functions. \begin{verbatim} metrop.default <- function(o, ...) UseMethod("metrop") metrop.mcmc <- function(o, initial, nbatch, blen = 1, nspac = 1, scale = 1, outfun, restart = FALSE, ...) { if (missing(nbatch)) nbatch <- o$nbatch if (missing(blen)) blen <- o$blen if (missing(nspac)) nspac <- o$nspac if (missing(scale)) scale <- o$scale if (missing(outfun)) outfun <- o$outfun if (restart) { .Random.seed <- o$final.seed return(metrop.function(o$lud, o$final, nbatch, blen, nspac, scale, outfun)) } else { .Random.seed <- o$initial.seed return(metrop.function(o$lud, o$initial, nbatch, blen, nspac, scale, outfun)) } } metrop.function <- function(o, initial, nbatch, blen = 1, nspac = 1, scale = 1, outfun, restart = FALSE, ...) { if (! exists(".Random.seed")) runif(1) initial.seed <- .Random.seed func1 <- function(state) o(state, ...) func2 <- function(state) outfun(state, ...) .Call("metrop", func1, initial, nbatch, blen, nspac, scale, func2, environment(fun = func1), environment(fun = func2)) } \end{verbatim} Note that \verb@restart@ is ignored in \verb@metrop.function@. We can't ``restart'' when we have no saved state in an \verb@"mcmc"@ object. Note also that our \verb@"mcmc"@ objects must now store a lot more stuff (and more to come in the next section). \subsection{Testing and Debugging} It is nearly impossible to test or debug a random algorithm (any Monte Carlo) from looking at its designed (useful to the user) output. In order to do any serious testing or debugging, it is necessary to look under the hood. For the Metropolis algorithm, we need to look at the current state, the proposal, the log odds ratio, the uniform random variate (if any) used in the Metropolis rejection, and the result (accept or reject) of the Metropolis rejection. Hence we need to add one final argument \verb@debug = FALSE@ to our functions and a lot of debugging output to the result. In debugging a Metropolis (etc.)\ algorithm there is a very important principle. Debugging should use Markov chain theory! Just enlarge the state space of the Markov chain to include \begin{itemize} \item the proposal (vector), \item details of the calculation of the Metropolis-Hastings-Green ratio (for Metropolis this is just the log unnormalized density at the current state and proposal, for others it includes proposal densities) and the calculated ratio, \item the uniform random number (if any) used in the decision, and \item the decision (\verb@TRUE@ or \verb@FALSE@) in the Metropolis rejection. \end{itemize} With all that it is easy to tell whether the algorithm is doing the Right Thing. Without all that, it's nearly impossible. \end{document} mcmc/inst/designDoc/temper.tex0000644000175100001440000002477313063023671016117 0ustar hornikusers \documentclass[11pt]{article} \usepackage{amsmath} \usepackage{indentfirst} \usepackage{natbib} \usepackage{url} \RequirePackage{amsfonts} \newcommand{\real}{\mathbb{R}} \newcommand{\fatdot}{\,\cdot\,} \begin{document} \title{Simulated Tempering for the MCMC Package} \author{Charles J. Geyer} \maketitle \section{Parallel and Serial Tempering} Serial tempering \citep{marinari-parisi,geyer-thompson} runs a Markov chain whose state is $(i, x)$, where $i$ is a positive integer between 1 and $k$ and $x$ is an element of $\real^p$. The unnormalized density of the equilibrium distribution is $h(i, x)$. The integer $i$ is called the \emph{index of the component of the mixture}, and the integer $k$ is called the \emph{number of components of the mixture}. The reason for this terminology is that \begin{equation} \label{eq:mix} h(x) = \sum_{i = 1}^k h(i, x), \end{equation} which is the unnormalized marginal density of $x$ derived from the unnormalized joint density $h(i, x)$ of the equilibrium distribution of the Markov chain, is a mixture of $k$ component distributions having unnormalized density $h(i, \fatdot)$ for different $i$. Parallel tempering \citep{geyer} runs a Markov chain whose state is $(x_1, \ldots, x_k)$ where each $x_i$ is an element of $\real^p$. Thus the state is a vector whose elements are vectors, which may be thought of as a $k \times p$ matrix. The unnormalized density of the equilibrium distribution is \begin{equation} \label{eq:parallel-joint} h(x_1, \ldots, x_k) = \prod_{i \in I} h(i, x_i). \end{equation} This joint equilibrium distribution is the product of the marginals $h(i, \fatdot)$ for different $i$. This the $x_i$ are asymptotically independent in parallel tempering. \section{Sensitivity to Normalization} So long as one is only interested in one of the component distributions $h(i, \fatdot)$, both parallel and serial tempering do the job. And this job is what gives them the name ``tempering'' by analogy with simulated annealing \citep{marinari-parisi}. The other component distributions only help in sampling the component of interest. In this job, parallel tempering is easier to set up because it is insensitive to normalizing constants in the following sense. Suppose we change the normalization for each component distribution using $$ h^*(i, x) = a_i h(i, x). $$ This greatly changes the mixture distribution \eqref{eq:mix} sampled by simulated tempering. We now get $$ h^*(x) = \sum_{i = 1}^k h^*(i, x) = \sum_{i = 1}^k a_i h(i, x), $$ which may be very different from \eqref{eq:mix}, even considered as an unnormalized density (which it is). But \eqref{eq:parallel-joint}, considered as an unnormalized density (which it is), does not change at all \begin{align*} h^*(x_1, \ldots, x_k) & = \prod_{i = 1}^k h^*(i, x) \\ & = \prod_{i = 1}^k a_i h(i, x) \\ & = \left( \prod_{i = 1}^k a_i \right) \left( \prod_{i = 1}^k h(i, x) \right) \\ & = \left( \prod_{i = 1}^k a_i \right) h(x_1, \ldots, x_k) \end{align*} (the normalizing constant changes, but that does not matter for an unnormalized density; it still specifies the same probability distribution). All this is to say that serial tempering is very sensitive to the choices of normalizing constants of the individual component distributions (the $a_i$ in the preceding discussion) and parallel tempering is totally insensitive to them. Thus parallel tempering is easier to set up and get working. \citet{geyer-thompson}, however, independently invented serial tempering because it worked for a problem where parallel tempering failed. So for this ``tempering'' job, where one is only interested in sampling one component distribution (and the others are just helpers) parallel tempering is easier to use but serial tempering works better. \section{Umbrella Sampling} Sometimes one is actually interested in sampling a particular mixture distribution having unnormalized density \eqref{eq:mix}. This arises in Bayesian and frequentist model averaging and for other reasons. An umbrella term for this application is ``umbrella sampling'' \citep{torrie-valleau}. In this application only serial tempering does more than parallel tempering. Parallel tempering can simulate any directly specified mixture. If $$ f(i, x) = \frac{h(i, x)}{\int h(i, x) \, d x} $$ are the normalized component distributions and $b_1$, $\dots$, $b_k$ are nonnegative and sum to one, then $$ f(x) = \sum_{i = 1}^k b_i f(i, x) $$ is a normalized mixture distribution, and parallel tempering can be used to sample it. However, this ``directly specified'' mixture is often not of interest because the individual component normalizing constants \begin{equation} \label{eq:norm-con} c_i = \int h(i, x) \, d x \end{equation} are unknown. Suppose we are doing Bayesian model averaging and $h(i, x)$ is the unnormalized posterior density (likelihood times prior). This means $i$ and $x$ are parameters to the Bayesian; $i$ denotes the model and $x$ denotes the within-model parameters. Then the normalizing constants \eqref{eq:norm-con} are unnormalized Bayes factors, which Bayesians use for model comparison. The function $i \mapsto c_i$ is the unnormalized density of the marginal distribution of the random variable $i$ derived from the joint distribution $h(i, x)$, which is the equilibrium distribution of the Markov chain. It is therefore estimated, up to a constant of proportionality, by the marginal distribution of $i$. Thus serial tempering, unlike parallel tempering, provides simple and direct estimates of Bayes factors and other normalizing constants. \section{Update Mechanisms} Traditionally, tempering makes two kinds of elementary updates, one changes only $x$ in serial tempering or one $x_i$ in parallel tempering. We call them within-component updates, and will use normal random walk Metropolis updates analogous to those used by the \texttt{metrop} function. The other kind changes $i$ in serial tempering or swaps $x_i$ and $x_j$ in parallel tempering. We call them jump/swap updates (jump in serial tempering, swap in parallel tempering). \subsection{Serial Tempering} The combined update is a 50-50 mixture of within-component elementary updates and jump updates. Suppose the current state is $(i, x)$. A within-component update proposes $x^*$ which is normally distributed centered at $x$. Then Metropolis rejection of the proposal is done with Metropolis ratio $$ \frac{h(i, x^*)}{h(i, x)} $$ This is valid because the proposal is symmetric by symmetry of the normal distribution. A jump update proposes $i^*$, which is chosen uniformly at random from the ``neighbors'' of $i$ (the neighbor relation is specified by a user-supplied logical matrix). This proposal need not be symmetric, because $i$ and $i^*$ need not have the same number of neighbors. Write $n(i)$ and $n(i^*)$ for these neighbor counts. Then the probability of proposing $i^*$ when the current state is $i$ is $1 / n(i)$, and the probability of proposing $i$ when the current state is $i^*$ is $1 / n(i^*)$. Hence the appropriate Hastings ratio for Metropolis-Hastings rejection is $$ \frac{h(i^*, x) / n(i^*)}{h(i, x) / n(i)} = \frac{h(i^*, x)}{h(i, x)} \cdot \frac{n(i)}{n(i^*)} $$ \subsection{Parallel Tempering} The combined update is a 50-50 mixture of within-component elementary updates and swap updates. Suppose the current state is $(x_1, \ldots, x_k)$. A within-component chooses $i$ uniformly at random in $\{ 1, \ldots, k \}$, and then proposes $x_i^*$ which is normally distributed centered at $x_i$. Then Metropolis rejection of the proposal is done with Metropolis ratio $$ \frac{h(i, x_i^*)}{h(i, x_i)} $$ This is valid because the proposal is symmetric by symmetry of the normal distribution. A swap update chooses $i$ uniformly at random in $\{ 1, \ldots, k \}$ and then $j$, which is chosen uniformly at random from the neighbors of $i$. This proposal is automatically symmetric, because a swap move is its own inverse. Hence the appropriate Hastings ratio for Metropolis-Hastings rejection is $$ \frac{h(i, x_j) h(j, x_i)}{h(i, x_i) h(j, x_j)} $$ \section{Acceptance Rates} Metropolis-Hastings acceptance rates are not comparable to Metropolis acceptance rates. For serial tempering $$ E \left\{ 1 \wedge \frac{h(i^*, x)}{h(i, x)} \cdot \frac{n(i)}{n(i^*)} \right\} \neq E \left\{ 1 \wedge \frac{h(i^*, x)}{h(i, x)} \right\} $$ where the expectations are taken with respect to $(i, x)$ having the equilibrium distribution of the Markov chain and the conditional distribution of $i^*$ given $i$ being uniform over neighbors of $i$. For parallel tempering, $$ E \left\{ 1 \wedge \frac{h(i, x_j) h(j, x_i)}{h(i, x_i) h(j, x_j)} \cdot \frac{n(i)}{n(j)} \right\} \neq E \left\{ 1 \wedge \frac{h(i, x_j) h(j, x_i)}{h(i, x_i) h(j, x_j)} \right\} $$ where the expectations are taken with respect to $(x_1, \ldots, x_k)$ having the equilibrium distribution of the Markov chain, $(i, j)$ being independent of $(x_1, \ldots, x_k)$, the marginal distribution of $i$ being uniform on $\{ 1, \ldots, k \}$, and the conditional distribution of $j$ given $i$ being uniform over neighbors of $i$. Thus we need to report rates going both ways, for example, for serial tempering, when $i = 1$ and $i^* = 2$ as well as when $i = 2$ and $i^* = 1$. And similarly for parallel tempering. \begin{thebibliography}{} \bibitem[Geyer(1991)]{geyer} Geyer, C.~J. (1991). \newblock Markov chain Monte Carlo maximum likelihood. \newblock \emph{Computing Science and Statistics: Proceedings of the Symposium on Interface Critical Applications of Scientific Computing (23rd): Biology, Engineering, Medicine, Speech Held in Seattle, Washington on 21-24 April 1991}, J.~R. Kettenring and E.~M. Keramidas, eds., 156--163. \newblock \url{http://www.stat.umn.edu/geyer/f05/8931/c.ps} \bibitem[Geyer and Thompson(1995)]{geyer-thompson} Geyer, C.~J., and Thompson, E.~A. (1995). \newblock Annealing Markov chain Monte Carlo with applications to ancestral inference. \newblock \emph{Journal of the American Statistical Association}, \textbf{90}, 909--920. \bibitem[Marinari and Parisi(1992)]{marinari-parisi} Marinari, E., and Parisi G. (1992). \newblock Simulated tempering: A new Monte Carlo Scheme. \newblock \emph{Europhysics Letters}, \textbf{19}, 451--458. \bibitem[Torrie and Valleau(1977)]{torrie-valleau} Torrie, G.~M., and Valleau, J.~P. (1977). \newblock Nonphysical sampling distributions in Monte Carlo free-energy estimation: Umbrella sampling. \newblock \emph{Journal of Computational Physics}, \textbf{23}, 187--199. \end{thebibliography} \end{document} mcmc/inst/doc/0000755000175100001440000000000013074514644012741 5ustar hornikusersmcmc/inst/doc/metrop.pdf0000644000175100001440000046473213062557432014761 0ustar hornikusers%PDF-1.5 % 3 0 obj << /Length 1805 /Filter /FlateDecode >> stream xڭXK6WDbU$E=NEy)t6m-%e΃%YiH ɷ? y,N7w qYM*=T"/޾_2~jc7 =ZKfqQNqg+{G/,"QFii\o|"{29,4ViF/v*2)X:z]o:߀}皚2.3B@^ Կ;;=@". {u*\OD.w<9[wllW>H*$2 խ*s1PQ;&d.b |;3,'=MD-z%$'[,RQSW&" J_>4#J1Շo=cSD{ toz$Itpm}oA MX:>ؚjI?ꓓ>WNLK]0^zkkx S =ĠLgo(.]V4LK*vEbYH* zIXgvIkaa}ڲD$Uy&ڹtYUP fRdQ)dڳ遚B _C*w]i.PvgD M;>M鋜DCNѽi?:X6^cSU Ȯut)(̄]I: Uj(G cY ;M'C(GSTWPVRpȤ#kl]t5p]2F>PiZRyK'Xx!BJqFC=: "IDai6lZ炀Ud4x(@w2rR[2jŅKmQaN3"\EPe[fxcx"B0ޞ a' P5?*NQT;IJsYIT%*@2yTJ'>DN^355f2ۀeŷ1IU\1rU.T 0KZԽgwpA 1yBU ΊP=A 7PQOfhԮ%^{AX_ibn ,uNp3Pl)[+1AFez! rY淄-Ł0,?ozRgQx{YXS$oWXduNG΍p0pb;R~Mo[ aAGȅiQ.&(tC5S:q)$<8Pd;REgdT>PJõ8W@tMytյ?GN?~_1Msb5V^f22\D2а;˛0. endstream endobj 19 0 obj << /Length 2349 /Filter /FlateDecode >> stream xڥYY~ׯX 0M4mHlD8JldNGrC =u4ٞ?,Guu_~7U.D&W7H)&US!~l_}#7;CFU[n~k޴#CK9ji |#kwq7 ̂|z'׻((xⅺcӴݱ'SLeָ;mG*6t(𪏶s"-xz}0!,? ;]oP 1JjGQ#c8堻{83aޝ-diy6=NXE /B9 !bq.9q.Ls©,;Is8ґ~c~pI$1h%) <GL.d(&$KI˱L{^"tF.^d_V|uW ]4YgvUv E뭑̥J]%_xPvU!LKU;_fq \!%_+yhyL>#Hf{2J.OU\G|O ]{q^HJN`PЕ)'cߡ끣K@,UXEi2r@n{kxPƾ@jQ44VSS=.G',Iqq 'koوH1vTq F5@+,)}qgL'q*iޡV"]@0EA,zAAL }ˣ/7߻,kOnӥh x)M;J:\0^FnRHx[cxz 5svn/ϔ!a3,qDMIˡT )w{crHKZ iw)=U[u[Z> uK<[ X<[~'D3]{yd֡ qSgS ftSMLhZ3t2oJx>|?bn3V=imK7 K0kҔ$, ?{XyfqS^9VBz{҆yq?MV}`\'/W'TmhnݓTD&C6߲q2j,J=V%2 cU)`RPI`&YC&8wQZH4KUs 7SO_'8pV;Dt::q )^H3G MJ8`gU0ʉV"5 <,Tto18Ww6S*gѹ~i8LقI*6@i\GH~^*RnO_ faYzc-k9dj 0!`6L#zEmbǺ/j]S'/նw٩uU2XpcI"k(>0Pעe̿¥o^7>A endstream endobj 22 0 obj << /Length 2375 /Filter /FlateDecode >> stream xڝYɎF+j f4svh3 aC6]EEظU-ɗܘ"Eo~yk]ĻǝV%qDo0 .2QPe_Jz)Ziw i+3߿]TNÐcOZ$}-}Ӹ ξo˽pLy1Ԯ8{{ w)yEy3HJ­`Viv! FBz͍A fNi;(\."Qb 2'8Hq .\tѾe'_~ AkHqMIsQ}.[ F65*Eͷ\ǍsL)ks,A,{*+0%;bAYytŝS |rs ˦4;4#V BFf? c>A4w:hjt. bT #eԪOmlceLz‚y,Qfr@؟cC* 'LodNh7Nl݃/O,b8d+ 0[p zxs1*pFFe,ʡGH( )S6I#NTd>3#\EAW "Up9g\"0 1 X0.1-FO#:*[1}~|Z~xØa(g_@5_?sF eW "%LEz/%v'8 drsgzߏ͋ϷщUfr[j*e[$U.$wCDȽ9L4jWF̈́fϢݥM' +K&(x1k自‘%36[MC=`&-)z:[hh0(,,Gt6%@ 6h!Sn$U5B |H wKZA$ A.LҀӵ-K%x'Ͱ[ك/G@Y2&ꙗ-ޅjO+akPFheO7ړ;lr'ByczYȜ\8--HlyCXЂFFmM 킦h8ܸț3| X_%{i ,<E%xI5usmwސTCK$j.L!et0 mAU޿y[rʜ̀u _L5! Jnƕ g{m3O<%X .V;cctPlp9PcJ0#f4?n$.dgruzuKn4ڢ m"A\1a2v,{?̎5 isF_[C[!NAxV`s8ыl`p5D٭ᜟ^mɃ B RRJ~s]ͦaT!0k^$TXkjP JTz4P 'Q/Re6ҷ*eJ/3رέ\h8ᑮM8 k2N, Qlœ2Lkn3ק@O5Ƀ\4#LLCytfiP㉍@d'Rh^e#҉#3Q~`b7@cd$KMA.VYbS8Ti(h7lܼh"Hc!3,pcB]E1 i-W(袞~&拁HǓ}%nDB@:;K͓͢"v7c1  F9o?Mi(hL~5"hk2`3T"5EZ 0.ZJb2I BH(P-`)g' Cfﺦo_ippOD0 q]!%[o4yGl̒Rģ˪K ϗ hT{&p2Q.`,[^뀣44( ;> stream xYK6ϯhM͈xHb,2}Ш9Z>U,;^ҢH6YW_Qn~|#M -qådF&dm$[γ4y]խɾnn?7JmRIѳnPuRhT99mďԢGzwsCSlK#: ޮ$,Jo(*W3õ_޻̩et:Xf*۩Eu/]U*q>H:`qtMӀS bx&VJ%@+z$=`qGKCCʥˡ7$p0i ma)&FMd[LHj\8/ /c9@#7rNVaV2g) -PB B=O!f3uw7bq6xٲϵKXc9LJ&o>88CGQmsD }ib޾ljFS) ?дAwtlnn9!;~g]&Rk_;^ߵn_6-NKucnﲊ ]ZV ;/y,Pl<3hu@ +smcOIHBjɝS3G!J $۰<8@rcI(S̤AָZ5^w[4a+1rj9_<[,N d9MZNDdM]sQL!uW' (]/E,EE31zGf894lCa7̤Zk˽ʆ .UB ^E @D!ta Hr,Z,C"EbHw7qP|!PX]'WaNaY3DxJ|k~ҐK\&gO %BLx$8ap:))Qt]=} _'bҵ]!E Gb qyZGiC%R& Eܢ:L7;$0g7m65^ԯYʫ!RXL) @dGT, ZXY`x ɍb "bQԦ(VJd}d?_.tDA :sMXN0izfbqo1c#UD|\3& j, ҧYqW G[۶rEYj0 nj5>GPDH0?k , wG=@e|.8(hL8|kc>Ʉ NWgv}pFm%VR)%W|ǭh\eb% +{Db: /ؚsB/% dXu_֝it3SȎ\utH%,4ay= _ *ϥ7<:W!Pxb+W RA_QXQPH:hעMh!ڸ6s%7"Sm;ƓC= ڎφ7Ö78Z $gɳ`urYUY^o9.i.sOƴw3cӳ~}[FE6V}S9}澳}N= ~M~#t Tr 8e endstream endobj 33 0 obj << /Length 1567 /Filter /FlateDecode >> stream xڕMo6_=@̊>-adzvPl:V#KH% GIe-#wDq,VIJ nws7J5e}wUHӈQ,z#0Їv߭7" mNɂFr(AKN?#mQ;NʽV_@JGjȽ$:*zEѨwVvEjTPVXMp҉ǞFx4G`FсX6O<]\i:{ZJBqycFKSm@n7gOH~X@$ Nx ;G9E/zh?!-m[?uGtҖU4mO<9An.q|Q[C"l!I o]vc`0ˬD@NF]`m9clϷ6cᧃJzC_s;, yOv!(ޠ]<:sS˦sB/*.G$o G}BJ<JNn#¦xXF- JhZZײ8")TY;&?Ҽsۋ!9O.̵%I>5C!2>CkY rBjMuhl3OHUngڠ!ػ'BPoַ1E(*[#//9Lɋi31& Z tJz1d/6tF\0בP*BPyG<+˩2B5!]U/7+?nhWr%xd_g]gi%΄>)x1B6f.4 ~>Ga2S@@ S~e<BѤ[m1lۃbo M U-x5eSkL(xftQd y+j& 9LeH!4AmaG^f;/LG@OGџZ}R^+,K_ʱgiy$8b/}[D>څpH,z5o[H妄G[d-Z;Zݓ"uД糑.!.wJp֏d>'"d$yO%|&1>.2~],sZʛE٬{ܘdDeY4KUg^(`˜eYFL endstream endobj 36 0 obj << /Length 1818 /Filter /FlateDecode >> stream xڭWK6W85#Q@{hӤIȡA+Ѷ6hP&ۢ3Rl-rD7䏛'/^|f딧ve Kh&qT?h+u`r$nEnkS y(b&Al۷%gM_]r0Mn^[V<{Y4#z\Qb}rcZ4&Ec@f>s*㙣):aF*E/B}a}f"cam/ĊqdֻVi8;ig'kC…,gslJ4yQsCOQ,WD;f'.A&b."邤qwD8dsr-݁, y8I/B YI[,4sr=nJȌ>"ۮ4Q*N(ڂ#5;k?uO_oIx_y8ND(;Nb!ؙ3ְpƚ@B%;{T`{[6bS0wR:=T* m눺JutK]BThilj (pT>"ZݦVzQ"BӾPŦBiAL^6ཅGxҋr>8҃/'Q=~ZHanw[=p3:'h@. ^8sP n l gb/ḰZ1CUDpuً-Aŵu@Cc{R`1Jq\mτ\u Nٖ("]+]ґjPTxeE[4nYOLS'Cp`s~KӡW{[ Y[|\Gb&l 5 mc : ^u(W3taA%K'2alLRDL4%sElq ʱ)hJDxp׆QCah.c#C']h^MEH< ҂,񾰝[ەJٮd@HPpQ>˹2"NȭO!u[;WREb֥;,H ת,&X6;NLacO+)/Lsphʾ)M0 lA=P4_zRɶIM fiXB:1Y;OM֣#׹;O`Zv=C[`߬0EcD-pp}# Xo7 ǚvU:}4Ju7mq#tsOe|xcl>>S8}@)=ȂvM> stream xڍP"=7@и$<{e9{{eEE$f6IݘؘYJlVVfVVvD**M7{T W#,$\@@7$P wqظxYY쬬|1$6%f<H%vvv{O9OwPY2`svssgad:2]6nu+de2wk̈TMk׿`K7O &19;Z\or'_Ɗ0#@ss `icH+2y1]o@=ҁi15ÿs5wqrsevG?¼YBrtsE>IܽY^#?6,ܝXmArۼY\<ܼ3enGMo'ПJ?o=:omm,Ao}] ;ߊEll s7ob_m.6^7X,bYm)%]=[R\e0sظ9\8 v o;eqO?+7wwqy{<ʷʂ@^ s%@mSX}'<աNK#*\*]}Nȶ/Ա})[5o-p;:Mg;WfpK5#1i8iACS8a{x5UO|X:T;V@zcՊ1 ._*4]#uc"其pk}oRDDXR_EMv>|J|}cuH JgFBhvHu%{Ⱥs hX$(L@I"ދ<~){dC1(u~(p3s4iMQ0T'+Sg^zW-(k֣n.ȵYe~$9tGܖ*{"-x'%_%@3ˬ2H{^QdveUCadx'$'Np3٢>l㓡,}s,ESݫ_d-܈@O~?^)+ӳ$"L^Wv6)@?{aυԋ$-"sAB:UNzN0iJ˯^s\эg5ބ9i9le~V,H,3 L߂8p$=$| nHflgx z>mAkAs._YRf|uM?r1ˤzb~9XSg?h6nCB V)H'g>&:}Šغ?ɨv^YTCMSXohd>mj7RC=Jn`-(1J*(M̒ϻ{Ux>4e3eaWQT0 7YvAMxۯ,MPvǒ2НQLyh(pikR+69UZ-Dz+*̎~uSSJajL_Bi"2xZ01q*"oG%>_;lJifTeHI< [X.5t*R(★\=#hȃͫ2N_Ͼ#3HyV"!.LRaUֱ^K#!'{ˆ/v'6]X^ 1D>6&3/]s}RQ;QdH摋+/?hHȶY@7*VpMp#50-ZK2ң[zz Ks!#_i 9H3c\\sR=Ti~@q:b;h]|%kc`fb CijĤW〄3E+M3ͽ2CPӵAVSMh5ɢ%1KA5ߞ.+&2>N(ߑwhG^:bܳm3<߂ZV+[%*/%x>f0H_o4|Md/?0GP㈟9c#pڅ{@j3LY4޳+(nuۛ0EuK !)d8<@ZESoL.RReCwKL6Nq;t#.lYHYpܥ}NS~Wuv]<7$6HAް\""'{rN0[AA] `]6eAAKx>ktlSmucXsbUGRm V_udieB.}91۲٭g04eb(Up4E=Has.?W%VT˨rl8t{)rN|"ʰGt*4fZ^ 켚vi4;;+ǃ_oƷv<}>Y)˚j*eufyZ&LTQ4wßu  *aaHn -hN_~d Ca\/젙v >M- KOEGy$}E JzƦ3( hM@Jr LH\`9 8FrGq5!;= nL`Li @*M SN2b$|%eXQEQ ,ᇙ&Z=ZyfVM]?J\fγdzyWuDi'=CX>T/; US PXiD^s!Zr.Vȹ}G"x$8i\Ȧ,p|u;h{k%C&L_j mxO_aXWzpj͗@bWQ8l]y?i1:QǦX2F(Z.BTM0YhTFBC,1g)=f w83~ǐTؙD7bs#̠Y}M|etdJPޫOQ y7wyɉ')2"[ RkWϹ;uc>`"|oD&,G\Eڑn)&g7l7b<ouVKE<Ʈ 5:iP}ac&@ȣ$3ǃ:6J2iʓs }9ςB2ΊeSI9t -xU-22 aS) t&٬2}ߖL?NT0%׫&խB!~hߦx.~*ݟ.(w'y_v=Ld,Fj -)*VL˜ IOQ6g1X2"+oI041vSqi!1T(`OCqP>XK^ae:Y] W] !5HaEoUR63zEUx&U tecNTɊ|IU+D+Bn>bT4]Qj#: [Tߝw~243$_Wn%/˸Y xO 4uBx w:_#/[x}cU $/X:^Ad5#LtesNw`u$zϢ$؜y`.Hs i; ,NDx|*}R*WxuZĚyt-֩ZjD3+ US8\y_~̣юU.Yywvf7ӱ1{^B! D,@T9i&}SyC/%0>a r%SǍIW^m𗨜| k{RiI8jty#h2xޢ[]++cTpL\ٞv~57RiAr+ψ#݁%͹3gtuv_CTĹK Y,|\x"tC94c"&іG"y. v.eyylC\[6p@\GLP~P/zS+Jqo Y]nW!NIݣ L<RZ8tLyvGPT;|{ן6Ja&e>l_./O6ٴ *tit4U`xbIX9 `؎x("zS@Ɂy~m`,"Uț1hvOG]r쮿h(^zoP_$x9ѾVݏm׿MP̈0ҐEPG5F^;1B.) mNKް*)7q˔i]c-?VD6u"lx/bJ pz]\@n,H۲*櫼oLZ/c{8 NED)':8K ċN7Y:0d~"C]}Za|g5ֆ|`xY:@Cj*:tےKT,臙3ѯ%zmxZ%F++x3&q{$BK$#)mzNUB¢Qctx&5EjeUZulmMWomV;YM1'3~03bj%Ύ[h9ޙ?~%'M5%m\~Qn܌>7//E{ Hv$+9M DzNTF5n+ ccaa{ɫQ͖zWG_]Wk('kmȚ]e%eQSrSr)v˛A"v](I,821k$Syh,[lCG6sM( L(Q69>m.*&GeiՍ7JMNQ"+3xW~ fr`S[B\A㥪 ZIv)X"v H(tJ??4ȡ\vnA̟- 7|gej^T)YvW{y⏺;tp]64s}Q̥9ժVZA!4U&ݍy|Gظ#0Ob"}Rb$b_ZwMo9:[h %Xd;D]E29}'*ōH;B[96LhyM) `mFYI/|:a&fP5SI DA [`PXݺTHΉ!<~Hvkܙrv IϖIT5p#Yc\}\%]-#EH\^ubQϧ'"YC wQjy!FΉSN֜io^窶 74Cv!8paz}Sut3c~ZLCئb^=#*U yo,$/Eoa *Ř p~@/zfD'qAwヵчBoA͏2b0{16<ԘeBZ+ʾXOL+_YI.9+oBӦ9rmIH>^x ' N1RaYHZ9{Ʉ&2R*?LIC>c2|A5r@PҠуS[rq4>2]\yF UTɪ}jy2 ok6뺿B iv'/Ăs'İ ZNuIiְ>st,ӵK1Q2!JyQtHԔSxޕǍKԚBhnviptr# iLҩKŊo32(KxW!+eI¨hF&|ojoSt9 %r-JpZ6vJ;*F$ރuE֣g'd~8 Y<#WhzgL'!)Yگ6ùo7tiR.F˿:t?z~OuӈM 'J1ϭ3ĹʪY߫MqOUsrK"'&rٚaH9Itcm ڏIgu痬gP- ՠf^€T-s˔4stu,IR$,r 4md{QFl?*t&-tdAI9MN>ïM3eoḔ\S ;/83@LxphԒS,NZgflA5ǰϽЕV{^/fU2Zmh8 XGe0 }kSѡce&:ˋ wJn7i a܆ %IG:]9>ľ(OtrDj.&N>K_AZx-"kwjor |1Q:PJH戸t`q xeiOT7tRpR~;IA@b{p4aަ%PxX($071$$#~@fpm_uzj_jt8 P `C=1DڲBL_k8>Iiihb5NI1E{YN>3sH`}'*oҬi$xoOb/z@y񫣜.NF&MB_153$8m9j-T^7.D)wBF[qYLRh*l|@ HY}/`Zt%QQ4 GvNY\a#XfuWN>Jt1R0{ 3nh B<0&YybVtT+LXucw% hV x 2[46%[$UKlQh]=mH4*/LBAXjgY%dkU!]qd_ΘV؇3?y闎29vRr9g3RٌCӵ^FU{y8w*R*`!DFɯ؝I-R5d4i-D wh@w(&%OlX=i:8;ڂV}}x؊Ƙ(Y;/ݶ T~e?7ϟjӠuNrPF[!4];hXԻCQȯÄG2 J7.Zo!QlPtzۘɠ܁Ԟ a1/z27YI3)Ըˡ *uKmFw霟W֦`=tg`* "|$InD})P]*I5$Q:zƓ]xe6Bw0,~tc!ӯջGP.Ok lnhC٣C \ctHXzvv*)T@!ެ- ylX]f-升kUC#t-yICf\dhD!SLL¢$> $ei3.Uzc]T7>/G\q0ҋi!( RL_&Lh&oDF aPCӚzE\$﮵ |e0+E0A+]td>hpY1̟.b 3-N[V1Џ1e~[7{B 7rLOu}w\/tDHtJsBX#M5@߂2M~d|385˫go%e)Ǫ:,n6IfwZ˕g -XD kO) ""W ]vW4U0UΑ$Tx  5$z[5e go`Q#geq$*\LZ!OJ]8EI? W8ZN$|Ʃq1h16&ys-LOa}S{1QūW?tK*ڤ), C4d̈?xn֮c+4=l(ga=Le,|76&!˝p_q'Qh)BGߛrOc^p>/0?3C8G~ e2֚}ѹ h/* JE)/7=.5Y}J:(wB 6l$&ztˆBa`H_ з߰Aca? OdD黂ɯ +r xvv,% {\XQNP5CM=#нw̬4ϲc+ b7f æMZuZB/#+.J^kvwVGY.'[~#h5,^S-[3xR?O~}]P10%eKl r(ߥsSPU"H^%28a+Win3˃1;u+ʸn4=z!NӏNVɰ8zN>›&wVEfb8H.P4noZjXfcUG B:kW^@I_•Pڣ(=]{(W-}%j;Ce;X/vj%-x:5?oP:a&EL%a*~x.EM {4JOh%3t{"ijSGȧǀKvm\Oo^Dfߤ_ iHgá]VC Wc+=nJIrXbpxLznҵ5/qDH1Cݟ>[ѢL~ƴsԝ $[Xn#7w]L1~^jCT#s@7l (ke VHdVn,{! _UU44}An">]w}Eā"&3}I_kRl`۩o\*^eu#]ttG ^g7w {7@Rjs?ELޱNRkjEܹ8+˚xy9r/xJߒOE_#<|ߵ G 4J$т&Ϯ^;WzeC.vuB@!B4z%T-LpcKui5u12~XZ)ć⧎ӹ9NWg`xjO/?\ |XTgO!s6C,U^?atfwN[҂!t*TRn,U>2ZJZSkkLU",D/&Ï]K\U(]I `B|SB0#io>/ʒ!$\!%0D&>X u ie "/J}iR0PF^yr<9X sVc^˱c5}Lj*n٢VT# }ǧ`oR,,1\tx8gN c7Wk~DD+R.tM^<>VY-vM`Ĕɬq5v 3BRBmC: ʕXiϘڐ6nZB F<Ԧ ZAr6 m 2| ~Pm)V7i{Пd_\ endstream endobj 53 0 obj << /Length1 1809 /Length2 10732 /Length3 0 /Length 11870 /Filter /FlateDecode >> stream xڍT. ŝZ;w@B -Rhqwwo w)R܋=:3wf[Y+ɷozjMvi urcȪrx9xu!n0WI_ Yd=ՠNew7/[@[P %"&z@@52 N/ uA^ٺ=_53[XXp#:Ԁn`ǧ@vLbnn"@GW(3f a`u#8?:P7O x28@NO!N 0 T p;IVp+w"@kk3 `q4T9ܼ@'o"BVO?Z qvsp8wcwBNnO;A=|l N cܝ9 .`%8O&ln~...Aa]@i_g3i ? ``;ss@k7 Of͟a/ ד\?3{R+ԑ5RVbk保22P//;?/+ wM >UrlӲ_`kAK\0rsY?}q??vOt8xxRAv?WW_i^9}W qS.~/ u~Z\\{.kIO%坬[/`@ot')|CN'Si8 FrM A.?pj ?7pAOAO9F r8's@y3J bL+'wĝ]kT1:y֣A$P=K)K6I" FDZ2H>s36Sخ65Md .醁:lEnW+slYiS \׾2͖r8oҍcq.57ja̪eqs!Cr_4g_R!΢c/c[~[pȓ8g[K0JGW{9Qɻr2<1c ~ٌV]y\̽0ʤa|x"/=wtIԓ4+g oƧeY+ f>p}hdȎM,_z $פU,:7`6_k7p f2"2Mu\_z#o預G ۟HN _M!-꽃X="y%&tc9 I5|ݽ7Q~XjHɷ¡_Ucֹx jh6?jQ .$wSPQ:)|PYInHퟓbI 6ד x(LN`:131s3 K)yQ¸ptMr"nLhSq/,y>Q%N6FCVwBu 0Y.1^,͐:P6Ve\Ew ⬙aI{̻/,"FMÂ)e.n.*c:@܅c"ѻVcYQy})ZM͛XpԢT]X7v*NSv<8asKYƔ|6ΆQnTxmc:1\5ϴ.[>MidO[7y&"ǟ>W)ڄt3w&|}9 ncu-vm6A&.-%\zW?ʷ٤naV#9 WMbdG >aM.<.cR^S/퐹ijy\VĠnO5 ݄9W-_}(h]k-`_}W>(fg)BYBiQ@{m/pmC1@sNjxG]E ψ7?dL=%yRňGmc oLӰB xyeZfji5Gw fL,&˄"X͑_E"ӼHo(ҐSo1Pz=~S_f" ;3"sQu7 Bt{7=(YQ.3%tS O{ʊoxb{TzOy>wt+Ot+?[/Ul;c<0e?'BVס{üڀb.4ۻ3yf׼S<-郿Z#섄d0ww`Ld5a͌ܲhE2b<'IXs7j;|ʊ7EkO:{l@Ro|(졍TnQNk|5!9![X;HMܢ0`1nm923OFrz7:,)߇#ԻfS =A^H&gqd1f Whd돼qW)'靚 48pӽ fwΌ]ʖ Jt9#,^nwSϩ 9n|ƙpf3po4n/:_AOٟ)}55 $zve+x$7gOXdkaqyG%juڱeqQ<:!û"<)|gJ[f_KĿuh2`q >g*㍍f Gm՜- Psvqlh3z*ǨnÁrƔkD\󷘍y;bҵLU_iS8i[:">:ʪv?$&R6'|x<;0b MK )>YY(I"@xahͣo5+Ґ\A}:X_Fˍ9̽Cr7OA0[}ꇳ&>M >./Vۅmny ާ; ' GgZ&1ʉ.mRG[Nl_Ԝm01J)kk3ÉK UpcD>P$V R&9e\渴'MiEoIu'L@ Cn# \nPwq8UD!"A9Р_ <>WD3eBE|#7$v|#@hdoH `b0[q zvD%`|A} |[aUы ;@~žѭe@o`MF2_ oJ'Z\FKO&'3uR57Z:TXfj'BT 86"蜴 yqb!{}(/GS,fcI0H~=}7ȞG>JlT&oPh-FuCb9eN0:>#D>ET%Q4 C6l%S=ҽz2s'q;dw2]Wn'd14Psp}g,J9=LAsrP6k=^$,72)hv'Wx>{Q]coU1k.ՒP%neE;"bY$-(`j֭MMZYm+h%+ҲϹ7ڐZ AqzLmN3+T!2=C۱(Eݳ_5wzxM#[Wd2C2)/@ MqmpuY;`2|{d4,8QA!w6auShM sd5o&||{qNw Һ%2W Чϱ1KC=v{Q`eݾkRҝqve9Cqu3-(`/%aJrg>?rKBK:R@Sg=ش޽62~!89i|lo AC\L(AxҥʜGtqԍX[Aj* -"}XoB FD^!JjѴA!Yh+4 U,5 _%+tV&ㄳdh}=l9@OFeҤ J.ܠ qZ`jDDA<.mڡ,pꚦP [JtӞhY M:ХXW?xFDvlQ&[рefU>lO o-sr7DžUMX9~m+Vk4DxfU+ 5s֠7nD*;ˆ(Þ7[42HL:n;)Gf5mfCG XίUs+~X1fF;G*\r٘9fæA{:)qBb\E'\2C #Lا?hluQHa.}kS *p w`"%ۘ0xԅ* XjSi0/Nͺ0_s&M_Uv tETeU Z!pfX0)0k{CKL(+HLJ b3৚ }2~dy}[U9pt /WϔPΔ\M/B|&ּ>|Ѭ0&R7"vyE,}f."1x[e1JhXtM &d3Ʃ>T^0hPdb٧hXK`gđkUj߀ =a'r].*W/·tQPbﵠPR4\䳄h*& zOP߼:5ŵ)^~ҖLй_{襯P-JAxCYu0}02jm҇"@`5m!ʍPQ\$viv\l _mVP|ցQ^y95[=oe^y'hhW0mF(O[-S@|v1||.\G[?BGw:~φєf{VW_t-"Bse6-nE&cVb޼@~"8QmX0-2ë;|Qc-/54 ~c߱K lս謮@hN?yyQ gvQ'8=.R\:8N8.z0\߆9L!J˺,ʣkTrzzݐ&*Р#$5&Ih66_l_;J=(~,T{fVByLD\4*IZ2ʍSx8%G}أYŎZyw[o.b*S=˞;GgbZXpH &-Tp]*kJIR;野|` ImEjb[;G# 4qeVfqoQ!@=dmB$:]c{=/џ/I@s F+RSf$(I&[(*-'^H aDgpq1L`Eq˅ޥ@5ۢ>cbU D6uMļ%8yr#c3Y#[ص2mά8IR]Tt3I1%7?gSݳ)͸?x6UH%zOB!M?3]w[n2O8%$J lNrAs 27ę%./\?`'U lL)sc r|8/(CEqC\tk4 TX(p}F|XOZoI,`dILt5_Je=kp^A~"i*bгx }gpw~H"M_NuXXzUĞKJبp^ovb1)Hohs6"+%4ԃXlpP7S(?K,=Q> 5(/"H8g;3&!3qFZy[3\M'b bQ3?+TR, J/`:&UT\r  unݽX4^""CM\QRT]9E7qrdM,$L&!ju3%LGK*ya V/ȯo,0cxF& )pqnT~ժGQzՐ6Ea߼*Y$|)}mÿ~(r7ĂlI Uqսbi4ZC}yP ӭ 5^H*D#3Hvo"L|X}Ym*I?MWQ.KG:Ρ0xQpp+S(ܮ!ߒNra૽|'M(NtȷgZB*LXo炋hwA{&'̙iӐZv_kԏ2wnx"$& Ccrf<1^ \ƭ.SSbUX6pX?gte *h-Q r*Юܖ1Mwʪ/%e%j_ثv5 w4 zɊy8עRVat~ʋNNX-bBuwZ'9ό=Ʋpp|'ޫrDEQ'~`vJа4P8sM6KpM%4n{Z֡9>VR\JBrcQ:⨕ B (}mUF.Ȧk~*Z'36뒇6s B"~;g2>qᬰh o5Dh0yuc&ҐP뤉!cuٷQq+''G'v SkDY9UŨVTgHd)IuÞx:dB6X]FS Ͱ!.wtUdG~HKeyKrAUaSu>Ly/i|j|Ӭ)Yfff/&8 +=yi!cI^-vC\?ĩ2_I?/Д T1څT0'ƹ=tpb47༽w9S\EﲩE=wȡl=:V&`n]ե ɘy 7OMSZ\;mH:ojrbz;I]+(kIHߗhJɏ냮u^ٝ9L9^t fvs ׿U;J2Y_v%ZS ImͲR5fN@$<ͦ ̄*1WԤ˴QV6"_QjPIH~y7OwRq=T(*ŨLB e2DM]v@,1 K̖Sܼ'eگ/9_\I_h `9\.KyoBLP|L}PxE866b +sk k\ej,Zs_ު]›;H߆-%k &-6T:h;|E[u3&'"F4x_Ps$|~wWY6Q<lGHq*1_tOG2^+VE`<ߤ&GDหq5r+S_01-;r0nMU2AgEO+׮ B?VDk;zC |n5&ş?o<~/Q ĵ!>Q2^0;!k \ #tӝgS#%2$&gڼA_-]wᨰ)c n֎ :“?"6IR G_疠L ,t85$ *zC]ijpWRf$@M_sXM4n۳JOċ{5Z -ۤV%5kIGŸX N$^c Oў4-gR6 Map,' endstream endobj 55 0 obj << /Length1 1387 /Length2 5975 /Length3 0 /Length 6929 /Filter /FlateDecode >> stream xڍtT6]ҡ" 3twJw+C0 *]4J  -(H}{y}Yy}]{_02R"aHZ$ kX PL%6aɸ-`(o8!5 W@}$p$eAR@ @Dp(@_pyq!=PpgU>HFFJw8@C>L8 .h0[rV.7 ~ 0{&L 0s{0E:(W!>( 0zl$ W?ѿ#NpwPSO_@7* [4U A=p_3Js@{OA=@!~+'8k 9Q2 C$2RqU, e!8] ;>do/ F1 @4 G;Qp-~ ?+AS;FSUDe$8@JJDF`F#XFݳQ Wԅxt;r;G_YWwG>?qE] Wb@7vaP{u+9 poM? jGC\b_v_Zs#`FHo w%0 }E.ؕ~YRAB MTBFdW|`@W "@BW(_g*- }Aޞ_TPWr̈́^6 L!!rQϢ:~ԫŽ(|Z>̠:}~RgF,U2Pͯj)ϲc[cݻo2m'ex_J"dtdߊuGҨ_cܻ)zqd$ "ǼI&N"+ ?;4/ I+,L.TzblĊDn6Fu#GLEbG祖Y8'G:l+\F5sG xg$ג /W}ZMK̂s [MA!!զTD.!f_X*I?AAґ ^OqxRwpt(5 El𞸅?z/Uf"|&j=:K奉F]ֵI<n{Tr2.eJuqfr.6moasT&L{[ip"Լ}ѷCqA f^=?9ni%}.9qysCy* 0ǀ(9+!Oytv3~v<o[t)V#vFp!\gL|zFu q/0g#,'~~et~6h(]6l:>Q>_)so5"*@pKru!vWEJ;M÷:ߵ."$o9#,:,-CE|4xcw\_ٯ%|gff%:z-^,*?*~?f L);n?ɶh )ySVƃ\mݬq"ױ&rL62(9$y6TRVsv{9InB*0~ʾJ>Bq}?&]~7.9f@ _X:OlY^%UJg-XcΩPi#k y;b L=)7YX{ڳmkthC>~ȀKgNfioQ-g 6Nx[Bf@uI*Cm ]g~2Bޭ;o{} 0b̩vͷ k(*).oOjel5x'Ns߷=g3U登NmQtע^.8noL?)<>1hN w д۩bP-|kIܺvGzֹ#H14:̘#+ b5_(o. d#yTwSu…y5get/Gb׷8qhnn~>Jq(䀃0gl׃TGY I{ Z妛Qg9k;*2G)ɸ5\=$I}HY)F?JK66;5LW"S]8C= ^҆ٷq 7OX=3 LÒ26 CqAulCѾ~#(QQVx)5U|C ~nЧ26K܏cO`pp- |#osLF;:7nY)6 #WplRVavwBɳ"n;=l,(K@v=E!jr;Lx.Vߨl ]{LeG 9mk ih"̱ȌѠD#2e磴oBk+o 3co1j6M$ȤM24WShE93,G;K hL󆤙-ucCw#gYPD{K~tu>v + 8-بC[ڀ>%yPFN|{ʱxZGdakZIMg L:\h^q9}g~5>0fqÁ9{9dG;Idy}hm~JZ*^5(l+ě׊~u{7Е̃qUK4H}OژBl8/mw;AF O{]ŭ5~{7v^ yqCCwO Vc{k)ܔ)TxCw/3@K%M60*ce+hU ~(\T?*o4fgynӈ`^-tPA2DY~jqmNufۮ O*Z%"sY0z߯'oP,G|$JĩԿEfp Xڈ nsa._8K L!5hdURpLj;(N6(ۼ.g7FaϘ=v5EkY&X9n(ZGg6;jZKkQ\jRoB<zGGLEWkD /"GͯgvϾH(+5s 0LVhy~YGY:=Oi2$HIMvxZmʒV kbEW+I藸/m)(aXKf?~z7Qh}Q7)5\P2Oɨ -O{)(TRܣZU/A>`1\3Ij9V~HtZkuHz>2^9#KD=Na(!}x9ښ>|}N,xI@LŜͬdrwO(9ފ̓M>w1|Oj]O"5X?39T`G+-) Qyc ֟CP2.J[,Q2:kIцITs?!4G^_Jdgٵm `H=r6>^y5،olK8ڄRS6GjDưw˕nϺjp'o( x%9hb"D-J:8z?sW:>rB)GL*wc13[.\"W[-=kxEhj_f'ܘbmcE8l\_H91_559xJuvG۱u"K=i LF<%p]mxg׭xKsUіbJh ׊B};bUH% ,Y62f ;\=WXO39zPzOC^ 9<~O F,sZggLq=\r3~29yP|0a2/R ˢ畞X?1MyZ$bi`JYkߍpM#{w/3(`c3Ea[M"q[ԅ5^Tir"j'WzTwҶWEf m ,,AP7M])fÑȪxWdLY.WW \\t5ndgG QC5riӻOȔTҮܘ+lMT ʳIԐeo(P.U^w]OSODYت8..|4T~,Ԗ}N{T!<ێ)UW›󋖱=ɽS'i/[.qߋo$ljsKSQ y,ugSGظٕ%wCuɒET\!le'ŏFv`P좔xޅef"VD6^.Jy&wsk͛&Hu%iNK3sL(,{vp7Iqyf(e?0/s'8Q?\OV_[q?V |Ux:𡢮<è$/OFgA\ģe9*ҋ]E/vZ{Fgy~y\DUI3e}hU-+Y e<۝QZR [YU-̙䭡ryݖA H&HވڂR᫃ͩm 8nUC q L&DƱHmΕPykjʧV\j(>U^`d/q՛ 4?8p@}tL|Ƚ+Q?/8}qc'ɒь%<)]؊Jϙ(4G we%LRyB 3cqK՗nxtݤt+ĝ:z?)g+tvRѵKSBvO}yk&ڑ3gbh 8{7oCLu vx:Q.hr1 ͋RIrVMEYNk~l0` =\ endstream endobj 57 0 obj << /Length1 1467 /Length2 7236 /Length3 0 /Length 8229 /Filter /FlateDecode >> stream xڍX>(%Ԑf;ErlFlctJtw( J  ]"J}[u~׮k{sss>m, H[*%J:: IٍXg?vvG"$6e0D4:@B$HLhI2 4] DpB 1?#:`zG`aXJ)Ţ$.~$^: ` n v? ;aú0!0!OPp;PC!"kE}8?_ @.(0a=Um~F@u< w^*~ w\ tq!)0{ }N;dG@~}0F]4\Hma"@q1!q86_Bvm|vo |߈@,fG;f4`ZaP$?W,olfwr**"=|B>A ]/|;#0:#VaNfEp;.Z0翕nB@z'YJߊT:;sE.pgϿ}0 j kvu`PSj`㠀4H(Q{X_n{#$sz N׏̵6r1#s1z =}"0 $k$])G~{`Dh1Qo_H / C ? fx0y'4EI݃1Xjc~amDwRU1͐6,m o~5ڇ.σV-"Ru3hI$W/ Rt3 t{-K"Ϡ,|d Jo[5*mhϫZ=սmKΤN1$h7SF ,b:p=%'O6cҕW7_935VHo0'Ne771nvS(VUxh| zٜg8C&Lڌd_J<"sUhwK`]cƵ* CX7Q x_IVrwY:XsAVx,NQF#%9e[1*t2AqJu^|EFm{]lftIP^/ݕ2+!ŕ)ۚ)0jln)i]X ?]IZՓG3~f6Ń([m2De_gf6ofBZ`Rplf:wMU^$1ۗjy)*6!` t0DZperw 3:C1~7ӆZ2K s/ڝvR&qU?NG)tLֳj[ j%g85d[v"F Lf/G}@#,Iy]yv75Zh#B݂ I1*(0ϙo>Ђl[z9*S@~̳(`EEȖn<~P-/DH6_Lmtr1ѠF<8@^n ZB#+]n_ߪkMX|6pj](&XŽz0 8<2A_ wkj7 v F{/˺'?ޒ^V7p|Cǖ ӖIY+Uw{ӱ;ۉtUHbP4`nQ;~,LeM-1狯RdJ(ۍR']J8MUs(_!q/ic8;im!7)L?⮔>=8 $TrTz?Vz3q` ߂ɓ߄9ȪL8Բ<Ԏko<7N>\93#.=3aƽW0! Y!aKf@e:WKn%G$O P~ \Q[#^Il/? h9Oىz.1{Ժ54¹ %?k/(^8/bt.Rx>uF2lWQ#l…,|hԃt?ZфvBQf:%u?Vv/Hn~%TX8賱Ymw Žyե v3QzK3[kPx]x) %)l1%8BN; +1sN[MQ!&> \<7SKD%:΋ dg8dzFC C&܆@CST[ːdžݠ@!b%MrDKB^;lji%vǫ}R|*Bl:DV:~Lj}MUx5"s3Ϩ{8pHf]%^5Wj]W,ɨ.[ۘy44W7!Uuo*?4kgΒ°c=}хiNĴ 欨wKPy*{Լ#0xQF^UkFʾWWnQ͇81rig M"v>z)uʐ7rjKG,0/[|XPg}ҡɉNk I<zVSDo6O>C\clӋLi&G.ȇ4*K߫3ZmU+(;؞)cm؆ӨX!Eڵ!T&fےv^Ω͟}۴lMg;,A̰rc=PcKJ01NѼmM䙼rv{ۥ!QN@j-ufd/)i$P-=Mu2S{^.ge(] ;9jXA4>T$֮_uʁS}ͤT"mei:iSA 5cA¹B}Z]þHHį)4%܊'X+%żjj9tܨMuk\G.>[k# XMd J9Ijw.#?+f+9u-L:B 1T$Jg{85& (;V H4Aq0NTJlqP5b2YbjUv=,#PsjbM(ĐC3L(tE ]B7,BUFgSt4΀}KtinUr$!sߒUC)r{SPf]k(Py9]ٱ%L1h$J?,5ml98Fڞ7M/1p:\ٮq`y!c@snuI;Nyh,8*]^*_iחS /HP:h9Gτ%E'-r9O+36JpŒ2hJmIQ(lmX5T&a0GW'ŵԨX'^/L~ %MxS:~M-ø;<Eli'rHEvV_5hCe#pnfɟ }n+)_H<ꄁ- 2) mC6RlϏ+X/UYcw|K9atlH0uQM|ygcE6v[}4ETxr4j$O4f/ǟo\*UO p 3օLQ.N] <S}A&rɂR oZ8E)>p/t%Zw"C䡗u,CNWX#wi= z|:wǕfev{`P֫/r%CgA .]޴xƔڇ<4NEhDUר{Py(hha؂XR@VD 'y%g⢽X6Qn<ivV 4".w1q!z#q%VlhW"^g*VReXHakvE@/k^1߷6;G$YR7:U"r}IP]HlGR93)|I8кN7osLO廉b=1%[Ӥ/vg\Ůм\6R&BKz~Ah߿"FlK74.zrq$"N'ewd`Me9Tvx,a\O'z=9Bd𣠄w:[ˢ`IEjt c ٚޠxq(X~Q3'Ű"uw~r*YKsѪ=HJ(Iz봱AvjC gI&C]QNA딟DTПщN8|.Sɨv-A7 Vxќb}b>~0HzbcGH$< 4"ڛfk 6K ! 5=/E:oI#vz՟\p%rCoWõdYts,kpg&~y?wvcEXĭ{KВCN'K!>?4bYʮ"䶟e~e hX Z37X~m]TLEtUIY)u endstream endobj 59 0 obj << /Length1 1428 /Length2 6814 /Length3 0 /Length 7793 /Filter /FlateDecode >> stream xڍtT>)H 1t7HwJ03%H % ݍ !!) %|Z߷fߜ9 4:0K rrdԔܼ @ #|r 8@^P@(( *y@je svk `b+ہ;Z:0+bvp''ɍj+`7k`: g2N,_f# uCdC%U3l@N;desrA!P[  PP{ / y Kw ܬ\!p7N7~A#Qd1dI,_O1E tx'~&CKHspӠ%3ARԠ-qGR(pSV9vV)u@g}xbigև  iDw&~,J}~kM"YJ)s𹸟AńU0Gt\sWM\š ԏmj8άMq.WPvO|eIXq';2ᵛ3x#[%m%ܦ93,XI}$SœuTwDTȼfƈ8櫊ukV\lu Rkj0}&#[LOnU<])LWUFh`T*-E,2ZڌƐ@R˾rn>\V۴瞴0 cnްXк<_f>tY]٦NK'n$ p?J)wLt2:R2'2uqS߹'EA\OCTowwhzr%-TJ"g 8-q-؂^2D <hkXSs&Z_ݔLyֿ͡7EFǘS$PUxὰݦq _;S\D`TM-;ek MCZ3GQU.PF>ѴrʯseZ*.;;㶬utޞTgq׼2XYE)jzA/iǨ}yV2+٩?QI=cI[V|^o4T8;SF8*BJor$m= #Be (XrcR N"Ff< xd"$pQz'O]UTxY JúFsړfmw)޲w0p&|<Ϝtō.1`F3+V6ICߨP[w]Hš85iqNd̤*Xexuܕ*^()\qGc 럾 o,j6P㌻.R6[Y~݌#;I(m]*GR,=kPyi~Tڍ.Վ@T>$WHx' #1tgG<&!Mb1RZUEe5N{$1ǹ.q(Uh rgSp*}؊ =uVH&XS|4WH^iz{ϖIS!h.5%'J>QK;0m̉lƁULR%8w` ;P}؛u dq"F $&sa /O+/?KfM{?"nmiSߐ&'0#,>Qj Fyvs<@UErlif/>*XuG5FL Hx)N֬6^-xCh,u&'?oBK!vݮ-bB,#eUn٣Vk>ZE_9׸?UOyD(.ڝHDŽa!6pF&& iKP1u?#{ O{QWmo8W?fð@'atZgNÍ6fZlr@SSD1QeTÛ"[jkH5Z AΌ.Z0ۛzd85SPw%fŭ_<תBk%~v[Nڼ=E;-Ri6Oz16HI_a~xo#G-^?{́a~#9qB8msyՐ|^z7֎ٺEIUm'FLTS;)5`"u@ϔ{%H>Xs>[OkK:D;R+ڣ?RySzʆ1^D)W[^.K@}THԑ^B)#|E˵^R?`"@X0M]f~ޝǀ,8!sOn[c:a9IBU7+ۑVޝ7*K0~ >~Hcv6 \к^rԶJ PšhEޘzgzMmniٮIJx{k5o waj}vaQAqp=a%?ϜaHඩ&U%5/!b 7u-L&zﶇ[iV'ljdglCYWj`9!E–` =N] -DS3EVe”yV=weF!殯ڲk6G]%י@\Mae4Sj,p!@&OZGW(pA:ӵ'^Irpz8|y)QQLRRusJt<OzQ35ym #RP)-:Mݰp"Z}p?}{哉omƀXDshq~-F=~\MӢIy`rTo7g1  HDh*t;meg3"jXWu >+c#4!&0cLXHh>cPIډZel`ܒ o~E)7mm<)zl,\T=q3.۴uxr`$ϞS5 %6S<~v.!i{qط+5zoht/nkAݷKlxzb|a c.xZPb̓!Ϗ ?.Tlh?,"$GsL[9roJcE,|G$ e1f1s/O=Vv9FXh>(LvʆD+UeS]K^S< xOiʾ}@M硞KKf\Ner&Dex_P%VGB>2JQix,y~dJR{t|?+R6C=Zd!!6N^ۏfs|?I,26$LD> (_D k.NOsэ~`'w8[s}(fB|LbU{o ǍF.e0Gc?S+tv2O[&R(юIf剃{)_iFjjNYt,w*asw?՜Evf%)7y'mrb]Z,VMI}eX'wm Wܳt35W$:g}OV܀@ꩋgAVؽ(;;x:#%MyyARC|[ŷCMZ"ygWWUDz0o"vB >)>au,@|:%1/zLԞQA=燦%%/|YvEf /+wDh\iוj(h).9%=mXo?GΝ)JbAHT ,E5"p>GD}J"6*XEia'A*<;ˉYؘϥ!SunMsE MZEbUsYQɑsrV20lrsUFc9'|"KaZ% aK g\ϳ`q_aT~J4' afC~9D[^:Xh/XN<fݡ;;y\aɡhu2TvG(qNnrrxȏ$NǁY3} {sD|ч<ªm5.< mDa(9A]f@߃wXg:D<+ j2s-2d7;(+k̴ޫsegO }p#IJ[@͐]l׌mp>_]_S۞RM&Ȍ5Zs1NEu=Թ㱈%n4U6.Ǧ'ߵ*\ gj=&F v=oJLIӻ=$xBmѮB}PktC}bzonvw%r̖RE՜ u)+) _ ۭ]tڼl%ry6rVٮGHeon;h)Ni]ǀt-+ec, l묵_I Ϥ|%<\LQ:!y+Az$z8WS?+323>wY>"ӡǂ|C4?,͗eBX"O훲;**=-`њxm4$*z=IYY^jr;45gJxs4L"W#u&--pG.Hnƹj%th@#<}*\9+|F^S o +4oޠDZd=jlLl?Mؘf|x[vwI (*f4%4l~G7GG; aS{h鍿[rI~2l"YeNJ3ךe`щZH\ZY׉ 8!X$)N*tW؛ d)E) " dCs_~qbXYhH M)HYaN_6rutD,fj a.J=PŨ KLilQ,S'X%Y̦Ç-ϔRTǏx[.T/0$  endstream endobj 61 0 obj << /Length1 2435 /Length2 20902 /Length3 0 /Length 22296 /Filter /FlateDecode >> stream xڌt ĶmIcLvilFc6nƶ{s}kݻf!#RT25813rD䔙,̰ddNVȰd@G [ 8 iNrr6ig+ A[n @ mkt%sw03wzwG1/u5 gd~hlhP5: J^s'';nWWWzCkGz[3~*Z9@tp~' 7=,@oN08k8ۘ*R;²  m/eCcc[k;Cw 3 .KD 01-hhhobhaeh.Wq!%{h`aHha;Efޫ,fc"bkm qr w`jacb; g;5 {g?"$?43݌~WudM~`h898=_00v,l`X'Mwph3OebkcG2H|!!Gw ۺoyd >ƴU9D .%]U;{f=&d3TcQM6E0 + Y|]KEim| ;G6\t"KD]L:%QbNDzDک ϓ2_}oxn^r7:t+8[bJ(WD2ܴOo&ctoyCb9A땇~Ѝ55#Ipc9_]s)2_9M>H,#"𰧶x;83JSHht}E0cL@nֶǪB/ՖWs^_>gø_~%'(X1ɾ8sȶI#fOTђ_:Ŕ4 $, KB1\K*v)ERR_O-t Xdz񑈇!hlrf2Dj{1TZg[ ~,9!iEo\]%2TX'7u.̲*J'o~@v&u눴L,+O j0pɚTm03D <1hz<>NWvMndֵ-[THGt>>ndd]:~н/P%kærJ^Jw:K㡄o"~rC\asG1 \x¢|XȺ_YcK%VAR A1Tnzm_U's.7,ojHP}On8JEMqxb NOEx~UL} 0#W_/[98}xq;ro~9zNYЂ Lǹ ◄M,$ƈrr S^ִ+<&#}!aPˉ{Յc4թb? X`,>WFh(l/T̤?0K_{BS=sF)AU%08JokԒqi@c}T4dg\W4tVGׯGTD@]3R#G3ddsl ƿR@]g1cz@CUpfy`F#_9ȋ~"x%OZ4ݴbw Wh╁=V/Pus*|AkwbiDcyj7;_`c4 c+9!$Y8 Nֺ$\Y o'4I͚lHc p*-8`㉎խ pahmIꭱU$e믶&I4o^Q[5N1r:_;Ӝm/?]\z4LڶW縁38 ch0M$^o3uI<|\z2ĥ-;s۴hT0=;ܗpLYʇFԀ>M[/,4yu _N;Xu{5 ܱQ"AD X0|s ])aBVk9З,x^kS#W(v%‰ò#|bɰۡfBAH@ =|`rfVWR+=Yfs:׵.]blq>jq5"HZБDeQz;|9/*dm214ʩ'ZZ@E<ˆEŧ qP5ȋ2su'6wޒ2K8ɿ=OdbjQ̮6]Rh:ή2|ŀL>[()#޸rgn@:_zŰ@-u9e\v}m/5)Z+ZͧupvQ t4#A8y8h"OLchz OM'{6pFvf)&t:w䲼v]PZPZ}8GhL'Z V$&e1>4'?j>(I{Ai<7Ḥ!i߰-]?=lJ(׆|`JH=5f*gn~ntd? o2)uCWį]9 8MLʥˎFd^Eeш2rN$B_YX_YЪح^?gA+M y8jt{%b#o/KD? ώE5v4[I!%׋ǜ *;`|藴.moNlV{) 8KthW+m]k;y6P`UOpɤʍO?YԼnJ Dߓ<͂JAjƖ!;0.n9!'4&t цlqL[鋬ynë!@NQKtnCiL-`A6iJ؇8~̾Q!yHێnI{SչUVI~;P|&l9ےnqX篻JKUB!b.ϖ~R0+&Ͱ-U8ˡhU Hs1Ɋ”/+0*6 )ߍZ݆'yb)|vzp gvOWIk_aMhz}^t2pO>V~sʡڳܿBYT?Wj?_|O'y.I,Feac[kp;VK V@5t{|IXe !kzq^%+gB,zА6̎{Ɛ>"h!\z"`ۘXV~+Nĉ!.|Ǟŕa&њ_n{MP6!)6=?V[ |*:߲yJhG';M> \ƀ`PBkw5X&}PO9:}EitD4fϠ,[bb5k#qÝXT>T')'a7VMfXɴ4){Ym]F}a| `uMlX[Ie^fG"_\R7[o/hP4N6WT8>v/kTC@^A'Y:) jmFYFM%ewSQB#YM~c(>H;{4QpDx-ch)o0rj9X#HI} (W`G#m!ogq.*=֦=],>9:,4|gNCDjNG'}{p|p8Tn#eN,T E˰IK4!5wg#'8(\ |n5T[=~VlߐsyhK(P-Jujz$goTO1T4{ky+74!;YM[EcVUT m\_hB?ɷOTiE)C=zg.X:ft`N__6 b0}zղ"(4B$إtSWGqQK1zch!\D>gQ[q0[*U\/ D xV+xr0C n?˽a򙤰z=~0U0V\#fKi*li+8;_vA5ϴlκWœ-4C¸wovk>ES FU@Rvqm{f% BN \ժH3|p;Ğ MFv j.rBR#,#OtpۇGEwPfI%]1ڱ"0M ^0VMЭy( HRy1'LM- @?n[X#S @e׭.Z%+Ŵlnb$h+Bk#<{:y“ċ[xʻ >0Y)sg T'gXѵz }< )&9/o Űtq?eJHݟlƭ;g68 _y?=nqZd\{I aWKA7" qUD.\Xgkخe|iƕ)ܴ88W-mu`|P=Ta>w bSCc 'deF|Sy["ˀe1$F&"QVhYyEw9bT! /d)LV`$Kuc)l $f#lѹXkDXN@I&yt>R: \S7WiZu@vpk"ůiMN b?OK~lx"ƔU/oB 5/VA켌myk}L&NԦp2f^++QHx|zv=O!vAɮ-^SQj1^'ָ2YgzTi68g5 \ޢq2+2q(|G-G %Cp.iEk% ӺORj[?B5} ,z"S`ݮZ'I@Q' .9Mpt|q7# ll:SF8vm 8"|Ct0v*/&ݰ,r?bf韥4tG L2o0&R<[.Eg-r#Z{Sh{զ.&DvȿEkN2j i"2͢XznU 9K ؁͛>UT[WS.{ɳbtHWmF\̮LJx>(UeɁ`hB2-쾽g/%h?L$xo5RX HdvX2=G~$Φ"Y?R*0 ?{ i^II'YSK+3RNrtl ѽyy]4 g4CBĨlv.tW05"##&475gcxL'̃J)p96J}_Gпsbm-ޞw(Vtu*k69EaNy.Խ]cH* z&eucbE+*l/.!j֟0;@nM&aV~;D>/c&|&k MVu.םVږ =sߠPWT{cx6@±Bޡ)]m8C>O A ,7)JY iHnAd6,#yO8cVHdyvgxn5sw-cff~7%!܂gJGANgM} ">].iqy;YXH̽&yI?wΨ+,'lC] ihEJWT(Vu:N/5 3A P}c RIBStj=`yϩZ{@Hq88qԳQlU14"j#G# 4eOQXe{q0~6$O.o:Y`4:G[Pt>p02LeX#@Nefܻz/<)\ڦO1APۚ:+`pw臈iLRi#wzp@}xn8ROcBz%O}x# NXw-#($~LuӆgUQ:γ鏆^}ri3:WK+P3' }ʨintivOS k*^z32s,:fN}V ";1GJB-[YT0U5G㔴2\saU/%uYW'CꀀbP8(Tm8w6ݬ_]wשjf˪<>=}+rYT_P=6@1y;P>Y 2a~77".iRyvI)xRũi(ۇ )2.$ J+~ x ݄{Hl :e>).2}nX*kf%h9N :X ;ga&q1A;5ԈZ$iʷxr傣Pə@3ǯA=Y$SuB`y+WGeN!x`ם`o7g;CvηGBl\3ÀP>űr3|<(~Nh)5 q_n K53 @E{ Z_FVšD[i0n FQJL'V\"ZY1) 2ﶖJhKJҺ0hp^RU <$,+R:zՂ8ķRI$gѦ&_\`2?A;Ka9z-׍Yw,/F.)O"$e]cmՃV:i*1Qb|E7C5n|\.:Fmrx3쨢a\ұhY՜!P @p&&Ғq`Ә1#K6t@b Y߭\XyrxJy7T*rddg%Z E &d"L=q !rS3ed}Xm =kƩIa'I]lmxj❆CFʬlUobݥrKl.ErJ}I#v2D3{_צ@k"V~%zQJ08H>R0^!YT_/0W⦼P) +)'!z|%`TᶤhJFl >uf{3cBN1dե݄#I7˄}kL槸b+7C2c9ocWAz[rEۍ,ǔҾLF7etV>" SzxrM]ȡܑo}ugt3Xtzn}e5tzMY8Po 'XgȊ.Ɂ- JJڻuc4M̠1U˽4jWHvm(@L،ʯؼ8Íg<,%\ui{mDКՕ-RKVgpř2j,~%Ax 70T`r>CUXNKRׇ0|͡,u#r{Z9-;OW">]R문@/ ow./*zO$K%̀+QK!@ ?+Z_EZ~WfYOspQ0>U}C|h}al\ȟQvQc}°ǿfSbG*Z 43$W9Ih4훅E6uPK< lObu`gzT|/Gi_q-̲,Y K?o^aAYA { K"wO.fH [37xOl| G2%RTg n%V==E~Ht(12՛-VתOpLưNp<ԢhlV6A;Qnv,Xlƹ]&&~pz'厣^qZ$zt+ޜX#1 ?8C݁P ň`h7$NC-T ?Ͼ _(kz+=-D ,܍wZ>7ҩyV]Of}җtrfLKe)ߗ鹓 Zm-O:kuQ}ޛ+Q8BapW\k2]L5{|Gv ?{D>{`Kc<({uNEx`y3@$2 @JA+[ٺsWXmUCJA^)X kjPA]͎!$v؟*A%!5rS!G5k8I=q>&4tm'!T}B^bV`%AY[j:('*ȸK62Ħ%ja Oݍ"$-^x4&cO4mgHϹG N%`L͹C";.:Y4RYd/^ceo nѼo7m-w3IG(}܀ lnZ(IJ<1un}NqF)^ß9q' k{ݪ̞=ԑny98 SaAZ++m͸U&kB$i0k+4|bD5Y8 P=UDtpJ^jGXgLR݈ c##ΜWL.9d8Y(K=eȒ1iK:(*EƈKrfݍlmsy<=&1$ث ֛>Ccpߕ{Mq*BJE5tSIiҪvF Dup$YXF\HDl``]S2.<)ƊVN :AbrFsJ8J!#S'cMlA(_°ޣƖ~{{hl![iBˎU|D N}f5DbkpiܜgkWͫt)"YolrO"|δgj GɒgxFYةE`̓if=EjmfYdZ7r|/g6 +1yW҃hI,5fu*rd~ TZt]ᣰmsuQ`i\'r,8-0jcG-%`cp=˴#صnp$NjZ C(s'Y˧}K{GhbH`}kzMdM KkESI9!L3~;Ⱥ[@RWHȅ _C@}%)P t@!L lJ[{/oLtk~Ah rS]aN.KV"?= q TH.:Iy+]wsԅJ <-J\Vh~n[p(RTL BjNM:.5ɾ[t ǧAGK=I@9(4<;tyAo܈Fr90ԍr,CHlg+zvkl!D'Wݍѐ7*j%5^Tˬu NJE3B}љyC*}qCM4JƮGS1 Ԑβ_.5"VoweY%rL6Od#ޅ8zL'qnY4zsX1&Ʒ}L-Y o> kM窋{)dILj;P@A7hTݍyQ6zNnyFךcÄW6-|(g)L@ b܈KfbiK#n.~rv="d\M6v{*Q'Atud^e_]ΐ} dLm31ӓL݌8f d3+sL"ggx?_I#1x>ʻ^[R!|; emZ`#uZʔXO}YPֵ`t[SbU"'59{q,+r!ߙi[tR"PܺSkj1)X(\aʜԏ@ ~/ xxo Wy J9սkg0NTٸ5UѴBvF7 ".#7vd$ÚtFZTk#%!Zsi_5QxPk"c9L1K~E)8S ?x_ӊ+_eyͭGZSh=:Y/ l?F:9Mxj[2| xe4N +|tR`>:Lp0Gﯴ!t̚ >͂(nwL2 BtUqYNZ?G`t6HRk77u+$^ePaUBEY(Mr"҇}{TA]z&X`PUix|F=R&7݈Y˅9W*b*bk 8%Iumy4JwRFMM*]deջGǸ1Tӵ?`n*c׼PzQX.JVe>h띐m7?Dj pt|d9؁($)05 k йޅiSp}1f \Ur YZwVSRYZ#!ԮJ}R;,~"NigTX]M^f6|c K븿R1u(+|;V5nWҷ:ÅƳx5w).:v i3 ڨ,nl8ux:y\ ( +p\~ҜI_2y#ՈVCg[J^z okk88릕E`JϥӲ_;% EGh Goz)[yF:ڣF(序Aʻ"@BIժ%qD&ΰ!C{ VVƗJe- iJ9)O|ѯ\K :.k 0[_p#C,z> P 4j`kpx(--er g{&؟5>kW+ ;1$X5ms3jk Cȧg B)>>^pevƞ2 G_Z?,mH6k=<5X&'(iߓ+Bj|WKJDj+R:V S\5^{ scS~pdvyPیH=oW[ZXj*ߥBFv0˙ac'_4^D3q|g+Cʢv5h^u!ңe6^lSF6XeNb4(cga(LK ֦DK3nA.~Px{4ߤ%@rRUj .G3ksvL̝r '@͔5#yҢ,~ѐ37ތ봃i 鏿V+P,=b fr}xMP+ (؋4-n~`6 ^1qR]pnC׈Z}&@5}8IW)͒=/$3oD~w!CYȥW (#BOc8YP| mn[QjѱOЖ( = |8Fb`REJrmiTL'scɀ@u%P@| VY96iC%^˯"Sd)&b>w"طeDc NV .s ǞfbAZk2/|R\c L^/i g7i`Έ8Er@b)9k%(ra< ,XE|bu*3֔:at*smΧO{j$8,F Ȯژ`LqnS*ߡU꺎#n*}"^hJ R} wJj\ͰOxDS٤ ;lj'b;CPfRYXXGt8%oNiuoQD hG75%a$vNF]zK AMAPJ I8!@ M WEd?HjGm:mIMNo"7g$VqS>yky¿ϊ|-뿣XtaJCvFKMM6m9y{|ʨ~NoG:x~KoVM#KSA8nٮEΓeOm5Y^&gFC`C/!@+/z ~|Z&|z183C$;*'`[ƐQQI&U!*u͜Pwoؐ^/LDygՖ <6,D\4O^6R>'Ua64VpȒɔ\|Oߝj!~zԀ˸d-@w BK*I#?w)`8d_?XH[ '7C v<Ł`Ld[ڱIGKv.u~+||flHX0|д YeYscU-_(Umj\v^E endstream endobj 63 0 obj << /Length1 1642 /Length2 8994 /Length3 0 /Length 10070 /Filter /FlateDecode >> stream xڍT-~o.+*#g MF'; y#Lw|1\ss= ]3pc@n S9;S ڠjIRWq7v{L$ƪ̀udp˕mY+%GzЖD֟^FS ǒu(d{^^ͰJ}nueˣ!s{U|heӬ:QKfiLQ#9`5{u=3Dό-S+j6c1 >9Agi:t4+AئN]U[!1;,L?~ԄG TbO鯥[ ;(TܵV0Ez2|l;!0ٰZfvB }JL#Vэ~;|+f%r4\|]*rEnz4t[wSR{p2zwa JF*A\~,cʯBfp[>z\AE~|.L&5[; Rx %@ϧŵS;eHWl$%D*tS=o ]ACC{|PL^q_e/:%[ѱ!>k޵m:P> tr^GDh"+|?4stnq9ZJqY72> &M9)>I1lRXPj)i kvœl})VYU;Xf O$:( _$b=7Yp:#㕒p)j hyE^0'ӱRYDit>Dɜ8 J -6u/ZF&L-Y88tm@ K^ #ڄ4DE/ÒhX~+dPT: ^C -S? CY(wq%}6[[ZQl9nlrϱ y39qLtN@+rpR{bA#OQ+oǧ?]y921 x܊ }8&Q'D8~_7pb՛/z*F7ƴ$X䗮~̊VlFPHu6/R"iI5/Iar8U ޯ2HR>j|#?3?S_$9:DSZ"kABdM)始 ⎄Sې(X{EO o/]F9am%*`)_$'O~ɜ~QcićAL|<ɽblͤ^,>^VnO$ALG+ʆdUlM'ؖC{f34:CI*wG= a!ҥoX퐙Rٮ-lsNB\ENgtriT"'խrl*3D7%9 & .}zJ)U|t42~ƉǺ^ZUi$\Еc xgۅ vR~|YOe؏* 7>}ʌ!e7T}FOv ýێ}v~X_f9$9^&fX#3DLh4S)d4%=[n/UU& ߰\$\B~3\^{ݳ2CdoK^PjObZ#2FM~eHjS+7 ʈv ]VF*F(T}G= `My]k]T=`PRN/ xy`1VN0;Lr˝|4=Oi3[ebʾ63ϗTW7 aƇV9!$P>`cA7<*Mulk;Ť&QmyOj)Jj{7KpLyI%kےO5A'Si㖯[1}~z aJh$UfDG 11@wUwG_x; Mt#p8dXp+ _eݧ^v1)X@@P]['XK.Ojad W&ojU۾wi,qө!|ʈ6g,z0COfI8ϼ9=Bzˣ pȡMS,!)e;Oq+;'p^)6{DnOHȁ?̯ZXtiYJ&>kK?, -31@!ȜWz t^"V[*عѫAP< W|j/̃D""~ ;~R=.p!$x$ݮ3:YYϦ/0nХSkYi>#x9EWx15Ht 0-ƤQޔ`Dž-ZVC6эGi~ɀLFHtU_F@"Km_VD ű_ #ns.}!\_ˍ1dSh*erNL_Iu3V`H2y4+MQAB ^ѓ7nc n}OKٲKN/Us.cdF>$wQvR í!Q,(5d A)r 8(̷[#2{T"-=aan41EL\q#eGoCmٮ*\,i=zd(MBJ]t/ɏ'ĶLJ̄r.dp l/_\DFy!gcC6?i@Yy5pvO "Ɉ 4A%b}hE0UV_X \twzkekΝCXtL F9|i'@UKCRgPz6"\Մ}k&1Dbs4ҢFΥ1"ZCTY_OS>z~e4vmꮷ5n}wÊ.ڡ0F>H16Cü%%'%iF6Jkˋ+&QnR8z.-t%ozc>B/Y)&Mֲb}>쵔skP?ૼlV4ށۀ]gX5OYBU"5/Ƽog.k<B %u)<xW:kUW{=uY$'qc-w0kئ]U7kwq}֜^2`N\ ),9TI<~q$Fj*@ej8N/ݯv慁~1l/s0awSM'tKuiSq}^ѤMPa^qXb`x{Qϐ#4Y11/og<2GuU̙ zGM+ ER25y\X]+vUb.9t;JRYp`Wms1Gcx 23TR2?φ{Dy sC?gNO@B(]i>AP5}{tFQJey >|o|?T8rPBr7nlE̅m.G"m 9`)}?4fcq\9ɨaޯGqb$4&~&LǓ5sTT8 '*a)7-h6n9}H?By~5yjEQQoOޫ?F\fPcs`׶4oAf#5{./l ^[gJlyf .8'p&:Xs@A,D '&~R{&F|ZO ă 'ѩzb {m)g47*ZqRUi댻_}/@,}_o)% M]mԺ( 5i\d]uLηn^cE^44, &8\ZVNÏktW0t!4/gicMߩS3Po=^5l~CK~ @LGڄXpD)sv];6]> kT-]W /(2Ez9!]"֢5ǶǼz2`i%!KGhXz@1%j~xka%Hj"n&R]d82C՛uvM*I]nNTeT-&$j1 U)Vj )v>%~T%}1H6^{1f@fVkY1R_Q6}B g5~J 6OUTJSWʇbFm}SZ "i}@fv}ԕjLt6}p] ܵ`AC8m=jMY/ytdӡ,\sCا @LIuĠF&ž3~\t&Rp_UOFW0>>ARZe$g^9{hW.#=bHY >qA '艆;Lua6NVnZm増w^IT[Sl!2_E@jBߴp7 Wcxզ{nZjX9GEEԨ6*ZdI+6$a͢NT/CW UmE$l֝~'Plv,a(|Ŷ]}[DM4k2WO-oH*TMvOkJ-yy%mqK䗣9S^E7}y!<)6PɖηH6F~h*枴İ艣,b)8|h'gw,w3n%qS35JgySN&5woWw v@I6؅_ qZ+OgHqt_ڿ1 ߑSf Pbt#K2I漿v?S1W(rӁiM0DqHbȼߨWrj%ދ.Xsa`>sƭ&} ?H'قǰ35!=EQ ՀjҠyOpCf?ĆR^v)CxeN[ZГ:@FNVs|\m y1C\J0ԙ0@S XhKXd*'p|z}_HBSL)!I˓S2a $ǐu=u@%8W1>ǨY솁.bQN&U#I]wUx?uU2) T`K9tzU)ruuynbk+~nS@ <ܠ5f옏mAL߀$%rj?Z,7\O1Hi_T\ "rdx34H+fNHch-VbsJr 2uT듔T)ڡ)P٠yk*^-qB ͌wlT˫Fb(tUoI*?}RVC8DŽܨIm"PlV'W`{k ^TR2^E߉1wk˸Ijњ]*f@Κ#>yrY +/ 1 Y2f[V&8R0d@#rB:A">Ro$bHK^;܏M5^HdKc!b TD~P8KO2~YL,Qq Tc3ir\5U:dxMQEi8dB@lF:-ZOmFA1Z2d䈻xuidPÛoL~.#[zAkDգK7Ѿt}aIsZߦ^ΪxN:lϯn9$s#яc/ 4`OS)};<;s;i"0i6RT\vժ̨h ;RW!~)4g"wt ͗ѕO;Te'Wv ~S{@KJΆr_b(<*XI򈾦r Qv,<IFp |=m{m` z)vs5%:H! EȢsZ:p.6{2& OaU"5|:Q*ėa@I&e;J,6o{e3?G}]f lEUIGg~Mc31.GP5f.Qdaԣ ݄5:Yf#{fPVn;})G9"1_s@LCqBm5}L32- :5fRORsRD-De찭<<"M5%FZ* 'NRpIvE$pM,%G_g&xI%Jl楇RU:E Yde7 w&OT]ަ 'pžv el|,_2ٲ stC,cOMsH\H/pQGL*+HdحHKy]#d+<4=*u)TU1Ua$~mYgjj'͢q5D cF/.Ld΢znumbɧ!=q(Vcj3].JYR37Us]Š6?15" T^V@2Qi(q!W)]|Y[;YXU*|ʭv2ɰbysJ Lۗ;JYW^Tѹ Frj".U:$CF&/KaUU$IOERō8RJ-B'M>Q h6P&P3ձlr4l`$/u4`5])<* ql2$o:IxMYuI},9Bq49DՀ X7^9G0\F_nElVQVJ^Ч{T)w,"b(nyEz,J):躮0 Nt`&m);+Ů-> stream xڍP\.Cepwwwwwfp = \%w . !;$sjmukRjhJ@rP;+'@ZUJKr]@Pп ]O2K';U(pr8888\1 d,=A6U6tC:ݟ+)( tY[B@-m5_!Dݝٽ,ؠvb,/=@ t~ Pt cr#׆ں{YO0q{]OU@c?,zd;_޿ -NΖ` r*l,K/CKz2%@NR`T_Y@_% eY4 qwC hv?7zA| "lYz@+rrl@+O'1~|W7{_Le}1} :Ғ*['%rsXx9<~AGѰ?[(@OO]Ož?_Xj' p܄.MH f-@` 8U@TgfU6 *[>́$wAnr oYu j@@ tOe9ܞ[|>Rb 5a\|KWWKT'"q|9Fv6T?Fx쒿D?]oTFv]o$di[8X| >Err> | kWקO @o5,Z8̡6U$~:#k r*cUvȪdnMYsE{ߟ#[5[o&[Q#{Fʪ#O/#lmF!Ww]_moU|hwetLi rfYPp1/p)Q^q5Zz}=rB˭Ȉ gxWjoXf!{ӽhy%J_Q.d:o`Dз $rQb{w8iBS`Ya]t]x+Mg⃬s|y5 AH(,[{mW]l_k@!!Ɣxba>W v嬮oib('Zp^ c8\n܎+QU[ޚ1oK>ԩ6XOstQ!{x[y.u%vnSf'x{~*OdI"2Gz;'>+݅AǗtkMUzYVw?DžPX}FXaԱE"f!Ua,+z` #ԎK gγ]:J9ra $Z$6AL|p. dWS)`[V;>#ӿ.Ad#k=!#aw6:Y(@vBOW쾓iAbObD_RT/πOM%'\\cz.}y.'@9+tTxpu[3y/L.|HsYؘB7œ\1V_TM'RL y 5tT?bNr/m$nVъWɵF(V\aOĎyQ(3 NRxJƝ[c-~1Z#=ASfqS=H%´_lmH0W6_DD,64{E XZOm<˗mDBym!{ d\5d%'IMt%rsmMTeP0d)C0jXF~J+pJȩЛ4LrZ\lԚE0Ml8L,z5īXP{?t3oz~e~^އ<К}> TdRGTbrf?;xAI]- 1`ϔ[HR̞~d'zD鸊E LYCɃA,q%dUrZd ;&~ Pk]ALC2:huaCK:3i[WHs=Ӭ:mku'me+sl|~W2f$\ Wșھu ccC|5CbOW&f%|&idokR۩=ڕ|z 60)v)خWa%ĪU~h~P44'HMOdRT<[[^d?!N^2jL!b}8kf@ʂ|]7:]|H>M59>ͤzfrNKѢEa77WHqřl28Jy$ D&OZjQf[p^6?1%hulp@xݷLZmj5%XcxgXHnj-r<>VEGQQ-E1z3,hp^6Z/;|W$BbmCwxn'62JWѫo Ɯ.&3s211j-ىfaN?{}6LOkO0Y0\[,c[6hr@FKdš܌ƙZB$BE06gd=zdg( {ߘjZ3 Ԍ@OQtpZ M]{pm@.rݸi(׬ziI)V\.hDV57qyFqm %XwjњhO+7%LN ~۩Mww4G YvtY=_L;zT#=ݳ|m^yc\àKv[V\AEϑNsj*޲xv|Kܜ><ຬYuDjliȠ7^Ϛ* Z7X,M=_]E PNrnPdv%1 &gΥ*O@H7>G:Pv Uu~vtpFdj`Chm':}%ڣ8[fQik3: -&GfrkYwNOɢ&vo+R}52GuЎ'>,ǀGVTMu+n;ENA1zT'b^0$ ,4OG\_/L}?Pj̈ uW- KGu=1$⫻}u7p#`;?Eh#$Q{(82UJDU7RC'd ͇m kږXhy>8pv)M\^\ޘ*gDZ3qAsj$ocĊNiuYLb+T1t8 eŗa9\S/3"@IYh5bGGV+i^P TУE8lS:7)za6KDj )MA<{1U0tmwu $nCt9TЎcJw?'3o4|~m#BZU`""^.M:/2&렮r 4ƴK8.JZ0u8_:%HgS:vY{< pS,>jlX/LL2k_[6k5D+"=CЖ bOE)>N#p% H t?Ƞ&0 9uf}"w7U%Ưv㍏@[|̝Q:6:֯Ilj5#e,O7еGpeL I7|\S @f%mWM\9Ư1hk_ccYS5fF3[eղt~/>(_# CU/5Zca>r}3TStfN# WDq)+.J(b7* zLO$U³,g31*Zk#Qٖnfќ{W7˵_9ya:l`74@Sz|M@*,kX#j4UҾ}|$1ty鬛1Z%{W_쫲( iq>XC}m'ݙCb :ĵR,8, *ܼyC9}qZK_?z 讧^O9VY9oЪk'i]4#] C1JQ. ؠSh?HLjuNc4Ubp?&\?i5e@%Jr0V2.5 }"]FO0oZ,]_6xC~ϗ_ΗH: >]7Ng&jGv"U{3:埗iWt&QQU jH/yJ K8 &Q'aޗUԖ&['r3yEăvF#TtKY9d^GdX8 |w-q~&WA=x91~Qc:;g)Ct}-Dh#ݔAe#9wTttV(v8E65Dӳ mCϷ cz jOn rzBw#)]†9إ.,k,KˢՁjՀ -R4 ԨVarlWqtY1KRH5g sBzHwEeӚ{JVXt{lOƁ+4m*S¦,pdY-THnw[vbnƷ yƚ%Nu\2I@qNǼG+R5=y37~~N+7c6g+eFi4ilRbğ뾥R޻z.lGQ0.dtu [3Ȕnx]J}lBr\(5_hvz+-V% X2&CJ@=eS1Ѣ?3@4a?h vc8o!ٷ{%S.t3B + 4.2՛)hxO|f|#Ede(}`F@5JՑǍn`7jX4JQHSXf[Sv qѦy $礓;%Rk+8WgKPO'>,CA7mv5]0w}k3S7b"]:ϑ2C2-TwShGy!٣Zv\q|~vrahR9ZD+PX[3a80߸|JtyPFY.}B?+S)񭂿1ʺ~魮PەA[{cQF(ݙtaL,LZvr2b2Yj~'֧)АByHΐ4=ݗor&0é }ژYubhG߸>4C3آ:ᯎŴtbmʶ1+ȥ^Xbՙ)t{2:Nb:M^4Gr!|T G3H5%9&7!߮|>)MjcFk>X5q #ZQv$k3飰c_O7e>Mz2D@2IE >r^e5$B q2ʂNj!1R7Pm/.g>gNx_!=lcA-< X4'Gձ JݱBڢW8鹊lu{ K˥E.\`T䨘;t?O\b$yeXXȋU(zs[3Wwms4Z՜ U!?J϶D|HOKa{<O,`0جm"MK ua\9@Va<ͱn=Ndx3&#@}FVt\ƞ|W*8dCN񊴰DaOMlC-k\Cj uIspM/KŨOco|M$dn>eo&vŦ`NkrsxސaTQgi`f0 ܬZ ~Pa#_XH% ԪCj8ǽIz/Sm bh>Ϲ-W[{7zT̓2bIG,F?W 4w @sNkw+9Cn;]G aJ*d,WC^{9,24p_Ch"Zm'v 9H_-zXIl"YqR },չ\3Z.3_ϒCo*74ye@pϾېv =>-&e4WO?n;$7?Lh5R5 ɋрPH/.1CaclnH @~L6-PYL#uޅ1eB] \}HT;bc;jPc~ dUBn75/I, WOUZ{'BQ^QaؘyGd5ZW,a cnn:ɻH"U%Ԍ 'шXpuNKC-KK5[ > @L1dď>x RnRIA xq Ѽz g.xQx)q#MQ`d"(-$t.+? iu]DMc K$1,ϯv>sw 3Ϲ^n?˘4d[FY0Iˣ4,_oL{z.{̪l&=?eG_=}eo]cݙ{C}%$vOj61'! 0@{ kƉdkiI@G~[u]b\ WLt-iŬi 55wԱ鐻=⮤X[`X9MJ0?顮rt|\t/QK~LD+F9Le)yO{E28GfF? AU}RU.#Lp}t׉1\,2 }ivc3:nwn-@dyF:QE/DqJ>,FPf+lfsI7air:ګ U<#nJs况aiJzBw݃zo孤bR:ͩIonLJsrHDO{W x(>6sJ޼#$2`gd92)t {}JRsfcUqc endstream endobj 67 0 obj << /Length1 1539 /Length2 6989 /Length3 0 /Length 8016 /Filter /FlateDecode >> stream xڍvT6%1:IHcэJ" 4"(! RRJJ(;;g{+FaE `94 H ൄch0p(C814 !Rri90(-աHW(Px>;#&J Vx1H4b80 C±2/ȁ@Po?Q4MQ@ĺM~pL+]!;1Q/6C#P 08rc8@3}GX0BD!K!$2C{@QH4EAXa KCH/ NwP `O+C/3G@(W|H {`zЁ?g%X$ @x˸y7 AHX?<< +ݐ(`8Wy 2h5-W4+?⿋ 2R756?*:*"& !114o+P_QBŽU}Co[h\ip{$o[whG7?X7+/ׯX\qoQ+q5"Bq3r~ 1 s*p_D~_ (M4p.5P0B1h0WbM +Qa YQ]z$ :i?"Ix9RIüHi /ϟJg]]JΪpssw.SqS%z,ӄRʠ>&X˟uYޙЋW-:'sMulB$?X`bb}'FA(ӽ|(p6پ u'?a׸PJG%#SViiSw9;XG8Kyvg';ܳ}a7 ٌ)IbМZWE8ѭ{ &?Q0<'<)w}}=RD2MXT^ }rN 4Hcgs=ƔBAqG16BP!CӋ^x>W}:g85.?TLMX ,TTA|Σz@ppP P/B00Y']X" ֛z"+ȥ?86xi&< "t" LQKXZ`Sϫ6xV׉fSY/ ;@{<i6<,.g/ߏ?ڣ{ŮqN-PAw]z&'yE@9G~I_#}J$g\9z^2Z'qxzhyS7_Ng ;sz}8ԟEppLɼGx*^9ߓ6x(Ufٲ? \vm/gdd*~ujPaq.VZhsMovZ/G-w~b峭%~? SiD.q|t_H_VJ)}ZB7dq dAC5EM %X=鳛'4yx,u&A"i֡0v'#"zZZQGgN=R4c;CYcuk:4madpFEX+q |0s[תpCmRG:lX$r/em4zyԣ׿NQ7ď }2E58U2 4ÏJZ;Є'Y)NNF*JbSNsXD|\c\v_&yZI*T "+1/cjoq)t(2t9 G<+DߎfKD*Y' 񓐙`r($bFpXlZ-Dw[y8glvnK߾oF!H.o p8IX"m?NH"Wu<%c=`^bz~""Ÿ fĊ "OfRS܌Y3Mw>4(+__NZN IԚP/Du n@B\^f3T]6 Lhdc,eF:QguFk;g O9] 3A'!L{(Gh9 a(B1mV{ ŸcW^i0HΌY )RXSu37xo+xoxT8]j f[ICL"-ft*uۊb= ķH|տ{J8srS;ǟ +IbhZ֪fUW*ݶ ShqiκC޳Ȋ CHX X|A߅`7#n/5x@Op2f/̭gF(j1ϴJ{ݷt5^Lf2uHO9Z8Z  BJQ:ĖpFLf_2=4i?,& Y,2k~66t~M  5ud͗3cCI 1_ 4&r:Υq;7uVj~x&h/%:ÍLYVN]Ho@:o1>9zkd_a`SUskgÒo˅s^Ce0,CbwHUҏ]\8cV 6>Ɇ~ݍedTcOaZj\O.)4\% JGMȚo\k:w' Ͻb#@UOL]UaAJrO0wE5paTQ~nSlGs&GQ/+4B]^TBɿƭ ѽǹ }29ҔHK܍UhBזU1};y:EÚvJK[kJkbwcIwHO̽F]8RQBe\FWCcu!^ O ;^5lq:"ɻVj\v@S:90,(qGB iߙ}L-jrI 'f'+#d}ʼeRDBh,F<r-ܤɪqWL~~,kbIlhUGEQw;'5yox9[Ww"B7~lZ";b%N"ZK r-zc1b{i6soBi7Qz9ѝIՂ " QB2=zknOfV-ZۖJ7B*FS.մvRPbT H}`+I]Z8>% ~8g eoߞ)NFXZ@91H@2yŝKNW-?w$_wUeU0p}#ÿvx Vbs/'>nx/-G)<2K7/̀1,Zr!rO+~7^U+SZR|:{)N[[H7)6螒%x8!杉1||WKƻ h(tf>'t[Γ[D&z2sQa~-0JRe7!Ƌ'M Ԩi}20'SwY#gD.Xwuj_chVy:k>hNȕa)"S7tO. (HOZi*,<B^$Fn#eg'? ~&i]T%{p~\FEqԣ29 ½쎫ь,TTW%X2}EꋳFOѶÔ3J[߻ݐZHlmKpcaݬ B{)Rbշ-aBSQQjOAm3LXRS97٤׶Sb]3o{nwkiC#,겶>mjLa? #)GmbS*}."<^g+|tul*B#Zܕ+}&,dJMUC FvnM?  ; Q4L6 cҪ1T?FEeunTϛg0ϔdmjy~> 50VR|ɂYjzPJE+VܖP/x%pg^k!WucOP7Оt' kڶ6 y w_:U=]׳'>/zMs`v"fO"ŁV,&5e@0{[m7ϥ%e ˨P(J+H&ɢwY+E4Sb.~n|dy՝\=lqr?hij䋀 `H#P9 ұEѱ>L]syΛz%ljb)4"),#44l4j[T3~]~l8<ݛۘ9eޛ;lɧvB%4BjR,,/3P/| pl&uH dұ-LaXS姻ݑF&èWw FI'_~ Lg( tURn iŁ =:Vov? BvU  *NvxQ5|^j;u( qwo!hR4aWˢsgvo endstream endobj 69 0 obj << /Length1 1401 /Length2 6199 /Length3 0 /Length 7164 /Filter /FlateDecode >> stream xڍxTT6R)t΀t7Hw00 " R -- -]R |9=Yk~ykϬƬk' (>?Pe`@!~ PAC#V.zn8 \4s!( /3X+JH ܠ0?4s=Qhh!Z7t POj;z|T@t(_nKo0(@B=aQ@""H45 h 2p%6Aa/+a?Jo2:1 u a=zGn0]h&׿@ dyzoQΘDha gM,թG UwGΗENs YMWCa(o*}?v09 El&1Z`[p^EXx݉1HQOs;01,I=,2< ՍƯ1@hnZg&t\[-RIAK9w$y*)a]AL,--}Vtt@[Ҡgb=³ҹ= 6[ن6'8xKJw/CĂ&n)'n~:H@Z#ٶD!A"q/꓂TȑjO ǖyO9m836ŤvMmڼ|a>ϐfb#mG ~XUb%Vј ܪ2@cd1`~ڌα;!\VC$BUZ؄AJDȉ&BgΎ[0YE= 'ͱduGg + XE*b?t?ꈼGt~yce^)T'ZId3YY̻S]#kM;U-e4-.GW'm@D~rqAfK4 =j M2L}g+&\UYRiR1-fR඗b|v3- o HI+9S{G؎5fy]BE+'\(G"SPȾzX(.˨Yu{Ww¸E~ˏyfM6|LrU]/GfxXYJdOdSܹgEhtAMUBda#:1H^qTXWx=Q%Ptq~*aeKQdJ˧R[ i#or'56_YRjt8h?҈z#MsBn\ ]E(?Y>X"3eiKD[k{ɱ,-a -a͕llGt^ean:À%_2Sڕ5A q4R|)p*3v%bJg/(?zr`H.o: Cun>Y?aƿH,Й Q.en]:tkxqkl0ˮ, /!=*L*tcS]xKY;C伽[*tH_Ǧ\C?9pTnw4}Z袏_!t6+$s:\ 15=ixYʠtAv֔ 3,,Uۤ́ʼ'ϮuKk3ւl@L}61ϰ0zۭTU)R1HYBcq'b] 5(^iDa(+qgH}E,/=fW^l桞9Py.q~!5aֱ \剆q+ oX.Kωy"%cK{>!EUc~ o=9 k Pc={1O\]Qƈ(Yml^5Aߜ3 "1}MF_q}P`Q|+pxTQGєb\()aϮD3_݇[M zPΗc-R2)W~^]Qv5Cga . SH6(]Mo*sGf=K{tUs)Ux2]$?U0 kbQ>٩F{7Tsɸo<">T%ͱ5{ǟGH͂=_)W.1|6s4}x~5 }?#ۋ %)>pk;]>[:BPLq(T4 aazuóy *C-#t~zk,&? 7ЙX7dk(D\MFzȍѮTPɆ.&ǬGԉ.Od{߮!:/R4UB槭} GǏFHY|ЀU8J{Y< /< K,Vl?7xJsszG^;2v]jS)xhf*6+)TnU#3ͭ{#8;8}1br OrnrW^ʘ2uK|QܰL+}x.ޕf&鶔E']*nQiG?!&J/&U^*F$ѠY.)Nf {)u<`Xd{PXNI݅rT0qUpTc_}TqwfNo[٪3d1KG߸XՓOLe.(Kk_D갇1>Dco)ò IШkb#c|CraULAH_9jwz&?+3*ϕՕ^5ر9M$]xg`z/R>f`ۯR j8y`SeR K^WL/1fIxj^1ڃR6&hy ^OWSZ86u?|Bʦ"38sp1\Xޢ[}f7:XȐou_j:=5*2h!G m>>I(bei0نc cݮ %U!ٹeZV%Lh%)ɼ%Ff6ݐp/?Ĕ"_w]]R6ٰ0 Iufd*,Yz4d7Z(_H{ED~zy|GEq-!̽|vQSORS&&O.ui=^#GWv= kHVa1`,kMiY+&B"? Zϕ3Y| &;*0)$+jzs([g z5[6໳=ܗk(|aG*5!Y{@MBCW,ygD8Z^k.45׃l1~=w&w#t݈^W[tLd \'~#x(R+9xSbP+{IaI#) SaO \\ae*`m@#VO#CcOȜ>1qْ{:/0Or,pq4;LԴEWft#!ۃJO10*Y} q5t-*(1{:Gʨ&e 9G,D%Cyk$4́JGYH{ /!N̿8έ@흁msTEt^O0#q~FS~dT}.";K"q\Œ픢Y#WȦU09cI"`9{eB5 qU4qL,kN\5 +nZ]#{XJ?~I%֌uÌ7#GRLl[3pFJhmnE=p.b.2q7ÍwuـĜ<k]aҭeouvr 5ݭp^e`,ƪPwG?Ł,?sٮȃőX|_lɇJܓ3JEh5kQV,g}iRQ$'Cg1cJjmv,[)2$^?.-VZgqC!,ό\U|f$<=}m(_:։U|>1}HڥK$mXl9cx/35W%NT5C-/Bm [~3P3}}[9D۾&2]G[2I;roZ/~RUI*؋}Zn˕E?Ls^ڵȒte8YfI)MoKWwf2tZjtf/IK{I|~û׏w4~mpݖ2W˶?:lPT=QE$#aB(-;28rI]buM9]O eHOB [ƇhtG50<3@"--jc6~ ?Kmsj]\M /!xCтd(zm II0oIu~O\fWk {fw3. ÇTbrdfY!nrD`ڗN{*bL xN; ټ[ətZ3}cYO >bQOk= jq1wlTrdkz{ޝ~z7b, v=TXդGރ>ʟn'xÞ,t!KY״|Bcf'3NBW*"-W@MS9>? ++VXC$D_ݻoLcy,cK$_3-Ff{I@k|m/B=!ZlDŽ*? +܃>\$4"D_r4s7䥫RAPps\S={@`>!kڑ@b\|+?gǠyۘ/~"S|їc@ÈCV)MRemjJVv Y}Ý@ !2YS)> stream xڍtT.(0HHw#C0t7R%R  !Hw7 8޵]7gw}EKG a U@Q< ^>1OMrH.H((4O:@HD_DR vYy*8ԅM䉄آ=y; E `8@:w G q[I tww;"60-@EAh&%b\k;  wAg­Hzs@ CVCx{6/f*NC G'0XM5^! E; `70l& P9\x]`F*>ey, GOB sp;5) UKACDl(#aaAQt~ |NkP_5GvPHWsE`j:ZY/  -/+? 2QTR3c227HH"\e5OcWn@U pG|B|-)77;;0Ͽh]Qh#67ǴP+GQ`6h1y0J /9P- ׷_1 ZCP}<3~!a{/$ id@S}$ѯkapW_(?*C\H~ ֿ z@!Dӓʐ ,X@A/bLu}&,e2 ʭB,UZZ3Kk?`p i~51Wѓ;3 q34;=uq qԱ.Oɘ<|&gl:+LX:[l"xGTB0&% d_gp.d%ݘD*Rj5Ft>$kyy1Dprd}r14+AJ|`݇@+2_`?IH~JrRлUZyqGл9P]D^b^j`7% ƻ|r: (eJ;PC ),?J!~73-gU`绘G8&WD<"2~=*AӠD}pt2ܭG oގm J: Л,qydpfJ_M]'bA[s1M_ M[WL顫~R8`Őw1xe=o 2C]̌קf"gt{,@gGf 8JOCHHC#L;[$ igneT+e'Ȕ_vVvONِAI7uҿ+4&[a1[xDW.g~54!A+/c]|x"Zugyco r >^j{Qv%ga?ݢحy&p5x[8u#vlTP`Q \:[';~u20#+K}=Ϸ;4’5~]P&ƛlRƀ5'_^K AR)3 50ȸåv}fc՘).;EEGgyVPJ޸^suvq8҄IW 4=<8JR>3dF u  .,Rcz*&#fH,0sNhmwtjd'R.vOȦ30Vll0.i i^W5f0p'vJ<^ZmҶ{5* ~HKphK3W/lc+>-2xҰ6q6mQț!H]=1h'(EY~'t[w >|P?[\/Y@8|!Zk7}PBL>SOK_XUIS׶}952#a4{^5S}gWWdʣNB7a2l_gc̲@e1U69Nyj #'.o8[ V$;-_2*<S9,u._8zD/;aߌ+2Ҽ3maW(?ORyfO^[cHgM'PhF iMkɭ=aK {;wG)BC][Dz=vsj~'P,WX[/Oa1k"C#JReGGKI-k}َI73hbއ+V-q ~ 3ëĿSȓvIn(/5'Uܖ۝5Ӳ~Rd?zmUY}5s.1oጁ(JXlP+nvs^سi/BR;@|8 }2VT&;#SdkiOZxz rq7p óFܽ_V7Gsh.bJmedfT6*;sBr(bWQN=HnSGpSSm[2!&f(5T FR 1^2svC8j%KzXSxsy yNu2`cPJ |Mvfig&ik'kQ6E6EpU(B i /;U8Rm+4T`a?bǀt7׬qNޔmğ=ȡYMGyG ৣNpF5}N$XvK @~Txr6 <0Ӱ%Dz^͟?NvǨP:&oer#M@qR#?_˸R;7.p~Y栖bz$J}$^:PE~L2]ZYd~oaG9fcUe98 hߞXTyJn[$I{|r~.E]Rvw>]!d}S!2>ta$K$8-,Kmsf҉9窏}-lKt*V~T<?z/!)9>>h֐}0e_=xji6j?fQ"v`>GO<0lNZh.4(u->;9Y&i{OHO8;E;-s3-J6[mދG?ԛIs]OFP<|wٲܟ&^a:h.260<`}c**m\IWrH߫ËiJ&TGB'2m mL}ʭ<_%zT,fJ{tHVg &P.~bjVSRuQR$μp53e&|*]ȪPm(^RTIYӱ 2]Q'BfKg;/'6y^`E)~՗?a3W~E>L:lߟpYpm{'*@]'Х'L÷[z2n hvZM2mjkFf̶GKv 4.`"oE22kIƳ II׶CՓM߀UUZvk胉[dO-(miONP%r>NQuOͰ#q 4I'qSJ<Ri"Zprt.XPii+hg| zy|kخ S̥ZbP/ap k5)5U ng,&BWX(y)je*=R/_Ոeڦ|%* 9{wF޺P6byy7KJh)${g`x̡D4F0Z|XkGhAq@љyd%Dn|R]]=n۲N/[qQgh7f1G~핳5 VQzKD0fQM^<̘x)=}ל +>z"rVkx b,c X83% pϳHҚ7,NJh1ǻvo }QsiVM|7{U<`#HeqW88*4%hδnpwZI9e[?NAQK9k]q!ƕ8N*ۂ|=V*b&:?3[37 qikh0Jb:'u@^DxcrbX+6Q'F'A7‡$ݪ)Gڶg$E_n L:oC|y]0-Of*JHW\  BOGpNvc^oZi+7^ zξGiNn< ĚssVXjY*{ۉ]z&m:[d9;9ER$諩^HL@Wop; |!+xR6na7j(nT)(MygxE&]N9>e}[uEpn2JNQw亪J%%BM43k!%_{ ~!kF=jYW=u^M0@240d߼W3_\ f\34ik?2I endstream endobj 73 0 obj << /Length1 1466 /Length2 7673 /Length3 0 /Length 8659 /Filter /FlateDecode >> stream xڍvTZ-# z{/*-$^w_*;~Z3{̜笰1<[C0c~^> ?OOrm'`3 P8L )PwD-8 HJ&E; P H6jg%w ` BCvp0W N){E9#y;.eЇ !w Wm3x P- NP0 q@jO_tEJpg B eM^'"x;#.P:?$uA!yP_=;f%C! ~էE@wrap Ն uu)Ź3fAWl ䷓? rCC(矎#~~ XC0d3Clwzɏ+;aN^b&_-'籠0ీ0_@ zw]:,./ p5 \҆)w_rS,OwEnNN?Nn)Ђ쿩&?GW buso t7 0;E?E*C=!6POi75oNPDzaw7d`ǻWy'. {_%nkE EpwwH76byap]G?-AbE@/o'5 P@onV]7O L!!g<">:3YSs_ R:?|=-q{2@m)5ŒoZLu3*gr-wgV0;z^#1.o*Re?y0cqi0BZ3ZʞTȏ"䆷+ou -A1lnhelC^3`mCgQs Nk䠁CLkjv=˘] ˯XzZs||ԦX5l-(QQ\B!O9<3-fEh!29s,-g Vg?U<Ғ.&?-^h"Vy0FTUsE8;ًEiZvգ{zYsۏ0)%;UqH)qoL?2AnbMo$x@L=_1|qҼU WH't^_ycA0i_ZR EGz2J޺#[{FSK (y-i' X*&qv_۾4oj6\2wx,H2bZUֈFTp8:; 7+=_$ӝ8iT#ӌZHQZW6GSGloIީ *˳mɽr̊´|QlEI{)HD؈ g0Ewj&QحLoaԌ`Oް_6EȳTw4I?J~Ȑk82"T@`9ި-38HϽ~RXn!'=gBi?w]$$i;)lb^V[iޣt{+ ;=׹ \rJ8K^,2=Y<ߡՊK" qovSU,mMwKݣ^[ ` K?nkt^U>ng2Gsy%ZHQnv2 Q%̥`u`}uO0G'Fiw`Ґ" BWBlQ- B*z ̈xv6~ 7noSwn@F_~cS :e-U#7A& C^J^嬼ΈSb@1cOp9츄)6$>ٓ}PiaNnWL >٣3Tj켋ʖt#E攼_U:=7Dj6W&Rn]sؗEA郇ߓ]-ye|e.Bzn=xqN&Qp7UA*b &3\b;-rj.a8Dk26F#g"s}9`lPfbg^q( M`rޥJqP{D>-2'=~1(gK{ޚ>*evlhhY=ykяtiC ~M,jA((,tQfBc+;iz2.J%pHe0\VpL8)^sgOAo5>vQ%Kl9܇g(~3928mw:V_Krq KN*:%%dp>CyRM CV dJ#C0&u'Ø Ke^>b_r ` /!$%^F, l~2?[Ep𭯣lk$_C9h$8I]Y2`pdž$ (z2. +nPי4>vZ~\[҄ƧAûZ0'M'Gm[;|s"HÈLmλ̚J%r0M.oG(eiXiP-C8 ܽH5qYgUH~?bK]jϼ>AJݕ!{˭pҟ_Q幧LJƒ-  ?oI>ʵqv_% V|/~M7l9Vw ^[T;pz B l\n!GШ[bLuc48J]`+MHGOr÷˖rayE)ۘJ5GxD|fki?elsvhpS .ڒŅ[ac~PjLQax%L(r@y˨Hv踪!Tաv7#oC6[+9l?ɺVy4E24rM\NٱG1x]s}}]џbq/ggNEɪPf6rHr># VWW(9 -2Q+|â4P>m$vO.Y&OwmϘ} 0W%9G}/P!E?pHOt,%c\VIL47B{U۞ɔHdj\8*N03l- ᯭKu=홴/*ᓕL||skMtR4 ?XI8eĶ$g>FFfɻF&e-5M`6;"ܭGޡcV~2kdRP%ͨKqɅqH>vXk_QՏL/I7{kNiduRWT1@ư#hK\ōlV@wan qoF~\'gMo x C%= oN |(m_La.8&{AkVV4)'Bd$#3*@ɭh#.L\Z+}~u3L^I}/jL2L?2{ȧdp0Ԓ3 -kq+n-qX:f&YYoh3#Y˚:>55]iM,ܡ,pJ 7=8nWc]6QOqYתrIPU+`#-+,/7s)UTGl#,ɉXBW'_q+}B.`؉;X]z/NyXE4sp=*Mn6։|E2`ǽ?ܲveXyD7lV88S$oӆ6!:SA)ҲʫӢ7yh7;͗==Mѭ]'9ly$ g~^ȳmBeMV>}rz45@`}t[E-{3&1(`71َ`+;nC,g̘lPZINh諎ziIz,"u|L3R"GcÍl8aυj !UO6[Ϭ?tK*{/S'Zm4{rSȢ_/w=ګT<W)"T~9C#qR:x2Er&ؿ(9byUVo E!h=]i&} 4$S+p Ge2/ϩrz %O{Y߮ ^F ,( N')T]ڮƗ?섘F+]ܟ}lC|퇉#̅x}+d4?@7cyl/.|U+<ݰ(B7\J_v (H"׸ˣ@dhqGZT*][eN%tEc eF\Yf)qJxc[`m.ku{zOrZ8;9Y^0(lA4}A[n}Ai.enY3j1BZ8y7H$* 4<3NfoSng_8H+ťtL)Te[CD(ZGS`+KQc) zXJm7h?//1mam j+v 8Nuk31ٮK E%C3غx:*_3V!jIqv>pSvы) Mt4 ̦Y8,!)DkiS}'ӣlu阼lc_և&ac[PͲ07cU<&Y;'/^qan7t:=vOj^sljQ]Vy݂T~k>FSg!uiM\۠V-θb.~zB&,oسŢi% ]W$o 2Y"Z Mf lh 5.#FLN.{;`L.aso 9u&)\rztKqa>N"ei&`>Wㅶ)]숥U̜Uzc%Ef ۇ˓jgOU 9li-$T0in %E\uٴJJwKk)lVeu&ՋR*z7AD:nMl%|1V+‹ƤoまO8DvA@3x鍊+m[tƮ^&!j CeyٸbYRBdK|n/\J ؊]Z"hqiӁlH% uqv2=}O|7Wi̖k[K{6WPD5- $c}xu=r,_apyd(15 %V1 +CI/i cGxe[0?!ZDIƬjq8Dի%K-{?ҋ-߫~}v>l%ewP"`@F∅NeV`>D&x;N=aA6G0G)CgtcjEZꊻW*fUd"&:Q:eYG_?6 endstream endobj 75 0 obj << /Length1 2345 /Length2 16116 /Length3 0 /Length 17507 /Filter /FlateDecode >> stream xڌP\4ww'qwwww.N\/{}vr^9>DQ^(ngLSUef01201Z8[+#W::Ya!4t~}4t~7HXY<̜Zv@'8rQ;{G 3ss20sss:Z ́6'ZT-͍ٞƉLflP:]&RIjn#.0:ؚTd @ǀOq @;zXؚL-qYgwg:_NvֆFS7 + 3'?'cG {g'' rd+{lMDllNph4~?͵s/251+ {F5[ lEpef@g;+ 3u=o%_|i},L?p^N@ O"8ff3hfa ;hG w1>a&vn1G19RW)"bgгY9hh?1M/dgw?;/,߫aao]f|i|=83k~ޯFFdm_ߓ~Oؘo{ޯ=F{{Sev^{k߄Yb 41Ȼ2W>ct6w}px'| n 컷=D']KU~f݁pvƼ un ^].H)Եف[)c(Ĩnֈ_Nۛþ$)urP\EYd^3g *]Õb.HpE)(E-c 7l`k;@`?Qᮉ38\(Nyts#hN)b7Bk%4NYIęW7个b]IUݺ }_=GkG4(>$,dQ5Y%&QyN3Yd_$nް=;v]qi[:ЪIØ8ฏ^ooכC08W{fTYbsNf&V7쨍/‹A9Mi=kKc2RXŜBX"xc7%i-B5sy}s1,4oV\*;?tدNjHuD9핺bؘA%3.\tݴR3ssX:ugS>G7e _gDeҬÙ DCB"xPH/˩c˽~FbC=Tl.rGY4I/fGRtnG~j!>J :>2mV.9Yl&puPqws`*}NJUV0^6S4 !KocI~^kP:NuCϓ9fcV팋_QbZ_F+Nōm-Yv1ݘb'Xtò#<xb'#.;J?,y*35;#/x⳸$V *[j@r|U9PfQr}|md=!Y*[]"/\$ t2%: TkN<=bp'Kc4~}#HFxq6_}escsb1q*\+^]^IUrVh(^- k;#"dFOxJ4(@^E$*p'U BS,!Er)P+H\.;V ~ 4QT/PBd<P". R fm+yEJ(# q|XҌ_?bp0Oϻz4(s\Q*5͔㮇!m6oF040: R(pGÁDb#:r`\AU5NV2hk**n mvy/ ve@YFdDQ~p[3WUx Gn@qFL#3 zf1%].9D+N92s:dךhhÁ.UTw5+/o{=(q 2E:R, }gthm×f+mK7x~_*0ެ !y* Lo~i5OTe<:į +va,3 U_e89Q@=q͘c]ihW႑b \ hӦNVOaj<1 H_ ijL!V^Éh cms"s+8z\;2j z+E#PWg׷ I&n+oGd _妋bcㆵQ&cA`8je7Qԩvƿe= j9yu8biqU-/J$q l:tO1#ƩxgrT j^2J=3i>dbZY4{As˜=ӁZ{WRt ɍ|^$ qESoj #̶My6c9:DcslMBy -2'j2\bYbo$i.B~w+HAP0Fög{>`4f Voec3&knZAR4{~5qi}ӽej`\3KIݲ`I-sǏg!0g 7.EBFAQCMhHRg'Phqqk0*'*& 8Zd!E7s8+47A4QHh&NXY-OS~_r(EJ4=]#'OʞQC ᦊ 6Zv-~i"ի$pLP2V,6zG\ydARieO^.o:ͥ}q!mC奉O^f2^ū!,{Һjh5xKNrKiQ驿+//'z^L>H2c 5 eN*!n75n]slꪅ3U+3{j'^;$t sjKԤ:ˁw䗂sJ6}}vNܬFx=Oz)wDSIG4N魹޻&=<<|O/Sc+E#pL%S{R $AmQd tDegG" EgbP\}#rnjwgli_鲷-J´ i_uhchZs|z~·v :+9?-i'c\1UfmԥvLT}H¦s|&|6c8B擋$$rPX>vo mYIY1iNQ Wߪsyɡ]hH&=Wv->Aǘ/m J|.KdGWk`KɅ9$([| -6WJ%UOvLZ2dk䥼)l+q@曡ﱏ]>ȅo8OkFk]JEdQꨮU o zXaeƘQP'?cxAELC)=NP8]pOeIbhE+ ; UxSpiDLɸ[U/OLSD"k Lio?^e/56>&C 9v$- >tW%ֲc4|fb~4Um5W{s\L"|\\=͖VI꯫k|) l*?F>Diޕ]p a=D\zHXAaDTP!֠}T T ӧ*gL1J:_/4Ki X'Ty*(M(Zgn9V?T CZc3xtybz[wI)+Qر+8`YqA 7{@R 62G8XQA!9,ʽl=؀K⁜'JoLBѷ]J_fwso[Q+D}[2i+'QZj{wCl]Z7o=xw2x ngz93*.abw`wi78cm> H2Q9"E<Sv0/pۭWtcj7 R#T!^Uy\ZV4kj6ݬfJP5R Y.V5.r4mgNa;BA ]00rR#m A?FaAn0Q/GȖ[ [?bZ||Ygwڶ&=@.SGg?opO:Bm4f:dyV,t5Rq>o1+$jj gE*䞨Þ25/a ^\>rG8JߗE&%Z<*=Q!J6c3b}]1l?"">Z%i1kܴkV{R$tMh\KNiȏALr^& )4̌Ӣ8 ~*䉴#O@@&ɣ2ĜnSkIx39s ܩǚ*\gh^9 HK9ZUlVNdYΙ/a[6QJ{IՍf+ZH{;L(bY/4pur㷁<7x6Y$͔%=|:zN_xŒZ1&6D4>6j8ò& }zdu '_`n: >^6~Tmo5IRS y;5vBSLLl;G'i\ށ,X+(/+ODe\H~V팤}R,^7sEriA}sK:t^> gs|g$t5>`y-$YЀ3AZ٢ "%|r l({@:('Nlf|!=AN BF[!!/CiOIOxt[h [K+\[!e1՗v)Qie9ms}=N.p4kq|MB>Є^ٟQ{</ tx#i.j9]J8'lRu 'k vƴ-6(*xJod| @n/ dA1H:%ԏqT?-.yٔ>*$ :) E-$&֔]Pebs{Q;<]7F!z}ȷ$  .ݎ Κ;SmW^mv/<^ȣ0S(qI,9hXOÌz#u^jx\CXrPG@WAV0vui6Iްy J .B BL<#IX"3*J$Tx J.F΀G{em~@_AҨGnJAh+p/eXjdGry8y7`Xa0"S\10:r@3gL88.LZlKδfمd&#XR|uN65$Ayz-^N3xmmb~n!w;'1ᛒ2΁CmcQ❋>ߎLc! 2rPݞRfPR\'(b:\ JERDk i֕mn-+G(C Ju8J7$.-Чr eNOE4<~A0Z0{7%ɔXҞ4$F+3_-#pC﹨%@ .;CDuzź{L¶УER*$O_,ɗzmdb:LPlѢKDZ )1A4\`ayyA6mn@d)Yhcq{;AR,.9S'.IeZ>ÍatEs+}N 갹:WlFAʼny-gɪeZ1ga է UýC `\NUclu#Aᰖ *"-GnF0l8:t+>˳y\o/8Jr{P0e~젯"(CDτ+ P)?!v$ E R=PUnwx]pln{Z O57> wY#OifiEj_[n5Vkpe(%)pW/\o=?ajt,XК 9EOTaG#erh-H% ?4k3 ^qy MernNdIqU\[ќxt; }tf(!ûcʨ7TӳZWl^Ǫ7_/fEA?dLnE^ȾUENbeI{>ŚO~ӝ{-6fk}aTT0R5ip[AB kKf<gRO"p[#&qUA4@nRd1S4u+l<6.UvURƁRh )ᣔx/ Ol|p8G#e 4qF0}} [?1h?Uu7 W r߆ykšIw6kLaI#:GJ6aR Fn~(Vk*M&55g{c5P 0}ɮ,U]]2WψT?ycYA9nhW=-̃_쉸f{khcdN]x)^9? Z|ώ"kRHgr#+ GFo֊UQsMhfO,_{x.Gg42|%}M`7{y@4blG`< az B(c\XΝ1L K\'}m- QNn:puk73 :>$R~5Y;O3Uxs0 nf_6qj=ڬ*nM5"rmF{IRw]yL Dz Y . !p6&_˗Vfİ/#§p?өco4ӓH=B;IrsĿC ݄ -Bx7ņ,2.-PNƜӧk>GpI>!vBzkDy%H*9(kH9{w|5̨ff98Ur 3_ݡl'yHmU5ث5mקe)f{5‚kz|mA.0Uid-Hp!Av?}~)?קE_Y2#. Tע#\A+&zY< # K¹p,"=7YD0G_8<)mB)ߞyioʨó lS)_J @b|3/$Fӡv69w|geQoJk Q겝40}FozjӯE"oe}ba Od.*=>bj)q4 (c<-ڱgԠ~Veמ] Mxc@~sҨC:p?,)>6`{E)N#,L+hKk1:4]=LSY[0WmGtFFB5of>nX*P7ptj@M[ *) b]VYuw%bL )ZlD'ȆL^ˌepSOjHc2FJF^ZHb_TiAUvO"TuV Ғ:;㔳-Qna_yfbMލ6_Ī'rSSIN(7NRں3~Lag'<.'I_>`$ Rbp]o;I߽8wzRet*qrj2`K -Nۛ"uh{'|D\j|'EH76 #b|5¸|Nï4M_d2aZqj16:w']@~w-"I2+ ZYQFS![ ëG(UՖ틁Gok1X7U<^)P(Klr9a²|:<(B3 hq(7* N<ޗށMkE5Z5J$kט~ A_z!= O,j/~*X,q*!0+iՕYXOd;`ɑ-Umǃ Xw_Ф4.D@8"/XY vox%Hx!zSlX_QrVsnQ 6p ct9HM?&Eu)嬝.+EIWY3Hq!T#ُE T.fZKU&^(_G䢫*|Sr@$]H!P ; ]bgыX#epEGJO%2<͡9Ժ# @!j0 trϹm}cS-O_%WM#`+.wK.W`(Ie_ݾڿ,~es^rfv$htfQÉic`yHǦ0q-`i @q3Hmw&6邪y3f-z)_)E^0J#bX[f~'c(Ƕ=~%113/[jKs f׸'p|stv)u+޵RS#T]8z›h%/UECAs-`! R5]VpaurCyjЪ&ěTPVzAcQEa†-Hd%ṇK`+xƵs_EG+x.x|p r*N=}ތ 4;A>ͷUyfei˵C~Nv1EJTě ^t90$Wi,(пHx"8M*ZЊ02iM,u_xЍq8Rs YqvHq_r;帚Rj@ש`x+92 O`hn] ?ИV,ҥdCt1*!Jmg-ҐWJTW:ܐb`a(`)\iP ruKJ9&'' y"IH:c4~?.A<81KQt#u(ٌ,]@JJn=ܷ{B?Rts V eX~e220MbH(.WlZLB)@매Hyمċُ Īqa^_0.oDvNޜI~@~9_2r![ƈ -C̰gCu? Y Rᆥ] ^oD 27<"s|!V3Gc /UYt(D;yQ^ka)޲&O0@^]̯bYwhUV^{>gGr"ĵ4Iw"|.?S\N:wǽ wZ~$ccx[v#>3Ty̐jCsGǝO*I&꙯L&a-]YڴCNW؋Ib;y`t B'](!j# 2ߚu0=⹨3|-x%tq-ba#!lF%0MK]RPOGZ'HNrS#16x͒'3/,{N@6:G^rnRi9S4 bzgI͋P8aeC^;.w1pc)ɲ=TF%nW-W]1y@#^V̅OUDZ}'xRQ $AE3Bj+YXTs}xӻRӇz}JF\4=WK:wdhWXyT9xb'3#Z뎜z!70vowdC(LSc{kSj|UPb.̯vKΙ9 K\"w%LūDe&7yXOUSS{K%J'XJ_id2Èцv`YMj0!AMx&Ejy-R8Ie:q5$B$t}~F#KYۭ"K_!Uݓ=͔OatrfZ7;\yu+Ywz鱭V\]y|BCɞ-&o]ט`N,ԾDZ$XK7Y0w/)-9/}g],Z7X̕9kDV- [J2נaX!8>% uᖈ˗rSf`x-Zu ׎tp9'zulҸ\ƞ`]cݴ#~cNɲH&_-Gh}u?'KM ֯vW3P'Щ@u˲T#ոZ{磩8dcV_6ox F׸tWw@5~Ok~KBv Quwz1?0'[hWz5b+.~=w_LqD=.LZ*IѴ*~O{-:NEn GFZ}(%tޯ_v?m١iS.ؕD*."RU{D&L=|Ҳ53tqO2>nJY!jٲr2'Q. ?:z<_NSo*e^YؙvJv|RDžbc]b e`F׳V/ݥs "| h ms?ɳ͓1V38lԳGd/eixeV)E2C`vuFh>7ܽ@ y3DƉ7¬y"eia%L7><1ܛ1uF #EB4eL<$=n,&]ڣo.oiA?ӋeaUhPAltf9`BBg]\+kqh;AtY(6-zf5!׬쀋F =5x8֦1_[8 P}n,Y5id$]&%'^KWwRuhO0ש"(1;0FN4BkSDSMi[ Qs'=15˗N"'1%49G+ȱM5Dr[tjZ*eT>%9$N6]f<f~~dm=3yp2\;Tn-l,dh=+*fIjI_;<Y; JE}|`8DO W S.7Ђ'?Ϯp4QCtĬ9Bv /a5T-ؚ@~:HMu:h*ҍ9JBB%6d.\QAJa)(H!fx"tzH`@AS֝;tT3:Ӫ`<!87$ ."㔒*k\>h2/9К6Hmq<Qǃ߀4yDRlx?PΡ+[ޑLO\tzd pdKԑ!|Msf!!ʷlNr98^ EMdL&;@Yi}s,>0Uy> PUQbFB]F4R;uH ,ˇ wŕsD`=Ү^mP&5OyKtg /|33K뷂@gꇮJ{aOdC!SDgWܸL ˵`TFQE`"t>l%⨈ QdGdTY .Y"nԂ'1Dg^_yLD9I7#i+,-PsE&cb(`[CYҴޗVk ^x5V 4?{w U&z2x5e_;9\W &5.5 HL'HDS9 ]d;zY$ʝ{Z&"A]7$yD,5SNgUOj֩µ^5%=P%8;e "-S1L8*HYeSjC~_Z]`N%:?>q,wTDLBӽ0%yxmeظϭ3|rKq'YQ[2 ҍ ?ۻHbb5Y _-'"G$ HvG <wfLa²̨: MclZ4A@x-<\X'K,S hrwɭ )d^D!vxT]]ۘt6MS`0/v0N?xyVQ,VȯP)oV*$--x^1Gq̒֌@mIry *kMItfT& m c_:'|l \O Rwu }= &|{QkMtz6pF4]ΰ 4?i Y"{zZ(ĶA.Rrb~/f.$0.ΗAցmCФw2sѼ뾋 P{[`:u8~.N>qlKy endstream endobj 79 0 obj << /Producer (pdfTeX-1.40.16) /Creator (TeX) /CreationDate (D:20170316135314-05'00') /ModDate (D:20170316135314-05'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 12 0 obj << /Type /ObjStm /N 57 /First 438 /Length 2879 /Filter /FlateDecode >> stream xZ[s9~nmaR5UI @f&i/Nlgwdw0U& Z+0Ux UF`݅ t%OB;BڊBUP njwXt( 0L @@jq>ւﭰ@] Ę$?a)F'Z=pS-Šט$;!U0'hHvAaы@+" ޣJcJF8hEҐQ*l o(RHlC)E1X@wZi=;ӋE} s|z5;-/'‚Wy?IݻB>SXڡ)Y/S(mSȳPT΢o,+uIpH/Q(wl Fn\nXuL56b~NYk!%HRƏCCiWCJ QQF*Csd _r?@@MME{T(ô"CmNdieй0T<-*gl}$R+CA'bi28"#A8ȍJdi%HT&G=VUyw8rqc&ޭwubDis]TPDUE8" ,XOsYjRW =<:Ah3y6c=#=GK tcB\ːU#, UγM"$I+@ Bhq&_=0<*>-99 ?DџD>,Y.y}*Ҋ!ǨHzG@si*Dbϧ0T$\RE ѓB$DDr[-3R~^M4dBh`uć ؤ⽬< f5HX 2``]Va(5bvĘY' nn ]&(Aq>k5XXtv'x!#?GUήa3^7{<:fxX]#gD4:pgͷҽW)>r#)pHBcrԙWN[6vs^ɘ-wF5r6s+!hδ|a 8T[Mr1k9v~pvV6&ӹ>:8/h[Ÿ{ޛ'@.H"C{wm>^&{ZE};au9 g]?%+_#9䱬e}q2Sy&sy!rzQKyY9sY]şSy%;p NS˝ϟ<*=*1gJ*ٕcL+@1`^͠1rV/ԌF3o?yy,B3 ~(֍jlL =zj_x~9oo^=كX2@ew ne;Y{Eۗl/kRmVzRR˸'7eDkmyGEl4Rn#|'Gr|Z”+!˨dx2:GKO|&Ͼ^l|G?Mꏋ<1>;I U=dO>L!<\!,d1UMU>>|}>KW_.ğ!XW8a9o}O*>CI鴴ukAJ;vA[ړd$uTI=o]f9Q,k57U\]OB>,y۸^> ҴrʃpWٜ(ٚx2!nC\5Ļq%c8=&mO{)Ў]a]\mOӻշiW]mOgwhox%ܺ;79 :7|ˆ6eB@SQu_NS'ÆԮ!mo`CyB7enVCyR17 ީ~f̚T~M)JV;"Wd.ޱfFo"΋AmN%h~93Bc1=KFZ3 endstream endobj 80 0 obj << /Type /XRef /Index [0 81] /Size 81 /W [1 3 1] /Root 78 0 R /Info 79 0 R /ID [<1147C425BBD9DA95FAAD34FC2D2E33E4> <1147C425BBD9DA95FAAD34FC2D2E33E4>] /Length 230 /Filter /FlateDecode >> stream x%7NCAs`D]!z b+@,m %XBF#I$eY*:؁}8S¶u\>HV1v}ke1c> stream xYK6WHUYޏ|H\MRIqF%qBQL~} EЌe04~| ~?]Ǥ0zYmbacFzO/-N6˕X/](rU[n~Ӵu^zz _YAcdAYDնlwzXJ#bJjUsŖ : G[+8fJ۸J%4"+!(ʶq(^M:Y)- Us"+:Rp8R}?x~AEX?|Acg5M׬'0\ Ō$_{:Ⱥh^m>v`?DM'bsC3=~)R]&.'f i \`:v_?1T!eS*"pWq+@PT꫶>`M}́BrafdY'L ]b$h.gf+{#<xhv 6n_NN+aX{Tp 7$"s/ !6vS+I3 OP[ةgT=V?~0uoSp_1x9jOtd|T2.5z% JY5fNftV1ZR)CFsj54D8첾™Ǥ >/r l J狗31l,W1&aŠ~˰!1u3?ޕy?"3Fs Kf &ΰC: >nk-F G%Mcg/[I; >IBk4gDΜpF {6pfj\Yk>g/ɳP@jWE@zY̚$ gY@&B=S>UlT8̸np* -T<,t]9dJk׿qgyH浟9;hP[0Q@Ik9@9'>s&ø!T"MWRZʢD|T $¼ #"<-J%XV >-0i`uNQSj1{l,5o^>Cљs1 f4)Yש$)2|c?9DJ_(3@MaPX ͥҷF勉 pJ%$} $iu״)n^{DGICŐ']/)$enۜ@m0hFv+} +49rd0|bPKm6j3L7jc|I,B܊:ćK\(+ HLo}ޅC.FB<> &l߿gvl}VIzh*3|00 )_,[iuAl|Ҩb|#a,ǙOob?@P"f麡)UdzO .5\LlР=?s #%=QՑ~!tYLL6T¸TD]@sz1&D$2`g3g*$pMPy\g@`?^p6 )A}ax& Q}! endstream endobj 20 0 obj << /Length 1930 /Filter /FlateDecode >> stream xYݏ6 _Uբ+0`@lnwq}#E9tvݞ,SEREzaf3ǝ-fBf]6K`dzgrB2KEo-u@u t_l/ іwq"y՜B$"b= ZZ<㳅PhGj 69Ì >D55~E@gHHᜄ!Vd cFIJjM]8'umy˦vHPځdIo/*3RɁЈM~8zX;T2ʎ5ϰͫd=ND N+zo=5vqJV+ $F]Qweqcb*nm^7 }NP'YSU _4Kp<L&+mIa+0;{D`\B4HŴxVejP ?<ozUo#pt:q,=*t:{Og*i b?-OPJ5  k@(n ;k-qsV7:5aPayM:T0׍g=}2dJYGfIk|> .t8G1bIsK_n$ujWXvIyC CUʒ/d";s{W'/Dlořx1 r6bz Az$=R&I8QdأN/yzFV2e 8+cZb)V7Oyԉc3[5\ti>ylaY\eWQ~U^JqҨL-\R.@E0 #-P`C HvP;*'rۼ=dDtMUŒko𙒂*Z_hxK*.{DmNӲ~p_{ L Ąo -*P+^ ]`-R \ܲǫ:o#)jUdz#2%* f-U:_]zaG F[8!LB9I7oYpb=ߠ- _.D^ (" Uת;Kn.wSl1HI0ut ?1(4ӷgۀ뇷l=6o> stream x]۸}{O2D=4\k=hm9fWI&JzEŦFpgl#HUlnharɴ($~.5:z[ko?J\LeݩDEmSBGp.3?fh(QF Nx:eR[TOù+ndKBksw@92:xG$:7MEUP6 M,zX۝6=psѹykSТ91rؕ% XGu 9&]8'0űx*Qpm W20FڨWi/T"-;*l;8wfNBx ۭM#8 \Xt%|ւګ,/̍u?x8GsFMW}ٹP$saZ cvG>C!A"(n'`4}XD N2U3`u]G<],5l|)>c;ɅIl#1 "D|D>#z+ MHs1"&6rX7p#o&qѩ*7^⅂HF'`Ym|qˉX"r_C.vVx:K6ѰERaے :Zixo@p( w^"Vj3hr{d( -@A/xlqԐXQS_ ;  m )`w.¥ЙR"NJKeKK25ϰ} w6F}/ &yiLe F5?+?Lw P &fJ@0 q:e/=0YB\Rqmj?nCigĠo5XGpB nTvb}t3UKk(žQ%B%Їm89$] +ffb+^ۧrn/C*%E>/!8 jf}[w *N25T:8K/^* *)9ۢ;ޞ|%1 DoIJof:!Rwc1\I)TE߮id$FXKG6Z$E dr,*w^nqM#m^eo\0Y*Ο̷q;':h+*8\ `GX?4d:5@PM7>_Үmߤ\d `` )49?Ȋ sğm]8Y`¹z,de +XpfvOnoO+|sǔ`h@}>\ͧ:#{tcm#fO}(Fj~V È$l.r5i_''8jYb%X+k BI}.:opD[qY&`сշ5?nu*b!y 4:Dc75M\fӻ3oy ^ޮEPd0|́E*w9&:4(w7Ewr%W8Lڙ|4֛Pۥ`

!9,~q'{7Z/V,::WW' 2撩0SBy|{Be*j6Ctnƴfĵ- 907厀IIOqdxx:J]x.>Ęy5~8 #<4:zSS©h\_z@88RK@څX1w}ԨjpO˪Ĩ>3=I͗Fx?kxX\9Bz:ƑΨ 3D= 0  ލR肹v endstream endobj 27 0 obj << /Length 2317 /Filter /FlateDecode >> stream xZKϯrR\Mb $rLkݯ՞*N.#6U"U_Xx|yvq.33]v/fr\g?wҦߨ)ck".ko\*﫦.W8y[<_fsas<Ͷ/CdKǤFp"&\d QyPp&_ߧ ;ʦ\^:A2$fseeSyfs،I-aCɴQmrjMO}'L:ҏ3=BHOd>;u|Iig߂pؕ(tqμe ((|^GV3B$8;7̃`G.pv!LخzNBA<8QY溘fD=_vYo0-TܢժZljy%vL؀0p9 GCmQSaWD.+Zgqh"K8oY0i X47`Kc;]1zR4oh(i*2ppblӞp`ƌXBNqT6O(_5yM&ι6k0W}mS?ZN,♪)IA4;!O|`$R53Bp>G텶 dS}m 4*@ :0HlS?hzn6<kXohyN'bB@(>TWJAoFʻ^dV*Ӆ*ǟ^;d7@ΤbR)w|`W NB*7otV3$5/zϻ/3rU?`0UuAmŁ5h+(hLVFν !k%zX(I!W븵]̌$ + M ]-]oGFs&򾩟'y_h lC֠FTST~^bx7}Қ9HڝM 6l^SSJNHTeE })@ef0B3C\!Ԯ(%`s^u7UfҀPяzgYLHqI)VsX HR/HVөP@?͐r}H8!]Y_!oʮG[eC[Sb&u;)8a94t'L;9̩eHr Aʀ0șz۲t{"AYRO:|8(6*edva4ۇ^-j .ߣO'` ̛OR))!ehxc^F_5#qe.H'\'WIr PPL[gry_leȩh퇖6kSш{II\jWGGr?IӅ†2hzTƑa=G^\@+LZK;@hb7&o6)eyhkp !LGʈ%" ]odpĭ7!XEt~?6+ endstream endobj 30 0 obj << /Length 2425 /Filter /FlateDecode >> stream xZKo8WiMf1'H6ArnG緊dIVwg]"QdQ~*+*#X_FII/_rL|]\8/>ٜՌ522Ưbyf vU uӺɋUK_,+_x5e6g:.7y=Y|/ :v&J9D Ze<+L I07poP 38_L &%kT:)4: #(LJWԬpãLڙ 1DZ1`"t'P/h4Rߒh Z"#FJ-ޟ9n,Ъ0U zTߪ^DŽBQpYb2sУZ b"5 -w |T S,a$ihо uE¢*؄8kA 'd4,BįfΠ6d[)iN0K hM2ځ"QΦdiyUL6> !7O͂eerAҶ#%|z$́pӎ ĈЉk¸$̂@'% X }IxqƜE ]y,I龘A sHcԠJ2Q+eq[xRI=`=N841-IyIG&OZ~J@-Q8Do ~yJ=!J=QvDxpn+xiz_[K s8  6b^QTY5{}aD=tN't떏?|_̽¤(>ʯ@xM_\` jK|0$TM+{u XyQEY,sԹ:& J>r Kbר&2 ?UN)'F&!p2;_Sdj_YՁrRT&؝@S&zM߽gvgW'9_ gFζ,; ,! Lb,lO+90 ?}}a#-}0KR,l+ӓryb*X3g/}HIט9&Z>9 pȇ}3G@LT =1񞐶 `a%|Wׅ|?= wΈz&0! -΋eJ8BTJ3%ݟQ}p܆۴Z{co/FGl ao_TL9͟&%ǩmaut%AĘp4Dl߼ ? ^bZ] 5Pi׆v!рWi:dΉf(s7&T,Y%wX QVMWuX\TtS#F-nwl\nv2C2 IΏN&֕s!b+dށ-phy<$ XX˦r/l&k`Wg?0gVMη&67~]v! Bte~$\ٍ3ZazfMƽ}ZK!hd0~ |0Z6o }N\N BtrݜA*"]5~Ok_ >iZ|Qñ,4I+Щ},_9N:P7*)kqAs_EU󩿕.vYh/*87\E6n 5yzx;ׄEܶ'-uL cyqnPZ/U>3JR3KbYzi :,} MC +VHUՂ endstream endobj 34 0 obj << /Length 482 /Filter /FlateDecode >> stream xڅSn0+t$wp ua j/iLL"ϗ p88{Tnn1/ptqQ L8ZcD*Cqvƻ.|kX2et`0(K/(?+^aI8qpIk#xjhѶgX e>R >Xg'cwȀm(1EgRp'Z7; n3y1ϧ=!W+q~H.פ)5:$XX_˂I^28~a\͍@4NJuܛM;33#BMX36cP1ē'+ΧT\in0  w`t}7ˌC9 W#Gomi;럞kML@ FJB-oƤ K?WY&Z"I^׻'Ac?.K!yڸFbZ wh+*jiQ2f,E 6 endstream endobj 49 0 obj << /Length1 1439 /Length2 7314 /Length3 0 /Length 8283 /Filter /FlateDecode >> stream xڍT6  R =  13CR Rݍt#/zk}tla6`e+PВ7 p03@pf#0AB"1E P ;||"⼼~^^ apq"b à`w@`D8\ph` 3@Ut ap{i6N'#p-wm ָq_ }g EܻCmp}v&+_/p{q@0W AgʚH/$'mtF@3O@.x!@p+8wkV*\\P$w}8t< #Av۰uw1BjC8H//({x~'0vQ{uC8}SBl(ο`!^3{xug- o?#QS6)a^_.!a/OX r8:@u{d9;6잹`뿉n+ ?G+Rvwvg@g;~ `_Sc_+s_x rP{]# @ n{ќ!P xyGw] q?*wJ%(f{' Á8C|h b7w7q~OTHx`!ߏ{x! 8;~s_? pa PǪJ9jOa MT6.9g+dw/r}DJg 5un6pfGuUwbpnݺ;=h@mUgvs%%T*^|9U!{S<0<`9&c!؋p|$kz<k|_)R~D*SJg$c,;o)f| ?D/KdD·v&LiQ1PC҃4[IeyFmSj,0BrB H-~ -vCVvXJq.tRk-7yJc*v(_浟=WC5'W~._;qD)tmtjv9VY"DrS|+UO]"sA^ٚ0ЌuLf|+Y=$9֋R}k1ɝh5:D#.xC0S+^o=O1%͒X;8-U|*؛0h)Bo6S(fO氪v8QG[ؑ⣛hEOM>T#PG8.SI=v~QD:D\.g;V汮[QtK1`3ק,{ʊb*LFMN}OJ4~>%tLx4yDƈTEZeK2gP yJm; *+o\1uP?7k lXSZg A6uXQVJ<*XCG[;b(af1'on1w1ywEF,YhR83 0x~objWE3 h1[bR`J[%ٓtcO_~~ƩM27XQ"V)ΙCm+1\RN} Mץ,O eTUQ!;kK TP^.9y ͟?~ll)Z++HͪfZ1셏ӂ,BSF2cp&u T\EKvb%KuJ%r @Z[zE6\58`9y@B95)0aGcA@#65⻞-|1H}4-*7Hkts8mPV'!-{Ɋ1՜M'vI-[P2x;~:0=(Yv7_ݙcUWb8nYluyp#ȋڟ;V|}Vݮ9SK E_VZMfoQ9'˙$cԫ2zߦC˱ δ#DO[ͦ? _n/[\}4RG磯ZoBa7Ȯ6zsEQ^g,M0D5J/fe7Yv`6>c#4ՍTgMW>0 HWN2FWRhZvCt)Ɨ2\+ܘy yC;ܘj D M ̜N[_íUyU+J/\b|iW\~nf_%~tZ^Ź*cz\/uG#>?:X7R2spK+X!z'N- ak7mc]1A4_3?] PQ6ZŌeL_GCg_YD5Q.`qQU6W`_XEY2k:Fkl]?jng&r}=2+LN-b~F<*_x$EejcLGi`פ3}+zeE|fZdmEM֏!՚(Feba< jh\:ʳϋҕb|xc QR96cyu\R詨XabV FLo=SۨoY_A:I)C5|y. E:e\ld]S~Gj~8(d)X[ϨZpLL#Z|:RI;ٽ9n=BSԺ1R\"G{ 3j;>Ooo?U߽$[wZi1RPZ 3 +Vc͝SQ)  %\g3g0D<F8`Ca a L V8OXNn椾ud -pz+D_-qFwC l/k=ww l՝Afy:.QGon_RJꁹIO5l4 iM>SX*QHj&>+z\$.3v3~ vt7V2a0 TurQZ1w Xb<%(6jIM|65I E#c ' #Cab^½4T!OבiKcܯ jd cpt * NHөtT2eI)>')5Hic Ҙ}7h\5qʣ]r4YWl#xvA=+V-% ~ZN,©LpxW|Lƒ7 j& |X/6,oi'i}:0ז%,b)gX=%̹kRN2IeKuh W;xg72 j&*&מ*Pޱa? dT1'>qh._4~zGWSJ˗C0fi # vb-JK ֝";^飓Is΃\2UA7.ljX'2]O*N5gZpBsbF0r]I(pL%_-GGcx >:? YIL-w1ǔ^=p3iQH5pAaV`,')ig=]R\t8 AJ>IN06BSlex7^=+Ux Gs T;7@FAg\Mݟ$?S$nsP9V\\jS->R%p^G9_7=OQgH>OBf؛5Ǧ](21fBSDƴ/O8ZCRv\ 5wN':k4Z9^ I~ 6LayK)1i׿j$뀑 3idR͔Rn0~HH6Z^떛{A#*O|4bs;'5s`x]pMS*|49qnI4 4^ZR'qZolr_hx#.hqDr'U1u/꾸o5 @nj 575WbE?GD!;3+Py †dܕ[tx{)(UDlC] 6T=!}''dXo$$,J -цbaD5d墰s۸ZМO=*COs[aYYfEqL]Tp%`Y%-Tn b \,j`yV*VԜkڔFخI,տy[,ֺʔ?zgu4/ cwCNweJ;G9LqڠX]!}DpgVL^DW;٦D-aI׼#2 4SX"=\ ׿C(anm+[zo?ah?k7![T9T(T|{"D\KTnZӬvF0έȭF]'㜌%4.׵Z$+"twi_kfIMYs&)uHP"6O]<̖VZ$kbVgNV7僋4VET-8*2?֨3kDw V\܈+q&v\, hᝮ"v"yHG?Il&\*H'Y(*~t]B|7{c&tןî`>ST,}韔Lr30ey~ޙ6FM?.:vpg̓͜Q~@Jʯ~[ A1X3S\A?C8a;.}fn?;RU@D U@ 5ŴB8;["tOїQCPim+jhRl̟by/Rplyءm [N ݧBb4pWx E&4*k='O݊}pC(^JU|$(:3?5l[ -juƑ.OYEv6 {l0va>eqy8 ԉ%|Dy#!s2lPC^G~33L{͇1}}WDΎgbĆV!LS LՅ%2\41R鈣 펕4M4;w׊ I`>6Y 7i 0v`G ٷ5vi ,zˏ>H&68c9+o # sPy'9(Qͦ{{{U1=ch3ZH@Z!<2ƍea+I7z䜆P Pȴpze_ ?QqL* 4}a_be6=,sW׷ϊ<vVtSŭywj˟I[1{KHup w$ϖ7QH0cKWP3yŖ#==C tsNԃ-;thMЅ~u07YL.t]$2 *#O?,1A7bKJD,ٷ/>&-MNh? endstream endobj 51 0 obj << /Length1 1867 /Length2 11955 /Length3 0 /Length 13118 /Filter /FlateDecode >> stream xڍP- A ݵ&4NNAK$Ks̽_^uUwkoS5:)HΙ (`aagbaaC;ۀmGAv|ί6 k@`cca;L9{;Ͽh DmAtپv4 g*A+`ub|c-j 'dcdhLH Kӿn@j^S\Akw@d`0:+G!ݟ@33{[#l(K)09;3vm_@ 5O@*:_9ANLN`?fd1Kڙڂ윝'^݃kmgfod3c sfM; HV⯘W߶ g' 7/Y2@ >^1@>` p|o 09LAvHW5,_?gy+*?1_#)&fbd0qXYyܜ,Ń\Y; {辞ӿ)ڿߵ_ -tN/g?_\ll+ڂm^5 {O,O `VxX*#6߈70k^;hv^;xfA? +J?U`׿] Hx J%?+3ۿ!+3WfW?ܯTvsWc4W.`5^9[B@?^ɻ ^3<_x KHf.u窿ϻr!-ۛ[} n%vcNcZtBCH ܀܊& }XݑY&{:ji@kMPm{~2WmCZ(<#}K¨!` %Gƒ}]ڽ|e4t~WuK|fA@,ui3#)swٛ2xz$OE^zl1sklN݄Tz07XSJcB-H u9ȻG&F~LƚnS Q$ʭ.~f5.@rR󌪚̈́ [;~y|C+ yvH;MO$~4Y zgbB1[ZCDHcd8jIor=_b-M\iꍼh݆\'KRYރʛG]Er}TL\c$%z~~Q_)h"t}R 09"9uɝ )xTt8O1S哧!2Fn J 3֬ v턂ɫ.9&4jY\3nKK!jc&w8= R[o3|఺@YP%P_\Bg  eqG-D𶍌6v79q$k{fkPN|5\畏Yq+H|9 Nw!0ҏkI׎X![Ý۴!mw*uvQMpӬ~rBb ~ڬmht3܂XHQJnq/;)a#F^E@AƷڨbZSkݗ?Y:8~b6 >=60 K*;ҫ8]Vу=I\Os'> ZJv{ą*ݧ"s põqbǞgJa8kCК:iC(1.I#mRBc^oMe$Vyks/GrUOyhZ^$O6GՍMۨPdo=*.PDY1C&3HU08j-tÝ}jzTnd*؉n]~2`IF}"cϻ$5{*ҙ'}\/j?߶el-A4_KY\H4H;ޗ0Nuc稧Z/n)L~.Q k<(ב8lJ:^Vpg{^f%*IYNLqVrUΌ뙣,ne9s9z[q29G.oք1J(s%(zO( xHo'хc ~*VO% v};1?f7qÎ#rzEGnh4+4PW O=Ub#}C5[C. ウ~cOkroe8/5P:C@SWf\S\Zɀ3,rgW?DwwOzI]KZ"#n j9$d#gfmE.%Wͪ^tKcP!BmDe $"p0#]D‹iw-W'42 OSP;:j|Ey e6Mlf\ c}邢Vam'JEdew*1ѥۅǦGf23{ 9x}>Jqha(EJpS+ YaD{Qcy*ءgA~\zsOWi2TƂ&үA[e tBS1FxP%<>@C܇4aYz.SMOkM9h$&v:w&1UMQY#FI.uDWOǀίlZJN1~bA˖ї+T$ [WB9{aDW?S)d&jfslbc4ruMgmSUf*kq[wL6VCRV9* HmlCu_[,(V} ?&s3sT 3QGm%ȉ5Apfٍ&[1G>j#$Ώoڲ&VŪ{4e:N Vr@xau#>9Zh6oFTtȚ`JS#Dέ C_] IA9kRd uj7bFޒ *eҗp +6'gEdMq֜  rhMш7( X;\]/@HAg䡤!"(f UJʝA-DnL87F [Lh)l@iGMV_ "yOq1:I098}MF:UUdmڃ<ͷP j C!m2%Px {u+$wwG:g>Q _M>'RtVE۵f{jQѨ,Ii !?:;7ݖ=B ͙[sMGajCo;>'<ӕ9RL%s YL(XMDDŽ/9F֟i{V2.% }()Zz賸R:Ȟ#a=hi b.qn%6XһAsӸFI̓=6VAj63<ؾ48೔@}lړm%juUx#q^U|ւ$bu_er|3j,ESf z_k$";6#'r&X=Mt^ }rPa0~>f|YsI[2ÁTUԓ"o3iad4T ę?kCukhhФ([&K!VNj_eydJ8da>k*^h4FnAJI&C60ibJގ.Gx'MC}TXR]!׳s bvLQ  /IhX$̄Zӧ˅ MEC*f+]=>~-kXU>#Nk;GSzZe2GϣwÇR1R%Vi q{E79r>mc{t4V<'*_ x0K"t8" =lGN8+7ŀg:[q~Xn||]πH5 ~IX3A̮^咣8O /Q=<@.2d-)Tٍ<(~ Za+a cS%l;fͮw AxXo3i1|C#U<Ȭ N<dsqfH!> Mf N"+]vG$b9xԑwh(brb|ٿ Ջ\.+&d|Nj)*V FCm Y%'pNAY:G.ls/}3غ'(NT):CM \rʩL5; #Ϭ${~nJ֖iqG6 7r *˝G'M6f#f>& Nd/ ^c;wV5kr:ZI# r^D31F6q )޶PE7iPm:ϊu2vzCT8ńƘ8Q"- Ӟd5: te65 ֫Bi?~9\HdNp;te+7CwojEmOfn;ɴH}_տqk1"{g+9FިJ(smL>\T/<츋Ӝ*_Z4ï< ZOM1r.?sjW sU H:!QWr*+<2 |'J/> jCG\?TɱHD]wo>noBpg.!NO ,K¨-(n+ ]Ntݍ-ز[A>B׫[ps88^aH\VY !,1p׶hvW/*2KI\FXH#2cKQ&< ]ֵ^;%ZLo}V:;oJ9ڥ_l K]EuXfq_珊R6KvsNi33xp`r)nr1}6MdU߁\߼4!`%2 cɠxV6\daQȺ !e(=޽C}-AC?SiRgڽޅRH0}JjR OŔ9dNʓ3m.oat~mluW`cyʜR]}Zg !(#IN } %qZʨB0q0_?pq[+poNq&H'˶3&l\hǠk7t8ԉ@V7 n>}/L`)aøR lFA}GP:zx YT:ϡ j~ 5v(LeZ0<2T#_W#BՌ\cA[)=klĚӋ)wy/h`}s*zl=~SJn( jE6w/'Z{1_~lY87_0+9ȁ) Yؾ2pZ}w,>Q)PM4~LKFh\ 6'\ƕ@Kg*l]#?d[٬|MනEgMaUcQXl|^T4@ ,[]3W _MQ0s8%c*D|G+m8>f9VڅПU;||՝HFzq»_`Ӟ;_J!x,[!kC k.(t96 3-"}gE#71Չ8~TV 0O H(]G+EmZBJ,T2RlbhU-G9(5Iƌ|./ 4]4៺.o3"qNG}|X]9I@.!~2_/|N|-眱eTvFCEꀕ}L4ЦCqfel7+>aL;Dhi}ɳI/u[:\Hc9c+P^B'eBN_.VwuKP][*]WL@K0lKb܃rl Sni:xd3;%=/Z½QlM&BS"HXP9ۉ+\i=K`i\~o5iE,ez h 2(h')X/4 &0|}pNOmI:-ޖw!G'Y`Sq_VEaf =z>9ZǁҮ{ћ-6fS! g *PKg8b7ϙZb1 /iSrQ.}3vԛY0MtFR2J&A)*A BU ].]֬CpXC PYsl܀5"@;Cxw]@4&BӼ۸yILlUT}5.i( =/fL8l64eFسXr! ~x{D,"f [q16> udEj\x-yBֻpuF2N,&,Sp+>yYuA4GyڜH.zYAʁBIfq8w2J8p"݄u'Sލ Xv pAR8'/Kv'\FO݁6Kv>N` N S݂wȃ}[ucInCqS|u.6"-*'0WO>i+[V@r&[ 6Rhx{ojچ4a9DbaްKR84 o1۞QՔ`,tLGy#$iDTZ&X+cɥVzNtD~oI3OM9佈%A9qݫ]PIјTO}&\J L,aã);); 8/޵uMi7wnċ95mW6Eֲr"XM-a%))+a E0M']("d>ނK֋lTӨ*ʽT_vsLᔈˋ IY˾z0,˹s19ԈQUvr`^s"L1CaA b7ovp:$7 ͔s$ Љ8<)Xw:sT_Zp~LzG#!բYe+ivY%h]. 1x>o,pۈGK|Ǒofy_A|h3/tv|Gc]hcx%S~/{/7q(2o¥J!t ָp:SG.[;%{9"!SF 9Z\cMSwq~ҎLcv[ĸD؞Z\%;Z; 1֔#EkE:&ǷF:VfZ^u o@ , V4 8 -3-e >Ɂu=$p?JrrB¿]uv NQXIJmMeM掠Gr= endstream endobj 53 0 obj << /Length1 1573 /Length2 7316 /Length3 0 /Length 8354 /Filter /FlateDecode >> stream xڍwT6)ҡR )030 ݍH)%tH H4?sk}z֚{_^kh5uإ``y%Q3pqrpq`10BX `  8j0(@ pq dn+@`1<[}?  os#5 xt@0.l'NNwww  n#p l`0 lU2@S@F`C]M\V`8>:@GIOsr#19: hȫr <l "votB S䥴 C.._5rrsf9  E`OgP;5je +W'N=($G^o `-N /} N0'}`_5tpW;0gdR-͖elF{3.C MpzY.Cu:N=&G24'Af찫P7Z7D"de,<@_h䶠 nWSm`v&zب`#aSkPA>7z0효7"_Ke e0Mʒ<(=  !~X.x" InJ/bbr5"B!icaK.(=SQ(DʦMn;d<2N3e8RA2O3W2dR{rB^ 8UyХt4 IxH+yVx&7)l U,pYb(9a:kҳЖ-"dņjsxĀ<6O@EWntè6+T C Aov0>2̪vI%L{~fdC.{Ue!.T۳fSG-ٜLYڐE:xy&SLIEw^/.~m{IMtYp>Gȩo&wDtHDO&͊c-B*C*|JBu溿s0OK~ciH}KCzL[o-vB bU =_Chٞ.db[-D^$<%쭙BiTQfYՕ _ վTx^ȀgU߰d%<#pYC$y pqdY^cSDOuWIb(ۡfg%* [%?j7AsO¨ a';ɑ~aH?h1rČNa^iO2;r*FK#|Lq!*v_2ZNgZ(W(AO_v]V`E>l`a~l8;6}2@ ʬTQ'^[G}գ2GYl;8ѢX "-b |OMurwmP8¥I5T3l?E*&puI _=lIR 6Z9 tP쵇IdӐ DwRĪc%-A-3hrMM=aR)j@<''ݏߗv.駆jŻr ENowOW1%-:A^Rn}Q PBiR%9y( ӟҞ wT/ ~;>7I-$~N[_(m'(Uz]j$[tacڊ"MB]o {D!.ʜ۽#eR[8!2xQIZh ҤF6:qOMg f~G@vf#?Fa#ͺgT9E& `[0±xMj5*rNQdNoY2ֺF%Рb_G7.X!RYXeUs/}yR4:}Ѱ3ܞln" 2r^8Z=V v~@#Jնasm7*x͖$z ȴw{ MEL tWD+ %m j$]vI6E\}k}>rlQQ]3xe|{[Kt(1Lql, (L<*_q(e4 ըZFԾvMlsʮtQ8Tf6Y(z)1xQQ!Z6xogI(3g봧qYfd#D_:Íl*bk{sFnc0Zmlف2I-:X[aH8 ~Dl1Om=$-㦯= J<=Lm8"<<}}$0XԋM,%*.}|ƾ4,XbT:{S8A1|m''>/^~11Ux m9mHVLdP[EjtxZEg0+|)VVޅs@ּܫK 5txrfxǣ_EGmQf5߰;wZixXAE&USR{ YKpEV%12_aNg&^Ѐ6C5g/AysΏZѳRM.?yӒݼ7>ʬw-6rr|Kx>,r=䵘ꀆ/KE"l 7zġ2Oؚ(v0 ljгyNf'3Teh5$ɉ}iU\f຤,\>Gw]^`̀!(hY$&dRzpd&|ʄ Řף&ίNb s˟c2ZI;ۑo*]+OΠiXVk%C,76W|dIy_`RD̴32=tS37 NIU{XU^FY-W>eG K/ K!w Lt *!2>?ͨ7VQvݑdS?'F bu>So\Pc.>фYUrbI-5T sO9 8b" zl,fR~ aF\R$#T^*e\)V] )L@z ==>%g"։eNiISKh14varx3Gu1OM[f6A7p,h=n|h2CT%jz=JnE;(5z{yi`@Wf]`Vi⥓OڶFZ/֢ELO~oGl~Fi(6ӟ M!e20$F(`kqweOlFQIĪ~Z4- rZXVoRI%W$Ω倢+8b)s47hXs@6x]ayuEDiP5D1mX;P|Ҡ\tS{oh51H񂳗6UnJ*nlq(R.m[s ފ <~MJqL\8ŷ!}|ՑCy-s(Ӿ)/;T_/ЧO8}IY#k(^#xr6'&ϥd6l¯^AFxg|+"41`f+ʸm(mڇsxFȟCd&}T6TYP7N@sёk<8w蟏gîTHQRO7 ʊ@: `#%Ax˚o,h򁵐2?^n֗=< 'B*XO V^O?59Xt pH w7}y?|AIVG3g =._~vx1*d{Յ4^Sz` @0D*5vbv -p\$G1W\]zx_NsK|oo IJ`=Fcw{~\ή[AyÇD`jug? '3TniRB V^?f"-5382mFˋL݈I|XKz mǶpju( &΋Znym 5%=/Exڟ2A62vneWe m>A9qrX$_㹔\;"^-j7jTJn)GF8]8H!;?ںKh%z .L : NTq-S:oݍ+ͣn||+"vni~:sT%ӝ;RnnuTT nޘا*+;7qD#Y Vl*6yhoAu$-ieJ!k^~U2g;Hu53o,dq!1v9MaB0JlU@xhd+(]3ڕ ZAȖt2-F@_N=j`நƛv qIxڋ"-4sc }(egt g-mxu|ė#J8~-;G>L"Tn钥dSDmںѥxX ٱAbr$e??n}5zKFa 6>#!%SD P +a4D}k"d (aQjg5kqyZi<^^$1{wa}6ǓCNT%JYxts1XO) 8ҿZ%dJΆaH+*GxYV/.ޝT= OuBij1aM)֖YP4ieG &)r{D;yiF7H G$X),=b"%15I86.YO!7Om^]يaI r6M<'5^=xwTK\eUܨƖE ]^M0"0u9+H?R?7FlL3//{{-4thX tv=xے ̦2gL[[Rt 'S<:vvouS?z .FK'k=(,<[v}ZBL5SQ  TS Kg;R(X]ouӕDG׎ˇw]ݐ_Sn:绲Ā mğ7rP\~n\SKxdef }NG̖M,G4D@xec꾄"fPH: pLԁR ;fo"lѾ#G8gH]+Gj=Ƥ: &eG@~X0;Hc AVV |u~~\޺{Y U,Y ask! zVV'dx&i *w[8Mg1UU=Aj_mlx2#3CƟrEI/Hs[c> stream xڍT]6tJt --0P3ݭ4- HtHHHOYk\{_{Ϲf~LK n U;!xA9 xq`Hv\f+ $/ ɃD @ D(@hpTNPW\f98fc%# uAN 0x#ЅC`P`E"@7ѕb# !m:PW; e&Wkܸ=[]5`}p;@WE:IV p<g1D8RV6}̄OzfJw.\iٮ>a}-dk:%-1bT6%`3j>;y@2ՠ'ajDT/7T?;ܭQ۞֤+peY39Y8c 25Nmד,^ m |NGKl>Udt)2\GRQwuIp\=\5UpUz; |%~ gtEQpE1TίFU[j澽: "oGu/ Eh"1ʟ=3C;lK Tw5Mtr䓵6>k^ג&z4 T{0d;UlIkN d-~{D6H>j,Ɲwwp?ei (Qכd~Xm_(j%.d>=j|W9,y*w{MBQZU!61x,;[Tq%l=B , ?랣y]>Jmg#ArMXO}[N:+]qPzvToߔdCwˁLpݗˮ|_4L=܊ 7\yAp?zs1>Gz#֘r+}'vY"qY*^:o\ z4ޠ;3Ș\ō˄pڶhiSy]< ͍@n=ic z؋YHw5Ja#a|b4uA}2kS|qJ59.䯏4Z>_y2"a2ҀhxL=(n4sq1PAd5w`BY,kB`3;O.ܽm+Ey}r듴EtEј57Wee(E J^Z{IUZiN%h+zf* ԟ9|t^ɥ­ VVֳ3_[&'U2{5Uzvx59Kel6Q]brRۃrɼFjIRZ/[SJjM1U%9W5ibtpxKIڃF}H-pVGa'Aq.푯u+D&+Z4+g93Ɓ!rMM]//s?Gnoc4y##t4{Y1zyh$j{N=I<J;EU-huQyy1E4g[o>ayGF\ȭ:^7_BP"pu<,36QrPTvi޼H?2)k С_7u˨]_>%]:W~un]OGϫ|'RpzYZB6 ƱfE- rH.!l`R(OTTsDa[&_*è@.l2@̞OnEErWW`XI}uf+ Gr2BՌS;!pB<Ƭ-n58COc懌ΚjS~%&!"=[7 \yK[@!6қ6x׍Fj[i)>uDIveKqHJE5i'ipi$^wWS*b\ TaIwz֫~u|Cәh92s;~w+s$`DbS!A5يK}h+dtkbX׼P?GìmFUQoW WKٛiR$v jjbdW(V‡1K&Jt…LKGf|3N֎0޹wŴI\- N6o pvP)VuI9t5AHIoQ(Vb&Bo8Lr ܥxRJ6'$]gQX ? 6lFFg~BCТWo,8sӤvWZ( ^\ִˏԢ"LXL͂ W.OBpb[' KϕnA i8(K%Bљ}6NBSvbj&?w[j3jz!oVc Co $xI9==*Q%??~Φy#0=g[ʈ&L3 D4o%S-_ o9*uF'R[lU7 {ygщХ릘@r}zݡw$LN_ͤihSJPi9b>$ -p<U/3BN Oo1޽^Ž[ !.%剗.,GbsD] ae vpqC0 HlzIw} bbvgTxxǧ#dBMʟ/O(x][CHzz6!3!>@'q•K3_Q7$}3 `zB=#e&˨GQO/oDE+H5ZKqcMeBN:K8&Ɛ9^d4jk)m/\|j D' z9ĨYwWTBSEJ/sdckv$ZYF D3Mw9$D_bz\>&.rLK Hj>yT L>ϣgHrU3_I ,Zx[oUFt=C<_Rx-jX6k!, ($+,C uK5H=C-pZL߉_^z3QcW Ҷ}W[`6òTm큦m_XIf%!KHZl%v O:+=_Fl^ QnQ:y* [zwIqZqdzRF n?1]Rxԯz xy)"v+s6b?r ֺyg6p`_SYm@U8D^%% Lt38`z%EJ4btk*WL]6uRev8Im/+G$k^>jV=%?ağR1{9y: 5|-9Cut#=\<+ӝmlAb*vI$>uA2fWX0uEըJS%|pFTaס/&F0Wˎ|MWmlˡd&ЬbZ{"pWW>'/j{((mj.;[F31xfbpF S&00l+IwSYJcf:(ӿ ?Ug{gn0no-C2NØN{u\%QUk-2Do<¯WŁ8yx?´\]VE@ mw]r|]'fo8VeViMb Vzp0/w*])Pl}>VirQ,WT稜O_?Nm$xm ca~hω0vVxyc`Nd%#)ckmQtMBoG!"q,-1UdnM;Rv ~=,4g53[[S;#GN_8ON-|ջ>KF;d ,=uHcM`I ?cC{edOU|]ራS3x 8㆙ѫdMܥW(E4C"Hc0D ,Ay3㐶7d2嶐xqNCDGv$F2 6[g\۰oc[hs"MsL1 fH[܇ D t+MU,o#Zĩ͢xCɋ^S=,z a9ǻX ^"QIK_rG6gA3P` օL ^t/?0 K>8ا3Rx#o ɓSt̺He kdO,']9K%(ayT%lؚѥCOUBK/ Ũɜ1x4h{bMTnwcncr@ޘϝ?L1Jkd_ ÎhUGiI7rkPV9iTիiѩLZr$r(ofmnzHj*FoJc<qʷ7*䈠_~9P53 +W%rp:IR-#|iܭU6O-d\XbkYuȷ5&JZ i]q~i!XYQ!ːxEƋdžMy?}" xS _IA/wMW/ LK뉢ܠG('?|iQiO2%|bek=Xk Q]iԄiSuV?j3FETaKg\16EgҎY)߫Ҹ?7PE1 6 *r|ih#VjCF3oMPQSդP4xW ߏgO? X R󝽤}=#ŷu.fD:mlƲʏ3Z^q`+(t>; Ifl.LODk֌{z眩I|l: Ci <J@oJ>),̢(1rGWDu.i ņn;8Č1ݯp֗Ǝ/Kv>(?hC o=(vk Oi. 'm=:3Y3 +}h)MX;hcl36d_,ˊ(T;LY/{\;0/s3i&ރ5C6fQqV~wN5J.p 4 V*v~,:fBDLT81@i%ܲkEW[+_k ?4&  Nd:c>m2 *š$OթPEږשU2D4_vqgdkn1tldЯMx MRpq:S7}XT$"KF'lȜJRY%mig~NY9N:Cx5mАK+i΂^w:AczR  0{ q0k xs}Hߜ$-mq4#y$`ꪀWv"vtE!dbG[2Le{~>&u§8FFTw<FV]<7ls%* V8tS.O11x~pDcإ|_3G0B#YedvVP9n &uɖv֝/}wSg2OxTO7p^Ey! &8k"[ ȰSs$~H򩥉[CRiNOgFKz(~œer fWߨ^JoϳWƈuxvp<׭ƃAaD D1Ss֢M#aG(%ox"􎣳])=X*zyo> stream xڍtT]6! z9tIww  1)twIt!-Y랳>{s]Z]MnÐl vN!@JEEAf¦ӆ" t!N(&)'y#oq*pl_$H] ;AtRpw'5v-Fs&$(;8A0@hP%EH!WWWv=d% Bր&qrXT?cP v;9pY@-e@V`:w~'`;fXB 2; a`;6ځn;vC;Av׈ܞ B no!ؿ:Aoݝ0Ͽ K(:03DA/ȭ o r s pGfn񫼶w};a{". ?-l#3w[7}{NP79-@߿WƷ_%EIe i?;&) w<ٸx6.^Nq QCj\%nղ_ `KL?oi f'/UX :3?a=/-k PP=ժ@,U@o e3A,ԡHs?5;( G@=.Y%q6keCn>d`p_NN`w۫xOЭB- n pvf/_ppm?Z2wvr7na@ ؟6ՁMgUlkD0>Bvˌ,JOU*}aӪ*x0}Z֝ԉ8SJ)w(z Qԩ YXukdsP$˯ԤVURP&Y)C}tJѫ$%s׮}s]T~.k?# e(y0+ur2 ]S<䈥idSkbIĿ#5ԷI{eMߜ-t 9Abi!2/~:d`3NH#cK벢A p sC6v,qv9'{9P[FwArK5p*LO9+eh|6 guB HHl>"J,]pʇ+!G%D_M L3LI0yVzwߟ<.@ |ٲ"L!Z'b VٓI'6mtP+D(î=a# !I8Z[MJp nƜaLBԩĕ1u34K/s%XC$o}ã{{1Zf7U򻫮k5⛟FX&U2MK=6i4m ΢,O3v&yh5YQQyV\/p)ԞدmySXQDJ!~9>%!x28.ܱ3~OGMZ!J\:e4؛]aEQ"Wuշd Vq,fJ Uf*Hb_B_"XYʷ% 4xzi 4MOst^0]⊝bѠ( F`,4"6މ=›9`Nyҏ`3D̶wt rR pDAr3Uߵ27{4!bYA%ҮhK9]Ԫ"*˴JZS)lD "V&BCɄɜbbcn.Yr%r?̾yCiYJwE, 'lvB}|PJSM>ʄCa3ܜNہGkaxazBX{*w=lCQ߅)掂^جm@X*Vq߬i?xtҞ aIxy4ǂ,RȬ4"m1$H;rQR|@k\'ﵠB̄7_*^ڕ˲Z^zJ/ v߾y-4.ˣ3yhLLP3("Z#}/L}gWOj3ٽ9<ɍbH+Ӂ͋N|ZfЋӄ/JE 3H=S?NfERAΪOK LjI{|l{^r3a&?m=jg0|l$nzi9ԡD!S֝|r%/1dsmk>d$Uz\5W8:]~LHf]FweG{ֶ:Ǒyt| qImJD"PHwR7PPM-cLF5tEӅlAX㮼}@Vv]=~QbKiL,P\0CFuiGۃ}_  R},hi{91{y1-D_ۦ5 ýҢwvŬP Bp""p!Y'&C?'*1H_Mf)u>L[-8 8 #¾DE/ /\> FDZ*}6/)ʁFD>żfh+h(RT|f5qbQT})F,& 2ְ  b}v!s~ =d,_^ t}]pJ6„'1h] O5("O:f~|Özjs)LzA% =WKʃ_hξ&͖S^x.0bo:Dc7zbOXVozdtNn3-,~7E f=%zPxN="2>ʀ t "8t2#lYTYƤ ^SM {TEډxZBƏ,O''TÍi}D]eUpK%D2{;$4(?3XiF`s)fm[ȭYHK<XgNXQBSsH#%~Fur1KHnO#Ns:U};56h|/D]B3dtU!w2(o9Dz97(Ws掂&9'&}띛NFtM!A ,HXwi @=QN/KgZBrH4K/2fV""tF0][qK,H<[o(~N8P|sQ.'g}v|]˳*vk=á1[̀Ԗ \]BO0X|k1[:[YmbJ3Ӳm'QK>/R{5Z<5$[07kyXF<2u`:ZA/Nb1~ 'Skc?i=~)TrżNQz1:uSb O>ZI__! e+9Gm|L{f:%@A䐀Y@-˚;LlNZ/W,̝p'/ f4s0& q7G2A+ZV}kq pbRޥzg wƢ~1=H"4tɖ'$UJ 63q$xf/Νj$̈NV>%A'h,t&wdB]8ړ|DnA\JclINݏmlUYocպ5Z↏$¹(:"v0*Gc;seUf(8+Xg[`ތt2o>\MXBd>^.ee^b^?{؋;[E0W u'gآ8k΍GR`BpՆ[;ుj"gdDiu$Pi?o |qΈ {J6O'߾0ωRh>:jx)`hmcK2J WDw.0Y9k@yZ")_sfFJ*SԅW#T ɢ˳VOT©Dw'<{7mm[xvBĜ 0Ƕ9M$Qh SfV$;ݮAO(R' h-T 8F.,r1Zv~bkГ<%Qb %Ov3as9*th2@NO(ؖh|j''񱣯W_F^Ma۔o~= `(PMYQhTR!?+Mx)뀥] CF;q8IM7sq ٻZDžW m\V㍄7@^NRB[)L 81΢&35hL/0F\YqB U<B=<1ĀytLn:CS9\t?{QS^v*ȤmgQ% I:~9Ts'>R c+ʯZy~³Td$jց2_FdDnФF1z>i'=7*r_Tϻځ^㕖 DQ~4YXNn xPd!.\[I^|`m˧A!3kXr~zmXJB@ ֡QeE0?_X)UCzqtb92Fex31kbtIr} /rRGçӴ!(!1v8` ob-iGo"{l=ɐ~_-U1_61:up?J!eAGKЃ;4Q۰&! YyɎ|Q!Gv?Gw;_spԳ7'48i5g}AHFԗ3^/n3B~v%;;o·gL-Udq9^g kxs8Xք߂5^=V,[ CچFEP7#'(e.jA3X&SM>S}W)}L*_TȎwd_ogrک[2Iז@,O^U2 ⿤{vXHt9b?(O@ҋWr)+xRPΛ}<ȶiz5Lߴ9ٸ89}!v*W`qЫd+n%41 Ӣ|J=I@܋f2y(Ws+,{aSѲTMOb\3c'l6`kgvaz|WƎ;;Nv*f骇tܥRL=/&L^?zVacQux}ޑɄ^Jb&a[4.<5K,Za|PUK D6$yen2GuX\עYZk楛B?(*PkT,<[Y =:s#{wp-hQ{!L+-z;5Z_b>Ť?V9*>ٸԉ_P ToHhyӔ-nE'A} 0AɾuW_=\7@ў:ζXQ|Ճ)STU_Jl악3qO92Ggx$(M* TGh=3`~S?\l|x^8">_zah/N|i+q#/m{4aYz&*Gn${Y蕮N2rW,w# XICXg-Xyu[[P.5x/(XelQMș񌅺n1e So1]Vct8K3jѭ5QޕmVnzZB;] \2O1Z>X^, [v(Ü[v#?䧂"]T~2/> stream xڌPm"]Ӹ;-݂[ t曙d{Ω~~)HDMn ,̼1Uf33#33+<bx M_b.@7L duX8yYx<1ttxX@Wx 1G'okK+7P<h,<<\r]L &nV@{PF3;5BP[921yzz2ػ2:X <ݬ@Wa=)V֮-0 8iBvR:s#+cc5Z5֡mcj0 F?qXՆiBef $< XYXBұ: j519p06?U!4"D`B+aCU6 ѯD_H~2 !DzW̬ 5>EG]˕b;OtзPN7ӾR\+6 袯T*|Mj:lF*ob{?eOx<0~׬J(Q!98e>i  3?ٻ5:u|HU +U *wUʒ(_3%P oKDRxڟ/*[S;[3X/$}ԣ@ @{If3ѦO_Mgl>}r_: vG\]2%ɗm긘W"9Kwd0=l̘3Ҁ*ܯeto+)6{>yOĉM_1okuɷŅ4=s,xI8gX7P|g{ߨs,$"\;-l s)1*2DIo#,J#p [5/tg#~‚ n[5yҿ@(T#vIYp!_硒8Շ꩗ng+ŧ%tr& ٲ=uKy?87a6::MS L('3ᢔ&ۡ< e "^"M5Qy#jb"%yv|:W$?Ƃeq:~@VO}`ua*(稀`J܃}pTShsoO +rVĔ&8͛,k EA˜Ԉ˖}[ld 4]c 頬`=ݪh(&MһM k\e=]c=y'=惼ޕhkFR؀vZhԞ#),Θrd$l Oz[cWcc4n mXGKZM[Jh"_1ǹJ9ȯWցMvx>Eּǖkx>5\*DÎ[w60j>JP3KMtbm8C$TڪSu\'9;ɋh82 ;/ ( ' Xjd',u'T9^1~4C_Mbvt;5F~VBcjI>뤝{$Y]9\,81+hh?'# 6%cr YDBSa8 Psy6((HU-'0xW5^ ;6\#<5Cn BPhۄMd1+ Vf:JCCѬmF0ezzk`OqXP4e:T`y!l#7&u"$?0HJCLg^Ww,ٶs>JUSY(,kki?ߵ "-}#U~N 6zl;lLޓm(Bn 6$'_F٠ Sy!qpJN\ImsfHYLĩxu" X[ن9_ c6?;zN*—FEsbhK'CU3%[H㼶9NOuޛ.[7ifCt$/[yOun4GּׅJF@SBIW9hlZa)ި>9Һ`DHs>8;E)[pv1e?<`3,ZL }mWe<˹} gDVZ~&J.FԹ]T7bb a$вR ō)n u'~j ~=!藸4ݑE%9S£BG tY׻KJ6 m4kڠtSB;us"2-@Cu=&^IuD,R10au*mOˉVP=X|w2o62f-~VD>{I]:t=/3ó#,}-vk~1pcaR#/JCXd0 * >qV3/ rZf}RU,K6uSkە4IQ(!eO4W1xwm:6`r]:?AJq%EBU?t}\CK嗛0bx,+E.WXpW>5))>9G%Yo+ƀ6/ !3;F ŮMQ5ЁOC+ù,OO MF`7hqе'4X1q)ᆘ$.uC:>ee]2Del>Q^brhpli*N׋TKQco>40%qɺ:'5B@kIr]B!Ah^9:V ~#H+]ө%cdcNa`O߈ay\R5||>s(_`GUԝTU*bK_8GwIdտ?CkpۜZ b:Rk@k( !H.2H="H%TgSXy`h5" .&ͦw?t@?l-F:Rf]zT%),tz\o6(.'̎pC@#X2)zDEx(܉H#bXqܤM^ D@~4B- K1E;cdo?j6܆W?v({i0>溷t CȩRjYO*ɖjmfU[-UikՖ3. KY"`toBD?~: lV)yܯf"NV⩃!-gPUX@gVK1^%Dfz +]6˗@,p!{\M,?;'@b'0r^1$rpUK_7VV; j:ICS! /ސgX;!„o!Ϫ#K͹/ueא&I|Yl^0涮1w&E܎-ZaH䎊pO>o)L*Gz{C ev"j$F_@V.E4Ș9?!}*7ùȩW_Iڗ׋5Cdč\%*\ ˏRbC; 1 ňK"&hE(gE#RmsDaI76IP,[ ofjg*R  eg,Bn*lw~a18eԈBBoٯ k[p~nɺQlmX'\݄˞bm_8TU<iϐZyų1 LyW5?wT=@/DdZk >^_֪٭0[03#:z U@! v=A_lf]W1[^evPkMe9Zyetp_LR&ϝ=S%4qZ:xҖ,ƒN'XrڌЬG r|-ow]A-p0qMuٳ.n +K+n2 :au8SK%V6"!r ʦ864d_=|Pr42f[ʹQ므^TP%-zCβ_*Q*[Qn)$->?(8 _o+S8 H5!K:V ͊_Xdjs#"1dvkdl}V[ٞmMs8R eݾH~^5P<MQwbϡͣuHO}]\KBvR7vD )RmsZ>3E 1*RΏSӅP%M}pRa>\1l9 )ܸ?6. eD8׀w ؿ:Xt9epFT)@M`^{UE482_\| nfp4@S>^~A\3UNJdMMokM&MvVad}+gPdxVw/wc3| e϶S'-]S҇뗅?D]9ˬ*e.Sfwxp w}Uwi])}UtuD;}Jb1jqols2`O3xvz_\C"P+5,\OQg iI^'Q;0o߷-qW56eZXY#nMʭ_^y~ۊ9c_kG 6 y? #I4U[ϖ݊f'PoOQW+g-X.Ix JֈU1P6Nҭ.:,uD@(*&&i&4x9 V l,?Pyq`/uyiPP?8~iqώaȋhTQe`[p'Jq$*zb˯FtunJD+eE[]31=kprbW٦{?3r SJ }bK‡;"DyUkO}x{-,O":[@4+Ҋ)Euv㶏Z.m7kFU$tɭ?Aү!!c&ujPʕ뙎Ϸs ,8–#yT7͆#,}kWǶ+y?sյq=AOCOBtb+ N5Vײ6Ot6ŜRv*6O ߜCE/飫f4|촐e u9: g$ d1?AYTNAcj~GjaK9 bXahO rqBj^wgfo>A$ $ᒿBkQJ". ݜvNP`}=)&2h讱5P^̷-¸B5e WM#̗C,WoZ9jk5)]-Λ2=?\(Vە4rb6Z4s!䍗UIŔ\NGYw;'-O=\aT>;C;oy: {]1=wN(s/ׇ?ȀTw@RlU{8 o[ L9)n) "MW0tYʼ6UTZy"Q,qqt1R7ͪ9Dy!lNH ID7߿ gY992dŷ'lYWT\e đopxoFI8ߪ\R{d11^M§ue[?Xri_sCDNg>sH„U7׃/^.y;&Zwc (iMAHvE(rP!VH87s/4%?\C0amb&xXSJ,jDy:0]L?Qjgڐ]Ԫ$ZGɛ26rCGA%rՊK_lń>&*!و)\S15VwbJlR}ZYxyޛL3j@w_,f!~oY $T{μb 9~/lW`#:fǰqA%b˛{>lcTQ5 l>>+%cexV=QFWҲ8LBOG*.zm\.1 vń_J,NJ"8eWcbj'e YBv/9T3Ov[-"?[=?R族MWF(E7hTPP%O%`4&l$: ./hpu͘u#V]Sm!p*~4 DPmݘ h6C_v@>>ފOp}3PV76ڒ{[gqDn ?qgZص8Tg^1! 0ڧjaSN|7,ݚЗfHn^2AO@Zzt]{K7₼: 0ܮ 0qm]«f*#ރֺx<,RAFRtqۓ=?£#T6B==9Sn=WXd͢pZ؛n{t DȥkeAf* 1zUz)({ij^KWrH"%aukK}ÇivBTgCpvGkE^inUn8QXJ*<F @sV;+,qB!Kt;W|V=ڤ(].J(95Tד̟EM#Oهp R|H61~~vpLkiԨ/u{-8.m:'4#K \w3YEߕq6[PldSqL';CQ!ojL(+P o'ѓ+ Sg7"֠|2i_nnRgt/D?]"rLeyk=dV`!{\0[2zvUG3ulZ\(ea\mRX?ܝŃ\`Zs-! 1Dx\! ]8aÀx8jmCs$BRikkHǃ3aG͊ԥ ZM ."8bkp,OmB'Jܙa]c{\KjF6\sI@}^tfJ"}+`zhCdtyL+ ]S%K&56r(X<33lfNlV8׈@; >^bnIj^*Laz G Mk>Q guK5^QH WT"Gm*Dأ{xVx ' 6;,Jg슳GŎ7gI>1'VWlolcJ($#j2*j&lŢVLXܜV]bWZ7C QC">[IS3_n3*Y,ÉrQ9i@)U"+*D28H-"cKm+:)f_FC#1ߒ:j"C\!.[ޗ{dv%[4PXMp ]2F6oF ysg7'b]v{tqG<4s~w_ne"3.Ą묈 ;i˿v Elآkw;m8EI'wv#s]_;^i^'V!;Ng7sP{ )~u+"rqC2ƹ9[ilآ/qn`^Ma!=h+4Ѭi}q[ pk鈘'9&e( (\hmJ2Vǚ 7:aOZoD?XEbq@wwJd[}]HV?u* JkLL{YP4,10>-{s1OUIehBmEDBXIm$pɡN3^fbgb_*q 2ZX0|Mq P`_s9{0EF9o20ݎž~pCJmQ!~QqMY[4tʛ?u+ OI6U!0rIu^vz.i@)XbVck6?ٚڡubl P Eva?gz)П]`Zܲm{јYITc蔌b79Un.bLZ+1hli*grpENޯ,aon/j U @1>4;G:`I_*=®PV@[ƍԵV4_Eڠ~7gB$HvֈxED!KzOg `]eFSp,[eᭃ>P6-U֤ rU:69y=MO%FD) l)ͧ]ީ;.ݦM2-BD0GK.*ߎs=!5 r3/΋ W:r0D\PBliFIaD>\*|dœV5Ji8ö >(a8oz4}xY}.To !xOHQN6u'W3rW0_LP,kK~ٟ^EUF25phWo_shm+wyi*G*bDNu{ vrST9徧blv(V z %ڔ=h%T֩eo>$x9+4py,&cU xKxBם4.Bƥ,'.0G=y4)S) 4x8^=@Ϟ%w61RMO%lHs;:i/Q̆b'?y.[k#:8ϫe!gC~ EKo[o*[TP3 R)ʏtp`H:w"8i“gR7A1 A[\sʡ`4+p+cC枝!=Ʀ G'=w%L~ÿ{c]͇d |:AgȁgRZ IlI1}wr&BLoa?Bbz{tf)N<sɂ~ H^&s|w%0LfyCЇE$R, 84ZPsP&sk~JB' kyA*LX+EEw5\&e]+6#OOuBpswb=حk#zp ی< Q>+1&y w'hbHt\ª1Ҥ3E^.~;RJeV0cU.i$N*~>-Oߌ);r9խ|Iʑ>ۋ3KcR,gR4Ni6h^u%d.g5Om].{g1b,nؐemкJsq5nF*~'M 4"RRpȠ0}fk k\gIz^Rڕ&(EV\oHs{s &<b e.TKh,[_wzgo9WQn;BU.03n"KҶ1IabNS?تڱ̄!(BxoYyEiYU=p/#.`,[1vI`K 6_DvF5{Pwt4ŠfPt5+>Ƌ5`2;n| F~Fe6zjM RQĂQ֯9 b1K:9m{.;ߐMvQ¥U@v%1"$]^5*+| dǯ0KޒCwx-6zBG1 PjxyQm'Z\^~?`53~HbQ7E@wѦ\ЀJ gMK1 ks"y5@cYG l x̤/" +R[h"yrvA˰g#WeՔvO #H=xh!mM4ӓ19A+srѸYuT$Z3+ي"#9}X5/Ɛ.Ԅ𞞜u~n#Rx"%xD% m a@8 U57] "; F`.%J?ǪfkЦQW%V(J.4 rwzjԣ0ƼSHT]DagkW!Is4V+?KbQUAK!2ιG8CIrhY}vܭm&LiL)M(~Bw |PۦV$Rkes}i; S a4}#7::ω?@!Ok%0UY-As[#[+so;1F7^ X/5?8=V؝U/--24v튵|i~;6Oĵd9HYfWtk$BR^Lt1RjeFcqvx:E;']ۊ,,?a7x\^G9Gko? @hSU m5. /j1-[y=܉bX;(,SÏK?qE֡ZdE?@EXh~y0r| 7 IŰ;ؙ_t0B~cfVO %ۃ&=z*Q2D:~yB邳VF\'UWmEZLiAP/ܰNdؖ#J-1;Ɯ]k@-47Oй=@K9ÿxM 4 ؿHzrŭC^kd*weg!3OC $3l[XVdKv}SAwȺ"bd݋kjji}v sq yF*<_$ qjmnT&FT %,@ !N@w J|! +/}S٠K*jjvk0o!8IFp|'kl|5*m& cB ֥ MћG{!@:9ˀg ):ZRL)9~ldG@!rɸѯMU9nwHiQ6k緭NuB 2q)?EAΒN`i + ?D颦(܀F0D$~R!Śgr֊;$m6ԣ&N(sEگxƪ{L*=QD16~cbΕΒcpMfBTCw:#َ};$~YmP>dhG5TW$KIjtwOn(.zM|KEWr])w+% ;v#^KNی,| Jqw),&ir䂼ԼRnGEt3x%gU:-va;)Byog\6HRVueqN(6Czf%GkivQn׶Nci_Z֧ Iq{-|H$_o$; +EegA=h1V~ǑN)g9?w@i/Y唧th>j.ԘR ל2 _,nNpU(?jc9HF)4UHL2#}<9> )t 6tjg3Y{[{TV_?bckll`-F'X!6sY-%ĿL(3zE[zC:ҿq\ȗcl(=u|HIKh?Ԭ> E܇߂߷$q#mLF{>m$ޔD{CSB*ۘ )Ӄ?Id|9;HxA\ p ^8IjßkFe5rRd]׷ة"T3r^10$i n.'秝D?.Jiuۋ!y>aB)y:ne endstream endobj 61 0 obj << /Length1 1642 /Length2 8994 /Length3 0 /Length 10070 /Filter /FlateDecode >> stream xڍT-~o.+*#g MF'; y#Lw|1\ss= ]3pc@n S9;S ڠjIRWq7v{L$ƪ̀udp˕mY+%GzЖD֟^FS ǒu(d{^^ͰJ}nueˣ!s{U|heӬ:QKfiLQ#9`5{u=3Dό-S+j6c1 >9Agi:t4+AئN]U[!1;,L?~ԄG TbO鯥[ ;(TܵV0Ez2|l;!0ٰZfvB }JL#Vэ~;|+f%r4\|]*rEnz4t[wSR{p2zwa JF*A\~,cʯBfp[>z\AE~|.L&5[; Rx %@ϧŵS;eHWl$%D*tS=o ]ACC{|PL^q_e/:%[ѱ!>k޵m:P> tr^GDh"+|?4stnq9ZJqY72> &M9)>I1lRXPj)i kvœl})VYU;Xf O$:( _$b=7Yp:#㕒p)j hyE^0'ӱRYDit>Dɜ8 J -6u/ZF&L-Y88tm@ K^ #ڄ4DE/ÒhX~+dPT: ^C -S? CY(wq%}6[[ZQl9nlrϱ y39qLtN@+rpR{bA#OQ+oǧ?]y921 x܊ }8&Q'D8~_7pb՛/z*F7ƴ$X䗮~̊VlFPHu6/R"iI5/Iar8U ޯ2HR>j|#?3?S_$9:DSZ"kABdM)始 ⎄Sې(X{EO o/]F9am%*`)_$'O~ɜ~QcićAL|<ɽblͤ^,>^VnO$ALG+ʆdUlM'ؖC{f34:CI*wG= a!ҥoX퐙Rٮ-lsNB\ENgtriT"'խrl*3D7%9 & .}zJ)U|t42~ƉǺ^ZUi$\Еc xgۅ vR~|YOe؏* 7>}ʌ!e7T}FOv ýێ}v~X_f9$9^&fX#3DLh4S)d4%=[n/UU& ߰\$\B~3\^{ݳ2CdoK^PjObZ#2FM~eHjS+7 ʈv ]VF*F(T}G= `My]k]T=`PRN/ xy`1VN0;Lr˝|4=Oi3[ebʾ63ϗTW7 aƇV9!$P>`cA7<*Mulk;Ť&QmyOj)Jj{7KpLyI%kےO5A'Si㖯[1}~z aJh$UfDG 11@wUwG_x; Mt#p8dXp+ _eݧ^v1)X@@P]['XK.Ojad W&ojU۾wi,qө!|ʈ6g,z0COfI8ϼ9=Bzˣ pȡMS,!)e;Oq+;'p^)6{DnOHȁ?̯ZXtiYJ&>kK?, -31@!ȜWz t^"V[*عѫAP< W|j/̃D""~ ;~R=.p!$x$ݮ3:YYϦ/0nХSkYi>#x9EWx15Ht 0-ƤQޔ`Dž-ZVC6эGi~ɀLFHtU_F@"Km_VD ű_ #ns.}!\_ˍ1dSh*erNL_Iu3V`H2y4+MQAB ^ѓ7nc n}OKٲKN/Us.cdF>$wQvR í!Q,(5d A)r 8(̷[#2{T"-=aan41EL\q#eGoCmٮ*\,i=zd(MBJ]t/ɏ'ĶLJ̄r.dp l/_\DFy!gcC6?i@Yy5pvO "Ɉ 4A%b}hE0UV_X \twzkekΝCXtL F9|i'@UKCRgPz6"\Մ}k&1Dbs4ҢFΥ1"ZCTY_OS>z~e4vmꮷ5n}wÊ.ڡ0F>H16Cü%%'%iF6Jkˋ+&QnR8z.-t%ozc>B/Y)&Mֲb}>쵔skP?ૼlV4ށۀ]gX5OYBU"5/Ƽog.k<B %u)<xW:kUW{=uY$'qc-w0kئ]U7kwq}֜^2`N\ ),9TI<~q$Fj*@ej8N/ݯv慁~1l/s0awSM'tKuiSq}^ѤMPa^qXb`x{Qϐ#4Y11/og<2GuU̙ zGM+ ER25y\X]+vUb.9t;JRYp`Wms1Gcx 23TR2?φ{Dy sC?gNO@B(]i>AP5}{tFQJey >|o|?T8rPBr7nlE̅m.G"m 9`)}?4fcq\9ɨaޯGqb$4&~&LǓ5sTT8 '*a)7-h6n9}H?By~5yjEQQoOޫ?F\fPcs`׶4oAf#5{./l ^[gJlyf .8'p&:Xs@A,D '&~R{&F|ZO ă 'ѩzb {m)g47*ZqRUi댻_}/@,}_o)% M]mԺ( 5i\d]uLηn^cE^44, &8\ZVNÏktW0t!4/gicMߩS3Po=^5l~CK~ @LGڄXpD)sv];6]> kT-]W /(2Ez9!]"֢5ǶǼz2`i%!KGhXz@1%j~xka%Hj"n&R]d82C՛uvM*I]nNTeT-&$j1 U)Vj )v>%~T%}1H6^{1f@fVkY1R_Q6}B g5~J 6OUTJSWʇbFm}SZ "i}@fv}ԕjLt6}p] ܵ`AC8m=jMY/ytdӡ,\sCا @LIuĠF&ž3~\t&Rp_UOFW0>>ARZe$g^9{hW.#=bHY >qA '艆;Lua6NVnZm増w^IT[Sl!2_E@jBߴp7 Wcxզ{nZjX9GEEԨ6*ZdI+6$a͢NT/CW UmE$l֝~'Plv,a(|Ŷ]}[DM4k2WO-oH*TMvOkJ-yy%mqK䗣9S^E7}y!<)6PɖηH6F~h*枴İ艣,b)8|h'gw,w3n%qS35JgySN&5woWw v@I6؅_ qZ+OgHqt_ڿ1 ߑSf Pbt#K2I漿v?S1W(rӁiM0DqHbȼߨWrj%ދ.Xsa`>sƭ&} ?H'قǰ35!=EQ ՀjҠyOpCf?ĆR^v)CxeN[ZГ:@FNVs|\m y1C\J0ԙ0@S XhKXd*'p|z}_HBSL)!I˓S2a $ǐu=u@%8W1>ǨY솁.bQN&U#I]wUx?uU2) T`K9tzU)ruuynbk+~nS@ <ܠ5f옏mAL߀$%rj?Z,7\O1Hi_T\ "rdx34H+fNHch-VbsJr 2uT듔T)ڡ)P٠yk*^-qB ͌wlT˫Fb(tUoI*?}RVC8DŽܨIm"PlV'W`{k ^TR2^E߉1wk˸Ijњ]*f@Κ#>yrY +/ 1 Y2f[V&8R0d@#rB:A">Ro$bHK^;܏M5^HdKc!b TD~P8KO2~YL,Qq Tc3ir\5U:dxMQEi8dB@lF:-ZOmFA1Z2d䈻xuidPÛoL~.#[zAkDգK7Ѿt}aIsZߦ^ΪxN:lϯn9$s#яc/ 4`OS)};<;s;i"0i6RT\vժ̨h ;RW!~)4g"wt ͗ѕO;Te'Wv ~S{@KJΆr_b(<*XI򈾦r Qv,<IFp |=m{m` z)vs5%:H! EȢsZ:p.6{2& OaU"5|:Q*ėa@I&e;J,6o{e3?G}]f lEUIGg~Mc31.GP5f.Qdaԣ ݄5:Yf#{fPVn;})G9"1_s@LCqBm5}L32- :5fRORsRD-De찭<<"M5%FZ* 'NRpIvE$pM,%G_g&xI%Jl楇RU:E Yde7 w&OT]ަ 'pžv el|,_2ٲ stC,cOMsH\H/pQGL*+HdحHKy]#d+<4=*u)TU1Ua$~mYgjj'͢q5D cF/.Ld΢znumbɧ!=q(Vcj3].JYR37Us]Š6?15" T^V@2Qi(q!W)]|Y[;YXU*|ʭv2ɰbysJ Lۗ;JYW^Tѹ Frj".U:$CF&/KaUU$IOERō8RJ-B'M>Q h6P&P3ձlr4l`$/u4`5])<* ql2$o:IxMYuI},9Bq49DՀ X7^9G0\F_nElVQVJ^Ч{T)w,"b(nyEz,J):躮0 Nt`&m);+Ů-> stream xڍTtH#!5twwwII33Ct twJwH7"%s5k1Pdegfv6;/F l[JB0t:?ɤL씡#+`c!Q e (*$de??tv~~^q0dn (:[OMPsB Y;; XV"L75@ttZ~5 P1e rK tv3uv s bt<%h+T큐2`}6v+ 7x VK*0X24s>L͞ ~Wn W>5w{N {g''ݯYy:ei$ BP'r?_7k A<KW. P^o'2+3tͭYV?uiX>5YP=L]gG矊&Tvv`AP$ZOr=;_Oeyk~Ye_(0?: ;r;)*uXBtJ){7K4@ݿ3v_Qo3ɸVԦ`O34Ч-UZ\w6}q?r-@ _r_KfՠN_ tOenr8=Moiq;4jk8ylO dZE @O.PG_7 `%MOX%N`L%~?+V? 9S?) `Oim@>T_d*>ʰ:<V?)o0wqt|z~oE?}@;unj.dS|].NƼ5"Gbճ r+d~S3Q@ڿ\x iܾFD>~+,Y'!V'&cb_y]O(ЇZ"޽pLCxY-*G'ܱFB[cwEmR|N‚Z*o+RzvI1isN 8@:jFFKyOrkT-'QZkWVr8qa"!7xI6tw/w.׭'WBkHݒ2f8_츦}r/Or|[ Ӯ4Te[ڨx¤U5Mnde@D^FLh.)]3*ʯȼ!e1X/ޗdr eI8 n{4 Dp5p`Қ19Vb *o릟  Lz804F#}Y_Xr`:FF-4$/[;{Ӌv)!3Bj SuYX=R9Vᰡw-(\Y'@dzdri*G9NRȸX̞F7$~nҾZv2P^ -yk,5OoPrNLa|y x䈓h!*%lEnŗ5z$xL|KC #g `b J`BgM8|ɦ4%ƊsȦR 7DlsiWy eCc.}{Dc=SoK~ )6gA;:1/g`$cΆxbo1F m0*G{rb2"hhgZulI53׍g;"e[.10r?7/p\ ;t8cDb`Ək]kI :x׆I}2b1E%~UK]7홮'{tЦKQb]ğ}Pfj橨yuL% ~LdQ备e2ϯ4HgJvx@ov)m1|`S J-F<[Ԛ:#+FWR6r-\V qVO'?̚^_ N4֎jz|r6hfḅُ)ps#Z+ 77s:9[Nhy3IJayN[;ꫦC U޻Y]tzk#bpa5bT~-tlK\b~MK|[ȶV23YMxno[߿e[yMѶ3B |&vnȣ"r TԖg. NZzw򹫾d`CN/ϹppK..b"r.3]tG5gS&Hߗ3~ɄUm\=wy"DpjtFg+GNi.vF0@||0#4}ZA]5ÌWzv:S @z@: '{ɉ7-PIE%`isعrql}v?\>⽮0=TBC#V<yY>*4Q{~^͍.i ;u{dzP] v”l8VP_-xC^b 9`-ƬQci$+rې0;>(=]vn<ǖs ߩzA ȑBTҩR{LAk魵bNBR7anid2GJ^v6G'*?:Tx}^\O s\R‹6֤ODGn4ؼ x'I|4TߟqkeiqO'Wu |?Whv-1fC*'ceaW^cMsE"04*|( {ͺ6F֗{:4Ǹ WQ7q!?R]Rqsj7'RWXwA_ER2J,.ÆfG'P:9+v2% Lr/zOf;LE Nb~h9Zs8djdT9i>}-1!M1vƅ^ʪjsX6WYKlQ[us $&d&_rXjTrW9$l$ネ: ZN? 4,C_|K sNao,aDŽ2cZ"Us .ቶW깈Di ցtJ!-ǃߦBW]4I!)>V-Pӕ]G}%030Q禟>J|w+R{up\O^9kɞsOVCl Z{&O2Ǚ8VZ} 1[yHT)zsM0s㈒5 *>I#k,dzv.x\,t ",7{#"Yʖd%ryؔ_ޡ `cܧ9R,>{t6`1+-yP ~ <&cpZeOt*PT84ubhA+_i,hbG]5N i9mr'J7;u[Jw>։ ^*^0ګ&ieݤvI.[ðݻIMY_bE;FCnՁ:D$V{JE:$?" L>([O/gHFưY7mq<#u"$eҶ|ƩpzFIU9HC2eRS OBbF#Q*gGO$2A@DawiF_ LV@dqУ ވ@2-j>?2M'i/*Z!H:Te"E86[=ͷ0IMFokL0yyH G+Ɲ$UW5H`揫Xg/!M2!1N".%gJpVA5I%ו<;gg*bl!}oN1_]AP߾܈Q5ج>nС!Y Q&.d2g c#7|(;jY꩐?h]ʤAͲ>EhN!Z{SP _ ~i^] 4 ?,5 L/؊%դCٌ!˦<ͱ %g|m+p7̛Vؑ%UD2,V*Lljy5_ T!|ۘ%A{볋@l$~x)Cr\4*"bQBw}ΐ~6T`Ar[-吸x[4`5H+}ypY"P `Sn(^T|9>114='\K&NZݏ:mj*ӟSR&@Qv׬z5n>e3 =v.̏ӷ^^ʛQksKK}@$B|ZԍHfDMNv!7e佣V-ɼInv;-,FRp[.B\Ky2 G|jM.'h Kûe};iWѤxD:cFt6O>5LjM4^CХoZ|`r\,u]TF"Zo$0}Ljg87ZF^1 0Z^+S4tp4f {kml=R߰)qmDŽV\Ie$ht19E6cYdw82xeʃ{8M\SpNy1oqoċC>nV;EANp{:YTҘW`Yh# ! |K 9'Ѷa6VxO  .7S.df_+<4u恸ϕ&XUǪp`Ӷ9< |=|O_om3@v.c ]^"jWF[jI : Ḳd{ ~{#EnLT!$ RU`uYNnHu+Vs-U`@,d8gF|4Eb[Y {)M#8ING4>pp;]- r2xܗ,UFFr.it9h\|W8=ߤdQGWrޖ2*1y ҡͳė# ڠ=?wzl_3~qyv0}a{tGŢGM(wȣ}KFje2ă18*7^-oz-YW2^x& o(d$ IlQD#Ɓ 7ݴ s!2,9b@jW18vJu&OE/~8:r6]~ݝmeGz5?D4}nkNN(!6;Ed؏##b3"=XEbz`-lÖۡԹI4ɹb‹ZI0̏kud[l+W׊!vb %E[ZQm28|a~H) ,ˏ2INdAt"pmYf1K^bAMj3u$%m4j1 BD MImvm{quo7:& +:LyURI$/&);2*7o+}KIDf.Eu3h}wL #s'J7[= 0D%ՠUG YsVadtt`u`uE"*d+SDF 5OU`e͐֯EqEk0Ɵfk5-oHk7–"ߗHN[X![SW@Pܷ O'F,ɹގdGA\2vYrm+27_^}3/}(\(zkNKD0@tZ=B&}\CtY,/n呚٪~o^%X w^M—B^'`b}>@?Өlљu#E SE#$m쒩\Z6y9>3eք%҈%(jPp dnuQ(G1YTt줨r.%.䏒! ':dǖn,ɄWȯTEvq6೮l່Xe$D\ū)e("J ^fSϩ;gX"@Y#1 Shb դGt;wlt͎ޞ}$I|3&#ҰLKe zݠɌ'ܛ#>*1E̕*~ѷLJVZtp's%Img1OBzzЅ%Nq?'>6;Nqb#Y)\ S0FvL%_̏6Af{ ̧{}3O@gIw.tRQyt2#ť4eCxB,xǯӗ\$JzeU)YoV%Mw,LHpz[J__zjV(0|6#S/*5HTvdmg[c %=X;!3FCm!\rܶo' S25af9,bB4aF ټdk0Y@Z,}{Ж*zI3es@dO`0 YʇOTHJ m!q~? w8kb2h5M_cSN$ gcT4\tVxZ'e;wSHyv17[[3m3>JYa$ֈ3&5hzzhQbLh-2X-Dcnp׾/w͸j$H ɀuxpQퟴȑjߤ%׸TRjc{2oy`ܾwTlK܎ק/dr`,G&0+$@iyKvV:çQ4:}#Dgօ^+b~p=Q!/W>W̫0_z \SOr>k&гX0zhJpZ31TOǒqd6|4Qn0xˡބօh] t9 0A4VXJ bΕBYEb}*k[-gUWNLGob^yO B-mE~!:Íړf :˂Fv`r`.k zz$"'Xa"t-c$1Y=~GGS=aGPQ ۂW k`pE=$%"+ eD~+M?:p='0MksQ'q!d<[{y+z6Oֆi`K5lSA Q h|ƽ2 N|9\[e⸓`1k;LT}3˓d0LPڜ,_^t]uU[o"Yݍ9)k>CJ7 ~:[8c&0~X\;`$QK-%M#x3^(S)I(`q%](Wx`VW(#TJC80| ͞I> * :ӓwÃ.&u +?ߐ3i2ټ .I/RA*B3@:=k6cﹴ͇(s(cZց,\ qi'ط`YC-aN*q.uԉڨ`;WЋaZ TDW@i7[C{"a$aXxyirBb ޮ>|QNOq|sL>mVX8083Tzns:4mc˫Yf[` .c}»CH! \ƣN~"pF}7E@}=ZGv|dqiYZg0>14-in4^%HIan6U3_L38ȩ|sbrfa=F1Jdk{9a*F=a%Kz}*4Xņ=3.sYY2㒪R=M Qs'z+iz'uj'qˎ;",-p(?f*ޚ?ʺc!G:ڳ#K<is(>H;YeA1P|+i[ĉhUw4Z-y}~Mq51zQ\.QcNAew!›#CV$@ѳ2L\> stream xڍtT.]J =ttw 00-]҈4AnF@@o}w{׬u<Ƭg'o a(> @Q@ ((/((DfAADl&`I/" BeJ LhA@aPL (.%(!!PCl 8 $bSx! (t6\8ow3 m `?Bp>r@\<<.p#A [ ` -7x}@czrLLMԔy~7o',? W!_u XU\ҁ p悢6]oG ? go=n(4h ]7֪@h"AP6Gn`P GB~=(>ЬqB?H4h32n]Bb"B}4{F0@G]vpѯ}`W7I}G*7MP@oV`)KǪg|C2lOҸ|f-n$)\Y/')}ה9f}55&7]^Y%n4}~MHn$ [^GguW@Ԇf杫1h 7ٓ,x(>FnO҉q÷L [4M[B NҴ 8'[:gퟖlRtTQKj΅̉x"K?[]xUhuZ RLz3^j`vjM}³M]#RFR D2{%L_VPi5BN=[t=1gHEiTz<_.)4:6 ?(Ttup9$ [*zb4XJmCr-EI9c|'ZV KNL,*eiGJ[u2%d(rD>IFu.pAV?%J%fv?.bS9h;V"|$%s[,^WHXb6PW}ab'>X0Shz~lk7qq!!'5#R5K{P(ÒV`Ϥ?nÑ*ld/J_}uSƭ+Z\i&Z6wJL5=.o ]{D弄S$=UC"i-pg`AʉF.4?L-{*(>f`Uxh;b q FhGf  g%'E)FR2,Ec.7o``1Ϧ 3Qju-~A{Nޚ߰ZDiB6c0CztAm%F'Ѽua~'uaʶ=!f* Lv gQVYNr OAgLqtN K~ư9%\3o'q=fCƖt F"sD< 3hqnm9~ΦϩMϠj&$ոiGͫ?ͅ2%w4&4nUH8zөm+ƯJc3ta? Vj~O3B&;3NT5jIrj*wHWZأAI8_|J~C^F.m؈VW)B"E_AbcȢİ4xhjeCkhr9i 4<7 lԎ 5]w%mBѼe>K$5S͊K7} b;2 [T)ٽv-il|su 7Fcc {:5)"jh7דFC8)O~;Rʁ!4wegOYBF*]t1-[2F:cSBL=["X7Y~%Ƥ+{A#?Qg7˛ƫIK}P]oW}|W- 9)鉊Id򉢲FsK.}-o&G¢$j{f_wGsoHeg7z0&e7Cro;GۭJjre}BrζʑVyۤ1m\u4u0 b-=R}w~; 4Eh;;*NmZkwRHwv~ m~M-!}PwOdG'$1--Ÿ 2LjŽ&ا~7=lDznٙuFarb(!/='r_/I6GDi[{<"e[qnƄwJV.I?bdCGnOi ȉc::]퉮e3;#xN|9#OִxG랉 to6+dV逆ba%A[!L;BtݍV[Q72 ٵ%kG+~q!fN{-I3nvl8Y01pZ#\ҹaZ 1tbоuM+3/Omټ:9,Gw}'N_OV$^6;P,snl{v7LT=s쟁*#ܽ;s}O3c %аv:ɔ> r=˶8g0(c5fQmWjY=Ɍۧ~"`v+qdrSVw6#":>5xL"{opD۴*gdMDf!05W.i޹X7L0! jC`Zΐ]g$Xe6}r=7L >%RVg M쑢WEJ#$@=Pr^)Be8s^gjH.٦*z8a:o ]Jړގq&ɭW!OIe1PmW V, y#"=GF'L\1ӎv0~ Tyy|OxU5rٓJ>J]M'9#G@TQ1jt0o ey#ܼBEHm9N!y"I{Vkʷ q~Цfh\D9˝EÜ7T<=ӥ!SEmu6N3wE;%:Y0fQ/ Ij4<=','\{ms݊gY_]Xܠj*_0e}[,"Fof>W: Dگ{osT~0bqV4wwYa<+HS'&w)N(Jj[FgK4MoWa+emqU-sZS.ܩ|2~U$z_>u7Fd_'E(i:}MR{lKԸH]]D ]"6SDHIp7d.VRzR[k ]c5G^Zn[>917~1`' i Tx1sf&B:Nmۘƒ~Ь-Cu8 N_ME &. l $. Nugǝ|K3 3I$8 r&X[pZ/=?OO` WߘKbdةȬMw(G æLp;4,P>ϫVL؉Hrbc_$Pjd;N*Jkwnxqk.Z}oq*| ȣEYR!gҮo YjJ4O#9+gW8Cet2#H5[λvkdpTW`jBA/izQLֿ96e 4X}s4n2bdEA~*&D~M9:ٳuW+B[T;!ޗҙ~@ A]h5[T}ŝ` d]xQ19̀P@wVs0Bfrp 6Hc8PI8iw)#>d:Fzܩ>w[MB|h ^Q`v /!.~}hojՅr #TI@Nཡn0왆9s}oj\np6q54g}q8[`S^>v,G2EgWf ),CCeg1?|T dC[^wpGKj6⟵u䘟(h;GurccfDKk^ IM X=llmga>),NIT2bd*[/hI";usIJI}z 5S0=r]BQS3O +Y~W0ql $B6"y8/1SzGku-D Ė':ӝ=>!> a4GF0)XJɇl4eE_G?w6S%'+%gC10 ],CT$=2ڸ {mڦ'[g;5h VoI'á޹ V75şbFqq̵+Oo oteou{+(G8CL3˚{4+?b1:s8V_}q Z79G< z5N!χ~ŏWhﭦ(fcpYfQl},7.oْ}n݇^L[%!>*.jfk*s+l;3{[t}]' σ%-Q1cS !<#G%l-ݽ+S[׍A^T|>?UM}|7D,nv2eȯ),?X|~Rp yWS$̐oo@E+S{$+=SĨ˭,f5>A`|[ :27Lj*˕}fVe}pD8,*1:tlk9\Z91S]d-!sat\+3Ψ]᫶ٺdJoKkm @}aZU?T2$c/V~|ڈw\3.t]쫾Wh}Ⱦe]-%|0uz]Hw7isJ]{ 3FuMdkHh͍?`J:8:L{A1[g<%sAq*]N:os oh';wKbn.;̉ބո?ݡl(t>d}D ˆ~sI.~v+3b6Ю/LE';` yFQ"Wޱ*ΩF>/ҁ i*(ݳPmHqɣ O-*uPp}^}.lwPzT,?M(xga#+7C*SP!6#ugYtnNbL݈eFPr! U쫶LōWqmԫз_|ŷ;v(S(:1%|, ۘ ||~I5lcT &(],ZDr2SƷ&9*WLZ8`ETa%dG91|Wb7aՌusLt+ז.%u׫RBQ~p$M>5b;|}g]NPxc68՝TD +EU7<j+ʲ T}ѼWeZFX:eCϟ[;_K}d8G왏{[PFx~QKٻS _ V(UG˲Pݖ˲2,㢮KYo(ž KؓiG?Q⦡T.&ݿjS6br+UrMtD䠼/6RlL=Y}|4^so``-5ے{mYT7kIv8?7MIu*V+OZr}$2 ~VL@EPGJmen4qenW(dHu Ҵ :Mt5!١*9t|5\!06X!ürv3df@>K?S~&/ް  oY%tͨp/+Cr endstream endobj 67 0 obj << /Length1 1546 /Length2 6887 /Length3 0 /Length 7930 /Filter /FlateDecode >> stream xڍxT[>R)ttwww  3#34Ht#4( %H() - %7ƽYkw}>gf !#"yx%چ~~!^~~A<#0 c1y 00=@HdDaP' EyHm^ B(`g$j@(/w; . wԎ@{ .D%y0gn70!@^ Gϒ:?\C@0E\< jw@&k&p@WpC90w= u8! / :$C0=b"J"GU> G"x`~A2Q"x?S{s\7( utY' ~ RWAAx` $@_\DDXz]~n` 2Q5ap P G{HOP8H ': 9^X'0GWt5,tQAD€ѳ?|աN0tQW^4g@8C)`GV@ԛY\*g &?v{w0\O$j aY7{tA`O#Q uF)G/89ꁑ@ߪ7 ҃!?o?PCtC"4@P =<}PFt3 C\N0`޿ۅ|@t>gN_0*>w{8 Bu pTPP{G 戺fPzzx:ֿě%]_z a-.$D #Yha?Q``LyT-ջܐ |$rϊOAw Ghf ~>=%%[eh˯EWu m;䔘1/׾؜y 9`nE@ain(Ls'/D A'ӹKt :}no{fR'߷tF)Cڞlwo%7 ~$1TAjN:l9' 0޴JZȉό2%LieKDOӿL:tX0у[J;ĵ+w;߶Ir8ıop+a@>H7n']n(N-+\ْ=wma?L.1b}Eo]ѝ6uS2U>bHecp^c^{֓8O XI>X l4Tк\l'@3NM޿IFp~zasrQnvsִ,=J -t *y%/F րNvp:/IX\{ugY: B4  w^M~ɵ-rT2aV $R;rV}ZS)``Vb#SL:_,K1Ι,^( 2ZvRd;IJ~])lbޘj`bL1f 5ᄜ-w^`.Q)ed]^\.{ Yz;L(GClȎေzp&oȼ`o]eAZ,rjaR zl 烼'{\KeOeRS^TzUT"a:1H~ITX.Gx=AqpUdNQ6$J.NV /!}kl^N2BiDQ}MWjRnR YxlNBQsX;gM3V76MqkG$b&D3kx;e'FkKU{uK!mL闞6h1xG" $^lى#Lcgd|XC ]YY;:Uq7|__$R ՕzW wT ܺs,Khs7FmƐH`צfm g6٪:hy Xf;hf>QFT[\tj=7gѫbsԊ?h~:9n0kzh38?+;:l~R+ZܑraYZ3 L2037*3R unu]؋s#63,W;o↉6!a;Z(^>% HMG((;M,Fv4ߋSzmLƥI䬞b:H ~v~u@!į o0x},߷U]~zjZ6$vX(1]HY *O,q*iGvp&!Sfe槟2wt8޸=j0qDuqۖ'nY3V\F>jIɊ] T\s6<%q-h:rzuߥQ׷ 9kNZؤF@<;|q!q3` ֊2*~Όќa-h]c?*z;Kw!# 坊~:ܹ]e;9~|.MK&0]*iO66"]ؗ,,n|%WB]SGB* qh~T/=iJܶ/7d yƬSs~Le"0CSjʲo Y^PQ"q '0j3o2}O$8Ї)SXS\%)Grɧ8whrnivϛ4Zܩ4jM#N^$?ڴQ]YH ~z-xH`uq뻰IӘqC雸'3ºz]X'⇥ kx\p`w$9&S32g舃x7Thi 3K-Lt |Bg)wўF^v9#`K~g7[#w>5Q}iWN>I#խ{mX|X1b-r_u鰪g}~.c=t8 7 $4a7QT8*эj2y'}VqY[oI>:R;"u9QPaYhMh<Vv$kM}_2%Ph%kSpOQY;n lWEpT#_6Tf8ѶTu*[Nj,Bc!3?Y`i[mPxT2Lb|a˱h1j+JEmIێS({R/e2S, sOܘܘlWS`^\TQ4͐;'ԄxϘU>f)}2XT߄v*DaΞj=ҩ|>`s`D0+5wr[YY`Jj3].Q(\UY0ɲS1SCTiVVI漩Ătb|w SjIr{IY͖%o+K)5#K[Rg4*iBP`[ K3s"\66#X)+]ɹ⠈Ȇ C+Q[ak<)Ib~h#N]] Γy׿5^pxe:jV햠PF/&r$6Z\WE;Y=taY09iE2umB1/|3妾&h*.X =n<BF5V޴VDt0=K뷤ЊuGO0'㘁 Q,^g VKB8AT#|vT4IVVfniν0bcjAH1ql@l:{HD jwh2,P wNʽp&'4o*bwRqp;d%WN)<%bb"wSwrO_`S:)BBmVGLʩ2CvD=^?XUYCAL4XᾱH/I OGdJO _[WFLFZ@}xR$PdŦ~,mTb=ih;N@& Wn߲nx5]-/|<5 ܲId TͻM g:رD'I58^H^slt/.5>Ɓh9'\yt6-+!LYAgl{2B?㩺ZLL1ߤ\;u!HlPYO~c^~Ήhr՛ Hdsm洛w[1p27m&9,NgBYn] >A xYʠsD yms鷬/hNj !=$j?l/j4G,d~V:+g[+ qim*9OK8k~LD-t%? |} L4g\433B%-Jf~70t@}Q%6/WCl=^sQK`LUvn9䝶e^xCtdKYv\0LGʗtyh+埪wٹԞ@}}rzZ;K&x>A0j|^g]ަ2:St H'  U+sR W+J<7-9 \=x ii]^ ]jswC ?;'Xϑc5/m53PQ>8|}<{3ʜm:wx'-3ӗ!YO^)v*> Z֌b\ \8cQY>Έ +wk9qcx$ 캷J:3yE,lZRj(2嘯[4[ݑ6X&鋴.x0޽;WQM˞ղ^[U||߁04E` \!;Fa>T07ABrs;_%g'6{G+ʛE\$#{X DQT׿եTWiv3Sə;xv&"x>Mp7e*~Ht M TfQW|g)-Mլuh2~ZUW'qEgmIWtJfAHĔg!Rr}z84D4!C.jaISH=ڕHqMl/v31uf|)&E{$;ݯ= JY][H:Yy.8'右*CG+BݻS$ ,n endstream endobj 69 0 obj << /Length1 1398 /Length2 6190 /Length3 0 /Length 7149 /Filter /FlateDecode >> stream xڍuTo6-N)ctJ amˆ 4JH*HI -!(HtglM5;4^\Vj(`i,@]aCaJA  O3 @Ii *`^(Ǡ8&rt(J**ʋj!(8 4ᝐnp+G!H!ǻ+IHx{{`n8*,FᝀfHD sC Z8pps]7 W"<$H(43# 8 P$t%Bp; B;\@ ^ C#~9\qB< r!8a ;Eq ׈nYĸ!xWZ(,Nv_?uAcwQh_C <%,(O_err2@w( &Lq% DE~8z"'$w(4? 03aX &pO=^ ?+a`lc#g _\ WJJ*LcCmX=] POkW^ W溁! `8KCo En躧ooa\}:H'C]DkD<۪v$Y\RpQ>H wC?/H BF܅xۄ$up Τd0, $Eط$Ao&%@h $~U(fF\[peI ]4GQ'K0+ASr* voo)>iI錖 LU\`zun2uvh䈾8"f.!ky Zof^„Ɲ9VT5i(ؔ?4:5i8"yJJȎh?ޣbS3̧`oH/jqg쫼g S.*PÍc܎4%~+:E@f(5kdN,qrc /*kMZnx}Wݵz u[Ki׺$ʞ3_H~.UJX&o rlӠ/jP'yh < _K`}+,(<)ISUEa]\jo';}՟{oq=~DvJ:?/ʽP 0S ]H7 mO5|e0A_v^Hg;s,1\aCd)L+i6uZOJ&^8qwMOytVk N5柒ߓLPiI s,Va2_+F pGhxw25,v8!@ 8zOG! ?"C*+6_m $xe mz^TVω+Z'g6[&{+rUNCm`or)t̷yh˽}Vx0/pZT^L֩` B8yn-L&fi'heJW}EȖ};:p37hmðuD/4tٶP>R"+U1㒲r6Z%HqlWf -=Iw.K.7ˢ3gwUliR!st#YMi8+ڵy{L<~<=-ʀԊ;Ңm5#3Z=hW}Eb.D4i %W1TNj$էS"7u9?BNeU լǻew_ 2\0b6;}>x͞cH}_b;^=⛝͞:??@m07kDa8;}H`|^荙2TnC|v܏یK}?s"'eșЭNg2S`˼7h݊iyp쩩hXR8-:]H`)3B[OLlZ>=_{N&X-^KfNOY^ \^Ov=MNRWD7W0}-30U(>n!?/\fx/P <1"Ujycp/ahv֌|{)ooG-(`VI7soN5 KO$c:Wzj \%9px@jlN4^eyXmA}痋DDh(~U:a,*W- xg}rjڔw<+!'S=dA=7/lJ{O@{_~k_!RѸ]r2W"Z티) ME-׌Qs K9rr^lCi{2j|z#L\׵}0 5 GNŌ%ҘRAz K<u,c=/u'{-T6NA'wE<E7_r9ks.5fNR--x4>&2;XLgp;orB/ki}z٩:WHipO-1d䅑>B wPPbl7X=A7֔-iP&iPvWZU=``PȝkܘBȵZӼE7ۆ&ypExݒ2;?jVΝ"ClVZdže,)M\NgFW~`Gc@|9`g| QX + rϺB(lk}Tw6DDDDRG&-ar}͗7iɞ39x4ӹ[:`w_L1#ƾ\n &N08KTq=˷(?dnȺASljerptecݩG(f;ƺUlI݃Ŷ_W.׷:NeS'r(Tc֯Ugp*K^/ {.ϊ>3t@;e#"[D@q"ҹОdi:M}D5aك o݇^<݈4)ڠ&v$/\ ;k^P{oֆ+R^8[/w <;k!cX!UonY͗q[RS]iq©Y2XKS:}y^a,x+үHkЌOtulK=2 CbhwvݘGVtGͷ)&"Z(REzFyuOBw*G tZ=^":"wrqN |0 +Q?O~Pn3\,4%p2oAT[N9}4^|eW.hBS2/a.Poed-ENMx7S^=_$N;W\lc滞ad_P(`C`v _zsu` w4wj(2/lW׼x{%mnb=7h6C xISSxksgWUێtI]8pumo~rQQ0 G(TIoi4BY0neʫ'Ʒ>~zY[|p%kz $XF#:ܸW_וm)iӕ_BH>{mIГxw{ѶRmfm[/!34\ǝ_8S/fCܔe'u7b03.ǻgZLĜ{MBVaALR_5d<`|Dl)}'(,ס .2^.m:Yp쫟"|D;NG:mr;&a659 owFӍtC|"˝.oV,S/C+ʨ> stream xڌP\ 4-4Nn -@p ! 8J=Ϲ\LYQ(redeb)˰XXؙXXԭ]#Pi]@sM\ @Y7;+;#/+/ ?μqwks@tAsprr}Gow=P0qڿg439Y]'-#/3  t: P45&*˿j&@ rywqj2%G _2`{8V&_A;9;A k; @IRӕ`2M"*ݟ _=2} s1{{ ĭfsbڂ<@>A s0wsdY;em.B#8YXXٸ@'̊^{qtpX n@?*!̭\@KkŸbſ;[{X `'w;} jnJQQO#;'z8&2 Ͽ}Jv7h t\ Y8Y޿X?o,++oEnvvie7;s\߷@}@T U[_6,/'\_\}\a޽XX}lowj9ll&&^g8>[if& G?3_,_#Y0A<f".6`8̲{L?=7 Yz[j#?lWf_3s{$I5if@V39?/d'_u[}V^V@?,ec4_9ޙ{ҽ;;\?`W?hGov{'lc̮V?)1w?{0׿owj=f f|6";l}pZ{*bWQ"ӻQGl%o 8,kQ8 ?Z-L|1\v::tA8g=p.vf2+*`i~3!ADqs#AdUֈLMP\ $K<qn-~gH'<96qe2 EVc.OhXRg3eC:t\g&8B!w)}bih(-"-#.\+-Xf">o,)Ќ!D<'ncٚPZG:ʤk:rʋZhٚ *BG`+pl`e aԺ׶mTlttP(Z0b\N."hA"Bj8*=;M.GO=`"X}\%g$_ >.-;h#eP%A!S )v$'?BtbjMQ'ܞ'⍯03VEO28~h -,=7NJ^O< [{bh*fщkVT,gƋa;a_N/AH|9% ``Hg]Q3(LIw_ʰ=x\s9Q}yM 睐/.)Bu$getjҜD7˫ρlCEOTk1- ,N75U| V2Cv6˃oК(jnJ+_ֵ]D붨PFR'N[hrqaTZQ$SêE"AɋXfM7-)w]|N*g9zPgYŏR>do "wܚknT,)+&>-٠W&,t^ Lpoӆv҈ˏX6LqbK:]I#䤴O+߽JW-=VrpO?;k5(/ мJX-7C>|9YtD9I$FB=ޠt.(% (aZt:!5?^>l H[@kaVX08i^g|tEX/BUQ^j_wZJ S5EL dXbݲ?Ռ5,9D3Xqb ~?կBIrj#Kn8w[e0^?F)nWSZDžՏ6oI4l梁]Q_r1j?޶ƒJJvj+^~4kzش{ط@T:d@R}X|<6yN*\N̠."Р8R`g}'\Epx $+!J6f0T+쏹TtT+ 69AaHϰ3$THG\R?W\ `? ,~9iQWMf֜1ۨ[[z§8 \&q)ƴT fЂG'5B-Fװ-bމq-,5R,?um#tfc빆9}*SݳQf#S SS9z 62 t/h@Xs̑41{p0LjK 3#~^bk|G|y >l'Ƣ[ȩΣ%u.S.Owz"nS';;j#v,?gu]3 DՙdmSX,0ƛ!KQhԈ+ƙLhZݙ=oTBE"m^dz;M@`m2%9^,mI_އHg <6#Kkױohok Ů3C*NÕ' Rf>YŪ/h}Xb"V}^YR'HMM$yS٦h!sO6@[/Fy? (`!?[w@20mp,㞀Mxu]ޥ%W;!^AP:B#ۗ•%/ A!|ew٧߽Nzg WloLg)qSn9zQƢ1 3i\޴^&F݈8?B<+n@[l0*X/V͖izH C$D`pLe2~YPUE0`Gs^\>q e@I"2g*]D78w`~$qڲ&HrVf $:3qI_C 9s `>QNoWz6#k_CŹfE 9 2b"Cs0es*18D# $ Y8zI 6߻b?ο(5`VN#_NY> ױsv@ cױC:6oUT乎0Z.EK`ㅨ O"TǍf迄%7ӻ>L:Gp?T=ˠY?ZX /iG#IvjqtG5?v&V 6ט[ō/h3Ɨn}yg}coЋ`CU@1C 7eb|TW UE7tÑB:ᖔΰh"G!j և˩!^7AJ=9RBYo{s0vUœ-}w1xtq⌸z*fgiQ<"}ts<H Ŭ5\?"ҷy 26z1SDHf^ #ysm9c*TI6a- 'KzI7j%f+ WbRvܑ֛e[ڶ OVKPҘx54#FRVM{2֎ TXe"h)8n)ĹLO08א2ʖ[9j)䶚)Ed+qB(CQe疗+긷cy$/)LB] Uvzv+ԙ{XZd wO >nzNiw6> 4hE|_Mc+V`zn|t5>:STQԹ9Tv0lVKV KٛdBw/[|Bz>2 BW+F XfX \:XhjKv='Ӳ;mQn$q;3!tQTp%[HGԩ FɯjE#DR 5yJV#҃팏&[bvAN$GeV m<MkeB8V7dK n^bS!#xCIl^لӡNUteD%e۩[uMq$y~S7Ϧ uG}]՝;U ’-~('F1Ӷ3d·}̛M̓OC0Jmkk"N*!=~<=`}GBFTI櫺C1}bGncf[ w3,Y-MYdV흿ЎU7ZrNr1V0 ɵE 4 1drT0ඊ΀kP ,ԝnHLZ`Cy)6P94R Q,"Z(iw OO\~OvFt-+S-:drB+F6.nh8Fԓ`qB礷LN%2#f5e/YU='[hdžVa;lV]OAE+늯L^:g=xKya}Ob g< o(Sf=b竳֤.[?j!ƪt1E>&%*XKI9jι1k!v#ev5@l L|kH|Ahj kLux@eOt϶xN+c !y'!ctrf="ҍ#TMdn*.ԓDiʀ>qK6xJgZ;o!"\DOE;&s am[(ҋI]B.飛l|2F7pP!~TQr7liJ0I bV .ue=p|>J0xeLC?tjBy=k)wy@u>!2̓Q4ɗ&51GI䏯3ⷽd>+_Gxi;1;"U ^J#;|[Lj"` `vrL-28"s1$8x>CA"-ʰ.ǢL^P؛ ]jUecR.I);Q.|ƝNgёA&rvNbLe9lhYE_UӟhusZ68<k02ǞECG RY2l۳gyĈRH|mV0/fr }D0bus@gI)RV!9X3 +,/v0#;X6\}Ignp7=! 2k!À:Pe-&:zJz۲8XoȆF&il?fcY_RFDjFzIGlcHpՎؚýKe(6p^ Ǥlw1 HP*2.S_yٯ KHd?`l;&1E* Q>?Hܒ14t 3Od6Z百+mǗK_/=Vt(F@*h q-~N?AрZ 6fchn+D4MGe]`-xD fv&iOjI/3yjMb6]\$:X1]^ cW B~2I_`|[h_0HVBڳ$NPzV%^?a~qKWkhivZLx<](T5* ×/7:h" +w}0d1.1Ƴ[1l۠2}$̴U#dr;ӧG~jBǵOgZV7l-"8 G֍.x>*rx}s24\;C gkaX/*%Vel 1d}G{N#^~6&avl@D0+p7/ 08+X~&Dr&ӕDPw^_FP7K/[Kh@־o1|ʹƗY"4odhtB5}m A$JsC) Ӊ&͂F)r]Б"捄Ky=z_"٠/5 O~8eKϪb'N.̲m|ȇQ' ?\NQD@LlRЬUܮ LVj<0o_M.y߁6'Y{%$\p<6լa$e}%O oQj>&S5Jl )C7X2 5{)'Q_e8ĹNq BI\CY-\SOE4# "+\Wm?J]Z$\~L4=1Ťx80 zq/;3U@BV[ZAqf%&\hkD庸.&QhvV29FeKf A8l"{Ԭ )51S\x_|y\ a~iQ } qAeºH!`~ΖOT`LogcD. zi({ўhR}_w6f*F5Tw#&MvZI-ݎ||FH̤<_ k [̡ t ^gH|;_`DP Lӏ30NAa{?>[M}(?~tznG3J;M3ELjhJrhט>k1dTty3#Nv!oH5MNnF+J@V<]3+uMvEc~]MbKh@j(Ŕ|4I4o7diRqH;7݉Z_>vMJjM˗INd &E$#ޓ*?Ǧ+4.ҿs:|;yX@tG3|׻kB# )sװ׶::;nJkOi(-a"K?Eؓpqxl $EU03E1o Y(t2Pm|`ޠPdzJ>Mݟ&KۿL2_zR`S!<8rJ}k Tݡe(e'D:M6;X=gkʃ[ wjUBR*<'8`UmAIMZ:bD!o-yA;za.yDS3zO9 +Pdit ':>i<%yqwDR?A:D7VFS|(ѕRۖzD%y,)j>zen !V>-{*8B\"S4y}d 皆gỏYJ^M ;e;_)#`G#r"[)۶]8re`%S>LȾy#d@ƍ]RW>ٻvW S:I\ U*hi46US|'A.B)I_-ipJ}SwjG$"ƍ.Vԩd~mQk<} ;AkҊMr]Y i/%72[ &SɎ {0|NX^YcGp_yڍvK_#[e/t!8W_+daTO0Cڗa5w?ǚ ʖ^.㡹4$#M cx c(*1ݩocN3d.2OHw }i5DN]2\Z@h~(w^rn(.y Gw(1;ھ "#MH]qLZј_Bkf,_}G٩$֩C_vU37fQ%3RKZѥ>ރdtd?DcP۠"z#XGZ}9o8r7CN>+A(d bqU;||w3ujPZ!wIzjODgh2Ɇ _.-Å]$m(_wIAbhP/.5]>;iY(u邤o_̼uy,#pɩgI8S}F!9r /eZ?b*3|6d >:ĸ X/#Rh8,D1LAzY-B"mUrut(4Mn@`Di|}xHCI:@c*/`b5U4,.\~PՎӄVx9H&.4~CC )LVf'#>[( x=\ś -US&nStkiqNH{-"<+fϧ MhDmyPMFk[q;J8C$VDfOLrh>ѐ :Q Dʙ9~v/ O/3,5mW옧Ͼv(p*StQp ੊euUdLf z&v9qd󮐖1^*ww|XKGAn7JI3%1Ww%uVOTXLiڽHVe*FcF0J#W߭ ]j(85(-{y 7i3ُSg<)DbDnp}N5'8);uvS\t{(Jʜ7My+~=L2B-+O' b!_j\EC٪`ޖW,8!΁kBXCj6:I}¦/ 6ɗ^U2!XRhm4 |ba%ى#hɥ~TPnJ^ BqlvնɴSMyPm/rj$8Mr~}s'SdoNBq9V|H'ӗUmW Zc ~oسw)(fHXN6ڪMikMOm<>~!U5B4/'4ϙ/X\&8e~늧$V @d9pvkڎ*muOL$ 7 ]So(;gP=yaNoz#ҎtEH9(nm v뤛+͔ & c\RiR!Г 7ҹ7fO>.wTJ/WWV@2w(EG~ V 3Әc1z&TDIi(ɃNVShdcyY!qLPi!t\3SQ)i-GIXV7(hp Z v@LޮT[e 6$w:'JɃZI#~[tEiѶ{rCS?7ӈ1ܧ_V$XA4agW J+nIl RkVER\GВC_ʦny)D^s0ͬ]*tp>STcp؉gW9}ӃM@Eo2YTxR XD'^0Prv![48 Nqak[+[rMPm.b'#ֹ'ȚQ?I.D|Ӣ7gZ! Eϛ SZQM[ /N,x$/=[b5QnUyr]wwco-.*AOKܘ|k-tۨQ`)6a1myu;("xF0WMrE$ Jݦl8bW:)]\ZdnrJ僛vaRРEu=х aYM@U_$Zי5#]QhM,]A Ά<%ŭ]icGG*WҕEHInnH;ՈMvEul!;Tui~ ;ٮ5_t\nʳxjD`i//n:Tj] D`jCvy{Vq&,l]S@+CO8c8bc4>KYB:Z py>E,$< bY }]a*JG]cVq)z[F9L4 xkW#*4v=גSA" }+Y .4 ~=$Wecn=:v\޼G0>$bT`"?xLJ" Powۆ *$'&Xi&m 'FCZChrJ iG rvT}C^#Lz8A))[+TP"zZHH*kQ8D+,Xx 'h'JFP" /KTpH(dHŊЉˏamK#mO.c}96I/ꪵO!8pm,'ՇU) C0OAʝ~cH&uVexc:! \Kƃ͛&|)ycwEvYg~zqP0['OWAaNܪhv÷ǽ ?B=saE3 Qn@ȏ<|M=TTMu-mR#ڂsyƝSIPbʁ{6oPA1AF~3?BSiF!=U嚀am;slnb1F`x"$B*WQF &؝ߋ?xwO$`YhxgiD<*j ]&ey38.'ePaa1X2%7(`cø)0k;u }r4s,t\To#T{{z2;{VtOD>)аb)C}9Dm$p"9-Q*<JIE}O0fg<L8{bH"m&%w5@OY6;%ȹ:К4zS؅dM-M晹c:o{~nOLG?=dtM𯓾U6l,!"@6'w zknJ9mtQk,"0-n.rt+#Fe]3%G^q]>iw 5XItySzR@_UXy}81EheԈbo9sJC,OgS%]-6ѹkPϼR3E&&7w`9J[#ΗaVqԡ֐M>g]ڍQlny#GrkF4΂D-}bVKa`W+΂pﱎ~H/VՐ蠱L(χ;h#+H9$>w2oUdRϩyF<~rsF-1.AN =dlu(r LJx887}oku(@ @>e_GKa!+)ע0|JQ+3OlvБD}%-7O_DX< چ=X,5?XIU9 >b>烉Z[D6"k?^b8!Ԃ“~sOo},iryi,R[<-=ʵ7TnYiMU( GHH ɨ&" l Xd#Kr049v˚+[2~ʆ0ͥ~"<ݩD@ybj$*lg k0)u$cНƸ?2%m'Um&y"EM#s{1JRYxZa]f#5U%N'pw`asFӉAcaNeVDz֎g\.SD7<əŜ6& j@]&QB=gƻbxȾ]Ŗ'&Jk 8׃aTȹmGjN^{NAPPkgTƸv5lBzP5xk&jY3Hm/'f >ؕ#N꾧Q>kn 3cozL_0`L!7!;'ثPՆV3 )GJjTvu0ąY1/0f|Bz}$K' z(I!%PU ˂ܸ>]<ͫ(\pwJg3 endstream endobj 73 0 obj << /Length1 1765 /Length2 11359 /Length3 0 /Length 12488 /Filter /FlateDecode >> stream xڍT /-SH܂SVSNq(\{GH2PN W0 *;;` 6Cl~GKwۋlMEa;bV%I9 uIƿGS\2s989ܜ~VQY_rvf_d_N?]VAZJ݂t#7gOTe$bc?ݺ8 v7T .+ z1;s;TOmecl,*'?,fv6{Y.뗧Ӌ$t_v;Jٙ@LX2n$nneMbq~IL 08qV?俈Al^CVAv+x`5'Y rX-__Dv/g/ !K2/\q _㰿w:/~/5Eݬ|q|xIi{A?ϧ*6A]Y}*FƼ=~z[+rH_x-8zyKJt79%^0NmjuaPYCt뷃kfy>L7n2}?FCUwxK3GkF}/5Μ%@rf&}ŀs5su==L.Lj}s7RIDEKH 3:EK'FbgY#xw,(Cf/3JZ݃ndPc9Oh&-Tk3rh tEVl,"\^)Lymn-7Hu"\uzXPUC{&wˤN\0Q S^)Hk~cђ'Q>O77zB9ncFr+c]r8x삹Rj[JQSGcݛ.SlJsƚ{‡3 ߦd-+Yn֥-!ݚоxX|b/z#49rh\{7Q?-Ô*2/ERJj> O4u>cŖyU7J'eTwKwc}*&z_FR/nz&~eV5Xλ=ng t5gb{<:giD~n'-vh8n4S;*|MӋGl7{?SPkbHM au m͵2ֲA1췭tە2̺!O >r!_xE5xŖ*,1+d-Ck>fXh_IͻhI\[Fn:$^-V6ufEM')-k;㛞ᤥ Ԉ&㌍'ER8*?T/FT`p9%1%^S%QfHweo$ o_Ϙ&w/O͗ĊR9 6=T؈+̤C[IO RWD1؉zk D33/  2=D1rtrd7qvm~y0NOȲz?R=@e;LU;f,Ҝ '7v=N?l9Ќ.џfs%fGBdtВٚL'up:-f-x7ٍtl1d:%B`Wna63m⧊LXetJxh#]kvB{%@Vlf1pt|PB#N LlWT_nuߨJ|@0Oy)v(2 ~H<@ FNv >IOFnH,V8u&|.k2)tESa)#2:ĊiZ${R4Z,i Zl u%&4BSC Sc٬v4ߏ+_i|PiRXQEf!wcwߜz5'THv h9uk7z+(A@6Z0@FЈ+ ln|sӓcr=w=-&[ä{P޼s]1U^z|JmDsD #T`8Spc~)8nMtUdiMk ~O{dI+dċ03U*R%Po$)ɳ?w'_/_,و1yrx/hדortW2=CS|É_K_nހ&Jg?`:/VsW#f>DIžo1cASb gOƌ=Yv]Ex_tzLlѰ؂WBk*EU잛op69R5 v\ώ_]Rs32.q\KF"1ր }LͤX` 3~rNsAqw3cG7-TS' qEkkz(2+sG&X}2o~ 1 pW#^#}߱2F8P&%qB'%)J.HKX\ؑ2XtSOkkݝÛnr'O@F]?1uQP>=iXӮ08^"NgIAFx ›h~U"8zhKQ ]9㝟C4&f=swWCDj "+sGB L`y5eDOyU:)S7Ӡ0#@$?i|Vk8D/P;A@?c6 NGV( ƾFC%nm˳ [:ᢺiXxMZ/U7RL><2QþJfHkXiLOEm_ )q/E)bP$=3zX<{b|qkDGYtT $*wrq$w"xIۯ)zEn̓";zi1`o}:}# +OOƁ(}(u&+F?ph;wI00pbb _c"^nPtW\M Ft$bݪOJUjX[gƛb@<- aK.w(-6tgZ|3wLT67_;k,K$* N:lQz45A1:ʩhҷ} Ww 8ΦNyJ& iE2>c MY`G$i lĖ'mǠHK4U7\!{y2x0?4E +3D枕uZxZ?`l@c7wnkoZ.ɄmѻCef^ V'OfS1Bw 3ܶQ{^۠Λ:̒-ĞPC/&*Ư|aPr{n <+ah6ERM3}! (>b)8JAMxidq%/,2e[53u.q >-ĝ-B;!:!ْ-#k.!<DR,س>i؆Nrꈹ)bI j&6011J !1Z]4x^ZtwA(C;㼦=;AZ! ,'jdW2 (YGĔ~h,w?Ɍg𺘪̕hK+* $} fnd lvI˯y(rǍ4&Q'ُ[Zh ^O":` MНD 67@#&7D1Mf)ӠY|5tu?/'3R5sTܯJSӚ"'e:r zw}aL7b)j**֖B7Z0œǕ>ٌ^k@>iQ/m(׈ %$=?)%hUc,I&A8߸gELKv]qkZ2xfj&U,ឝ~h>LFR<ϐPZ@(:!+ڏUjyUC|)RĿ9tu{%a:i _#W2]6g>c]:t]hA/6 ]+=2 WV :R>m@ktLkj(έŰmam{xֽ5_Zfn2jx|o?! q]PGOS,^Y+9c~hu4q)jЅH%17Ef1> DNqP/K,SzCZ yADv8E~(k:X[YO/[-ty@;_"KkOpR$.AiĞݥ7GTU3z %K'Fwg}N^"c1`Է_gyvX_ O̜uGR]0%>/#JJ{P@{'>c;IJ"u sEUh Rc*%v4ȂHm̝&`i >~(0ׅle]=( ?V՝4fg\/p{(j֮6T^7Glgm0S-{հTW3p9WQ(&Em ac e '-!q^p1)}\]r}waw̅T_VrO r'0졦8'4rՀ>VqlX ei-;K |c@kڮ9К[ YIR],'އ`X[xqp,)uNyʖ>ߛF#P=R>%| ^薗D>ȑgkV #H Dd 2uQQ񮑼x:Eь>wC, t㎄BQ2j QH۱ 4͚^p~Skw >+/ځU}؋CrN|02ZpM*2)V F(%1L4]zZ*tA1EG_P;[:3յ&)NO}6_<}:Rk|ήZ.Gʦߔ0*, 0@U\/)!IP+/`PiA(=p5[q%З ׏z,yTeXL?˄]nG=.C`Γ'W`GV )2RS<'Kr?lga_nb ՕOP:PC9du mUs'0{_dJg h6ED$rTy.g[l1or2Z7n m&+}-Zัkzs l,reH멆o2zfǽx4%*Mu4r8iχFs<iTsSur6*Qzd-Sn?,`L'Uk@30g3u幬hӝ~ѯD*j`l)WԚ_5k` l{-a+p:@mz 6{}͙{_bϢ36&bRBqD:m֒=j\Ed &;˷<_]b5zB5|sn mǸM'.JT!꺠fo<ᚏ4K r.!'lE8x< !>ʌYNTYS4=ti5EvApHKX8.~J>*Gk\nx`רO4k%|SB߲ 'N~ݒyv-e`՗[Y.&*ex*?&4Cjq r7|XEט=.82ɸ^/5 -=4bՁYRN{36~LeU(¶O#mm Z։[`0LmWq]d#nR;6clxMs đ 6,&Jt ~?d*QGOkt<L8!SoXN2ٿc^=a7a"Yk{ vim}׷/@S!Tsvb3&l5Zиʁ+ʴ3(#اq"ݠ$7\Iկj3CAyoY]?`[Fi{ & ?]Q'=7$ ^=aU≦#Mx(t]2={\ 'ˀz^c?MdF|BpQn6;י=k39j67Ir-Ie{Yn"j@rڙ^{`sA]!'|KytL^0j׳_+ՈOQMk }gm3M ALri)†&)V- 46zg{>BfM<8?KzW(qEd?aB/Cxt[eyJj=%U)N$35}̲k ܦTO&G: =(BIgdZ~fd\Ayo*s0kE C|$͡} Ƽ*ʅF_?::IY%7ԭW*P<~\kRQMIk w0& ^ ٦s&%eҥñq$x嬈\U t?~-u7ۆڼ*'s.{PR)ͱ8Ϡ2+a/;zdmK" 6M/kxבKH geF!@W4vDBd t4?e Z\0pۍp2O7CyθquQ$76V5'!@D]YViw[p 8S>K[;"s|`قpYGu× F yf~?Ab]_?QiJBnD2fUTT_şAIf@mr@2 ;o5BSj)5tb!*^%v-AֺMڠyB^;!G]=Vo|ɴෛ)v\R&3S;B^6x5ZTXM H ]#970˙{BAܷ_ Q('=JFO֗!CM;, _8Ǩ>>vnr=/5Ԁ=ʉu2' v>EW"ϴo\ u><3#'x%M(ۯ`W[RԆ*Q?.ySHM@=t`=ۼsKCUR6%=lLjQ *r}J7Yձ:A7s2]&9|_ց8ŻxqؒrHLEҊ[<-8PNp_(]@aZ2Pgq{/gY{HZY`5a&W&2T[VC)M#Rlvf͆K צN1WA!y#if&D[([qM501:meFmJְ[mgN=5!ڝ M>_]Gf35dY8?Irm?72bVn| fXe"-hɄ; +LW:V)eS j~2%ʝkCb`D8ÔuQ{z`uKߴǰ$}M4g^%R䖄 3־Tw5:\O$ iwݎ"+Ѧ-zK'oD E*N&0FUXۦ'䁻K{19Bk" r,*glēCu] )EFh8}0>ꜼE{O&| R9+=wǘ1*~+$@1q4 Wfj=#W6%BBy2tca#YT.᭽xO, |ӤlAgkؠn)_>mRsxP1_rf .gƱo2|N\&_ͽ$hߺDzyʷ'pRL(MNe:c򛷦9V@NMbQbV$2@]x}aYɞz߄ٯ)cIo\'Cf~ RNErgcky^A(΢Ve+\7;ƬS+p"ɬް>9Rˑ$ dkwݜ͏|oz]ݰl8.aK3 i+^tY=~E\MN[.-}ANjHBg. q[. -?LgB endstream endobj 75 0 obj << /Length1 1306 /Length2 1345 /Length3 0 /Length 2180 /Filter /FlateDecode >> stream xڍS 8Tޱ]EOQ-O2AR*Yk̬1&Q;]RNH؅JEI]ӖP.]8g h9Y]O1l ōidpqQ St' OvX"E0+pfJ gfjA[eA:j I,8c(,%bb p |8DB(pp,"^BBqWL a`%q"ɐHJ$ֆF@$e`-$'K#N8<0>.$0 B R"Cy'WN ` liMt qH  |DulW2)P|(B?OlzN'J1.%KF2 f{gD0KI %L7hاAy|e<"2nCH_l0T܌`r 1<)D abL Dp8‡?R .a_;H4!\J0;1  6S U|B(B)[re)o3b˄qo~H{| ' !2ѷ^'"v?P\L0\{kBgH"$*:10O<8t\BF1 |LBR)4$b;'G>0 sIM1eL`~LK,qG D/a@QVCSOY7;9Vq5hi JۍvZ=F*w\ɏ+ܕi0o(/Ź.ީ-/!k$%i14TbJY饹6y2eҾ55o_ݹOgxvhҖݭ)vH>Tů4,g5Pi/Xgn5 7D7Պ:3ya AM5o|I_Ԑ'{wζbAOliEiGs 2_fj4rgz9Gf[Wk3}/J9h~?Uk|4R[ٜNTش@__vdݼcp"=Oy\ظ+t38cZs2.-ӱ('5u]팴^Hb+M:wUz.& [G6Z̸9!k&lĕԭR?:I=tm/#Xa RG"2dtOW'=nU$ǃ/:^-2YeINVyé<-GDUn+˝qcxitz8gdYBR%GMܸ}ŗʧns7xfkP*3SLP~PoT$\1 w7Wu}}flYSW-*Nyi/ }xzGxVQ³:3 yFœ9.^o2js> endobj 16 0 obj << /Type /ObjStm /N 56 /First 442 /Length 3237 /Filter /FlateDecode >> stream xZ[S~_sj+~JmU ,l$:0' n~%8T1n-K'YR7`Eh"S.iRxÔd9B2eȢa5GK- ct1A|-\a0K@WGZ2ca*c& zf5fu *Tl5l%lH<    VД`DNl) BY\*G80D[!,Z4A-DHpZ)gh g?~]1jxQ t&9`ң?쬚}i: 683X_.pc3+q0]>wn5 nCYcIVd^f<H2aclzv\-P.'շh(G7쳭:U5ӪV3QK\p.~ME0WҊZ^BwjVp[ƢзL{`0hP06}ˍ~ ni!-mZ)ڲy٦o:_gJ3SE*-"liKyUn6 ݂)575#qsܒTy) U-km U@s[l2I1mC<蕊(e@.ѠcԺE#BB$J P6j<.=`S! 5m6_M[:VK> <YCO%06^uMBf%O0Zs>eHz@!N{oyHtѝ1ىX$}L(8#;! !"4K@66|qf|Q$Jd:,$h@TS8"ۏvz6,$I# ^hUƓ笢qt <ב@`łS5Z%,%$JjcD>刣_ZRFfd.]kp4Y.Y({N SXZCLHtz<#cuV! ̠-(I14Q ԧ|pG9NbfjyhĚvh18`vhHb.`H[Z OԀDc a)כH՘ R\% 50Ogb݇T&#s%plhgX ٘=j账HKPKpߴ}ɴrUhDđq S5C^@6M ,`މpC -$<0&m4")ARc80cej#r:L8ʐ-~98Ao$>~,^᫫l6^LgU f^y}wRxx1g&QlӛGֱG t#2?c.y5#/b\1`N ./ <.3|W/>M*>rVAה]ͦN;˷r?SwIAգFaJLJQP^~_#~O>??t9_ ||Q'.r|y>u U0:c%>@Jt/ѲlxVϋOt7C:Ml8>ͯWn#)t;/p1N@ <x{{}iO0'Υ\$Y)^? QAp~ɿԶrOI!Ciz~un7Q˓A>C2Q>.*o0.A}6N6xʼn!&hr8Ȃ_.__V ] 5)HiB_tQ&`WWy'He+c_F0o7 󯞾ytJڤ(Cx^`$V8Dn@p=@id=X]" rڗ:] liQ=Ը' U_9<ͽy:i`>79~ߛ#{DX7"/•F*t\de>^Ά_ )Zw>.(Ŧ3RͪBE闿d39Dhq_-}8F/PN@WWF11hw_MU^U ?MC)t_I)f-6t%LQ8<|bkތXj\-(R)y>p5::@Eh%%D7 x(~Ufu,6eq樥FO>O A@v{8sז};(a(ߎs~pcGˎl&%Qn»m+\£hd; <43444718EAD7017BCE21423F9E63935E>] /Length 228 /Filter /FlateDecode >> stream xM3qs~*J\+z6cgξW`ojkh 1:|{0@RP8Ǣ,"đSQg~\L@į?zl&r%D(~y<I1CT͊91/R"-ĢX,VĪȊQ5kxyrmk޻ dεEFmSrD_vQϵP{u17b!> endstream endobj startxref 162057 %%EOF mcmc/inst/doc/debug.R0000644000175100001440000000037613074514644014160 0ustar hornikusers### R code from vignette source 'debug.Rnw' ################################################### ### code chunk number 1: foo ################################################### options(keep.source = TRUE, width = 60) foo <- packageDescription("mcmc") mcmc/inst/doc/debug.Rnw0000644000175100001440000003135013074514644014521 0ustar hornikusers \documentclass{article} \usepackage{amstext} % \VignetteIndexEntry{Debugging MCMC Code} \begin{document} <>= options(keep.source = TRUE, width = 60) foo <- packageDescription("mcmc") @ \title{Debugging MCMC Code} \author{Charles J. Geyer} \maketitle \section{Introduction} This document discusses debugging Markov chain Monte Carlo code using the R contributed package \texttt{mcmc} (Version \Sexpr{foo$Version}) for examples. It also documents the debugging output of the functions \texttt{mcmc} and \texttt{temper}. Debugging MCMC code if the code is taken as a black box is basically impossible. In interesting examples, the only thing one knows about the equilibrium distribution of an MCMC sampler is what one learns from the samples. This obviously doesn't help with testing. If the sampler is buggy, then the only thing you know about the equilibrium distribution is wrong, but if you don't know it is buggy, then you don't know it is wrong. So you don't know anything. There is no way to tell whether random output has the correct distribution when you don't know anything about the distribution it is supposed to have. The secret to debugging MCMC code lies in two principles: \begin{itemize} \item take the randomness out, and \item expose the innards. \end{itemize} The first slogan means consider the algorithm a deterministic function of the elementary pseudo-random numbers that are trusted (for example, the outputs of the R random number generators, which you aren't responsible for debugging and are also well tested). The second slogan means output, at least for debugging purposes, enough intermediate state so that testing is straightforward. For a Gibbs sampler, this means outputting all of the trusted elementary pseudo-random numbers used, the state before and after each elementary Gibbs update, and which update is being done if a random scan is used. Also one needs to output the initial seeds of the pseudo-random number generator (this is true for all situations and will not be mentioned again). For a Metropolis-Hastings sampler, this means outputting all of the trusted elementary pseudo-random numbers used, the state before and after each elementary Metropolis-Hastings update, the proposal for that update, the Hastings ratio for that update, decision (accept or reject) in that update. For more complicated MCMC samplers, there is more ``innards'' to ``expose'' (see the discussion of the \texttt{temper} function below), but you get the idea. You can't output too much debugging information. \section{The Metrop Function} The R function \texttt{metrop} in the \texttt{mcmc} package has an argument \verb@debug = FALSE@ that when \verb@TRUE@ causes extra debugging information to be output. Let \texttt{niter} be the number of iterations \verb@nbatch * blen * nspac@, and let \texttt{d} be the dimension of the state vector. The result of invoking \texttt{metrop} is a list. When \verb@debug = TRUE@ it has the following additional components \begin{itemize} \item \texttt{current}, an \texttt{niter} by \texttt{d} matrix of mode \verb@"numeric"@, the state before iteration \texttt{i} is \verb@current[i, ]@ \item \texttt{proposal}, an \texttt{niter} by \texttt{d} matrix of mode \verb@"numeric"@, the proposal for iteration \texttt{i} is \verb@proposal[i, ]@ \item \texttt{z}, an \texttt{niter} by \texttt{d} matrix of mode \verb@"numeric"@, the vector of standard normal random variates used to generate the proposal for iteration \texttt{i} is \verb@z[i, ]@ \item \texttt{log.green}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the logarithm of the Hastings ratio for each iteration \item \texttt{u}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the $\text{Uniform}(0, 1)$ random variate compared to the Hastings ratio for each iteration or \texttt{NA} if none is needed (when the log Hastings ratio is nonnegative) \item \texttt{debug.accept}, a vector of length \texttt{niter} and mode \verb@"logical"@, the decision for each iteration, accept the proposal (\texttt{TRUE}) or reject it (\texttt{FALSE}) \end{itemize} (The components \texttt{z} and \texttt{debug.accept} were added in version 0.7-3 of the \texttt{mcmc} package. Before that only the others were output.) Two components of the list returned by the \texttt{metrop} function always (whether \verb@debug = TRUE@ or \verb@debug = FALSE@) are also necessary for debugging. They are \begin{itemize} \item \texttt{initial.seed} the value of the variable \texttt{.Random.seed} that contains the seeds of the R random number generator system before invocation of the \texttt{metrop} function \item \texttt{final}, a vector of length \texttt{d} and mode \verb@"numeric"@, the state after the last iteration \end{itemize} All of the files in the \texttt{tests} directory of the source for the package (not installed but found in the source tarball on CRAN) test the \texttt{metrop} function except those beginning \texttt{temp}, which test the \texttt{temper} function. Since these tests were written many years ago, are spread out over many files, and are not commented, we will not describe them in detail. Suffice it to say that they check every aspect of the functioning of the \texttt{metrop} function. \section{The Temper Function} The R function \texttt{temper} in the \texttt{mcmc} package has an argument \verb@debug = FALSE@ that when \verb@TRUE@ causes extra debugging information to be output. Let \texttt{niter} be the number of iterations \verb@nbatch * blen * nspac@, let \texttt{d} be the dimension of the state vector, and let \texttt{ncomp} be the number of components of the tempering mixture. The result of invoking \texttt{temper} is a list. When \verb@debug = TRUE@ and \verb@parallel = TRUE@ it has the following additional components % which % unif.which % state % log.hastings % unif.hastings % proposal % acceptd % norm % unif.choose % coproposal \begin{itemize} \item \texttt{which}, a vector of length \texttt{niter} and mode \verb@"logical"@ the type of update for each iteration, within component (\texttt{TRUE}) or swap components (\texttt{FALSE}). \item \texttt{unif.which}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the $\text{Uniform}(0, 1)$ random variate used to decide which type of update is done. \item \texttt{state}, an \texttt{niter} by \texttt{ncomp} by \texttt{d} array of mode \verb@"numeric"@, the state before iteration \texttt{i} is \verb@state[i, , ]@ \item \texttt{proposal}, an \texttt{niter} by \verb@d + 1@ matrix of mode \verb@"numeric"@, the proposal for iteration \texttt{i} is \verb@proposal[i, ]@ (explanation below) \item \texttt{coproposal}, an \texttt{niter} by \verb@d + 1@ matrix of mode \verb@"numeric"@, the proposal for iteration \texttt{i} is \verb@coproposal[i, ]@ (explanation below) \item \texttt{log.hastings}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the logarithm of the Hastings ratio for each iteration \item \texttt{unif.hastings}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the $\text{Uniform}(0, 1)$ random variate compared to the Hastings ratio for each iteration or \texttt{NA} if none is needed (when the log Hastings ratio is nonnegative) \item \texttt{acceptd}, a vector of length \texttt{niter} and mode \verb@"logical"@, the decision for each iteration, accept the proposal (\texttt{TRUE}) or reject it (\texttt{FALSE}) \item \texttt{norm}, an \texttt{niter} by \texttt{d} matrix of mode \verb@"numeric"@, the vector of standard normal random variates used to generate the proposal for iteration \texttt{i} is \verb@z[i, ]@ unless none are needed (for swap updates) when it is \texttt{NA} \item \texttt{unif.choose}, an \texttt{niter} by 2 matrix of mode \verb@"numeric"@, the vector of $\text{Uniform}(0, 1)$ random variates used to choose the components to update in iteration \texttt{i} is \verb@unif.choose[i, ]@; in a swap update two are used; in a within-component update only one is used and the second is \texttt{NA} \end{itemize} In a within-component update, one component say \texttt{j} is chosen for update. The \emph{coproposal} is the current value of the state for this component, which is a vector of length \verb@d + 1@, the first component of which is \texttt{j} and the rest of which is \verb@state[i, j, ]@ if we are in iteration \texttt{i}. The \emph{proposal} is a similar vector, the first component of which is again \texttt{j} and the rest of which is a multivariate normal random vector centered at \verb@state[i, j, ]@. The coproposal is the current state; the proposal is the possible value (if accepted) of the state at the next time. In a swap update, two components say \texttt{j1} and \texttt{j2} are chosen for update. Strictly, speaking the coproposal is the pair of vectors \verb@c(j1, state[i, j1, ])@ and \verb@c(j2, state[i, j2, ])@ and the proposal is these swapped, that is, the pair of vectors \verb@c(j2, state[i, j1, ])@ and \verb@c(j1, state[i, j2, ])@ if we are in iteration \texttt{i}. Since, however, there is a lot of redundant information here, the vector \verb@c(j1, state[i, j1, ])@ is output as \verb@coproposal[i, ]@ and the vector \verb@c(j2, state[i, j2, ])@ is output as \verb@proposal[i, ]@. When \verb@debug = TRUE@ and \verb@parallel = FALSE@ the result of invoking \texttt{temper} is a list having the following additional components % which % unif.which % state % log.hastings % unif.hastings % proposal % acceptd % norm % unif.choose \begin{itemize} \item \texttt{which}, a vector of length \texttt{niter} and mode \verb@"logical"@ the type of update for each iteration, within component (\texttt{TRUE}) or jump from one component to another (\texttt{FALSE}). \item \texttt{unif.which}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the $\text{Uniform}(0, 1)$ random variate used to decide which type of update is done. \item \texttt{state}, an \texttt{niter} by \verb@d + 1@ matrix of mode \verb@"numeric"@, the state before iteration \texttt{i} is \verb@state[i, ]@ \item \texttt{proposal}, an \texttt{niter} by \verb@d + 1@ matrix of mode \verb@"numeric"@, the proposal for iteration \texttt{i} is \verb@proposal[i, ]@ \item \texttt{log.hastings}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the logarithm of the Hastings ratio for each iteration \item \texttt{unif.hastings}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the $\text{Uniform}(0, 1)$ random variate compared to the Hastings ratio for each iteration or \texttt{NA} if none is needed (when the log Hastings ratio is nonnegative) \item \texttt{acceptd}, a vector of length \texttt{niter} and mode \verb@"logical"@, the decision for each iteration, accept the proposal (\texttt{TRUE}) or reject it (\texttt{FALSE}) \item \texttt{norm}, an \texttt{niter} by \texttt{d} matrix of mode \verb@"numeric"@, the vector of standard normal random variates used to generate the proposal for iteration \texttt{i} is \verb@z[i, ]@ unless none are needed (for jump updates) when it is \texttt{NA} \item \texttt{unif.choose}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the $\text{Uniform}(0, 1)$ random variates used to choose the component to update in iteration \texttt{i} is \verb@unif.choose[i, ]@; in a jump update one is used; in a within-component update none is used and \texttt{NA} is output \end{itemize} All of the files in the \texttt{tests} directory of the source for the package (not installed but found in the source tarball on CRAN) beginning \texttt{temp} test the \texttt{temper} function. They check every aspect of the functioning of the \texttt{temper} function. In the file \texttt{temp-par.R} in the \texttt{tests} directory, the following checks are made according to the comments in that file \begin{enumerate} \item check decision about within-component or jump/swap \item check proposal and coproposal are actually current state or part thereof \item check hastings ratio calculated correctly \item check hastings rejection decided correctly \item check acceptance carried out or not (according to decision) correctly \item check within-component proposal \item check swap proposal \item check standard normal and uniform random numbers are as purported \item check batch means \item check acceptance rates \item check scale vector \item check scale matrix \item check scale list \item check outfun \end{enumerate} In the file \texttt{temp-ser.R} in the \texttt{tests} directory, the all of the same checks are made according to the comments in that file except for check number 2 above, which would make no sense because there is no \texttt{coproposal} component in the serial (\verb@parallel = FALSE@) case. \end{document} mcmc/inst/doc/bfst.pdf0000644000175100001440000070031113074514644014374 0ustar hornikusers%PDF-1.5 % 3 0 obj << /Length 1899 /Filter /FlateDecode >> stream xYKo7WP17EM SujӃlIZKjFC[Bi֜O?a!,~! Ěw=R98eJQYb=1+ l!@vP嚿gxMΛ)%kfxQ˘TRFSJJyDEhj/09bԺㅈ8q@Jjx0T%f6]ǥA) SFt%V΂wF}KCɭr&Zra,LQl7oQMɁV %T_oݒR굷 ÕM]"%zQWxܝ)}Fsr# RSv=hdlr,f>(ud&`#5  0h=>Ir(* pzem6-No>\7ChioAK32G /?Ƽǣ/y"m/&Ww=MnVlE#64^%fR}$HA5mQ/F|4Nn*հ#v70Xƫa!]xSXn,0 vz^.\9$,@`}{7q>;plh읶g7OW5 QMg?엃G =LZ~ڤd2>u1NigʙWCA *tcᓥS%宷K˥jU4;KИZ:IiH 6EZŬɝF)=F!4QNԧIOʇEGjy!SV0 xû J5Ղ.B>?ɱРD>ݦ@գq>Ї*\4Aw lo0O{,% 1"+\su1{eCg޲u endstream endobj 18 0 obj << /Length 2177 /Filter /FlateDecode >> stream xZKo7WQ %@@qd*$cI _>v-ɏ<`y;; % mXu>W4Ҋlu>ތίltq-Mn-\^k1ڭڛN igz\s3j~Ϣa}/b?HnvәW!gZJPF$7,tu-f|HOtUP{ﳿ^b I'2(|X^2.n~Q j %4Հ٭.df A8WwM 204"4Qrm}aPb1,f16!%w.0>gu ͡FFbjp ǻ?EӢYk+&! ~֐_PojўPY]0AqDCrrXvQmzA9wqʹ.ۘ5*6tۃ/ǡjT)29\) ƍ!JLi66%rB;6ŝD̓R*![pJhܭD<r!NYY2ZExL"i@=oo;ppFix)}b1S-ꇫ6eNF8sS,zּ'b6'|!Uzv1}w"oX(J^`ԬD0(1(``0'lWJN' jL uWGH0%udrsPaUj#,ޖ:xsF"^̍=2G$SOƕ6 ݻ`.k|@G[]/ܙ;b`?,m|pÏod1]굾0߹l(s+"Mf\wKʸ]TΧ 7G<(rۏܝ {SyynӶ݅SKsFIct>.ŽW?a3tm.vsZk@!HEC=x ̢߄5E.Fco`I>Cv8vp׸K_~p⻓/!f!ɶosnξя:M^m]z;nS|`'P5!;ة'k=O١t.8] cF+ ns$F;/WɪF ]g]Ig*nہTX* Hdۋr;l .Z ʲ䢬6)q$$wZSvgc:,ZD7AmQ. g%I-_HLOaư\BJ1PVʯ"Z endstream endobj 23 0 obj << /Length 2848 /Filter /FlateDecode >> stream xn#>_!$#nMA6 3BH&,ڵԎdc1z-Qv0"dXwU|W*ֵ,n&0ijL&?ZZ7]̢600[=]`7z+ [TF73{ou L6x2vw ޾ǭyG n K{\~:F[`|x&; wxKd.]Xez6wu0l@vv.w+ t3X~Kn8ayEg81`+SGL{=$(j5䦥c?Ww"&X#~BsK䵂s@w^vZ [u{/ bȎޒ\3yNWkC-3p{{fRNKޮ2+@-@d{9r" vlFi$RQ,.wi :Z^W$لΎo :0pL>DOh u_ bZ̍NRz0M" ɰ\$m|'XD#uUe|:p|L㪱MR+ @,7u n,AA(hDuQύA# Wh#8~\t?}aWѓ}wOd( Lߖ]BabS-OM*Bi6iy \2hqMq0֛qr.Z ԿI9pg)"߉+el}JӘ)+i1 o}؂P|gXI2#.qA@ xg+I,PBT0K(&i"STs঒*ߥtIQ+hRuaBj5$? qGŢPC9cN&ۦE8Q\9^ӘF5>{5ֺӏ~S@2EdWE %(J5!!n^>Ό f!V (rTH>8\0nX\0@$'.\> MNpvϱ gA88U5cF!u95) mJ#=ᇭG?fY^]O(S̲ 6tBP \H\cmzِwwDۜKhJW)7Wy;,tBxzϰmJv9%;KUETP`H֛A(}AE`dy +=?xوBj׳9g(NzHJ!v,;$+h(#:RԴaЏ$ly;z )[U **- eP?˩mcP= D\ƔV^13EaAyQ!'a(^"׷ `1@6;_ӭSWܱqI3#~=tJKV^5:z!K"Bʩʼ.G"hBL#Sr+1𺧾nRLfLN8#aI? F"f㙪 W\~ M0ݺN_fW @d]?JWX&rY|H~LGPǹ`K ? +P"VA4EC# KzewWfi]9t]B<}gҽ/&c~Utbx24r;rBx}ኟtqjEjUP\ q(Q`OdkGY\eNߋRgaM}K Ԕ" ])p~2*:q*쨝!sx|G9@C5>V@;ľ=aպy)UK} N_н^{T3, "K?hdbSɯmo(tQ ‹?,^Ƥ endstream endobj 28 0 obj << /Length 2948 /Filter /FlateDecode >> stream xZKo9Ws|5g1Ev$ǚXUI~E6[,yjX+v\Rm m msQ{o.gL׫K=wO4[忯[]PևJc.jC*}qUmK-XjGt^dRj~dvۻvWDU*X^qVP[k=Uѹz5cdhq1Wάʱ";Y؍Wd`ӛN]oMNr#Lt+&zh5֨2Fn{&;.尣e"CA^ͱW"AM}9B)r2Y[?T=zvku^-i7n Is!۟HFTaqؾF 2z2k^_f'mh)6n1q聇:F5wEc^C?C(y~@">Hht?z| =IM3:f,CEL1栉L*Sw=s؈xXRbN.ٍAUֿTmtϲmTZPke׸ه`dM؅܆b͞ 6Qvm_Y $jeQey2B쒃 Cfk,ʴ.?r@hq`X)dRxNdXFQ#p,F;P'`G2 HRO"i 5y9x@M{ `s[HA2 []A1&ɛ03y-2#dU @ve*0.ܲg^%uaj$ e1\&cNe͔e ~iv}W'8d30̟$XsdM2v')J KdMpwi4j݆alvgK4ڳy^? bnJHհk |e՜E)`H-v7T5tۘxR5E8ΜFU +H:iǻTd^ BY:fi| *ɺg+yL2viJÌR'<("鯼$`'(hF ]1PF/ќŵCMj|Jh:ڟ`XFZ>Šfh/t_.'M ]᧤䟌X4IOIZ0Q"2{5ӓ_sM4͸NSt [̄/%G7 "fY{;>0A1O6csuq?|b:}eLjo:oeY34t_O+õ1F.~R"amx01 on`9I҇p?фp5=.Bkm5KP%˧]8Z3ͤۡ%^*%0Jߨ$B'O@8ʢZa呰n;T$ka"p9.Fe#رBwoˡ3`4TG/Bcvc=zWt/@^CP)]9, gx&&ٕA$=v}갩^@f╯#gD^;ɪ! {\#a IeϯV"׈]d43cp}Z#ZA=ӌƣ],,:mre*cOCfh2pF(+vRH>$xq7?h@>gwhx׍wy$"!K YaH6_#0[CN9?КM<b@iEXGc@:e];ǒ{ n H(4O$Ze⇙8~W|-b&,hEU{Nn<;g7_y!зodYҨzk%.객*t쨳KŚ]ԅU:oGE-*^I;ÅuIk*pzto7/p*9X7:8!b{,"P>m\ L!EiEUݘ?)t8^/@lY-Ae"@ zm V^,mUӶ?a_%_4SfS̎UtW2YxgbiWAM<+utO쟉ڧY{;=/kVd]"}V~"J^ov> stream xZo_!N {{ A[43%ڧ%9u>|Kje{-r;;7 3M &!M킟X#jir9o3%Du?Շ[[^ |.uZoKΧUSvCŔimwqW`vw< [vI3 U%=Pz@l|^(}o.{-rY]{!yHɳb5:Mzś7nxN7Q(1Wt?Hr)2ïMτ]\<[x*dz%al4u-z:_)vu|]"gkydg|l҄ߋ[7vx33amYl"ވc,0я_R,U㗚̂tKp*\HE~`gG&"2h"i@,aM' q'4D-/ѐO8gB hp("UU)J(\ -y(1jaͳdEW+ccA",BLaI>acvƀtK',)d1'T` ti%_nQ{;aoalÂa%ZC2;:"a,{6= nFǵF  wO,qP+;}Z-gz2!w(遨FL`$#dS+ jӤ|U(;B - 3Տ[1\Y7-}|}{:xYo-5HcCֽ_h7PDm*Z O/6L;Ӂ߷LMosG9P Ao8ɶ"l)׾OYmæ_L~.ރ3]r< 8oܩ|v 1lQ`蓈 _@=? $c4*7ՉH*bt(V)+]5gO*qtDFQn]|{Rɴ*j&mCyxܦ~O16z%,l9Ӥ[ ChcqG@hї_hI4>-aיEj-:7]^E|"y|}qu||;6ͤ,Pnz GaGW7dmt&0!=/Doa2eQ$T(SŤB_KlzϣmvXDuۋ #:DN coERL@@8׶'g0ڄ}:.e*y?OUIu<#S_f6HYW#J[  :ה\7pZ0s=*fCTn =-_rF&\Gi!<9?6}ۤ޳z";b˿TR;e݇98XL>nxщ8<д啽'yP`Q]ځ7{hXU?ϯiQ8FkL=^+~,B(W^՞SWҴ! \IK }Y<4-TEqeeaE8-ig=[54`A-r/Xq9"~"O.ƖIvΌj8X݆f U1|WQZ/lg"{Vp_;b`xAn~JAxh޿<:gZWc H<r,P 1AcT) C@JWBʬ_Q-j? 3u&CZIuL9:52vy9J5ZNBAX8bIX܄/"vʄmR Jx`eͻduh$k+AŞh,6'X7Sc׫MWrfp ?^nRLN4))eݗ3gTi@ $b/릔KDv."\Ǿ(1řfg*!u&t3hkC& !GAW'Jt,so7T0E7nokȾ^qo8FWXX_HPϳ˞ҍ$Il:Qq(3Hk9X"%/OᑠL+)%$6vat=6ρ#G #((@ic%`R/G53 endstream endobj 34 0 obj << /Length 3148 /Filter /FlateDecode >> stream xڭr>_ʉ8$6q2Me6]W!-Q2ڳ_~Lk&$h4>ܿ{1n$*ܤąn,MVܯoԝi,$6;z=;hY0`kynI} o2*'ޖk!U)ݨ0v5:-EKdQgyQ~,d`x}-ǹ#7kR 5g`fi&f 6we3DH]9εlג9-\ha1I=z2@gj6 VjȆ3c6ky$Yf <b}Υal@{?v8L֝&&Փ"al)XLN94Ut637d Nh"Y 2 aS"T59`@W J ]+Rk?`2erB _M#*uVjk^.7{T ZzuRc8CFTGRIj/2@F@/iwڣ@' M6hʥ$8}e[>$g)=F `PW =Z5BѣOy&% kD)X,U*KY\/C~s jz%z#J@>dbx39oO?p'1@X2Õb }sC>KlihR.<ω>s bY-AgjrsGٵmXAUz倏<BO\o|H!,l#]ՖEip$iF?L5R_`j"FїCc)(.@w]x*(q c" v?')mOY f,%l'D8 d'l"k\@`7R2mtj?y@(^1U+ Z-%z[7\8NvPd_3ZWi=M6=H*lpȪ 6Z>m76b[u5׹> stream xڵXK6WTF"E|U4 R4uCۃzXֲwK{EJH(r837CxJf*PL$ʊ|&*I>[T? \gy媞٫,nf4g |,IgJ#3Nb| O}aFl'% 6R:~Ws EpVޖ3`Tڝ['[R7眅G?-!#"žZeȌI<,10]4r"*ô`~ӫ Tq9}@HLT |% `rI voh2HzEf0X l) Gْkn JThDkm+&Tp1mϭ ~G=/JO b?.&gA M+w}i/%',@Y6.Ĩɣ$&y fqev_v5ye!# UZQ8NdsApƁsswSTrE&R5^INi<(O#IG6'?:|F7i|@2*7GW*:C'2  0-4:dAк0_WaO؄y"G3ǃ{J"/8y}r Vl`p% WG5 3lƜXnbOBS<DLQ@xqrp{nNyى=y&nkɇ7IĖ8) &v%v2}~5gt$iŅ4?IKq;p+mY /Lφ9ǽMf^<v93a:ʿJ؂1c%]);[6XqLTqk#Z&{5=WtɠFA"Ӭst^. wQ) endstream endobj 42 0 obj << /Length 1608 /Filter /FlateDecode >> stream xڭXmo6_ (l#R)km 0,0VZvvP^>ФxsLJGҧG'g&Xq!'W2a|#L\L.擷WrZRreaˌk_۲':Y'LD7+[JL%s" FmXcgnҖ+xg^-QF!̔A?~Ulo HfFNc,ږeK~)-V1$?NM;&qך<]wh'* +ua!4?G1)yns o'1dØ^R&1ɞI=!yiuJI6Q0Ƣôk2MQ1ʩy^Xp=:9AiaAp=|yJUC͞ֈF5P s\$s{僆k pFrbuFP.КWMQ"HyHcч6ݵ_9?ȵfy\s `|ܛNk"9s!S4ngV4B Ԙl [w#gsMv-]|zc_ )[^e7]sM͈oI蝙ep׬x0ɬsѢHŝX=ډҸ@s7.JeSA>-W%0V^BN{Ɛ؏8ʴ`7 OD̊T1y:l[]|VI)N dȲ5ؔ6צya&O]Xi &t$>X(Ybn7띗jp_:#$ڵ!aBmCҁv iB M@Ls`[bI ],[ n;C-1#0`]<2 nkmܚ4-߱9HM{U5NoܜD$ EϽ:j3_.jg;8(IV@oMʱ`N[/Am .=cgIɆy˛}AĈĘ5U4o&(2-ˮP$ uӸUZč%E"npb7>厾1s9&MM{]'A9qg'n (݇[SH4QNmԐZg!uP44<Ɛ=2=FE>l]JBe -t¾Q1+*W#=Y)8*m.$k6}𿂝Kw(y-߲!ʠ>wcc:1lK e߇-Ms}O)l{/11VxXͻ "N/B:%or|W_{D#GK@?}2up2C>=UI`nKnOX[sz`a=☎Oދ@4rȳ,m}M=L,Wۼ] >:y/࿅tZ -}_<4Ux?( endstream endobj 45 0 obj << /Length 1259 /Filter /FlateDecode >> stream xڭXKs6W9%@ ۺ3L2MCl(Z+ɱ=.|ٴxݕ^|ΘErZH)EP:_,׋uiËEd"tZصe(Z m v똧pۚei~Qdg7q ~lggLRU>lfU]7))T.t.f8#yvF2NMO~=v<#@1Н|:S~sMd`^/1g #yy "xn})4i qJ9% j&Q&QCt&Q"Y&fHGx|a"P ^*<6t]Me(_>h"#)PlBxۄhPzgJ0̒1͡cVPBЪD/o(GL+>(Ծ螥"Ӡ 07s绑;L %t,xLCD+3΂ʔhff%VvΚv'za)dHY$%2XfL\oxN;RmX1B (0J xsoo%oT lViu@!G0{|1Ik"_ȢnN fW/WcLB\Оe UAlГ<%jg:C`S'&Gw %T*_YⳌJ-aށO]yO~[ c?,0}K֫4d̍q.B}n!oE v{X߈Wjny5^]k85jߠDس'"<@vW"N C+16} ߡA|Xl˶-70!A$c>F ͺ[ ˕$~YZ;ԅ~ǥR<DLƘmi Wi8[}P]n򬫔2d*L E[9|u'SmZ)*e-8j)DXiT`;t vO[UPUZ7|e m:QݯLnvuE \MI(uHQY{ʈ\f-|/5ch ]I&_:dz~Bbs+fy?^ \:y<z endstream endobj 48 0 obj << /Length 2338 /Filter /FlateDecode >> stream xڽkj4X4oIHKFE?8.((*l_Agv߯_Qe UTzPqU3YXooRr*˸ e\8 ;t;;940>5+VI0hq@B{<Q^p'7N>yw^SZ]u-V* bB\Qt&iyR8(Q/Qnx8-=H EG., \Q<oa$\Z~G Dae'VCBGL#Uad *IK"mfzt8XF;m*x٩0K L&D5?{%AK1bFlW^,̋?+S0/UVU !ȴB(LJMȕ i [h, 'NKAZG#E"DU$ 5RآTۗB 82WHK'J<c1 )kXul6!ɨƧ,\zO)ވZ5/mz8菜ڀ]gHH )OSy1bX}| #-)Hdv{PZR7@G^|Bb.@ l &qW>eFE!K3)"'Qx9L+ii :\ucIý#kfKa'F[A=zA5c5LAm2:! ~ ^c0PC/\MhckgG-AIv$(L70$2ǿk8Xkͤ=%xn9:Q!FtwD s)ęd7!O }_Ҡqc̞yic@n|54(lՎD֯*򱂷7!f0u'9WĞW';m+IN;MEĺ"sl`;RɂmȰ9,P s˫4&E["QvNݿcZx! ʽw[_ф;욕d$YFT)^"SFYJ2EVEDiXĘ?i[ iE,};Xf[ XqN<.1e/g7yW/FK5Uu!a5>vuEعuшa~7l+,a _G1,O41,Iϗľ6~7xjd:ydzW󠜖0F)o?W_s3!;4 c=G8mן4-_OLLϋZeu&wi9HK9䳨 N~}vz> stream xڽn60=ؘ_z(==.zHsQaYY4 ;%J4-z <"]\LXe|4[,Q9:͖T<o'|LZ#!R{}9;_E ȧx?q\2 ^*B=Za尮Z1-2%g;?֭=`_dFf='rI O;^ގ};L_V#Y0"c<U~b2\(% cae,6 VF}eis ˜e2il|OD2~:WlWT~ըbפ,Q7d25m*$ 8Ƣu^:!ϵ1pV{Dꃅ?Z}c4/ћST â&O[17fYg/',f2jM  jˍ>_tVA^n%3'iđeJY㮕Q)Ȑ60< fsn;Lsm%qu&K3:6 E[hJrqs%ߒWPٓ w^ 07ִ\i(h$ÉjJ~!)PVb4M3´q>poE%šn5VtJ3 ZONH%BmG.^ ZRƙcWL(p8qmqH PG1P KGyDgP_߆.-ƞ󉬒{#P8ߝ3sW7c7Nߏ5:>)R(rWa喸Ǣ=u:|$"z%%9[Q1K8 %J37AYpaL,< `bŴL~MWƉW> stream xYK6Wd$VDRO ɡ@sH]AkĶ\6/%Q-Z fN|#Yt1RFFq||t]ejXW7wND'" W%"boh PJR:Ծ b,*(m^ d+=LHbhXT:\lwNcBd|6']![w\D4{T#:rjJ+ױNI4Qv%k"vEV%yyUDͭ&X:}F}\ YU昔 /#.qqf,ksOQdkE i,NjP A qlCdq60j!JI5+!l=pTW|Ad`q\4v~IL`#pf z*S^@]M!qd*a pdd166 `;Wv8ao[V d׵HRjcv q]ciBg 6}Ca$7H=MͰI;x%:1(4K5#hq['C:ƚv+*J6XwK52[!Do5k]6%<ݵВ) gU. Ap}@g-&u1d@AwC!T 붬tADl5ṅt-=c-[cl4*̨Nx"w;N T@dcK4gge™uu%&hx"pN"@fʤWx#1yC>Ǿ aYT]7`mYF4z¼^mlm `$2n14C24F-pb7Alݐ & 9e/6k;.X>K+YQu`~R>{kKcu{F^Аu#WCg=z8R*^Ru- ,>suϺ.lίb]rI@k/0^}z.W[Gbf .%gS fºsՀhARߊ~s"sW(f ևy9޹$]KZ|i?¿fodDp>驠 .N"j'@MC>eӋ;v%m%| WtӑaKǥɾϗ=O<|0l4A۽δχ܁rV z@w\8YS)l8pqԎ|Zqet^<~duޑ^Kf[xSRrJJOI)IZXbЫ羘DΰZoM/.wo t菼J&^_ ~M q endstream endobj 57 0 obj << /Length 1150 /Filter /FlateDecode >> stream xڭXKs6WP3't=niؖM ,@$e# PoȊCW/+d^5LvT}ZӊYyW>*+5A@X7U~&AMD3eYf:#Z`h-[ %`^_+P^Ka|lL”$XcR7vTDKG1z%V{2-FL 3FC30w !PӈFkg4ӵlk\c{JE\env46%4`6L%UZ$ ٤P(6 cx[ZP 1:^ss4SE1aak"4I:"m*nmdZjDXy/X{Լ_}ޅ")2H{P>v#UZPq+RQ1> stream xXMo8WЃ TZ~Z=, /AF٤%C(n]B 93yoHwD)h$))d$Mȣ:ZT"4,fa1X?iP肦\f=}qMSdOWb3𙇱9"~(/y5cg\/L@~ e) _L)F,{NE"REU١(U TzZ'/ø󭳰^C).C49'~RvB{|>#ӗc>t]YߙyPx5)7Lҁ2 ,xe{=6zx"ZQLRJQ-רzi?ڧa5 @,M> stream xڭWoF_aE}@X`m#*5ԓz'W1[ゝKZ]NXvwf~3˓K!'b?e>QC9Ir1Y+T8n3'[~^vF©r&XqZ J`%\bbMbYqUImS}nU򯗟/羭H<)'*t?1s fM|qC_xQL\z27_OՆi֨P"I`MB5 `6e"jK@ɞYAҠ.8fm2$EKfO1E~$7," 7$%hh0\մ&yLG1p5l\aX5 Zjh j*<)fDԕAHcSKÆWv7I<_9&xO Oyi+c=+6 6Q{4r [ޫ8K48r6U {r+F0Rbh j6JǙuwVj,:l5"gTOL4Zts+ T/FEKc>J\U7KL30zFhHtmv2Wu$`YjQ{Ru^,h?UdmSƋJJiCB@H2G@p=]ͳ'wL{H{(&t ,@Q`%ÉM{~'M tyG{S3`00,}B̯W rh;Ogeq4'T_T1'U!eM<\Mc&NrZţq_ΛffZH)EqKT Dc;ʌD)U2Oxq~6 )0BpypX\Q ,*8ֻ.o-SWˬC-=N-t*TST6TrX|Qq-.¹jt e)Rl&* k$p`㣏Gx(F4RB᫠t󣗯ysD)|y#=诣gqbͼ1LI+䤮9{B 5T꿐R1;fE< vSX&ޞLK.D9V7x\({o5 x lBHxG2 k`^bۑυa /Qe(׌,xvqyDCNr9wg{w_auσa9hBI}ny_(ݖRƖk'u؏ o3EzO{7+ 腧]Z{9=YI ⦨CbYP9s<1{J$RG-R'gN%ĆWXyblߟ-~?Wj-'9`G>VSWR+bM x񴦣!@!G5_48ޏ bG6@".N7yK$2o7c(E?7 endstream endobj 70 0 obj << /Length 1582 /Filter /FlateDecode >> stream xڽXKo6W6f8$%J@QiwЮ)]N6ΐCr$A| gyp8dp(d.L YdIPiLf0J:tk|w ؄C[l%'l߲ 4dr搌A5ov34tk0zG"-t C:SV8:!= _)X9/ pdhn$(`9H@izduH;@G #!k ;@@q ([@m|0aDh62@~&c9@v(,X@sw(l{.g"#_lgUK펅/%)‰nZHhIp"-(/(AaGc+5BBzqu̜a- 9fi>!/KCK3󄎮 s8r GOJE*9XX,{.7v%>THS K4_y^4?w[^1 \Shhc9Zzw4X.1c;S+');|^rIJR6mv<{?UFim *w~$;W/[4 [K6W^u'O’6Q:x3# 72"F0:K*V@ɻ/+*Q3K惏"e`"#hX ؾU[aTDTe*A/xr02OPyy`dB%\h,b2)t2uxcFZ033KE'&z/lhJrTD|UHueIk3%f 0ΰ{.pPYnu{ܽ3.5%Ͱ|7 ڔV~fU9${5+:[8ԿE;)o%I)1_3й'ṛ+yUK:Dr8.<'u6PO%Wv58t(2S}tuWCy/8~lUPϿ5^6R]òd\9;˱KV mؽdK_ p탞#%WLH&oxvSC6G)__Ot aπ煾W2 ܸ*\|꽤@vqi"W3D|h>yw;D䋃U&DᖙN"]u@ )ĠhB$ bT$vg?f*fn/߳ࡹr̈́ػVt;kL{,> stream xڭZs۸_ɓ4$vNәδO{%VNR:w?PK n~xoʅɳ&of0E^TɊ^l?/ǼWL}V"gžIK6Yur26x4'՞($ hvk5!0|),+A^scy37\~*e72Ѷ ]-c. \\њHm  wtL*+\vFʜwcuDžP8{wʑB܈ !*+_SH,nj,x1W^oCkzO3s^Bܤ &[ql' o> Ը>lL]gE|sMW.fG '11b: s>9fR o'N5V9_gQ ܎)̋KKhG@ 8ep^HYUh&ak"dTRuy8 S>9cQߓL^19ldydEUzU}k!L57ER j.'8-"E^$k-ljЖ;ؙ-;v$(8L9ݥ\2Y$J>憔e<7 ?`lskZ-1( qxCRo(;i~AfEgUfDR#f;D>+X艴/M!Ǽ(fw0}Z-dOsV|V{J:qs&sM髹xpCJP,!!K_.V|5w,IQ&u`":]{oMn"݅Xq<б򩯀 UB5~ i)DdQ1BϚGq_:*E!QdBeHNY5bO\<\cS;uidKw}DdhvoΖ#;hv^ b.HLs>J]N&G||~xK$BZHRl/RVPf8 :Z+trd~2~Ad~KF>su. [? JŌuV;;Ep9lT<-Bm+LeNא&_q_UR˷#Clgk{'74e93o- ^UYAͿrT5`C`oY^J_ S@@HwW!:rD_fu,Ͽ 1fVG"!/W?^ ,V u!*_116TSr_[ ڮwGݟflQ2 2@UFu*_?@9 ?ƝB?d -M!f O')Embj> stream xڕYKsϯ𑪲aHvf6٤lnm%9pdZZ?~z2A_~:bU sr{blBdQ6OnN3Tk4;!]Ÿ 3ijV D-?OR[KdHJQiǙhwiϮ;6<o9X~:'Djn6 Uw<Ŏz{Ӊ>93N`#4%Y` awf;du4^Clk&q ͽŽ~tE M7etJT̉VAD[^qF9;{ibsr5{a0dcLXt~HX ]90[EFo tD8B+ܔ襸 M[Kіkb?t*~7](QShΪq٧,ۡ ̫`SP4zܛ=Yw jDXV"01tdQi=lQ$Bh_l;G?w,*t\${~@;Ax@E]̻F5K#d<B8/W6H7`,UthD #q+FQБQyS. pe*ݻ z%l$2|7FD\|X"Y 0y1h.: Nтi\Z+\XL~f<) :RgaT81sﴏR֢>6Fk)cjO8$@(n$닟#ganpF.Y"k(]`Y\ ^f&ljXwiT D:#Bq9T}K.=$ӰX@<]-K2JS)Zڠ.`Kߣ0ᒋDFď(YJvU FXhD9LN Ti.@8 Фf/[aupmM|ʉ#N@D]M$pI0CLm L:(sy8Aǜg'>{}5bImIdhFv>M;]n-Z`/9r˜`[gN8wDOBDs1!.PrQ Po}~hW|Yn 5{j\r+c{䎒$:71D/&H`xR^pH TWr{9ЕUT1E S* TS`C"ۏk,>?T\n߼ 6V܎+7\Lx=auMh;aV|ɺ N>Ijb9OW#$AdN.[>LLn0sD6{z5DǠ~t:(`Y{K$VGzܿ%ĜZSɷR= 'h/*|o.=|cLsWcUEnRm:Ֆ0rKd`PdB FX;9<ҽbmCɍq eYSm*=+0!=pA@{$a3}gk<^&d?2j%6&|S8('̧ͧy,̊Lïћ-"< "+(bf$h;>| ~(E/vH$^EWIuS0ovx7<&Bc! o[38U^LVزKRͨtWSai51EnxrYj(S.s̓MgX 4V"K}1 @TV쑌)*2;luZ'aFt+b ?ċ:U{RCϡBAax=MMU!->^;P~/ f1AA> stream xmRn0>:6^cǢR CKC(aH9|gbSPՃ'Y{3c1̤%R $ņHe Vre=)״=eW`S>g_B.uagy>̇dy@?9pe,Зq)O/u{0_<@teYxhtWpV=sM}¤ք81];cW#񐰅t8b6hN V{ZuWºDH !cvFBV[F{lr<ǩำDD߶Oc7'cr*A(R0=Sz[&جmNщ"WX}Is+SHq֊JeDnlNPEzJ`nT~3~ endstream endobj 98 0 obj << /Length1 1508 /Length2 8089 /Length3 0 /Length 9102 /Filter /FlateDecode >> stream xڍT]6LHw %50 1- "H*HJH H#ݝJOZ߷f{ξv}sD!YaP'(@NCֈ͋ĤA8Ʊ p7 *_rp00(@ rs@ ݰ`.p=aVg0b4{Î6@'.Fx=" tv$Y=@{Aߔ@g_8z?0['<N0! tU/\? `u8NG2zCv[BQ`߁@'7C>qZ?:( >0 pt81+@Ar0gg0?ylp\]# ۲@Ai]Ww_10;0 -$( ^6\7v ?pulh!?l_7}o  `;?`!^SY?( :y'+SRS}0// W#zXWDln/ 5 ҄=( `͸m>$qIpB >4/@BxSS ;0h و:T\TPyrl I3mfr?_cV~?I$_S`9koJnLhƞy3\'SMCOz M)]_³KɫlnfMG~Ypw79jL6#/gyϱc|My.'|*x))M(QOF}eTɧ|K,IL EΆv%MPhQCK9$HӺ*SBV_rPv^rY9½KnOQ G@FtOGosZIiD+☏GqfZ >z.|+ m^(lbi  OǬs:MxP`5 Tkavگhe ?nw0vhUvkM!D-PK(-~ZP}%F<ʩWd0^助ravqg6S@l掙~'n"3dR؂ayWQADR1S᩟OyI$[,W# 5Z.+J#QReYI)Iܷ9>O1э'6EE1})F͋}jN2 S gGR߅ϣG1=gI=r _EIud!Kw tGXY~ XhkLbyV- Ć n[c ?㫈ȲZ+CnCDX_\^n=d`%j$JC,]?2S jyZIF?+^3*Sެ~l<%qs7䳽z/s{%wSY>J;m|ۃՈIVuaTPV٪z*NTmq<Rޛ( w^MėSGmHNK>!)WU̞u{ջWz왇n9>726xxJ4=6N=4>r ԏ%rf(#FNvQ?;&N>Ϝ ?;l\ZRoBh |UJnZSꛬD)*@5 ȖJǎ|-׼—?iu*$V]ݘz z}vʹ21A8 O S\?!l!RjV}ognwĆ * ?HN*WUt]_9CEx287JM P+~t}B8`uk,x d_29j޼!ՒHyD(N;~e@[&|-%!z[umb~Hs`TZ>gwL.ƽ>"K B9k>45ozU-Xʇ ᦭`'ٯxq71?W%%$y|#YϸG~R1b1"̮ÈG)bS$h PN7="/!3Z()KZo8"`MhMP ΅}/P/t|䦯r!qh~5I7R03./W"h.iƯ=K, `A;HPBb~ 0XZ8hqo2Ssm{UbKrF4Wa)n~qNT|X b\h6]ecpP $'=#`Z:Gsts=vUbx":wg[IjeA-lUP ؀մ#6,V_.::Rݡ8*&1 ݮ9.} 8GD>y{tq*cHA1;`v9 ӑ!K38C70.X:M:?e~8+%V3v&RFH&#gXeZgwbU 3)'myO7"BkG|gZZqgf]_fS?iz}.l7- VŊRor `%ZcPJ^L+Zʹ2\Ebܓދ L{A)zMܕ!k&F[4S*[>Ooo?e7; 4~Re"M5N/Xt]MH*EwGy$i9=AI#HƔkP5.'=ۋM4bLmD33pӎ.Rڃ _Rt3]Lp#T?l*7yE-Fˉ9{=AIJbm=Y9zGi8Iq;Xf&vvڪ磋'߷K)ckK*! cBn}#к'/GG9+ 9E yC+;3c}!݊2nL vfk:2F= '+JG{=w&$70FlFmPaO LmśҚ1BB$Jz˻ iiFy'\Z5#|lj;]= Tw4Zڕ˹ LJa5 oF/^0 wšThlrΧ"xow0^[uߒ R:Px7 $t,`޷c"$K鑧[_˙ =WK$RP+:=x͟˴;cLav鵄 9/RE4},:;P$տk{GtPDXчioX9'&EZr*muxF0=h,u|0MY]W}W$g|kK[ZdDI^˜]L a]#?7vWә̵NStlQ|M٦QiS~)T5UK")MO6+zz+,7 j9v_wќjey~BJWoZ]yT^.4# GHXq5Ujh}_*ݘTaSX 1ѐH13=& (32L0+c׶]jk6=yx,nյ4WkT@^J0 6|eEn1(f(cLNڡw\spuc[g7Q C"mEb(|8 ],xp_b d^3$c s"A.CvX8FTM&Y%e:Jl*3J;$F<~=7ܚn3HC;QqȂvW(꛰"O=*jt|F?Ac*`GZJ +K.fGH„]zEX6H %:j{oIu1gvw(C0{[zih֮͟OZ ' ^hGNYbZsE}P7~䗄2 n8t{gP5a^}{R%_U{2n]N=Z=y/6-%TbGrm=srU oH_4ڈﺌME!+IJH0;WL~JLU.rp8M۩©~rw1.CR%b(&z'JuL /캇cIBFShame'Zfzn)3?>6i&ȾW>*U+W`dGVZ#ahPMvreǕ KvJzl\ ^) ۄ܍mSW9w,52Qyd&,oSi#KFcZ8{^{NWT/'scVT~|d.S/o]{ YVPpc+I/RԺ -ɻ'2_,iw!&H:>m$]ȉt^@x;Q}c*t_MMN51)%bʧ=pJ6"iͷ<`G]aMi*r[+Gmŭ*k&Y1ЌX;ejTGɍ5jDjpLc9V\WVl*'-(^1zqċ0 lFDb)mu*gJگZCHg 毝*)*V#wG7d+Dq!,Vk۟~0Dln)ؖKpU2Ji /aQ~𪰏[HoAM*R#"pz1!MrʠV?jPSa=vSAL`B&Ov5QX*~cF37u{]ݿjʋU7)H7.%t*ٲTx2jeRk&P3yO2`Fbn5DŹ30.8c$4.TĞ8Sxg#SpWvl '6 7wҝ>@K̠=}aG0ӉhϢuőw2!X*/"f&'s .a 7\89W|k8ysT^XųGU7c,2$I A|$^8  Œ|i\oGoun؈~s˜FƼ{ty)<S4G<Ϻ+Mr/~jޘG tq`DŽyräcֲf8 b} 8)kOAoFzE}X~oUԂs$g.Ÿ>+nآ[aHtOc?$u{Yez}?@.Ial= RԢႍ~NPg1.fvɼ/ ;r_ ϧsBMB0N*6\WPlɉJG@smth}vD_tͼ:S1<-CŤlo;'Ɨ/Xa_Yd"fֺEQX vdcIBNrN6֛K͓ ֱ)kam YB\S I߅U#%%J-}Vyz(sẾsc,MA[Dt3UDYYѹCǂ5WV Ճ:$ƀɔ9m=@EӠvNR%baeeES}Zlie,O"y&F›i42Ur^ /ׇo8 NMv:Tf?Fɦ=x [uPl_>pj,\{(X[%_ ڋ&Oٟ̯ğE|@Jqc%&ǂqٕAy[ dh/iB d{?6pX4?ΰy_KYU!}W]]2+MNY{u-j)6Cd;.(t\,g:&M]aL"$N$Ѡ=t:;+^P©uK3r^نK"tO\s>&|&0Wucl ˖}31Y:7|ru{TmIߗ$;QAIB=Y”$ 4vs7/iR endstream endobj 100 0 obj << /Length1 1921 /Length2 12463 /Length3 0 /Length 13641 /Filter /FlateDecode >> stream xڍP;5@pww)P\Zk@qzrv9?sd&ɳ|Zo&Tdjf& ){WFV&>6+ J9&_ Lf`uXXXXl,,1tpHݭ LY{ [|ИXyytځL%-)`jr4|L@;&g !Z%@rvh@/xZ]\@΀5y#/c p{Og#`ne (I3z2fm]@+[ɛR*[blbeGy;fI{3q;; IX9L݋kca273 37Gf {+'76o"2 +rbx"Fug'_ fNY'7<;^iھ_*;U\rOe1rMfa\0Mţ|ᩎ2~"x!QN{O;: KwBrmbGWlwc^7b7ݜgi,Kcg'$Fr[ HKF5F~l/ Vიm%E]aJ6l)wTF@!+5)k:| ]=+Y<)o k4G 4[Fs&zv;G9S3o/n&)ChDu|`]"X}z1M>>H?|PAZ2ջ0ٙDxD6NNt[Q ȭ{Wy)ހ Ʈnukr!YSB*2}ZkQ.ձ $!_lV鰖;>IQ qiA~LS t~?M1m+=\*0c>Fy,X/r$یo{6YQmxӹR>/o`ac4cNd-̜HHNBz~' 3! v#G/w }o$ ޿P?:Ɗ?-/nt6#Q(t'x ,V0ң>!ݯ'+c#<ʺv{0v 嫉\- E]F4?`ix wq8gV9ʠ[91ΐ3aI~hDӟ6kI%|Zk&!g"rIioy/_o{}]jZ0 cGh_EQ?etJW7l sB{9ѯ|=GK =qfvYKF|^Q胫?3U/NUR2G|#CY3Ҥ3=_hpjݑm*%dfX*> #|kP Hz>2 d~)pW))kVōH#l#9=G-JdsA E%HDN M2hQ=фx4?"R,2"5&:WS4oq3(YZ>pAR2{!j0$ lQL^aH g >f]/9"Xb[ g#j* R9 &^ 7I":\U+YPELq}Aߦ?EL:]z}32{?dr^tj(~7VҚ\FpuJpw4o]BC]U_t܃nJm&#'OF˲2ЈH.u~nƩ e_:!Onw[/—y>9ƴ$=LDD ;)r)X{meYkSI= æհ_َB$xϟĴd9_I>srFPl.cbm7W(h?2PsQ|ZNA4te +,hR] Ӓh3ju ,f:.X2PE_M|o(ɹ:bPIVMPuM'o^ip̕P+64uUuvnH_>[y<;̘L{VFe[gvQ]j*s. ]>JQX+R.Z"鉼4s0b>pp,g yC;X7|%Y9ݙpG$g,sN#`."NKyq-BF4}eC+~'[MpJܟ9qQaʪ,~d2 n=(Ee]\zm6XY@o'ߜ|?&;BpȁqW*0jg>HVH~KeDz KU[,OYAԻ ̯`stn>5T\@aMuφP>tR1flWCsS>f!Vb!){J_Q*. =~ ֆnv|Vp&?;ʚ"#;3ǣ$L ̎ѵɝzEA $I182VmĜ*YDx|_ol9Cy,A;"\Dp+)vp]ɔY'ְ*H-ianR{Z;٤}d貶T-;ؒBL[7xNzQ&%d4 o#Dr7G aRބ!/pO_w7*ܯ5;mO<,юì 1 mlkNP[^Hiǩf>+1a){U bM_:.ZQegy<^ZerfjMmGiN%,*=&V^ZY4#\P1Bj3=Df֒G!c{osv:S*Y(1$u趵hH{So6𲤐oWc">*~_~v o:UAr>gO_~4Wwh<T7|ǐreKr~dt9r"`zVoX6q%*zQyNM"v 2Hv%UPu:(U<=wa%YrhQ|bde}QDnl|z> oS2mR۷Aхl^dbaD.)gd6 RA  d|C_gYJp`*pUjx\+K=] J}A:Gɂ~j)g].|] ٿ5 dsONkFwM^OŬ8 ~Vibt3? V,g ;q'C6is8~X$GM@p}JrW"u.*,nqlH: Ļ `5#}!w##rHS$7KFଳf((O?(KEz~܁T-黁6l2 6*= MR0n|u6+;m|o>"`c =$urf% BFix{ʨ(mmhӖ$7?Sɑ1Ӗƣ]L_rNg(xlk |FDm:[ch;4Ƶ;[ᴍL(dly{Ed C^gYpNHcښ3BQn8mzU -Q^W(3:2Y U_W&[߂Ӿ~u֙8.Q@u9ov1@Mm9+~^camZkp.[ `39˼H|A@KzyP,iL$:Y[qXH h/Vʡ$4(QJ6}:IeyC gEco9$O&dG<Aj>yXIuoa Bbf\g! Ļۮ 8PowlXи%u1rIx 7Oےv7\=vR8z?P0ŧ!:ŭ {f\1iU]{=<`3zh(u^"z9HhfZZeEKeO)ʼnc6r7jEunr;+TrW>$5*[,7?gh[Ղ|[<20M>VF*нz@~y?~G]P &O[+/Hm2?̅!"tBzu-l!ȷoBXLp*RSTxGju+tEŽ{-/S P)g5r%\?m*Lz=J5_sPȭ8%0dl;vkI4Ӓ檬b5-']XC{=>范An<**{AN'!7>[4ΟayvBڣl'ɵ6VS,q\wh3zC[/}duj2kMEl^peULP L*ݝ9#7Z [>7ۡg;+!\} M=4ztANLG7 P0Գn I "c ;qoL.YHܠrg)jWܦ<5jfd4P =mGun`'C\^w V8x`oͭ.K<1B:2`h}Zuw؍ +VRT1xY;jUW`)08R;*U!<\9/V56 ͼ%G2* T4O Ykܜ2D'TF}wّ~8c 1B}6g1!1A} z`NVo۲^H'5&!of@GP X}.cmcXLwS-Rx6u=r\K<91M  fp0Uܜ×|yPd:z8RbBvVRELR隣r%]MEI\{ ,'k fvuOˋ`C?ˋWᱜÚ/פa1RiN,ȝO5xw*# uZZ-~J9Pu$% S 7K䯚Q&84Ѝ㷰myQ 札y˲ADҟ4E)_l^0VvժKI5i].~u ?kݕaAr]q;ʗ`>H|FB[ShV~/.󐛰oFpX瞺r?t,Z/ӑc%)YvJ[*+7We~G5*]H_ s3vٶj)\d4RvËJ$0г\2:y\1.(IʆNGJEdD"̾|;n({WU)i=BDetX7k0OXDPM2pzΟWm5H矎%elbL5;"5}j>{/G\FX:^U%<7]“?*쫀Iu+2GAfj}3cJ@֐p F7-c+ԍ,+.aP1"$ulj@ ;|VncڤPRG"dЊTǰѕl7VU.7ñyw]Vd|b8$%}MG^$LrRH{wX3dfn$dBnc*'Bhl߱{|c_ZGE!CcwA2,а&^([/L+ⅮtVn/}bS'N5YXX]++ N_B׵&mCՐjJOW,64OLܴĵ"2`*ulޡ>FAjdS06/n36 ۑLQ78愐Sk3=# %b[N? >M=PiI+I;5`]'tԭW˻lU)Fbz.-*sj엎9OAbhϨ>uOeyA jR?K?# ¾O?EQ0~v3Fvc=<-rRx ;dl{CeY[$4?aSF. TQ~7*a3S?i]RI!z?o)V"FO#sB  QAɰiwKDvO<{-=|KCiu 'l{_S/ 7-`tIMģ#u0Ǣiɖ>Վ1O_7Q=v:<ϟi\>jGYȚ% mR:D]+w,ȻHW:mp~yVø/pJ ( GǃpW_ '>)[kT -Mi  MKRhQQ?^ TWLndGVbqD#/f">򵾗fTptYHyIHUwWj/%3[ٖ~(%.Cʖd~)ٌh Jfh֗oH&z CI8CT&,nR]k-++vFbgR2TMѴhk0j`*~!؏O-0Ni "OzNX~O)54}Μ7(q`qQu5S v|nI1F]f$j:$-IFNilm斑B:(0 0tl1ݖ%t3y;+O_;^Zmдd ;fSUrϜ~~9pͦ$9N?m㝬[vyn:e4%auH=XIMZOч,{FO; {)jxbnnԤ3IUlR@ GɊN8+a{T4^wt Ⱦ.\Re14R(sy G ->*%ĺheS}(aO(nGO[m'_$4hG,VLW9`el}? ^~= }új' /gn#r6Zli~U.{7RC:JLRg] C"!NyO-Gӫی^^{51Nhd^˘3ΌGKM{,8'~EcJt72fg BDvw: A`)43дE~35 X ɳwOV=|Q|./嬝>¢ + abr-O+eV?ħ w1EU!nN<(G>q*hWG2:>.&\kd 9sdt7#}kaE ]Y/!=eCҸMQ"~G ~E:7QLT/iS^,$ gTWJ5( M/ۉ"̜:ghq#S0W4CE8!mgJRsO{L>%si(k2NqIkZVNio(^Q`cT=# q}^"qN0<ړ #-Jv#eMc@ @mm;A͠=@4MS9ҡaiC"w2 :5d#E "1CiV~666xVLoU:,"|>dt,oe[zhuxFv>2MfI0LjRBw #wEOPRps`-ͮl!Q0X°n^GR:'y Zdd~nx;MCFjbQd a|@T۾XcTp?wA6+08*. \=tc׌02\@,Gaj D%SW$x(CJ 벋I|#6=UK7oםU7954%!ž٧UCA"\XVj ;Ǵ6N4}ݵ>О8 j1 M91ǤJ2h/` J{,ZY=`JgX˗2,unfIє,UیTlu.'4>wn@AbA{9&xgDwT6J!u kNDM6QHLCoys-n"LݙKYDOq QPi%W--YIԉa/M/Qvp|Gy;xP T3L?.^éRBS"\{ᘖ0yTwW"]5mNK邓:h}ozBΊ.ոvCp5kڨ\Q܂nKw]sJ X'7!"9ukJ}[Iz"6Ll$45(8S4YnT3zSMbԱ1tmְԿ|z դ۝_?v@_FDy)x-ޗWKIrlL,5GȎM-2z9l?':+~ygέ50Y E%ln;lrjIߔ#" !0H!x|SH% pC[ϑFTO:dOr>nh-7k9*j;+R3pAH8'G,mEѩ~$!R-f9$ut.9q?%}F7<^8d%kPRv7x"Bn](ٜYatM-?Iwr:]3iZH)v 'YNby`8=\PPQVoΒ1?ۣknˋz=')Q:ZLgfisQTbM/tΆbId&Qa5ܛa"Ѓ].ףkK`ݟ뫙B{Ncyk5C+r0'-E֋;ձ|~em3;* I3+'T#TxVm/mZN]9Gg~X'xg~ W߆ԅ  XL!V j!^b;I2M gY%h䋡|(:N =(QCgqt94X ~|$R_˴~!94=l~ҳ\̫Bw:;LA!]&R/Ǣjiy NHJ6=GA0j ke}<J$f(Xh7(s0B2 {a*qBxq:IJq+8@8sl1S^% ޹_FP2\ؽczAKh[#oJ !"Duǎ BswrbtD[+N = _*d_HZpx5<-sNyO螴Bd&@7wi:X\Alk Xaʜ(wnf:sau$C(3.- ۪O ?_ܜHg]`{ C՜~5^cvDIprJ,Dsٳͪ5uzU_wmpkҖ|4Rit~$6>Z/r!Ɇ682,Tz! aMUXrkj@އ1Ŝ!Bze=8+OLN\N/.9b}C#!GDk>gs?}32,XDI`.שw~΢#هK[?= endstream endobj 102 0 obj << /Length1 1518 /Length2 6806 /Length3 0 /Length 7826 /Filter /FlateDecode >> stream xڍtTl6(HwwKw..,KwwH+ ݡ4 ]҂ԇ>>>}g{kfaflJ0(G hafև q pw * y8)D M @Ox qa>p>l^QQaY0b 4}F[3@f #|UpsRl/ v= @Ҹp=  [0 z-W0/_r+_ @[[+ `:BA@gwؽ?q~_P+S-pr8WgVa..`( ppid~p6B< 8& ({:pJ 2 sݗ؁p܁`O'^^b؀!PG7:ˏ >n1 ~|N>Q!@X@@ȟ*=τKv/]0J7䱽?O濢J)y8;Y"?8q/]hT#_A<\UEAj+A m/e75k(X]<<qo|??L~ }p|O$[n.( q//`(`{8qwu"ܮ; CAA~^Ay."vpqI;77Bm=x 0l3?wl︨}Ź5&y(o36'3\6]/҆"~kfT[N3݉vq427n!NO [GԦTg$&d<++Yy9Őhz,mvpa~5㪑{'~ I`:Vy+YH 5򱹉g;@prBi;`MO#`b(oT{(-0*%n5 l- )_~+*C}JJ/П=-`Z{}z]g U-sg^#m<^8=t[h;} O(8S1#LG5,K^"kP]No۬:!h|5ѩ}Jv<3~t9rIXsmqVlYjaF0f_̬߮k{]%\8 _Mɩ@z@]5ʥ {h][YQnQڲF\*XfkDlI+nesz\gؓ:xc$~Z|̫q4qTR/J_5_R˾&\]}MBSUBn-E>k,oey5Ԗίݲ6#\{jE ?&ʆyM&<ڭOyY;k)S+]h»dj ݂u{Tv#Y(JH׌b85sfK}_s 35 N-oY9V6rU-++XŸ}=WPy4b:SHE] 1nt/*l ]&dMj$3q{Ɉ1;JcbPV@Fw|w2 kgd9 DTN;cL/<C0/jɦDjE 3[$P)\5XoKw4nܲoa)׃eƇ)c<`>E|tqJsU7r a%d\>o gF}W؂~ÏHΚ\[T&Z0@xOM렄HUzBK\C@GdRlA_2_>'ۀ5<5Hޔx$+e0x܏ SA,i 1EeFּw-/[hQ(yu&HQO~L콆pp+eZXQ!L:0Zkdq"188-} &g qOPy\(iyvb;0+$L`\!9:-y#Eu̓Uxr'ǁ~Vm4pGvɩC?pb1 E8LoZǝ):ڌxoăU4)_n:<T\br4}iLzt',фΎ# ?aK4f_$nFLΒoY`.Pp*S)Kq6WP :" ?{Z,]dMx7FdC?#S$=^lc2pb7 VڑZOu4}W$ě>HK{n30#_S@mX)Ӹϓ\Nsnb/HJxI4_- /D<cJz`t ih9fWʵyexu/"(".dzdR 8͟>J'4ac~P !|EU4Zj+`/1N(vioލ"GNW! o$V|YN$E4vcQ1JXX[S0EwǾ{e尅Є2Sf"7ߙ=h#{9C@gu3hxp=nvϸTs:ؓD AͩviK]t ܕO4ltMj|@1hoƨ O sZD"eH܃EkL)H7c!]D)'`-Ҩ;д9EZEE:ZqnOA>Z/Ŵ6o *J}ŕ "Ҁdn+lq|X֦KHعL^@BXvګ)km:;Nm7oљ-*gcj{Q);-Y> b }-C.D P_ 8hNn 5q_żvQ0VW5ZRQ4 c "u&_>qq{y ?mqLоGhu.-&9[ p#D0o3@tr}~UW3C$봚̇3g&[ zV+8^E?z`ˌ,'5Cq\JWX靱:sIyQ;Pe5 uUMMR^AqH{cNbjPTQx] sـNDg qO;ׁ)̖}֏J!Yo9u:|'1xty—cŮ-Vet[(ycI;jn!CJ 1飬"1k䠰"^\msհ,!}=?,h~D(tE8=OJ ~0LމfС0}#,$נXsRݓ2i ]kX1)ԹC5e$dڛih*F]UgZH+UT ޴ v/q *hHu i$Ҙ畗38xh!2CIfo 0N[Ƕ8_X;1ez淺 QT tQ1ĒWz? )vj,zqeG[ŸmIje~eWi|3A% rF鞩0\m ?+"W`32&C(X| .jgvz+Mh'}6(ׄzlv7fԥ-.ۆ+7$szhqf֍(1Y-P Z$=8*(H:S_ilc{'I2$Xdr=DCWp{;b!Ȍ~t W5\'cD?9\K+FQ}~*+>|DG{f.]Z?rfB8yO{<ƚA^ 3$;Ǧi0BTnݖ&|?7P]yj2^9;FhaZqnTOr;"< N1cNo{~QIt< :YP="Єϸ|QgscABݖ8o遠N<:%U_">Dr>1$J,wyTS\~4B=.t- k`$7sC\z:'-QHeiuJ/$#NWR/&&-~,}F|v.!zŸ̹UщH97",С~5sԓf`"ǃoQy ?9,L})poӝ:I[n B0>Mj@:'X>N^X<^gړ' ,s$+*mUE㵊eûwj[KӴ_iz8:^D=Kd9Y-+-TM}~xP>ԾLboǨW{z,p#A*gCHWЃkn W^M[ķs/,0Lh @;z49U*xز:$&Fh;%lJYhV!Zi$1xTT@ɿ&r%].dl!J&ܓO'QeIHîM2d. aXmVRU|-{X5ˎq%Fq].9E yDjvGtWoHe[|:AU-r98%wioKf+teQA |NztgiNfZͰ+,U2@T!bX"㱧\Ǵns-C]to>eΩ*Qe`V.g p0>*r*;ojrsAB^XjϾX(.L*퓲LǞJ*.j|mf3bf>Z ڻrQ ?z{4I2:#PM(w' {˸оg|xդH޲2B]}i1SUUP[7̢C^.U|-m,W\.kJ4t2"QUi.:^CТ[se?#rK#>v-@W`S\1mufx ]Q_܆菟겾.l;*EF+StlWZMHkP(DˁO)'RЗOk0""*?x04wHA)iuSuM/C=5`69G2]sS@!d/1wh?@ #T~f\[OΨ:S얒1+HN:3;&ǘj,ư^ |n+2L)b&#:o{(>씕ȴz oriζ^N ެ/O!«Mfɻo[Tz] j>% uBwȽAɣ<mEnv ҄ /I䣫m;#Ƴ= rIoh;h )S\%7Z/텾 mu@aR3s TeLN }yE~xˑ EL6h؋(Ljd^"cga٤h!q~G{}p`ﺤR!k'Yz_#Ӟ+a>lb?'0 ,؈ipb_0L(<g@!CFLkpI QI;N)cooj]R) endstream endobj 104 0 obj << /Length1 1773 /Length2 10898 /Length3 0 /Length 12042 /Filter /FlateDecode >> stream xڍT6L-.Awwwk$R; b-Ziq+ZGg̽gg  "8yEr*<nn>.nn^,&&} 9!AEe!2yPtxEyD"1E w @ ݰ`.^p=a,,֬!?2`8h`AN=5,(rv$Y9=@mKhƅзЃ"<@p0AC\^Bmp=u w@pY[Ü]@P/` qչj{ N ?Ret qAqA~6r0gg0;?ylp^y@}l!Peؼt@!/*<فna!>a@? r`?+al 'l'~? 0~l`P'h1PHHNV<>|N^n70@aqA w"_ `,0ݔ[w+7#ŗNNY4A',0a@^:Vz9yC!`mO)7=pN(X}$b/`/(B@A!_!ˁпC`9@lI@<S'rWZ<y !"y|Zz,>? [c|Y8Ԇ]VPzp?>L4)4@*[$egͪ)(;tjʺ^,N{s*nZ?4sAEQ,h I: SƮW Ymt3qjhfGWui: ]DՀٳίWcL#S53;< z?F1!ѫ -q R"޵-_bM<_;5cIL&p'MlDӢ4K&^vC?-A5;=Zh_ F]ڞ_S{mr5v,?>FsI#^46}yc>>\wHZ`f?zsoӎYYתhh,arݼoFCz9os*3~gX{6g)(6NgTH,Wk$՞46Hyg$}6$>,]] &K2bvȒ3ǒZ2C|[؈|:IZEVB!/G5ִ8Xpu^Ǵ,FNPN㴕Jbp=㳣8͒xBkaA{ouxz$KeXtĈvy1;2dBM kHR!ӡ IGʒ?~ae}mEe]N,2e}l+֏σMj.B#t߱n|t6>݂.wR[Ăؐ}S$ADX3eF_v0J8҂o!Cpo}l`ޞQC- ,K&<SrvJڄL_C@?{md$mՅ5h-:X|}qа$)H4V7=;ȘX bO0#[>x7? Gl "Bm7ƒXÄQt'H ųyV[p^d.HN*9ÖֹG*޺̑lؓKFF{Iul 6̗;0\p |bT-28(cլ7,$}(d"jګ0`1` TP-O,r@Ҙ彵 y5 \2jPkf KR?{Uٛ}TV5=~A@[.UV$RLZK/j'x~"O-°dC DK$lBDߝӁG¢}D~kVt, ގ:V'=َk'ϖd2-ujj1Y7žVІȹXm K]v!MX^_K‘Z-*C m0"斾^xLdy4f` seV{9&C/H$&kj{;/1H>\h;]+S @2{}}BeP糢`|#f* JJd$o< a\@d1G;I@5d)[AO.3ٻe! `o Yz&^X$~NHˎs6jm ' e4z SO ><p*N:J*ʎ[O\>Nq,%$0f^4߹0A%x e ʱHK|+KL'Fn&OG[tM~cқp(IO:Ve@0&\J^z*s %Ӻx}PH?tL;W}fT_P8m`ax>Qa'0C9֘hW o2 n:)]0=anC"7:YYeMn)Zͻ-F]&OGdhYf4ȧ0ߏ}JqZ%AuVj-Hxz^v#dvh{c;趖!%I-JJUih4z"H?LYㅁXzh"샾ՏN_I{j|E˟-%3M1Ep Il(jM:5_P+KVf&Ū.ކ9ems7hȌxYYv5K[$SsV#:C>:D/ڛ*YZ=:f41, UfO<\={L_~)V*-z DӆWhY?2oeh{Sg}51v`n7 KNu,m%2GB^ +1D}k8H~b إ+KiN1+J&9 ,I*uNQ)otX 6lĪH v閠;!%ϔxW"?яw3ٚ ƤWm}y0nUjtǭ2T(ͳX 2,sy3\U˦]#/YnwR9\Ejb>?u~z]8ḻcQ^A?$, Om=P ] d- GM5N`֫@7q%፤a0|83,ķX{2ϰe{qlǽ=[;ta$^3Dm!p\f*)i|XzuNs_KEF+2m ˈ2=/4N(lCH3>: :I,bu=MK3*WnK72vaJÚzQ}Z\a BdV%c)'YNYx:5j[Iu{R%.<)i'OXjJ-K)\mQff2ױFMy1Mb]:v<7x[ 2xw!>@CuPtXb% a?}I " i=fP.L 13F`M]-s;Ds1bvjY>*Ar=5Ed{%]_recj:w$1ؘʅ_3/u:%}H[lzT1*!jDCa=MtX]?&nT3t񖖍"yI*gi\+o@@|yM «ěAniW-\R Vg,p\$%VE..ڦje?'g&qܥq3y^;a5%b:3b࣡/~46T_Q=6߹Wt gwNEGڕ6HD#gJ}3=~[@ux @jumR׊if%%ϚUC`He1L$[T-Pn^N1['eLdnd5x@}a ˏ:߃X-ߥ7nBO K3/ ^ "XEPc(YJ *j.w}鲝]B!uTW%4QjvŬjd~F1(Mg5OPFE#cx݈WLA#Hƽ}[іOZی QtHHL L ہ~z k)O6lע߹ÿ́dlTObosq&^oɑW㡦 p?3'e K/J [¸ BsY%yRVӼ+@w`xvH)_COuKP& cЫta${Ʒݜ'yϟB^tɠ Kh AAl;yt ,Sgz*Z PuTWѕLo):'5rmtKMGq e9TyiZh8-˼3`ϳ,^s&3 o:n>9 ^1UI"Lv'p( 6@%Xqd>lS^ː ʊ_͈J(3E0daoڂCB7l\{SNv甎#֥tq^SpV1鲝p{_Hj9%~5K(v4-STmw^y;4]g:ר/ !"oCE]񠚧#?r5U+->!bF yw׮ʋ&X{yJamIBv7;6>Y9}UF{֮t4sHUtF&bɬ&I>*Jk+oI5+^w~):Oq,ډ"#[w3]@ Bes̶3&{2q\l$Aс?MwzՃFe8wQT.? ["{JBIDLI" ,O ۾I#5q?]gUY{[[pw(%H+vEp =A7N2;_9GWxw6?mP8n8OU ŌZ"4u}栲 VK Ev[ ˰x׾DѓR8Z*c5A/D˕DYNϏ%^#cE>^Z1Ds@pţrJ-4˸d;G魔dc/A 1+~h)!o-`v}?7;Z;ŝgd4aB hAA2i^A⧫9n LM^%0[ ZsilZ.eZ洤*pgh򢡭_F|>v?ϩ}.^rEÆjxbZh9R,a]I@zfh+8o&LI&KÏ6!R5T/O?i.W_; y ɭ4ܦAƠkNI,zJq]ۈ^8f/Pe;\orw/,'PBbus׍7'aYdZ ,S2'F!u)e"gP=o;Ϫ;ϜCmu_^ ^@3A bv&LQ0җ9| JԽܱpN4 Gg]v#dXb02F* N*v)qw4<ăU%QbǔBYgM=G .Y"ρ mse .Oxd}rĄ4ýOZ`pH)}>1y >:rubΩN5 2E2ykPR. .ˣ^\ u.͇[_Ng| ?ٷ KR1"XiS)FkEfZU{})(j).$~cSONihpEAAB&U-Ak³Yw9,nmk#nh_ EePbZ*y9w*m̚>8|q,:YNs%֝D (ƴ)a".E $[2 R]}ySle싥*2Cڠ *ZΩs:}2&L 8&B-^8\BC{IM^i?w]V#q/znӛǡI9/]hQA|d9xZ.jΎ[:~)P=گ.PhV̲`\+deq]F[Z*]`K@ E*5WWe1_FRڵq,'/&5GoV(v=aiۆJRtLda,55gU[Gus.L$/?*9޾֦/4dn2{Qr rVD<24QTR M (ljT}֢TO8>]13]eے7 aUPw&b P"$̻IigqF&^9O:dݛĨ|ZhG j~ F"ꗸ9FZgX?AB:uc,"vщ< O^Ly Q4_wZ,tMpIJ6wŕSJWwFY}HǹqmX ;v$W>j0ra=+V3"W yAwZJ&9qxƎ:oV#{pFv׾I#ȐS޵S'6͐TwW}{Dϩ2,g$cqf /8*S֔k OSY\$sޣ$k?d+F}Kf[Ese j|nH7A/1gg˜Lq"9\R 7(Y? |dX}{9po!la'"Nb@ vcx>*߉ǤqUL[j!{(LpFt,]+X!huZ++, z U7uD2X!eNpa? ؀񎝾bQļ*l/~G]ve<vs*.Fv}# Hjֵ8j8B&ZO"ĂdHB$#^/MIw+1f/f OGg93V[;ݟ&K̎љf_t9"RsAN¶bYKԝ4H oÉfu9 %hZՒsxdEuRT"qB@ceMJPnj6kayVI?1㴆xC(Y\ = `J/VRQY1|WvMo[9ހҔ>2{ShzrF! "҄rLDpd-񉦊.o/ 6HqәTl.N rP0V0>"eq cMJiYI=b_·7\gTN][uBJ yLY֢\IT";`Rogkח# cCTHCMQ-m'8$,zfgMHY,Ylv# Nyk~XOWVٰE"<GlBeɺ,}NU͓jNzl}u/ y1^<=B:\i:bB.PQcc'DǯAtNOyf6*/2 n::@B"bw.s 9E5$Zax7ӚC ăM Y ŷsl^81t/p{KMՙM ?eOWe>' h.f^*2$]yG#&R9LtPg S֬Nɵv+Y(>w|\TC~*cљeS6Dg`QkX M|Qzqfw4ζb_uA^B~ BJgY<YBR:o9Q#̦"wJ/2..,jo!tMU_X v-L3Љq_tvG#EC'i8Wt\q3_/Il[̠d_oTsyT9(k͚~29vA#Yޑ-q1)43(>]3nV 9[H>&EE$149Yp UJB ™aaNC t|qe:)a=xxn􍞹?|̶!:Opp B/\AH?WMmHǘsMs\ endstream endobj 106 0 obj << /Length1 1385 /Length2 6143 /Length3 0 /Length 7086 /Filter /FlateDecode >> stream xڍt4oRZ{UԊ=bD)jSDHإ{5FPVmU(Jk*6-O<9׾|n^N=Ca ea1<@UGGSJ似FvCA `:5遼Bܝb1iy1y  A<0@ \;{ ̿~@LNNFw8 G#$@;+B!NCx#="/*)qvA=G{a_t!?n([' N(醏pGh8PSpAnb"bN7W"w0 E9@k`0BC< ' w;p!~(+ Ց0U3q#՟ [f(O_"jD5U1) {AE7v6V'uAlCp~O\L C@1Ix5_>'/ 1SiLo ),.Kdfу vO&M/Cd( /_PG O65x:u$;q)ixWHl3lQh_k/Gyh4o8KMn8 %BA[N^X|0s kzv*!$7f S"O G|_%ǑiRrg^2W¢Ad`໢+t 8@zU4-leuSkY"˾}һñH -"(I8Kw\tHDce1BV9FPY; u-W4_ cuj|+8'S-ߋlҋiypKsǧ5l HNnȬh9QmL/5¼ 6d>E #8F@k`=rC$HsJ}o@NլlYdcBK֭3:}1 }WGKyS-yE MR)urޛ)':GWDaGN}Fs.ҝ&̆IWzF=JOsRwDѯBNN?u/ %5hӔI]]C|U`ha8(Ӧvv&Yna揌{L=uz< 627#˨%qC!X|,,//H铷W}TY׿2GP:7c?hYѓ2KǼ$w*[sS0f|Rc=a$Sd k$鲩ܺIpOQl<(qYl>{0yжUsGY&iCJzƺ&a\>2WBo;w J]JjdXXc _&/ן46(<: 6++P#dP׵y?^'-3+=("Hq)Ka y+s)ƾmЂ=+W鈚︪äVjC>x¬K6 ? b6bWٗ=~旼-ew:j9-(C:A_J9jc3w4&k^ ^:O؛89!,`W1'L{R;3Dk|nyKiL(X-g>,azg7JSXhEyzD=i"2(^cry{QF܉Q50N MyK_v.R w8l-aGj2փխM82rٌhdOcYSo̵.?ْ~!1{Y^:G1% Bz(Fgq5G߄ہg.Ջ$fݏ2J[^`MԔZ$s͉?+JH0,Aݓ 2Eu6(yQ5]~Rߐ̱֥rHq|qUmU??)(jhq<ݘ5N ?rnn*C|JۛX>^N8hj"cb~#>",PK\67G|NVVXiPf:xQ0>L8'hbr-6:h_$ fZ1otbGJ3.@+sis|xF,nTʬS՗Z݌ ,ljg,*yq^}R1FU=hԹk8sl5œ+NeS1H6&f1QH*_Z2#'V(wr2ɬK;JZ7sSfY gsSqő;-NiwNtorpˏ{s[Dr?'߻ET6hȗ[~k٭hjFIU3648UnYq,EM*>+JR P 'R?#4OG\.=c$ MOh=éYԕvp:rGٮHejFwc ;̗$B;7@] dH9qEt/g-8` Ӯ<2CoJ3PJny-]_=Z񙟴nj$(xQ W`S(yTc}i4!Ws_ryfr*}m0RNI$:KWY)m媃АpC(}[Jχn9Sʎ3fچ̃⩶Zsd(v:2~ػ.\A sk}3|I_z*> stream xڍT6LR 9 -%53twH Hw "HIwH|{yo\{_{?k?tڜV sҪ !`dԱC90\v?Ү0( XV7SCm  ?s$''IC&]Bo*ZUfQP&Hmnq!`Zο`zX*'ڪQ[ZH٢_grJcA,vIQC7ؿDMy"駖í['S-Bcm<:- ~ @\Hۗ(?g|-E]Brm|D?i5υN/ n8vd_V IjGۧW[qrfuyXϛi=mºsg*i^ԥw9H%s:cbcVG5JlFήS 31J .ԨE%ܛQEP)BŚu2Àa+l,^S6o gǖyWN8XLm.v$2y? @'ں3yiH& 9,$]Zϐ4h$[p,Belʿ]u^P9Ȕ{o2YLsYٱ"xOlfdM9]1u|{N 5B[ u 8BQx - `Kfʓe-~kFLd)1CQ5>짻c6_М 1]-t| P :#}|p G|!pm!` _?YkmбQ% j\:,A 9{3|a^-v[?L/L^ț5>吲3\T6tw佘sJq9%ܥk+ >`leuO`9ajX< yX`x)enSuZYk^sUk@ŐI,L[i|5p3RٳS}8ĸW=(?7y0. dxW o=˵L!Z),yB#xhKȝc+qd&RD|ջK, &۰`~ aw'kyn78e?s?o)pnP>j.#D}Aʚ95KF$YTt~|ܒPȑ^WM}$0-5 \\-Ck|IC;m*GZ߲껧=<7MŖ߫~j(j09QwvܐĤ0a֑|1^.BS7c/˷׺[B>Moj͑N[UPR`~y\!Ԑ4,z$'Ý1$ƏK/ۤl׾\͜=)Ԓx#%[z(??80g@'DUe}$=> &a-E|TkK 1vj~E6P#ϝ`}Hs+Ox  P|e6kڢF~vEGYWзdטჭsګȸkȊ.\w[ʡ|,$ֈ/Ȁӗ[u/fuvisa.zʐ"O(7+䜕J4c7;V/|c^쥴J$e>f7˦c[e|oRH[q$B&Ks \ 5&*VP<~g[WaE~{$Hy]q^U-$𱿑Esޛzl/ӡF9PrMZ08e&z|9dYu|%WHKv?|{$^5ޛݣģ߀֗F3rf+E* ݮJtU;cpc~?T~ie@͵6Pĝ({0`|Β_kJFDK~*9rpՔf渄{[_43tv j2G~svO6U%xAPWO4k)XQ+$+Ķ>s١cǞ&l0]iuikf~ac=1ckA}?=rgu+2]xY:L_ؽ6ON=}Рda%`a7bt.h8w 29boNO}} \%IWm7#19ޒRG*SeчKߎH-m=N× L~rrO.z`[pԳi<,.)p;&э/ܪ;#"iC-@-[\S["' !72HzzSɿVW *l"ʾt(fD*K*㽑LQ¼r<`JDVtI99s-i\͗]OE.S}7桶QˡD5ea`LJ+(El~/agʈ ɼ eYr֕mtD t]@-Pۘ|)_5)nH3O'$lzUX/^;pqFd|ro_lS6,oQ`\ 8mw:IVvcfM9I/uє5sНRV#<9*Di<@(ĀXbHЅڀo>*;>fVGQxod&|RNx&- _o O ,et0q<̝yޓr4mW &RNc$bqtr>>v6J_`/~ Iw?IAbX&mNf/+k ˕ kߣL $95"ۢEp%1{>v@{ff;üO1 ?$&n%n)N "80j@sva2oźs֕cv v5xxMȷȟR~12I*15I 뵤Ri١_GJ_=+&k2t%?YiRm&磂4"dwa<{9֡.x\3U2aoWduZ)x4兮=ʜM%Ohs Q4d >$Oad"$xn(@y;m=!a"X2pjz#T+9q"2Xg}X(E쵉,Ny}B=="+]23^JQж_z'ɜi={͋`ָd|GDSDѭ3v=Tn[871z,VSm NP a;GҘ5焆Z8]gF{7<#Z \<`'Iygq+ŧ~F/ow0Ek|o}Fgc ST߷ )-bcLJF&%=; X67 |d,{ KgV4G!;n ]Jэ&-9ʨYIYzR%!ogdemC%dž1a( M2'5We9E!5W''/s&=U^ɸϛĴΝ]UOW*5O&m?QA JyBU)-r0 obCq||0f}~ ~kb A n1I`-,f1s.nZ z,{HD9v|HVFQ k*#;݅?&LrkBcC0S@%,ʺ/= 3pJ7z>wNe!Yblk[ Xls*>mqw kdMtz % TT'P2bieo _|SWc9$: r? Ed4.DğmHgjetr$v$5Tj=&[ln%R?g4Fwb|p8cRbE=wJgϢۿp.-<g֯? ,{I{ σ L[mPZ4pViqܵAw|,nPrO͹ZR.}tL'[4HfǕNx%*b\3]R،|S~~<N'9I\S=3mmP4kIM|UKeDl>o׼Nԍ.f2lF[bV0m9][h!vYbr< CH8h#S37xU>-Pqj !ĀYȫ[J,#/}ѭJ RWՒLOۋtd~{#Z2@-1"<{ ) 2|O$E:/ڦ!%9`5V#{@]>txai})=JP65Ϩmc:A'eT~^hr#&|bEuKw}}caln){}koKQvFLʟ~9PhI"]`H nag $2FEڷ-$:w#-⻛H1C:XT믚E4&~u8bYVm+B8g?&4x@4cXn*ڪW(e*awc\)kW)c%%u+6 Od, DO/,s#T+">4v5/:]4.GDXa|%VPrbTidJ2vIx1b>jOqwC R2^<_ =Cc@ z&F7Nk:G1B8Y6ɂx\D{)8? endstream endobj 110 0 obj << /Length1 2614 /Length2 22372 /Length3 0 /Length 23857 /Filter /FlateDecode >> stream xڌp Nƶmv6i6IfcAc68ߋ9^7ϳ$j "掦@IG7Ff^* 3Bo1&с/1H&nSptȺX,,\Vff:M< YG+(h,<<\D.f&7+=(@?VnnNLL&.4Ok7+*4.hbWeu+k- '`P>{q lwvFQ.x\XW9C|eՈ.(0K @G~nn=oX64Ww5z:k79..!- Q,΢oyW  q2}*kVjCSN@ ^&L#R%6h /l@£N ; 47q~qՍ[hvoo]ixVlY= 6TC+.+v8.KekFCmyjVk%pF3L5ܙ},jQ3Rt$n[+cjP^RH4D>xS3uQwZOݥϞ2T% r??-, cm bڡ@ G} If1Ҥy^_Mg oqvbdlf׮ZiHIy)@jռ)ҰB%k~y:<%Jƌ)8y* (ސ/|[Hε~"oqyY@[|S\(R~3%oK@a3~fޞu-§\yV0/zh7%4$1!pfGhp`ߩ0Ƨ^b(I1~ABzA}WULvL֭ϗ & YttL(=/"j߂U''g0We?ohz\۬XW%4g,t͕zh4yZmAl2gFK;_b`֙ n_gq^̈(7σ[[ؕ=HeZ k̢3o~R}Taps$e>#Ǹ&{I9i3hKz?ϼtMo }6ֿs؍~ّ|No/֜U[xǢ3,* 錄9Gq~(kfs{coPc"$c5@$ o# R9\Ű7}HP< WށCʓd6W硜W`*iz]JawO )a ںrTؾ_I{D5nq)r:4q lAf2m_]k/<%OJ\;߱nDj%mhI$Rht0n_%$~u=# S@9?GD#4-Wd=7Π_ ;MrᄕXN r$/?}c&"5{8-5i_3#nWWV)%JI6jG_pQv݌]&;Y١x!5Uk73t}_vOrz]yhԜ}cLgr`$l^zScOc˨.osP3 mP,zmݐSPz8|p &RAD 2zR5};7Ӿp<}-aRɭ'9_鉝qvv5=9+ձ$GSo<ԍ>8k4\ m ]P|{`ys} .*]J +C=;xe_)E,8?K*5^(O+ʼnzD$nR6>/6P-OiLRv2^2᭗gMs!pH|cGfjYwcqArbc/R[b5Dgp(|kE >uq4(`3~Ύ:DQ2:AZKTŏ j"$&,kt?wI.}Ff(j7 ]CеX$~m,_c4oWfrH |pʜc94UO |A\Q*.1uTI?XZ;Q ](,&ajcK%yRQg-42t^gT7֕8n5ˊ#⧒a׹ۡOM0HنZᔬv>Z_=OxLߊIJ0F'h% ֙J+cTG|WIŗ\VǾ=2Tܙ)GQ+qѩf,깔d=`8ۿ, D/|P~Aא(<~ N:k ;-7nr~|I/x?tWMz]Riof099@`#Q #|=DnT$l\02u8>3-2[5)(o}D9\k=(dOaI'py隂;x}堻 I&Pq?z{ᘅi*轀G"&FcǨq)U9ݜaFvr>Rߩ _K@VH7:!rPm>5"nX<` o?ip}/GH]kL/ #fpQh(*85ǃ)JS Me/ |,cXU)LT R6烇mi}ҹz0,gf{X7Ey*W5$T5:7_ʡPV ys< #]#~`/& O?O)+T[a7ߍWg\!^r쒊jts ܩ& &mmhj=kLT7}V.'ag6Aӑ]Sbυs4rKb` [nyܠdcz}flZUqdNrʗ˟ﰴf'/ƒx<[,="FMP@Pc@d,2bG}9HG QgwRzF.mDIVoղjw ݔ`jfHRuRNIeu(J$jO~e .ȮZѬPT"*uC\^M8 :Rߧxb *fptÅ97g#́5U~Rx*uP)f4 `V?oeOhnx>EƙR7Ϯ!֘h7EN76-v{L٤l9{BEiᵄ`fUƓ!{Ft ^e;gb\dB$j9`YJscG|݊߹@b!藸 ݁E%9S£lgbϡ6=sr6 M4kYtw+D%d74zLVV)278C\$0~u m=OˑoJz;^CEP2ԩo6e2f~VD>;S m:t/US,]Wvn!pca~PUX kG +?rg~\#GNFvKz>5!G*97 A;U?\4lƾ׸tfZ_Z;! QhC3b'_rƂr^Ÿ]#Bcmi^TFM-V;7rIc4}f--'L$g20כ+!h!-؅Y z˥3' 2 {偎_5ήKOi3r!Z˫EHG3( <ѾI(ȞyzE\-qZ:xM=GJ+ƅҽCT Gp}nLH9,r$D }]6U`{ud5ioe?N%q5]^ +FbU=>UW #3mh# G[gZ[ϔD  !Z@%}R烎"k#LToB?|ro8 I/X ,>22N6lEGvM6[icvJ&$8Z3Es#ˠ]f< .ñU`Z^ ú"JJ̕4q:9Ρ"v:*6-vI&UƥzuC5pOzH]f i1{DXUh`O[>·%Wmx,PH\h*ơaR4P9e3yG4~A~/塕aǞk']‚;gXqߓ̶_.U,H~QISsa5<ϻenCVRicvW_N1-k+GOԈTJQc=OώK.MK+si0|APH\4GfpJrpieMc.hle׼s&%yBg̟SZ@h ;c:]EIDQU,^ɱEK|p0bڑC9Ě5&> 6&5fdf (3q#_\%pbڬd;V͞ãՀ7X4>x8%2<0CIF~#m B j~[ Ρi࣌𩪖KxD>YDŽ!0 yh\聓Ml2z2FR]gߣ Gal 4YzP:nv;}UqƘOi,\ 3ΥeB{1 _/ws񳼜DhsW{Cr2ǚ!Nb?` SO7>4`*Ѣ`|b"T(E=%xAi{2(p29iB:N% +92.B׫CPpcek`9z5qAJ5^t}͗F bς+92CHjH0bQ ?G$1ֿA}$TE^C@nk8 3QkeK'-MP. s) gUf c'21W8<k?s(Wނ nc;\ ^5`~"tni&,BLi:VriVd>SMELI&_/*e?y Tc;:jmi mH ZLg$^RgW x "Jƨ4&vNrpd֕q3|"&_UT/ r_ W-M#XIjtXg%=8!#2?;8CEً6e /zbBX!b05nC.G+ȺNjb3IsOKVc\Qvf+wQV=mxv{~ B_ƩWVK"#@q0QAsOdÓ {Fk :񵻛'as2HpWr*Di6=~szݙ h BU͜(IreK߲9<4>8_Fob2sԋyU1UBV ?fؓ^ laCRW,UpZ{~ iBѝO>|1+yO[BZOF=ѦeN*sGLĄx ܷ}:VHO8ʹƨ.m"x@r3Z56D"򎎭4~.J&7T- sD}ZţxrU!4:sibPJe3[m6ɄtS,[Aƫ׷S;mC;.ܭf+tLw{ 5wQLJbΜD^Ā$|RIܷ%妤 Ry`Y Qwܙp *Ι}8=|F*NcU޴XtqRc@ꗛT ~,#^e . S,$l>v:]=Bl1w KF~ȝqvg$p߰ͿZ4:1Hhпqm› IVNR搥,$/Dف'Ş̛߳Jİ=fEW:UR;w92~2I9J`>j/#У^G aVDX=JSPHJ%^Il? t;LcE@D}JxQ[;< ڙe@}qpcavDFƾhd#=ӛv\Ͳ=>>&IacO (vl/BFO DH!~8JL? }c!mob:9rEΘ{?.q G|Aup9PFT@K?їX@q:U^c_ vũ]ߌ6caCP]3Fg.'NCl}0߮)8t3fi!=!!^ME41A9%EZe&kSF(68%cv/=:x\HBtHu%?w&A!#2uEoq 6a{bq?OYS2Vÿ%[0A',<Z[~"K\OAD #v)jp(#'L8 GhܫL%xhZu Ե9ۈ-E}tt},{Ґɲ1w|B5ޟ=Җl^6K6v9R6&Uv1dR.فrh%Y F}Pw嚳5$ 57k~d/qpzX'!*oi댢1}sjZq1QAtѤ+*/^' ̫qg񒊼/\cEm]M CK;ӲwC;uԂ!oH;ař%n–+ ri&غ!=sufB 0WXj7}TkKr本]=@&7_0/6Iȏw:PM9'X:*XdŅ_$_p?c]Φ};El et#Ȳ rd6\||5B#qeӇ>_^շ[C'5G*|ESt7uIg ޥp:5ؾ\~ f9C)a*]=Un(J7=Oօ$1BCaZPR--)UY*[J P/H?|nH`tTwIy7&]c ^Xh0^Y[&AcʙFf3nѱnD)#쀶`RY}[AXcg~JƞڛbVl)$V~k Sr*b>+Տv4 a4Q䐆'_:Z1ũӢF`7ܷV*[S *sAqAX䴏9s'ti[TZ*YOAsnr֗è@U5LuQlnMpd(ܮ ҲLm#r˅1+yR=w#ӁҬnJόn; %Y*?FM̕ѭ%Œ"~)n6teVgTvGrQD/K?zuԫ[CYDNH kF ʾbF#׾oS^gL 3]4(ӫsB<=R{4tU~F4;> fx՛R>XA" nTN-} *Z|yssY>xF>L#IӖ`?I"׋VSz"A| iK\c,#: s 'pg:g4T +c,HF[GY[@޾{{%:dye/0ݞ|,re]@,/vN;m.>C:j︩0W0Jyo4вT+Jj2VLJ޼G?,(t/,Kmj{R)q+B]t;>}R%PFbNUz5$Ž|4N.0/nM-lͷMP"jjn!ZX"&}o7v6՚oR0s/&Q>ߋƷ"~e JVԢˑG>7BkMFsE:Z KrSFk@Xѵ}0<5n)`)1ܖ/QBVvC9A?#HC]yPҍ퇪3_S}'JLa u'>C `S @'%rzIws .F+bd$' _0ͪa$%?WmDc8{`ϊ/rsT_hT UH=ގAo{cvЂʹ-Z >6vTBkCdw/@ia% <ݾ!& xvsF1~hafɟLlK-<:1ߥfօp_ Se1H @Dٙ>z~R]_0.m)Te%Cw_ D'cY=7uS-ۇg W*x8QS%n3IbD{5&ihvJx0~^c.rpO[-lF l=C+$Ь^"v2s-ƹ^\FUp~j멆Z6,Dž7>,b46귫7gI ۅ`j_o-u>7JN"q]kO JvC2ğ<(S(q֕м;H"5 ͧ먶<|m9\ _;kX/pΛ59w xNK=!gCٽ6&G9Bct׍Pi@F+,z&wZdGD%$)RS(p3gX:Ut4zzp>|=2 [L媫v"ti6l,G h/ܵSGO8m7|5!q1TTɐԫѣ{G dDDZCdfW>48 L֫YvZmBSMǛo*}\(͡NWacXoOKA.OꕾieM(sɲQj곶\R!ǰٿvRcvlAK52Ze * ^@hAG9bMGjH~+ MܷvSԬ~lfRws,q@0 ]KzIO&A,I.X| e*hLHl,𘃅U<`!A.Lcw-'\,;1G{4mj:q;"]oÕZ a+aH!\.ob`8{ g59`c@(]bDFp`|YHGr4F_ LmJ'-)/ 6ct! DJɰ4C^QWFtQRZ GhkCW]3کs5BfGDGjX }wFBufmQ'iBm: (!(ޅZ}$]^ź˖s̵a큂#a.b CL9HY DmΘm|S5ӷOg;&YagHPۯ䴁ulJ>ϺK/İTc\=2FY %֟Ï8Vc:qs5B~G0vgۘ?' ٿ@Od$ u`IC̊|p茔x٦i BjHsݴ|GG}jnrPQ_=tZ"!Ϗ9uƄ; X3K'V#5 <5CHq9yp- ix|%ͯfϿ_4=ʖz6fU\o V_Lq;D7܂8j^7oS"&Ӱ}Q8\SunQ4GD$ cFϧwh15ғp۶5{p&_KPvgоiLW ;W8R|(]2y!*D 7LqʨaꕵO~"T|%ЩPQ (&.i'gmB^).x6Czv|.yϗkUMX)p5L}Lv@D˺ wtjঘ/?pz Gs\u$\ K༘R-3K,fK(1Zr' |pb+Ϸ,U `)JAV fT{glcuwoS:8@CwQTLfp:o8._k_ʘ=qFyh4VfܸUPbÒ"ؽ /9H؋"5Y0ٱLg E8W)үkf?䗤7`LkTI dPqShVAMsVs&F!sXh+,#:jfj?iF~kKJL9h%MswȰ % uR1yN9ݖAuceA63܆7 =WGmk)"Bz K Y =3Qs[7Hh-n V-pQe%7>\<i:]0#8t ϑ37%ȐzCmx.۲`ElU[Q`{Fw0#A诱YqFV&J&t0te_iz^3Sue|l DHg-*X'Ö+sc\،b@I~ лw>w!:MN+>LPj!;wH$Nb Ăa]]=یeN"n*"'C``VCO/CJz4#pqI#J\ ԣ%z14p<^7~Mn}F Hc9 z9M?rEuBF\ (Y{*f~vΫ@L3C>3x#sߦ ´|Xl_{1LH\]L +{ɝopc$K{2R=-Splíѱ,#!O\&Lц1O̵P㖃 G ٦!g2 ̦*6rڃ+.v?JڳSGa.ky$a1mUj~3f55±p6Tier"_dJ9Ldv"ӞrL&g}209ǕkNn<J¿iF%"z7;Q=AqQ{s{{HplHIGxڳiv80 n6Xy, z$?ǵc \^HHAG"1 ~4'V&cr=ߓ!6VRj`AY]5o>&⋷cؖW0_Ǎ@MƋNǵ2Ղ"_LH^ŅI_=z5_y|hI`'1UG9%׸ vtDcA_k oIP\'ercf<"pG!BV4йwRbe[NY|<{RϽVOԫz%4V %w#0 o\RPL TX mft9*-j9ɪ0I-1KOyg}wbPJиS;襫?H"WUXDѽ7N!E@ZmY_ui怀43)7\h;P+d숿*:J׉bLo ]IED¯KzT*:'WeZm;qL"f OoV4 .  IUd\rs$GsJnYz!92& 6^b)wfeA-,Gd"D)vQ4>Qwsu@E;6䟍"LYV9XE]7~7]<̵$ 44͸tl@cU$'6y}|s7]c惸oq&CBb^$uR.U}w93vj֞_j, d hXp3f e7&[Ƕa/J*Pb~U-Q8k,v)ć,C]n &9<͖(b@ @ჁE@Et=V,L4| Oc,c+n9vJDpK4>܋ͩ?͢7&KW)~F@G)GǼhVF,G8m>X^vXnAXW_} dZI''+d xw73Wt6a_]J ]uI4P:i_wm?U,ApaϣZE.6V-4q&7r󿓂Hv3wXxR | qڳl5#w0 T?l>7 Q?uCXMf]䓟[nŝ =[D0l_;ڝ^KM+ڻ@RVQ\I n_\'dMu[vW!Pe jQ%r@{w!1;՗1u=A>^l1cr|g+Č'GAbӬB[<]ͮ -<3 LE`A? |LF6g˦h(~/C pڋ$D L||UTYZz_Q8F. ]X>(0@-Jls]@tN(I¹` )X1ڿSq$dȨP QP\cTl~P#%h*,|D=mk/iRs%_' 83nWƛvKC(4F9|<=gSXxC"4$ieQHc*@UN9K6 s>j.3Bj1")d6D.%7-TSvI{1swtn&Xr;a" =D޲A_+q<Ҕh% Ua҉!1u ]ӿ$e@1iӌ0Jr8Sy3T.!zf|*0ඥFrqnX\uBr d) \q<\" &jI1Ox.JD/!/2BqU%_ܯ?w7`hJxeK]qv5NJ,SoNCJoji'])2Sb+߻KBo"Rk (:"߷L<zht?ߥeIlVv| '%zeBS!ŗKt0,ɎP1NâQ$p}xWޮ]L `+(X03ae|`_( ҹҬ\;a~–&f  u}|2Q(ǝӛd>ð*f7W1X^GB4bɵRXοUBF,H/ɼ e #K?1;K[թCb0uϫе0Vam:3¸>k>'\A>S,;$6mދ]bKG|2df))[4*b0$|y-caw p>KNZ'rtM F_޼bBz(n VZuӎŋ{~1VǭOjjZ.BptGk_0`O-$SG$_EWuIcq[Y>1MQCQL<ьߛ Q[3%V7QD<}*SnI-,(T *^O,KEL67*E$`qjŚJ1R biB ݨ@d4 =V {PZ d茆 kebw+GdVjS_5 W_U.їsڸ7rXr}lqe~9 e|mC5O#pc(5l_"=^ۏM ,(@ň#ՊZdK@M0yj}3АKY' /R䲢bE%tMVV$c8oUql4v֎ա4GImv7Y2x+nfu܁f,& X}h"dV(%/\:,?ՎCL߶ˠ;L[byln0sgP!z@|3N7 Y\bY= Ðk>@#Tԏ.z|9xYEtqY72.aQ@fy82&s~m B:5;kZo}@t$FW+l'`}+mPV]<:w ^HZ Y42*+ Wt0اTѲĚN_kj.Jb}׵Rai<h,CPbTHc)kh61R̈́鎋KN5'V1! ;MM hQmvQ:Euzjn,igcD q[oBA̡\n7Ձb@]ݱIHPI7PI?/3={;o(@:y+./YIiebHs"WWl^o iͽN55@0v(DXܬch<'LZr"A6Pܠ|-߾7',nhS4:i&dŇԘ 8msV.W$F;ӣ tU!Q~4~abp%/G,-3^.+nMЛrώP/ 9z&#|a:W?Yv^p}F;q *A2(ܨ&Sn`gջmMzJ|yBrosgF ND9h0: V:ZmU* j$nS+ޑ4DzU CS )w:MR?9Z}9|[(-L\NQLos}etEώmj+emOSBaFۯ8ex-F/@++1ĩBLin 1\Y* 귆i>ߤL;H%>[x{ C}֤_$>gzApݰ07"_$nv!Gl0M ތ܃$|^$BPg)KiY-c{١@g(^w-8S7ƒ ʒ`ۄsi)HIt[X3g [w@KNYS=lp*+wÄS4(cX .V^"+zsJ~)7Q-O~Cl-zbzF<8hs*75岗W7̍qПup8!?vV?i(&ľ^)՟ שf̜ml6:'˒fiy@ԿVA8'HFOZG_tE͊ʊ D~"aj"KVHƉF$Pl5]j#RE2:J(jP9miyʲ& dE/耙3HhmzM&PT.gњHlzn"iEHuĊ v (meoidN.6^-$HmgO2Z܆A&/9L1U);ee΋w޸Zi`q$3K9DjdEӮTR#-~GpQ9Dжh|4,zvic.9zBݬ$ |(r,s0Vgq{n;G劵eKֲOIMAɉzXǢJPЈ7KWS5Ti­^wN}t *yCxf./}}~*.'8J[p]&MBNf"1"dZ$;p1n0b.oFҒЍ6G:u?~e]kFQ-un>RTx3mߌTk:E _xZT_ iQz^2lYM<J闒l3̡eF`x {Ϡ1W!0Vͮ[sLt F,6z}I_U-+$ ^3b20DWN^NF8`.!Zhhu;|fZTħ/kXֈ/J d!A~8:Hɔ̱u*o1|ѕ ]Yb,84at>"q"ehkzbc5/XSn{#8=1FihepL OZ% 5vE4bqNj=-Hf;zXޞ_tp+MNqG c:"AywyAjOtz^d`gk|jU#;)п]]Vi9V8 oV6DzޠٓŮieldEx\`EY }DG,U.'hxӨ1wJVQB+0Ól9dyvyt\A@Ѣ)n#6a鴡ʦ{m ke b(j`S샊HÂL<),R,g][fVk"^4X]s#}W#Lʽ&eͺv{}BFzgPyfhd1[> stream xڍT.SChq;S$ K"ŋ;ys9Zﭬof 6%5XuaȪy\\\\< :{_fL=3h<eW{7/[@[P %G@qaP3&, qy;?7@XH , _Up,S_l;:Q`?7xV!-HC 9ϙU[B\Ur=΁4k8+@< ?]C`M3Vssq8YvQP#0/99<1~EKpr@a.!|V0'/*m 8eFNSo$ =rQ!?/ b/X_PiOza~7'Z=J f/N7=-\Nw?<{sc9^`? W' DŽ<> [`M,Dm;)7O2l꧳{9uࢧf.;]H|tq]\j{}#zX[V/[f;htC?5Ԗϝ^{.e|GW!\B+>EMZۊ h)9ȞS?a%8:$}UN`=-6\ችJǹܐ`x[f'Utƻdi8IȪC2צ:iĔaTH)*zeC)]"_Ѣ҉/4! @,͞tfz0 qJ-?17hz6txDM¸;׬v}ZR:Vw]g'::Ȃ tm8[:"045ԵaQF4P^DyIk̤~s%v*oBA:_(%z\u R+تAتrx=sh~ӑ&E\b2xɄ񪇓D"*m>?0{#a/s9v Jtryk3 耐c%4yҊ^D"nvMW7({tje7'p^M(q5ԡC *Ja@7?NXxpB,*{IUiYλ(CܙNM܊sfs(5jC;< 'xMfюJR;e ]Nss M}C ֮u?H^.^=$%sЬd`Yc6[ME^>EYSUWӼ, 2C~VM\(HŇg7Œv_FD(,:$VdFFkUt5mon*`u)ȳPmFK9Zܹ0I&?.$-(2G-HO+_ڱ]]{b/ 0'_VW>.ƙ {P۱vYov?#4.$z֕sXrWaWeRFߡzƐÓZy'\meL+YB).JEtִ@dT=+tocy 5v8BtnGX$#>YO{M$hf[~,Zeޝz3Hxe'+q&\bfpSjMrX^< ኛY}`+QLe58csL99=،h>13oX#ט9M&-NV=4('Dq[ʀ.%ȇ%@ǜH!0Bk;aXgHq1 WŗI 4mk*̋ge|w uZ]#ǙeIk nڛ 7; K/0޵߿EotWtJ ^$fjGM|əT—IzmzSxbPt02aU$vK=fDXJOOҁIBsԮnɮkH+)5hdW}sI <-!3wE^kj{,E0W_ٔk ~ŋay=]!C)l8t6Rv+Ä6(…V_zҙ}pXGFဉ"Ye#f'J Qĕ RaxOVJt&%KiEɪ[ G~/]ȭ%]' 19/<8-kCx+T_Βn"5}ݍ`hK* ?8azSj-L+%䫣 Y{d=@5trm3)7~4X,3Yh/&0$o4rs:i4H&CRr+#Jb?shA+"WKBiѡℰZDM%֌&eix;- Y51qܐwn4cA"feS?efnU1K/*Q^yBּ[WVl_+i~pnL,lZIPIyxl*0Ҹz_WlMKzQ\./Y `?mCd?-%DHuk 8c)E# INA-LOtp` a *({R.]m|I[ui!^3tLY:{Zb'H:1amN茔]zFtGS`0KI[gL1P1Vȭ*SW9J\yNJE< BjL"h* Trf]F%9eIH9Z)W o s@ yX:X[A}*#w6xx_mpצW:N`E.utD*kQDvUKNa8!h6 `Іy^w1U;VUYBEO i /bQWwœ!ϐ"/kpj-qp=R;Q[rmw3-C3g;i?3AmMml}I@`SVS_ ؚ[hoR)z%g'>QpFrE ُ̈d$P"iIEftJl*bx!j~}aLqlt9hu ͣ[<"vJ ާ`>5w秧h@)͸,w R"8rgkZ計0<6gZ ^}eb-@ŴύanK ׽y D&U⚲fD;zTz>QUm ⏐iqPBBB_Z~ *{M3GRN㫹6и ; w;w vo\_>eUl-s*`Y$qYQx&RH v ʽ~y*/˖敔>͓E\F HC8)c{KM4.>_C k7N)z9ud$/I!yOB+[}FT|` 4z9"Us'Kgq]OIm֊u(X#1vͼXZ6čݽuS o6.4;P-6$Lr0PY*$uLӱ3{!#DRW̾Yd[$:h:XjiS^LYl_H~$ g /++~ ƫ^F!+VZQ3SUjja}.5ʭLVAPaT)~rip>DRӜZ X_ i!fQZsUytpKگ_AMg 04h?u+񣓫{y.=5btyH3ܸTD!%qA-e= =EglD.[_ZJP,< A@4(MsPv}Sʄ!N%/:UZħ鼐&ZfpіS}"2_g2قexSXG7}nTzzY0c<2t]8=uh,QcqV47 >dw0U-cŬiۏ,cN|!|,*]oj@S@^t(|~F!&\cq=2`i+.doτG+]Ophن|G@daa pKrXF4ۊs[gl;,MF ;@qq+T+k[ILae4-jKL'b_L}tRKx*VSi#ڰwFM=rٚy!^ICu@9J۴6dE>G*Q*7ēlAl|ߤʈPsbd4zEڑ|QEn~p<@WRS~SsǷtSU`f08qN4'; ݹhro^ ``ΊsђF\(Gw WV+\;Ȝ᪗x>~=9uV6D*ň`7nҝZP}>G ɕha>)/Gߑu9;ߜ:z"^C6DL"M ;"ڢrOcTi\Ao; YvhKV<:y#~%4Z\ӣV :4# v\I9)e6(rqw-'D5! -ΙDOW>ˌN˯/[\u,-_m)δY(0k}u82%o_GZ+FŚl-=9|#R^ K,iNJ/Q^e5*~+v%?-kaUTbU$[w[b.JWe{d-^uo[>8E$vzɪ>:g3u.66< J)NRi`%*F56D}|rqrVe#9$7Ÿ+`z+26(ߚ~ߊH?W R>[A-w'7.[{PCc>e)W{bu=i~@sX!c̯ N^ Fcٍ qC }-(돥_:macz;CwhR/OB싌 eQ"cʷV`Ӆ.=+,$'{RRXbJ}+V tFٛ>wI QC(63 J[!7aXQeM)^*&5, E{V歊MRnMR4).0F8i`}4ɢ^囯%B6XG_b`0+.(c eOo}-cdΠ{ qo!K4e3U0 Kw[ci;$_fvK,u1*QKuԗX也;e{ئ FIvQKhe&()M^K{1(cD e-Y>YoNqDrΈn'ݢѱqɠE0w1#N_®"+5ߤH{2a @ ݑO9(}CC*UqR b$V8 v>*%_NoVzH-C995.ޏ`!n 8ݷ/Ԇx"(g 3t/ft-W5wqPڊ?evS= h=\{u]/HM [f\2V5#uX_bZX [lU>,s9ԭ,4`DՂM̖O|-W%O IURhRۛ7oZ9 FǾ35m ֭ 9Po8/όBocV3i0d]UH[ImMuFn9F2ꜷOf3vxOG~y%^9fm aL\j|_? +g'gXwG$8ZV8B6AoCd=D|Z5CGP niSJMzS:HB N;耆@>F*p=BeKIRsEF=P0[/Dìݗ_B(ù)O )H,4%*]%q߅eh[̢:ۑHxUۗY*pPj\" 2H r6Pˮ>*md}>8 *m~;-f *DQF;$l{weH$Ă%ɿ.BYYQEa7n<"DoyJuM&e12>k }kM;5Br,s1Z{%l3@h(pE@䝾ֵArs_Id,cG3s n,'"\|a' >9cK~|q'}EBt8K/ mgDdl}uY\ZwޗN^!x,{a$ yᣥhɿn2+?[zkf;Pc#VP2 n|5sI}E#>`7 ^. V~𱻿|3N%u5*7誛q~W?kfpQ!v^O)a79U&-{&Ƭj%4Aܒg wlS<'E(T YMo)&thg~DOɕuҐ͐YxhKFI.]!r\{PAR)ޣPڡ,~tavbB?+Wj)q_%x*~]]#(@a"Ct=;|=?yïlhF7O}avq]5}D|o<7Đ>#YmJQs:"]q^pb?mv`>K){a=/]? @dyREhL|хS򕨚)#/wՅ> zdSts ZXr\݅6n3+׋Wak *z ,OcV,paŀʙ5#L/n^CTr~&D@u OtrӆU Dox_ sb,j,O5jw9/`Bm!@};mUTMͧKCK,gz%m8Qnh`ղ/@.[B|3J<3n? 3$Ӡ/=yLO3ft 'Wn^"d endstream endobj 114 0 obj << /Length1 1627 /Length2 9309 /Length3 0 /Length 10361 /Filter /FlateDecode >> stream xڍP- -hC4H7--&;ᑙ3sUUWѽ>kLUIb]ؘYJl<VVfVVvd**M=/326+@hb4s}Sn67??++?g~; .TG/g1 0s:,%3Wˉf _6,,f.gka:Ft:-(9 irӮr0s^ % l tАS8+k66fMlfaqp4{+="0[4w䛹_ -0{i\,A.. -yR O x˟7kx}V &,Y '7_!/&l@W+++zZذrdm~zi|!n@?;!,As5h'~|g'E{lߟ'eԖb}O7*XI[A|2tRGㆬ\/G4Iq9 xѬ /[P;9We" Z\-l˟vKfU!.߯ |/ear(eqH)sq̜ͼY_a{YEK0!/)Vg7 `mXF'Eo`1X,Fl/:e X rX@* KEfȿ ;_D\_Zu|9Z9;0lx΀@OB Զ.FЃigLhjG'gѹ5B ]uvXʷ>-)+%'$Gɝv䅉bHDLONAv0TNnU o=x QۭV@y,bzkT:CU`3GDHu>su=7L*wGݬJ&K>%>1$Tyy1-O9FQ d;}lz$ף=û7~ 1:az2BmjDo0}ogݎ'K3߂FXV[߿qNA-ctX(:.r(zMuZ$Ef0jOJVni yG;>;sҚJ%eJ6('e:-b4kt7nrdp&\T>D ߆Qo_qܴXh$HuDJ̕;uI12Ug$qmkNWlf,WDU!M+xB{LZ{"9u>(QAǢ_D=I7 yfcKI29tD}&bPR bCf)㽬(U=%O)BJxQVeMxVFlvHMUqܦ_`V Nᫎ]=NCjxLyG#JYh;t!E&oh|8X_E[b,02F w6!q"-xNIdJ2*F]IYZDDJ"bc3x$o9z˼ XGKcJD#h*Paw=0J0-NZ(\fs2fŃli20+#y}=[{JGf@V+ٹ̘ =ק L#U[FtMȖ.jj)~4rZ%Pqehs) ׎JAC pL3Kn^_*IbjPoԉd+~A`n? ܡ/fU R*31|9rmw 3yï_*VYt0ZVRhr:>_ef>%@j Vwi_|߽`qխty%i6~wJӡ+ƙdF 8&NPq7T[]!Z@[$hM)Pf𣈭dvKLK[v5ؼ] fxq8˿hxd&ްc%DZy.O50|$-)ESFh=!rO  r*.FWQu[:bƴao5JnĔEػɜg1vO10ż4=^L'SYDi+J`(b)1UHN5mѠZȾ~NcGG^D{5/'  oz(` U9Zh˞_wuU4U_d8d +z/6?32f^"CIg-t;Xo;=vu%2Z#t{?HF)EitU(dH*UB|_\ZAÚgf=6U{`U ];'JKr|\Р2z-V,1t m\N`'k(zðX%ƒcR3Ck]v:`xPnTJ/$er4 Vd=AvO .B< Sb0Tz-ĕDfǰ &XEvw.YnܠU}=.@7-:gZRSqs]GjvqEra#.R=jAu7Ds?jJoE1R)4~/d_(g|mz `a E_:,2G>tܗ7'"l18#fߚiQ_L-!&nQ >q`}Dp }`'/It3 /Zw7:VV2n//W3VE-l0AT$y: X>ȖUXʒzs?!ڷ]y䬗 /v)?3m-WK`DDQ1  ((/w;mT*BNj _tc5~ri1"'+8]xc"pc"BInuak_UVr=Њ}*f͒+Wetw3\17!&׳s])#O!KX9YWe0}FYîsSC+Ʀz,e݅i+p {w yc$vZl2My(gE~!6i2uGՍlY˼%=y j8Mjo"JhcoKڅ~G5;0>ŴobEݯ=S&5Y)=ӤޕGm8-HߴyGX׭]b0%pU͆Zᄋ>̙@H@ b\ebH n bnj\_sє;5djgr,ӧjFM/m]>lR)#\76Yër'+QQoRA|urz\$>AL㯗=(k kOt&I@ZӠc.4>^lox!'ϭ} dU|e8njn;mo9gvc3gbש$Of'_zޚ%0 ݨ7>!8vc]$E++̫Bqr.OGnhEkΜeb{W/hq~9FM4/J,5H8E.Y|寁E#ܧ!8^}SRvڡ9Xfft#g[ Ui' ۱"9>Yz:j47gjh8سW/v?@M'H[̡}F2(BTWtUmxg{t__Ouw6|7M L| M>[1b:iF\1OR;DK6g_4{51u2:9#Ϝ?2{Y.V;9qu Vmq;C_ݯN0fN3<~}.:Ac -AWzޟS:náش %Qfx2C 1fV#e)[$kQr%pYܣE$$IqӪQ ZmWe#*G'~T'S"Q:sO\(Uw8!$m56CۯUC%r59s:{ !ZUQ i8,e;;bN~R+Ct#9m$ta\|r (akZ-,țIikmH'(|K Fĩqg=Y5#lŨBSQwzŰ{'{bq"y&}~_Y|Dvj+$ZŝEM"ʶGbt٠E@mDO⫄K^oY#w9(8U1NR( ]r ="Izowsخ]S:L_IRTb&q _*#)1Atw]"혊$*_fHB#;=* Tخ짏IP8/oSY'eydtDOQ[B \I$A#B#e.Y6hp?meNJnG8i0zL!/N/I&Bi鮆Qם}J:$bJu@:ѿ{fk*խg[t!cH2o-DCɏTi6PtXmo RfBxpМfK8.nO\A\..M:ڹ4"9[lFT)+0)5.]j!9R]ߋ O"4,L թ}FO-OCv'܅}P;E M8B;ɴ]smŒT37@E.Ch$e5}ɶ?#yى^O^I&*j 5%5R#2 9G9cS2:aZ9#bx0;Ih h ҧpɼ_ÐHCZu6>i[`ZO]Wfm5SDj%4I_x8֔^^*Q( 7©nrvUE3$*sa^_7(K| jGGfY8Ph:K7]t08NZp2 rVR4鰄i;RʗcDCr9]Ҟ/sn-"Vmw>]{\2Z F$3JH|=Wxl([W,kB:?!7jV9ՆeMטgYaA#smWQ'F[8򼏯wK\9Mx}Ami[ԡjL#wg"Ҿ˳jCil˨HCq)N;<ݹ =#l^x3*Jj>A!bdҗӦƸ QOB(J`HuKTko:뒭 R|WA1{+Hp{\PׇS]ۂ4iww8(.VS2'59z!;Eb"i+GDsGiNr?vdZG~k:w-&SרJePV*39:A0_)$D}vNX$p48<>֚Y+ˀS:OZ~<fqeηG(HLކܪpt~-7F/O,OU#9v/ڐ(_sdGޔ˫bu3@u*)EO+z(~v@LwY(|Z\ٶpQ?<%^S>v0@d:7xtS-j1=2z Zi}83w hn\p٠_R[St\h-C7RRFG1_h/<41 A"Ifs6n/~ wCx:d2hXx%#ycGɼ$8pBw{̶sU.\}fhe7zL rNB7B;==%3)l}d1uNKT!Δn 2>lhXÜldD{nM"3]I hVm unt^Ov;+nyna.N|pI3n)ML{aTsۧi}j~իu&JfL >ӂtFi>-@!Cs^+Wf(9XX (vuUqlufBbbIh=;[ #U8J],Jͦb!a7V^@ 9V`"uBE&Tj-;u| !喅oXI~h;~WKփektn7'k蝕u:W-a(k,W(Jؽ {Ys wF d8'Wlo2WothV4/U.U]S}XyitŢ7W \>4ر]ȏoNEj7԰K뷏cr3wlN҅uTy(Vcb1de7:nN3!4E({eu9|)fL^&ٌR! %MO11yl4Ц1%s/j!X#S' 0 ܨ|ROrŠeOq^|~3fh,fH% !n\Pmڝvwq)TACP?NYJNNvǪ|Ϲh/}ja["ENR&aɒpyN3U4%qu;ڀN Ie4gگVCB1ec_f;MmwygAkIw 6['ehg+i hXiJuTE82ӂ (ݘX.p_rVzYke?-\I7?)>]0TOs>iV(Ȱ CYB?eYMrðlj ᇋWI)3DsKn3$NYq}ǙV[kZO]p}g.Ex>l(,,l٨aN-0]+XicNI-NrfUWR-dGK7e 1yM9~nos4]>p()]5]`3dD$|v+Eim])ե-Q!RxyVQ{B6V5s }ULl*LBR"!LQ`Df]& BJM*1| lRjQP{ p^OvRU6*S](o+);<$v|+N/u &Om'jzll[.1Aw.Z[(rZ #$Da\uF1A}[跪9<Ƶʽ*Q~:|U_UsgTuWz8Svr$VWsF<T;ԅ!#l3N2;4 $]"4he?<, endstream endobj 116 0 obj << /Length1 1581 /Length2 8073 /Length3 0 /Length 9120 /Filter /FlateDecode >> stream xڍT/ "2H" ݍ 003t#JwJwH !J\ts9ֺwZyt<喱[0n 8@V]G'Ǐ¢qH&, rɁ\0+Ł"||~>> 9PHY'bkr_O(&&G F@@0:x ­ `2Iݝ#lqp!.v0p[~ 9$ƃг bm\A0Xa{W5 UVh:a %4 m ;:`-4x\<\ oA  PAm>CZ! N.H$;Cf,;:a.HA`{i mYNՉWqv+-qg v`gʎq=O'>~_o'>/|.WMk l c <0< /ٲài.:矄 =xs @>>h G2+*+`bpۖ~b܄O?*e7W( Go~^]]g_~}k]WE]@; lqkT^0(ւ#! ?VY9 7q:qPt vcqIo::5~Qaqv%#pP,ެVŽ)ҏ4 ,`ɵ̜bpzBrA8qz6N=|Ǡlj%Pm}9PǏlf6G;%e~B9]RHh\qLBٽ64t.;?XY٩xȔ#"cfͫ,y(iDriC4"5ǶoI_R2S>Wx|jUvS 0D+3s-9WZǐJJ(a{ij^'ީҽPfCZ.~ΟODaI^_Y!3X|zyAZ;#]\Ѱ,1ǃd*v5$V$RĚ#'R[ϔ2CX4>KYb)bF'&Xv[/A+Ob!4 "Y"2SJT]K8t|zu ENJf^?s}4tXM~X TYzD@OA|_=.wجdK$v8gmA'Jj6QY^hu{ПuEB56T3w0:vY*jYC}GDo"מb=p\zU"1GOXi 45"zd3(X=AW=,]wۖ XU8I#焟bgw]Scbr:!aI!4$F-tg@"~ TFY(& p뿑kuz 0ak6KЖRaNZ[,O9J:a7o+5y@- c$4a ;캨ᫀ RM5[^Awh0<|ݦ/Ѝ"cl]2ڏIQKg9? c 8Gnovln>/u*^SJ6&"Hy2w(~j$!stEZ1-q8U-^s;),7ei0Qڟ:LrMY#Dq*A>3mX ۓ{db5SAd`<1N.nK"|3w{^+ t{9]L_G0I, !KC(cLh ӑ̋&2NXw~'hhN! Zdm|uhC _w!ii3 k%۬sժkinS+ˡyMn#d:J6YDfOlM[O_ju5k="t>x"pC|蕿 7-;طjW K~EJ>M˩-$q6㛑jg=MTS5 2rS72lƖ1?GAGGgQFxzK?=J_ve)3r)t*>O˹i|WICWG"DŽ7/ d5=Tp^qPmF˥  ꦏI^slǏxcdC,5kԍ5(s>D,]1MGg'c*$Du=ƷSDۄؠh,уnws~;]3B_g,#7G{٩2Kq۬3=2Vl) &QOsnAn6o<^\D55rBֿ|%Z63fvu܈0#^dC C#5a١wTi<++NX(8˷c\qԔm?XrL(xJς|17NjAN'V3Tu3M&B='(7f)d is'o?p@O=s7Eڪ$WhW!^%>;odHw۰ѻ͑wBrfWlRkKط`gm̶bt&vRJmyW쎌Xq-ΆԮCeJ3(TN"9 y5feȭQ'' ~~v`!j~. J0aaϺ1G?./vҖ9- OeUe>d(&#Z5%g+8 <}22It SF#4و M{ J_}˨!wzי=%2gCH)vWm3N$6x[(cdL Ƹ ܛBjUm3 xp[2}+ίuSў\If(jpSRݦ)IXxb9b[N8"<|#=-%ü>~;q{@xߚNU¯iAXb 9U ahxY,)j!YD˫H J3fld6ƾJfswjIVnks&w@}5ОeZ4 q#,5GF KjS(i{fL] цKEĐI|䙨.whM- |JFoNbmgl*Y#La}(]1ks+|%дJANOi9FE:4=և&nN+BuUSw<2_c+G]o ]6- &(z>ܭ;W[c* s;>5.9R G~SЪhg7 }CjnЃRASơً2"~`rCy^!TbI,Q=S0@|4u 4@(/:'E阮4/S̎]_ k@a,w?|;H "ej\xޯ4Jʗezi|%GP嵑dH^jnX?@,šM3xďsËsA@Z 2Ё@fY(figBMr$1_ҷnwՙE?eώg6f7[Rm փO:1MAy$SF'FtA㣶o۱y|rO I(Xi)HSHW-b] ,t=:Um(w>; @=prɻDe5|_ǖf5F޼JQcMȎD"Cܪ*p㊝J[O~1Pﺚ )Vd j #cx+ic#iJ]a cơ706*/'h*73>[`-S^-͊ċzgLC=s3}tURW5ٟEŽG?\F1W&1T7:i#քntX(kT,p|s;Ɉ@xNKJek=joUD0nGM\H(/HֽnyV,%Hs੯f`TAm|VSW3gpgd1|F6.J 辅KPbth3N`/ +nL'ld^cԎgLUhLg^eweuE/>,k 1Jc&~P6;d +?mĺ^ u*V>o}>yI>Y@ k7yZHu7%ᐳк#q1Σ,8XY?hHED==}1,UK WhtyK!ԋ+ .&Y4^Yԝuk} Nn7|{Whʕ9~'4AH Fv F֝b]gG@Ц7XU+`CF!6hǔTӊyGvWv@]Hn2\4[i:QQ éڴ&ʶgC%V#j~{,jO<£}R >)Ο&~4Ĺ枑kXR8`HmUOYʰg3A l[J pq$R%u%g'W{:\П?Z}k)Gd{ל4UgG~37hVfP-b5Yp͛uaAϬ bKNI^*VjVbKcUd:^6.BV}Y*o*WuZ8jՑATXC}hT`G.k$ЄC%ޥrMp횒t-,ShRՅ2}%K]nYO(GC6Y!4߃<2]Jt4jZawQ&I+Lr rHS=+s"+x[ PnQGW>9U화nn/MUD+Br_g5AсYh4GwE?S^pPJNwiDsAJLCdi&EATVգ_wdZE4nb-?  շJfn,Dg ޺-NI {}|݂'Ҵ rKaX]Yo8ԁO=l2S6Aw^ԡ܄)' y0aouL&JD9(y,؄LKflay== ,A YM_mيlpqjDײ08!Y&! q3GU1zdR[jsᰎqnb~H |%bNsXf'TF~mE:T,_ہum w{ ǭ-Vs@/"G?0">cUea5Ih&fV+ڍ>cH=u=ύ_x[[%uHX9o.o6݃ԖrhC賷ky6Zz!sT>>h ۬bL*|㪤f?xPlkdoǷTd \/RT GDJũC#$m{5tC_j˜ƭϡCyzt8AKI&8BO_%_$/H_:8٣/Y~[b1"RJIa ֦L:ƑRZ~*RtxF^\$e]Lcy2ia;"iV )*pAz8W_u1yaƲ/4\ˉp w.-?t43n}}8&8u!yxWUQz x-O1UQhBGD)"VUS`"!%BmFEOIFGd o+=ENpON%G/wNN˴``t m ޭ!N\%ȮHf-Ś$ʼ:7nuƩFaھc%-?B~xj.%UBeYok a)BLUlHMrԭ`~TԵk1cv1Ff4m$3PiMʌ_݊hEEզ32kq?R^ 5-q+< <K{f+I(oMͯLy aӉ^ $$ <<6&aޢGbdݧBp Է-*Tm_ =u 93e.9wL]0ڗ0Q]MR _|gى@6OJjT*G'<'aav2=uQE;lMA[\}:޳ CeLi??pjy/vS0;FCzvn pYg,o{mmn4y+IҰd- I7{2Qcr&?fvڊVw3)jS~۞0Ů&>F\4aRfG07o}S;,;?]]{vH+W+!Gu倘}2EI+V.(ׯbtunFڮ?Ȼ endstream endobj 118 0 obj << /Length1 2507 /Length2 16169 /Length3 0 /Length 17643 /Filter /FlateDecode >> stream xڌweT\۲.] ݵFkp -&8!8]Bpx>w'+Us-UԙDLARLl̬qEu 6V++3++;"5-Z b`Gt$`=@`gge t6(2A.^֖VH@kF`a jr6V ;pD3-@_.hY:xxx0\-֮V5 dloq̈ +kT@g,6ٻAp|@dY#?1?9hf`XXۂR ̮_D 'HS _UhI{sq;; _IX;bm<}~c k{sJ1wsdѴvrJ!Y\\9@fV,rdK `.gm!AWg7ϟFllsk3W)wdO'@2ϙo"%,o<>L&v7ߎTISY{ ??9gh't`rO&aǼlmfbm+xKaڠXdnf@Z[G'\1GZۃT\jLlK53uοU *wTI{3vtvz! ^Ns `awp,:Zn._E_ ߈"qX~#o `QX~#߈s>E|`q#/ bfmmflf? Wk[sпrNvSp@3-1lm@W 7qc9؂g9.!a]34s[[ p 9W_p6"Vp/,~'fXXv ` `_BПpVK d,yܝEp`fփ{GE໐Pw2`.9\o5Sdϐ&x?ˬ~'an$ ~`q-'7W􏖲X~b-p"_,VΠ?\`n@py`k? ؽl |ץe ?d8`&!Nȃi;Wn_ndqP_mʉ8oxS?IY C+BC'Ixu1 Ä"CT:+.siח&tX< 33>웽i,# _*O&&b4ˑM|}#*QXnlbr$cf^ā\{ K3b~|1[cvC-+Z?UPkd Sz5oX gf ՙgm]28QY_yI+"oJ™0w7-8;),9 4jM+Gi9y`HӣxP5WdGN/QhP2Oێ g*JHJȌjxרk4g a㬒-vWQ}1_[Fn 8ǁ_S̢!s2eqQ] $ q3eVMwr~_L^uNH἟jAl%bݡӱC)J2Ճߟ^+uug 7TqDƺPf8 CXt}Au1_a-뺡I5.4HNx(TBgqxK5jd CKpͦa}Glb?wTRX1eb-=UDU D38,3)xJׁTš^h}0Wz)|f l?) J b<2@FNjv;u\-  6mf(tdzdfS1.qM3{aCC$ >,|WҌ`&u;ېU)\-S$^z.ZNW$ǣ']oN[>E'#Lw#pciϛ 8>yӜ~\S|ֱ82 K)x9Ϳ/#]e=XJ&ԓ~0AЁQs-&iDZ8*Mװqɯ QYrV7o?QPH]`˯?4D7O0 f)1j6(sLY/B"Vŗ|t|ZZ}v`V$G7*g?҉[҉j5d48Ԁ/({45}j;6gW O\l=CZ~EҫH0RĞ~"`*VS%(o_Y΋ҢŬ5Z;q<>tJ*fĶ^P7 11pvÌźxrog{xtIx1o:q؂0g(rT7#KMCë}>sxo@ӑδh?HEvρRˈ k޲c/R9f/L~5'ETbj'xH_hb ᭨lj`ʼnjY oSehUÔ }+40p~EuIi~C{Zן LSS0/ugQ$qv^vf(did.N` Yx* gnԝz"D[Ú3 *YEi"gc(41f$,2 s8c6#綰FCx+HϪ&MU~s)ƹP>B/y;̠쏓^-rb*Zx3JViy<.,ViB{-`': pqv܉ͣ=1e?=~ qd.h%IXf zH!rC|\K7ȂE6܍K ɲ?WGfR)T.S2Ɵ CD mQͻ, /ه6Δw7Je^#fa"!91oat'LH܂,kXF7Ysq vgi-Յ6" :/1W[ ߶8߹Y/MԶ`p|\煮=kMwV&oX |e^m]K0 kvɀ|rf#c-q)@_s>a_=1g 672/)0ÔϬ}lXyʣ:y dB>=N%oxxX/+}7ҽz`/۫_,@cjQM^{`M<xliFduZT]aqƮZ|Zdey<ڤ蠕ޅ? з| u.#Tp<(Dd/xվSi2څTB<MίNs8 ^.I'>NߓřsxP/A _ںeV'UsvUT>lN@gW-CLʴ 4٥\5ZKO<#$Ibaj}FY`&%wSLsレmD4@ l: b!ΆiTs •3INՌ:~4tZi}Xt!oAZ|{&ucJƻurxXOB>8-YeNnmpj&^uFj!F(]tɭ+%Lۯ ~eⱭ<e//fٞ4EQ))vD}&W[qha%T"C*KeIgEuK=By=m3}6&ŠLd+J['b#0mq>f͐aXkjf\ 7뻏`X>ܺbau=!9}79@:T^v7h˖bOJB\}lYk|QH#]SHXIbr]J߾qI3ޝv nD?ČĹ8?i*N1_a{m7--* *4B+g7`/)^ӭt# {^I wLg0,׵.,ՠV;go|6 WƖ|3̻X"~jP<#C^Cxq(\51^I4#o\6{;Oc,A] J]18A"T_ GΡ I%/*uo:χW*a`*52[0H`Жee޸'b U,7ݮ&<=yߞPrqF QWPxl2Bw\!f%&y#e~'(l+$^J@P:MŐj{;+V@"9PX1Я}^ke4c&@N1Ʊ<۫NQ@#`Kf{1R2fevNʙUߌ^UyaX`k~s6VpڊWy40ԗL{Y]T$%:g7h Bn1nH"I9ŊSe UlJa{B>ˈ,)zΡ\yZcв 1z []Oa4rpC<&xE 3+ "l..!Q^'4UkDޤ(sF$qKz󗌢.ZȏUKWJ{@͡[b'#;gQí8R& ;wB&w XwJhsX~ ԖU ~13xWa";`%jx9qh~kk=h˓*F|5G.R}_rUyQ-3]tTOSo~/h΍IK@`_EiOnԋlԴX۠2V:^內)fbm}.?Ǟ+ZGx9K^LwGa3?k9.k8<&c43V='dx<},^Sɧu̩M~ZxjfK_}c^wGdXqVi],o$L/*T<3M`R|.ɩ*pmx;S% w{+V&y նKۢ բI(BGCc9Y<<&\z6J4U_9M gYF#C$%?a4$-1>ΞΓLO I=d&H>؛ԏ &pC|D(X'}aeXC!!iT 8P!6pn2jZ4&ŬA$(޴,u\Nު}$TuZ1@ep|+ߪZ`㍷G]!t|b3KD֡MQf@l U`0@}hs1.xiFGn \ P)H<|6#T><"1jӨ^/|L̀BoR<ҾDX!MHWP?J@ƽp&= d z PA>buMw$g2ݡX[FQ;H2w*:hdRK>ܗ(甝TW% BIۣZ|3.U3V,/Dtę^#,bPC Vpϯ|v眫Vhe 4f<(CW)/@!luo,5W'7 &%wX=5PuIWjZ!;pBxki'XMachT$S`y\ ԣkd$sn9Q#\m\G[B3+|\e܀[ھYP=&}~@O6)(Fqӓ8H) >тp`%Z2*:m;_v/l0:υՍ\= zFK~^#_4g.)R9< nٲ3uC0|CAQ}fDFA[ E J OiO2%7*ʡY|חoA4վ+Wo{`fAjQY7Y!^`cT ]dRKﺍM!Z?#}({ &6&:p;>ßӉfM~Y~ublecÑ[milեJ=Wtt&riޛhڑF[ h!3CG˕ya#k8ҝ8m/- Pg-Sc))_N'\V2D.$H߽,zAK0>*L=#rLPU3M2g0/kwPFjqio^!G|㯀1хR~i&z_kƂ;U|ޫDY|j9ihtA[yBl)Qn`?0ҝ 4j I(UAaaF˖hT$g !5iw@C8e#1'~!=~]y|c˙dq\ɓJuHFí@$SHb@8v;pA~nJP{p! ѩy3ÎɿC9-qSh-x0擕jhX!Tǀ6ȉ%l[~wqYkBr!pۿ3w|OS0 ТyY uħP Γ b-2iT͎BN yV#5@I ۂONT)Q́Kfm!lB}>k-oup*ġWë xI9"h5X|8͖_Ѐ4hm,.Ug5$T>03#Vl/_0bjO_="|.ޭh?OSz饹֋Qrm_dJםrxB3^}ށ[ nm]>eFv;1a_cAg0 :]{ì]i &) i6 ®Ҡq!T-{.._>dSǔY fwt,):2^շP L+؂/Ȳ| Lnhϑ w8`|y!Q&'_I :%0i;š˚ Ƒ^34oZd")5àP97V;ޘ1V )ܵ : -߰v?Nf*LVҾ2bz+teS9NMg/c#adθޱJv5 Y'01L}gv̴tb^xkiѥYAYKqxGn}}$ru'!EWWu9w/Wu4`cu<B+'ᷞO)vBH!H6$Wi0ZhYYZFZFqYr&*x 9\7F,gjN@)fs.e:ǞRaɵ ܘNOn yzK@_ ĔԵ(˜شDw b nz""U߅xs<1[?dƝ`!6A KѺ\U,9OOmv Wi-~ѱ'&v@ +QL+E ҟ>epn5T{!o+Aiz1{n3S,H| ~T<=Wkw]ױfogDS {Vr4YyP͉=^ Vj-;I@.cG҈#KѣI=ՔU--A)'I0Ls2*/ kwm:10y6Bo3~!,׺]yT'.?ةa2îlN7X bxj)5; 1;s!k ĎyEpWEVbҥ)><$e fT?4z2m2 +}{1K&l8 -/7LGQ;vpai3Y:~ubPn^"[>)0"{Pu rP<{~xJvN <\qtz3{eVOjSE\V5zd bo &/N)I\yXPѝe2Q恂}u^`޴А[=d9B|MՒ|FhdH"NA:@&x:׭ΘAQv9nHk9`=4TrBٲ%Ή2k-y mm_k[W*p(.cRNy`|6x$dOz̚"HC?턼5qOˎVCQ~HPl"FήMj 1 m0yRJqªA-0aƃ#M;Gљ??e#Abi|?iʪȠ.N3< V" d̟xlT@(ʀW/YQإNٕFG$~Uv_c,R39aC6s|nkzb_bt9n,pUJUT|"-_}d,!v4l%+Okkr]c=դH56KxxܻoeˌUU㶑kt~OknvP ΈfčfM3 QAvʍUxGDknt!_)ThW &|U-s+?>}k+b]h8i6ABkEf?'YL봏ahPeYgwߔt?|x[BPfIs"Ti-GcLN"Q\rO7 F1댹 ry136}pgbr+#cs!{8f[uf~7]CE % 8mFΐ ;Yww$^i4!=c$w<.0MQ}qPQe&9o1Mgh m)r? @S[ϲ\1VJӘ~GrE jASp<̨l4`>5[68̳y}z`lk&;դK*nF1j4fB' n]~-$ܾ&,@QӜjO)o.;ziu@g>xUTgQn]vA?~5([| e}ob҈>>hE(ɎT EPA<.Օ2wjthq@F EJVԑazfF5pR*-#CRSt Z6CZH6 t& tHI:c&KIO1@-A 2q&fw򸉂.N Z- -=Q>d-Mp(67W7߼볺ay\fA{.FU O;Y"=F}A"yפҚaSF)G~,iB4d<$j,{>lhg{"4*g)NL,)xy=Cv8pݶC!5.0TS"c>!g{G7nX< AH[?R.N)ʮh?QgzRIP&#-:rb]Q{tw<+7QQ3([A:޼a% :Ulһ2z%;GGZ.\ S(2oČh2DftxkػmA%n|\X{х@yGQڷ-pzk?_ʸdp?ȧBrw'N4IEue\ 蟱Tig2( ;Q ݠ0V!x -~hsZ黍&?c2~(STSY2q_r4IRDNY~;VP'tjb_>+zέGCg^F]in@(z^lQ-gJ*[ٝ%4&JUWyI|Im_6C0&W@M4m.>зrD}?f3E* Ko]+dZosi@")~ÿuɵi%a 0owc=%e}PV|[-Z,l4)!έEa1V gu9@ؖH5ْ#(!AᨨDŋ%-/OϧGZ d; _+ljo7&D6²#Y/JEt}eSs/AfOUQ\^UU(CCT%Wk"yK!<,MrR Ys;/X%Zu>EKKQe,YwSɶCMAw?aҤ/RudO6ojw¹IAt__@⩛E/"161T^ vV@n˜8)BPd`W}wY1 c_ppZmSױl'T bq#U%VTVڅ UpCIYUML?ԕ&5? Ur'hc֯jz88A%b Y.F;oŮ4T9yG/[;.?ˆ}"xuY?NdY)kH|z4&*[U-W? oPw@昴yYTEjƋ=nPp{^(0˜clu+2s/F`aRj"on2mDg+cF6t endstream endobj 120 0 obj << /Length1 1543 /Length2 7120 /Length3 0 /Length 8160 /Filter /FlateDecode >> stream xڍT6tޤ{{o"% w&HGPHR7A4E={}+k%<={ 1!ʺƖBAA~AAa|66 g3{" p1=@$ S"QD]8 ĥ$‚R7Ђ|6e'ZG' $%%;0. vCBpW H? t@#0 v*tU?>0;"}` B@`s{P5u`/ '_ѿA` (ÏE0_D G(Eu @MDUW}'G@ju̪0eDڟ  B_u}`[2La/_Fń`,k?wooUCP;*q>@o0 oǿ-|!!؃ 0`O/J%?!Q sà~X@]QWEG篒TR|R!!!q y _0G8@vQ_w.=8J`?B$(&B ?we ws!@7/J^HQ_9 ^nDQӠsB)OH_PAA|$jি ȯ%(?>Ԑ\Q%.0j* w5lb'k%BM08@p{j@@ǒ= F@ vD,= ? rD0K"I pGe;TWPW /OOLQG} 8H&MDE"rGleoglI%;*gQ3t.fh T{W ~w3:i$Ů~K1d ´H3|Pj(9#aΠC&*w[2.#-h> @NFn5t^HStC`W!r24٢={g'学GR3nUqd'x-WR~TQA>AkCq$3BO&:hzxґ!S$D _? kM |0~xGp/va,d{Ca\킎vzZHdHnՖdbҍi-yG?|=ximAیc)TzDZd4=\dazs-j+|/twb`͋&Nxqvi`d?9i 'L(-գ`Rt#g׌jG%UcA \0(VH8|EraXU"SWD=+AI6HuF/ONmHU?>X+ ZQJڙ |7vP>[\=Z(V ٸs%/{oRaZxoc7<3٭G0OoOI%IkoWVlM{B'˯떩BۍY eүlЌcŎĕdIa Y&UYIcm,#|A1} S<; ;l`a~t@^y7g6ď|ZeTakF;֧[ӼBhZ3xʭ~wm)pT1`}2yy{⺇[}k޳R~O4RehU>\hrǥ"_}ɱWWga )aުO*62bx,}k٭bWt|͍zlGO:f?#p~xESC$9t.4t0CQEIc>Ww|O Kޑₜ;䶺 v| u8dftcgH㲁_j-(19-#{],>R v[Y2真e#DWshEK%ކç>앋PVE%{3}yj7s}vW9moMu =|B{np5M-ũJi;ҙS/zTg pvRwF}\8?0"9Vc(eA}8ڇƗM'ѯpc>,6)=m~ߎvԎj\Z"Fu" b럃I%%h>ԌB\eIoa 7fN2XMɾb9[?3g4Nʃ4)')fߵdߑj]7Q^ A>nI͌*3p?J֌/Tkb\ ̼9"́|3|!zhs<l_ \%H&p}$#ZBC ߉y<m %#*dRӗD\n!r0ѮZǧn.)QBk6=~r׆o!kz0 R-“0'G^sm9iVVǹ| ,¥ ߫PͰ6iXnn1Ey%mQRO?^/U~ KuwV,^Sa&tQ*nB{Ǧ\[4Ȣ#H"eT*;0E!U0k|^1թF{'B }ɰ"<lnݴIS%"o6*kCiăM]Gї9hE:Nx_M&d~ttco!Jq38+ t#U>M-,=I0Z@`Q(w%LLKId6~| W]=Q )]1Tb4;}z(ZB"o- %9/V;pSZS,$[nx3v8D̴nqB'1ekGxNxg{ OW۰{,J+A[C{ꬷt;cAͣw-yCm$)6;%L#;LC>=F- ssvn=vMg_^Y0pK *BoY&͔5.$?ޛNzwE|S\_ W_~C䪨iuO8Ѹh2c@4^m? FB}v hg5d;sosu=F:*D[XͅA~<_^UyiZ,ڣQQW_CCbEf+CuؓcR,vbC"6̚,=&3qYg;غK.K£"~u!9ul m‹'UxFV3z\opm U b">|ᔞ'ʟEF?eԎq,zUILk)`x֧hg걗JTnZ,Q {uLi='XG`@$*ujl 7s:T۔B>M66+Yԗ u5t-.*oGsPBKL'IIA}:ڣ $ED6nCd@q[s@4ݾ#OO(hi-ѣ-3n|YY=yjpb*NiJqy sONel D~tr+ b]#ڹ-}gd}d'Ei(S[ɗ}?3Ypdy :zuvGHF&j,6F\_%nf6!a;[0F#4Wj~F5mյY}һǩ#x'%ajQs9-[죷WVHDz^-EtێǪ 1k/ĎجOpuTqgt}qUGO+톮8ڵ#-uO hZ*}!SFSy#kß:E')MT>x_;J"՚s DɍD6axd`6`[ DZ?3uI\Ď;DzNK{9Py=xcVžg~,+eNmF}ю9N >֎%fYC]V;w~l3+x_񞬦oMnҴx9$8YiVLЫigF{v ɲX~r1kr)՛~ ͦ˗R֐d>S(2&b)GPk}%3`0YnA`}6ӯRsMgOjџ&1*'c؋{4vm|ݚcx/\7HXw2W] ]`wE3݃H6}-wŹw, ^T DcZ\_7c ОC \z484h$!+ɵQEl^S̈́'Ieuɹ(B@f__JOҚ O4 |Bih<\D(~PӉ i%1] Ygwx`KjqWqY˄@:TH $W-%+;=+"{8yUr(l˺Gɗ3x2!>T*iv۹^||sh{:{K>N@1jn2/ .ɰhNVQ8[ZKl"Ep>!_<]dxJng t_~ d#JF/WE{2VohiiT b/ӓb3Vitb+uy]ŚlƲ+yq7mI.\aXQ% ~É8i̯i QD(:?ճR&mrrx-G>_#)1̠=/[G:P{ɛyk.- CSy>jlY{AL4\Do3s%&`'JW6x^oTk2dzKCW<BOc5$fO!&Fs4*ȑ~!sNp C6fynl׀nF=MFXVOxZLzJy)/kGiD_£x 8UTNAzDJmbUXK uٗQ N pB+>E9/\p_YX o ]&e+r{ht#a9r,Igչ T:\"ʿNΑYWmRN: Yׇ,"dAᰦ9!Cr2V7$WÀo#av.*c7_?L:wq,! !vH2iVe䆋!bq4.pV("DtB/hDhH~T:`  9ieaY9tސjK0#~|d]>+T /wmvG?da:.QE ҏO#-OB2u1/*{DAyj</zgz8A,\x9m$觫/NjL}F ̚奧痏ѥ:'1}orxY9fJv҇k_zgI\ɑ}kdcЬs_kЧWt,~j-"hTlzbC{mHX,o3C$du~p$x)Fa GctVK zR "Ϝ5KӜkNՔa=)9c\ R\Dt.2t̽E!5UЪCX0R:emm%$J^\z]rWږd0C]V uVk,,qR7zACM=$_3[ftLHL}4N]P#׍.|p+OQbTfpP$"%nH|dYS{AoA[sy[̍JL5fM34 vDqI>j nm$/ zbtW0v,II` endstream endobj 122 0 obj << /Length1 1405 /Length2 6323 /Length3 0 /Length 7287 /Filter /FlateDecode >> stream xڍuTݶ-(AzWޑ^hL@z tTiE.EH;X9?ɷk FD@`Y4 ..$p!0X$%*T8A'4B`k`] d pP 0 pG ~s.PCC=Hf*DN`hW(!@}u] '࿈Pg,"ߝCJ@(~aa+ "( Pp ~ `csN('*lB#TR?=HJn@AWyoW/?+hᏴCXø#}w+H?0kO ^^p4?+ln$gǔ^@_!10PHFB(""- rPvh̟n= 9uW-[%0Kݐ0 u Ts!Hwjx#(bH: 7@`$7e5g$ a"[Y`9X.xs_5 3Q I zx9WoH8뷒 Ogڡ1_*%^wF8#~9rAܱ s`7o#^`b s|pT)̷ˎ( s_Cn7zR _F 1oyYdOh>u+o t#nLRT oR܇CxK--7adV.Jf#UK6o֔qHi9a 2P!{qjCVgGNN[di #6[vOb#,Z,āv.DЎ L1{lĊ̐!m!SWE֣r`'S+5Mq~zq vf,T(syշ85*ã8e_u~ˌfQj;'cd0(ϥf K-hve$-oU*,RWͅe܆0$fn;[d%X#@qYmtVua =(,iI\n~Sg:)qp); [U&K\@`i6Y(aOv0>嫛n &Ǝ_R|P"*b6;оU)W4.DžA\Xf'. V$!  „Ci>U驜Zu\pѴ[U8Α8'T[~ qBA 8hʈgG&r'j<\ʚ NUXU?fkgP歳;;@ۀ{rfPU@f)MuL ڝvHwܿg/7>:vɐ)r2d@u !" Tl3b; ?uB'K g)o=gՏ`9Mcn*~@GӒP^욍k}TA\5pzVڟ1ak d%3~f4_ n2c9`n8jIР|#RX*vy nF+A} }sߪ8PIcw>qlDA0ky[-ׯ;mV# P!7`y /$K{r:Vvp .8~F9=YJ9atd }M]}[4)w\M$["lNI3-,sK{vNR١Pދ[$smMbvӤκ+{ak|MlٛL˟k{H#NUn $,sc"^y$TFq 0&z}rT+BW64;+"+MHsT79EIz1"K3򆣌uسgST,Xeyk|Fm"ſE?+ Q*j~>b[uvzvU'fEbH"8J4:K_xTK.b|SUKM`j%V!L*){܀f0!j1dVLEASP (z̰Gf6T~2㪎-tküO/u95Bd=p'+L$TLȌ-̤u9=M!iLѢW jEDV%UyˬO SbtSxN|S8;y97UtVy-Rvbc;A<47,3>ʪ٘7٢:8,:5=D2Xfav-&>&8@ϬҒ5XrV[B@z)KR6JңxK ;4:"CaZ5Ww↪lg{@l0DH*%u'7kh6)--Sx5e ?MG}1 +5D^#ՎʝWꪁNBVw^qǿߊJBG{νɷWL];z*A_ ]]^_ȞB7|+K<7-5s*fëCSr8$uдNq0$Eǜg_+7w qnvjȪN[}si.%vБqRoK~stOVN(Sb`9{y5J~: ѩΘԹ-&|=(& J#VLh2?^\W(KxI߮a?IL7{׶Qt~ki=QI9)X>TҜa5\6x!t@ÈoJL:ĉwI}+0ڧ!~ŴYj[ߌĀ짵^K ejVo |D² %գt}ҟ[ٛsSZuוj=06~ˈEHdhw]J!9w>k5y{g9qlQrJ(i&OeJ$aM6wDpLqP&=-r03%!owS@Z8F$QuhJ:,3NØ{Dx{OvnҐְ`ΐj}1]ZCT4 t,$9dQ3Y*ls<7f] D'/ |e^^Z8 LhUaj]ISSu/ǚOFGSL4Otq 4f;c63cf/*>ʚ+t3џ7u>:g8<5Y&yʻ=%DxW\2ǭwx\ry8g51ώfݴ)Pn{(v$Yމͥj$'; \RK2JPq#ۧKf~?!;Fua5[do |$5"U/|}{_RTKa$k{iw(ޢ2(I՝ʽEYPhY&EyAQym_/bKw?t5d[A  I>5 [/nx&] 2\@a bE#;ڷN1c}3)JȬKZEY TIۓGW nHjo˹5kr.RAcwݼ2;7@ް=KN(DVki0L';v=i5c|x^_+%xk#S,Et_2"۰7su9FjT<"rDy}ȵ?ƹn]22jHn$GJ ;qrN)eBظ8a؋nGc0r$e\e9z1T-QSt }j>dVJIg|~#YNPM W'ׂ5uO{(_m%Yo eK|*J5d?5 y1@O\:z&+*f, "} B'vMY<]ڹs[{T=͐ RǺG;˖Hȗ!%w_-QȒ]8ZQn p6f%RX7h@ wzq#P]{X_lJSPO6ӵ%*"-L{>"*aJ2^e㩻||/ej$6ˆ&sdG-|=[bAMJUH*.L1CD63M\U;:XH] Z$f~'i-hN5STR:ce)W|&Hwc ϗߌʅ̳K2(&\F+_)~bt#*ދ=Xo}I@l}}qıxMt!My{*^(ܠ:Mjh̤/5S|+\w &VTZ?DrׯΙm6~4bho7-@h?;D7BI0̆DL$}5` ݻΈ[K]ݽU# endstream endobj 124 0 obj << /Length1 1854 /Length2 13458 /Length3 0 /Length 14618 /Filter /FlateDecode >> stream xڍP\ր4 4X.-X`-Hp $w e9{{ sP`nLl̬ %M96V++3++; &96v M&ifvȻ8ll<vVV]f K3@tE;ym@gA`a tY9lo-` B ڸ9xzz292] 7:2@wkH4M_ &Y]\-. 9E/cſ #Og3 7`Tݼfٻ<@fonSuw. '7WfW=혥-%@G7W?-ݛ˵s{:@VaĢrvIm&BGf tp  4*vXY߾|]<7wKHllKh rD'hݿ `6~l?>}2z0K?^1 -W).2qpعXllj9Z|vN){AK6@?njo:"iw{?t@[M(vZ]%%j޶Am8Y9\A^@KU_S\}9U?0o^Gdvoo׷S|ۡ+hcعf..fHowF\_z9fGۛ G鏋!,EHx8,r'EzEQ/XT!v?Sge/q#Cb/doo6·c j -/_韲ߎm*[)7[e·fF'@ &ZNlvSRt$T>s`kkpI|xps(qHt 0K+EHrLg:!B%+3u){'nUvhz Zb#|Q,˜vX}dY[bfmEoe 4"rODzخuFcMdz?ՙx(R:Ak<3Z5G]oK+қ5C [.tŜY>nF5BE<^su2^IƬb+' -EF5rktW7xP6\(/U> fi/%A#C\V~p/,0Ǫw(".JW*b6Ǻ^M؎*C6rT~\0G@^DW 04Tnx߹|G_Uz`^׃׸#UEjD-3rݡ.(xL=A.Mi"AYpH6U՟1H8:ToΏA|JS{V1j^RmbhXL"%v7"O/QX.nur P<-kAgڱ(Sƛ1IyЏk_!s"jƔߚX:x My#;e+U ꡊ-oo@ D7eb5gP>BF[VD377F { d8"f<ÕIޗG?{^Py&v6p˗wA\{Wx]?C_~s)b*J齓^猭/dWqȧm%g,]v0 |z9R%)W+E*j\+!"\%ܪ9ɸHH果-J KK> .ѾK٬ A?A:R8ڻ>;' @?ܠw!/LڧWjRP ډG\(mnf; AXNt.'~blji,/ ܃CYKmqaby ;AuS-,z\8#!6yz.2(Z|u.}6fM>`ɏԢQFȅ_U/tl!~1YܰKqRB_WjjwNWjC =]38Jxt.!>5g50z~SON[vcv$:}r@I|"gƍOut_ VNǘ~TaTSKjЙ=-dj^HY,.׹Yp gnM$qfT36EF1YDlUo*8&Sk!"|jUz$͔z)H|`N(XDy+Ǖ")"zJFϥ/z,Jq{o -)1Grׂ$׎3 n%K6]HqlaϠ 9~L! \QTr Tx=RZB~B4G *T8'fv.azy֬ yo#f{mZ`Zֽ=òC,on$ 냃 !. xqtաa0BFJ8!waT0rm;/]U|#_]hX6Ά;y5 3%|cUqOah(:ٰa^(ha--XoֻAtіgJ>e0oB?*m UbeDZP}%[6ʩ!2 Liаt|^b^Qr嵹73nO\/. :Zu&_U';ƺ O'"0KLg2:؅fe%9QǘMRTtSvBw@P;__;)QhD<ۣ~(?y; (HLOTW,54liC͵ :NOTk3umZlQH:dTWuc nXg] 륿$(6օb~ Ao?]u!`ƹzfU"[l4-_&iA7h1RkOaڎ.7]'bbsmu͏9U,fYLn"C=+Bb xHSqx Fj+GGh|GH_onMҶs0_,g̈́|A;9xܜZ4o -3"Ud(727O@!+E?A #6X`E#k, S@'b 3z_X1Aea;ՂexFQpJsy>;fK7&}W-|oveMMo91Б&c7desXht^uG&Iޛ@=)o C5_j}!$Q˞47M)qLl}VSIPTc:$,*aeHUU`W=HisKUx4:cnq8ϓ:E eT^i5A @)suip& jP_oV rKasR Ğa-EMGWϑ6&|^қ@/~3:9)nZ|VjηN@ԙ<CȞN"XE`PoB.p%2IM`kÏ}K<^ azr^(R\t]sи s8w#gA#'͖:gW;U ~躟~tdUz~w HooPdAR)0xx?x)a/_! JГ:dhr}ѕ ٬gٿ͟;RG}KIuYRk>E`W\1BĎ}4Z A+7Z*2"_N_~\٫:c6Ý-W8:2zp.Bx)g7*蚱S= !Cy5?dD`7nBn\c^s65y6PFJeY'u w\>TM1 JHx-q"a;IPҞ)PƃmדZpv㎼_ϪNkhꤥd-,Vrnmg = 3=7PAApU % }IV ]oȗ.mxًsɘ%k}a$̄9e|P(x .u+ΥCoVEcP`.Y;J ¶NKšbs.ج58Cs2 ۾@{9 ]&cH…w[RW0q2ۯb0LR?$:i@50Wb#=na *ҸM@C1h, Qe+06\7I!֜,= S~rVa6(RQ!F\~Fd5ÔCJZ3Skޛ6<-'疨FH KW\]9#ИG#Vfk ,>^?~&mvܠj%_z5lvN'AsRҼd,N܋hі@s2evZ^hg>3_ 彧`B:%3ğ]$a̢^J ᙄl&asdB^WIG9I:`iOhҝKʒk P ה4(},^1T}%t2NoMډvIYLu!wWnd vdXUx >d Kn\tJ'?Ÿ[9}F{ՄkrcjD 3hz[QE*< mؐ״I r`56|hPqS!'D*ReAWkĖirlF&6ЋE 'w 8ㆾ~&^KycrU%Ȝ(\lܛXƛt |l–I3Ih 'aVk=^B8_A3LxbY'R$ЍYPy _լtE]1jLWn2 MȐ.a%_v?-ζӐgm2Rp H4zj'h,`~k{Q|yƣwfc\Ϸ+;!f>Y{+1hHaVI-tRjܰ 2`%$ӿ(A74M* U_O^OݼYi CᇬNIm!GU:ñװgѣ۟J2)^r; !g䵅٤2S&폮b_C aՌX;5m؜Cb]yVW3Ƭ^ E~2XuȈ]lulvp?2uߨS+L ڈ#Rmz3M bmxyfzƷI"Grg[Z3]or%X5Rɖ7fѐkb . Nբ5R;\ Y{) *hUJ1Es? Y.J(oz.; N(pfɥ#kϏ%9Reaa̻-,96xQo~V$ܨ,8Vr*VEB)qj֕`8g&lAZ񂘴i#*$'P!o@$8%[ެs;u@A$asrb]|7{Gt1[dpSzL!͑,L5' &qlC,$:>iڊvߒh,&ow>(#7n[WsEZT1ͻ [$~6ʐaK%6.22 ꍌ\iz~ Yan/9=,-^XI1,,C:h,#sB⩈Y1V[w&%e\xZPX,'3UH)=!LwUIw&P8)͞v\ iO?ָL>^m u@(~'NST<免$257}QL /q52CN sGuw`gbzO$P:Rbb)\w Pu֥WV'di:m@Cuh$1%k댁h)=Cɉ뒞%N> "~ga [A0 7Dy](DlL*ls(9A=J# >4_gf]D\Be>MypJLRzMݐ+DG6}QKȩDd 鵌䵾d=j0EU_l؀/J^Wu H^,kpO)4Q!X"VN{W씷9i)uDhN!$G8E -Z~ys'1!vØ> ~[/C1/j,J^FBM5@wh#Eg&Fe )%sGQWj"dT&ΪXzJDTGbOlx'aXa|u#ZhpɁFhpV .S0?P8hgX{k|@RhkjĨP{פ"j!$[K@9'S}Wt7T1dNG{[\v_4.Q({LI9D"!D}_Oc`v/Mէi$:oU$buK+ɱ6BêvŐquլry:!UL) 1{P0}LHat1k݄nӠJ'|omv\ܞo4d cyE?d {-a,pf08: :ʛ@FqG0r;B~J>px( c $ `+:IYd)Muj\|ӭ/? Q.Jsg?ADL&9#jϘ1to<3%}NA3Vo2E ڞݦu·>k+?ѿNEEհ.*2xZ٪,0pSeF"q[}aj78 h$d;J6UR/-(=G?9pz1zwT gIWZyt4-ۓLsTLWknFfAO&gBt-A5Xy]D&З 7,hui/v|w*hD3҆ĴiD?z^e\$CgG€eSY7i䝜aƹ| $sfKR[令8}/dLHL$1ܲ1Եab1(k-蘉Os=5zX%jՙpzgz#d@A7]HqqMZc/U~-eBDl3Ah㤸ǯR]:]YYfNWWyEI0`qIE(ΫetwlM%̷QN ŞsNݧu|?p?%&_!lҞ>Zɷê|^5tI)GER7Wݴ^ҭ:;DƩliFSI8{ ecp[R% )p[d™dk߅3xcng¨KQBRK+=Kid~~ęxF) $UeEzG[z/,"tih2XܟB-zb7z [ۻ%Kͳ" +tI 桶Q( v~#kt(w3px9p4JSdIQSBDׁF7DzY*2Z=TuH؝mSJMDBR.wWB\ɸk#)tws0/Zl^"#?AI33hζAXwVfXɖ+GmaQ*G__u;81+dPMʓx>B3`^Y^;s).&.$-()96X;:}K5A'N&Nڭ`/G\Vͤ溻}sB>߫+|%+ưuzvX!B%: La9ރawЛat:q/ia0EO-_P#zzАM eXD`ɟP &QlrF9L1ݲ0K|eB_& e˒p 9ۨľ[ ?NVQvF#`Ճ T姘dfä?CA ղKKBRKȞduz=xϧl*.➺zkΓ:<}@ٱ&[dP(%?U;hY*ۏ?px >/Bi}E|eƟi+rOP8C+OѰxnZ+Q=]]@ur -مIFqD=|9)ə"8o#D.n 72D/sv޵~ZP摐hڑ-6W$HC"1{ FJB_ MlGmG{ +Tp /AB&qLfXf߮n.ekTXb՝q 8OYFJL|X7O c]N|3?|triYثazԝh ,)XJH܍L*ુ):bUsp~>Y~U1>>|Έ oAlMJ F-uHKab::TLoۆa禮ԄpB\bL^<أd)g㿬,y9|7;LJAh2~`{tUf_T𸾽B*0y<#ٲc;S<ڎPV3<7maamb%~<"}:8jm72%R;Z5~+Fp[ӷk q0OM9P3Tb\{hkHBuik1 =O#WHhO;c[JqQ3ukL @wy+h̗ >JwҀsϬe*~nX|_/h(\ O3|%w4#t#jdK5KX.ԞbI&^VmiC6]Y3B c:0ٌJ>s3Bg\>}O-M#$AfO'w4{Dhf0ITbzo O\EsA3?$mlkqF% .ǁ %+3iAk~utv֍oEі6MI&jr&e`6nDqYC"_cFCX4 7vW$@F>N!oJɯ2xǥ1k)Z/xr`[- ͵ׇ]O2YؽŅ*xl0罶]o6youo#>J5b΍; .sH\B*ﲹ:Tt<5PK)Y7$ P=Fft~gFOD3S!lS] Y W:fƷ|.f5ڧ.&! Bӏ )&C+q&Rw6̭Xٓc*]송id(dTM.txeewLKMKS{,KeA1ier;mh*pތ>&SfWK#<6f}jڙv${)r'vdQ?1fUQB[yUށJP;d^~xؚ$~$fG+ž3/[B 6wJ|Ȝ׺C9%~XߒMOh9sk=/|<{5чooo \F9ӵqgr(-F$`l)>{p00[x ?nߖ|G+@q5I?Vko;=wyچw L4luKP S?Ӡ pfV+O3i,OLmjYL\{fmU}C9%C8?dEW&C+3^˵?2P $L+o#ɞ߉1|x endstream endobj 126 0 obj << /Length1 2536 /Length2 17648 /Length3 0 /Length 19130 /Filter /FlateDecode >> stream xڌT )RCwwtw7 5twK(ݩtwJJ7R!gouu Td*Lb`3 `e`feeG+G:XH8M]!wCE@`ggexg(2@$* 3t6>>ƿb@g@hhnjP^CA+hlj vcx\j@;W%S{?1#Q4A.Q-]=Ldtp9XuY#? 1`3ۿtxErlhrXe)fWOWF_v.`) bw)1U)s1w90/H%,$@W{rCpm>E  ˿ʰpsdt9ec!Y]\inW /GJĐ|KH@?%puv_̀V 1?2g'@~lֿ~d0 oG"),O*&N; _S?Y)` 'YH?@yK [ rC~^]_,k3r[O= ޺Bn@ k *-@nW+j 1+ ry-T@Ěݙvd0m!OJBn#J:-:2v.n+dع>lkzf+` vFk\DA<߈7lؿ"qXd#oaQBT~#6o`Q 'E7d/3 . 9_9;? W_9'_bA.I I 43umljn 7,]9gU@g/₰ 37 ο$kX,-vv$y2~K9.b-@ҵg oFOHֿ+DB2Bg4wܐ.uV1Uȓw(.pC?jHE2Gg )6Stl!X~O*'7+wecP|6Hk =&7CH\L]fqvzpp!sBt ޞ@~A ?9s7gH]~A=H`sP/?k=v'fv|;P骳םoŒ{W%ioDH6G%?>ǫM#},8'F$bd %GƋ Gg}X^5)rx >%E1B 9tPc]d xv΋|c~,A:_ f89.3XzxHIRn)3@tfPt峷{{|#|Z7=o,W"ooMf)eW=Or37T$t4t&Z,Njv3(D:a%)efg14^GoF/"Y.3fRS=WQ<e?)D-DۥN#z-0(`g#LZSndtY  #q % G'be{9nQbvRm-#+pşG.zEK ߏ Ϩt}()#hXC67ӣks:.v0H~!T&5fnۜ9Q{߽_gziӛyf_yK2{FG?<>(6{ڷVb 0;bU9Z-=0jN(=ă/zX}"8O"3kKaS O1H%w kz:rTj)ʔa]\+[dO(ӟ~2RIaNξ-r 7"{yEfqޝR%ZePl}4FtHy#*(Z3Xm+R<@}cn ΃Mϱ@\YÈ:c;(+GщGE%V'T] ReZҏsu{Lw/ӄ[{~$wRs%ضS,#ؐ3\8pThei_M73N pf؋1i-x|N4%70@EUqG~[SsToxY&Q(kTZtAdPreH4Vf&Y_ s˜F~x.(-T6d=`\<}Qw0ƴ Tmr }1< p.F䆊#O:4(AN,MM.uwve%cJU&[|p;rV<ȶRߌ}q U,x_ۉ04ўhrPP CkamFCl{N'w_L0Wo緃oV4%$먴Bl{4+JXN^k QP3K>uy3aoI>rzsD~[l{c)ز15[ubLe('o"*)9I_wr'iWLzycx8k|Oב։6v9ڈvVF :M#vEqD&qԏ2  R1[{"w182-ث[.LɢU/^ ~vDu {[ v-D*dK^{ gIf:bY& ţ$Jol=2JSq}M8Xx:fWY"kHzVfY.Tt\0 {ZJI>1{h < lm},}˩~GU2U"?|@C ՘NR ,~)# y95Zhn}& SNi/](_0ȕէ#X*bD1"gb>cdv>(n7"tc8,!)dxm͊0:lܔ8~Aڂl6-_@蚆z~.DRQav[}dt9#ntՈ,ܸ@{!fpE+tsAr, cHfvbxʲd67Hp՞:pyld"8)踮$_7pEZBԻq0?Ⱥ5]û706La}'ʡ7nqf! UeLj}"Tٓ#8̏Z1Pԏ-^_CRVL/=J0Di8%%[ayice#hLˏԳ<9fU*USWٵ0n@ѡ'㒏Q¸s79&hU&QcE YY`i+Ȑ۫Y<#dTAIGBuOPj 7SZۼ=1K<{oKpMy'. ͨ-o2D6_SrD~| 5svW#mQL-=yY7rU$ L9kz FENh?zCqFȄƈ v>$ cwg-eOqp)e!V,5Jӧ3"VgتAH~3wbi?THUlAwлq(&ʑ *vco5| X5IėvԉfMJu$x9}V8oHiEYZd+ls!qNޢ,'i߽ Q[C ՋKNM}6`2T>jXpE a W뇫a6[>'s*}\Ș5-Nlgm󐅚ozT] z};SͰl#J_ytswa9XPwtA#}Kdɦ"iqLCNS4Rnj$ y{׾_y0#.土h˭z=Uf z6ttލ&lIl!I]XhMDs*3OXyv³)L+>zy+ $n[;|s8`KEI(:@y#@D2 A{VX/+V>râSJDluaqY昹YKEAc>)Zo%Ij-Y}r\hR28,5Kk)ע6 1Qp)$)b`2 ?%ɞAEXPdaQ~ L[}Xo2oǀf(YvWTuK7Sit71RWwJrCY㭟J >}o<dEϫH۶6|%ɋ,4Rmb됝S:Hˢ'+ Qeh̽=sDt2{Փ&%&r$ųNXo/' *gu%)3e5C-sVė =sjN"4h{`y->eCмPt^M8Q$%^4H*xI~PEo>ۿ^QJnrf{0B$c785F[Xk5X DyvR:fKܦ(ؒI)CB"N@}ĝ\0w^LOk64aAq=Oa-(s9WKlqQ mysLSN`J:u8EU(1g5 ,`צ4Jé|v ~Yϫ۬097* zQ9GAǬsڂ'vCk&x#.2dJT}aj J[߁"pVF@~됆ɽM'>6׺ƻ_Jwu$4 ((лu6ɇP^fDԌs2U!M_-NpKU=[e13_ >hFSGӆ vU^*׋O13$0m;P|)Շ:oyO0}Qu+8mq\Zi(2]3~EЅҭSG+h΢l+$U[6/\ŏ73GvyDKfBBS !yk󦌬 PPpS{>!n(ݥm?(U+db34ѫ1UmW%mzmeD^=I%_?> =Jw۾LOq8GRͰ\D.1wߩJ4X$j}Q&d8>3=)aGF9v,8'j%%zZ7WT҄rHS= 'd4ŋ#PY3;Mԏ_9ZN 9iLWg*i᩟:x.3_eǎ9V^3D(&k_N<_mP֢G h7uu rCW % w0JUjH@ľQQ1x! '.Φ^))}? >I4OsLFF}C͋ VdⲻΝLlϤ «(LzJ/JVMW#\wP_fV5w0< p|?qFcq4{"Z}ĕ| }/e)3o{ ݊NNz i.Zϖb7@^_'{#o9Q5nQ M=S,iZ%f, ڒV־Jl`?8VTQ$;Iwqh"[یrպR=eR- lhǿ` }mj8԰sc8}nO8_ܯɋ='5@Ws%\ \CM Hn/RL̶ԩ+o^o5@vJpꗹ*OeItf[ "N >oJW }-2?k'<6qOZ&KX733/l^Щ]TrCzw ӟzΜ7Q'kح](( -'XX_XtNT=U=l3S|YڰٝW#>o^+ (;{@WdѬ^7gB#`h3+#mb/C$I.I-wjYԇ%:=Ky.9.nW8{<.<>n'z+А)(/B5lfB6|0rz Z). >ʺxU*//S[B]J4љ-v8c}(},R 8c/NS\ǣ(xbV5[ZhukL*"5݈>oʼ0t;X]0צY4~d[+渤&|$0a\[{ X@j i(M,{T#! c8Uqʉ L-BmHaINOEpُ)mppG)ྙxп_5 MV;ږ.=FM`eLR"`3]8/Qq@dn᭲MPb=JUG\+ >Y0 geX#0.ry[dǧޓ0'-^?N+cS%b|Y/T\<^ 0+#Xv# ̱ڑ8>kCѦY'&~"tag?uddqpkI@~!ŵiR&Uf.텴{)`rHhoG|^3tSΕSy)fo|zɤdѤkZД ~mJ:Ob{ָ:kSё\2A^BQ#R E}Md[q F8ђ:f!,8,ȎѺ1I9epFG=e\Ct6@&F 7%J; o[`_du2tb|k~e$YԹv(хmx4Dy N㽩ct& /4pa[Su~Cلs4ge(4X_G!1{ Z`+3[[8A#7gElnĊ;dY[?ď&n#5 :қ/RF+ً<I0HRWwMkSy~Ӄ1OTý1H%3~> 6K37 v@p&*h=:a];w-/~J(ޛcZ#]`UF>s!\UmU&}"^BdU̍%O,X 6IQ *nU="ye}ί}]ӑ9Z2q1֬ vX\[CԊj.[a~ğ"g_7.PkKF4#"lD%u37 ˜7 :Eq%iY95<ʲ1&/$B;ldhv}ⷽXɞVjJ:+E^֙O 0{ #G,^7iq90aD'HV֮Jc =#Vk\XُqGGLp\`_y(< *q'o j:?ϲrxoIFUY6y')Ga@A@LnѭY5T'?CRMĈ׫D>Iuʙ&9MZgKݜKX<[A tRWϞ4Y̩xY>O\ 5_Exu|ˢIT΀c-łE x0%A`tQnx)pl =:*P4Oy*G7iX*öADX>ߎ$;Sx N\P}cszo^t{ok?8]r.G70J-Ey10)W ?`d~L^icJ9_Z4PR*H/<K/Ú=/Wfr@&5|CX` F=h1<y(=<Ҕ턐T4sBo!'1ULɩזʟ2Nf2Ka0m0FG5F.Sfw,9ٶ̟_6Q@}p0L!n}$YkJ_(`ſl y:wዯPBŤ$ 9o_}V>'X;$WR/,.[!]O5s55)^ĝMf*Z '^ԙ/&0PؐG fo8ѧ:_S/N-i=WCsV7_< _…#&I338 [^%QyD-'4K19.R٫u/9 /)WRZ4UG] $Q[E*zQR ?,)blmq $3@{ UJmp.\djyyŋC]y:ZR<곘4r֣*G] 7G 7Rb%ة3FP9)@̪*5F\R>X:D==<<>8YRꀤ|]._mD1fDU.p?qBG{ڞyZoOW0R 7y/c՚wV1n^9 Eo+4sV\d][印8:fOb[(fw\͟# 9<@ƝeA&w}FhRjxCl偼/DWZ'qU9 PMNtC]tF,4&$[,Ml24q|É`Z{3X!a-}1[,!n& ɎUvQ ϗ<_.lx:a(fv\ jN&t }R8vRhe`?{F W{LH5îJd5>T%dXW7^^gWS|k鄯G\;=žEm2~Cƃ4Ԏ*OQߑ^;|D;yY@hIfظڴywz'`M@{UARu'D{;UR:ڌ@UDU$}Wwf:\͒IU/3 U4)>)𤜘=9S! "i}wZm_c'[0Ɋot_ @H"M{ &pN`ߛGQD]3hRR`T#@>xQ{~'&)-9&MӥGs?H66$7 CыaRȴ~7ܔHgw =" RG.DƠ~AXb},=h@شv~Hn$hԴ(Ȏ:㒫 #p\ RD$ XD<* Wff@sV~42bK1}65 a6`nH!<) swH;uǭ";PMA;֪u&ٜ%J[SP=v݊ZLDy\ -NP|F!fHt`;eQ7騘R}! >D+]Ƃ;5lk?̢'5}Gwobx4FzT쓭3a[Ylf<<"hcFHfUHWyymExdrpG*t|cA3j2*ZX2 "ykB$Sb.GGΏi 틩p$fT?g4rbh21QT<1U(up8%sKrd ޅDsUCְ LeC ~+ȻjUҾpeuA5{pj?Nabb{ >1(q|=FVd09W0MMMP O&\JAb1a%Aڍ$m.{t"Y6tcY}a:&271> @!r"} Y m+"uWHU\d,s鄵3uaݧsm( P8lQa4ݿ, zoft ύ@u5=ktF}r`}ٞ>̩_Q`z CEGx弲z GeTz \9w w 0wm'5clS϶mިZM=Ki}%6/X9͘ަ&yIC̆Ԡ,=7đLO2dGGaUzJ aA!o{$]f`Vv-H+H 9+^ % v*́*&  fY(&?*fbÌK~=n9 =X-nQPw .pM= z|wtL8úF:07f"shba>VHH5,B5`%z^野kl{+~`oٵ=,c켕񲊸[Go I54t8fu+BWъH]AZc3` \ Vk!;@S+*7# zh?ʠ#\ޜTtwk!j{n[rf/A[S_#Rۤ=#wOF_]e|oWvSTN;s3p%פG g5neG%b5ٿ\2}$ѣXu^i] ^ K)Aa4ݙVҥ~o6+5mGBK#5z+Ҩhncg?WܔiﯮfWExUGt3O>/RFwFٽ4v$#ӞǎM:2>8WHY<2Ym_?'^d|}jѮZ}/Wf!) ʮB6 g~k$"%=tٓXbfO(aeXR ": v]WW_ӾTYvpv iDb"ݾPˏACcgBCIQD?8şIVE1+# yͺf 89Pd~|5A :#$1EDtLS4tHßU_F cߠb:n >8D)Vn't6J0ȠƠiּftU7<\ FdKQkua@2!WÆ,$4ۉ6:>gцrwߩ<>]ȸȜ*w6_ ԓdRZCߤFxyHZ~}<|~CՉwA“{Ra$۹ԩ޼fιI g%dKob 3Bc̀Vag*IyM.t ׍DnoJ7De#*ږrBߣ+Aa[LsF# hb~~̪@0L%GWb4JvjET˻Iр >m YʈǤ5KXrj)l ^mniޅKOYf簇}(BZdh?g!QYtj e|sq0GJΉ?V( Y D]q$ grV8ˑY:%O.I"@1h˻`z'"t8jQδnk?}&T_K pϵq,;*MClɼ1 _4{Q>;r{ȩ1Ю[`.2FWŃdxVa&_ =mi̱F] t [X OK6ok s%8+o`¨gϟ῀  d=p{݅ Br|Ss3c#n.N^P;О?U{(BX`gH: 1RZ?$.}>jH"lD>` USTTO3=c&/lz(cN񡯸3Q>Q`q7ix`zؓvDd*%%0MNnh[2‹{2'//Rb Fi)\uEN)(;X3 T "\[rs̥C?fsoXbi{J\3رa\!'̖|$#)|۫OwpS >zA|F..U<(pcr`WL<=A*`,;hSͩWdqQ<5 oLlJV=iȪx=oNadI~Qg܅%7>-&m@F8v3ZjN9IW:_{b߫ΓX՝ˤu۱>TߪWϓGeEJ uN?ucK}f&;vunpU8!nX (E[ʒ'3΅zJmNщ);NELDg>KY\j) s# _c KúDӎglY#]xȅ'r?(V`/8k3ڸE%9}AL8)VU Mϡ-ߴݸ!(aqX>JZNݠZa_0*=:?#e1QNC}|K7ɿ_0iKa2y0>Z`J 54vB,/(”& tg 5~yB+RZ<)I=lD♚,-u 6A{Ϳ`(rsGja~Ca5`:ڽIw`! h<}#@DSkdjy :g**lFXfdꆸ;6VzjVnNqgm HN'è"s.? .LdWc:}>/ \ܛY榄l.uT.Eۗ $C6(C\/ku[瘭 L屦eMկE:Vj{f6!ЍcktGpcנď  \ ,K'j-'pH8}TZS KDYwkҶ'[ V4>lm(⠢=L^LJQ_tV"h:2;uԢC6㣵OB,wBԵ(@W:iv~# nK D@ D<4r݁O葃,=^nӿ "+(XL}.tG^mkb"O̙N>aqCK^3x=XGt޼F-8SSYM{dTar:,}.H';w"w akSv7HA;9V~cHm(1wnWfl1`>v~nW"7rUz 2qCYRw篨rrsJ9tc >m8~W9qy@gŕu1Ǐ3dbE`W:x© hbì EcR!\ ϙ@wj%a`|(`bprYo0ϡ!yj*YDI qZw !7jSxrEK`}'HzB $JQ^ܱL8@}k7eC7шaHcjs`r>-=/+pӧ&UbfOےjޗbCjM I7͞YA7NMI)뱖դ$Ks 9%0PۚA^Q^Fa)&*nLn2Ao30_qvtQb&~ I_>nݜk^IA"ւ{3&կu'5 vo#);+ btÈK޶!]} 5-ݮwʃdPkU劑 _.Jfi셷 S7 nAv;-4vև@5~X6?"|t~ 5!/c {'1'N^Y)"_!K4⢿ [j/m }"Pjb[n߷o51t(]愽QXn! ɥ` po;< /!KщApU, 燯ϡ(i%Ga^yitP)s ʬtPV{MK7Iɓ4o}iPmqo%>&VۢQWG?c\5D ga>JObיv]u2MD؄f{F̀Xs :RB $ί}@KVf#06(0Q^0Q92,ҁ|P/kQnLfC[˧nտT2}E!^=?8ZD:ɚFzb9 -?bScߵW}`NB=:(wfK6(NmQ78rLYێp}LWZ񭣞觮AUCZԵ/$~;{ܵƞ2g1U92ܪVwTDZ׺jr~T[|hg_kg!Y³)ׇj8܈J/|swr5$L9p̭VfB 7 k@-,.llpfKңFn[Um)'4a,Kb*R*zc" ؕ, A /ŗ? yR?͊ v Co? :%-`NlH endstream endobj 128 0 obj << /Length1 1306 /Length2 1345 /Length3 0 /Length 2180 /Filter /FlateDecode >> stream xڍS 8Tޱ]EOQ-O2AR*Yk̬1&Q;]RNH؅JEI]ӖP.]8g h9Y]O1l ōidpqQ St' OvX"E0+pfJ gfjA[eA:j I,8c(,%bb p |8DB(pp,"^BBqWL a`%q"ɐHJ$ֆF@$e`-$'K#N8<0>.$0 B R"Cy'WN ` liMt qH  |DulW2)P|(B?OlzN'J1.%KF2 f{gD0KI %L7hاAy|e<"2nCH_l0T܌`r 1<)D abL Dp8‡?R .a_;H4!\J0;1  6S U|B(B)[re)o3b˄qo~H{| ' !2ѷ^'"v?P\L0\{kBgH"$*:10O<8t\BF1 |LBR)4$b;'G>0 sIM1eL`~LK,qG D/a@QVCSOY7;9Vq5hi JۍvZ=F*w\ɏ+ܕi0o(/Ź.ީ-/!k$%i14TbJY饹6y2eҾ55o_ݹOgxvhҖݭ)vH>Tů4,g5Pi/Xgn5 7D7Պ:3ya AM5o|I_Ԑ'{wζbAOliEiGs 2_fj4rgz9Gf[Wk3}/J9h~?Uk|4R[ٜNTش@__vdݼcp"=Oy\ظ+t38cZs2.-ӱ('5u]팴^Hb+M:wUz.& [G6Z̸9!k&lĕԭR?:I=tm/#Xa RG"2dtOW'=nU$ǃ/:^-2YeINVyé<-GDUn+˝qcxitz8gdYBR%GMܸ}ŗʧns7xfkP*3SLP~PoT$\1 w7Wu}}flYSW-*Nyi/ }xzGxVQ³:3 yFœ9.^o2js> endobj 14 0 obj << /Type /ObjStm /N 94 /First 788 /Length 4331 /Filter /FlateDecode >> stream x\YsH~nLP1,h+:@KmJTT=~(DR B*/2@Ҫ,"4PZB[(YX7|,+ЅE4PȑօU!"j[H,096 a]0+fd0,P(CaaV_8),pDQ**;rp Ia AT @S% m@/Ad£ 0ɛB{'ABx.Z=B`4P Up3 ށ)@ %(k+j`Xp '!Ոk-@+x (p v$,XDp^ `r*0" J;hX4BJ<314+,\XWb )5 +̰W!,("BjQ,4"fSVE`Xݠy;]T[DRK97Qy*_ը<]/аYNFIϪ8'ٷwQ}9C9pNZEy]¦.Rԅ ."0 >%B$Am,~imY|e[ =Nzj5d*;U,GA]ճ Q7֙tհgP# kai۰[=mv@]mMW+Kʶ܀2VES>HEU1};tʿFue6b'sALcRe[mO~j[{̸'3L|4O>;'L EV^@ (6/hJ-u=?SОIAv=/pAP ;;=PkȱV}L^ac9[&}wn[jZAjʢ^G*B/XXnAx}p_R{7ۃl^(oܓ;fzץ#= JEvZHa*{4O{`S~"q(U^8g j<N>$qJHX# z5W|ਲ(E8˕BĹeӚfzs(qAQS]b`3<+߂&G)q^Bop-i&VÑ<=#{0ٝ[R6×=(5Gk~/NcکU99>- U4̈́dn>8Ȋc=@ ԎmuLǁGHա@.6>~}$-( G9P E ̊‚BR=3,^[;=ʱ,6"m^? y"d'լrx"t̼U̦rm6t/ox<'x:>ZtHNͼa^ E+M5:[슽QhA@RheSHFaX65'`=(HP(`U2T p4T8C󐱔Nn:hae(BGrOq֟FF"n5K :i1BO-WM=>zUZRÃq(:K㈇{k`˚Mi21TQڑVL)Ci,O8[]XJ^sd T*He>1+3كWf=M~s>`,1xT q?T :A+,$H"GRF'\ffLxPg-jq6,gs >?J7Eax>}uO Ctx҂=T>YG/Gy5F%{?Ib9NΞ\_Lȿ]VW뤣cZ1h\14X~Uד몜kQU]ɷry9rYj>_hcS>yXk5Fh-A<,|]Zor\eU~-nE9)(Uy]Of\ [gMP:|s'@p7ã?~٫&#rD902>HtO₯渎.x rq{u5^Nfl6AɇChv0wOa!:X~98t9(/s|=ZNʯ_k\LNjK ﴱ1`s'[ ߢ~dD檭>@;G)aP*cmo ^ p2Fn,. =b9߬b)y}~2?:Og׫PR]WxA&%AI1~s 9p騎u"5oԟ# tf˔V|Q]MX,뵢_?8r ?Cx;~~ WA0jMyA9߾:=,i0_VeHB/W(:<>(5Gw+p/&o_Nt1l,e>>(P vaN|Nf?i1Ɓ%] 8xQѷ{{ϬZjkGbl ;8]X>LΗ"ywyO]\>Iܣݜ{Lr*.u]lνģvcpt -} w+.o`o[x{:r﹜6C6"tk.DžCš(?Y}nl~E~/7R ֺydWVdev{ꖩ;&pi}uCRDZkRcf#b srRl endstream endobj 133 0 obj << /Type /XRef /Index [0 134] /Size 134 /W [1 3 1] /Root 131 0 R /Info 132 0 R /ID [<32187F3EDAB81149D40A9A2278C8A850> <32187F3EDAB81149D40A9A2278C8A850>] /Length 366 /Filter /FlateDecode >> stream xKKqs2f,oMijZ/9Juԅ"!Qh㼁6n7:)"%s&\͇x B5"ŠHqFCbTeN6#B6!&A0%EJe%'E6ђ)nݿ<Ĭ1P-C$=smb3_ 랅X=c9'FߊEgOl,ħ,rHz>-_C5Vԉz Ex,E\'U3)qwj'c_\`\Yu='SOWȎAWd $zɰåb^,0|I\ ; endstream endobj startxref 228955 %%EOF mcmc/inst/doc/bfst.R0000644000175100001440000001536613074514644014035 0ustar hornikusers### R code from vignette source 'bfst.Rnw' ### Encoding: UTF-8 ################################################### ### code chunk number 1: foo ################################################### options(keep.source = TRUE, width = 65) ################################################### ### code chunk number 2: library ################################################### library(mcmc) ################################################### ### code chunk number 3: baz ################################################### baz <- library(help = "mcmc") baz <- baz$info[[1]] baz <- baz[grep("Version", baz)] baz <- sub("^Version: *", "", baz) bazzer <- paste(R.version$major, R.version$minor, sep = ".") ################################################### ### code chunk number 4: set-seed ################################################### set.seed(42) ################################################### ### code chunk number 5: frequentist ################################################### data(logit) out <- glm(y ~ x1 + x2 + x3 + x4, data = logit, family = binomial, x = TRUE) summary(out) ################################################### ### code chunk number 6: models ################################################### varnam <- names(coefficients(out)) varnam <- varnam[varnam != "(Intercept)"] nvar <- length(varnam) models <- NULL foo <- seq(0, 2^nvar - 1) for (i in 1:nvar) { bar <- foo %/% 2^(i - 1) bar <- bar %% 2 models <- cbind(bar, models, deparse.level = 0) } colnames(models) <- varnam models ################################################### ### code chunk number 7: neighbor ################################################### neighbors <- matrix(FALSE, nrow(models), nrow(models)) for (i in 1:nrow(neighbors)) { for (j in 1:ncol(neighbors)) { foo <- models[i, ] bar <- models[j, ] if (sum(foo != bar) == 1) neighbors[i, j] <- TRUE } } ################################################### ### code chunk number 8: ludfun ################################################### modmat <- out$x y <- logit$y ludfun <- function(state, log.pseudo.prior) { stopifnot(is.numeric(state)) stopifnot(length(state) == ncol(models) + 2) icomp <- state[1] stopifnot(icomp == as.integer(icomp)) stopifnot(1 <= icomp && icomp <= nrow(models)) stopifnot(is.numeric(log.pseudo.prior)) stopifnot(length(log.pseudo.prior) == nrow(models)) beta <- state[-1] inies <- c(TRUE, as.logical(models[icomp, ])) beta.logl <- beta beta.logl[! inies] <- 0 eta <- as.numeric(modmat %*% beta.logl) logp <- ifelse(eta < 0, eta - log1p(exp(eta)), - log1p(exp(- eta))) logq <- ifelse(eta < 0, - log1p(exp(eta)), - eta - log1p(exp(- eta))) logl <- sum(logp[y == 1]) + sum(logq[y == 0]) logl + sum(dnorm(beta, 0, 2, log = TRUE)) + log.pseudo.prior[icomp] } ################################################### ### code chunk number 9: try1 ################################################### state.initial <- c(nrow(models), out$coefficients) qux <- rep(0, nrow(models)) out <- temper(ludfun, initial = state.initial, neighbors = neighbors, nbatch = 1000, blen = 100, log.pseudo.prior = qux) names(out) out$time ################################################### ### code chunk number 10: what ################################################### ibar <- colMeans(out$ibatch) ibar ################################################### ### code chunk number 11: adjust ################################################### qux <- qux + pmin(log(max(ibar) / ibar), 10) qux <- qux - min(qux) qux ################################################### ### code chunk number 12: iterate ################################################### lout <- suppressWarnings(try(load("bfst1.rda"), silent = TRUE)) if (inherits(lout, "try-error")) { qux.save <- qux time.save <- out$time repeat{ out <- temper(out, log.pseudo.prior = qux) ibar <- colMeans(out$ibatch) qux <- qux + pmin(log(max(ibar) / ibar), 10) qux <- qux - min(qux) qux.save <- rbind(qux.save, qux, deparse.level = 0) time.save <- rbind(time.save, out$time, deparse.level = 0) if (max(ibar) / min(ibar) < 2) break } save(out, qux, qux.save, time.save, file = "bfst1.rda") } else { .Random.seed <- out$final.seed } print(qux.save, digits = 3) print(qux, digits = 3) apply(time.save, 2, sum) ################################################### ### code chunk number 13: accept-i-x ################################################### print(out$accepti, digits = 3) print(out$acceptx, digits = 3) ################################################### ### code chunk number 14: accept-i-min ################################################### min(as.vector(out$accepti), na.rm = TRUE) ################################################### ### code chunk number 15: scale ################################################### out <- temper(out, scale = 0.5, log.pseudo.prior = qux) time.save <- rbind(time.save, out$time, deparse.level = 0) print(out$acceptx, digits = 3) ################################################### ### code chunk number 16: try6 ################################################### lout <- suppressWarnings(try(load("bfst2.rda"), silent = TRUE)) if (inherits(lout, "try-error")) { out <- temper(out, blen = 10 * out$blen, log.pseudo.prior = qux) save(out, file = "bfst2.rda") } else { .Random.seed <- out$final.seed } time.save <- rbind(time.save, out$time, deparse.level = 0) foo <- apply(time.save, 2, sum) foo.min <- floor(foo[1] / 60) foo.sec <- foo[1] - 60 * foo.min c(foo.min, foo.sec) ################################################### ### code chunk number 17: doit ################################################### log.10.unnorm.bayes <- (qux - log(colMeans(out$ibatch))) / log(10) k <- seq(along = log.10.unnorm.bayes)[log.10.unnorm.bayes == min(log.10.unnorm.bayes)] models[k, ] log.10.bayes <- log.10.unnorm.bayes - log.10.unnorm.bayes[k] log.10.bayes ################################################### ### code chunk number 18: doit-se-one ################################################### fred <- var(out$ibatch) / out$nbatch sally <- colMeans(out$ibatch) mcse.log.10.bayes <- (1 / log(10)) * sqrt(diag(fred) / sally^2 - 2 * fred[ , k] / (sally * sally[k]) + fred[k, k] / sally[k]^2) mcse.log.10.bayes foompter <- cbind(models, log.10.bayes, mcse.log.10.bayes) round(foompter, 5) ################################################### ### code chunk number 19: doit-too ################################################### ibar <- colMeans(out$ibatch) herman <- sweep(out$ibatch, 2, ibar, "/") herman <- sweep(herman, 1, herman[ , k], "-") mcse.log.10.bayes.too <- (1 / log(10)) * apply(herman, 2, sd) /sqrt(out$nbatch) all.equal(mcse.log.10.bayes, mcse.log.10.bayes.too) mcmc/inst/doc/morph.R0000644000175100001440000002702213074514644014214 0ustar hornikusers### R code from vignette source 'morph.Rnw' ### Encoding: UTF-8 ################################################### ### code chunk number 1: foo ################################################### options(keep.source = TRUE, width = 60) foo <- packageDescription("mcmc") ################################################### ### code chunk number 2: morph.Rnw:98-100 ################################################### library(mcmc) h2 <- morph(b=1) ################################################### ### code chunk number 3: morph.Rnw:105-107 ################################################### lud <- function(x) dt(x, df=3, log=TRUE) lud.induced <- h2$lud(lud) ################################################### ### code chunk number 4: morph.Rnw:110-114 ################################################### curve(exp(Vectorize(lud.induced)(x)), from = -3, to = 3, lty = 2, xlab = "t", ylab = "density") curve(exp(lud(x)), add = TRUE) legend("topright", c("t density", "induced density"), lty=1:2) ################################################### ### code chunk number 5: morph.Rnw:123-129 ################################################### lud(1:4) lud(1) foo <- try(lud.induced(1:4)) class(foo) cat(foo, "\n") lud.induced(1) ################################################### ### code chunk number 6: set-seed ################################################### set.seed(42) ################################################### ### code chunk number 7: morph.Rnw:146-147 ################################################### out <- morph.metrop(lud, 0, blen=100, nbatch=100, morph=morph(b=1)) ################################################### ### code chunk number 8: morph.Rnw:153-155 ################################################### # adjust scale to find a roughly 20% acceptance rate out$accept ################################################### ### code chunk number 9: morph.Rnw:161-163 ################################################### out <- morph.metrop(out, scale=4) out$accept ################################################### ### code chunk number 10: fig0too ################################################### acf(out$batch) ################################################### ### code chunk number 11: fig0 ################################################### acf(out$batch) ################################################### ### code chunk number 12: morph.Rnw:187-188 ################################################### t.test(out$batch) ################################################### ### code chunk number 13: morph.Rnw:191-193 ################################################### colMeans(out$batch) apply(out$batch, 2, sd) / sqrt(out$nbatch) ################################################### ### code chunk number 14: unmorph-metrop-adjust ################################################### out.unmorph <- metrop(lud, 0, blen=1000, nbatch=1) out.unmorph$accept out.unmorph <- metrop(out.unmorph, scale=4) out.unmorph$accept out.unmorph <- metrop(out.unmorph, scale=6) out.unmorph$accept ################################################### ### code chunk number 15: unmorph-metrop-t-long-run ################################################### lout <- suppressWarnings(try(load("morph1.rda"), silent = TRUE)) if (inherits(lout, "try-error")) { out.unmorph <- metrop(out.unmorph, blen = 1e5, nbatch = 1e3) save(out.unmorph, file = "morph1.rda") } else { .Random.seed <- out.unmorph$final.seed } out.unmorph$accept ################################################### ### code chunk number 16: fig4too ################################################### foo <- as.vector(out.unmorph$batch) qqnorm(foo) qqline(foo) ################################################### ### code chunk number 17: fig4 ################################################### foo <- as.vector(out.unmorph$batch) qqnorm(foo) qqline(foo) ################################################### ### code chunk number 18: shapiro-wilk ################################################### shapiro.test(foo) ################################################### ### code chunk number 19: morph-metrop-t-long-run ################################################### lout <- suppressWarnings(try(load("morph2.rda"), silent = TRUE)) if (inherits(lout, "try-error")) { out.morph <- morph.metrop(out, blen = 1e5, nbatch = 1e3) save(out.morph, file = "morph2.rda") } else { .Random.seed <- out.morph$final.seed } out.morph$accept ################################################### ### code chunk number 20: fig5too ################################################### foo <- as.vector(out.morph$batch) qqnorm(foo) qqline(foo) ################################################### ### code chunk number 21: fig5 ################################################### foo <- as.vector(out.morph$batch) qqnorm(foo) qqline(foo) ################################################### ### code chunk number 22: shapiro-wilk ################################################### shapiro.test(foo) ################################################### ### code chunk number 23: def-posterior-binom ################################################### lud.binom <- function(beta, M, x, n) { MB <- M %*% beta sum(x * MB) - sum(n * log(1 + exp(MB))) } ################################################### ### code chunk number 24: convert ################################################### dat <- as.data.frame(UCBAdmissions) dat.split <- split(dat, dat$Admit) dat.split <- lapply(dat.split, function(d) { val <- as.character(d$Admit[1]) d["Admit"] <- NULL names(d)[names(d) == "Freq"] <- val d }) dat <- merge(dat.split[[1]], dat.split[[2]]) ################################################### ### code chunk number 25: build-model-matrix ################################################### formula <- cbind(Admitted, Rejected) ~ (Gender + Dept)^2 mf <- model.frame(formula, dat) M <- model.matrix(formula, mf) ################################################### ### code chunk number 26: morph.Rnw:396-398 ################################################### xi <- 0.30 nu <- 5 ################################################### ### code chunk number 27: lud-binom ################################################### lud.berkeley <- function(B) lud.binom(B, M, dat$Admitted + xi * nu, dat$Admitted + dat$Rejected + nu) ################################################### ### code chunk number 28: morph.Rnw:410-419 ################################################### berkeley.out <- morph.metrop(lud.berkeley, rep(0, ncol(M)), blen=1000, nbatch=1, scale=0.1, morph=morph(p=3)) berkeley.out$accept berkeley.out <- morph.metrop(berkeley.out, scale=0.05) berkeley.out$accept berkeley.out <- morph.metrop(berkeley.out, scale=0.02) berkeley.out$accept berkeley.out <- morph.metrop(berkeley.out, blen=10000) berkeley.out$accept ################################################### ### code chunk number 29: morph.Rnw:422-423 ################################################### berkeley.out <- morph.metrop(berkeley.out, blen=1, nbatch=100000) ################################################### ### code chunk number 30: morph.Rnw:428-433 ################################################### beta <- setNames(colMeans(berkeley.out$batch), colnames(M)) MB <- M %*% beta dat$p <- dat$Admitted / (dat$Admitted + dat$Rejected) dat$p.post <- exp(MB) / (1 + exp(MB)) dat ################################################### ### code chunk number 31: calculate-posterior-probabilities ################################################### posterior.probabilities <- t(apply(berkeley.out$batch, 1, function(r) { eMB <- exp(M %*% r) eMB / (1 + eMB) })) quants <- apply(posterior.probabilities, 2, quantile, prob=c(0.05, 0.95)) quants.str <- matrix(apply(quants, 2, function(r) sprintf("[%0.2f, %0.2f]", r[1], r[2])), nrow=2, byrow=TRUE) ################################################### ### code chunk number 32: fig1 ################################################### x <- (0:5) * 2 + 1 plot(x[c(1, 6)] + 0.5 * c(-1, 1), 0:1, xlab="Department", ylab="Probability", xaxt="n", type="n") axis(1, x, LETTERS[1:6]) for(i in 1:6) { lines((x[i]-0.25)*c(1, 1), quants[1:2, i], lwd=2, col="gray") lines((x[i] + 0.25) * c(1, 1), quants[1:2, i + 6], lwd=2, col="gray") points(x[i] + 0.25 * c(-1, 1), dat$p.post[i + c(0, 6)], pch=c("F", "M")) } ################################################### ### code chunk number 33: cauchy-data ################################################### n <- 15 mu0 <- 50 sigma0 <- 10 x <- rcauchy(n, mu0, sigma0) round(sort(x), 1) ################################################### ### code chunk number 34: cauchy-log-unnormalized-posterior ################################################### lup <- function(theta) { if (any(is.na(theta))) stop("NA or NaN in input to log unnormalized density function") mu <- theta[1] sigma <- theta[2] if (sigma <= 0) return(-Inf) if (any(! is.finite(theta))) return(-Inf) result <- sum(dcauchy(x, mu, sigma, log = TRUE)) - log(sigma) if (! is.finite(result)) { warning(paste("Oops! mu = ", mu, "and sigma =", sigma)) } return(result) } ################################################### ### code chunk number 35: cauchy-robust ################################################### mu.twiddle <- median(x) sigma.twiddle <- IQR(x) c(mu.twiddle, sigma.twiddle) ################################################### ### code chunk number 36: cauchy-posterior-mode ################################################### oout <- optim(c(mu.twiddle, sigma.twiddle), lup, control = list(fnscale = -1), hessian = TRUE) stopifnot(oout$convergence == 0) mu.hat <- oout$par[1] sigma.hat <- oout$par[2] c(mu.hat, sigma.hat) ################################################### ### code chunk number 37: cauchy-hessian ################################################### oout$hessian ################################################### ### code chunk number 38: cauchy-se ################################################### sqrt(- 1 / diag(oout$hessian)) ################################################### ### code chunk number 39: cauchy-doit ################################################### moo <- morph(b = 0.5, r = 7, center = c(mu.hat, sigma.hat)) mout <- morph.metrop(lup, c(mu.hat, sigma.hat), 1e4, scale = 3, morph = moo) mout$accept mout <- morph.metrop(mout) ################################################### ### code chunk number 40: cfig1too ################################################### acf(mout$batch) ################################################### ### code chunk number 41: cfig1 ################################################### acf(mout$batch) ################################################### ### code chunk number 42: cfig2too ################################################### mu <- mout$batch[ , 1] i <- seq(1, mout$nbatch, by = 15) out.sub <- density(mu[i]) out <- density(mu, bw = out.sub$bw) plot(out) ################################################### ### code chunk number 43: cfig2 ################################################### mu <- mout$batch[ , 1] i <- seq(1, mout$nbatch, by = 15) out.sub <- density(mu[i]) out <- density(mu, bw = out.sub$bw) plot(out) ################################################### ### code chunk number 44: cfig3 ################################################### sigma <- mout$batch[ , 2] out.sub <- density(sigma[i]) out <- density(sigma, bw = out.sub$bw) plot(out) mcmc/inst/doc/demo.R0000644000175100001440000002152713074514644014017 0ustar hornikusers### R code from vignette source 'demo.Rnw' ### Encoding: UTF-8 ################################################### ### code chunk number 1: foo ################################################### options(keep.source = TRUE, width = 60) foo <- packageDescription("mcmc") ################################################### ### code chunk number 2: frequentist ################################################### library(mcmc) data(logit) out <- glm(y ~ x1 + x2 + x3 + x4, data = logit, family = binomial(), x = TRUE) summary(out) ################################################### ### code chunk number 3: log.unnormalized.posterior ################################################### x <- out$x y <- out$y lupost <- function(beta, x, y) { eta <- as.numeric(x %*% beta) logp <- ifelse(eta < 0, eta - log1p(exp(eta)), - log1p(exp(- eta))) logq <- ifelse(eta < 0, - log1p(exp(eta)), - eta - log1p(exp(- eta))) logl <- sum(logp[y == 1]) + sum(logq[y == 0]) return(logl - sum(beta^2) / 8) } ################################################### ### code chunk number 4: metropolis-try-1 ################################################### set.seed(42) # to get reproducible results beta.init <- as.numeric(coefficients(out)) out <- metrop(lupost, beta.init, 1e3, x = x, y = y) names(out) out$accept ################################################### ### code chunk number 5: metropolis-try-2 ################################################### out <- metrop(out, scale = 0.1, x = x, y = y) out$accept out <- metrop(out, scale = 0.3, x = x, y = y) out$accept out <- metrop(out, scale = 0.5, x = x, y = y) out$accept out <- metrop(out, scale = 0.4, x = x, y = y) out$accept ################################################### ### code chunk number 6: metropolis-try-3 ################################################### out <- metrop(out, nbatch = 1e4, x = x, y = y) out$accept out$time ################################################### ### code chunk number 7: fig1too ################################################### plot(ts(out$batch)) ################################################### ### code chunk number 8: fig1 ################################################### plot(ts(out$batch)) ################################################### ### code chunk number 9: fig2too ################################################### acf(out$batch) ################################################### ### code chunk number 10: fig2 ################################################### acf(out$batch) ################################################### ### code chunk number 11: metropolis-try-4 ################################################### out <- metrop(out, nbatch = 1e2, blen = 100, outfun = function(z, ...) c(z, z^2), x = x, y = y) out$accept out$time ################################################### ### code chunk number 12: metropolis-batch ################################################### apply(out$batch, 2, mean) ################################################### ### code chunk number 13: metropolis-batch-too ################################################### foo <- apply(out$batch, 2, mean) mu <- foo[1:5] sigmasq <- foo[6:10] - mu^2 mu sigmasq ################################################### ### code chunk number 14: metropolis-mcse-mu ################################################### mu.mcse <- apply(out$batch[ , 1:5], 2, sd) / sqrt(out$nbatch) mu.mcse ################################################### ### code chunk number 15: metropolis-mcse-sigmasq ################################################### u <- out$batch[ , 1:5] v <- out$batch[ , 6:10] ubar <- apply(u, 2, mean) vbar <- apply(v, 2, mean) deltau <- sweep(u, 2, ubar) deltav <- sweep(v, 2, vbar) foo <- sweep(deltau, 2, ubar, "*") sigmasq.mcse <- sqrt(apply((deltav - 2 * foo)^2, 2, mean) / out$nbatch) sigmasq.mcse ################################################### ### code chunk number 16: metropolis-mcse-sigmasq-too ################################################### sqrt(mean(((v[ , 2] - vbar[2]) - 2 * ubar[2] * (u[ , 2] - ubar[2]))^2) / out$nbatch) ################################################### ### code chunk number 17: metropolis-mcse-sigma ################################################### sigma <- sqrt(sigmasq) sigma.mcse <- sigmasq.mcse / (2 * sigma) sigma sigma.mcse ################################################### ### code chunk number 18: metropolis-try-5 ################################################### out <- metrop(out, nbatch = 5e2, blen = 400, x = x, y = y) out$accept out$time foo <- apply(out$batch, 2, mean) mu <- foo[1:5] sigmasq <- foo[6:10] - mu^2 mu sigmasq mu.mcse <- apply(out$batch[ , 1:5], 2, sd) / sqrt(out$nbatch) mu.mcse u <- out$batch[ , 1:5] v <- out$batch[ , 6:10] ubar <- apply(u, 2, mean) vbar <- apply(v, 2, mean) deltau <- sweep(u, 2, ubar) deltav <- sweep(v, 2, vbar) foo <- sweep(deltau, 2, ubar, "*") sigmasq.mcse <- sqrt(apply((deltav - 2 * foo)^2, 2, mean) / out$nbatch) sigmasq.mcse sigma <- sqrt(sigmasq) sigma.mcse <- sigmasq.mcse / (2 * sigma) sigma sigma.mcse ################################################### ### code chunk number 19: tab1 ################################################### foo <- rbind(mu, mu.mcse) dimnames(foo) <- list(c("estimate", "MCSE"), c("constant", paste("$x_", 1:4, "$", sep = ""))) library(xtable) print(xtable(foo, digits = rep(4, 6), align = c("l", rep("c", 5))), floating = FALSE, caption.placement = "top", sanitize.colnames.function = function(x) return(x)) ################################################### ### code chunk number 20: tab1 ################################################### foo <- rbind(sigmasq, sigmasq.mcse) dimnames(foo) <- list(c("estimate", "MCSE"), c("constant", paste("$x_", 1:4, "$", sep = ""))) library(xtable) print(xtable(foo, digits = rep(4, 6), align = c("l", rep("c", 5))), floating = FALSE, caption.placement = "top", sanitize.colnames.function = function(x) return(x)) ################################################### ### code chunk number 21: tab1 ################################################### foo <- rbind(sigma, sigma.mcse) dimnames(foo) <- list(c("estimate", "MCSE"), c("constant", paste("$x_", 1:4, "$", sep = ""))) library(xtable) print(xtable(foo, digits = rep(4, 6), align = c("l", rep("c", 5))), floating = FALSE, caption.placement = "top", sanitize.colnames.function = function(x) return(x)) ################################################### ### code chunk number 22: time ################################################### cat(out$time[1], "\n") ################################################### ### code chunk number 23: x ################################################### n <- 2e4 rho <- 0.99 x <- arima.sim(model = list(ar = rho), n = n) ################################################### ### code chunk number 24: figgamtoo ################################################### out <- initseq(x) plot(seq(along = out$Gamma.pos) - 1, out$Gamma.pos, xlab = "k", ylab = expression(Gamma[k]), type = "l") lines(seq(along = out$Gamma.dec) - 1, out$Gamma.dec, lty = "dotted") lines(seq(along = out$Gamma.con) - 1, out$Gamma.con, lty = "dashed") ################################################### ### code chunk number 25: figgam ################################################### out <- initseq(x) plot(seq(along = out$Gamma.pos) - 1, out$Gamma.pos, xlab = "k", ylab = expression(Gamma[k]), type = "l") lines(seq(along = out$Gamma.dec) - 1, out$Gamma.dec, lty = "dotted") lines(seq(along = out$Gamma.con) - 1, out$Gamma.con, lty = "dashed") ################################################### ### code chunk number 26: assvar ################################################### out$var.con (1 + rho) / (1 - rho) * 1 / (1 - rho^2) ################################################### ### code chunk number 27: batx ################################################### blen <- 5 x.batch <- apply(matrix(x, nrow = blen), 2, mean) bout <- initseq(x.batch) ################################################### ### code chunk number 28: figgambattoo ################################################### plot(seq(along = bout$Gamma.con) - 1, bout$Gamma.con, xlab = "k", ylab = expression(Gamma[k]), type = "l") ################################################### ### code chunk number 29: figgambat ################################################### plot(seq(along = bout$Gamma.con) - 1, bout$Gamma.con, xlab = "k", ylab = expression(Gamma[k]), type = "l") ################################################### ### code chunk number 30: compvar ################################################### out$var.con bout$var.con * blen ################################################### ### code chunk number 31: ci-con ################################################### mean(x) + c(-1, 1) * qnorm(0.975) * sqrt(out$var.con / length(x)) mean(x.batch) + c(-1, 1) * qnorm(0.975) * sqrt(bout$var.con / length(x.batch)) mcmc/inst/doc/morph.pdf0000644000175100001440000102114613074514644014566 0ustar hornikusers%PDF-1.5 % 3 0 obj << /Length 2775 /Filter /FlateDecode >> stream xڵY[o~_!4p$ Ei.bMnhDWw?6CRN>"ggΜwywJf5֪*Գ,g,+]rw.fq57u]\GCS|,}] тze]ӕ7E sku<.pJ.~LkxoJ+:U\~n಺[xH4k ٶG~1`\ EG}8pn*x,C]wKR<-ͭDzG!!7U̬䗐mR?aM 12,8ΦA1RMSM&Z:nZ"|"!ԓHD:HlY΂j*[*m&tk Wg:3Z#d,[LF ޲&i r3-m 7G4'~gz$3ᗇգ(/ k/T\ !4YuTʃϏh D{ۛA뜨:"$R[D?r:n30M2d L+o\$}v ep^2 "/yJGkh,nDz<zΒL̤9)!F #D?*~9/t1$3"sfYYXbꞍ$cZo(o`b{ʩEN"J# )g^f45Unycg^(es t8qmG;w@*gU#Iϥ :&iY#ñc/r<:2J`1[MlKgV+[Ht*l:Y˲^+jMdL&ʹzu㶐m Ѩz s|Udl1O D1u{. p`HDx$x!HqEaÅܓgfH+Tf`" -~'y$4 K e/d&1S,B]tdD[R.,N򟏈|{>^{^9l,Mʈ<$TtM{fgJ Mk;Or(Mt{hi[D5-h O>4 #`LkZsT>* r'E# ?GĄÄik%]ߑ ʩ1o'(s_@uV*=1?GQr;*aqh(bj#ZEkdi?)Fq9c}{;;oe#@Xa;)by੣[^ȡ^r:pN;f-tTYqvfsZ-I)ZOM {1kgZPCCxMbtO﷋h##C04-j~#ro;*>jMjK]!3)B1gXFg h>QqC d(`ziG~MZ |;D>x`eftns)g'X.cFgEz?ųNjSxU5sRk+Nq} 1Kf$\n`N2{|;\ҔZ㭏!g i?ƴ'7gr7}mo ^/\(c̶Kq{qzQ螁L= /#_Qi{[b2 FiS/-qr1[|cSIM4 +d݁M %""qDT"2gR9DrAN%{nyj9Ġ譳,$)hW BipPB6KC19'N)s`vɁ9ш#aT6@Gt^yc,*g| 5Cy>Ӄv#JԊ HPb"lŭLG. HqNRX~ nlqEϜ ؋i`yt~x\z%D\A6*,;F1FN&8TJ; 74"J0/Q0{!_:1rڱKX!R?Po@)ѩW'Hbeu#t>+μb/rE]vט/KHVmRhf g>9\ ו trL`IV7j!ĖӍp@O,b<=AC|ϳum.FOfƍA>YP&Cv!Ӓj{,{v jGߖ(c$'_bh;8 CXL.~̩|VTOCQC~MGW|u#H#V@{0eZsaY6T9O8gSTӂw(!p>Z(Q. n+\dخ%}! 'J8uFkG1dw$bBXIK)TTܮ= *~7Z~ToEIպjyhes,=wBS&Spz kB]>6͛FN endstream endobj 22 0 obj << /Length 2110 /Filter /FlateDecode >> stream xڝXێ6}WAZIQ)I)m>heƒkwn({IlQΜ33ԫoYf˫2&γb<Ζ_j%/}7_mMDhp{|wW{s^}&Kuۤ% -FbS,P~yy*R~{V554M~k4C6i//TE.$u3h6;{QОFZiUkEM-rF46_sEt[ mFpU\Ã4.tz`D]mp=r5hM !*`/jq:Ω55fKs]ϜT]]Wy?;<۩*p݈TY^j߸!Zh/#qnD`'t8R>,*s H`N؀ޮb=Z#ȺAˑtk`"MQL&-V%QJG *"$FX K)VRiIWas4wa0TynZs;F-3>=nj Pz}n_d&De٣}8D5X |+;Ja{mـ$OBŏG&_L* rN,w 11lE[gŦd6yl`z᎟'$8" [t65S#sA{&¨,^ A*pUTYf#YRSDK穨7o^MOHu =!q\3sQIE#B>.a'yő$1Ώ+ti#\-c̒w0a,ECd Cv>4$ r CG2=ʄLm ~i!4PG?5`G%RRڵ.ΰ_ `zC[7ސ'ocȅAbd 0Y6PA9:-pdqs9XIg/GiUťw<Hl1g"qݰ#ʡ wGCZPvԵ,۸?vNJ_8>=PTu ~_t1#8b-USډ$j{iV<zb_PGVt->Joe8cnN-I{}.;TPaɈuO"{ Ɋ <ư>n~[{jDT.(FGBg-JGGHVİ :!ɣ_{&ׯs6ɟ"V-wb a'p&7rUV;ew 蝔A#^ Xȭ&*5sl܃εĮK֧3/Fc?'"1c+!zAY.t?^/ha endstream endobj 26 0 obj << /Length 840 /Filter /FlateDecode >> stream xڥVKo0 W=9@ZOŰön]<N׏(? :%ϏmeF2LpMף#fI1y}_8JͤgdtukFh,"6eșEwya֨pΤ`݉pR<5@h rs `9NNtkBӿ5oVΚ_]x|dO|zeV剄Ej7&q ^I!1wsfpk!T8;Uk-Q8QR_˚/Q5db`8ES{fQ}PNM{m zXؾ,Cʼn `Y&ΉѲZєny"c]by%(u/oJ6s9 ٣}Vשּ3tjSfEΟ<=j^2mI\b gDfx6$%񞓗P(mMREն''uܻ^^F0Qw.f2Ŗk endstream endobj 19 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpfZcsRR/Rbuild394c4f937362/mcmc/vignettes/morph-004.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 27 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 28 0 R>> /ExtGState << >>/ColorSpace << /sRGB 29 0 R >>>> /Length 1719 /Filter /FlateDecode >> stream xXKk^7BvU36-ZHmtR=c\c,l|qF^:rܧ+ɥCtE|N"Ž[ݟoܯ_~|^\]!Ջ$7Ǟ]p7r/BRq5$åDPs/P TIw*QQ쪡sP͆W'R$%E{D!c@(ya}hQaоBľ fO6O!f3J5 V_k plσ!Kq͜Srzw:FM{(.6GD=pȇ\?Q=&F:. l٠|6o2RՐ2Q w*8h~A8㐴7}t[ʾ8eV'okHa_#Q'E xlsqBɋs a9/`qL>#pHbBUl* 6s[( վ33Z O\J^H>=?8n=hθ=cRu{;as_<>\(weU ЃyqB7JYΗ;IoaUǃ: '%Cԋ߼x?sg3ͮSٌ*Four[*FUH*KPWc7-u! u%Ca!eT :˼ŌՌk2m9C$:Ŗ!Rڂx=nEC=`H}uC4X5XUcY!ɇxNʡkpMre|蚔z৮ɡk 5ec>շFogyj㧮AJ;t JCנI]S ]##Cp ߮ka4C0yƱb޺Fvq wK9kwTaGo]7tͱnfw]f_5kfǧkV|fgꚙkf~f5~5uͬkf}N]3wYSf55u쿡kVaw(Cڬf7?Y2⟡o? k(oC,g9?Y:dbߡs9{(CLJg΄qWoCCB 1d5pYOb@XUmZF϶jsm|;3w౉XuozV.IX endstream endobj 31 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 35 0 obj << /Length 2063 /Filter /FlateDecode >> stream xYYoF~ϯ0ryuh 恒(Y.]wNR(Z{շo ,ήW0ϊ,ئWk>\O%eoj493lVoS_Ol-n,nl{6,m hfyD+ܔ|!6a)H($ڢܭJdLy'ZUE9&V2,'*+bn8`k|y=I,lx`$-g ֢}Qڊ} M>=Fm0O͉-Qņճyv:kgG^Uqb€ c8hw<ݐB͆I2I)gÍPP9rom4G7MRU<6DmV-t&@r\AI}B^W6<&:~?DG1VK#]ui<\5G= yt,)bʽb-MJ-ףbIZw,a#-Hn+z.`2 7<hÎe&n;p,2wBIuFjʌ;v//\gb@]!ޞ殁 [5JZI =zaBd \= 䄱 9g 2}ox6\%y\qK2xy,^n/rHl U w=6?ua;uw0nqxqPS3p՟VK{{,_d:U(rk{Ie\Ş|ޑ`EN(XM" zhǔj4jGzq4У.wxzZQiCvK6 @s% ѤKXܥLe=V_^3"`Y佫WC.T*\Ɨ 수o5y~%k%Gk(Nc'-MKsI6s Yc%&hl S5"+#y.d~gPtf\``_IHS%!؋"O;:=o?kqxSf)^E!FMOW endstream endobj 38 0 obj << /Length 224 /Filter /FlateDecode >> stream xMOMo0 W|n&6t d8e~YF9ZӠA?dɻ}P8m4BUgd bk0a4`նrP9oר*kU9gؕ3)6}ʚ)rgNyk3>x)~P~/sBq;%M5}gNl&aO endstream endobj 32 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpfZcsRR/Rbuild394c4f937362/mcmc/vignettes/morph-fig0.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 39 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 40 0 R/F3 41 0 R>> /ExtGState << >>/ColorSpace << /sRGB 42 0 R >>>> /Length 724 /Filter /FlateDecode >> stream xVKo1 ϯ=H+TJP)"{㌓If.ÎGb g4E:9gxcz6Ac ;7z9]^n'*vqƜ@"|͔" x'#ݠa0%vHѰKH5C)b$fRq`L^-BT$"rnvz#?Z/vK$fVf_Bw%dMEŊ:U > ;> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 47 0 obj << /Length 1809 /Filter /FlateDecode >> stream xXK6WЃ g [4P!AkkXv;/lyz<83 ]NU>Y'q<+bb5y$A;BkujBDsLhgh{h,A[^~'G51!DҥgI-ٞŻ|2KD 3{z-9KCk-[:vʅ*$YTJ39XK\sY2O 6U2Zd66HXi40F2vm=;7p#9b[r+l)¦ۻOxn<' @ ܯ*р8[~:SyoJ=:nx )V=f~XOJUuRYCD᳕~gsYr%t) Ka^?oLT}!yI-nh\ˤa*uPҋFnG:kS*S~XP$Wπ34;2A+''WN0ДQ͂إVYDOc}Q+kf˃t(C/;$zGPF 5 fkҍ98"ȁk^`j bZKJ7.{ᅜ?J'i\iϽ=O5SY'@yȋk?L΍x$AAp 443H}i*$z(?Y=Oh234@V2G}_@! F`qOŦ ?A ImOHg@9@cVR f]̬TqVhѢ2JSg˔>YaC/J(oJT\z+ƽ8k l_1x>zEJl fR&{E,Nf7,|Y N[um%7Ͻvh^PXA~y/5/5d %=~-7F=2m߽/osyXUqYʵ2u.^ *P endstream endobj 51 0 obj << /Length 1399 /Filter /FlateDecode >> stream xnFPWER )CPH"$$-֔ӠmR=@\:JfD^4[3eϢpx~8[e/s;|FÑ50v0 6O"@#E9claz#Q 0"?3u$NoP\h@ʅ_߽m)~pwyGٜ9;rS:4p* Oq/nqZ5JU7ic1DžTfd \ifXbD V7[pD O >) ;gO+8*7| XL+';d܈{˹D#-E7%O5\y덀KiJ#|mPw0J߿#%p*|*ABn(x5 瓑NlKcHd!]{1ɃJ(KVpe7R IjXO^ [sL~Nri! V;jpG:Q2h#\ߛ UpH嘐XH` 7p b2:W5'd@kzu}'j mZ^QW} ';a+A'F!F\*S~~W"2 d|3rςVhߎ)#LjQSe_ TT.pS18T/& Ep k"˓.'!$rmS6[Xqm%.97aN<1pźdfH[)j )?ݟVʳ.pVE@m@-`GZ"sOv#ŒI8Xk\$#*HW^{AihXpARCS #~#Yԇ&l p#Su>ΙR[$`> stream xMn |* >/{ﵫJUS;Wɐ^K7qN3Fy>+E!\di˧Nz ȱe>s_ endstream endobj 48 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpfZcsRR/Rbuild394c4f937362/mcmc/vignettes/morph-fig4.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 56 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 57 0 R/F2 58 0 R/F3 59 0 R>> /ExtGState << >>/ColorSpace << /sRGB 60 0 R >>>> /Length 7758 /Filter /FlateDecode >> stream xM,Wua29+ABl6?{U}B4]ukOǟ>1gݟcXw_?찴qm^siMd:vh{mcVt~ٺl]e֥%{_kϽ#Æ'A=sQd}4wbeuEhJV."ca:bbͰ(.;yyⲙ{vl숤Î{Daa0:1_Sp[9^PXw=NK|t[ڴ榭}$GTWF(-Sxq=Nrx|ظ*`l#÷X[\ m"2"En8V>7a3 T=l cElX-]eM]5T"4%ЭN@VAew|D 6Vee ($aaA'uag 1m ka5eE _?̄2\N*9 _+ ^X"AFjש!|=- [^ɮSdA t1hn>OR1 5qrMerB:yKBkx-]g(5[. GXUMG:99)jzMWFP.[:(V\GZt J{y^ e'KQ qVbi{ jڂ6T""l}oa3G6R~M,Rͫ;2ж ;ߛ˩(=J>N62m݆wȑa#k g/yIH\F8q `6sQDTZBHaV% '>:ض ZPgD($22pų0o#gjN! v2$&eXqZȈn:j$rp [ʄQD.Ql"nW#C@a ED:aD=G,85bV͘Uv~ʒ,8( U\u c۔/¨Љ]kEJDDhוf;#cTy_Gjzq9:>WәC{fE<,$}HUH>PV C/NX8P ZlӮ '!7qGV1k캣 T&#7O^\za !Ϯ_? }4$cEx5.'X<#7a6FȷVЉ*>ׄP7l1>%-BmLpkX!5 QPTU2$(Utmᤎ}E}3uA`,i ,F`6#iZց2(mm;A\ 2Pt2 MF" *'/NNl:D&N,̫q"Fjٰ핏#5ג !B$nQԈ+7Il'VEV؞0ovBTVFl u,]ZΪB"uwq-왿H# SE@vr"{>Zr5=/և2RݔTZڕV5:=mmb{{G܃03g2:+.rTw IXڞ!\c&i20*&M*2jH=޴[ĺrtBHt4FG :B ,=Ӵ R<`yH՝(jodie1ڻ_WPJiyVFn=pxlŰHF]vp/H&d*M%TʽK\dUW"Ihu0KiYo` ;u}kUt! q]Wu7Yn@y1Ǻ2S%(N"uJPCIܦÒVog1V=/PLr̐:^j/%@9,&jJZȁRHgViWrCYXBgXhKn>/sR(#ɳH{a }L)J qtjl qPQy?ЋyJ:]4`! r226uz :E:"5"GM nDAF{3!Vf0V#3zZ=/f;'tyY^P+޻zы A=r7Lnn6SG8֥Ypb H\'S焮CɔF)1p[ 1˲f:&Ī3ݡV` ۺt065&%vn[EZyo]>Ty m%bۻD-ğw.Xfk'Æ^ vD8.F^{uȜuê-"Su*nuۆ}K]IPb]̃ ٹoR] c%\ 7VSUa=qYh!Ē'ide^bb"Ug#g|Qm˄#QfGc򿴙HY3bpl[F2Ll訤U%f^ظKѴ"nmn 1e&ʤLY1Zer2af3tͼ dk6;[T"S֝,ʄxͬ߉袲jڴWe*DJb^ĥ%@)dez#!%-{"q~'ƽq&PS%sC03}}krSR|Z/cJhk؉!GfP=\=kPXxP56[ ^ƯQ=Z,nԕycy6YHtdezQW_1VTh.WF*jlԌB0J]Ze^\EV(Ӣnu `/昱8w{v*+)mMK{Mpq&/6u#z"7:"'# g8N.^ p0G=6GͦMz:Fg@5#EtRq!fJ 8$\\U m,J|*=ZUM@Yd?A^*I&e[$Y^2w8\p][x1-s p뛑Ed]p*#f\'~D>P] /}P%滢XoAM;S(?N[\ =؛%dp\Sʅ5:PrLZdSaMUBSR7|X~SP=.2Q3Vs01fDCB%X%c ])_ILrǬR6KKu5E~3nj2}+2X/2QL uL 5K#ظf?Fn.*.ݦ}v%z,fk ^b62_mX@.71&iB9<2BJXD.mPU}СnX [-˸c4#JASYi i m2C=#LPZ>Sn3VU -DQ2aږrDD xi0%2_={JȠн^ ǭ<[KӹD˵`Z8*tݳqkO*:y]=IIyIq8}ekY&$u?pu+0Q;FR $+_ofD^"Ef-mӐ%# vQKE%3a3&qU{X=WQlS?ɴ^a71$;qs&: 2`@ޯ +y(qy[ˆF#ɊN{qInlnc˄S夿0Ú;Ni*^IXBq+VSDݒKA^I2UZpB%*J0q;!ƪZFY$&y!TU@7\F%a|Y/cPv=&upD6&0#iפ,6'd?(l}KIi݃xqΆq iFJ{"jrx0ـTNcEypO<\B21ӧw+dVTѦmulbz=Ry>%./al"6m1']U"jq Bmml[ Q5ki#"SuԌ_wx9$ȉDІ4nq`5^TbT\A'<)QWGz"iN`Yx,̚ pw^ZxU4f}Bs"-0~n~XL$,\ OX]=#1^4B bi,De)HLXNNRHcp/0 {z[cV1\cHwlb1QyL7q 1e5;rI-Ni:չR!*Kj\0uVZ ܖD2^г{13dsv#~Z*1hZoVt2` AcDw]k$U'"f4iA2|ghי+KÖ{aEE`a!ߘ*#LWj&ÍB򰨅&p!b!rR9L(i>xIUV~A,YY7븛a80VZ:iY(05'f=`h4],;;`MRڴǬ T<:Btˎ2 X^zNHƻ߽6 oߞD&#MkHKyd2>l jz̓FmL@-Z"na_ѮD+ФdZT:قᰈem .|UQ!J`m!Up}ًqP*V)ydF z]`qL$lt]Evm+YGV|_X"v7L8Y|nb:; udp2&a,)AL\ڸ5URbņΈUBYEFi]n@#[6 ӶTs,?GϾxP\_|#/>~NONo]]㋿ڟ<Rߪ/Z??~|}|1Ǐw&ݽ?|xks~X~x7~79guãPr~v>׿{mmɗ}wqQxq/Nzwqkwx'Xr}]łx퇕OIx|:oԿ?Ǐ Zw_o?|o0V)2ƽo1ak;PP/K wӯ?teS|M(^mn_~|_GlNO0|{ڕ;_?>+"}_ۯ_Ͽ>a%k>x ־7Wx_>}%ۯx9M7MtO endstream endobj 62 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 66 0 obj << /Length 770 /Filter /FlateDecode >> stream x}Un0+tBKE\h{(-[v\[c)l*8|*J"2.2N'ZeѢ=ϒo)>ՏF -9pʀ|vu]F.qΣ*R$E^F&7*/{q+>῎.2a>ҪL$o;|iݮX/b]'B}G_i?ۡ~0# iG"V#mEkYDW׹ B|Lb K߃LSJhou8M*q$9i+mƺ0hܚ-.v9+tF_X_~DѴiǮxf 8 .OM ra>Yn،AU~6D9es|1)dq٧7IJl-VJ i, >JGW:9.̍a⒪*EOFc/mQVWפ|M2 k: /lik'R̓"HY:8˸;%qT8ݱ[XZGqS`<Ǝ.S^z[9JtTSnMo[5ZFԯһVnK ">G&}Y> O'cj]V&}Cq:%_{4nOF;y6&o2w Jm3;Ry|`| {4M'^%|G2ƿ?Gl endstream endobj 63 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpfZcsRR/Rbuild394c4f937362/mcmc/vignettes/morph-fig5.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 67 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 68 0 R/F2 69 0 R/F3 70 0 R>> /ExtGState << >>/ColorSpace << /sRGB 71 0 R >>>> /Length 8025 /Filter /FlateDecode >> stream xKmWqWf`3ߏ.(AB( !D'>okz5>~=㏏ye||^Q|-.nu?\F} .5j<'y[K0ǫޏs.r,=^uu#|.ugqy| }xY|=ۛ6NIw2V^/|hוw];c8j=~g!^s\F._2g'qX6mmbmx+M9Zݡc0,]5c uiiWb*|82>֞xسt+]gmiZ|pЗqwx}r4rv\=B:xcZ{|5/_Zz'3[:XfYGlZ?t[Om.UixqȄǖXF/.}%MV"I:n-;ն#^ou%^?*jO5ePɮ,}2[VʛL(z8falp/:.[ĽF_k8mi`4>,m<8 $S> #Va]XZ{VÉTw^@/F0ٕ/_e'Ab"*9It]{~mP~\^,B[)=B> 肤qufLb*#" ͕ЁEQ5hdL692 ~[v,]fȶM3+T#9h49ʁWxfA^\$#{ FEx'o>䤺A{8p}ރ*? %WW6kh+򷦩cL/j~ dK졵]j&Э<yf5D'! !-t#G tDNđ/5A &825% mCvݬ# ʻQ^t|&NN2ގ._E~QJRːmcgWhjicrn] /5=+ۺ0yS-kmB8,=hվe\gcT!Æ8 2g; ."E!+UwUNjAڋNX1:2s]79)ېl~tA+M^BܦP+0CsXh>{"0Xy8b{++˷dޝݴ6Bh:1T HEؽg_6X:Pftb+S$y/-]8:q VysYsZ"2\ê&h$dFN¬M+eaP)R}"I.%Nw:E2( , y)#_o jNg]l`Mms=.:YaQmb9RXJgɨӪ*.dEE+v]s_i )%RNAi:RnAs\\PN\D-X)siˍmWFmVXQL+nTyQL5X@%#c\Q/5I¹W\RHhu:RM:&SBX`e'dy{ axvwk8'RŞ6G$K¿[Vܺ/IFu*D@/n~aOh -/X+a-NC$b6܉ 4^eΏ kR礐89 7r^Y6)3bҹM|K҈R(ݎ*1p0j1ؑlZ>SpID v렫1|^P& VR(DMG=7{ʍ .v=X;r*2&] !X3I D1b6EgI2US䠕eȺ2\Ԟ򸸭Piu V:OEA,;+ ح`>kwG\n^l$tn),TQ캽-K*#d.f Ei`y*`W9oAz"j=RFX |3ؑYIM 76a"Qd p߀J^3UޙLnz+HEXq/&aV+"S9qgD*>ʤ "~] o9IKN2;>4kCP?$ QP*+/R$ @&5k/-ר26oX)tܓjX҅RMjvV%+mCg$˾p51JwUFT2+ vחFѡ\qkX}d:s!8C|f*Q.)|#R@ylvs;>:Db@PHOCͱZK"ʤг}*E#5ܧi)Q2_8HH߄^xmǩxفXN(/Re[MB|3?PmRCF&A-'m%*B:Ae1 aC !91ؑQiCxݼĩ<*)Squ&sU WBXyaԃRc9X￴"R*pzv&Dw6$"+Uޏ7ַ߻"̠mQeK>帜jlڕyj!/YA5j#YP;Tݶe{i }aRs3ҖtL4UL4q,4tAsj~MWD6Ry>Zr#ŒKj 8!ȘYگ"9+iₓJ`]_]̔gӲM3J訬3Bz$$n#[RLstVtVTDXJG #75;x37CDř )D1zj_A#VUVAW >V(x(B"wɟF MC6 +% ټ'1:DD2`_NpS I]KX8myRH4j]Ө4,],*b͇1;,Eب4>)$L4NԮw@)z&h]U/z7f0 w8Qs&V%-袛MFQeu ^CXxH ,P0(i*ܾƳ#'u3* =gvVZ^fºKZZ:'z*J%ɘ :Ka̟Gnbԃ JgPedZ*R$/#BEu:5`.z+XQtq%li"7va"B?蔃B&&Ғ^aA3i&T7ﺒ+b5[*,O*\4ǭiJ/Ä6 g\ƱVsa=Į;2FNxlt}òV qݍJ\To yk}C'X4;`6yH8,y-[;R[(yR ̺}"Zp]#w8-#9iNtww)SMh2\gI⃥KefgP,/RvFՖΎye9EwyBä^d.F͹QVfJeYd\HUV됫 VIumAEV=I[ 7]l%cBk}oo}ޓ)֘@'j\;䜜EVAyMɠme.Rh5%LxQu K.12ԙ3VvJ=EZ!oPf*E&{xRxM)t!E3>7-eAY?#WpV9?>3הD0Dvd*մ"{>dҭՁ>3y] 竇))$Fuvгw@fxXL݃ {'snnJid'NYkQ"w. V3߅M)*~Tpʺc9쓁.m&lFajI6/q8m{}yĂx'd !9 R$aG:Y+A=Z܌-Y#f-;)f)W Lbd5mbCR:6-6p'ˋlTxϣ׳Cę9Fɑʛ¹)(PguЃ4Ď7 \w=ȑ/äB7#K;6VKDGC-KXfF(lz/\npyd*cV4'y) Ү;`Ou ʶ`GO&(BBrYjh\ܜRZ !Ӑ#|> rHNFjlâ Aq Gu v vЉKUX1QCxJ\SC%b~\TRH.;e;IdtȝcH^g.rJbU iOW3D]I߭r"@n_H/7E̡9wZ`F+]^6k(=^-h{۰ gYYM@")82ˉ&{TyP"'a؝Bۇ|\B!QVcؚ]"CHiВEpKr]BmZZϺ|Vw.PQ4a3+W0~XZxضiޡz]u:8>e(4:ܠ\E2NBVlJ 9."FT`4}ޡV+*I]':tDl[vM ts4bY,0H //m\iԟh, sqVT!ǝfC1,>b MȞZ:L;..Evx޼ ]p?P 5"Ajp ˻?&yX(M} Vh.PM₨Ѷvu*ɑ8=')湺&Za f%b == m-Zfͯb༮l^$.5Q9S/VRBO |׳=+46hPI\.kT 㳺v6֭lXLfق0%БQQ$!%2ئXZba[Xz2'y/hծRySv=fN yQZqSҼ tÀa f6ۊ>_+oV #rNH=P~!3|}(-l#yLH]֍CSNϳV\k!7[LQLzxeЈt`ͯr;d&T-@-Zۙ,2aR(f58; jjP?u#M6fG#$b7JfXHMWɍtn]ZD.4_b 5)u6TUQIt(庻"08\F j=-+ìp*].@.n(3r15Juh Hˮ!"nX:!-~/~Ǐ|Su\_o#<ۿ[\iwoM?{;+>Ǘq;姵0|zp>}~UhwkTyܻ>8Z|/ޯ+尿M{>ۭ9SC/]o{׊3.Vs+Íutqkiw~}{k? 5?]q'j*>\^_~^]_}.?s/w{[^q{כ R?(lxo?Os{~r_md˄}o~={B{u4/_}_> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 76 0 obj << /Length 3834 /Filter /FlateDecode >> stream xYo#=B(@FCr&i d.`7(iؖmص8Cj(&y3>~Aq.%?#}CZWB,zZ19U0.'GϿbYa%F2VX|}֝ (7$m'x"7"H Zsw< l. Brt!nwq1ܴj,΅?;V&+ uϦ+ nDp:-N?rz{nB %N_sv<|ÿ;qQDK\{%֙յB.A[Fd)Oc;}'s{9Bgw[`6GcRܠڇ!Ia4HH#ͲAC+hqJd'] Py`;n n#캌 [KǍ I`P0gҀ)2Lvy:~s ;FAMD!dƟ)QqHy\ ۵azJ*n3R﫵,u%lϬǞ>2㰫]:V2[zzha.yy8vz,_%s4:pyH |9t G~F0n(LL#l4˓2cc/:51{]rɀ 5p-wmϒQ`Bl3eDq^\>c>ZG'4 gK:cZ_-X9\V 3(0=ɸ 3Y@J7<"L|۰SR'Z ˀ}s(if C#ׂn&(!v&j WrGnS8ԡҵˍ[낇[ix9W'Ujj?EWdOtxgU6 1%@KP!Z)zRē?-F1~־2(fRYPM Et6U fjmY8UWڵDxTQ!dnCUVUWO@Wx.2Ob0ƀL]XmK(:<,a9IWʙ;&*i/GO|랍&%@o`=`'OgXkؒX}֦>lqrV[5Jki~K)v*x wj (D(/ٜ*,g&x~]3?1x~Y3)>V)<4 Ժ?[Y#IΡkl:c.(Z@SШSp:C:n{3eS/Jw4`_.7 kՂR~Qu9*"EK;6#Gv+a *%ʂ~gtF·l , \F ʣ'p͋mOadі\84!$,Jia2Z`a#A1M <\-3t: ,u4pf$]>p:mtϻl:<}Z<.d}/xrΎ 핥)r+d>ͷ}z$NsTZQOV \٪iG< endstream endobj 81 0 obj << /Length 1741 /Filter /FlateDecode >> stream xXD޿"@re]AjT" >Erb%4C;kur|kwvfvѣi/SYl誧T%(Q&z{]M m_{|DSCߤv0G]naV-~TLsn$8 =ik-h ˂Уڈr-@O| D@* CxjE͌VVi]pK~G ;z7v*+YG6ۆH&N?A#3#tee -L/*2As"nVl]NmdmZp`7xVmyQm-UGU=J⇰!4V8)[]M{PfGU.DQ{VD{*-nyZ !;tAOh`9X5!#Z"Ӝ{֮ AtmK7ɡ2IlIGG!W&7UQU:~yȨ$N|:FrG61 `5珼h1bMwڊb>k P W %!d~qDWzl1! *s-W@$ eiڑfwJs9 IiQ\?\[xKZ/%y`udW_CH;{'K9???QETĺ,q]Xzā#_y+ A(eL2.4L+!ޮ93k>NqJE9uyQq5Aga/G^ L5QQL">2n rQYOu$JH&J2b׿=OLMĤph`+NuѴmݜ)fn[~sO#<^*8A\_JՃ5_d̖fт4{6^J0a{Y;/j> k<\;pY[ *Y,irDhAډ֎LPmҏ$#s&ajv—;H;څ$Jj3ݍѧyn[7OV6M"lT,V2=) endstream endobj 84 0 obj << /Length 1827 /Filter /FlateDecode >> stream xYKo7WrSm}r@ BEi+ie+Z9?yqwd%Zr8Ir|=y&OeTq>,&I"<+8hFY ЍSya(`dWϫ@]CCS+}[h;莸Y\v/+ s[}!/ : "."Y/D6*h3is%% L2Ε S}ucuTQul(_u 8in|mNH\$,/Ն)+2|fT6]-.; ˈzȳ uAz5fX{lFRM2/2PпL%& F,st2@t%w'u+4ni){h/B;sxNvhs9s9/y?"W0xC~gʀ'dePM0U!4ĆOrQM }-Sy5|Ӡ0AQoԢJW*ab%UڦAy3P]k+a\S* 0id'a~ f|_M?]v)\i0U6:zN|PZp K=B =wvJ/WqA)(hRp8CJO-wD<7-]Rw#B%]p[9>,;;~ w8 E!S`I Q[VL@׆hw{e<΢~{gZHRAf/̹S/<eRGX LIlҒii*)X"24:!K4Y8(ToЪup-f~qe?*7EReQ4Wm\"W6㺓^V TAqM6ёXӺHb:`F*GzŐPz,hs5}@qvFv$OfHwXtzQm!G~{QxB[wBCc[wl8\T> stream xڭY_o6ϧ0ъQZ`i lk=~Pl'۩4þǣDY.zEw;O-G%+ӋP֍)Tft:eOǹuBdB;FyxQOãaA'(k #~֗A'`VA[BBۄv k̉IavEtgķ&9)<'kzn9'yςvtF mW h3'LiY\1 S.h6qחrVlm ]%9eֲѳMWfwΠ=I<, Mh*I$r6`adXc4Q4$1uNe9'9@|~=3:4ע̓0g_F86[mꝅ .DL.uupE ggor`Aq[7$T1CG.Sjs+0 W /.feUGk8zszH">uJ51J `0U.F,ףwG i. `]qskڂ(9KRb׊ aα(^GoqZ. ,+q0i0pJU2aPXÌ{B11Llj)aa=8 Ʉpqwta%wgowr.] 34(Jx6Cw lmPBfLH-,,ڦXb?w Eq,`Q"ŢPL@yr? ^LFkEH7ٟIR8&ރ۱d'/ f!S=o1 m@wLڗL}icCCiX4ЋEңPb"{3RNXZnQPKLXNpw( |34 m 4DB3LKEZ &i;+.o*t^\s LM;G7NUgpX?t:O#՚@r+%Нѳ W-VJI@&]UD |"^li&\Rsj~ q}Eʆƫe`;(=/v*p{FVQD<PAwTtǾKamlݬԛ!"bb6b)ۅe$tJ4H)lAW.e^/kIU?_˦rI-O}m_SmmT˦e *k2UqjRYΗ4+f0dV 4J9i#9Ңh&룕};#dQLBs;mRʄ5L ]=^o"%{a f"#UK lVOl֑ kTŀ-q nFB),M>Sm," eL>03 ˬ\ـ4!*&$;J˾_aƺ5s Gl |[OeҽUc三4DY06]m_c{?rPVE᳕-Tj"0TY㷂Ed׼|ݷX_*oS U 9Z{pTRjO]6h%:/HW!#,KF3)dMx1]۾C*.AUyAWW NJ %,$<ޠPˁa?Qj5EMFwLI>$@1r %:jtE)QH#J N։Hog~90{TGB:3eܴm$ڲ@)m钠?+ endstream endobj 92 0 obj << /Length 237 /Filter /FlateDecode >> stream xePKK@ﯘ fw<7КZ Mcwf@@Yv>j* ImD!:Y`wE '^:OxjάY  ZcH`6AnC6кS^U7e/ Xqߍ͉vĚ<v##\{:NޜiܲwdZv0;pHRd/S2[Rk_飃Nxk1),cX endstream endobj 85 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpfZcsRR/Rbuild394c4f937362/mcmc/vignettes/morph-fig1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 93 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 94 0 R>> /ExtGState << >>/ColorSpace << /sRGB 95 0 R >>>> /Length 782 /Filter /FlateDecode >> stream xVMO1 ϯq9α|UB*ݕz@R d fagy3/=@p S}xiBgA8\Be!ZtP1,~E-J6?GœCZNajaѶ珰xSsBrG3oi|#%Xa7w`u;'z?|z Hftm5*ϧ1Щ-փU%UhEކu2uv‰wyEĠEOsXO;eb6_~^^\<9xɍlʚ5Ǣ䅽.{%J`t[\s\st/ yL->.ݨowW4jٰ rA_+f0IѸ{3)w:W;L3nGG?o{ ,}opߛ8XULQ8DVPє' daG٭%n:L!a{o'.ƬNP{RdYuWmtNRDbĞm[FR84B6 '57QMGgOI]*6O<? gE LcnݶzI*d┓s; م)MT-)y8E^Ǎz"^S13txF[im$51MU/P\||J΋m>5񑤷&nIH*`הB7^ޟ%tJE endstream endobj 97 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 100 0 obj << /Length 1502 /Filter /FlateDecode >> stream xXYD~WHŹ[w6q8'3g?gg_g͓ L? 4&IAOu}kRki;a{b{^(vIc/Ɖ:¶TIxw;d^9KedQvdn,LƐV5llnZ>uR9q3q`G\Uw \ta;qZ|Bʣ{2'3/PJ ۜY!5DǕa ԏ9bV3g oD r1CfsKliwWZfZ $֕Z|/ոG(&q C~;3R93"zbթ`d6V25r]/-*vmDzr'XkZAтJBfb>0F5~Na-<_ 9N^9Ӄ:?{xgn=oFkߋR NTo91rIڞQ7jR$)$lb+/qrkl8VT>}KN&TX;DO e%%YN$@kBX&PF- ^A({~$lѦxnxZAQS.ax|a4jab1B,;DgDqp-#?䂯[򜪥b,JCٌ[>' fk8㾡am>b&cRS96sHךuɃiΈcP I\1^t0~>4[ts9H.;ԗ>mU@(~(M#iBX2efDF$" sԐM2Wsi#j䰺!@R#@{u'16D{mܸ̌KDHf5\a۫ k ͛Po}+6(gܩ\8T́;Ojm 5z9ӖN()ig$Ȓj<|A]'3xϹ}~5̈)߶i*EX'5,Ӎ U!3*YHqAa Mm &a6q\gi?!.B XV TY-_BGmzKsn1h7I,!йe|0٫ endstream endobj 104 0 obj << /Length 2185 /Filter /FlateDecode >> stream xڵˎ6>_Cm(R/`7"l@Զ-y-'O=IVwz݃,,V޽PEEV,.g$nxcx~Y9S?ܯw/VE._I CoVG9cp8,lC5 OGVI4ޢW&' IW(͊WŨm9 TK?ˋt/ȂVWۮi<"+\3X&U]B:2odkw1.VMeArr.-/Mav$Z(nÃp3 ]hv;["+}J+I٨i/[* bCJwLW0VgoAkUIZՓ|0"i\kLIn 72 _qլ ezYXPL ϿœJErr8uaa-ߩpDP6݆N:Yhe\EBz x9y8=l bnK50]Pzmx}5Hj 5\_mJnvR9Z?~yE{30"Kz2[f<[Y_*eʗT"46B֖Lu\$>k쮑Nj8I{+[Yqm%'ė\L2AAA]խ[V8SQ[;ΧĒ;piq9i؉g wP=?H-u,VzxۊFuv' NӒh"gה thTK/Hg݇k2.g?#%}W&-c2)i?r"m[ nؠf `rqo*|rERݷwP endstream endobj 107 0 obj << /Length 263 /Filter /FlateDecode >> stream xmPN !aRom7ԃ鮦vY;@=l|P-7 (X>L)\3n)OZj6=[zyIaÍE;*: bus/+DVV֢PL;J2CL;1ƈ=1TΉ? iNٍdt&g?icjҘ7m|am'J?Mq?]+us-etO@VJ0YWJ+ 4 e=n endstream endobj 101 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpfZcsRR/Rbuild394c4f937362/mcmc/vignettes/morph-cfig1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 108 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 109 0 R/F3 110 0 R>> /ExtGState << >>/ColorSpace << /sRGB 111 0 R >>>> /Length 2506 /Filter /FlateDecode >> stream xZˎ\WU -\/"p B"*֓H)Q$T)n~9ue+#z m0--e^9`oWu})nϻSDϧZBj[:ZHy{>ڷloN?a~Cu fkH=F#9{ յ'c 1Bt IO~÷0%djP\{yCG/OpPɏ3%L| ewT"[Ԑ` ^RC}prvGM}`Cf0|ÃWIw7UqJdQV?5[_?꧂y⧂k(4[2r!}kc Ôx\/~*ؾ!VL,꧂)Fʾr@]/~jűaS]rQkIs z˥B. `HIC,p``T fΠb[ JcR#ܮ5rwh'>vGu i#- baC,Dt!;ֱU#%~7kiQ|DŽ'ܐ9gb`S**?Vڟ`|x?+ 0r_P65 '9)YSz ,$+) eO3*O4LL?!_| U \DBEo3AkXYRlEGIb'ȯ(h6~Bक़@r ρۍ*6~B f2Sy'_D0~6+C(Ox"\0~B?)0P'J*OЭ/_,s &>]9IىA@de'<) ծ%lqQKىfBRMى̀++GE?aET/TP U%TQ)o,g1e9$۵Є` RBd2VVL|'x0'x'x?UwG0ݐ|]$8]8ZkZy]kcgEcB,5gJX嵂!c}A6zCǗ OU{hrG =S>R/nՁ3(.|!JA ^P[Ŏ*_sgi)4ʗ.*v}R3MbN=`XޞL`bK | &PmccT'OR0~B(!Uв\ !e<N?!̓EglxUp@yYJ4YzlQW؛/P/BH"`X͋v_PI vgiT bp,yEC2pxȰ ,Q_yh%E*CO?!ί|#}'^֟rKŁ2O#"|_"$ g~Z7t|r@dzKbqw<$' |!oo[㏒o%-2b^GlഀX Sb!r@,L6ofM /%, UrxRʀ3׈WE5Ғ^&s,5Ȓ?gkK.T endstream endobj 113 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 118 0 obj << /Length 1207 /Filter /FlateDecode >> stream xڥWKoFWP`,S7 us|HH#JqkI*CaH73uß˕E` Nj;4Qκ4!ѐw,xN?yhlr}*qlo=#ʺ%?ƱEzK*/pcHy\+hf˂#r /C\@=c2ᣦo-FZO>_ ^S=yp7^DIZiNsx<3wXD,8CfLdM bɮ vr9-Ti(׃iYmRLc9,J" Z׳{CE!L$#0UEbw:=$ ]A*@{eC  UBs,Y xiI4iCgX/!txOil4ðCrKMp ~8RRy>II~χ8A.[`s6֣U?Ï~wA7"億 }o%[ctpZ=_Y.bTOOrCD-3̠‹OϔM v-43c˝IЙX{oK>^WP=5 *nݞ5@$}U E5Vy"{AIƤIz(̢Ix"J-J&yby::&j]0=%}QjjE էE2i  w-k8W8^yE; UeݶՖ_d~WIk*>45B%Ϛ*x(-eZHXB@cMZ޶W⫓\e  9$]NZ檈8 endstream endobj 114 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpfZcsRR/Rbuild394c4f937362/mcmc/vignettes/morph-cfig2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 119 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 120 0 R/F3 121 0 R>> /ExtGState << >>/ColorSpace << /sRGB 122 0 R >>>> /Length 3599 /Filter /FlateDecode >> stream xZM_l)Yf CB RbK9lGĶTU~S<\ov{gzkz^>_Ta{ղV}}{ћgiO)m> m{[^f#jB !o=-hȊ<`[Vk%+]6; ̆vw Ɉ%ғbAZ9arJ*rK:ᘂ>jڛ> 4’"b <Xj&lV=1n2K-6<&K  h- 4ɜ: & +L~Z -ln ̈́}\F8}N[<s 0pɜ-[.[p!S J^\9_jL@dL!$IY v9B[1 ݵE+24a#⋋pjr#YY喭#qjހ@@un%4̀ȯuD -H-3L)$vpoŞ)513bKNe" Z3H\jAr>0?_nȗ>.&I{aI<{OyS`13"c(3k`P2Ϸ%&|,742Bf 7*=+VhL[AJ֙ %ӑO m2=dbT!H$~26 f4.={f3F fR^81'y7N<1*WU(o jw:p΋}0P8 }`z[AH#p"PA>Ra $ 1bm+[Lx -Y L*SNQ{ i 'gX_;R&8*O^ n/&_4؃g G "CS k,mX*806[rd:N>p3tk3sQE+Q-(K19 *vY_?h?r x߱ |h#0l4}P@@fQ̆BE{"Ң%H _y】W/b𽁦7ˁF@7X`B:P^314E$ւ/X 6)^ ^ G|\+~ ?Z{ɒ 3k=wL\C?'X&KEWߒܿ"P5M"Z(_dxLBчaZpMݟ,LHL߆I-0|S"_Oov4JH^`{|_P&caҏS B{?kpQU1 BU( I3͟o|O7xw^QVԂ!iJ4^n~D}-?AAMa ջI>A1~#11ȮY8TG w=o^QQoϾԃ/zH?ԃI#ʿTk>ֻT&b6/YX-917OL=ؤDzM|NܩD҃ˤ=~>3zpHDJ}G=Իԃ]8:+I_"QxtwWnDB=Xup} \][g+rtu.bD186mNφKB)y)u>s^<"“;")b|<+BZN<:TGB"ZAR@ ~Fj=Ԣpf_Ci<;$tG'{OM/*}jxP%B56+QU<(= [d_KU8Ta'c2+֓)&#ͳ B8D`A[ҫ2Y6H3qD*K5gdRs-C .5r|Δw yvQݩ'T8\_z$KQJmvlMNuIצ.ۨL] ăpI@{Sϒھ .{g;;sF9[5f !fD/$\l.Zґr6'VScRu0ZeAoqjNd=NINZM2uaLHЄ%Pe4LYd]/AEh6/%s=h L`E'\~|-gfsS=tSZ[)Ťuȏ7fL8a_gÜ@߲EsT oLV6=OF^slfjmj*LHUIlVief뼜0 |\v]y,͌(yS*|z~wRɔj # 7U"ָIL-$/x󻤞MrS~DI>u\(p]Rgۊʵ^JzK|8OI')n~%ju5 5+*ʍpvwu[9ݡ7t]qE5n-,ܪ7(r}^(pk[$V0q!NusV\G5.5\ BeזQnkCҹ݀k]0slʔzy]VWLNp>u.`W =*" X'| ~Io_m2'ÎN4v /hq׸NxSnLsxO5p7o~9oyџpNڞetpx&-$N$tl?oŷ}/{)h{׿O~=Wr1?)F|[9qW_wepy$ic8j^< &g0ic#c endstream endobj 124 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 127 0 obj << /Length 239 /Filter /FlateDecode >> stream xMPN0 ӡn'iʈJ!e􎓮W(eqVXmZ|@LC V;0vڷ!aTbTnN> b덇x ;0x]A";usWֲ>,%ҷĚ _b%8$8xpLM5ʈzLO7TuD 2k͜Y =֎6 &\Nc 295 RP?Za endstream endobj 115 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpfZcsRR/Rbuild394c4f937362/mcmc/vignettes/morph-cfig3.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 129 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 130 0 R/F3 131 0 R>> /ExtGState << >>/ColorSpace << /sRGB 132 0 R >>>> /Length 3514 /Filter /FlateDecode >> stream xZK&Gϯ[vU!Yx%f 5eDDf]c}twveVfdT#_x񏣭3c֣T;>x_x|S:SJ}v|?x竧<|rzz}v њB= uz G MvNd!+]6Yde$GKV0&Y֙ 41ۙhe"S"oihZҹrB4ޔaˎөj9ٙa#4.0Kv+0˲4q<2z>4 CPƃV&gi1^l/n߮8ZQ~k:Ue悰M'<~&U%oV)SXc3sjQ 74[0)ey =0DW)`4/I60/n4ۆ!(\ŶeĄ@58/@ _Q^ e amR {~Q ?,az&MY$}? hz$zoD<7B/"-E89Hvo.$~eB7'OW,0A~e4lK~':\_'[A{o:`hYeLey̋܆j(y4t-14tcS藄S!-BG&S25FĜ)4YrRhbCk|Sdʳ*Mt($>ej4Zr -mr yknknC κhjtJ|yDU6II[p/k0ZlYUiX3;{yJLqYK&S:pd2rxi>"g~3dyͅL.Mw\IȄ]P\`)Sb3Mdj="0WIB W̟Ksz#]sPe25K~O9(n*\1!/Ygϗ㚦s*Rumpp J^BU7E(qn," N7@nչC߲&q568D8EeK|Aʭ V~frkrk>srkr>}sQLřr>cnȭmwa2jȫ# 9+\wRn;)ʝƖyߑ(]tǗQ7}4'IWs*{NyzUt Y YG^Z% 9NbQ P{P2aPv\Snyj!ǚEȺoAȔ[EkvBI@ʭ|3BnrBC_!׀# %fjwnPnɔι_)+ʭ|ʭ )5XxPl9{3A^)[f~@'"dKUj7wzr9,]!;,!;!׀cʭ 7JM͋?Z;{]~ﲣr~V]9}=vdN9bݝw_E_?}+;/O/CG^zx/_?6~69<%7M m%Wa $;l.71ݯr:Vp4~\wx_\׷olBfG{}gP/vVpmvL7°= {xoe]tK endstream endobj 134 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 137 0 obj << /Length 1204 /Filter /FlateDecode >> stream xڍVMs6WD0 8qڱ@K )zH| eEM$bfEa4{tQΏf_flTkS{76{5II4Jf }Lj5 vG3Ym8 !S_p_}Oxͭn7== ˪m)j|Bv1fܶ3zO`mM AeNlA'S19o;Tj۱]ńQٯ+FUZfCsX-aP?:7J8iw?GE;T$PخPDCB4t%;RKy(SRZXjG%bGZK884'䴇g` l cppQvxIqP߈šlG"PR>CbcץA#l֛sMrGTJ =VQ?ɕfo3ڰ{QWs%2wDޑY +S c M: 9y<ՙ1ѠP V[A'^H9| jir8 /SYQ14""1:( MQ'. Z UnbAϷC٧#R[t ' ?#¢p&xaH7t+f}Cq. | |Զ^'%# ȥ#I"H+*D"Bcl(_ i/oɁ8[u10SE2.ueIau@ F}Bf1mb_аfV>Xwp/^(uՒ63?$,9!xt?zkb:fF <7eijb^5RSh'.pyjv/bn endstream endobj 154 0 obj << /Length1 2018 /Length2 13458 /Length3 0 /Length 14689 /Filter /FlateDecode >> stream xڍP\k Capwww6 %w  xs^yjft?{4- f ؕM ,`cdac@ֲqGD rva! ʤ0@ ```cp,XY 0Zlce?:sz;??/q9 PZ^3svuu`e`:@D6 dd XZ6.RhB,]= vyuq[JUG_J2`9v_l;!@ `ic(z2` .W;hj7u @F\|;8U#_a^, 88.Hq݋߇kx},malͫ fcc Oskֿhy9V%~|-gc zAqn ?*!,l]f +0ҟb;x ^ǏOFf{1Yt54]O37'fo5Ϳy[BڧPv {AK: ݟA7df3b<e$fo_?z׿-^'u !:] om\dl6`8Uze5zb3/V?+׭`qK qsë?+IBW^֯W?kl_rw_#U e+Y?DGlQ +5?*]^?ԯ]Ah+;W?^O6W ǫ?q|o?mz}߯d01 qY؃y-4zfN{4dڬ_ý˛tWbdO> m&S[HxE$Zb۾ONAv0 yNn|hjطKcs[۵<ȏ̟4 *7˞%se&E`:D;BψwG#n{JåP klGb7EOYIBxt%\H':Љ{Abtb}`$H}s*<\}Zbx^3+tݤEk ;z&9DtH#"/](\nnOy‚~iچy|W>@Oԣ7g~`K-#I(aJ5y Q` ֋4q7cu^TrCDPެtr 0Md (|U|,lt0-a%:V  [[DDX]ި |o*gQ+a;%_1y&gArD)%už]ɩX26yѭfT(MPyQ$ԙJ%nN FeHkFƴ/gH Tq&7 uTX$鴧 OTI:{[81`gEM0\+5T wxYjzua: ^m }VqsWv. Um&ڸԏ g7sw K8v7=C÷ͭ$M{UVec Egp+.dC`~Ĕg p֫JY3l^'Z+=;ҚaژIk 7tW 'o\>Y*d:{⏰2~Y݃ #J7BMղ.\'5D*atȽ !zYhw삷 T؉5¼~YqFޠ0mxD"8F._=k\%8T IR̵)_kgtSkQ ZnOTqH4\E!;G+eͷ98?~@>4=o#fl57_|C8/5Hϵ1ǝK}|Pm:\{!PHh~k<맲)bZ$6%~LQuvvrSWb)7{F#;B;LB!&9!"XoSdsqLB'f"R9n;2lgC9%^WNČmC;Q:.2>' [K zŅܦ[p rUscǞJf}~pSՌa8?cCЖ&qefX@Yq:Eۼ~7IoWwWUQXEA+r&oH~Կ3sj?46mB rb\߮LUOZ,2Z&LYSdy!YdY3ˆ }r눔/ѱ"*G.0%٭J "? .e@-**0: }'#Q |!#Ďs⧀SAJM5<Zx ָeAIBfuzh8xYNT4Q|W4O)!܈4Na&ki4AXŠywi#l_r.᭯Nl4æqM;즤],`dEI2X^TY ۥM4Ey>7G2N>/U@y\o)^pdEdB]gl)/ŽZMcu!A^R r:f-/eK #)7q &qwk4[ӫth yTϩ+Ʈ:XA^U\-> Pa:R""~B2M(3]L-A,ַ[/o3\p#zj|yEKU5LZKs@s7VZvx"mk_~O3'u?!17X\jk.7WrHĻR3rNQT'R6Z ɱ入 k(r!X pujv5_rhרy8G袖YxDEiB$w;H!=Q6h.Q~V餝[y9J } mnZqpMN2bsh7K&eVNZVޯ£ 5p DxGm׺GCsO]M)կKnX۞\yC87ڡ/d7ܛDM5@cMPFWn CM՗V XZ ۧ捻!L cڑ"YZ~E*n@Q n/Ri]*x*{@a ۮL4/]p=HK~`II^<2~b ('VϦ'o%q "J&p[1~YA k/eJڍa,յphk P&[=o Kw&DӦ< HAMICn]zPf,~cE& M]lfcgڋ"MI8/LC]#E$s G[OX֦l\|6Bl۴vefGrA}D]~ͱuggLJT<@MQ\dĐϗSb>g~#=C?7kaڟr?ZB02.XϏ FNekM?)Dx#OG6ZG,[Tq7ҘVTPZ"5O@7H~ZkRQF^ 66NA ϟNğx Bl}g.5t0PcK9'v؍9w8e+wѝ@.z xF˧\e8 ]f+/[E]eνη뷮hN|.<  Z[ŐO6LlҖ(eV7fܪd+bD IW ૈ*FgRMݢb5+ؤ6h _we<"[VAw3`oB!9fӔ^݅2̱7R CYkŸVWԼR@:yz~ ,'4H>e@Ɇ~r%om>bq {@殢LR \ȷ!R>rC[f*p1H.4J c ǻeIL|h9 4ǑG42Ewp,o /|[N+|]$muИD2ֵ7Axn &b~$lZ&B}''Ϧx8џx}~1Vs2siRO:=tWiUaqY4 ,l{UqW3p1S e-],daU\rwgCc.g2ܫ#k͘z 2<+և0Ě֜I{h8GLy%cuMӺ4(ekEIZv5#αn0]4983AQϹMSVPCDui?ͫv\ܯ|3^$F=zبM|z4|Xy`2&Az:H~8d{׈sӪ+Uu j7͵W/y%qΤ? (k-NF]̬T,,{uhl _w8C(d.htn;pIY\|/ݪ`yk@ ך~ ii [aι4b+{mWzTڞ´k1axvT;3߳J$%;k1fP%ȫk gCӮ ^ {zL/ICްᗇVYYY_:+j|<gFF=U Z#^b&(C%pǝ&+Dd,2]RvC.pĨH%lg)UѪA)橪x*pߴ8=mdcl͝u'S _4 /۾SdgndN8T*AބRqԗ /oɨtS- Y35bH,ۂ BNbrȋ؛(8L9{ 8ۨC}zfBe)Rc.w)#ADtyn+bߺi(el63?BzLK;%-2ݱOD~Kq83ǻ Y_BLE)؛gs3M %)U<]~P`$ۏzd+wxp(tMmz`ˊ4~c*j vGZX폽u>៱5DR) ~<sA٥wEY}b=?}u^.Ӗa\!4VBFnP3 `Y?!Z>8L=DgI̤&mffh.lWZ5C9t}&>fARQSOh7xcd!pN6U>wg nNJz󆜊azǙ *zh7XEu+~"]s4qUir;IWv2,$ 3Ri=jrXo7_Ug+o}鎑zECN)] s/'*ىϒH; 0'R6O+e;\=_"BHH4/GP_K`Kж:՜"AvIF+Ktk$&vgIs!@;:iC, Ie:}@'"^2 -u=J}X71Q^i5<)Lϼ聧w#ͫ/J.>u]04l5/e-i=Tݲ_j-\2Jsz:g}:,&mM| ۄ:-ӑB~E22ۃ)-|9Am3hSS=0e?Ζ5Y@`AgusN)F[4jK&VL%X++X?wHJ(8 aډ~ 3oA1q')^ޏCeFu..NЕ zC, Lr7QFOU3>zD, ڎGQu1א:RN=C\5Նqq<C}K߽hBXEnMO8<&ߺݶr’R{sYaJJ+Mߡ>[9L{zT0IڙIwR'F Bn?Xyг`y/L ً=>룥j%WBHCL۹X %RkAЉCER9-j(N6ԫ29O$42} вl[9ݲHV\ h7ց1;.uc mڊiVpi>bgZ܎d:0<+hIb9 $ٸbܤsbO)þsB]! ҏDN˯YubZ0U" }1G ī)y۶RZ-?~{IR *6n /V1CV̜ۄx,2z)6[:ijCtjm}-'H4tSV#ST~а:I o߹U>6!idwX,k缌L4(= T!n rĆ|NvTm}:^`BC!4CǓ49joCXT.x)G߿$)Vcc]O9,B_NI>7<4.Z*^81;v P*R&^}urF/nq*1m9=F.!jrwe!f4g")yO%pT}(ԉX &`CT7Z>P:iiʹV&j_jp>!/S䨰LVD9Z5sAa{L.Jf̙ S6BBDDa*rȏBtN;KΡ$ҿl>z'_jHz @ÎV^#$*,4x [{N5 ].%?1zٛUg\SrY%!<,"k= E~߽OLؓF3Go zGp*dO/W/ݏx*y d§hk!MK<DVNA2.@*~|(9ʃu$.lshbi0VRW.B:lV*:ŧΕ1tp1W)wz/YT  S 9$%縊60ٌ >Y{VU<2 Ā5"1oT };r&nʹU~fRH)j誹$Ӹ_{V_DfHvZ(/\~c̎ץpbj g7~?WM~-V% NPZ+;ksq ꝛ?9:LgdwNg[۰lب1{ll7Fqu#V aBV1:%:͈if%2L6P>KQ'!M {G}ъNOuxzg1aܜ`ƕEdD<}sY̡ͤ(Uiʂ7hS9GjS"H#ڱ?8{buպiz_tfijVx8oՐp^>W1Kop%6jadG2!"KHTH $ҙ?{@RoUt51{G,0M',~1iqz+7J2NH*~kc`rA99yy&J|%s.C[g΃3<~Yl:ۅV w3ʐXĆ?tV-JنWlhHJ˼%M } sD{7sxD1]oKgZH=ɭ~=%6, n"2%Xa,x i%*5pGՉּ|(`\9xW|vd%{9# g zuua*&`#]Z ʾ~"(` "Eq viA+-v]Q,}!?2%EUx#%]YƵ b5폊?M#9mařNl˭}~"R8{s.1̶ݘlY~NȮ=[[L5B71*݅D@Dz:JФ ue̚<ŀrjm'S1?5v°DELZqeH㾬~(*h\߃!**,u01wپ={;4VBیDJ۵rvTY)6ڷJ"[H% x':\V5;0ocGs-LK(۾}r8ed!Yr*j^ު]j+|ŎID qKi?؆q@FR,fCy#.4,HI>G:~WGˈU8 :`W^;QWEGkpJ2zg(skۀKf(=rx Tt!udRR6oRQ`1IQٺה/=kXׇٰq| K&0iP>,pүmPkyNj1LjmB2ӜGm^& /Xx#UK~{ e%"!iJĄsL^\U(ZgF4U[]{8{+b!B oF%ߞHQuI2֑%YiGڜx>:ȈTe[Nꛏznژ}zpM~֙ tʍabĦov-Wh&z$6u% N'xdHj8ndfXㆷG.3LȘ JՂKT"uC诧Gj{ Z:\FQN*x0u+ Bd]WIMSb‰GM j% &MZUމ4p%1(q(Jj,B`oiI/eqEOԯti9&yKFG*/Dp21%hZ;sۆx d*dٖ &:"!TK=5rRkI3E4Psv_r8DNV@6HH7أ5 \əs}R8e^rƺtgNqqdhh@`>7"ޣڲJ[:S$/Z {OnմM{26{G{G Y=qvR'!mg9ÃG8yBR[I2,kIooD mr(ǒ_{ &Hjh#*eiL͜]U Zv 5L>]~ݾPrIL2^"~L/{{׿dS zauB6)o$'#r6H~7U*zLSQ_8X >\ԯlKLXÁ"\bŪ3ncS۰$pÁ w30oWrb19 N3G2fr]@}m(4_A&`^+W7JtyĬn(ř*+^WCWźhS,];ra*S7Ee꾏Ky IGhG2X(M44.\CJl$' >rCv aUpfK \R)dpj ruٚ؟58<;$SNfzj'fTi7*ԛZ96^`5_\G}+iX5YEq)@cLBEѴV Jl(̛Ȩ^Ʌ!w C}4"mo&oBV?\B\͸.vAb .FڛŬ|Sՙ1A{kNupni' qZ1<`qbǘtt m ؝24+Y >GC]khM>y~$bHڰvIfߤt]=#n1D0n8Y{y9ٙ_׻ԟgRw@Pť=1sqUNlx66MJ]l%qmfdV/D_l!2vk9L*xXV.pstbFWLiYqx|̋+u;5:19>K&U[ɿ,=e%'e S.{CthjsůByw[Jxs&%lPԚ4޽NУSttʮA&2 1=t>-9D"#a7n7JQ](a^]NYCHΧl )rZlWkwEeC#n. };9woj.5g]Pxq)0 6Ss/<9d] N)iR@9g4Y#37!1. .FCUxSYH"e18] oFo!mO`fLM.U4 x¯"Fhj7_֕L`'-s窳~%Q Rhz)2]f K{mFqk1?<ݲr8YC>tˆĎc+e~Tj8am.P`A˚mܭk S^paaglg`,zccwkfqX9+v{ĞBm wWþSS7_ޘҧ[`X --Xe-X "t0 zP/$ INįdc6o&gOEVI=F?7z#3g=H>䚈qf-IpT\6$Im=l:sD׍qLe?avLM=e' >0Y9N vGHj$ v{񛳼r[3i` 3_StQ/FUFI$s[rO6_\m#)$Z9f+c3~$__\srh&",|L`k <3<)'[dF՚ M~W9C-vZԍzRӆ$IGå> stream xڍtTZ6)ҡ9twKw 030 9twI)%4R" !zkfgF]y;-DCy%Zʦ@~? /? !;b Ax@0PD@@ۘyKԂ. ("M#$J /@A#sO ؑn WVC  CnP /7[a_G@}}gu0;8?Wgo`oG?BBQQ@ 邠_0{8@~oτp]K~k]?N~;f_UNT<]\~ uø'v o ՂA=]UGnAAB=T>;](c5( z]<@~n |x7o ~ @|nv% @o'>^y#~ݩC\ H[//Dn؟?3|Q; 7/-`Om2n@ >0,&Z7ʐ,4'*';X>xfIH+j' KfaE=t\oJRz.H\P=F]7 Mbd;ocHMǜz!||rI͡[U)@U&̘{6bBXqVXNT \at>%BW#To7aO* ʝÏ~'j}fx&{0W4(&MsmgA&Oj=/? 9. 85iKLʜy&WK mJXo=K46Em)?~{m$81atE&߽eA iDL"=k=Udtpx?N jfm Z݋e'c+#`\c; wWw%u"7 k]+* hZ,ipOb0CWE禕Nl9mfJ6tKJLkw6Њ-,e4~/~V˷ XȦ d}Ã<(z\x&UwhMCm>ͮ#'*=E}=g+WTg^a; ӏ߅G|4깷6"L)"y2%É{ pʀ 1AR '>yUN☟?'Ȯbn51v4Ǫ`6ӲƶIMx\dFk|6i (=GݪY6yL[A~rQJe 1CE&LQuK~^۪JV8DMo.()V a"ap:)^22o}Vv a.@;onEgx0(@":;?V& y^5Ru`M@8N?"‡ӴK.=2Y Jܗ6ckXZۄ=66yϙo8ԽTSLdЎg\×Dr $v0~ƽ={gE:rʌY6i xDbI)ʽ kuZ7*#c_YRiP㾳Y*h4LxS@{ Hނ oϬ0:CaRTVoY)ۋc%(;zGH8cRZosSǰ*Cdfr[C1pU~ި8xCž̔Dcf U NO|!F EΔ5ɸ갔IBL-6Dk 7-7םX"ڨ,ҭ.HʨoԮ840(@צ}T.ԞptF{/&,Aؔ[lOczM-^_U9k+ +&} =2FExȄF&`}Ҫ,9#|Sc^ VnlU%2ӳr}B>-32a#c̙0E| FSh;qB$zYP]x޽nt=J+\Y"*3lEҼt6'鋋GB؇t;]E5Ct@\ƦK/mg\AӜMԩ"VE-aU6e)^*k/t 1|Fvq?Ky} 5 tf-׏$P>f ܤ#*CYN#hu{ M̐1bL΄J2"VV-A5߷ W=sZ[jw:$Mv,|3|ڌTH߷g1I#')W}T98V+Jp1#TP3ڡ~HN#Jntxj-6Z h݀kTBnu\®m #I+/trjK% iz%rp2/(Ԑ]Sv=]q|cɛC<˸ G%~l\ m.)j3gaw{P UG~Gx˫M/r3'o5\+wZfW@ѫ^e~Xٵ">Ef>̻=}ԛlfQzUlmclhhaFXwa軛=-ԓ4K&HaZndϡ_C N,̭ۺ^4Ux]oM] V`~p69t♴()gN"Lh7%sTz>o%NvY =m"F|wuw>X r@}G'ʻg'Y `o,?\'1Iu:tn럔Ci--wSR9rXoZ|Ӳ C,B14yFy8cXih}+$Α5lu ks5.=СwVGm8slp1ـx<~Ϗ}gkD MvGћÐ74e*|vYtctLje;rB3V]t\lUUIοl UB *yJn+_$πkMo/o?,-іCV _(;b&pY/nGk>XߋQ.]G}:a<>28WW~}h{`iޣ\lOdMyؼ aZB$>MLs.Wc1B |YM[;iL2ѠBS 8_x1TǾd^5)-\}NCFuv\O=Z>wwyk sl ,tT Hc i6Uޜل&)))[x̻oH=1\6$ܵ0#sySX߷GDсwhm?5~&B{$䧩jn{sT¶}2"a YдæۻQNxVG,`E0_ B 1YĴҠW$URbW|ք^d|Հv;t__oL]| :Af~hv|}%6N|7ccyCί!,B k:|d0 H0jQHW+඘sY^YpyQHGSppM[D \/*^w%~Ćę5W /+Ig ;Wq+6-fpY%?$I;^I˰aJ0.DmIR Zy6~W A$ ڐׅ $ph6,]cYf_ǫ0OƇV+8/e{ڂ.a_#dX}ĢgHc'{j"aTМ1N0QUwI+Ps5:괙ЭMpH2Hr@ 1e)k Mm2FL7IVxVCg)j1Mq^AC\ЮzI&I=~io8h5L팯:SVR'7A = x0YmQ 3s&Q](9_@W;fx'ܒ7ܠ{ݙ%@*+vlu(y RwEI6q)DLe+ׯD]b瞆 zgLjl%F5&p!,C)A  dDȝ0^[p+Dڰ| W6Mqlh+?$y3ѨP|r#$pȋGMOZh03)тӖ 1B=4o mzey JVӪUϤ"74+I#V'_#{ m^])LBY)m%ώw_Ht'MpD G ^zs&1;4)Vn$S0>ꬤ =1v۸5;zUgDf m6<ƆZ20cQ ;"2^I1&n7,II·QstgMW\fcz'M%3'S6@ d/q hx7u,F[v4xllgx\LNb-]"bU_]6/|Po :Ԟ<-Ю,:t n@gHZGTVӐhݩ'_߿+)ZjqjÐBcdyT!W%'>j&!j2bG+ɟ'|%K} j&t';|8c>*$;2zGd'*zRP"GoRM >`*$z+?bqI9zFG (QؐA#QeZZ쇞w%Y[聜3 2x[ZyU3^U4DzC=*n|f5E2ZmR-k|w/83b9ã0\xRh"LxB1R*[O*\KWG}av0=mb-v?棽-39i{=R͐@(VQWlkl9~5^ kG0R'a( i[ ZJ}3oB6z0M]/G+䍟(]LB TnKKigkǞX@[Qu񔨼5\aۂHj\'}m|1l DPT|‚3@-I֎+O3]l'9yCtK.l1=OgS/6P endstream endobj 158 0 obj << /Length1 1787 /Length2 11694 /Length3 0 /Length 12837 /Filter /FlateDecode >> stream xڍP #< ݂0`&4@Hp !sr{kwuo 4bPS4ޅPRc@ Fb F +B ryI\^yW[| :$Ans @jvF:x:A,\^#Ό' fvJ +ˉf [ vtV.., ;g0=bP;?Z(ƂJд8ЀZ- lBq7;^Nh)T+rl,lM7D? 33bo ؂*Ҋ,..L [g ؂L_,S^:?g3'33YHrRP;;3IBf/pmA{s?0wu`ղ8$y1c<\#af?l_zv:,^B,/_ 70o"T669` أ ȏ 'Cm= sĬZ*2_8`f؀ͣ ]ǿrPS"{CL"]0f/?O?U"iW[?tAv[Ͽ#^JЗe:vW lq^9:[H, B\̬_v?bV:Cxż{23׈6r_VA/KuHٛA>v.n 2f{YSsǟC]^(}P'?` U `U/}A > z4/bcA`\/ԗ7?u` P,9Vl _vx_j%?^ËlDܕ_Ü wl/f_'l/}z gfNN/ s3_ .BBB:njĈݙNntٙNj]&74ʥ٤orVν<9ɥw-Mf`I(g1Z`uRK`TI1{PD-4h0|'Iȇv(wԔe)iTwi5 xcfAdr`-j{52V?iot[)u 0$'RrCnA 5:3C +$C[R,e\4(pr!kgtʟ6 } rC蘔*}i:c,դ`mI1eZ Rf/_хNYuh ,bqpqUi6B*ֻ|*8]tŎZ_(ʿ;ac`^#nqSa8d-:Z| %`i\쏸$3)S|wmÁVswxPFuhB(W}+=m=T0'[-U%@N 84ʀ;X׶͇ q"aˌDMp^ǘhZeB,|~e\pXg w?>Cߞh "5Pm5eg~YAK;Ӈ$ќ(WN _J^"/e%w5ԲY ,CGf3j͒/tYŖNtaxb7a.(!@R(>*F '| ?AY`cz!A:!T@uγ(`:]kTPͥ xXPOf›L[I&%< x\ ڸ<:!Tme+Pcp1HtPR^W_K hBesbUk -rFl"lVu p ؒfΤ4ťkTS7uB߳.j϶AR&⬜BMX_~c4 W+C+%0XFֆ5ɲƙyZ5E=妇9c@1kTYz'FR5BMSE_Vq.Ck!5'<*b9-c)MBGl;Uxs)O͇e^)0'X~]fWhds&\& >mtxkt{uX69)6 dUv+Ebvz޷M`#3QQ%+c{bFON#uyļ.e2RJ#@H(rXJ}B(!S#C@Glzzd˚ }ǀ';nb&xmjxʀ=>PFH*H|:aЩU<0z꼫זm[jEVbd,Urc> oN̯&;լ&0o_9I 'joLP)FTyl jB˚6$ӖHaC(xOqBQŗ72BFm3[!(S7F72,a*a7q5;~a/9[$5ٰAkwv^J퇛D3IT9ц=fNr4Xj:j▰d r}:bFb-bV+sĂaDwHYM W$goESA DA.h^z˜&C횦?W:ٓ?*x8r5v)%܋33G,ڑnKb9a7Zw/ϥ#.O T_d1nTr6q6ˉYxsn5Nt`KٔPI98z@ D[LMz6lŁS0}yy.@٭; &V$-nyTty̙pX@*NĶ { F\au(T0,9qu{ qo" 9 a1 Vx׃fSw_4(rڀQ?EC)R$Qx^5<;"5گ8-o\=B56Lp{[6:|[ִۯB|ԗH3/0.)Q:,e~2O@qUQXHMvI,a= f 펟DrX//5[90zr|,U.8\G9X7_蕳 .(6L0th&i; ?d_!zS*i@&u&ѳUK=f>IH$oa!>yڝt{^vn]r~gaH׎% L2gfsҔ6!HݞY9#Sɥ sjQKC|0.$KNpWiyA!*uLw )(Po]?| }KZдv/`&MYc(l}m %legF⃑xFn ЊS܄Inc%Jw28[a7 XOz(R:r(6 -3ʳqf&m=yd5; \ ǬGO= `F8<'k1D-hk7RW6jc19 êB|w5>m$;HwdLIa%U ]E~MҥW8YM؋@`Y*Bn%]Ù5 k9 ,w|78l婰$- #s4΅&Sc yX~Pam0+QRUBSilGD귺u2 JEFޝ<+bD\_I7-IAєâǢӄ{2?z`34w售6{f.'ʦ8@Zwͬr liV[`QS G!SHDc!63<(SDHc3O y<8ЪTy;HX^q8 ^~7TT 04)%16 YSw$1^؎` N3v냦H/Z!?yHHyNڰ3>&yK7$gV5غG@&xw]B܇kf)EZ`2'\ӝsގz,hBAג ݾE;E>Lw>PL5|&2*nQpro1]VUaEIkvUZܧ0i(裷^G;6:U)R.l-1:fԭhb}\Tɲ To8ϲ| b7] yGT1{ɯn=P%<CKmRL:N3qv[WAadK aOx^Dn$TP&TA0ef~&sX@_U{=~hr!Tگ(]BWٓ&7c1OqV}-VDF!_E#>?N6՟T*" oZ/A5UD6SUåNL%~07K mW3NVD[Ke 1{?6U^] h2'\O>v^z:ob|w.hd,k~94Ae%Y0E~,N 4iDOWH|IxY&Nz)NEõjQiѱ;?80 P|ےdtQMU,{{ii Bٛt'kb  }'\ ~KxҌSz5QNNS|{{_b *sf".O&oex.hm@G!zlwŁ4گJ쁜ܒGUB}wA>6aJA`ȃwOIHO|S7>{ NF%Us_k!,'?w4ƓܐnH_Q|eUʦ&V,9mϏ3R6eKC{[U~Rgi CD6ZW尊(v.#\@uᥡF'>(ҧ\k(\Q~|T_E'(cF ꜣIriSo s9ꉯ 'ZXl}-+uLx-*ՋI=^s1V3 0O3F3Ss AQPZu4&՜7G(AmGhE,5z'~"KG! S.|"m5hJec.f/m.vLàA4/vx>\):oF c'},#"$} 7~rR>IRx79~wp_éLAF#ƗͽgaAYam]Kr6=Aq>k}2xa7Kr`7w.e!ٕG~S,9BhӃ.K/j<Wa,*v\3^ЅiyB]N '/H;~eEH5QX3&QbUIi&5bf4}wpgѢ^ ٳmvp:42,R|ʧ( m?[˖I֬~uKEzTzGBMހ1Bb@oK%o NHZGd:w_j^GMBX9z_E5e#S2麨׺;r~W (tf)CGv-T8;@[?)y;N7 N@~S苐#ܯ!}OOSf8@"^4ͯ4ߵ U%Gg6GeJӪ3W~|G>HUSg%o)]7=P ~էq-[5]Z,طyhf[X4%D+}HqvW" 2;6t 8FhgaϬ f~;z\B7H7~42] ib `v]_#xy_b;y]N#,2'U Cf\ja! K4dJTΫ';Z=-EucuyAN u~/f9׹ˀ]B֧H5.*T |U) “suR4~q8F ?GTT̑o(CU*wX.Q8sق骜P,`kzͥOh?W 0ha`{@(AobuzƝ[ lΌNT9Hӯ #F/Cmy ]qG(-4cHb YbH[ˤ? DX?Dd\g$BLtFIIBk 0eMgxKZb_- 52ѕƍ@P/~ق\2e) OO-7JjڧvCJ#s7OH-nU_eq7)q<9Bg=?X;O['LhJGsAwph+T'f;.Ypw,Z|T.KöPϲg*ט|k:l{otUs4b:M}nU6M1<o6lы*il7Y zZatE$tY.21Y_'ysTG2\tDO?V$`qgAb]W6S^6oU7 *o|0Hpqu}2O00{:Ǜ s͎!aSPxHvMJ{ [Fp.0S5Ըs)itgKmgemjeI!g*غ$:qJԈ|@F3(nxX&SO~aU\g tϷ.2e &e]j,0D ^ͷt5Ob8z^b5ryVn T~j!dGu * 8zqEHx|yg gCFd'VĞcܣ3RbQ Gbɒ:ٚY9e a'PYBlO2S,f͕4hlKt҃h1qDް`Ϡ~Z a*|E5U%MŠf3Qy$D:@N}XgxSH\=WxZn{>.1tg౵mlZk+$͚j.)|"O^} 9`KƕhgLYm !pNLCr'(}E@@GoϱTkCR}T˴gj/cg6R7 ϣ.*|F҃4|8kme% 5 ,,[d9:̝qz1_UT2؜pO;_L/>b3Bl<+ͻؿi=ni5oS%\v%@ 8OfzB ٥+p>0V>'P\ޠ)1S)1;n8AռRV(Ώ߈gŔUj;SV25~1=vE;n+ Ti^=* ܸfK>T72O3Pxqp3&WRW><# fJ*pIH]HqXKIHs+r;[~\MԬY +{Ra64 " ݹ ,aL-aqYk:*-Q#rѸ6S}{GY[kPk\buX>;"kG8BɥΏ=n LݡcJjHȈtDsEBi^ 2{~&XL%ߌ ư8T&S~_GSj}z}3$mtAaZ6s卑SQ}OH Iɰ+h> mW- "la OrPשJ4vy8bNy{߫V~-0v ( ̀Ä,>$#4l endstream endobj 160 0 obj << /Length1 1400 /Length2 6158 /Length3 0 /Length 7117 /Filter /FlateDecode >> stream xڍtT.)]J HЍtwJ 1C tw " HK( "!ݥ {׺wZ|{gww?D%c+ p.^n@NCCEs|LLA@ #} 8T=^!1^a1  sȃ0_@>#-A/R6`pCapd 9skͼ@!/_S1nn>~ÿZָS0kPVD ưQ&)p6GaJ^Ϋ9ݼ4e]s)nY%NݝN]1,.2xcO|IzZ:k#B*E iOYl,㺅IznJה2[Q\Ï4 p~juwi; 2reKy9]9-jڴf= oejIvUPP|9+չΡ-J[: Nn7ԏz~vxr3G0~AᲕBKZ-%BIyX+fjXirx3!a*q, f /A GY/7rO{B+yh_uwqnѴIDz}i3Y(b/*~Lr[&1|yrEa򫅧r "@-Ix=NMW^>e8s&2#o7IaќO;wOUZ@/_Gdbo̤emrT`eZ6yh2Vm_/ wО̿2`=d~ #f燨 DYkЫ亖)N+FO5ag٬(r#gC8 C- iL5m\d;dH\#aׄQ :Kߓ$;\. a7tۇ zȓ4\Ӟ9O)\Nt&",k2ӞK֏y&͒ʵHpYfgՆ"^挷tꝧmKA>%d6>_S_u%rrh<X6Tn_ρ 1^eFꉰPx5HPzqm-y5xs\Gw0VۊH꜄)idxN\#WD-1DZf l|Hz&L/a9™g+]ZB;cB͠C)Y;WNor qF~%z`SW?@DϔM7 tClڻtk6^xY΄ 5rMBlB5"wVRsc7gVB Ɛ@Y6͈J6TkQpClndJB9Xq6?}o ul{Wݢvxvtz&`y+xS]ËImdzn?6XN aPQ̧YK|w@Y5w<}o"7(u9 o Qڜ!~Eiت9Y ?@DU-iCt2XmSCu<7vzA=:zQ ?|8euAJtWZ k6h.-$clW'AXr/p$q&e]qM4 Sۡ+wc3Ѵ&_zq 9 LY?gy1C33+"ăç&WnY{\羝qKoE3%CEr/>6V|T(7xveQv۱j>fꂣL耿@/!zv/Lr]$_Y$4^|<Ŧ}_`̼ga*ZĶQ_ߌ]R _DcsA-cʓ>&Ռt+ia>&A"w+c OZ"bT1rC)b1}̣ѽRd8v>~ htfV=B" Iʌ)xXc']+9|]{ԶUEPQx#XbiypGח]/c &)& }} o3&p(}A{|br,^w'hq>L^ӗqN-]iу< #"'R2 |z=./4L~CSSʗ}VyU6l+_a|TRXXh֪]ہ?cq Eb`%enIkL *&g?V:Spȳ* PA|1o- \:b;O3P*tzmzbhn(QڄvZd*lY7̧_`1FܖEΊ窌Ks`Xr Cte̱Ն,׸;dI> O.t>ARʿ~:9W,;OUB̗*3uƺ2Dɪ ^Z(.tkx}QCƥ̃`0z~]io3;PˈX&tK&p#ad/U"F u9qg/ ċs $Q:t?r ͟gN˿+QMxϔ6qqgik{t;\+c?ƙ[57"o LZt qS/C|uBTq6R~H z2R -ײ mikf[wOa4mq^t[1^G :'22d ^d_5zMϰe[ gݚ7P4ƥڝh<)5Md$A:qUӧu2f ܨ{RIJ)A״{? @1TfWF]Ff)|^o(ZzO-S5͵.dpf"o~ *?:kYu`WJ/*%vYf0GӦ "emZk⍹2 f 9d`&댺^ia=9r3;2/{tqSG3l+MUQsT/DM(ywb?yDboʹ}ų<U'oDLE0T[4SV|<]C'^0׭OR3B,-d R[:K15f1|(zu.K^{J0|)0}(pE9SIc.뷧э%9kaz ϨKWrl읗טUT?sbrqj箣U4{f&a䇂WY7Q6%P@W'8!۵ \$lS{[(O!)=E%: <3]0X~etɭFOH#4G[n+>[ MC+!N -X3Zb+e\,9'6Jdd#b: Vv͵{G#-&g΃[< lJE{FO E3{8xݖA`DTbD9ҠϼI,A7x6AߦJ:={_.j  nӽp]`vjrm$NWq tmƕ* N oHH)ahR~^M$oM&̶\h"j&8JlsHE+bS*nv2=-4ߘE2j*uIw#=jJ}äM.HQl+ )GiyAae(_<&ɶYͣ[зB"1l$y3q"*`Eܻq$I%:i?kH`W\,`c濙OlDJ}Wf=O8}tQU=wd9yִat "2/:Ъ8`7}Ov,wCK,)[X6&$COwH)[f&C(4Di!-/aSp<> Ixc,$ёq˞WM;!LE V߄dՓ_ލlL&j_O"|ȡ#6`'hDNio +J1?acm>*6j8+EgҔ1C#pÔtPyN?u cѷuBCP9iɼĽӼ$giu%ҷwp:8;%M CQqHλ*fIe}, RSe4TD [HZD u֘>=[e㩣A64tn;aYgYcUkUNYE~:o`⻘y=ʆ?:)d{JuIpTq&$⠰3.YsSK+Nm][cBvD^?KW Ҝc0.܄KJVZ\H\ZE%344IƎĈ; V+)2%݇Z"\ iﯵ[M8&q4h~nQ'2;w$Ih8Y&n5Fud: L[mn/)9H n,128?5 endstream endobj 17 0 obj << /Type /ObjStm /N 100 /First 843 /Length 3426 /Filter /FlateDecode >> stream x[[sSG~ׯP[h-*U`(L6|l,yu!~9F ƂTjq{##"+a01 4%G#L!Z1iaH֜ʄWM mx;f/lڦ(NkC~TF t.*W:̓D|&#N#ƈKb'a /%EĞ1@,ikDb>eOYXI4b+-)T HEEbH=(/Hidz$##dID":k" /Y9>HU^H5^d oHn9$VVx)(jV%4{Z+R5IHvh@s Vpĩ&'=h2_Ĉc J&% ʁTald6MMx{xC.XJ ڞIڒT=p4&;h)錁9$EnLD+0 LF6()).܀$hr0rfX0TA ^H9%zF烳'&y3τ{ѓ/d163 8xڜGwⵢ@ټ):1ڷ2DM7!KBn[ڎgz==mHUkJ/f?ɼ5s$y2!gVMo9.tԼvtȋp:iC8e0IKGڙ'TNl9$ӍFb|6..F\N&r8`ؼ;n:۫gǿ7Â/_Ck J}Ŧ-6.݀Id'* p;ܨ3W/nU%^oqoı7p\1۲ǼpmpyzH><>g $5*sd6 .{B-B4_$dXQDث[!^UݸIWVE\/ie{:m_=+uܖcwdJvgW-fז?<\9.%y볖nʈUח^kܹrؑs[6pZ-K{u5[7m~P*%n?w_VD믾ۨUY_[oUaW||Xѭ۸;^ekZ̺2m|=@f;~h[/vgػ8>9:V O}m 2=C!jʼn+%+9W(d2<0 |Rl ')۠9p@XNqT)4d2j zTlOL1:l1mx))s!r@|:b&>Li7z~N20U{N[P3vOˢP{0$@sc.>w dV6%*j(qR7~g2E.׎8uxhK|T09qI*h$.es$<Is6&:ﹻy7Va]<Ҝ xHp'S:1QU;]^ػm \w<]#`VYzhu sJNJZ"sh12{;WbwWYMZЫJLF5dz65knVr3f3+Vu $r3h쾰CC # ^.}#szLWh z&$Jd%=d.w7pߍE_")8ZS[TW\ZDqGr5wh" >fl,3*[ush׊ʸl7$pB ܴheR,k@b\i8XݝdIhs6wIXRas5[ 9ZGF&s ]:pʚe׳k,k2fB Et]KdeuX԰nwt0z&PdCfLk"wQ!zGwwV|*g|@Rkb{\N[^MD?Zt{O˷Whp6`zh\neuq>oCHCOT> y$_ʟ@ˡ<<[z,LXw9r,'r2n䥼lDNLwr.Ӧ?&r!?;^^qKjv[wG/~yWZ֝q~`u*Q{\gu`ߝggx trMI; o#|>gߓ>>Nt}oʇ3#d?K[$kug#$_ 7NHd$9͂fX:e igN>W>E)_a:Su3$kUBA!LXV endstream endobj 162 0 obj << /Length1 1520 /Length2 8332 /Length3 0 /Length 9355 /Filter /FlateDecode >> stream xڍT6N tH ݩ 0C ]tKwwtt*-4[o8{CJUU"c I%%9^;;'V McjC0ptᏜd ;Y@W/G[j PmaG ZI[;7q- &??/_q (M [(_),p;66 h`.p-G3a23 -@װ5 Gj9>F8L!r;쏳gANwDP_`[;0 3A!E L;m`5q5s4qP-Nx0SI[ >)ܬ70L~7adǦ;Avy0!p7;/'bXNfM?vagk0{l5k!uHLlM7vxG =)/e؀0[cg/k) ^?otA6#Cp66?dq+٭՞cb1?ck"oYrY%Nº9*zt:g0\HO[P(X+K_f|=بs`14y@EN5݈ RСA"ŗ=؞5]s.tE2-m_ Mk6QCSڮ0b\*_ /tSt;mqɥ*rn3 Sp=_I2`-LG يr|o_r&Ϳ.HmwwIaIKTX˃-ݥX5rakH<,G䫲J&>cCWqoKúcUM\&4%b",y?.9d0,4ל0_5]Yn5;?ewZ=dw݆Df(-_} 6jf(À'i>cX\Q^&_cjqyƊCq734 N)HP =ձ&8ndSV5N c `ytR Ov-w'cbqe*y ?" [ c\0$l}LJ?/{H5:ss0<}S٬U9G C_?-;3~h_jhHƜ/o c9%=݇y`ekS,{4y*02Ի k݀ 3 Q(?uU}!M{6Ij>,;Kʡ&BVM;vwz)0ܧ%UM@f_ts1":+e{2@U(r6i8'Oq޺΃^>RA 3sVDsXR!`4}Nf4uXV}꓍ɇ_wj~PK xZⲐ&HB)b兣HhlE y>9av$/_ &h/uǒ}`-ȼ hCX}:󖃲׋UE~kf"qGW1~=eF3gE'f YbŠ~6Q`b@KKX1ڶRmsi j;m_B;:޷8jrGw (QJQWwflk2Q%Wqη PN*"^ {v͹>;F.ŎHGG3ow#)  HW[WP:+zăQUzVtss}|#>xALDH ȹAV?.>1buYh?F{;tjMnz<٬Oql>{2J-bx\Ǟ9@GeI kT L^`*#)z8@Oks}e>J)u Z 3>c9=jV(O|6m½_5 QH~p^w9%R z(y)Ip(:fLSIzTge^kZn[xdz2YF1B1Ci[60x&V }iޗbSoU_NyF?MӂnywRw$7ڸp+ D70TbV 꽶ҫv`Ռk8|-o-H+gHsb4/iB[>hw\4Rzn ۂoopXWNVoz`9CPa]bY?£hjFgN{m\۠q\(fcdAugW}4> /ɂFP`)Ɩ|^ye6E!סi3,:ob8jsnU{B5ǏְϠ$RcDA]m.y~n{-WD-'RHn~QvVؒjuݸ}TW-h} }B˫{xh]yegyAP|3/d6 Ui>UT<ᯤ IvR.$`m!͍)SՁHN,ai);{-TTצ@vLr@%| $l0(d+N={ p[..7/7U >.P96|j TNme&P0(G>xjA/VIihKsY>aEC1f&@GWlav>EYO-xX6n Byz竉X$8R>)\Û@wĢA*B`*.%A{$hd[xA9q2C+AFtmʟQ(?X??:o%ZK!?]{ЪQ_"gCm2A/rcVXp_Cum|~',ԩ?^W ρ16Y+9_w6b@Rr.48Eŧ3RT l^zrޗ-myep."cMD*(z 8v5'ubn,\LL-zOKғ+ߏ^i_\-OՍ ND*C9Ӓw h=$={JT3JTBH@Ye-ؠӱ%vdEf6&ur6]YT}ۓ5wĩ]b| qTo& ;R'40INeX,O*}t\%[uNZl?8?~~A!dm0v`OFhA'2)71V/ggj3۾xH?'JAroPO}r\NFk淌^=sUL@S |C ݵv_yUT UXlV1k|괽4~XJ_|8'/a$>FEo?,d~%GQ\NXvp 1qI2-M4Ll߾;8*ptH_ƎuXcdJ/y]9TzN!Wb6=NU]X! nfIN2vˁu{8XsИqS\ˎΧ}ff|"FL7s3Dc277C`H19T)sW Sڿ:8X/k: vc4 ͨ(0F'~H6=/' # x鿒 `QX?%2h_ŵɓ3B:VJe1ѷ‹Zx3Qj&[& #U8UД}?Slz[/uƌ}66MedP. bX3ɴ1` aڣqNAU+COYv& 䙴$Z*CSܝq*d'vɿMk "?{M8&-RQwlʋ73B1zЅ+nQiKFĉ*6%k`-Z#D|gSsULKԵɔg˭Fq? ,H7l*L-jҿHà|8V9k^Mk,zsI˨lM "҇l3)x:dAܠR ef/ZBu'HqT~sfkzܢ12SHbJ\q~b[Tծ|p/xVVS]sjxJܤNGmaE9rWJ?+c.Eb;%wOxU#JPNja-)VoӔ9(ho|u ^?!&r@Rz3w\2ZƋMys]\&y%]HkpѻxxTt,U*ababGo5]v"<_*w=Ǚ"Fr1latnhxS *hWzV dyW RQ)3=Mi6q]qNK| `GqwᜄmVջO+HGU{-,Tt%/'vUd?{.jr\|9O.|,|S`9}5&Bw[ bUU U ۴+Zp)rݗJz\ RqNzYI~;ЁRE?ǪD"TuцW%G jFլŬLuv~2 PEE!6ژթ/v;+{_$3G۲ӈ0-ȊQţKؖ _K; r=gYwV{j*_BrkSuiTҜқ},7<~BL@vvZ}%lmIpUdާ*,13Բ$d吼EfQHlP0+D)'9ߟgI"& +i|vdOX߯j)u-Ѩf""EP|zk~5yhOŭA4tU>xINxy/zn%C ArHUZBϺ)qKG>Uq.\~> a sA׸ HtHԐf$1<9_KSa7rZ}I j"_ Z(L).}->,Camyyq[BySn~)[sq1r(-O̓ܺ٘ib?y?FZb67Yx w{ YB> stream xڌT .LKJw 04 ]H ]ttItHJ7q}kݻX yy*2uFQ G3 `aagbaaCҰ#Ri]\m0w2 SN f`errXXxх ancPd9:]\lA4@kN`f jt17u(vuGs ?!hA '>ff&S{W&G+!: t- ( am\av6@WNPU(;6VۀOoLW MLl6v@0uehj7u735 % 0Oy.6N W&W_%2 = v/'kqUPV pp5^N |"~6@DWSw S_ 1̀V6@˿1x.6}X~^v^/蛿+W'& a`0qX-7èC_YKGlm,?Ao,%G܀yr_QoK IKQyc^Z7gM"keACu6R6@ \ו8U]m~=V/mWJ/)%-~' UK1q;ځw$$Zf? 8%w0q2C-L]WOׯ8n=l`m ƿ!'//\6f5 ,c[giQ#s]\o2`g8V9_Y]vp.' e)_2c7`Bn@׿,./#haf.?YMY[ 'hoetcb 0B',A.?InCuyx`?{_p$oߩ5ws +|2zCօֈz0 NSh1,ݿ~LWr-<ԃ%I{%Ds\*%I8AmjqaD~b"F ]'g_@[fN9\g7*}Ҟ˖GvTw˾1hF~3˚#1cDșx!Kxw^䣷{7ZڅOG }1:E#";SRuY4 #>[FZCcobvn2 +vRmi# 2vuq&Ha)vm#/]wM>ΫC_o>5oui&`֏\Y [b1,'<š nBpU6TXA0 ~ Rz1g!5Ifm^dq4u28L^ gEҽ;UCA^ox N*5[9 TɶłCx-7Ō8j{ߡ.U9MZ4 fkXC̝̾1U[C~kуLVhQ_@DQ/~;Wڕoi!3Vc2w)ۇΞ 5n)!z翍mLmQU|ksFA%PoKX|l!ZDT1v48 #F񪝝KhHPXJ] \RM,{Ҹ&*WXW]k\9dO!*Ag_nБE[GCl ` ťaK摅0բӠ?OCf]APps"RjMNv&]D1 qA[*07 i@ +K/|ڋ@ƻC?熬UxPS!}gҲˡNa|#ے_syqܝb.Khއ9^KP:9; ,oL+xCt >zb$^˴#izٔY>VqɪPR=hbL]; EˏSQY}0OcpsW`>EJ_߃R>9^&W ǜodfUZt+vNУ=i2B@)p|IznBH͓tǙL[6sH1Kbn;Ω!llek*'aYT<1)8\ )^\7A]KR(%!x ԥ5޷%x4۴OmJs>ש ذ6 ]ԃG}"ڳax+fT,&釯֒-zکT$HDwpN81ijE n|Fh)Zt` R!Bx|ѻ4piB>:*"cMF_{&JhGVzW[k~c &Qf=c΂:#݋"mUQq~R_iUھ{"Z*î쮜GN %-F䷧E>lϐwөNNQ{TtYJ~;[bv: 77lqD>oQvHD/s\U[eY>GLJ7PiϚHbn< A'>4*d~6QJsthID1NXMVxܘ.ޜl-_dBtl^dIu Bf8zOijXB"7%8,!zE=%Cx8}B⦄bV)|&J2w`&.Pi!Z"}⹢2q-Rkq^V?ffkW1@tI֏|>*lդq"G)ʲv)vy#WpHJ#%;>EGWIE,3WC8<0Jv)gشO1ULa\']5v&>upv5ޫiZ@ƃ?[hgH {G AWK,4*QlGEiJ;~cԇ յR5S [Ow2ؾIt1.9/wo7d ȧnYSӎ9ny˜ظZŞ.\O"X^zb2 Wm%I7QraQG{U4Gxs]Ч&fD&fjy8w^7SS52i+J€淅yd~M>JPk,۞SiY: -lCeZ%:Yp.wIA3:#)7/n:"y[5$|znA~=`]˸e PTѕ.'ᅉ!2)Յ |6EKx 8$!6<m;s%qGhir:ocՒ]?uJ5Rz90rj[;äqQ8KBD]:E-%DdU[aZ)Jնw6+ۜ'lJل fK?Ñ-r=KEשW3:ښO~ M} 1FHfގ tF)˼Œ}?Hؔkr{]hBH uFZ83M DxL$/ !ݴ#Vhyd;GmzE88O&>oM}܉LZhdrkvUz|>IV ;!.X*Bd5dl9#WyP^$!Z;'{Z5ͺ':zP ʥ۵9P[2* xvp_c8͐3r"ɶI0ɝ݀=͘VD袝#)wN>՜~ F_83^6,?gcF7"set0~s{kYfkMI|_i(rxg`YZcf[TR4hMƭ]vy7 ]W|q1K$ԊWI tCƲx,Ӳ¡ ^On/{x!}:VCI_7< `diS^ޢq*|*2o&LԜhՍyT7~7Q؟y`"4q"8"Ş[دOjExœ5`b3x%Rz<[ǨdvAA7) !r͹i.ᚽ!OS/v]cSY_+Jƈj9&ubT,x>7ԗP䟬v ~52x|O=:Qdff{H#9B'M6 1xzܩ4^L{զI{6Aa6ÞxtIgc]f?MQb$‹4lJQn>ajl';םw:SЛ/Oo0u$> 2luM-sZ%'ڇ=}BLmQt_MnDgs+<UR%{:.{e*/N3 &hnzp-bWH?17: ]CZGVTxHDo9 "BoM"^^7Zr[ZtP>D~G{J-HI>&=M1Z`h& ? @ a"64J>hIK~A>W x $Yh8O$E{`aM3\iNw;;hN4I)~4%LHZ%nsI.a cS=W:ݫ,tspRqL 5aIB<"$'!/otb` =3?۾ ~Y??npJgxvCkfF$6 HjΡq"\ = i?@ ˲L7,`ßk.y=rۖʴ], RY+A z,ʼi9<÷n񖢨z;RQf# cH"<4wyd8n@74ȯOa^3e٬}ۧQӸHl} s-2 V>T-{Cue!]5U?* O p^:=>>11C5^廀fLҲkZc1uNްϐ1es}5~nj-S=*n#B\*{u¨q]>ZȊ0G!2@ry؝>EfsЏ3ϯjDUI~6*yʶ0)ݍ[Mr=X'5!0o>(~3J@ywhdQM@ҀET1ͽ#֜`V}Lf>_R.j7P{5D'-Ckwdʥ^ȏ\Ŕm9t:l6@~19Ҁm:75eG72 %=>z@mYC`dduEq"2K.^pesj*g1_Kez0k]+{N*j]rW"r_v_#=rzn}çe.@wj:fSTM\x[VY!5UtM@6 gnayV@.#x+bծCgM؇a 7ٹsR¨1$RZ0{ ;x7X3M1ҵE?nbUDtbHuJ`Б9$G.p2: bKNj'F2˪ԍʮ~P!LsȮ1h3A܈9 B lΙFNu/c<*n\O>]:A&V:PDm/|®P4]šӈ/h к9e5Xh9'$oox03krآ;+0~F, 7׃cSYy;T:Vrc~^!0Z ߇1唝3AFvf'ȘO$Hq@-)څ[FsO],J e%R  RA1=Z3OvH\}>sb*ڐM;͎aVtWS;U*U,n|u-"1Q}֜})[rø0%/ba)gf$Ga>Hmq3z/{ Dfd]`a˳PZמr@L|UK[.Y53EG螨(%;HJHW($ѰϼϢ%IbJ%hѺZSǰ?1`3,"řZޔS{'7pCI97aJe^~\ql{.R" TR"8PdY1-\n%z۬lZ6N;D7ĩTh[y=x Am:{lFiz[z0d>lbe-Vafo,UoNȠrU5ue'CSPȕDT^E  \g"P2qq>]kj@%LUʞBdwkXjKYYcɤg}ivLOߠ<ߊ8w~f69`a?-i}DM9zڣ\S\!3/+Le>'v6 1gBǷꐴٖK7?LZ,ƿ"5"rCPM6ԙ` Xg$ʣ4 ) {s(_6篬aڰaUahvAh7f]5y]J T΄NPg <[4^]&%F;U*9쪝JȱWh{%8zPQ7tko Kxp;%2ׇ0$aMyjZW%vW@ep45iq~%ߡ#?}%cc]~qa"}~YD &@̸m\.u>se79yg3I ;EV&kn輇@- E WHvE:2%^9"ьݟۿ@iA-{e/!"UG d pR'06x~b$B *ڞ]ü,9d3mCȩs_}եfOtO 7 ;ܗޓaW"m'oniTvHJ(ωr~ܯlSa2-+t^G'xk#ש*W!3/H]5Y .9{>4w.#o#8J*;W2BD_^NY!&^ Ll kF,ZT@vuPG#->)#lrQM2tBlv>FZl!ĈѮ`yȸ&GJu3堩x wz֩rdI8*'E*."t>^JG$ZۋpKPߗ˦7/o,jmP: 2r#"R̿gSȰȕCLqDyS/c&)nρDHUނ]hrÂoWu B& ܎dYxN%<'&XVT`,1b'#]aש$Wr;|}BыrdָN{)E5 ,ɍH`\̈7 W/{tEl(6eq-pya‰J "I6!=&x`y a#tL_~ \7-Ȟ~|5=F:A$2XS ,1$|`]\3ˈT'8]6rqAYj4: 'Ē(X KYcTw3J/AADN:? ͫGЙ}ֶmr]3'OW\ymG TG'UIs^R:ըI "t%Q :+6[_#|6q31 MrڣQz!44#j[mV/1%M6{SA!*7\oSq ʉ^+uLymtޯ67GՍ R4<fTv&W"^=֜ 4ǘؖ ?#5bIn-A"rGm(tVjKnVyu OhV^H8CCX7濡]"i:Yz0Nҕ]UڛX}Dlagn(wǮIϽa5)cô'~,zi'^Q^.>RQZuQg=N Y/, y Z^rW =Ś?PV\#>ֆ!%! o}:ff…=eKd@ZDद<0?nc CZf^VA!ZμoKdv1kڤY9ԻֺH޳!e$ Ƣ KP56<( E̒E%mCAx4X'Yo ϽiL)E*0^QM{9ޞFˬzLȦd멻1~5/׵zZ(B!G:3zgaaW>Y:+znv 4Q}YI::DW@ 'ާS(,ۛ^B4_zd2e,Lko-c;,-I4t33M6"g&ʍZkdRb% ah kw r,$Q~EG}y @츠5z%9qv?sBNbyˏޏ(4D^^+&|E.kn{^QBר,DK1bNTd| 2vNƮ[\rBޑ.==1<uO/$f*Z ՛'/K4? 9GV.QA}oh)Z x@yDBCl/Bl1yaUL!1s<G7Yԯtȴ^W+ۯ;YyG/6c4-ѾYo3y"ҏ1wo,>4Dhϛ}b(8">"p=L Y4;SӐW*;zWWNZa'g v#֡r>^ZqfC)! פc|]p{r@v#ׅ pFMɊ`Gt,ێic= ] DY͏:aH6Q= L!GP1;[e}ʳ5Rųe]}cV'YXRz,uJGսrbRW\r_>tut=a]s=!+SOx +gKM~2X@O&WKlJV5˄Mrz,≨^|*1k\L&J[sN[Q'ṍ' DcY(IԻT,2'fKR?T4ɽ(]eGRxUdcW{Fm7DP"ݝ3Åb] y?/Z*ڬ|-1JjHPX>}j"OjP j /r?u֌`[poj=k|-{hA~VŲ*BS0+ s+] %2e/wm\j4]va!Bl>'`r^ V bF/nô<+>q+E@73?0`[]{7ʞ0L̩ dAϻpl"6ĕ~ߟ%T0ȣ*~&IRBjʮ< $؟nW/R53v6;%C}5Ѳu%GEe{7k ࢥpSi^də-S-N]ŭ`F*5 (ˁ JM.m Q{Mn<æp?I ?j1_X2C/Tc1"+DUѸ4|1 @\ojbW𕏪Y_⣳mc0K,يw o4R0o7 muj;c=C.j(Yuy"_al} ۦsl֫*| њB.KÙz_iNlhMx?"O5&L%Wz_"VwxT9=t¥Lkt *:.g}X{0?RpOM2K8ţh]FgXAecufxA5%SփWwh&0Bon^o275fp-XJ*^;R#\n@돸y|7෭ѣ$tV=vtmOwYM!4~ s #}̝]ml:{~(ʄx}C_ѫ(فPW5Fmm5yr@ :wKXrC8{czl&ЖdPebH75W؏ %}a3i8bd@]|x+^="mN b߫=AQ!U,9W|xnAL I2!SW~Oڍܹ$O8T{P0K@G7gmDK?ClpF㌜:yZR~ZA6jA7`L?jji=cVZȢآ.U7)FY5)bՠA !{v%Yk5mB]- auC|wKk@ygrx^ èV>a#&!<8=B5TU,R8LO*Ki=㋜ ӴĶL>:˂<2C0 u}g@E|kH},G@fOsbmZT'䋍-3z.w rqvb.S4嵽T\(uݧDqFz1)Ap 10uzr, JQo|D'Ad¾X)zupyEțlm}U쵽EMw+ .INco)|j[*HU:MŶYj:nL"'rZ.ɺc۪!F4Ma4K-5άIID$Wm~)t72<|+o0Űߊ{U.ʝ S ]يx¤bD_ ΑUh\[NtcuF}6DŌbI[ =f>›-96TݙtX { ⠹CiŃVlL`+ ,Ox [Ap#L;RMcMhbTF6m'گKiyTo`DCVhA81w"w}m+i<'RJ4B76Q{%Fdd~[^!5o`x@-L8A\C˦v?׭HO0$js Ѥ1eCW!i'hX\B˓n A FAEqz {97呓 OVV?BA ,o*[5P1Uyؕ8ݵ(19? 3^w[Gbn0,U\ڭF8ba@,oC6t< YT4OۊUkyC8#/kr V <7PnE+eҌLdM<足 :4S,|xE x|Ϭ7?`}>འ&=QC|FMGG&ٓxHs+_7+!Nz|l\=tHBE)9ǐ W 6L(#!bX]"U1P{ tXOGXW8>mx 1g`[YTÏF<7/#0o9Y ~@V? `Jvr/D! 758tL)a`?qȝ/e<9c. 0!r*Yyty1s#ڨVi05$Q1cA [v ~8GE֕26(Mlhw/ξu޺~M*%Ӏq s`Oꅲ'QR)@ .oBG-檌HYd9qc0KS]uh}cэ/9y!DM*_/|C*. TAZ_ea\{MSp[Mma5uhs-:;N:\żJ>fV9;,FQrj+AϪn' + 474ƌ.{UMe$1btE;5:rE۩[izR en4a=|C 1nj˙.=v.ԁE!18K|`z2+q Lւ* ?lQ@5_u΋XsLe$< a2ԣg$[(7RY0sx@:sِx)-؇oL0S)&b鈙k*v)¢`S`~(@W':-{Wx* "Ժ".." A(_U]I$ #;|8 lo77JzYx^0ehJ%Տl)d9]ΚʓaHIo>R/c_#:8E*e{$@&$kFEVT=6VKnB5SsrZ "Ck0T *}ڡ]jYɩ385"8jդmg}e 2a}ܣYF7ڢpfךk EbԐf݋wFa97##MpogDA賂+$V50vi+.f9N+&a 'vblO H/*w<} j3 QGGP,AG&BS"i.+Ù:avz''YMD7JCNJfRҐn+35pHmmH5P,if$,^+&Jӡn,1;,#!0 ІE!{r@6JHG ѿ9Qhkv(RZXDGFd*RB " ƹTu*@c*Rg& TAC7!.kL wWI,8Q+З_(e>w=[űLdΩD3v ܬB']Hz>(ʤٲ/XFhg LdKMàcp9o?PI9,.d =(/qQL-E8p?mQ_1WzLgԹƄMV,TQ 6R&3r1vZgm>agAK|)AB53,lP>[hŔkGЧ3PPEJҼ`!|hcO+tC0>j @r%a R|ZݹbF&tR9b)LƵ Hp$Ca,6iM`'L6tF_6[QNJ"Zj tUַF*%hvL SW~O+&2wJa΋c'fhco4}WR M8եƜzvʳaDxOyGcc,Js:>>jo3"O`T p28/lf 44./5:C5,`[>ET0Z Bj`b@ ˯f~=r褈s҉k[ALBHyZ İH(bESzS Tܜ/2i|LEխxaqU,#'z8(ƳH3'l靾m | $˗\ kϠV2ϝ*)BOQB0"ڥ3[NfrA=_xV̥OUBdJtieo 9w5Uĝh,)2n(m5KJT]zdV b tc2{")++❲zUF -|@tᮽ&ڦK_1g-qق)dE8W o>TYwaYBi& dž+kydN *JK^7!OގI8l,7g `w9)5ۻy,AO8B+nz{doL8 5҄Z<]c*Hk1X;y_K][(7xqVmDu$GIRu*:4OȰ*D#l>u9^zIߏfNA:uW Oo*;Nݟ&/hqޭWJLK.6(JH/ }Dr}7ǡIj 3MFH8 K&#V C4k:M!^ϾfbnU7R]jip- 9nfWs|ށ0F*rK\X>:-+Q@zdC!c%o4\l/ JD, t(4z`ς $44o݆ , Dm*]Rm }*0}0,dET{nTۗR> ɲF߽Z`&˱aL " Re'>Oۈ\mP/÷!4xf)# zQGǿch'-OweM/N hBu0?ȟ0Cap:QPPZK&xO a%/{MI1G!y#LDKA!1^.e@ɤV{mE3[H9CY=%Y>w r]mewaqA B-rP#x[LNہH WHF-T y\;Fv({cFL4;$?q(B]RYg;(v?eu(n?D@%Md:Q D/ީl]$,_Y+^S{-Om>M ZF:apC)K<+{c8w Phpۚz=XhSP Hu:ifۂlg%J!⾽Zrzj!-dB4L= )߂a&&If L%E7`_+lrEy9;%a^U:wc1iˤVXʏZ;0VYRzB'ނ}} +~^b9tj@ٙB.D^MKpsϠ|䍬Z|@MXi R$_ceؿR3oT]=efV$/?Wee ZR _I9 S9iEbs0=ǦAAy>WF/8&J{Fiڱ0k jIaF%{?zs+b?cj4y2aŏ$a}8P#q%S[Ր9xPݾMtN&h"Lm{]hӸr&fRS 85ڽuM(了s_ՂsIφ9ؾY ǼνqaI$tJzkH2=Af&=I2oX/nFa?VE+"^K?ٹlbq (lқVVxY2a6J?^J#:K<anÚ[Bj%EǏ*QttN5BpwUx<M?"ZCWDâH/O׬O{Wy(7,cPiItR>2&hw'Pr0[{܄-ʐ [jND~L$)@9MR+M>9e.o t9zaJVHKzT x!TJD`ͯEhv+]":-GZPb *tjx _|^ݵYWSHq'E Hof\W16"YڥaMU\>V(6. V 5xT3"!ɠRd,4ԕ<[L,]B)D'(.!& jQ\"=e?:vJ/3;b*g %C:Ff\C `oAz6?S@%>̜;GHeyRj4lT#!MG8O+o c rOeE%; zwYHNn$׼W_цx\J0f{gM~dtKr:7k6f:v5zNߪ a:ŴpŒ:YA0go8[CF̻51,ߡj|Noo~0$OalEW!V\"BĀV0F0*kTkxOiƔUrE3.K3'%8ϲ 8•$I_ Zx.ɛu)ÊČ@ "MSSCu.bmw)a%Q֮4ORŪfw,ʦ_|ꐈlEwTK{e+$٩&fhS9T 0?}׻A0r߯AY09O-yd`AYV Q`pLz[ݔ#}#fv+rSI(–E(;QMȿܳͮԄ!S[;b#7Zou^1_N-•GXӔzBAnK'&Ȉ1P endstream endobj 167 0 obj << /Length1 1732 /Length2 10036 /Length3 0 /Length 11147 /Filter /FlateDecode >> stream xڍP\.wM@4и'wwkpK xdfUUW>׷Qb27:sq*\ F׆8ۂaN{ a`Ldb(x\\@ =L rT8P bi?&3f);0 bT@V`f [_!D998@vN0Kqf6 v\ TAv?;@h[Ak[8``b:=y@0Sr2@ XO6_g;_޿A8@P`^)s8;@P߆ [''+b 2}2r_9 NN-rtʲPsi{;;0 w}2=8 @-~7a8d2y#;@/YqC[ԁ ra.`+qq!fS%O'1O4|`|1_N]yy-?;[;>E ? P {П> vkL3c? `o|@3p#(7oA\lmP3Av[ 8-ϝUC\W z)qzqCͬ$˟rKf o;?2y9 8Rjfo{ø  |"7ipw~r<(?SO$ p8AN?So$ =ExtO?'sC>'q)տSɐAA?  >'W=tGԔ'e/Z#+Ostv'#Sdx* S_4s?Viܛ`; maL$غ6F܍}{Ll~[/kr\ JYޔe\uR֚v}o9݆6h`@9/GoNEGA,9mj~%Ih3$/P)cO_^Me?R+ƳFzY㎹\v"#}CBx72r"WI*l$yct=.綪5l̈~\@]j|]1M oɲ⪻™@ZQVO]h6sV%Lӊ0F ]ǀm9xMf!,Yʖ ˌZme!SEp׽M[ tΝQ's;R#$@ݚ֤ltVwDu.WB-dѴIi9-< Ɔջmnhe:eRՕ9QccnG]侮 | [W y` ;׫9t~l(zjMZTn P}/pR+ Wh^0YYUҬ;vbkQZF޽#v)ưǛaKf<"Ǐߩtk}b́V}s^~~v(3nG#nC C,|? áQ ZGO3hM`w#(+S9'ucq 87Rqoׂ9Q@9~Ǒ.Q傚9tIt)/)+ZQ.Z5mW?-]jz7L׬XQBrO0˙o7cL,f#FC~YRmSE8:(V2I>aF)ѝ,#@΋o9,N_}^A%$(0Z9u|ILbGTQVS JQ$5("{5pwk㖃B_lun =i `w,ԫq3WLyrmPt_]bdڕxMŬ:l欱0(mi:b=I. ޟ4kfl>g2~`_K/OpVxrgɧ[YD$ׂ(օ;Y?-VYW] H$mtOchA,~Aה@h&=RQ M=9BEWQڂwzt/UNhj.pz"U?sՆqTo\u.6lսuNZ3)Ah+.czR)GjR=bȼ4>'LVI@?LDq_L").G˔@!0Jm5iP1:Z+nWnWR89Ш1!w*;a}Fʉ5N<2٦52BYldwlX?~{.5;M%hF Nȴ%j#؆Z-T&0(ϙě(Orev[p(rPT0"~E$z!$HU  C%2~v?O;zqqg{0ג*&1=z 2l A 79KJvtBeGZa$꬟_toHϾ'}ɨy5Hf= m?ERQ~e;IV{h1)}*{*fp9\ +%ƻ!נyR~@"DP\EQ$Cׇc+k/\>p ۖKU+-VS>05vm1?9҃<&6,LUY|LR4:i{š2ER.&ޚ&TIVcULجgȡ;LEۧu9^% JB #e( ܞ؟)g.52ˆ_= Q?'7YМMnjh^^rN*CF+DӳjVRiuFxBSq,䨌 vSU檴Ɂw@94!4XNsP:vrem{LjnuOCˌ?Xɫ+ ԚP IqmCтCUIiAp?ig=focjQlhzCyG aܲG !Q8{lr=1lA~{2 8grZ>;|C{δ/ϭyWYMTnMB١a{H  SJ|,j0?h[ݒغv 3L9H PⰎ05#cO>JsYgō̾ʾpfEO\BԨ*E|,;kIn;G0ҡQ3t L:7φvMۡwq4׺sC&R1}VUxoɖ8)yf:)r BjTu*FQ1,S׼%[ǥ|VqҁH8 QÍWx,taUB!1m8,(%?r4,S45vpϚ"^W&Թ٫h SWudh*bOͮ,=''abՈ>h3lͯ\7φLQtNde$pHf 0SjM萪+U\WQ)B0i,ian[P`di{!6EWʞ#F sWS4B븨433s1k״V.+f3n}6m!`gmi BrGƅ'b7rPVf'R*]";3raBv{\̒^t$Q;U>!%<& d CW] CvE=0p𠟆b#ap-R+AK| e k39U -s+q/#^uEub, 05:NL?;2^_ ^R#N9pP2λxM>뽃'Āя& mb(EhmqD"tP$iŷ =nտTY}xOX"PyvmmgƓM|B*K> <1q#3C*IW,T݌{m.9D3ȇLjO:"Yq^h{ѕ6*k%_}_ sUGLyۖ]7I`X!.|l̽<8m`}OQN`.PuTPâ5y5qzFkÛ;&W8(?u\Of_FwK*F>/]R3r,ӟ(%IUɔ}[+7Aj z \ Pz<|ȉQBwG_? ?tdʸ9(>B|>f5GI75_m=}1 b \W9-Ev*d^ wx('FiC|d>Po.<.@A%R<W18/WuJX[t(ab aqUи_LF9O`"|dBO52T@P*Vf[&:yNcGřԻuLzzko*lV[}Z4MuewbV 9W T|iCy@Y ڒBg !mG>31J ysNrC^1a:<31=##☐5- Q!մU[yʜ^c'0v_XY)K\MgAjS_伯kAPLL!m7FA#9rƤ@ :.&"s̚ݏVv!@6$ {Ϻg ./Nbuhim~>NiGLK>B\G->.;k0=K)00v٩DГ#mtE:r& ]\Wxy{{o/SU}_~s[>V9/e{֢]u#O|x6;dڧQ2xv\{ 32؜MZk.1p8e+ұ ޠDTkp=2K盆mr`K{ܹC(K1vhl( c~X⧅11=gI6FuY0)u^9t /JƒP2Ŝ<4ڈfy r1=2ĩV}sI&v(jR[^K3.emϘQ,RmegY.m be] [LU,๹U撾`n,T /&a.JG:v@zbjOɱzb1qPۻo깦]&.JB4i~ <Ͷ7sM-?*sަnϝa&t\ ox2l>Y7gKk|իBűl&$R3öNnVK#\.:Cpocުccz eC!pW7A$gETv2-f2 ԄE҆h.kG'ˇ{Pʻjsf(S^Z%&7j WWe/ 9sǦިʐSn|"!;Q.7IipJ54cFrfח3? ^S7|^Anr>t4ݻRSWܜ:g[,2Ä ӹ+̈́t/ʵmzN,53i7v[jBIz\XTl"3Su󧻅*{k qyNf/8PX%;"Mve~+tX &XĶƮ@ۦde1Pwa§5甸Ӈ8Hb[p#z D^Tv:M"M䛙UoVp_#jRH ھ qx-8u^XYK)tJnLA qAfZtIJ3Dq.΄Ŏ? ^fCPec.5t:{jzmt MP'jBQ~N.5̥DTL@}We@u_qZ^] IH[+VS7Y'ls2?R!=98gCSj_qwYhI>.j7;읰<MkNQ $~a|e.b.N%8qeb zmYnqGݷ_n׾a_g(?0Ll`iEI,FΪ?%Eݩ |xrщ,4L睨rhW1o _†/>x6x8d8R;&vݝҘMby~wC Lg{±Yѓ4 n`OLַsd ݺtҷN{?,O:*gU% _A:) Wu[ wctFfKbq圏K _b=$R$ާh|uLteyYt{h:X&Ge2PtIRwE_Tթ^p[Z,^2[Mgݺ}b\WT ^.}+Hm`2i h/͊"7jjƳ-9ݩyIf'G ~CYV/7CBbݗ$zzOV⾞+5>I3~r,wJ %m'>㱆69{k뇴O ^Xmzj 9c͈` RRAJi/i.)BzU^C\*?ʼn#!W`n&J !$ũ}G]O=K"ɵnbtWCR:/nND7 !A3/DH%?Gg鯇v9;Mo`1|Ѷ\d2qS 9"&Kn:^>EOeF>[ "*of޺<+ %jK_i|ꋒ6|'PY: kS]5}wXpײ |Q-OV4Ŏ6F➐@ZY^W3ߵH|i~@q.lҗ+<7ɫ~{Fc~8VubH m;ijw+RVI ׇ&qĦwH2FOߌWgXTχĆ*_sF[xRʴ=YzdnX ChFwsȂ5sl|WnRnڡb]Rz3<%u;Sz;鯛CtqyWfߦVW8~̞I]J~!PA9XޛNfOjӃėnd)PN{׬ /0+-mz$BP X_4 ꏍ-ѺJr3UIQ/1ƽ^ogA zfLMSؗUټNKur=\DI^f?qkkp^>"u1E|QDFyha>f lZ&(ݞE#OfX ;fޚ=R4w_F.`1F׌yj#cF6B u(s܌"Lṅ e.P&>OW'@螌(vKk#F]?}Bd!ؠtf"K!2]›\)WCOBʺø3rn3䙢F6?߰4'%R-䰵b*P]6b2jvͩ#]XMχboRշ>i6,DŽU&%LBTS-O9Vb<)p"y^=}W'Xfx"c Q*UC>fK}w^u95}MDRjrsQB 3Khv#\S7~a5tl /fdWinY4o&u|[91T9q}Ca7" Tgj:օG 㹙 /Q+3'gqKH895\@5OǬɽoO , NtXk qI+'}_,JL׫4f\ܞԌYco0=Dm#=' /A3LCAKi9 Z1GފqM SW,,rmrUXS \xCGk-å0Lwn~C^Q l)g'<4JlB$̾M JxR+Ch0, Aw\ 0vh Qd?͖ΐִEpݪ~,_sMo>ė"'pj,;1ulU[q]f#ە+%N<:qDφ174m=;iD3 /JPC9r~7Zj%ѡ멧\GCcCMèzdS VU"x>0ޯ} {ܺ_CX.#{Jȃ궯,XzV 2+^g$Mrtߎ]vG|ėw/6NwCP:60S{|>f|8 dty<&I͢`L,"GER{jc K\f*G?;0Ƚ{K!DYhfcF]׉-2 ?QY;\l$,p.sŻa]etGFf&Gj[nG?XuI~Uh Kk3k@un$,@;/taR JRCO0,xQ*|%TmfnD*8Mܝa[>kE~5 !d ˦ۂAKuýM*R$]1Fq޵gb l>  T4r i|&]^;k5i$fG5 r?|k~0<)kAm*%Otj-u=>ŕB@ęxz~1c>/' ]ؖ ˜^1 >\$`Bl#yY*_nU\>/^-gNblOj#EhٶB]41ImH1D&QO:)jZR51rΗۥ wq{W᳑;xi ^~0B|If#g0/kߝXB@#n W/#LНI ց~"ȶ@5pQN}\Hc"_?۵ء6%kHW6e^El~zL 躖賕;Y(-%ɛ=Gj-TGwk+|HkTWTo#Ĝbk c^UrR=`З5P>΅%X)uy.7#"r E,xT2ը>Ys/Vs76 (rll2'Lg@Q>.UTW#%56)je(Giۼ"q endstream endobj 169 0 obj << /Length1 1716 /Length2 9854 /Length3 0 /Length 10958 /Filter /FlateDecode >> stream xڍP- A .;h$'[p;3_^ukm;wAE$j1JA.Ll̬qE56++3++;DtrArwp./~0@`gge0uYr0Jvy)Zs:Q{ P4uڿT47CA@JA+`lj qc\j@ga=Θ ?yuB؁́`W R.PvtVӁؘNWD {S'lR ..SoGS;gK)ᏓDU/ ՞řdEi^nYl!]~O4vO?_ q{,A` MX:hA@Y\^(8+ t=̭Y~tadMtqX4Y_M݀'W׿  s F' <=6߿ _eyJh2611 p|;)S* <-n?_A\Jh܀,7\0aMAv9hE)6ϙUZ\*b2`+,Z\̭˟!*g`bced۾lEa C,~O;7EH\\/Qza 3xi` qB<)xY,* n߈`17X܀0VĺGL_F(7rkxñmu9rA$2EWi8J]aW'aQyxXoƙ<>6c'mF[GoD&4Z~{%X=gh_aw߯J 9NR0Tjc2jٝlijtm{όY2 3N>-X{rsPbX0*{L}ZNp o\jQUCs#Y[0r얲}rF5$Sg{pO3C*?,Z\,=1|1tm{ 33ÔW'̯zet1jIqKI^ZTYmV!I{Īo"GCİ([V1;6®:/5%"WSfGOT<۳HnD iiS cqFqaҊ4XK:IfDe TΪ`WZ`g@j'|Ga)h d-!;qqU[`%-S>.N8T̔+#8"!gP'=にLr OKpq^t]H~9B084>(vaG3-k1 $y op-y\N96640PZxPj9Wz4?]acT1Ck3,FRۺ]#5teHC -VpbcbUL\^E ormT\̘!Xu7KPhB"g1,>: Iͪ\(X-`8dG{Bw bWLn`ɵIOm. IK ۇw:ml,m ;:iٍa: [B%)+0,REw.c@ǂ6;sjGYd˸INr!RHNuEvy^K jQ؉\LʹBg\~{Ž|^b1'B/q~ET2V6sQ99.k]xxT PcKǯVOƤ!sN+J6[XT)q;5V\" :w`Q wI vi,iAʎWA+MBoߡMdr+ jRQzO0. AeUC\x1^lv06 Tg -v_ Np7io߸E$GLuSMLd3Iך(h`QP̓ zpavQ%_HRN$w<ֿlӋҌ)\}R`7JTS0^vODj#q:5Qo M!nuun1`]D3]`''Qt3 /Rs7:]]3Lf2n/dO杮Wof, g ي`6H1X,f)EcXvw)eڮd#5_z g/+>b1m-U `& iؕIg-/u;W*DJj](kL3mCλgT$K`Wv:z1ZɲGƑp o%l̳dygSv@{]1MM\&G%LW^#!W-Ե}Ǧ:u-dvCMqĦd J捒dnV@>,Z~RFc.Ll Ӡ?zgnͨNxȊ^8=pT3|84ŶBNDk)&(M3{sQlCׯ3&$[b `x>ݴBsFf8;=bO; =xšrIyqMQx9'ʏFly5ɕbE'f0NꈎSbT)mGԠ-YL* K2R (Z';6/(w-.T\E_ v2&EEk7  P2MdA\WVe}j5\vI{Oggg6^yA6H6!7-ۇQ^H pJ`,ez&CZ8 9|xL;RH"͑dZw8JUcV_p=v16&8h: H#-7v]zBk!Z%AQh /hKϺ\U@\>Pzwq "_|eYp%)RSnRB|u|z/VңGf4p٩l"[lDh'Q:JO?0fљ3NjmGaG5sk~j:1V9},3#S &hHsʸf'k8I D7jOoj."f_}-RqOBGh+8ΊZf'?t]2hC'IXBrh ppw 5Ra2D.&s.g&' W/ݱ+?VZ $~HY ze$"?T+nB1=wZ }-Hzz|*|&p"lv:[t,I-7VqjpEШZcԱ2@px)SIΖػ͠Ԓen!Ő|r+qDtGta\|Nr (akZy1a(YoNkҎe5\6)³0>_8e dX}j\DV &BTݎXPuGÑŌP<ի.(>I}@>``J^$چBAdX,Xb!dS ^Z|+pV.Z_!5IQpEij+ynM&3p0w Br.,(O'>o3BCi¿moӠ=*0]]ߝj@j:Az3D?~RDG?rj(8$y_G I ˱_I;W)[UThU?3Cf@;>>R*n)Ш|EW.:؀^dӆ[c vL4,[|!2vЭy#Kr8G OQ ,fv1TJ.Mr~57ǜntT4!X:9Bz]0A&oe$OgԇѸcIKl^Zf4 2@g(S4h{$}^@ܾi?b'a畼TÛ :{+JsxRb5ǭH@4B>S"@K;㧙?I i$ ><%em-X2K2!:R fDȎʛJ=454~'"ʌ:P4C`}Zih%?GCSHCHuU^ơ&b Ulgnn>BTV|[}GmRf.)ϖDג\2TЪH@xA5Jh?>aA .c;㻽MlG#i*KPC(~(`$ <*!0߫]{ҵ$8[R%l@j~eb} -Eo/sSO"ƪW{(HUx)aSL6CG# oK?'~}Ü-WF(@Jp/ẇur|UàR&8X Ei_AQ0ss7_ uED}2?"N&aR K[ݏAfX_5oJsGz;~}v21a}zVK6Őm0{;۶nV2K@ʰ[l7SeR Mmzx\?rgjBOA꿖?)Yj6]'vH̉[YYWRNXޚ hl@"%): q |z&~4ɱW;3lujQh(h2{#ew lUa߿`Xv11rZ9$XؗjpD4I0Ԑ؆nk 7nMmFp5q m@Hz#uj[>린{+^<VfTHqLbv"[,d,A CO %Dا l^IKlx!B0䬷>/Hj<K6a;{_MPyo5QpR7h?\=`OCEa.vHqtTUሁbtфpt*.,0o^T>=K`|kxFp,TwIAav(Q'g"iȾGI/8{%'yF~!~E@[7fZtcu,RP-|6~=3b>qs-0x܇8kv1+4J螊@ɟlҞ*9aSV} ZX9JwwAM7 hs=;dBBZN:Q+)7Bx[5ykMɷɢWR0h%3U.Miax'%f[$W7ڼ@ל5O&uY'zZMɄ=IDY=RoD:οgtk|Q`T{1y`|0ElHG-;^(F3@b#db)ZBH఍r(RMqxƵNx h3\o~0PjWJf+~N}}kkjŏ}k)-wt9&\7|Inw}5e踱\k0q{P:NoeYyu&תBD=t! i&/Y}6gDY{%@5xC+n2r)1z Y'Ɵ322cLsO'0=js*HVsKwy6\x2øe=u cBV( ]N` sd X=D[J6//bgnCWp9G i-`[Y>8 R'c{2+a%IWi~u0`I?ް^U+teDQ]ף@FtrrM(%7r*l2St-b{nz 16zϭ+HI6Yt$?ҼP.X0Ss`km(cI9snQ{ZK *%{UDw[-s~%"xeK+0]L `6#V҂͞v IM K&J%6SB#hN}%K0x,-;ހFG'3GRqП@}CO&\'I(UȚMAVA9B=AţeRhnNOa:b]:mBww l.})ځ(@>dh82"YѹyX_Rs4d}JQbkGkډ솞ōtއϓ'7 p C?uLʕn PS4LhNxP-Ƚe\z􌊛w6usسЈ¿g\L @T"0 ؏+̔nb>NCnlq=*dlFtc;[ I8.(o>%׺- Y[G@⩞m:\;9ׁ=]qsWL"!27# Vvsj1X+ѣv#ccϬ1S}|)ܐ/E9dʒyl#&tT+*qKa3Tuњvvm&[i1~sTW2G{j'O]}MXsqsdױ:}5xBn>)]=Qxces7FrBd>[q?XB;n[mq`掹S|3[;?., |?g#p;Mc3Y79n@jω$܅۝09Go{gdN*fZ+i3ƎP\Q/h6X;Kc $NNrq<1T>wкDOg endstream endobj 171 0 obj << /Length1 1436 /Length2 6419 /Length3 0 /Length 7391 /Filter /FlateDecode >> stream xڍvTl7Ci60`1rR"! )"- "%!!-%)y;;g>04RrB;(D,T3`A DZZR;P F( GnA=&h W^YW S"}.|@h {C߅ x? qG|QNpo n.c@Wka+ PT tFx˜ reA~Pg;q(P]Wu>0o'GBЯ0&TH$O =VwsvF 2C!|ZY ? ` ~7 VB~ChO3x`}~p ߊK脀ap Ot w#&}sq pA:* JY HD@DD(;;!W|Phdq];abKc,m` M.7v [KhHG_z_}18qoS uՃ;!|@q;rO>!sC?ٯ@hį(K*; [_~m FāXn    W^ 5O uFĤ C !wOJ4GJi}ԟxϱ oSN쓍GV =Tf#e2U\ > 6w'hҪ͓+EiX@wߥP]>!jbhYGf6%cmLL֌lFnbӵ>aK l|cE?jN,J"^)p,j%G jTN?[=[/v>K`+}zLRkKa\rrRLOk0WrD(؍()ބv;7Xxs89e0q:y3RAm,L{Cv5,51en͟Io +=pR8*IIIN:GO wVJO&y"ܓv8eմUIvX쑹);?hi43$j,ݠ~AD5)`Drdm+FSбPܸ8?"{do&0 r2z0ykf%_Y5n-KGZ\Bz)C[sof%\v_,M˹*MW~ nJB;N5у-6TW:)}Wa/xrǵNOna;!UC-[T+ J>mؕ6D[~w~oD|8A0[g<]9bD=kEΤ@ѫ콳IR ?ZF{ֶeV~w7ψ{LtnFrmOvM F;m*$Q.oe($V{;h>`%+% Pr~|x=_v23jLy^-?sK./GKl!ZQ'!ŊS;v;/{yިpq7yQ̷o=1 $ lWeQɞ* )A$knA>dZqjfʵq&I6vT̗ONlsݖ UR5i+n&OiT6Y5W]>9Qu ȕ^cV?dۦn\=6 F+Ɠ~C1kP+.Im³z@|w8MMJco3O82%Klb^}5v,]&FwMDV)^]>G1cLe1$LNv?@VǛ2`/.Fg 2^٭tVEx(Ezɢ/ t9Vu7{UmZL""fyTst^O&f :&"<"՗NU}Hts5#ɇ"ĵ)W?o%EP^-eeժ׀Ωz.R;0@15ϯe5xN ZsgVm☪oIzo`gIT'+ؒ }:r;-LF+dOs4Cھr aGVKX^ɬ:dG-%fSje3\Y<]jՉnGi\)'os_mQA G2x==a  _m؍fJܕ'lk;umv}CwVȰ hVԧ 2݌D2e(aMr3rU]tDy y`Φ3'ɵO-Lw-svӄ1/߷x6Xatiy~x_Co(tL.Wuˁ.g;O#r{؜Sy). fqʟ@ËRFr+]|QX2D4*tGx"x%-ܾ|R K$,şsj'z)!jRsċ^mc>: ~=M\uՄXzK^k(`\kjDAT!}LOW9^~kO~qu)e% MJ'c#z,A'&i@q7Tn'C#_L6irWbHYH^^ꮹ.}aKȞ~2y(K㷫餵KNh 5(fW$F. x:l5;FHٻo l%k3QV[)%b6a7^%T1+tmƜt3B Moj$=>䪂 >4*~ʘd0heb|dWSmDUݾCImblX+$ Mñ yp Vd<: .?YLSQNoYX_%OQ''><zGeoV1Qy Bk[-PZomJ @kFD>gzG:Y3C0W_rIW_ v]aZ|K3'.%GtN(M2vkBD,]|]y7yƓ:a>r` ě`zFO}4 =|]B{2}V}Hx8ާxQ(-&6\57,'WTʞ4ڮN?wg{a :v;x1c 69mFԿJvqO8Y=p̀iN|덒B-{wnA@ ־lk(rJJfq]} uz~DcZ'pړC: 6SH<(}y20Ԁ*br`zˣ׬u+ ҀMvb3E+&1 T ,Bծ@z vTkXނ?H,J_;&\[ygDhJ~ Φ;7+| d z? ,VQFp=B.+W u|=X%4"@2h H],%i}'JA9Usg㔕lc)IV`K2*M6#p88 oȉGPsX( +Pt,}R JԢ|q+^NMK@j6FZy,1UK7ha+]ҙ:dL2A [X'!+Mf=?69)>6SThBW,?Ȁ9qK::TOptvcE},0*ș9B(NT8s,EJ% IQ 2^p*X|άvGTvf8ct^;բƭIϠ ^܊ ^DC/;>H>E`;tL[-ը=9ȇ{6TZw{] z(ؿ5JُBhjpg: |T!fٌ@v `5ҳEI49|6JQN2m*a54aND!~2 /AV/vgwӮE1ز#U$H狎&<Eg|a6'HZdK+4>ލbL&Bf} O.>sQί&aeJ͊|wهѯt:Gfy~CT/GzcRD%<*"mⓏ_~f\ {Àcd]$::Ի?<|1{E!9-q cl+:dϝGdKޒW£G#˵av"BdTg+|rɌ0X KJ[Q1]ܝljpƤ{>UP3w3 ^KJmFLBSP{ q;hi#J(|/y](oY>{U-)eEߓmR'ZKđ:b{ ߧ$j[ėgS#W4}kMzko|+?)V{aM1l7vm9>-2e&iE8*c Vm+7t;\eBks@[QtS6+&e-{L&' -ߔjC5W'қ^1}pXJ훲ݴbZuB1Q^zja?!*D`{$߸=(<ɪn&y Ru ?0lz6/MN\tZDPU6 endstream endobj 173 0 obj << /Length1 2664 /Length2 17526 /Length3 0 /Length 19064 /Filter /FlateDecode >> stream xڌeTJ4n4lb!!҈t7HItJwݞs?=w0\sR3Z̀R G03+?@\Q]ACʎBMaѠPk]\m@q]`L *rn67??++ ~@ rP\lH/֜/sh :@"A6@YX<<N '%%|V7BacXؘf@+G?!b1d \l<!d?CȜYu,:2 ZL abg0spx|vbjD2u/Q?{Bo_J ݀k{1G1LlÁ R8/U-VZظ9Vl Y QG+h31sr[l*e P[kL-v6@?:ȮAWtKGt4Y9v.n +dع>lzk,̎ 0` rA}\ߢ#n`x,E `,EDP  H?A X NH A|dAؘ۸9#gclcoG[ W?N %A_!1s15-#b; |8$#s=dIO)dooşڹ#g7c2f5RD K?N~AnP~?)2k/'k_ /)/9s ;CzWEO(./GȖi${ꯔ w? O :QCb8Ai:mNH9 )8] _Tl@NX'{ |ʰ8q骳 0z6Hur B:A=^AH$ twQ\ m\IzQ@wբLcܚ7/nd([0=JvĜy׼)*•%cy<:_aD1 *!N%}9%/ѥVsVF &-+@Vޛ{>QWG` HCjCm<}]сm2;MWL4 ̌XsC]'WƢ\KƢDJ*!Uh[Or({l }(Z-GaIwOP '.mOJd"絣ǭeD[o^ ug(rZeX@FTxXeiySc_ =9I) }vS-Y~oSzg;^u㊓l :GmTBл3rt.rtL\Ȇ^ Sihn/#^p•i( ";SpK4oq ,V1uBxMYuKYgnb3<)|i`Oʑ^70#L~uK^]i_OD_D@C[ɇٍ>B4-c0ÍJLNʰqlj9B3e@5ӭټi1?Q6q:'൮T+e @B)_5Y g ԙ-f];;39YOyIˆ"Ù׽^qpSXq9 $j&^lU"r W6=BHh<+ d)quYNNMhg%a%[\^Q}1גo?zX[Fn +/ (4t`{$7hlg(m7@q#seVM^Az=9^Faг7פޏU@bxqȩ:Ձdf ӝFҗKv,/\Hő1.B,y#]G-V~8>bD` c?##S1u: J[G"qaDO m0pre{WauE9w$L$R ^JJp@6"g_@z1s6j@ˆMmV4j,Zs NN:kиf9,9+Ȅmx̶G ~ }svL Oe9d&k;>8k;]7C19K*N E&?%G'Hvt[ `}*hjG|ty8AI=1C5\fWW9 .',}*~ݒH0Ro<To柃*ģh Gz2kX/N 'R'ljQ4 kqDb=>tK*f4_Pן0u24qv}}uVdlQlN9y|doAozcʰ}đ4fx5nY3A?M=ǫ*Fx^cM̦jX"g%/j&=e(  a ^sDք,+M[g3RMU}ȬdJ=q+<wvӇ$|}AaqM{\-鉦2@_3۲(HX92'mN |QހdM~߈֗}xwE4W:k(ņo.窆;: ޓYyd}9Yqk2B]{f|A_΍H_7 \J곮=2 D-Hn4ba`}&O\Ɋާ1m96X1q,,ѐ@p/ f¸03G= %*;ߖS,&DMb,WŨ~OGOo֍GT9X ՗r9w(MepK#OCu0Ee-)嬬_Yho)Pm4El H.7:sis"ݗTnOfQسtW+'s =3.lٮ5{a# k֟ 2ƜeÞx/ i R[V?%(MjѥgJYuavYws62'YB^>[8 m#CԼ"5-V$E#&jnѫ(i!I 1Ψ1 > 5Tåvin4D#fUi6}n:M5ۉN&.,%#9{B__Ge2z6)iFEVb& 2I"O>۠w*12֊'Rs`]H9R0{/nc1͒P$H&SՆF`jPȗ2fd$dH#l1 |-{cĺʸS +9:zp/Xs1 ^!k`)64"q Ŋ%L^$'w; |wYj]uQ>yS%0}4kg}8q@LQ 9)sKD!nxx(fgEu|@s:/)iT8I<|+^q< *[23 ZѾ?ݞۨɼIŁ !pD5BACr\N>w2λݢr8?}PcDk>V?eۼtDD' qd4/l~ۭ4'8]ۄB i[Լ\e*Kh ƛnpv ~s~dZK2a+?D6m.أ+Mo@wn6{UM8<:fuO98$:II֭Fq{ٹWWatcʘ -6Χ7K<8QC Ռyp=r.kw[.lf疇d<ה☵ ϒTGϑݧ j>\Jgo Fq^( X\uTH<8P./uuyγʻظ ླྀq\;8͌%3ո'1+9\ڻe|YK,#iuqUTO@gSaWhMb|1REO@2#$Ib~rmZYzD(Cn~ .ۂ.^Xo#UtSn>a3O}>&I2,:|l`Љ^'W 7`sCJj¢Q| RJ+W65"pm)}"ʳ=|qO3?8Z uDEb_Ew\݂)qH\g೭< QdپY3m(< =fjҋQ))v\>-;XG0R7pJDHYn*.)))M0 ?tΝP3'v?qzU L@ ^}.wS1TeϛOϼo055"_ ,>1uX U (ʜQ1 ۟˽qiT]$"B2=ϊcXK}Tė翠j$͖b` O~fn}'ѷ/-\J-yrpS_'$qkE;%ϛSV]dL;.tC7 cȌƐ \"}6/FiZDKf"N  o5;$xn  K`G38ΈhĉۈlE3 \{=Nȑ;BدV,i\h=%{Ri"CJ G5a2*mdxE?r| lew  |}栬(B!<6ýߎRL4 ˃]7+̨쫷vOF\BY_/C^.~͟ G.EDOP3ۛah/6>b^5w-MH^Ct|$qcx>0i$[wrk 4~z ï!#w fFD9z}B *0~Ndhrp#ba^bGF&qӌ,9#ns{褯*8@+gMABk=B&bwF մ1.?|X)5U<\:*QbǏ[p'W!,- yoHPT@H` +$-'/n xn?$a?Q|C_L~p?cKשׁC$I]s2JwadE#B4qGy7fEZr驺<4i[š,3 ((^_|HR6_u]rLȋlp ѵ1zf[B+|_W;vדgW_4kYux0~3nmXV-ުuI/)ICs c ȴ;QnQ^UpTC]. d@b(a#%3<03f5.sMurmHR>G+)pxd5 (V/_ft\WˍMe5"Xn@X ʺU-lsEv$'kPu"FeMuK xFX Cn~fnmcƺI|JT'Nrs~fLRO#M)ێ*#CqTNy |kj*vnʄm#>j@ue{9/'AQvϯ9>|~ed1燚#Gj^ȡHBzkSx!~cfЊb{?eO^DSb)LjɝfdBhM@^ E6YJRF#$}/Xu៩Gck3u=.=S9+j$O.ݧ{LZm6vbxz'mhd$](5I6j|U"ɟCJwrx >"T]FF'wE ~lbM0lF Ս(JJE´ O 95F'-"ׄ{T9n1ቨ Sզ˭;B=I+IӠ\C@]<Y7Gta! Q$5P:ܑMGEQ7zbkޛBPq, 'kCfc3w/mAWl?rLhs9q|E\ ݈y_~HB,S0mq+eЁ/|:k,=uWB36מg~3wv܅L&! j9U#{ >R?tFI$nH[`1!; j9A&ζ!9Iqw?^rLCLx.3eKs _]Vnz$טb=1] ՚K f JqE6|s@'7tA;f/ɛf֘ty(sg*x|P;ᱦ@/HhM쒱jNO!uMnNg%;Txl+b緖QF].0g(Z1,{}[#jmZ_WK(=\'^,F)+۫QMx#"(5M&9^NLO@յ(Iϙ/WƋɘ*e!Kτ?>Se̎ۅ(}? ?0VcOϞ!BWeL\;Ƞ!-0S^I[c?ӉF,f_ O5ZQ8 -s|>C+RRv889A>;2k""$|ni sn{w97 19r`;0 dcN,F'*c{xpN+;C*xL 5?Ok 4rءeH-<\t`.榧JEFxRmr,\ME8U n8nmtܝf)H1nC=֦9K /8Yߤ`5> WmW\8j7$v ڕ&߀H1_n[3,əD&gʯ`jٷ7* m)x]d,q&,thiaG4zKB"`Y"o7訣A[Pt1e}˸'BW؄ai*~$ 3*W@ϒ 1)6F$#BMDBM){ ݻ l#i+4mPaGYYCկ+Οa^Q||}Ƈ {3fH=jy 34E*]<Ƃ>oFQp+H%"R%"ҙzND|/Ap!э+L85K1fވL-Ҏ~(`ը}JOIbDn 1nc%g$Km^^ݶ^jϸ 4LV,~D}u8'f(9qHjЀYB֡t6Jb\~peH?Gl[&w,p+jpؠ8nW 0]&BУdSP/pxenz"xVX%&ޭrN`>#py ĹTntÈp_b7ONVhAf@sa=,QhV{R̔ߚyacRq;694,i+;νwAp,4Y금W#Cm^vR9 X7MwgLP?CW bPj ]:< 6K#bG0kPɱ[8>3 1GJήL۪D2sN<Υ~AÎ?ߴs'J $|eAOMB Hoa|&A}aFy4Kn&dNJJ(oe^NGsx[3,Qo?.s?X%PTôA:[4v?imBW/WGדsE-w/S8EPDq^;-j7NOˤ HL9O,'SK<=Mr,DM:`#cN e8-T^HTl꾘EL/$lP s+;"e`ngyߝdPM*XӦ;Ӆ-kwo"3?HN+<9Zو{yomuN]J7OL8w^n}GxKPm!כ{"1A\qE|ϸTy^!:⽙p f1r" a =:8$lY7gZA6\@K^dܱ%y>t0b){vR 8~FǢi 6ȮukO+O6Dp*)z#IoQxvą)׼To\E.Q'm +)Hܛ6=HJ1h+-#WK{Qz=}y g uB].2g}{K[]#*ϥٔǭX6P+V4~RB>E0 +$0h;y=I"Ȉ]'WAmgNydȴ\ć^bUX}ySamԁp^ϓꜦ7+JQ!`$jF9$@S\3:a` -!'R n,r]v:@_emɴh0Q _wQ aԔJNW2|~+OGެ'rC'd#^:hKz cH4cߢKSH1WA̮)Zs%X(_/V'% n<9s&"X68 [G:l.l6M2c˫I=8c^At*i:1E/7xƦa x/nXA2\9U?gehvDNʍİ'^ݪ_u@g)*:(6N2qn, A˯hns8oY(.|6p74 _G>Ny^dO*|ƽ5j(L:)Vm۷ Nm98nsY5\Б6: N%MH{G{gҁ2sz"n"DݡLε0^KDd@P!YsD#3EaDdhʼnE4H1v0 \;+KeV8t}ԧ=aI pee }O Y 4}$kɟ~rA:9pp*?s۾DhqVMt}%K^ o9LZ0?Msᇧ뛡[sV<|/vlN낖ejyc%T:La'DX.jK%bq+l(N ŝ7N*<3)k'үtxZu+ nư/0r~8=+=ŀwlxv_F1p= Em7INSы|=,z{8_>@^T0o:jQLgpҴcL;Pt}iJP46^MdHTLst=|VqI~^JLnԿ*9XrP,RSQq]&2thM>13Q]1{!5}MRnڇ~#Q\m-{L/ -tmDi7#$JjX90 <Ii#>w=ԜewEN ?acK"(ATqF jR&d!a׽_$CzO"2w8 U{y^0s05}pHLك|*Mn# / (tZ{?mFҏ&ݞg{2-(t0V63TRxd2ձ[x}FU3B8#P8Rd%N˕J~:#%+UۭSb ZAX++[/"sggłZWAL~Wxei8$VFsKE,`WzAUC͊v74IXN)9vN=̹eN\Q/xBk$@V<93* iU^y-P;jϔn$/ZF7%QҤ}:3 1eٮ׽@ u WgZV37 SY^'Qm9#eZ=wA^/ЋNňpiKR}V [.ˏ)q7"~)k#Me.h1QJyoYv+w $oKOGLt فS)H34i_6-QdcqM<|\ r=phEywC;zN,9Fsi'Y2WfvhۋǽR`o(뾖?H.N D=ɼnk =kƜNr?3Kܚ3F5;+}lAқ׏ ڴVďO}c)`kJcs8j)|A5A[d#׬٩A0,ׯ P5BU4gs 'gS#.)㈢KDAH{z)hEw9CzRPgW6npG4Vٱ/wA}MkGY񾪛Sf K{w Ǒ%@8$3R#` ]c} h/5J=zM~*",ֳ\zu$>`[ح" w ⌐zSJZO(#Q[i}+#s0h8W9Mryѩ)?vwr|6+`f:"* ƌVMV͍v9k~Y΃dEv%>-Jj Rvf1ax" f{ҁwғfыZz:'jpJtO5_CƩ1P}iO v?%Y w.G+hUJ̖ݸPp{DyR*5CK"Kٔ bjß /'n!amx1Ej*QYya(c[phY=M1 ACݓWD#鿬3bѓˤ ӹ nXqez`ĦR0h`%SrI<ÚvODt,f{z)e|ye83qd,ohNߏ΢my亝MB B&&HT̟47u,O&hUuh]@)g5yw<$ǪYѢ rXLԠ|f$禩@S_"~C@F3Z6WWuc n`8&lpcM:UZoYջaq BȣBUlP@=y[r:Na?zS5vBA3&H̕Tbm+He}N6-ONΡ{`.j 0x/cs f ND%ԿP6nMOuǀ~XM1F>X6bnb!N;ۨz6ÿ>4`#]2.cI6yGՇЅkn3:쒗HUTxݻ{{c"Wd_eny*L~?E»tHir:{ljVLˑjn"v9hǒ\sͩ =)X>_q%B5܀ֈɀB(#k%&[~O {}>u{'qFkl|#<)Hl.}FIQ]_l([7 ~oT> 5 gi# o\MUO)$Wnb ldϓ桶yc;)~첵۵-*4oQVnhi_BB n^ĕܳ*بIg&~4Rhh-؂o9f*U4kvfp=!`SZ;ڹC5h4bYE`C |тeسZ^0ɘ)̶˨vW7p^yIr'FXDbZ<{4eG%-ECl'LL_gRV LZ aZf(ڣ/iuh!tR週Uh/ڝ #ľ0*:\" $ck< {K*uʭW3 !gmJbi C% tH)5 ~ endstream endobj 175 0 obj << /Length1 1545 /Length2 6941 /Length3 0 /Length 7980 /Filter /FlateDecode >> stream xڍ4}7(B{AGMRjY{լR(*{?s?9{rN^k_뛜+9# 8_H( P3@ PA㳛C|P\4T| Z Bp/ $@ߊi* h#$> +BIII6(yB|`BA< BPr%ByI <Wyn>?0 !>~g OȟnP_  #&pg` 0RK9!c#<@@(Aw!h{ 9~+@ ԇ@PH$F_nmV; <=!pW~P@?#\pg_e8z ޾-?:h?2W @^o1`/]$A#A~OBBg(pBxG!.lh ^yC3{ĂzVJJJ Kā!!!q ~ A?y+]tN,7߾hB\(߄忼_`q?8 f/ z.WAj@mP/$*KEC ΆP/%7o0(b@B0h+ 0=зMC#-8 G} A86k  | V {@з L쿱(tG ЩB}[zB#z pF_&7"*|^__}}|Vn7/#21/b:/?㬭w'Z ċ8ix+;:Ҍ>2\9}]YPT>/~䌠sxIzfHhmÙa1u_Wdn䶵P~F’MzTؽm5beKLcke6y|ܙD=p&9w7DKtkci)Y GӇh) [bg*UYeX?fK_ 6D5kmD38l~$iKOpĦ^q6sX'+æb4v7<\nI 4Es0/MH.K&9ᩲ!kbJ6 @NNn;zOh%stMHo퀑r&2ղ+o7UK-98AgR2n\Tm[CZQjq5\ؔtTw#G}Y"r*ǞEeIFMR5BҰyרmT'#Aa<{nk7 }Nmh*e/jGj&Hb~H,܁2̶o͇ۧEJְ̞Mc]փ 9uqfmh6_a;hHƔjZR:TR& t;O|z\ZNٜˈnEz4zVVs.ޗ٬Ջ &7W%&IFj `otJl%6^jx1'h` cEK3Y hi &P pmgM׎o%VqFZb27Vbiv{- ~ /D0CK1KAxqvihy\۞2y#s3Ƭ6\M9zP8ʅ]/^ "e@oo1Yg=7~ɮ3v-"F`x&Enҋ?i8f-dr{ƾ *rݫFU5{RQ(Hz% +D2=n *]BvCe|uPc"_GtLf̂y͊n[֚-YyU˰ Tif F <Ȩ:. 1s˝5<"?R#j5LT#[u ~{2iScMݠXq/W3:6LvՐ3Yp9A&V7 == / ?jwBM Rt1#ӏ.@v&g@O3Dh^=%?9q7eOr*U5;zjp)©rQ0|I2N'MNM r`\" " V,}%u]Mxm6~ &ԯ8tcG~|Th_X/|ykb(Tgw0G*e丑4u1<(j2g1::GLYuN"A i2Ufz & Ýv_`J8| V2qeƆ;lZۥvJVSc={ a AиjuWt%DNGO'Ku5v謜r|.]x YV Ao,ڑ_HfsMyZ00uV2.%vVx`IMm}Cߢվrhcgw}k\s‹$@L/1/1&?B<oT}젬)|LLvZZԟ N~b +]opoAjxJdO`UC< nQ]PuꫤLސzvk`Q:.A>Er?4X9EGc-\=4}Y A+-KA3}1! EZM.N7Y]lSl݅u7Lh^`F 'J&4=@R]ʻ1=h.4%*S؀7M5} 2m2yy#=>=ZsUM;I;\|ՑwK*ˏ*FGRI>sZuf:gwp/x_|%ʇYcD]SV]k8/BDIEI*|Tޒg'댹cɷsie/ } Ae]僇(x 6%-8nj O?tQqprS8*y84W!kλ~.Ufj#Zd9= es>GJy8tcVu.,h:\#O9P9ݮ ~"b)]!qVa7<$΃q@ F $As0E®4>rIZ:HY%\R6Jm7:TY^%إ EgaFuO2>&`;WR zj>y`ݭ>-p3D#7zS'9#HFv'x*16IմW+'յe-1J~.XOJؓpt崽n?k}"f#rp5=IKS ~겭\lڡ jz@SKrt vE$v"tDs s(@퍆oV5>#-k}VQ" |j0pHiQؕN?[Jܣ$D[v p>qS*7_'K_&0,h,{ $=M=clM=Зu 3jS|L(3}[y.EHJMr\Q&x8쪁ުmbrŤg9N+NN臒7Ǿ D'R/j= b0SvC)-mi^Tb*x]XӦC|ťGYIUegrb^Y $u D"$qfO8-)x$pr$쎓< JRr!̙Ώf,U ?‹s.KZc ud!q-kk IKɧ2F)U"{x4F_bi ,r08ga{/Ei$_QQzhxw-,r;ן_8 N_gb|A1VL4jT(iE~&D7/Dҵ :mN뙫S~Nzh}wjL]Zj~vWǖV4}:=H/Mt+L"l^DIxPdcL{0rCiʪnn-wn->EsÓoǘš,kB|Drk_FZ:@lp+ƿa*A Ȣ*05jqEmKƋUf ܟS݋Lc#^WzNpZ8Jε cO ܚlύ~0M螖Q]x_m56ak̖ZxlH#6 :S}ҫjVf_5HoR=[·mxtG&0"3@*-]-jFN>Eqb9..&\xTNAM 2P*=Cg$<&?,&ȢI4Qwpf$yʗ]= L+ܦ7G|Jb5,uB;RI_Fe%&zZ0 $Ȅ{3ϑ>j+4#nGb(؋r8U d~)34%NaYyL3"شOk"CHMZZQPkT~ڠILbs\Zs7܍IO1V8x :mn\(W կ*.0:cG׈7udOTlV ar 8̃wcwp$ϊs3ʡbeKM؇"5:z+t}J(T2@lYT:µ w٠+ls0^Ņ8ZZH6DӳRrb=P1H3#p{49аNGsWB}I#~ڲ*Io^ ]ps؅Rʴ)|o-F:|p{yl5qSV1)IcҶfܥJD[ O;Ɛ ɉ`7*?IwKT*Bt(n/]v;ݢ6 /O?W?Y+\2z{F\uNRY*{-J]\$]RoHAM؋4TC`v4m8wdO{\9^koBiņԅ﷓l -+D^NيԎØNT*&':vMn)' `Qa/Cr#z{'sYŠ/l/mQsF. ܾd36hgrwT)=ke)9s>]in(A;v9)fO膹3uOŇ8G7>蛪E~&jeaY&VLDzě1\.]aW姓{ށ66ryI%n#?z3aU]kޙdd?sScؘ-XX6Ȩ9(Uy1e%788=hi^?F*&+&NLP'RKQ;?war1)ƔⷝgTCvݐoH|?,zW~kIVhL8fDLrf=aM" ~$cTX[tWCHBdȪߤ$R0`a|uyZNzW.>rWtз -8KJKn IYWON|H> stream xڍvTT6H$$aAif!fC)IAP; i)P i~Z߷f3}}3RmhFH T $D !1.091F/ Ta6ha]1@DRVDJD!=dUh-4 IΣv@:8bpDdd@%WaG+nG; `C"0' {{{a`-~8O*Ё"T&pC=p y`Qp0Լ!P1;__0;; D9H~ ü`H-w0@]I [ D*QW)*hWW I+?Uw:B{.("X7(;s@` $p>v¿!~"`\nh7W"i{¼?W""ilH`5HӞN^p4?+brGHO攕> $#.KR2"@?Ued$;%|gg,4N?H@pov W;!uo70W_fѸ)@ j#HnP8- !p:Cb(~פ Q='ף/;g'7=W e3Q I%$*!-d@Bcp.@Ab0W3_o\váh8nq41#+׿ֿAؑF݌ph=VbZ&^\nN4덒;!y1l޻c_G|,2CngczWw>r@\YFG~Kg b2})-^s\f p i8X1ڷ.Śqr/c,ixXc4?Rnc>]}, OLř&!)S'ġJIju 6R g}-IbzP ݠ +_bK9"]աHNp>X)k4;b<̒*9 _Ip*j5R oq2 jȅc2Dj/cloa TPqnL &|?1{W 6o),m4X!XAlў]HOm+lYn>6b94ߜ~gI&{/ua*6ʒQ*Z+{4&&5i۳.ëO+?e!2R0@(*˥j./ɗ,b33$̊kEe]x \.e*1le 2DD)A3nIn' Mɼ 1sZLKUDs Yd؈ gu7-{'K{ŧʅ+YL>CJźD[`1%WIyW^eʐ҆bf?[UяR+ 56CT㤛9L9$?~h~QSZ'55M{b#)njss׳b9_ۚ,h nj{6 B #-f&A/h3gV`0k7>>M֘w.!' 9r (~qxHF@d Ѭ@\{@lQBoSl4e;FHƅ*|7qf`\x{t/fڐMvv}C'Q(x%wœZfCu+5.y4d|qnGPrd{@G]YxxFau4=hOǥ݀TŞŇe)2>ˌ4ѵ.]k9ɖf7CtM)^^HPgij,Zt(MxH:*-]^` j N/EI5QZum'4], 1g :zFKqR]î^Z2,v[LL 08tF,Z??n`iI!~CP'̳OE4㛾LJ3 |P !]Y<.1^U+Ww}xV#c 8*6n2S1"H|VFѨϙ`O~72)r,k&:H~TJ>tEyJ!w5Y)?ЃկMg[? enJx)S4#'\Jޥ:][QZ=De 4(-{cהq\}O߄oNy{#ҬU*lypT9}lEPT0K59f&}'ʄu)YDȃ䐡${֞b\(G<(AlRg_kɒt~ %quff͑(aء[*i]NFR,@V9Ӽy+ն;{OQkd56BVHVOhGFo5z# Nf&L궓KUTL3 a)=Ү<ŪVpGGj>֎?g_DM FD[WQV BUڢ3#Em2-2H&KSC[$dӉ!-mv)VՆ +>yyNpAVSn=IXkTL;rO US2j7fd+ʴr%]tME];C%~ẵ^yU\ZU'zI;v4MgDNKkBﰰֺL2{q(&_)d"S\D+n{=yF])]{ș^/$)?ճf{0ëY{R`uuR~Ѥ|H}BIe~DT[(H'AJ`M[ ڭ!3tWOXqqt(ST柑eg\+3R#?uOh*tJN wK0!N4՗se_< "x|FiJzK4t\g]K'S^BI=^#ۖvZoV| lO_`^S{ztۼ0*=S&bj|<]퍁s)Zad>Su JR74O8O5ve.i`N&: 1+5V[{W ʣ, ԫϟL:_$ZsZ[[ ]ܜ!JLSi/+WڞGk`|2tOх.]]Lp(AjK 24dˌ; Ri~y-us4-ezEa[ckfrggs$;'1쎋nݛ_[;]&mrksYۯ]'UpJ2[++dY|Rŷ) HϷD=[>pђ$uvy}@tW{xEBM@VW?M5%נWhTP[S?; o)KݝBStէquGP鎱 ~b%:TˏVsrG%_QSAu:S1"QADzmsn-1l51_v`K!9PW[BU **6t&a~iwSqkQ Q1M+KᳪTZ (':2.L%S۶~ΪrѫJVppU!Bls.\|W(]T?w4 } ïgj"]iCմYe'xIa'# +\V(kNƾ6LՒl>+>e 9qРMaWf ac\O Hٸeh[" 74OW.Yx,QxM8ֺ3͕,ou6Nϋ'xemB,LABLG3S^K©}LDMʆB6 n4 {27ENwygKg0P}3̺~L)=@ ,cpgdhqaLg $mS8IF ]2œ*ϱbt qQALQ$rᫍ_@'< endstream endobj 179 0 obj << /Length1 1395 /Length2 6123 /Length3 0 /Length 7087 /Filter /FlateDecode >> stream xڍwP-t"$*Rt@z)Ҥ DҤHҫ^DP{3MfY{}>gL8tdm0%$#I5M $De8d\0DH/< `1D"jnN0,&B ( n!04< `# ߿/~w:@C!&cs8P8 <!qF "QvҼwp=@a6_ ΰ? q ?>AX ! 7 nWhw_(Axv[ !@6'4q X!%Y];PDÝ~U{ʊy3 AOAs5 SUKBd`(辘=7r |\.[0?- C惆"6p(` #S l{@X_?=pu199'G, / _~,m\U-pOcWBbU G QURrsr?g_Vn4X jcZM ;" ?81P??e5'8D[Y Ű:bh.`Xs_EigBb "a$$* c idP`SHٯk!hp# pC# :0k0' J65>xP[,!q&]O/}5_(Yٔx8ltҗo۰y[F|J6GkE@ ndtz?^ٝDo~6Mo_8RX01YxQ&K~sXY꣑xQ3hsشތG;ފ2yqd $0gբqD'bwwrv2uA!^I^D/5 !x^qxtӫ?yrOÁH_^*Vu Vg${D(J2߮|n(tnv]eˠJ_3.)IM< \?0e>Tg!b09QC#]Z׆H-gPf&Q{{$O@TyJrZI{0л=<_uDQbnjH?- Ƨ|r \/Ȗvͩ: M['g{g¸|I\ՁcdQ Ѕ>Lk7uIj[qMu>5YnTσ >(vXQT\caK &WGx|ۂɝY ݫ3PG^r81:$ҷ^h)rPǫlrA <+"S/FF4x]|qcf7 Ec/S7pc h푮!tpO=qɌ\d0|lBs"%8i_nzk(ذG|jTg,BkސЌ@tmxiӞ@nbɕK7[o@p ]3lY|NQ84^jHn]Kk]/M(4fQ*BIO%ZF+Cnn漹\{LPj1 >ݠخy38pk8s-zLThPsl 3~Q/n%1{N"VWQ@o z7*(ĤmBYbMWY 7>z!ŀR`ڷ>N-5^d Τ6y`4˒@oi ^hrθNsm2~i8ʌE_Dlˮ*IeQ9BGo,l;hS/4*<Pb~ZC87pYpDZP"Ң7uw~ _* 4GQyHY[ҏaѬ2lgSھuVSZ{fv)X = 4kk-2-zax*/[S6p!:=5aױ㉴ K>Z5=Y>n-Ojvyg:& s24%Ҍ*o]Rn { k 䊠73V{Z6J&G;@+zfV?Φxc$|/#XR0$,X|p~VS^7JAYH%xO_@[o6tf[#"VqS^3w *&E4P “m}U+ Oy8ceÌD M_d a3 shz;*?}¼|0r[QA3Ȥa.PG; WSo[@' f]1!1$[io$θ5x'O?!B#c~]/`aLMJW5| yNE4n \SpQ z$%aӫGe(/_aȲ\ςdutiBL{GEy.4>z#j‚Gm#l1;ӅU[LOTEovOd.&kޢ1';R :YB^YwK tD v<Oo Z[ C)űWsg`Of&T(R8rዺSmgнj2TwaJ[۫8f 3>p/^:ƛI"T"]V>Ut^0_~gncUu9$3hhP[E""A--Eq#>%0xNAj&%Yk߮'T}uޅDHqR9lKmv1sI<&)4Gs8J\V Q'å<#Ks^kyJ'qN Cr|s4KrK_pI׵!O +x( o85WztpM 9?  e E# M^^87J%|ό4$IyHqy#2KH:ûk'm]vcER);ՑV-Kϋrou>d __XyEαzbܔz=IFs| i@&%n1 az} ctSkǕv=+ ~rY쓳uV,3;h hV()7d6%\&G| 7q\,=\bs3҇.=J^1 ykSqthzΪTo)R3ե7Fq0 c'~'iW+I߻?:?Kj uJjߝF%:yD ^i/]2**,5c#-Yk47uG6]PWNx5%+ E6aiFEkpq]Q{t(dIdK!@:ݯ@*fU+KZ{Ɠ:`0L!~x{#VeVǘ-a4WqaZJpɒRb͝Rx!Jv*s4XZ rת7{JXaIeZh| \(^U\p 3ۣ/~5"jmΔ)\wE|x5#(00RSewKQٽ+8tjxʅIZJN-Ь`jӣY-/fۆ0lj)zF(4_L&sԗ^ytj-bESۈ .5]ҙg=3O)A]޳GRc}dFԲsl&+W-'$zx<{4CIv2 @D0W`AUa^rh)Ť~t:( TN|3czY:`wO]rT4<.0 'سm:n[aث3j!~(uG>k7ˤ+sqޝUyR;jUldsz?2Z3֌ kXp2pP+uNOKɈHz%*|Mh/)Ȼ՟ڟ:Q~J,`4+l cz-hagD-ZLf(K_ɜU\  NGS}ݞc{E)kDzfJ0ţ+OGgxSY}˙e3u>k; mS-*),У(eg2+*N&7FnhN%T8N};0&#EGt5FLҁUè=`lqpjީ4`נM_9Q')'GY^J(䢀px:ĚꞥINeU\ ?RRmK 0#QRDI& H89,O5o%>NOtW%_|4=;th_C(4b #tss>kQvwk9wd{jG )NzK'1kQ JKB^X[)IĶhg2l:v"ugw3zs|D,* ՇM V{|r ywNiQEP=tmV endstream endobj 181 0 obj << /Length1 1686 /Length2 11218 /Length3 0 /Length 12296 /Filter /FlateDecode >> stream xڍP[- i[pw N@F xHN!@23wޫ=6$ع9Ҫ:\..^..4zz0/9 Bd{X U=Z[@ %/C0@ lP(A! 4zi3_G-$$;@ Z@0[sF=@ `Istwwpp:ۈ30[2@wkh[_ m5x؃ ˳+ xVT; er?-@ XAu9 `of|6t &ÿs:a..`?z#5B d {r=\;/d XYц#. RY  - t<A*?uX?[м],@+Fh+0ـ!h,Y q=ӏ'gYA!1sĜ2r*jo7P7;/? x>w uWb U=d90; n|p?O?JHO=_ogž@ 5 +ja yf4;7_rdmb_r? i@]0^\\{^2+L?UR e pvD{3xs?oO289 Pس G_5pJ! p7p* 8ABN}pZr8A<N6Im 8:>9?s\6^CHTs MŖV\F4ʻ{ Xnnk:=5vm^.뉣Qy!pag+#g ^<\@m&twH|xf\#Nu_ %>D?)Bj:.w")"Y^3x]"RI.\CCwZ-3W%8S":7ŗ}^ ˳ $=,)m:̟ {.R45[qc)4SG-Ou1zx嶴Id(:Y0*6ZZ+@_܇EƜSgy!Ztwq}t7_{1:.&6Mr OX >A5!ӴkSHi̓a9(nMi(R˕)~y:$eOiW5pv3-O|K&}nD{L0t^ ooFVήhwE(~u4[R zd^lSG0{sN}5Q>V@_e%zG&_zՐ6naW7o ) Zg|DqʭK \L01Ez ]@ʈ"㣖j%yK<(I17^<+zYJ}>!PKpaB6٥ NvvgL0"컄&ĩdb}؂ldo}~+71Kqj'aWr<  >sX@5UiTHuM& nX~44Gaa'.6 j,F s*._L| 7D.[/{q^{o[ 8e"CRʸli}my{\ B4]?Bg:.aP@6L@*cCb6NuD+Nָn|1Ȱ )FܶxޔCDW}K<\ l#t<4p ΢g֢\\zW%Kꈬ&4Kr:@1-WCVԆ+1B-IzsV5kݬovW+nIOW/ӥ. mY=lH=?q.Ͱs+qu yvavztEf:6*/΁^BǦ3UL"Y>qE5%׫ESx4LD_nBff{6s6?1ϸzÃFd @wcռ)XyI׽\I2Xj+&2c=+¨DH %iO-8FPF]8}<60y{rΉDE,02 U&18齶 2Ko7jZE-\ʤ[1,{uS#4]_Ӡ]l=7 TU\j*m}YKX*vg#5žT@t irF):m̭\X_SoDi.!n ߟ&0u4+Ǎvq|:`WnCyB\#<򣙉.ef}W>U1^єuO8O `s#NKv#>Z7*8?_IKf<cs\bUFDdibHIHD$f!l5ٹٻY~ȁG1n3>.g`"WD!LҿkӾJE尮 c^_LY`X78Q馲 {nxdGָʭ5.-Y2^<.}H|]{;R[F١6IǫYG^3D^+T5xɅ9ݫK^[l <%y4NF+9?e" н!Z tUyP0N:<}Njw_dvC:Smv$%M%?vtx96w;;1)Rf"T0ľ1GS.ƒ|fm5/VI Vu;bD%^ ׮mf~=":'ׁ۔L]?{TF .7 Sv er*}8\Uz T3< MyBx<:(?kObԛBkg1ϦlnDO$7jxTM; т!'%_z6xX4e1y<85Ym\3| 2ZSA] br[_дL6nQZ@*K-go+pY&yq =~5>q$ d7+ݠR{Yf2?#(o+q7<˧!3,uv^T,oAbZsI}v^(L]u!i3!ʖ*g+OX=!-t⡠hљofs=[h712/]r\TgYoj^OĩcH6t(8RoB)!AH/fK; N =."k8TǭG>^)vyw y}Kl`C{ sg_ Wn\%ҿ& ZTD SA7sr ֈ|Q4PI=ᑑHB)}!m5N\В*R$oו|}i[BkM%g$qJ @/j%=]?3*=N诬^p[E`&T4\Nb%z޸А5T[NP>b#䲒 )Yj;aA iOM+Y' {ıi &/&C{4~bs~~!m/B/V uyĤ_UD MDfy5U$/k,kȽbo龎Џ=T^2Zj܆p]}K\*; 4WUHh;X!u\7Hw2$<1<,<&u_|ռʕ]e]Z[jjfU$OP[58Hlo5!>3RYQ?ϽT*L`&ԀG䁣5he~NYb+ꩆH b<*+8εK8Q پy}\cioÌD`bizwu“˚hAJG0bGl/k!)38|I4\/2$'/SHSۭTr-G:p>{pRDT0g/F]"f+ liaSg:Вz U S)TM1=>Qf ``I]ΊT\-DbY>mbgsĆ03_%J&[0M%5ᣚ3BdQ βǐ 42}4d{f^oE-0lPMb7Z(y-gUdeqWIᠤ0uˈƟQt8\.:.a%5r .?\8Lf^\@%,[AqXY!K,NC;d{&?ٍh&˃Wk; ,)#gFQ-R*,JR_+RM5t4+ݻ\Et n;WKaf_ػ&C(}mL0u\D\0QOPub[U[d+yG˭L3mWW03rtv/ d&>OG\vegӽ&3ZEcȄO_MAڨV.Sø0H]d)NW/e3,C[t /3ٿ@ ɘ!<x1-ror{@5rE :AĤ1Idlo;|Lx#N_@cЖukŠS"!YEk'\˕B,=&ܙxp;pƏ[J^3W7·[ݖȪ?ER]e<^0I}>̔e#G;'sه@}yA縶0S'~NG-{ oV~(aUųC}6Q048B:] ;Wh+R7gNa7[v.:㏆z)P PY|dWVK/}yx n#zYpF>8|o{A|G] $>.3l HZlg*IP$5M n݂8F Pu 1=|$/l$"p`8&>!Q"u$(Jӟ?<`@(oyhd"wCKOhyqvC9FJI +~`>/:;a9݁bޕ/a|CH&ݺGYGJѽL' ؚȅQazi6 6! &-_a}73n_ʆ&X)3,,J&:k.NOqgS˭"t>V':Ud z4~%w8jGLrտ=Xm~L5,.O+J{xѨmveX$MqkeFgL.zDcRY( + N K7voM&f>~01-,.I\~G)㾷r = N}'"wj2l6zDWWU[5K(D1Z8 ObMFZql_a4 Ŷ1{m s}4aa/nlz q$fK;z e(Χ&<'YnD}1Jѓ-^x {)8܏spv5 3'3b")?qh#AR,w:h6|i"")XA{´Wn~|7 ߶ įfiV.nVI10 q˧̗: bEixadB"l!RѵR֝α%J">[(#6 l}'촄4y]Sh`S{uAXt\5hh *BT]QFS.A{ F %}d@4w^jru. 6/Ѯox:ih# !V Q UzۇDw PhHx;bM<ݻG .6}iz$͂+.4v]<=SX݀,2ب^jVMQ7e=YmdtVp1`2: ^ߴ?jN@-8"cO7aPqގ4qFwtFɡ-.b6Yhhs6YN66PzѲ~P=~<3MTŽv}sׂsD9,3+OMkHd˫$Z2A\Ȩy7ۘ^CE.֎c$M-#RqIDƏ9VkFtI*=y½%w.HpRp3XF=to&"0CKumw})76O3 %54Ɍ6uJubp` .pz1H#;Ih`r燷 0،DZH/ .P~Y^3i26ar v3>DziFc]# ZCrF5Fcecu-1DaNŲFV3=$ 1`6F`uOv;p_͛kˌetzI>uD7,ԑ.1$ZۇUwdx{sĐ}`cE}[HdfA|]|!]^4XLaI-P!z&=~/V)FVE*r[7bOP#{t>me]T2c"vF*gɩs75enXAM1Ut-I  dW&'M7Ww.>膇iTVxh}>18]e0⸼HJ?@-p\ k\Luܵ8(JLoe%'a; O3* S, ؓfŹAs= .w!↍Zco+T[d8Jh'~g堚kb<*,Dv4oDCo6ioLfT| 9<AesS+[^zX؊%~n~g R^=\19=l٨7) W8Q#8Hh4~ϰӢA! MKU#C {cK|i$ ,5#jI@N~Ixp&}By5M9aUC>h@}@҆ll';K#|lw-!Q[<2ܯ\D?o"[?Ov۹'iqWz׶b_668ϳ R[BPOd8i'BɻkpIʏlE6\ r\~*cy靉[kVVliߓRbI 8hSZbsz%SQrVAHzt쉭P}W^3a/޹ \,8({Kjj!2)Z^о$:;)4;3W j^i7hj޳FڙLs.f3R.ʈ>)_G&&%BU68~ST~61=fؖ -$NTwpkaU,콘6]w7%5zkaom3BױvCt=CW0QD1+XU,gO%?꒼7Ii,njБgVje5Ld q9{ȴImest\a(Wʹ+^1|vK6@dzrQ)Vnlx27%v o E\CU'5>w)-!l5MsVoh|[XHVi#Kl ~QCϝ,Fip0|w_JsC5 Zl0<ph"Zrv`:~Y8cxci6% 7kkg%D'3q u5jK%>oaԑ! ፒVBS1mKr2*&۳8J7?1,PcDGSp*dν)2䐛RLepnX~o wCSry ij~ە9L3R|DoXۖ-e>a+V}jd@p*տ"nTpZ[-Cᣔ 58HD̙,=Q biu}~b[^[k`I?"*dyw/]nPLkTK>}\,4GL)iJJmIzGcxW_W)MJVv nb%2_x0%|&RosSXtJQ՝™wQT3AY.UL݆C9-׸&7x ՝Gu/ Cy,-kܶFzgK:CA۸QۤOB:%ilZu^~ɔi֊k;au/B}{+_U|UPXV')fcyUlO~2.t-큻n54:е(itktQE:TE_Չ:EInwæCSrx d8  uēő0Á GZ AgW*& 43gos 1:f3H ŁlZDI]G&U*m+=x\9.h4z RA`rUsJd@MY{vߠ9?s л Î3, 6rw1\q)2xf!IDv%XT2\JtɸJ  endstream endobj 183 0 obj << /Length1 2353 /Length2 16588 /Length3 0 /Length 17978 /Filter /FlateDecode >> stream xڌtk Ƕmcbۜ8۶&LlO2mv&'{~9t_UwU=$J ¦@ {;Ff^ 3B9ގN@#ˇ@`eef23މ ffi g(D<,-\>W ow- ob8job t..LLFΌN4wK 42@(jRڛ9K󇋫) q:@UZܿ .W KLLm<-f6@ =/C#g#7#K#$F;?g'KgFgKrd+GLEmmv.pt|ݓߗkmgndfigjWLv@i|́.fffn6V0`5OJ9z;;>Z?>༝܀'W?XX&.cܟbٿ;Yzt?ڏ>:W$#)Dx3Xl\NNFQ27xJۙxEJ!x7G33f_/# W2Zxo]]>f@c&_+4tZiY3o!-%,=J.&ƿ͙P``af?2- 1;{_C 0rr2c$V74=nbˇ #;__W`K/ `L7I0q1$ ES/f0Al&?胙L_c'#kdž7s#g_-_A"`&6 ;_[?umLlLMmla'K\>Jc僮?bw&<-(2VVE(vՖe?ӟ8>b}? al??9|<Y-cHc؛#Gi\Ge]]7ˇd(Ο8B@TcC؏m-^ +H1\?J~{~6^@}aQ2W2 zMMBjC'?Qk0x/;u>!A'Tem: 'S zC&(=ĩ*8 %`P:yuo풡utFR/Q7P:|P) R:s`Pjt{v^*$A#T*m~U ]/9={?]ezvd4y%k}MZdq2!yHrR(Bh@Ҡo%>3KNaC=5<̛~*䘸no,88zOAFScvS_8maIt mZ.8=/VB_E0!+)몷+Z?+-!kw;SanN3[Pj.U#c/M[iׁQATå'&:Yw:M0bY_Əs3#{Qt9=[^+QSy,Ԏ!3/fwX&|%*D[~C@.S%V!*zH~3|~X,PXZ͏0"1dWCQrī9)ӻWQ(! _Cv#kNpHpmD(Z<Md@)~\-/,iK29D: L4mY{ꌾ!H=uRm!,"@j=w*$ -A},hգ[ ,FG>{mg beJu"Êty= YcwvQD np^MG=<T[Pjj1evR_6{Q;&⯾--"6?Aiܕ}U)/f:S|T0<#Ƒe=!5#2aAO]dcAe؆UP闼vt jYO1>7ecGߑډ<pxkc9G9N-7,Kh(@EnEADA+֟])~^arˑz)lKqld2C;̒h:l'+M*J +Q}l(#H]57ԗ/HÝ/bH2i|SYax@_aD[9az M"M`AD xZP%p9;6H<ŅҨ} ~0'7ff*@G7_ æ>K!2^LMGRT:!_A~OpGl}AZϵ]%簁wAC}d=rf_"j.Ф4\ݣ#^8/Yγ"eh9Tw䱓iCT.حu:,a&i,fO CDZ ا?`I~؈6 aZɱD_#tUF]t$B͍7w5TW(:dv.(OId޷M@H ${^Dr7/`&a-!|G>`$fvwE/j"6<'2Uhz+_Nv_qL-$xntʅ <%`FU>iSk%B 6qح7M$ZQePN= bH%J _SkTLIl,.@Ԍ+) >M2^_|^U.$RЂrI,.99I \ԫe9Pjr𕼓Z]_8,ۧwSsU>o]tK ^?VL::6̘Ue+*zTj-@IcK-(U>tX0#+!nX$gjregmUr*{cgV)8m(ֈ*bI(\A-mԖ},2-,A$H.Wzp$0iA$vn vZ+d 5kQo2n贊F}H$}vb Ȣzj yM~jHS[q;ӏ uޕ7-!]fqaen-` H ׳,4X EcW~S}eSXCmFTښ Ioq'PóI$^ 1Ywc99@a66 ;V(Ic[zs߄l 5p޴ 4rWًkwHS4Mu SET&(wv]3K C rLYK?"$9mFޣﺘ E7-l=1/\dNޢ^s%*k :R:*7W5x % )Q4=[Х2cg,=Pd2r,XÂE=H;[Lr;mqhWN} Tݿ;5(0Xr z]{Ǡ,2BUQql$ [<Kly$x[YOZk%W460 G8c"ӧxcn.\ca4rZ󊜇L(T`S`]qD_Ao% =}%O 3GiL 7߹eIEF;ـ0!Ma5,F6 N0_gۋm/ND׊05" m5 unJE{3Փ\,nDPuFVk0v M=#'[fzvѨHE/g_  e D,/ѹHFhˇ~fw%yfHͨ7/^,Dĩt: ^Q= >-K/j|^ճ\T35i08 #K(*RvGu 9Ju͇ {c<=ɏE6Qعf`_ߢcnj|RLrWr;84c2RWϟvvּ5x?r<<3HiҘ6Jy<]qL]_eF'V*oҤ%̈T>Q =e;X0n \nW Lg3?ГA,-Z2&3P]G- gƹKrcUUᾖ]t֊4DӭS~-~!L 2,e]R7,W?&eBRGs=4NziA'j䱔#/ ]_@:ɓ"Č^}ޡ[9]" V= &qu]M:MUXx^?)߆%ںgf"(昽΂OW ~bM-٦ Պ$&FQh3$MvhCVI>))S!\SHS?#iYN_ҡZXwntp@j]~m: ΥڦĶBREN5^zP-9ȩe ]l[uwHCE-zZYui Ix.Xw*Vkddޅw s0үS s>Df6 $,źMd,&j_8M5HӑfszBϚ4MrTXRf |$6OB/8<[#׻bI.Ž >eř[zɶ(R"x&!mP敨M:ㆢ4؍ޢ]ȼDn-B;AIg%?)qM2 gm)ä11 _D?!smMSuTɼ3<`?uBcB]!v (P-q>W6]Wy`8\FQݝOREn5ACqgDe* 1iL7omaL@A"u9ǝ=vES3wuu-)8orԊv$45\賛6i#8йw鷔r>hځnHa/B9oty~7c=_n9"E0VR*W?5B& Ccd!"737j%k[SHp byOv&\ }hUߡ'k_ D^s]*t@Y$i0d-ykzm &=s>i2qͼKd Obag&?lw&gxL)S޲jZXFs4M|H/8ܼ : Y7J9T,A1<5*~AW ٷBjՌWqzNR۪*#ߙLV;ʕUc+Ak5|6s|7Pހ&[`-]lEm|'A$*/ʽkIH`V["oA0;\6dvq-/@ejrH[ۨecJ:|TWZDKʴe:'K| \LȼމL/+s(Xq(]"@T֫cPT㑢XC$sUL]L{rk %atE'cIRc]ӊudqکSx^˜ ?A'F isez%`^Prul̂Mݞ@_6d Fbná!7ݮV{y U!Y=NqHKi&~DžXioVo9>?_$dao<Ʌ(P3p^^(vXPIg#&[2XLB0vJxc2)JTӋg"=rAV2|c-m+zHM 6t1z`kIMAw!Lkc"KX u|vx݁st>F@Ȼ2oUuЇ/,^eum8B5/1 bmŐD]?/VLsuI3̎UC\ӪuRƦ|w~*3g.keSYTy} ='YpbϾH(-#ဌOSY>9׸vSE+Xi,+Qya.O.$F]c:- (:TSʃe S rԀ]u! 3А ݛwk^!ɰFM ZtR|qKMuڤ&qR}$.}}:u2&6pzP%pV 鬻di#16 ){_~"LlUOU_|* rwNN_}7ds Mڞz(sҒ9tȁ(41ch=_e%d֌䢩oMVO"BO&6 ug5APzw_~ 'Mŵ;nOՃ W{XnWAP=N(^,&Zcw3%7.-73=84 kр.g7$dMY{HC\/9-yġ}1˙U'j&^ xY ;vX#{HZV0,関.%:TI]ޒ 2(ct>,M_Պ4c+$!^9Wf[|x=tOz싧 Ĉ2qxI3nzw`^r' dƬwJ=M lUnHK0(hUlj"M7\7\gSB-miQ繺7PJ%4 8~<+*hj'륿똩jSe۪C|6&N4dY$)י|>RR2zIؽYGmP3(Q(L}b HǴ-DŽMP,f؏֜oz{4f'S &d<Kf%@9o2#e+RR#ߓ7ЁQ&8 {>PqKn5J-P/ѼOp^W'ys,gĥz;M Bg%Z{oD+ry6qM"1'T XTd בQT0ĥs$5@H(_Dp'45Yaγ8Zc}oEZl,^$ S{bVVwfqJ9 j: 50@D}eY$8N`V}H{KFHNᢇ\'qw ^Ox#`"~#&GNQY|!eHN͕mbӮ3~|8b)n]y_y;pTߙqUgNz{+_U򟸽tK)/r$,d#.É"erg՝8.Z"qegEj< Cަ2vFnaB*N(i%|0y ae 9}s}W޷=Pk^S5MاSkc L~[N8$S)PYmh˒hzwv=[LlUdtᐳ"eZy7ޝ,x4z=d1KH)H&Jd n̖` /K!Q!\5T A"GЗwi(13. ZDzA)r3 wϤ@V}rӼücVnvAE3HT{| t޲g R+: vVM)҃E}5{!ȄaQ?%nh3: Ž[z" +إdl ©6=lyRL*DHB+0zdX$aL f] '&jmYUE溦@2^q/*iVJQ7/DQndD,{kB˺0$ƫAIP"#YrmgR|u _#}NEHJӨ&Yqb\|~9S7E[㈛VƟqˡ~0[l_eo򄝿:/a-r]9k: 岝emY"JC=1\ }hORD#?8$/eF')]?y6Z$F+vY궋YuXJ6]˯ǰt꿶hFWL z[\wo4|!j;I_DyB礰m&F=s3..>~N-I>09|Z==2^V^5=vWx&.ʄCY{)i!֛N RQ}PpKa/_FTlIE6,Gd2C?Rr.@S#VB%N$=_yà_aڈZ&v&pHl#e R}Im zPoa"$q?js"CsؠJl?BAMU6JJ:D-Aڷ j%}kN֕vG)&)19K 0SmG؊wF3GlգD78߶ 4 ] ́K}"-)Q,dc Ӵ )~kVI%@rAJ9JwpG{!Ⰵ;M7=>%^;}܆@8E%2h-\ )tNU'sPmz~bnWA'·e04TKA%x6 `al[fV)/27)0L_>Bc.ʳSQ\un[7__i.MZf j& Υb8b/x_ ~S=tVӐTg+75̍:};Z4^Eޫ+ 1sc`VF~:Ք4ϓqI^ppZ_]i_x-YқK煛Ԓd:ES0C;ΐ)$FPSt jQ:v&ۢnƸ8DfRbΗq!S7s[Xs=bwZl-S c E.TejSEppB<ٜàmnB'4k^s"a߶#룂%4X)&hPݧ+R4UZBO3XnHAFiҙ/lS C4 Mt{&  9PlT%q5Ebv!耿/Q#ILȩKډq(s&}$O/C$V:e_]"zV6m>.Y>Wp\16^o,("[Jra6?n"p{.  K]]ύ ZJ~p{R;fë[ɸF䥉9 T "xnw"/xt utXhb65 E𔺫' [Kqh;N^hzKkޚU :_~H*ۧӎ0佮/w3}.J]~9@yN=P %4);J3mch8aZOCa5(+OZIXDO-6l$)#*}H7N&LJ|6Z0eKD;Tb<:EoƦscTR%\Wy-ك87}-PV5(Zۍk*84%zϸƓےx#ZJ!S5tWpX[90C{@qTt9d~$ Jx كSو ^V"9MzIVTV]ܔ&Z2.'Hk-pn5fX V"J]PH-},጑" ao}'X0ݦ=;8r&u8jvܗK4O5˸ $c۝ ^]ʦ̿Xk9Z%"e9* 5j E F $gyS\\*ZCef m٦>n] 8s] W'׀ MV4Z@?bx apO[3߉HWp5'9GFUGM ;vn&EdSk̙Mf4uönbRߡb>0Њ\\wVkN B<=Xl6EWbJֻ "͢j>k=mPL;;lZH&.:8 bOϥL[v3 d'1m`_u:Z} xIcDuXDĎ۹AJM1' C60fA;ʲ<n:Yr8&a=*TiVnԅ BbjjՙXC7y) {S*d/cW>󔾙!6[9+)_&;6.MvW*B.UjZ7pYXR[:_`$3GL_l%wc,M>(r,֫L]ͼXdM@Mp";'o $q@uGYI2G`2#:j~n P=i _7s;$0 -?."RU!g&NjL"!ͤA>;q~Ӣ(D74 F<:FTmB`Y p@؇L[[^OwNzst1.˅K1!k8c\! FFٱ%3ѨcrXRaAK+Z&LITօ`bŌV(z]0G ]u8_Nb: 'I-"8Z%GMi]ĝ6eS~tZu 42=@RihYh'Nss8#ΨkCb KDKnq>{2i#,g?nF|g!n5X8|[UaDx s L"-Kޖ8A $QKaKbjUGJ[Ys}69qơ^O>#JCsAὯIA)2R,yBFzV)UR<O ~RAMk,p<* xH89 W%3`=~ $3Y]^= #/ & ~8qO"@wVm󒰑=ϓJ ۃ;Dp-I;S1bFu&2pq-n'vBQ~i> 3I2L \W_tO]1,T֓uJZBAQv-. #>7Wl}AIQ^(ZPT# ;#l98OSG <>-=uat$U[XP WZn2߅=FJs*y3#~OSUF y^ČqGi/kk=\bBY4ss-gofgֆSBw h 7ɡrPWo{LƗ i<ͩ2}h 4RAB endstream endobj 185 0 obj << /Length1 1306 /Length2 1345 /Length3 0 /Length 2180 /Filter /FlateDecode >> stream xڍS 8Tޱ]EOQ-O2AR*Yk̬1&Q;]RNH؅JEI]ӖP.]8g h9Y]O1l ōidpqQ St' OvX"E0+pfJ gfjA[eA:j I,8c(,%bb p |8DB(pp,"^BBqWL a`%q"ɐHJ$ֆF@$e`-$'K#N8<0>.$0 B R"Cy'WN ` liMt qH  |DulW2)P|(B?OlzN'J1.%KF2 f{gD0KI %L7hاAy|e<"2nCH_l0T܌`r 1<)D abL Dp8‡?R .a_;H4!\J0;1  6S U|B(B)[re)o3b˄qo~H{| ' !2ѷ^'"v?P\L0\{kBgH"$*:10O<8t\BF1 |LBR)4$b;'G>0 sIM1eL`~LK,qG D/a@QVCSOY7;9Vq5hi JۍvZ=F*w\ɏ+ܕi0o(/Ź.ީ-/!k$%i14TbJY饹6y2eҾ55o_ݹOgxvhҖݭ)vH>Tů4,g5Pi/Xgn5 7D7Պ:3ya AM5o|I_Ԑ'{wζbAOliEiGs 2_fj4rgz9Gf[Wk3}/J9h~?Uk|4R[ٜNTش@__vdݼcp"=Oy\ظ+t38cZs2.-ӱ('5u]팴^Hb+M:wUz.& [G6Z̸9!k&lĕԭR?:I=tm/#Xa RG"2dtOW'=nU$ǃ/:^-2YeINVyé<-GDUn+˝qcxitz8gdYBR%GMܸ}ŗʧns7xfkP*3SLP~PoT$\1 w7Wu}}flYSW-*Nyi/ }xzGxVQ³:3 yFœ9.^o2js> endobj 164 0 obj << /Type /ObjStm /N 34 /First 276 /Length 1650 /Filter /FlateDecode >> stream xڭXko8ί]GTNi)׬C .dML;~cچ@چ${.'KSxTēP9 #;O+9᭎~O &}OaUpǕx%\`\s#\1A|}#(%9`3H"" Gݰw)'9>;3ĦC4WG9p|c?ҕons\ql˗ A!AےtzЇ\%\Ap{E.{>O0a35at3{xX~jk"1L`460™bB$_1,'Gx['d)\G\ l0RWs PB p`mIIa^R`led"!^qhpǣbsn/$xȊxH^SG @U0q0QXe$m yutfS="c"2 u5*a)u 2 UɌA\RB4_2J_ /ht0.< S,齱Mt42hLSy>쪣8Ęk84]Z8[iOgNpH::KOlRbJ*=n7/rUED6Kgh<ǫj9)׋O]c hQ^49B[ղeЮ4}a=_?5q[T^m ҷ`X{lWe{?~S/kwd*ܒL׌9Z`[Qa86˛"&ۻwM޼ ڸ5CA-tNe]l⽴>|׿}G+/[$\Eݷ҂/ըe55 }YKywZ-R]W^++mv%\_'V8͖˅2TgU}VuA0`ۉ)%_Q[ CR"K{o$l3_"x_@bnkm<ѵGR0!e9[1aV5] ] /Length 533 /Filter /FlateDecode >> stream x%=LSQRRVTPZTZ@Cq0:HL\܈a1LĄMzg@ fr!qH##j4dI&XjăH%,*!դ{ڢ*9ozќu.kvxqR U4P Ϫri›;^5 Ϋ{JI3D6-6K-Vس8g.F^շ쀽)_|n pͼ쁽S^ݘ6:Hsxޏ^ e@`߿&!r<4 iD*{I'G\1CWȲ$C89AN09 UQr%yr'2)Ir(ЫLZ0D:PWV5!h-J%J_JU ]JOǕjj/T"_*7#HMdGCg endstream endobj startxref 270161 %%EOF mcmc/inst/doc/demo.Rnw0000644000175100001440000005247213074514644014367 0ustar hornikusers \documentclass{article} \usepackage{natbib} \usepackage{graphics} \usepackage{amsmath} \usepackage{indentfirst} \usepackage[utf8]{inputenc} \DeclareMathOperator{\var}{var} \DeclareMathOperator{\cov}{cov} % \VignetteIndexEntry{MCMC Example} \begin{document} <>= options(keep.source = TRUE, width = 60) foo <- packageDescription("mcmc") @ \title{MCMC Package Example (Version \Sexpr{foo$Version})} \author{Charles J. Geyer} \maketitle \section{The Problem} This is an example of using the \verb@mcmc@ package in R. The problem comes from a take-home question on a (take-home) PhD qualifying exam (School of Statistics, University of Minnesota). Simulated data for the problem are in the dataset \verb@logit@. There are five variables in the data set, the response \verb@y@ and four predictors, \verb@x1@, \verb@x2@, \verb@x3@, and \verb@x4@. A frequentist analysis for the problem is done by the following R statements <>= library(mcmc) data(logit) out <- glm(y ~ x1 + x2 + x3 + x4, data = logit, family = binomial(), x = TRUE) summary(out) @ But this problem isn't about that frequentist analysis, we want a Bayesian analysis. For our Bayesian analysis we assume the same data model as the frequentist, and we assume the prior distribution of the five parameters (the regression coefficients) makes them independent and identically normally distributed with mean 0 and standard deviation 2. The log unnormalized posterior (log likelihood plus log prior) density for this model is calculated by the following R function (given the preceding data definitions) <>= x <- out$x y <- out$y lupost <- function(beta, x, y) { eta <- as.numeric(x %*% beta) logp <- ifelse(eta < 0, eta - log1p(exp(eta)), - log1p(exp(- eta))) logq <- ifelse(eta < 0, - log1p(exp(eta)), - eta - log1p(exp(- eta))) logl <- sum(logp[y == 1]) + sum(logq[y == 0]) return(logl - sum(beta^2) / 8) } @ The tricky calculation of the log likelihood avoids overflow and catastrophic cancellation in calculation of $\log(p)$ and $\log(q)$ where \begin{align*} p & = \frac{\exp(\eta)}{1 + \exp(\eta)} = \frac{1}{1 + \exp(- \eta)} \\ q & = \frac{1}{1 + \exp(\eta)} = \frac{\exp(- \eta)}{1 + \exp(- \eta)} \end{align*} so taking logs gives \begin{align*} \log(p) & = \eta - \log(1 + \exp(\eta)) = - \log(1 + \exp(- \eta)) \\ \log(q) & = - \log(1 + \exp(\eta)) = - \eta - \log(1 + \exp(- \eta)) \end{align*} To avoid overflow, we always chose the case where the argument of $\exp$ is negative. We have also avoided catastrophic cancellation when $\lvert\eta\rvert$ is large. If $\eta$ is large and positive, then \begin{align*} p & \approx 1 \\ q & \approx 0 \\ \log(p) & \approx - \exp(- \eta) \\ \log(q) & \approx - \eta - \exp(- \eta) \end{align*} and our use of the R function \texttt{log1p}, which calculates the function $x \mapsto \log(1 + x)$ correctly for small $x$ avoids all problems. The case where $\eta$ is large and negative is similar. \section{Beginning MCMC} With those definitions in place, the following code runs the Metropolis algorithm to simulate the posterior. <>= set.seed(42) # to get reproducible results beta.init <- as.numeric(coefficients(out)) out <- metrop(lupost, beta.init, 1e3, x = x, y = y) names(out) out$accept @ The arguments to the \verb@metrop@ function used here (there are others we don't use) are \begin{itemize} \item an R function (here \verb@lupost@) that evaluates the log unnormalized density of the desired stationary distribution of the Markov chain (here a posterior distribution). Note that (although this example does not exhibit the phenomenon) that the unnormalized density may be zero, in which case the log unnormalized density is \verb@-Inf@. \item an initial state (here \verb@beta.init@) of the Markov chain. \item a number of batches (here \verb@1e3@) for the Markov chain. This combines with batch length and spacing (both 1 by default) to determine the number of iterations done. \item additional arguments (here \verb@x@ and \verb@y@) supplied to provided functions (here \verb@lupost@). \item there is no ``burn-in'' argument, although burn-in is easily accomplished, if desired (more on this below). \end{itemize} The output is in the component \verb@out$batch@ returned by the \verb@metrop@ function. We'll look at it presently, but first we need to adjust the proposal to get a higher acceptance rate (\verb@out$accept@). It is generally accepted \citep*{grg} that an acceptance rate of about 20\% is right, although this recommendation is based on the asymptotic analysis of a toy problem (simulating a multivariate normal distribution) for which one would never use MCMC and is very unrepresentative of difficult MCMC applications. \citet{geyer-temp} came to a similar conclusion, that a 20\% acceptance rate is about right, in a very different situation. But they also warned that a 20\% acceptance rate could be very wrong and produced an example where a 20\% acceptance rate was impossible and attempting to reduce the acceptance rate below 70\% would keep the sampler from ever visiting part of the state space. So the 20\% magic number must be considered like other rules of thumb we teach in intro courses (like $n > 30$ means means normal approximation is valid). We know these rules of thumb can fail. There are examples in the literature where they do fail. We keep repeating them because we want something simple to tell beginners, and they are all right for some problems. Be that as it may, we try for 20\%. <>= out <- metrop(out, scale = 0.1, x = x, y = y) out$accept out <- metrop(out, scale = 0.3, x = x, y = y) out$accept out <- metrop(out, scale = 0.5, x = x, y = y) out$accept out <- metrop(out, scale = 0.4, x = x, y = y) out$accept @ Here the first argument to each instance of the \verb@metrop@ function is the output of a previous invocation. The Markov chain continues where the previous run stopped, doing just what it would have done if it had kept going, the initial state and random seed being the final state and random seed of the previous invocation. Everything stays the same except for the arguments supplied (here \verb@scale@). \begin{itemize} \item The argument \verb@scale@ controls the size of the Metropolis ``normal random walk'' proposal. The default is \verb@scale = 1@. Big steps give lower acceptance rates. Small steps give higher. We want something about 20\%. It is also possible to make \verb@scale@ a vector or a matrix. See \verb@help(metrop)@. \end{itemize} Because each run starts where the last one stopped (when the first argument to \verb@metrop@ is the output of the previous invocation), each run serves as ``burn-in'' for its successor (assuming that any part of that run was worth anything at all). \section{Diagnostics} O.~K. That does it for the acceptance rate. So let's do a longer run and look at the results. <>= out <- metrop(out, nbatch = 1e4, x = x, y = y) out$accept out$time @ Figure~\ref{fig:fig1} (page~\pageref{fig:fig1}) shows the time series plot made by the R statement <>= plot(ts(out$batch)) @ \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Time series plot of MCMC output.} \label{fig:fig1} \end{figure} Another way to look at the output is an autocorrelation plot. Figure~\ref{fig:fig2} (page~\pageref{fig:fig2}) shows the time series plot made by the R statement <>= acf(out$batch) @ \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Autocorrelation plot of MCMC output.} \label{fig:fig2} \end{figure} As with any multiplot plot, these are a bit hard to read. Readers are invited to make the separate plots to get a better picture. As with all ``diagnostic'' plots in MCMC, these don't ``diagnose'' subtle problems. As \begin{verbatim} http://www.stat.umn.edu/~charlie/mcmc/diag.html \end{verbatim} says \begin{quotation} The purpose of regression diagnostics is to find obvious, gross, embarrassing problems that jump out of simple plots. \end{quotation} The time series plots will show \emph{obvious} nonstationarity. They will not show \emph{nonobvious} nonstationarity. They provide no guarantee whatsoever that your Markov chain is sampling anything remotely resembling the correct stationary distribution (with log unnormalized density \verb@lupost@). In this very easy problem, we do not expect any convergence difficulties and so believe what the diagnostics seem to show, but one is a fool to trust such diagnostics in difficult problems. The autocorrelation plots seem to show that the the autocorrelations are negligible after about lag 25. This diagnostic inference is reliable if the sampler is actually working (has nearly reached equilibrium) and worthless otherwise. Thus batches of length 25 should be sufficient, but let's use length 100 to be safe. \section{Monte Carlo Estimates and Standard Errors} <>= out <- metrop(out, nbatch = 1e2, blen = 100, outfun = function(z, ...) c(z, z^2), x = x, y = y) out$accept out$time @ We have added an argument \verb@outfun@ that gives the ``functional'' of the state we want to average. For this problem we are interested in both posterior mean and variance. Mean is easy, just average the variables in question. But variance is a little tricky. We need to use the identity $$ \var(X) = E(X^2) - E(X)^2 $$ to write variance as a function of two things that can be estimated by simple averages. Hence we want to average the state itself and the squares of each component. Hence our \verb@outfun@ returns \verb@c(z, z^2)@ for an argument (the state vector) \verb@z@. The \verb@...@ argument to \verb@outfun@ is required, since the function is also passed the other arguments (here \verb@x@ and \verb@y@) to \verb@metrop@. \subsection{Simple Means} The grand means (means of batch means) are <>= apply(out$batch, 2, mean) @ The first 5 numbers are the Monte Carlo estimates of the posterior means. The second 5 numbers are the Monte Carlo estimates of the posterior ordinary second moments. We get the posterior variances by <>= foo <- apply(out$batch, 2, mean) mu <- foo[1:5] sigmasq <- foo[6:10] - mu^2 mu sigmasq @ Monte Carlo standard errors (MCSE) are calculated from the batch means. This is simplest for the means. <>= mu.mcse <- apply(out$batch[ , 1:5], 2, sd) / sqrt(out$nbatch) mu.mcse @ The extra factor \verb@sqrt(out$nbatch)@ arises because the batch means have variance $\sigma^2 / b$ where $b$ is the batch length, which is \verb@out$blen@, whereas the overall means \verb@mu@ have variance $\sigma^2 / n$ where $n$ is the total number of iterations, which is \verb@out$blen * out$nbatch@. \subsection{Functions of Means} To get the MCSE for the posterior variances we apply the delta method. Let $u_i$ denote the sequence of batch means of the first kind for one parameter and $\bar{u}$ the grand mean (the estimate of the posterior mean of that parameter), let $v_i$ denote the sequence of batch means of the second kind for the same parameter and $\bar{v}$ the grand mean (the estimate of the posterior second absolute moment of that parameter), and let $\mu = E(\bar{u})$ and $\nu = E(\bar{v})$. Then the delta method linearizes the nonlinear function $$ g(\mu, \nu) = \nu - \mu^2 $$ as $$ \Delta g(\mu, \nu) = \Delta \nu - 2 \mu \Delta \mu $$ saying that $$ g(\bar{u}, \bar{v}) - g(\mu, \nu) $$ has the same asymptotic normal distribution as $$ (\bar{v} - \nu) - 2 \mu (\bar{u} - \mu) $$ which, of course, has variance \verb@1 / nbatch@ times that of $$ (v_i - \nu) - 2 \mu (u_i - \mu) $$ and this variance is estimated by $$ \frac{1}{n_{\text{batch}}} \sum_{i = 1}^{n_{\text{batch}}} \bigl[ (v_i - \bar{v}) - 2 \bar{u} (u_i - \bar{u}) \bigr]^2 $$ So <>= u <- out$batch[ , 1:5] v <- out$batch[ , 6:10] ubar <- apply(u, 2, mean) vbar <- apply(v, 2, mean) deltau <- sweep(u, 2, ubar) deltav <- sweep(v, 2, vbar) foo <- sweep(deltau, 2, ubar, "*") sigmasq.mcse <- sqrt(apply((deltav - 2 * foo)^2, 2, mean) / out$nbatch) sigmasq.mcse @ does the MCSE for the posterior variance. Let's just check that this complicated \verb@sweep@ and \verb@apply@ stuff does do the right thing. <>= sqrt(mean(((v[ , 2] - vbar[2]) - 2 * ubar[2] * (u[ , 2] - ubar[2]))^2) / out$nbatch) @ \paragraph{Comment} Through version 0.5 of this vignette it contained an incorrect procedure for calculating this MCSE, justified by a handwave (which was incorrect). Essentially, it said to use the standard deviation of the batch means called \verb@v@ here, which appears to be very conservative. \subsection{Functions of Functions of Means} If we are also interested in the posterior standard deviation (a natural question, although not asked on the exam problem), the delta method gives its standard error in terms of that for the variance <>= sigma <- sqrt(sigmasq) sigma.mcse <- sigmasq.mcse / (2 * sigma) sigma sigma.mcse @ \section{A Final Run} So that's it. The only thing left to do is a little more precision (the exam problem directed ``use a long enough run of your Markov chain sampler so that the MCSE are less than 0.01'') <>= out <- metrop(out, nbatch = 5e2, blen = 400, x = x, y = y) out$accept out$time <> <> <> <> @ and some nicer output, which is presented in three tables constructed from the R variables defined above using the R \verb@xtable@ command in the \verb@xtable@ library. First the posterior means, \begin{table}[ht] \caption{Posterior Means} \label{tab:mu} \begin{center} <>= foo <- rbind(mu, mu.mcse) dimnames(foo) <- list(c("estimate", "MCSE"), c("constant", paste("$x_", 1:4, "$", sep = ""))) library(xtable) print(xtable(foo, digits = rep(4, 6), align = c("l", rep("c", 5))), floating = FALSE, caption.placement = "top", sanitize.colnames.function = function(x) return(x)) @ \end{center} \end{table} then the posterior variances (table on page~\pageref{tab:sigmasq}), \begin{table}[ht] \caption{Posterior Variances} \label{tab:sigmasq} \begin{center} <>= foo <- rbind(sigmasq, sigmasq.mcse) dimnames(foo) <- list(c("estimate", "MCSE"), c("constant", paste("$x_", 1:4, "$", sep = ""))) library(xtable) print(xtable(foo, digits = rep(4, 6), align = c("l", rep("c", 5))), floating = FALSE, caption.placement = "top", sanitize.colnames.function = function(x) return(x)) @ \end{center} \end{table} and finally the posterior standard deviations (table on page~\pageref{tab:sigma}). \begin{table}[ht] \caption{Posterior Standard Deviations} \label{tab:sigma} \begin{center} <>= foo <- rbind(sigma, sigma.mcse) dimnames(foo) <- list(c("estimate", "MCSE"), c("constant", paste("$x_", 1:4, "$", sep = ""))) library(xtable) print(xtable(foo, digits = rep(4, 6), align = c("l", rep("c", 5))), floating = FALSE, caption.placement = "top", sanitize.colnames.function = function(x) return(x)) @ \end{center} \end{table} Note for the record that the all the results presented in the tables are from ``one long run'' where long here took only <>= cat(out$time[1], "\n") @ seconds (on whatever computer it was run on). \section{New Variance Estimation Functions} A new function \texttt{initseq} estimates variances in the Markov chain central limit theorem (CLT) following the methodology introduced by \citet[Section~3.3]{practical}. These methods only apply to scalar-valued functionals of reversible Markov chains, but the Markov chains produced by the \texttt{metrop} function satisfy this condition, even, as we shall see below, when batching is used. Rather than redo the Markov chains in the preceding material, we just look at a toy problem, an AR(1) time series, which can be simulated in one line of R. This is the example on the help page for \texttt{initseq}. <>= n <- 2e4 rho <- 0.99 x <- arima.sim(model = list(ar = rho), n = n) @ The time series \texttt{x} is a reversible Markov chain and trivially a scalar-valued functional of a Markov chain. Define \begin{equation} \label{eq:little} \gamma_k = \cov(X_i, X_{i + k}) \end{equation} where the covariances refer to the stationary Markov chain having the same transition probabilities as \texttt{x}. Then the variance in the CLT is $$ \sigma^2 = \gamma_0 + 2 \sum_{k = 1}^\infty \gamma_k $$ \citep[Theorem~2.1]{practical}, that is, $$ \bar{x}_n \approx \text{Normal}\left(\mu, \frac{\sigma^2}{n}\right), $$ where $\mu = E(X_i)$ is the quantity being estimated by MCMC (in this toy problem we know $\mu = 0$). Naive estimates of $\sigma^2$ obtained by plugging in empirical estimates of the gammas do not provide consistent estimation \citep[Section~3.1]{practical}. Thus the scheme implemented by the R function \texttt{initseq}. Define \begin{equation} \label{eq:big} \Gamma_k = \gamma_{2 k} + \gamma_{2 k + 1} \end{equation} \citet[Theorem~3.1]{practical} says that $\Gamma_k$ considered as a function of $k$ is strictly positive, strictly decreasing, and strictly convex (provided we are, as stated above, working with a reversible Markov chain). Thus it makes sense to use estimators that use these properties. The estimators implemented by the R function \texttt{initseq} and described by \citet[Section~3.3]{practical} are conservative-consistent in the sense of Theorem~3.2 of that section. Figure~\ref{fig:gamma} (page~\pageref{fig:gamma}) shows the time series plot made by the R statement <>= out <- initseq(x) plot(seq(along = out$Gamma.pos) - 1, out$Gamma.pos, xlab = "k", ylab = expression(Gamma[k]), type = "l") lines(seq(along = out$Gamma.dec) - 1, out$Gamma.dec, lty = "dotted") lines(seq(along = out$Gamma.con) - 1, out$Gamma.con, lty = "dashed") @ \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Plot ``Big Gamma'' defined by \eqref{eq:little} and \eqref{eq:big}. Solid line, initial positive sequence estimator. Dotted line, initial monotone sequence estimator. Dashed line, initial convex sequence estimator.} \label{fig:gamma} \end{figure} One can use whichever curve one chooses, but now that the \texttt{initseq} function makes the computation trivial, it makes sense to use the initial convex sequence. Of course, one is not interested in Figure~\ref{fig:gamma}, except perhaps when explaining the methodology. What is actually important is the estimate of $\sigma^2$, which is given by <>= out$var.con (1 + rho) / (1 - rho) * 1 / (1 - rho^2) @ where for comparison we have given the exact theoretical value of $\sigma^2$, which, of course, is never available in a non-toy problem. These initial sequence estimators seem, at first sight to be a competitor for the method of batch means. However, appearances can be deceiving. The two methods are complementary. The sequence of batch means is itself a scalar-valued functional of a reversible Markov chain. Hence the initial sequence estimators can be applied to it. <>= blen <- 5 x.batch <- apply(matrix(x, nrow = blen), 2, mean) bout <- initseq(x.batch) @ Because the batch length is too short, the variance of the batch means does not estimate $\sigma^2$. We must account for the autocorrelation of the batches, shown in Figure~\ref{fig:gambat}. <>= plot(seq(along = bout$Gamma.con) - 1, bout$Gamma.con, xlab = "k", ylab = expression(Gamma[k]), type = "l") @ \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Plot ``Big Gamma'' defined by \eqref{eq:little} and \eqref{eq:big} for the sequence of batch means (batch length \Sexpr{blen}). Only initial convex sequence estimator is shown.} \label{fig:gambat} \end{figure} Because the the variance is proportional to one over the batch length, we need to multiply by the batch length to estimate the $\sigma^2$ for the original series. <>= out$var.con bout$var.con * blen @ Another way to look at this is that the MCMC estimator of $\mu$ is either \texttt{mean(x)} or \texttt{mean(x.batch)}. And the variance must be divided by the sample size to give standard errors. So either <>= mean(x) + c(-1, 1) * qnorm(0.975) * sqrt(out$var.con / length(x)) mean(x.batch) + c(-1, 1) * qnorm(0.975) * sqrt(bout$var.con / length(x.batch)) @ is an asymptotic 95\% confidence interval for $\mu$. Just divide by the relevant sample size. \begin{thebibliography}{} \bibitem[Gelman et al.(1996)Gelman, Roberts, and Gilks]{grg} Gelman, A., G.~O. Roberts, and W.~R. Gilks (1996). \newblock Efficient Metropolis jumping rules. \newblock In \emph{Bayesian Statistics, 5 (Alicante, 1994)}, pp.~599--607. Oxford University Press. \bibitem[Geyer(1992)]{practical} Geyer, C.~J. (1992). \newblock Practical Markov chain Monte Carlo (with discussion). \newblock \emph{Statistical Science}, 7, 473--511. \bibitem[Geyer and Thompson(1995)]{geyer-temp} Geyer, C.~J. and E.~A. Thompson (1995). \newblock Annealing Markov chain Monte Carlo with applications to ancestral inference. \newblock \emph{Journal of the American Statistical Association}, 90, 909--920. \end{thebibliography} \end{document} mcmc/inst/doc/demo.pdf0000644000175100001440000135474413074514644014402 0ustar hornikusers%PDF-1.5 % 3 0 obj << /Length 1564 /Filter /FlateDecode >> stream xڵX[F~WmW- ./Rg!n ;28v+$&s;w.sf0>SlȔ7: Sl:~_?()T, \B]50-ϡ3[mu( -z/mRy݅e~ִ@ЮC)/T)%j4k cEe=z e7@ꕀ/0x2oP*f^8iBaJK8O7D\#jД*̚LYaGf2Nx*3.coic 8fCٶXRfY{V~$tB2F5L _/qA2$3sQé *{hN{,L؉2y''c[UV6Bl']q(ubGA8 WI}ptj S_bO̠uc.ipIGîpu HdC/ vxϡ*DysQ'&*S .{ƓIA.^JIJ:>&#e5&{Zў?˅W 4Ut}?OFɈ

"59=ip,p*7]ܜ?#8c>DO{wщ}Lo5χCNNF+?m_1'u4wI1"O!R3HcT !>Y Kkn/CzɇsdˑON_cS# KSn=V> stream xYo7 _q+欱z eXa{:ǭ}vbI6ERmNA>݉)/N^q,QItqIkDbX\t1~; U7GhShh9!$t5@Si_&-pfs>v}VDg]QAg黋_s*K)2kI? f$%UGV-+ s})UZdR;vɋݶyXxخToK ȃSzoPjh^!8 -w: 9$ܐ}Lbz:WD:Ӭ;_g3G+uTF!* \L; \5t85'l}r@:e} }! ?]NyOl ͉lqEbi><z|-6םMwˬ7$Lǰi鞞xK">*.X MKN`T|TZg+!YNBdAQ_Ku"6XXkCKAN̘8}@+*"{ծ~T k];SbB}/dճKmL#L AYf@/ odnH-͊ J^ܲ+,=ix+r"et?MyhC0(lc>ŌMOXW wua.M0)}_! hᎈ~ƴr'\WVUg357D~1{ƴKN y;745g_}ۿ5~W@8(5WEʸR*t^5q X iqxR.K\8aMFpoiS<>k)`!ϊ1rTf-V)橲2~ ݗ]m7>ߋVqn+ͻՀd z݂yFTUHP*5 ?Ebr8.*C\)f_sb:*kNR9sR+*ŒWb4 u(f'0x:,P! Z=j ˶dzF ⦽.%C6ϴ0j"T[OE:hU&s~ LYE6%ұ$'\ܜx`HFʦ"QY~:O޾ I瑱 AfћOeQui8bJ)خN NӦIIZk橶(on}u7;to1q|lsJ$K$qn¦"B*KIT?{tmMck՞{zh1FT_-(JvȱEg2NXi뗈e$o{}XBR#iJikZ]%ODI[JX6qvf[=.{nu2Y ~6>G7cq'ѡFi* ̯ d<,/. &)O0vO9@ktIg4U0ꍘK ޑ/t;XcYOLyw]g"8 (?OAѬ]Vo6z|tmtȡǚYϻ<&6 *B|moo LJíƞ!Q]NiV_VT*iɘ+'}'iWD :xUySP&Yv4tݡm+=];C[7!(U3vNdRBثh˛(/ T ɿR9։Y X՗t =r:S8} =.L8Ϩp endstream endobj 19 0 obj << /Length 2246 /Filter /FlateDecode >> stream xڝYIϯPQplāL|񁒨%HA+F~),*t;w4onB!O㑜|kMCEYjKQBg4磲a!>$Aӡ0c; x0޼OBKG_dMo-W8bG嫇r GC*MgUN6vWe@6]FbYa 0[$75?tу9W b{PƷx|*<n:$-ٽt?HEe]͋u5@tsR4Sb h+x =7Ypw4(s T- X0G _,J_.pIUvy9 !(ތ[I6 lyDŽrUQg=ͬŮx(5 b\y;Fb{x/6TO84^09]DQ.<7㩇o$ C馧k;aO ~'н'mwaѵ4( J9Áv$(|4aOh^I(D:2zVC|aߒNK %_k@pdĕFʾYU5mTY羰AUCAG=׻g-Q 2uGb\U+x ):^#W=Hu4i8m;W)Kw hmQXAOM!ːhgۯbtC ͼyZh<߷cNzBb# /qphd3 ;")Տ6RGN DywhۅҖ2\[Dku |ɕ:Zy~髇S@ԷCd.tǠqܹ_%S͙Tơξ:!pDGmqA+9.Ȉ]@/uDU_&,9 >E {A ,Qo$Vҹ쯙>pr+ S:F݃B2A_WȦtj -dPu˛4bwp8;&t 1 8#f>6ڼx/78I!݃dp,x8YG%/&cp9"\CgAr=őɂ8/ ߆E2ZSkVQO7 Uo[ pT_ g_[h)X~+׶Vy )~/)~c}+\'9o[25=۱KzTy̗0.(O7҃STz{Ƨ0JCF]F}q65JZOD[ U+9sNS GQ ^lLFm"dM鏔s}!*. A#nLÿՁzVRpM0M6t͜QldU,$Aw|z?m8 endstream endobj 23 0 obj << /Length 2478 /Filter /FlateDecode >> stream xnF>_!DMɁhKkHilSfӢ{HrϪzon?|TM_Yy]̭nwp?^oDiUb/0_}~w qIaṡ>O^6ܭ7& !DM HkSFgrQ}<{3 FHfdIӸrrھmq?;xSxglpBp_{e5b!q\1x # iy#Q8-F.!ґ /kG51_Mǡ#A.HD'dP\ '/Ga1"n(ƆAdž?B_ҙY˨`ĎDhAݭ*AЕnb$\Nj~:H31QڸvN:c"DzLh-zO"7Hm6b5X"_e[XP>ST,D!%ltr>Dx-1lz+cs D.Vo5y 9vT45;#(z{P7/]{`≙5 `9tjD&ȭN G?~J ~ o) $D$Iox,Ϋ]%Qlyei2@ZCeThDjt9llAqmͽFMYQQ43cw@7بw Ė4k{Hz bXuۧ.,3*v52\\dIE,DIyI<3id@mB󄷼E ^}Qv [cA®N%) 5 *,'I]X!:!Xj!b1oŒabGA③+E(m72 }|̓j]trMZQ?9(k-2&ZEUeElDqJbl1F'! 6< $L,P1Ū|5KDZ1M:9}-[%fzĀ 3MN :6"8lSQpbqTSvl!0y" m[73%?=[_dJ|HCQ&S:ccSS<$Z}q|i&"&W0Clpe\YiU02h7u8u2(T(DsBp$TRZy[N6 6,|ո,P_)|MX0_o[̧lk\ؕiZ6[}[> stream xڍVKo@WP [} (!Vzp8jٙ&E(Z{wf8*S LR \T7?Y/1z{L8Ԩ袝|_`3N/ehziLɤ0EYt_&*^ºm9ORcL^%&"Dop,$yUۑD{K@$:8V'Kk"eF܈‚Rΐm&I.@+4ֺ"-! V_=7IK [pnìwn77@&h$K1/={~ؓfC#A9rEglFkw90Ю@ &TSb ˰tx=M7(D-42h立|"Rgz(ІTι*v9\QU9e \ 7NgYΧR@o> /ExtGState << >>/ColorSpace << /sRGB 32 0 R >>>> /Length 140236 /Filter /FlateDecode >> stream x\ݽ-?|>MXJ@80ɉ` u7Wk3ߜsOl~۟oy5OoS{6ϟؿd[?sowϿ5v9I3z?}s7O'9ӣ73_z/&=LcN&jAsޙ Eg3oy̿ǟ;)`aMkc ҙ@A ·7P v\XqOTq_չ*3/[q2l?QI\Ϧ6`ә@ lϪ3Lb6fK9\̼8wx3Ⱥc!.f6#LkFZ]up1_3r3q4+%Eg3fߑ ~g4LZ_3ҳ>:D{9ƜLd(fvv&8w7#`&fg׌X;݌l{ɞނLٙ(8P8w|aav`әh9Ɯ b@@5gw$:'7;s0'әxQLx92nQߝ:z#;Ә`&׌;l3s27Tί)YLb5#/`ә09L V'ә}6~4&n^''s2İɁ19Pr癿˵wOmB3rq2>u1.4#֘9@ar΁~cs@ >4d|qq @prɁ&@pr\@1jY錇Bob0%\ٙ9Ό= +&qq.v`әɁ=Q׌4dE5k7#7bffgbԆɐ@3rљL\主i .fbT^\14N,٘itJq\@68o鿻׉1C^h\ l3soU3ą_^9̵hUHԠ5v3򷛇^n4@5_3r1;ӘqStbr09PFШ 3wwmv{vr/Hfiwϯ20I5#7;s0hOљ=Ur7˴+8{0A1ӘɁL¹Fޘ9sOIkb08;s01ѽ ٘Ɂgr-$fcv{2kFQ``=L$n Lc:s1n.6&5#[\`&׌ǻn.N3_&5#79@1XkkS{9Ɯ @@3'{`c9Dwp=ģmEg.facv&!(9P&J|yj٘iLg.fju&jqsﳬ[q2*я_3r3ӘDy/4ffcv1's1%P'9Ɂ~͈M,SWa&׌439Оqڽ7lXo dHhGٙ9ڋ`c9QŌfd.f039P@͙q0+P+1I19@c29&5d|Ɓq @pr89@ ?&fc1'yZhu&Zh9S |cG݊ILnF.әkUTǝv1;Ә~ӊLb-ܼL$]ULg.fLJ.rɁ*Б}`bgbvk8$@˙hFvf<LL:Y bݬB1's1 ;s0'ә@1M8P3&jɁ:|mqm 渾\{ }z^Lg 97 QLӤvT07mכ3 Ls\/6`s29Թ$ߋit&ګs_Ռa͸ úU*:'󻾿f*ؑzrM;0E5#7's1{#39Pp=zQ%1q=wnF.d:s1"r\oTӘAl1άɐuRь*ҙD"NJ#yٙ9\Lg\/rFmcnFn.fa=߾/[gs2L4_Lp2q97Nr\oKc:s1fcrŁdr%(8P L:/l,fz}qٙX}Ә`j%``\zs23IlɁ`r_3r5$≃כ9tbqpјhp1hH >@@hX"f\w#ǵU/Xہ_v`b@ob&r\_6&z#nQ7d.f0X_v&Z@ü7t;r\o{@$&:N]MLcNbD6Lcb0HNC$w3b׏;"rv&#oؼqX^9Qsq&vјA@0vΓ*^4$mO\t&VɝFqO\lәκsfa6fgs2)]J.d:1zf\_72*To1^b1fcv1'ʏbߍ.ޜLg.f)ё~~AݓY鍼L{+zN32-?̱Yqm$/{4ģm6YqiLg.fęub1's1L,ܬp=Vكą5Z9t`Qtb&1l='!9qT525Shtf0"r\ov`N35vwz!ǵw!+&۳zs2Qg/.^>FoL8ZD{$Vɬ-x=VC32|F1 97ӘA8QqgcVrZ}_3 97$7;)UVr_t&8Nfc}eL,b1fcv1'Jbr@9(9P97;=6tf%xbo* f h\L-1;s0'ә"+Eg9?Lc:s1h$D3|Sp23Ifeg.yvowa;E՟u~ULc:s1fcd և;n?433.pLcNbJ$68PLԜYs2ĎgN[(zs0 @19@c29А@I4dȰ8JS'ǜ$·ٙY;}̫2tN*/a6`s2q3:˙Lb "OEg1Vu\/G97ۮu~ML@5Ur1;{3hC\tf0XS%/;s09n@W ^ܩs0Ƒ's1*39@ T9/9P帾@Ɓ8@ Kq}L֌\ acv&rt:'cfg&&EMnXLc:1F1;Ә`Enٙ9\L `^l433v3fP&1:=v,\LTA%54c>49U g.f8Lcr @Upr*NN4'ZYe3s zg WQ'q=Lc:sYqW%l4d.—nǨG/;s0'ә!fg1q4?Q1 zgr2Znpp<Lc:s19q kLd&lάYLg30;s09#ɴQW׌\T9ƜJ8D~B^ss\zј&$iF^&^N3Lfr1bߗ9tba=7WEcN3΁:8>Ftb&qFo̾^J.<X|ܽ\u\_v`ә z1=z3{bcv19Psf'~3s2j/Ѷw.zs<L KWZ}A7adm;qfg& ! Ix븾o; !FB`|!q9039@Ù(q`8g0'uu ƹa6&zq} ?DZ7_Cz9/urߋHmPr\/?orĨt:uјiLg8 ;7N:~^N39{S[Gzs0hÉ׋0vGӘ\ owC/ U`C &n{#;s0+wˋ fOrag19IN;;u"$*`s23It2eEtNF}SqЙLz @k0+8˙@}sјi\{'7z3xӘj)r\Hdy97;s0@ y}s\_"=q8Īq1kn98@zIH׋av&jwe^bJ{<tLiɼjsAV֗ٙƜLg*9uј9`fȇY{<ĞSc:s1s­*fC3ȱIqit&f;a5#/;s0'әYd&1![433ՌK;8P͸@C%8q 4Y3eg19@3΁11(3|23{Ygco{#x}uf\+Lg30;?^[_:s1X_g[ovWUsvʿ̋TٙƜLg{:z& Lc:s19PoL9PLTosϛ'yUJ_iEcN3D{^@@prɁ&ҒN?LcN3%P]@DwR_6`s23Ɂeg^qTu?u\oL7Tq=9Ttbz"f5=UeZzY%^GTi$/~{FEכ &W>Z[tb&^:uhLgbaJ{٘y%]$r\­7=z3y9NƗI\3VsUbq1[_r@Ii$q9`E;c92z#J%fc̪@͘*0q_3r39턉:OH[o&q<Lcr䧝LcNbN4;M4Ɂ&r>@@9^DfMl4&1q渾 bx٘9),Tx`& @Ɂr1@qq!;\ AL&6 ΁:|u;|,&%DMd=30VWl>4d.f089@ԣp=X˪z10;s0Ɂv@QDŅ<Y 7Og(zәē*ؘn^r C{`ecv1'ә(΁`bPs;s1^)7q9q*nyA٘GWܘ f1;s09P:=)r{p .^`7^5q ;{Cv1Q^}qա8wϠ4hùQ9#M<&b\Ͻ|;9k󹋇x+C8JACsx1VXgŬx8(~T]l)vqQkWGClbc(1\DvڣM<&~hm={B}pow! 9?.)vK!gīA;o!bc: /q7KzgWT.68=bwgnKGuKzki_ym%xMoHbl&Ę/[ϛEe7o;$^ _9߷bOC&7~vO1oKw^ծro7K|S!Nvx]ExKzg7$0o$^7g8zC]:C>x]y̟Xy/ֱ8U3o9bO8!%~HտAr|]<&vS|$9x1>%q[wm|z'?b]oV&bOXīv>o}b8K9XOsM/q7XkO7qx]]{@/0y<_sK|M<&x)2n0SbZA)`2~E4y]X3;68716RR`m(Q1^Ȥ RoWI]Ƽ~8Ĩj7\/jŕc}bW׉W5^~ϵtb`#n!|^m&wOC,Z=o!68qS>xC!FK!%ސx&kxM39^xSvžmbxT~YV9>Vy]l)vKK!x{>iuk^$ڣƦ!e<&b|_]j>7q?hy<.q^nye9L!B.b#p\v<&bO x)r%^ y_v|h%v>7x%^xwv%ސ7d?bd&uS}}z{C6].vx]bXc>.|<׫_Q uM<&Fg G]lbW5^Sī|/%^&C/D2{M譟r߻x7n.x64^'O~bs+gkg~2TjClb/q[M,,_S!Nv`>}{'k%]Ϸmrc|}vvtoАMNv[&8/8!xfK;^W ۣJm7x86g],L♋%I);%ޔJ);%KOя!N)/k~į.F/kLL|n!61 aU*{/7qx]m$x=1oc?~P♌:wqwq_x۷w{t> T7)9g-qw1W/АMvdz߾(zd^S˼=O~.bg@C6yk?=~7쿪VY6_Zs#n!6Kj}x.jd/ͳyM%NvHhb/j|Xca=HOl)vqsSMxO8ٵ3oj>)FP?Ʋq#_W~)vqkki;?3hc<'ޯ="7=^yj~D#{41M俎SMqCyv>7q)v'nO|=~zԐ}:!Nnnw]O5T&x9׻ڣr~o&]n51o#!_'=#!3~%Bڟuc}C)kxCx ~U'^svŨW~3o#؏6xC&ZGGWm쟩u};|gPrf/q#n!6o$I9 8Jv4q1z!GClbWoeo?~Clrwq{=Kd7|O8/ 4qx]bkC,kK,z՛yCzI>'}^`G],ī }x6o^:Y39^xSM9)SM9^x.\בmCzlC<.^b7 ?#4M<&v9mM<.xAGmrx%^{Ifb$^ vx]u9.ox]7$^'Sb䷍ɶGClbK< x߁gtdS!z(V&!b#_zo_mxM%!]%^HzgWI۩O:xQOz]owȯ@O;x8%}x]u!Nx]]nIoG%~xK.[_YooHOR'&c=~. {QodW=I?G:S%NvK,m'm/_`GCi/!b/q1~s~$x`S~~ߗy`~uD=ib/qF6|޶ޟ/q]mx%ީZ5o%^xv|oG6ض߼#kt؁yvMOvO9ɞH|9&v'1->@=zm7%|^_b쟉*?sw/!CUg|';qX%`Ssc}/۶wmC|>O}]@=Z;ן<+ۯdW=]Kx%~?=/'V'm`bYC=}W&K9׻ڣM<&w qSboO9ڣC<.^d۷%^X\߶שO}[&qwuoد+߬=ϧKOz He]x#n.xڃ߶s?3~dx-z5S%NvՓxs.^`/sx]dsC,\9ع_=5.W? v<&bW>߹?6^3Yb䣶s?x-]<&vc۷x_xC'u5~[_>>۪wKy B6yMz!Nv>w1s~mC<׫)NU/}v'{!S>>8Ɏ&bݟi|!N߾y9S%&7>/qo'ݑ߁?8 e/*? .^dI>7ī|x~oy^#n.6!No{XM7X#.ϑS{y^/ԛs=Vw1ׇۨB%FN{%{Gxy>yd#!6Kqy6uxoȁmrk? H#,S? !Nvq=1~Fمo_j]&x38ɶ&4%?O1_>2?~Clb/sܿM<Ķ8wK^'{5qK%%ޒx;?ċ!!B7$^J}ڣ&C{m&7qxqO8PolzhhzF)v'?&xK!rC 7xƓ5oxM39^xSM9)&ƋϹ8 (68^oI>׵|_+U귵sClb~ЁmrG=<*{V}Q۷M?x^85z!6q͗1o߾]KĿ=L8=Kd{w10&cv?Ot.^b/Xī/x_~M|_;ߏy]⼍mrc o]n%^x gy3?V^^7qx'~qO㬷}b?Um~>Hi_w6{b~xm/qg|M\mŵ|5ۮsO8uoW].^`Gn.68N4y)vE֛v'yM%vx}%~x$/;sg~?OnNְw?g?)vqgqu1~\lSĸv%_yⱿo{޿_owPo<؟Kxk?s۷|C3m/Fz;xŵnf/b e#]<&vk=>.6?_m2񪿋m3mr="wKx5~sjS>DM~?xq~iv{t;o#{˵W՟C69 _1 |G~vkA69ٽ_ﻭ#m!ym?ԷE;o+{Koyϯx8ɞMoJ=~-xo;'{=&~ȳoOy ~YG]l)vKvJx9/%^*v1}7umܶ.61Ca?!dz.F~'*KXU}~qwXKxS!xSO/q7]<ĿMtzYm2{=bW?ɞ3S!Nv`~_{dYՆm8GdWmu9?/1!ʐMn!z|=w=dm>C69٭1*6#џvwIOnkxM\KZoCl)q1۹>sx?f~NvCllo g#/#nbym,xC:X7oSK~C<.^b>|>~xRC6y8n6|? d?8 $2ojM^b! ۿy<&vym=By)vqm2%)v[ES-Ny폸XU{Yyg>'{5qy/sAs?$sXo׷mb/qWM&b/⼍z.o㼿z_wE})C6^s GClbs|}CY>V۷!xIܺxMjv>#?9&%Lzd{?8mXo|UvۖiS͆m8sg<<_m?x8%nnKxb͗|]8)Fƻ};7x%^ vx]u_~N d8ٵxſ0|m߮xClb/q%v<qwϜb8{vjSQŝNz]<&~_x|s</p_a)߇<3k~|r]5]<&vII6i<9.)vq]۟k}/k?T;68صs#  )^'{6qcVYo]d#bWϘ_s=|qq7;M8M\!Nv>.bK\jp'Cl~}oOm^.?IؿmMbzUOuĘOGy]ɮ5okMxmw/qxvcK귽+Sz9>>]<Ć7q?)vqX-W>&b#?~.q0mxoW51}||C!lb/1;Fmr#ޙ^</qs o{x]\sq>=.bx=%lbWO!Nvɾ_F9sQM_S_%ɇ&nZi0_ PGdDN%l<ImP ޹"r-ƒ~9>cWGdYF{׿GCv;LfG>?MbO^8^{3cxb?~ݐM6CٽXuI>KxMO1_uś۟Xeg?%^o6g/?Ko6О߾Ϡb}{]<os}gMo/v;InK.~cm&O:so?|M$75oQo1O֪^kk.:f%f.xk_/9^/C<&v߮em{=u|?ovK2?OxF6Aϑ߆uKz2_NG} `:)6qr7;>c 㵖۷x]e3^yyMox%ޔxs%ޔx%̨c&^bozM,K%r}kx.%KĹb}x#Ys>I>OQol%k~f헔zۧ!6x#MeI)Po1m6o?I}]<&^bK3}a5~C<"ZV51۟.qVܿsv]%F<߾I8(8ěI~!xg)ު.y$UҐMv{M FeV?;lK-6v/+ȟ4>8ϣ@vۙgMb;g9gd2K8Y?>_'ZyD' /,mF`G&)Fx#ͼF=Iw#})FkGƻkW_zC6y?#nbךb8Yη71哠6ό>ٹs%^XmwƓnK\o~]w'8WZĘ]m?owtwe%vf&)6=$^u>r &^olb7cEma/Zov-VovfM<oߖx^m?x}]<ŹwG6E}zo=ޅm7!sKKT%xz]=wmM!bݏ{Csś=$|(h:s>hM!l/}}u۟|[b#z&)^b%Kn%f#bK緎'Ǐ^GC)׬|.msO8/%?K,k.x]u9.r]u9ށD7/muO1gr>ov'p>N6?G6ַ͐moco~nbg6KWMu7ۛAClu >u_I>/qwg5^/X_ClbEvT?ovK~n!%vq{_y]<&v1I~hw?:s|~͞zdxo#uV߾=&vqs+>wxC%KM^ox]<03I^G7O% I8عgj?xK)r~G,q7{7qo!ĹyxO`r{MŨ'M!G򹋑[Q>/1%ϛxx%xg?%4ě9$m7vzUc'yI>wS&GdoM<ĹO=#4ߣo>4q8ocho=SG]wk26+9^<&F"߾_Sl%xMe1gdc/E}mrgko:ٱ8<}{"5OzM>gV߶7E؟Īmś}'^ǿxM6]}ّo?.b/q7;$~Hb'=5>z۷vη~^V˞o71?֓|61313yޙoGUnśO/u;GO=&xgwK)%=bgϦXm_g7qO%x%%.B7$^H w_sϸVy?bǑ?Mb#_ K)/|r|ss|sw8|ާX陿}y51gb|ݑM6G{vԳDQoz=k|sc=R=&vq#罗xM!}ٯ3mś%a3?&7q#7ǯ[m8ěmMSÆK^%ޚb$^~%s9^xP!zEw1ڃ0x#bl%vq6<ַ}6CٳXO7XMgX39^x&kovC<&v1gZ]]<&x]Po'vc}[>g{IoX}_vgk}#zoߞb/1|7=.F~[wfړ&cd~>~?ɮ&v1֣Sw'&F ϛ>olbu>^Ҫ}t{]]oxgMs}&b>.~>yN6G^>/7=.g~9>zmWxM,|K$xM!F{3q/}V!>s>d8W|.|TO:Ʒo/qכzqKb |&_j:k]ٵ&)xN3~*?Qo]<&^bٴ#?f/퓿!z|lobnh)6;o?ޏ߾ݛKWk<./^^b?|GL{m]sssX[8/u>O8gvK7q?㛣O88ިm?3^n/7{?b-MzGVXYdmr_m/q7yx h<׷~kOƓ>/]<{}pq}_Cl%|ͶGCcsoo|]+Os\bo=bC6Slb{=:'__~mrEo#boK>ϣM,b%^|qwxz>kz۷_~m2ާ o]l_d&)^bNPo]/E}_r=I׿)^b;ד|nb/L,r|g]<&^oIOY|!C̪'n3?Fm5}۽x o^ox]<Hb7%lbQy?73_fg3gVԷm%OoomW|!ӞYuOhf>r >C1~/Yovn~)6gt}C|VWK}cT{jC|ʏ`G],s=j_כݛĿ]g"7Oo`?zG]<&+ N6{3x]w[S'o`#nbgZݟ߾?$xt|uGC|Yq{Usou3so8ě~bקr|>ox|ڿ3f&)6KZiuOx|:owbU=ȟUI^g>Rێz?mx1|fg]?zf۷MĘYuYޏxM,6g>zj})6f9~o!6XuכXec #_yx3_x3?sc=I!ד|z7;?7O3g^oIo}u.VQ4ǛMb/qf{ .)^b{KYY6Coghj {/v{C7+^)^b?bW=|x:}g!O&^b_P/'2oX:zϬY;Xu7q+Ηa<4󇐿_F6IzMq۷!%vfċ&x!x:/in~6=v/w]<~l%v13Bln7O];O>OxdwMb-qm3sg{oƛ0N6{@>26̗5;v=&sogǖ8ě_!jʏ.wO8C$.xsU緾O{M.ޗo!o6nX5K6KK.%^xCwH!@`O3;2v6yMou7߲>;o_?/ÿ_~7o7? _o->?i?GdO?N'᭽?O^?gs9?tӿ}O/ g}Ǹ_oǿן+lx#)1 ?t??b_o~=l 9紜?o:P/_7{?loh;`?|b*N3{ĸz54dicm'y/fcd΁: r?le9xfI 1/;ryl? V;'wAg|m\?hO'0n'3yR d`F{.A5v;skuvg~߶yONɺ d.^(1;w&:(Jtf07o`, 1әI v`Y.3{l@<, ;դޘ9n Çv)cH}S8Η <(n.Yn`Ȣxv$Q\=Fn6`N19Д@hc/C;uoٿM8ov`0W01:sGԊ9vL 3јɁV=#YNz3s2ә@P#s0'Ә b@#79P@574;79\L?@ϸcfc;;DgF-F.vds14&3>Y}N0<8 #79w<'='sw6f7i[o 1әx#9@1rmJ3oP?7vh$qr;ۆ;s0@ar΁s@ >hN;9hr 4dqŁ@(}IOoLO'P{۰Lc.&ux9#av`Nb:mfq2*/Z#;PTOq1Lkd'O{H6`NQɓq@P 8vjٙiŔ@89@sM4qgI:5y;dәA\1;s~_\`nW>4by|!@zJ_*8r% gq?4&h_h\4b:Ɂ~'s1 NM`6F\SFQ;6F\skax̼ۯꗃ1;s02Nљx8ylCry`Omtjr+fyD{9iLdɓk9בysog;s0 b:3Lj˻=M܍ٙ en'G{1@L7;n`Nb:slLk4B}o:3xZ#饞)os1qrE48q5Ǯ,+#әA=Fn6fgr3Tŕ6|mabcd.38P@39P3&ms΁N'oWCkb:\L|Oy0ڰ[:_3'ӘΔ@h8 &2 uώlw}ٙ9Ɂ~<#7s)앟1p%:dԿ|4bb BV0;s0'w1r3.vF.6&FO:Butf075fgrƁbrƁ03_q2әxZ# 4ɁPE;9hr89@h24Nzutj>٘9@E@΁ΈE茸^@|q`p3Tma' ܭ׏/$W);+.̘g;3.'wwM1s2Ɂ&F֘9\l}bĴ3+n\yO!, HZԙHKyO#c`z!&VU\Lc:3039Pp3zQmƚ)#:Ә}~7Z}43&jWJrFr#qD{r_ٙit&4j;Uc3x/ݍq%N13h$ {ɫ`\{'g=̎~Z9 lLLL˞}GMgnb<;y1ęTM܍[e}'Ә}97;s0DJ6Ocۑzc2H#1q&XJN+v@*eg1ә?L1CtnxH n)=0*pr"^;W+3ezYqsq0qz۬}\Ygd.3#OLGo![p`꼽TLc.&f,Oob<5dGS_N&@@JN\4lNqјX ٘9\L Y" @Q߱9*:" ^\Lgz439P@3-/r\o.f07ؙɁxw5B>FNe蕜1s21~r\orj~,N3'Ә3y6=:s0_2%̼9[ߗ9WUcVY/3'ӘΔ@9@{09Pyqs2bgq cv/s~&G84&F1ݪ_]ŋx㠭כXqs1jWs z3s2ә?OlNܼlD jH:3SM=n9\k d F>y-܋Q{ܼt&Fz^A9'֍`nb4&tVVYuu{bs\7%+.3s/YxlL;kjNei$73'.9vOfg1,$[wpfc&ʼ­7$0DX9':Q? &Zcv`eK/9@*-eUkU^N1M (P˝wq19T33sb:3.#9iD#UU|5 &V&r渾Lc.f078E36?UNn^~׋a6`N193ILi̬IGĘ0g-t&N`lJ8(by6bٮs58fcvd{s3egbZ_$/R`ybq=L )Gq1۽D=??`k9tf0"tjZv3ǵD^4bd˯dlF͐ȸ3s2ә~8K;y?Uqdә'Ksg֘FҘM>/d|f7r\onxtj1rWiLg1;5/wFf\`nqrlpK{4&3gyin与~*q2yvq1;s2߅ܜ[S4b:#Ixqכ̸­m`,h#ǵϼ'zs2d[mNQ)^v`s1ȏѳ9 @19@1r M43Uw]}/;s0'ʝծESčC%/39Om7&Dk۲zs1eg"cdƗ fŗT<~ʿL; ;gcgO/kbgN13|#ughԼ\Lgnb@yɁ:>KizUGk971glKc.f071'/9P@Kd(s\_r 4k0䭲fcvds1%&:u9/9sq}lLc:3mxl97qOԈkUF 4b:Sg\kI6&ݽ .&aΒa6&Z1S@GҘqS=84b:s+ǵ"J)?.3UؘL=hI`nbJ{ٙ]TYz071L4N·٘9tf09q LdZ|->ŁZ N0s0'Գ ӞpesL a &ٙɁ6μYʿęNK̤ כfgdr\׋At>yDpH.әĜyɁ8KtjNB׋D~9yM4oG/yg,#vV-{9tf07q,N6I^rƁ8KԳV~DE^)^6fZF#Uj#ǵZ93$ΜLc.& gju#u侇9cjupt&.-!fV8zޘݺnLBW­771^v`31qs249'Pdәq[o6&xpooHs1U35ԜɁ:hOZq0&EA֛Zp ۑUrq2Ɂ&ʡIԂ;U_r0r\o6`j<y_Yn'1N8OD#a/;3ٙɁ1ݙxd<\LgqsݘwsmL%}Q9\`rV> ;"j31&s6QSlLɴݙngh,V6H*s\@u{܀<9':o {ώ{9Ȼ~2ә՘ɁZɁrɬYpu}0"A6dq'"rЋA֛O_yAG=e9Ĉ듷Jwl\Lgnb{9 rvF^1 584b"*KRF^n0@333wO#54b1/d˒x8 c2n`gz&)6stCl%vo41zMꓞxsDNx}~9Z:yM52'|̧\|^7OKlx.Y9U(/q7;X K%ޖx{%ޖx7k:퇼zպlbx[K@پHṶxx]!ڃC<&vq3l}wXyM!Fqq1ݭa佾Y?zMجwGMo7qKzMo}K&!x.g"ͭ0>C0<\>wO1w/87qO3C\l-Kb7ěoNěd]6gr&Lo|f10ukxC#/oQ'kx/$^>cf&):c|v_>}SĘjggf+!z_Z+vM!\l.K&xs%x3&La~0/1/^'OYoYb3}aUs/Ę?f#n!%xxާ?Sl%fg̨O<&*c|Dn2xnoϓ9ʷxMovxwO>zC1|!],rKyz%飗Z?x.ğojyxCٹMg5~%W }ś"}n!b$-(Kn.b/@xmf}bz}b]7Ooxen.b/nM fzyM.Q!)C6,BԎ] >7qϼϗu~ϣ_q;+o)w8"^ze-Wa%HH I hu=sa;^1*=uޑkJ/p׫1Z<{^W}d ֈ [ۓmM=npxsf `>-,<ڊ 'W+jgz{g Ox=.HݟAp Xx3;𯺄ݞٿ|W+lO={~Gg WW.Pm-a߶y)z; `{]k;6+񌞟=+^j]/){Vx#zz㝿=bGqd7x=5ޯ1&x 1$羟_|me@+l:ɮ  l,_xSq,^{>iz} kTw6ywXOxewFx]a'^A< WOOqj.])^'G+x5 f׈k ^߿Xb_{\wX_g|mS/]F?NVx+_JU/-c%b Xvʹm]z}u] wX`oew׭0߈mʖa5I^q?Q,1@pʩ [=4:.ߒ]I+lA|ӣ(ɵžלˋ[]6_+a,Zbew~_]uw_bPXvxq.p;,oe7kFxMakq:u\Ugu]wX`[يxZaSS[/]4:{e~=p;WDdoW+྿V=^{==<":= < xvx~O'=[yZnpqzm<npWvA+{KzmO+%xWx+^Fx~qGx~5u|zIr}+2#n+<[O.0O7~{=o _Y"mz[mǾv][~x^sz+ۮ #'oQXWxKgWv n) [_W#y+A-lٯ<͗y>ኳ=$^-q?m=j\wg~?z+{ Fg~ lv ^m<__;,'/I^W+/ 3zm+`0FxÈWx*"^VīmWm.=~ua yk_d߷_ < [[ 7X` Fx7o xNj+{ mZ-z1}]wXmUWzۯ;,'+y׈W$ Oxe9'K߶e\w=Xx_|.{ZmX W?~oiܶ>Zv|jv _J\G#Gp?;^po!o_xn  #^ x*G-WUx+}pak׼=\ojY~mXvWݚƒlGɈxz Su3{|pl =x:=^,p` lA-ޟ9aU~P{+5'ya>ɵmxv>Hm+cyv] wX`oeOğ7x3npFeߧ>[vrmWV]UNVx¶~`Np}TN^{-; q;go_P-;3WT{}m+{G+`5 ≭g~qDaq?c?/}5~-'Go4ˆ?oZk|_VJ<_~>7#޲;>zۯ+` ~]> ޾^xf7_kYyj_ڣ [o'{=&\Ouθ~7[5c۵3aon\wX|;;m^q~qVx–ۊM+l5_߾Vx+'Ѹ- pϗf6oWv#^05/&~%mv=-pO]#~0+iOm5޿U <`_ljopVxۮ o{?ݪT{W>/~jo_|ҵ[XWk^oVNnp-/,MWެkzйa<ᕭp۟AyR<_W 7 &#D&=lz+<߾q#^Ab:l}gwxm6ޟ+Z_ <`Sw#֣V^Z`|k}~;6X`}~{Z;z3F Oxe//_t-¶~q}kQONnp.W ױ|o_$ozG?+mz<npm' .p;,|qſ_V6_Ka'T?C+_v==> |Ÿ~?z^n?`> (^K췵"a!_Nv?I]j3~'i_w~ <#~xŒ+jo>K׎-?mpk{~KߣX xfo"޴\پM_7~a||mgXa[ {~mAz^M^+#ok7o^#^W;# z׫^Eߊ^]Wy^o^ٻ=z]`k6<:lAAVx3kU wX`_X^[_W֣ʱ 3~\> VGތͯ [[췽n6_]to1~X ?nۥz~Xz ¶^Oy:nplq}^O+l+Vm_\'qm3K^+<`Ox~{y?xfFOrx b?1'9SOOr->ۯWv7#^*U/J\O|:-;Y V3q [0WG>fal4o.pm"^Z`/>~kmhW}]wV^?ھZ<;켃~o{zkdz>==O'*p~Vxݯ-; k/WFx:k X _< rhW]z={ OxeWöf߾^?.p_x¶_z wOHo^\wրiߧzڣ7#['5K^O{F>ҵ {  WG} qmf{}WW]`'}um|jNXn \m(ok|| Y 7&y׈\[jgO<_[m+K.p;,_}D|b|?^Wv {h-#^np[<,8;ymw{b#_{ 7F\(~yYx=3W|^քkNpkog+l/ڧo+o󷳽~E 7A|ζW^ߘ=4b=m,q[[v^m3] qq a<}?u+lVx+{ Fxck?%^w}m |k=ex XaoQkRz~Qra<~Q2c<ᕭ/xl~J>Oz] l瓜\όeWUaO| xYvrmw.eR>ɵgsxOxex F0WkVj{^OZxv䛊o?m_o%][~<%O:>Y`'+x3͗bOm  <`Ƴ|j_IzIw~χ׻Tx+%qUVxo'[>J)%-_?jIϯʮ=a{4_W[>Z=+~Ԙ߾~jH/~wXOxewFx]a'x#,^پm׈m #@띈?>ik6X`l/>_~>ua}>'>/|m[4k^W }ksW+<`I'.<K-W|XSn}^lk[_o?p;0cE<-0+yϷx+{֟o?zo+z~pal3y|Z`[oq?|zv][>_o+z+|pa+.qx>.p;,NxeW+l#ޏ\aoy8b xeD`ۏ?=\ w+y+oG|E{\a^?wD1=?I$``_[|^<_# yZXag֏k]JD Wv`/W:x|N._$׌gW+<`|Iۏ&Vow&'zfD|ϗ#x[ \ o|0 ˿ i-fJo 7|5Ocv]vw,;yf.p-ZOvwL%׫o'{>ʎ ~z[^܊vտ-;V\oopW T|~|~(ÖfEc~{Օ%σ= <xzEa¶^k=+`p7~7xf{ߏ wX`'+Uċcī^#^6op 5\oGx^;,6+[ \ O?6kM_[꿉N.G}|9|kOq>+ʴ(˴u>_|򷯽p)__+f_z,r򷏽t]w}?NJմ>~ے+a;ȴOϯl`[|H;يڵ+\~~WG  jnbVx+{^[>8/Z`uI^# t^E<*|۷eeHmV] l/η:~ 7ú۾-{k[/>>`A;,'g1yTc+<`ױ/X==b6ο+<]??=~kxq>~; X_Uxop;oA|f{?7#0GVF]aOHdm}oo 7Clo{]#׻F9a[O~v~ w;԰AI+iO%]xe{}v\wXx<_*y~'j|k۟y| 7{^߾\+χד3W7{%'^[vr;,FWʀ"^VīWq*󷻯oͯ_Oxetۮ-?}}am}~,\`'qlG'~}[]`Zێz(#W'G=^-Y`}/T9Kl?亼GHVx3# \a|k_ggl?znixg4ێ}o'wXj||gw+p,z_ϗ^ٞ/y][-lӖX>}>Y| < uQ_iGO=v}> Oxe{ 7oIG')6m}ua '5'om<>-xE|m xe.͗x?Gm>1׾8E=cո_+F`ozό+eym'xf~\vGY 7X`'x~>[?sa?ݿ;So_{npN+ I Ik+aFxy>m'7֣cۮ lm#_ l|U~ܭ} wX`oǿB݇kQ-yGRj+mdǖ߶am|քkll~cXv OxeFxÈkxoX]umyؾOm{vl~;,^ۯmG+<`]q~7[}O&u;,ˆD}z`m<~o+{Nnp-9`O/m_%^ϚF= 7˗Ѱտڨq>Wv`߯s+<]?؞_{~m=G 7X`x#^>T_lW[~玓'+[ \z\c^ ﷨y?a -m~pm<ӎ;,U 7X`[m^[KZ}N=I 7 xfG=#^A^RxX{NW^/ I'y+<ۮ Aq] < G:0w #^GO:FSyW|%> /_R~wlkXa{~m?8|p}k-~xT<kl>g{o8?`Xvɱ6?xWv/p}ow_x~|?ɌIa<4yzֿf_vcznׯۮlzmnMl;s}x~V}ޡ1~0>/kw}H WX`WWy}ak|1=]*y}p+p,ӹ~>ua<%zמ~~x>3l~u=XH_{zX>m׶Gͯ{ `?g$ϕ \ GLj|>򷓭~a ^ٞHN\ wX`oe7Wn Cp}fa..-3^Xan>fƴu-wOێ^1yczuoX;zgx~p+af [~qۣk^[vrlEgzO9/iKxQm+`͗x=^¶~Ϟ]$_ؾ4~Ϝm?wʖW+xx6~wXFxvo'}ue뱍5^}I-#]7 >_obu;,'lo]W+Vx^#^_yu+m>iz xe|{~E?O|ր,?i8/j+<]|$ fk jgN_{ԧ'k?z_xf募lۮ'l3]W+zʖp;G3?]#zx^|k_#@i=ie_uOz]A{uQ8vv:mmBnWs߫+;+^={ۯlI3%揮<ˆWx~?ڣiJ^bݾm_np!^~?/}N^R x\~ xeW^e<Qx¶1 \[>Iϯ'﵈> ߱_x=?Vx+\W~d/r~np|iQo^W+xow1vr;W"+5?okUogy ~[9^'ոfV[1}\wX`G-gVo._;-;X o'W+<`īOJFzonyV wuۯ'{+lW3^vmW>_ۯW|paēFhn߱_/,mhď;{{?w?7)?G_ϿGOn=>;K߹]Z?}|O.} 8.w_~KHϿo{wY;n|.??/^ПgWޠ_t/w_k[/_=oGϿ_SS%{.=Q3͟?ywV3GKv/Rߏvb /gv9 bi /kfAd *̱:zY2[fϔĚ-2dNL4֫=Z*;UK(;cŲ;yU~ک3;>Y~̌*|Ɵyx}V/Ē9^m_;/y*X&GֳKxdKmS=o]}.Zd'pdzeLzۗ%f TN镝82gJ%=kLH-lH3f,53f,+W3i^I[C?aOvB1^ͤɮ'3(;e7~L_fl=S2s@+lIJ9Rdg\$I\l5eN,8܏CÒ2{d̙Xryqh;ج\G{jRK$MFI&"k"v%82g⯑~‡섈Ě3%S3gJ}̨-LzQ4ك@ G%%$MIRQ~7NuH̙au'^3l#s%/3Z99ʁ~oaTdjt%O[#Ґvual#3H^@5=39oNaˁZ l9PC|={s/@=|I$%|j5RyF:x^ͤqyUZ$ic}M}UZROҤ"Fzi kʰFaϔ=VfҺڙjR94i&WjRKJSQ#sᄘG{2{~aKLK*I5'I&UOz[RSq3߬FܹţCgJȜe̚ĺ,R3gJT|bVd $Ḻ9Q{elv*ZRON^Ù%fLqzkf˔L9P2sݫP$ˆ$5sd= 8?9}_Q<О眖- { oZKj!{ )V2kf˴ANrdD̾眆tL?iBBzUZROArv,I<-Su/QʲN+[JMwV/G.vz˖792g2Kf́BI3iZ%&ߜmmgҤ^=<݋=S3GJ5/Kfk0jMjk/G\xX7wzjj3s%F%/s_2j9Pu=Wc2Kf왒92g@Í$͜VJܣ5eJfL2K/V+R3GL5/Kf́w"J\9ʁVh \obKf왚92gbɁJTjfT$3-/@5ړzźv92w'7ϺˡI-'ic[M u-zTjRO#W"H{Tz$i΃oKBݮ=k jBZ>M^@Iדv gM>zd̙8̒Y3sMDZ˖)92CK|Yvo̾Z>왒92g^x[t!&iRjI/5sf ð|Ww%IBt+EƺR{:)#R ȍ@ҐW0PZ1"7ҀF@U3jp"RH~8rΞwp-/~Z$q+iW2488/'Riݐq7 6ra @'hΫ8~#Q|2!G{bD7)Hn~iѐ)wo4W t2v@Jβ賎{Wadk-47|nRD*r# #7s]ef y5@e1B1M bͪ䍋UW:-ǭ W@gGK/ll / HCL|8\HEnyDU/,*ܽ\ێ|Η J 82&;2 p!c!Ʉ=:Pr _ $($ eZ?qv&h6^3Cbl9>y>uRv#]W :3u_U?͙}ίάs7^YuMA<!CDppFD8y(F{j eЙ0/x"r#%/ˁB*r##S8uLIΔ͇ȍ4`ب"WȅHC:0!yҧ#e嚾)%6ꎔ͑)/pW W:Lɀy,qqAWcq5@ )"D+Ufغ6?̝|% Z :Fg;l1,q~͢bkg6CEҁ0d|Cx^j6F:0gV/;RH 81Ќaeޑr"Rv&_e!fBDcmsz#9HccVȁhEET);4Ebf/cdBҴ|}J&<##{́q2>H{8k#r"r#); uEсYoR@HAN"7Ҁ#1` YH $ȁM 4cܩycG66c!r S#1aOW'/fE#9 qO5ٝs]@ 2fO4O!gO. @Ug`GΗlFA@1-,02J A'K3!xW}5@q;$ߥ" w9ĸȕcM~ A jO-_EIb "D  „hBV|F%KuV}r# ّ"cih3"nȁdSRZ1A#9@f@FI+?ȉ\HEfχ)ȅTFF7Z{QeG r"Ճ!W~JnvGj54.ϼLgڑP:r Ng-*_m 4@ 0!BdjD[WoAg+ʱKӞFRQdce UЇˁD*2AZrzّȅH vJnR HCv@HAN"7u I]'ag!i;RB_Fx4CCTP4"%΍IS)@'jGZ hAaBH뺂"n⽳qA=?&s?/iHjC 1ƎѲ V1l]v 'r(+ѢΎχg[2vDˉ\(נeKfˁyW^9WH|A m3s<?_NB*Ґ)9HA䯤 ĈB bZd:H@9/2S=1I2t`jx9@ECmt:y/'RyZGͯa1UW ٟٓ(r"r# -} |ȍ| Xv~:~P% zH6=DNśix#%g[MXq"Rtj(U5RZXy=jm| byl۽u9s2r"2nf}wCv@NB*4fޟQbӇ)ȅTFFRχvkR4A sۡhN Z MΊ ?4@Z mPÌ ? Kq 9H ĸd!1P N 411z~{<6GNy$ltjȁDbiG7t<6Oo+p#픈:Dݑ#ցZ2FFq!iHZCd!^N"7Ҁʸ!YDZ~'{|n@d Z ՝&*99>jRȍt@#1@c!1Јd'{>'yvKM)@j6DWaBAaAAa- B]xJhHA_m!Bw_A "*AHANBn9ߪ 󞛣?*/ ={w\i/R `JN54ΗgoNϩ*R=4dGf'Rȥ" dq@ !WjWoFQ$stYbbp v^(}5SiU A(yAj7 (='c+r# .;R9(3. R􇙺p yZTF>>#s MNBf' ё9ZXh2n6#. /RrelȎD.F. - RqAîMR*w,З4sr :'K:C17mP wD.bFr 'r!iHN 41PPqH#47b:B:H@xx-'8,jC'/[!+lv\ț}ԍ4q9@4t[ &HAd"xA<@1sFQ{ hd & aĸd.hVʗ ̍P/;RN'g8֪E1_\^H(ȅ;e3_ǹb[vK/a▫H&R !4i ԟWd nx5@A!_DPϗnyL&<9L2GcR<n/r"2NPOC/RfGC;?_n{Cv '2X1 kJ F%ʼn\HEF_Wj暒˘˃3X_# W:" +QwY6rˎȉ\HER *R fވkr#c5RV+ 2 /A(;yfiHV8@HOS覑(v^'Yɛlλy+~FvAr'uW]ad^glWxVr[u~21~^T1$zYR<_$EǁdSͦIW+ +V#3fo'r!7Ґ{였zp 5 Y#cQMv~Bx浪%bq"<ȓJ62LyB)XɛȝL2 "oNd'O=)xd]\]^W*r##slʓț%U;yI." ݑ)H 1PUmFovȎNIy)uFYg|"G^&A{uSt`4wr KRSqqYpyw'y)xVLe5Fv &W,IV&;(u23M6rL~zore)ϋd# >زoYhB*r#^I)ȉTFcޑI]>/&ѣ)ވ(;VV&Pk(zG2{\~}7&C߬ˎDb\@b&fͺ3ۮ feDžTF:0ؑ(Nm 7x;:;w)ҲYȱC9yɎFd!O2e^ͣȲ(NL"ocYY1!|r~;uyzVmՇ:ͯ7йv[% DsoGwvgk#uf'Yɧz/D\OH۽~ yNkluh#w'9S9u\syLvվO6ۄcnx < $xk yLr?EV'GX5zy71@eσ,EVr4^iίw#'YɛLY'S;: |Em}aVK33ȝծc|'E,WǗ?gz'yl(xYȋ/,]c=!ƨեO"?G˹s'$,xd#;;yL&C<ZȓM6txAx})~xoPA;"I$\Fd@7ȃ,IxB$IblDQhp?qD48/ iFvA'55W} \HEnc#X44ރZMcɆލBsy| p8ȁ;>gj$3C=11Gcs!-N"7g`G 2Kw9A&Y eg)^>xeg7|Gl7Ґ)3˗w< DjdA+ pF&>?<ȓ|:f*Ґ\ ybqgD*r# G9V<ǹׁiLM~NQɃ<ɋdhFLǸdGם,I^d"5o5cj:oc糒SE@gc)y7NYs'g z"oj\S*3ϲwXe,I.B}6sb g7˦~Vc7:\=H|T3Pȍt`nrd7DFҁ֑91ְA>yͯho䘅Y["+yu5;YȓY3s'$Sdc9z\լF5KQMv4r'S}kWXubȝ<ȓc2FvA2[om2FJrl3;U'Dj9Aכl#77r ] t7@ r"1c_U"7F/d2'r!O#drN a\^ HC:p4@u\Ga)?b_9l8$VhdFvmHD2xpFy:1)ȉTFb =U=ӎyHXq# Xq 1@[hc kH dĸ O0c 2 KI_V7&W~׽V~AE>1"KKHϼ"+y2>w2L'O| :_xtO7|'śoN(ޢ]/FrשǍ46d?{mz~TI^d%ћmwIH_n-s$in׎iZ9/9g RF05*'oWI[NBndybV2s~D%f y72/?/BiCyם<11oYc:Fv3+\"{wkf?E9rȎ̱uT9揂\[>s-n]":!$2Fvtny:]HuCVrvߒ'komˁD*r#1a H dUύwdQ'r!iH_dLK#$YɛȝL:ŋVC1r?:N8r"2j|vDp#Ar,MB i>ѿfzGZ28Z9ɋѥeqO+EVr κY۲ yɎ7cwtoVFN#"5@NB*Ґt rydHc~<ݻVWad%Ϝ|D*r# 1ЯK1P?Kz6u rR_CId"EVrh}_'9e:Y_3ndXyBELq."Sf sWٓ5w1s]Gͩd7M6tm~B2?țldͷ'7,EVc[<9 HCZMHAN"Oq՜M;_HANBbJ avqq 'r!iH 4#Ec 2FQdȝ,/x3[*NI^d%JGIO.u:zrȍخ;u.>w'YɛlhxN|)/2ůJe+oQ ykE^,Vw>>u.^B:O;su3W Gͪ|+'1UQh<ɋ\X?- 9]ⳐY1tΨ,IV&z:3z'y#COW;yenG:&Gly[dd!O7F,0!O"%8#ch(vv.E956娱:?,I(' 6tNm#CZ*~=[@ޓglecը%9w*.RwoEA}AEV2sS|x.d|7[h^wIe"9e_x<#^Fϓ O%x>ҁ#2VǰjʯɎFd'+>/; =yME[BxwIfX=[8Dz0\Q@r9BC.<ɋFve:r"fg-'>/hod {]q#s>G2 5ce9y5fڌi-qՊ >a^#>u.ȅT䓯>OKkȁ i%o;9~Pz3:,h] hV4g4g GȜ4JmЮc,#ZXhYzkA˝i$/r>*>59ѰlYd%ѳWiZnq!cW]C"u!;2D.FP#2~,s+RJ6w')ަx{Em(YCv stfp.Ƀ<ɹܡd#G!Ǹ2xJH\{,x9Z,IV&Y z3nqX{s`^Q}ɧR*R:r <3N#ȭ$.Rȍ4@G ZC't8QaT`]J#cZ$k.L: W2$zOaBD^^6͟O}'9[u\ɑi͝ëU(ڋO讖cuHINg'ZEd#;zt SANy/&=_bky+ .ɎϝLr3şozQE SEx'SIՆ߮*E>mVϞnnuқD:@AN"7Ҁ[5r"2vJC%o{A2f/#M,r~Wc~1!Y`%o{dO1:&bl`ͼoճ*Ǎ4GG 1P$Ju.̄/'2^oH{ݐ칞ɱ$n79Sz \N2bJ6$u:\Un7r' yy9^zu.âGC:cC8>_D.Ihu$ݐ Y9y1/s*E"9v L yyI SI23ś 6x+Z 2XɛhmNx9+ˑM6ˑoSM9QsƘDž<5Q{=ǘ y5bu' y|= >~/YYft5dTNKi~o~ș[W ]U ;9REVr׵p3V+B^d%o{#SN$SNzyHFgkrXVdE|cnEVtzW^YɛLrc.˵1ɷV=<ɱ]|&:&Ť.~L}v-8 r'gC\;Yș!Ed#1YeBU?Fs_+96}g9dZ;1^g~]&|Q7o yyE SErh3[/>G}z8ljo5,ԯ}VVݥUgԵBl:g6į mԻkh!_+9}-VFd!/7E64<ɋɆq?~쨱z'yldG7(^&#~x❡O| :_xBwRIfzyY1 7>YɛL)RG)-ړ ID[u]U듼țldQUc@[[~jFJ䨧q<>rjůqQV&:g>wȾfZ39޿Ƀ,EVrd%σ,IVrl̦BEx9ZOF%{|ڰ^^d%サVjAK_o;Y♑\\D5<6ddj|#O3 Ǭa /kƚjF:ƥF藂ȅH 40P`@Xk"?9Z y|d!ۧo}7ѳ;Yvk%oNd}]Oe[,Gk'2^rz5=ɱ}w#w'Y}{Yk$Wenկ;9'ete[=D9*TFÑ{~HA{U#┎nȨP^d#;:g?Gsy !Y`#;Zy<Ob61}9;97hI>iv?n# gb^G4dL6 yɑ կsh<ɋFvQ<dsho^NBd%o>վsH%+X%=㥚կ׉j[0SB:/D$VTCJ{$Gb4 J|?Yɛhx#Q.yy33<j" 5F ʆd)ŏ,EndwLBd%o7/>S*L7ǣ5g|Y,umB JQ]0iԏvyO쏝9!;r "]ȣ~@.`!OrLUc 4H?},vy'9;-;I^{~$!ňt[Z 1U,+h$PWKC/tDJ,sdp+Zd]-'3׊>P߶Gʞ,0M=% %?WيW:5 +^ ro̞3s%'39h9лc?d̚2{D ;8;K wx]&qkf;z~Oxtbl92WbɁle7×̞i3ޮ|9wMyIϱG=}K~ץԝ2]5f{2Kfl=3j3@=ڏ_ӳ-kE$5"}2m|Gt:^ \-]E |3'܏mK>AM{ gJ|w+)53Z9wX2mx { xn= 3s%67Yk왚i-OdNl\X 7Xaī3!^+07kFx6c9: bs;lO<# ωW>'rѷ<qnWڞHCr/}V3}w5?uƔױF<fTQbxU lٗ)gW4>E-88q>npR#~:qm^q]/յ'ڿ35sdD}2sħ [f?6윉rX;9Q2[f̙g;sY3sM3V SmCX]6_40q xf~y||.ז%LK lxJ5gj\V)0ǕHZf$9܉Dc^m}RFa'(Fx|x|x<pr⇧5_. 0)xFo(&w"D怭'ᏋMpaK+xuDc[`aVx+;6.xJز-\`ѵIQlRvw,qd%=bOv#G̞3Rldq,V< W xEJ.paa +[ ,p;0) Ƌ;l2fT=m3 \{;kq| ,p;ln_šxd'9'J}bc)#s%'?b3Zg';D60Oh#EsoLfĖ#s9XIo;M\{n5e!+s\MMdk(9<>n]\܋}@?#Әoۏ&^@6CW~|e{α 焭q,O,p;-*No@,{/N gv&sb왚93W<{;y. sf̕X'̚ieS}męc>}ejȜ,6;< V`!^SFxx;We03npFu8& \k >Z>(c'0X5vrbl^{:gXwXaàWvy`<7v`>~hM{EwjFLXrr< +]z Zr1fl ?vr]DۄWv+4>=Ȯ#KO7w߃!_Z/5ejȜ\*p;j8E:3y\|?c+wŠ|W؋Nknvz2}r|Q5t ;<=w9b0Ro J}D+%oo罾BKd̞{)Uխc2㸵6.Ij\,5e@6|'| +x+3~Fb}2Ǟ#s]|曒Y3ψcWtN{+:.|>=s[{c|]MqS2kf̑8?ɔ%fc2[zS3GocjF :#CZdJf왚HL9N`Nl92gx2Kf4rĩ#sfY2%m54/q͝y1P}>t&m%5ejpeK,r̚2{Ȝ="n)2{f ̛wIG;k9q%V[тeL=tZwx3=057v_q&|c l\+Wö Ss,5殼|SL`l_"{D\+'{|,{eM1Zf̙i9=< Ş?ۘ?z+^l,=Ua{r_Yr_#ӊWg$ CiǼ ^di֭,+ű¾b{ɶp[x^1qZzr ғ|BϾfR+l߷U<={ᵒ)5gj^n]oRCɬ-S3-sWg>=8Zwx^?o(xΈKbZ?Y+<x]TX wzv߯]>Q2[fLL,яpՉs'&'̚2{k-8\dJ kϴE~oصxevA)!)!!mqtoG'~lUmw , x?9Vx+{>po6Nj״xVoΟmǞ.$ klnZr-;˓Y2kf̑iS̒)^o;<Ƴ^$Jf왚92s +S5ɬ-S3GL99q{{fh%j9HC8z.K8fmJ\ÒW_OQNVx3{2 xNϛ|ٛc+aMmĥ<ηZ-pmbRfwvV_f왖R^ū̝|SJdz\ı^پ4X #~E:`k d={wl߹o+ؗHJVo lq<*pmgoLmu2WA|\Ofɬ-g@˪/j'C)-gj\oBe;9Q2kf̑I>`́e@b3* ,p1VM/|{+X`FZ۶ǑY2kf́z[5H%3}8.83mwBFxsĊ wXdJfl92gʁVqoڏF}K\`x7v<ᕽ ,ո>W;.$[ oŗbXdxfQrF=jUl =J='mRm'b{Xd`"}62=i=J.pak~^:_J{#\pFo|<{?nxۣў ƓnObx+mFxS᷿"yۣ6 Vx]Il'W.WBFxkW/V=3˽|,m \۟1眏=JVx+mDhw+7ްbm/j9b]$Qr{+% \+<`{#1~WɪS|a8kvѱvfm' \ahjZZn{YѾ1NnnXwXa[ 65{ߤYH8=J.px}op< ,vBVx+{G2Ȯp[zmʲ=*Ȯp?lݞo{\`a_nwVxW~l3~?ݞ4ڗ,MlY[xAybL{'{-nWv-~?ٱW%[{Tf =G xf{np3ߏX =^zSou+{X{q} +^=ݞnxfv+xf\o{F-*Sv~Btnp<;u#^GHxexұ\`z xf.7;VBx ǻo!o/i.pgvAxE`+Fx8^Aβm+a_i#<`'-6sߟWo7Xa'Y5<(7v?^٭fiVx+?x<_x~'zx+Ƿ01\=-p?}G˞oq>}e۶#[ wX #^y`+Wxe''8޷=e>6d;y(ִ=H_vxawQGx–jϏGs+>o>ߟpn{E>

x3o{lu wK\/:=,ƿml~wxm>I|iu x+{!BUa[ #J%o \a_0 xfz)1t\f~'G;^ H%{~[ē [ja'l֓L|cK=wU~/5p;x;[/V^{<鶝zSvq=^[l~ZvZvϿop<X`ěnjד ^-;K~P=xfcI=ڋja'pwF<_o{wb~nl-;Vxkw\yV˯~q[>H Vx3{c=u~|mm?ͷ}n[i-$n#^0mx7LN Vx3"^-0UīFx8ކx %{G v ^= +<\X~x+mFxCae~_p;3[7 3~ۣgyg$V$=ݣo\o{`l<Xw6a[<–7jmg}\7ވ/N'lӈѱn-;O|>n$v->Px+{o߶q?mT"lpR{x+{=jm;mNVx}.9o'[Xvr}H|^`',;Y l-QVoF\`?]Oc3{>pnp2^oU-JfGx}[3ޛmc|~lc[nplOR`+al<i#gvONA>gWGL [%E ۾d|bxp\`_c'I>x+% x<&FUa,}.n[v]q]1v\wx6ǖK̯Xvlg-pm޿^QOX ly`˧[y~[{W% 0xa}{};{}wo+[n0~l۷(7z߾߿|Pq['^Zg/om;-o}_ l_ Vxh]`3.WTx>mMIvgvEZ`į%o#^e!_zmlޯlz^Wv`+lAkllUv?[npYm~;6>4E=v V^v|O|U`a'nn \+<`o]n׫/ll}ǒo;~ Z`+l'޿*<X 7EpGnFxu=Wo{>+<ᕭ,pOy|=?XoyڀWvW xf{>W ,_y3-_jyV;=m3+`kǓg|^+<`[O¾np<_JtWv-Fj}ZmF>o' /~6_#,p;>D5c=ɌsGo'W+Χ*lI>xұnc{~ؗm ,p;<`[ y1-kzT>os<`ϊzp;ly˄lyv+x /W g,;L-l_'z۷-VG7 |}{Kq~|+0+~Lj8ށx^m7ʞ7oZۖo'Y [Co=yxXv;緻Wx^-p;Wnn#xgקoq+#Kϗk}]lo v[`ֈIv^n{>c?I\:ᕽ}tX [}'|`oq=x}$ |ň{eOr\w柾aMxݶdm>SG [?D^/X WS=Om?}Yvr<(#^Ex+!~C}#},t[w}%sVo[%>z$ l'G_NVxž6#Ϸzqm(<==*Y 7Xaޗ3#* 'n{m?u[ [<^Wvy`V W xf_-Ƿ^'l:=^ \a.n,pxmyp+x+[Om[.%5lM~?x+{xw}W=D畽 lAo5e?۾^'n[vnFb3Ze 7|o{ao|oַxNSo<I{c+al۷mRIm[ӈznpA lop~nj"^0U[ 5oÖoWv`+`g"#[\$~P^te[{]î'+<oo'+<6UZ^ͷVx^FFX 7XlA<)0 yc|~K NK:^UEg x#■a} +x+{ @<onp<-ċ>ika}+m.Oo+>žCy3;K\ #0M[˞gFVxrd+VxG,_'߾{Xvʖ j[ׯnOxe F:`[}? \wxFx]`FxUS""H],;n}+< ,[~Qy^ұ^0-[N<ǯE 7Xl?.W:V x+WqHc>Xvշ;gv{`~$OxewxdpmZ=v{k|ܶTˇ*Oxe#ެ| zߗo \ܞַ.?]wx^~ۣl/WFx'bPY,o;./?}| wxE}U푍VxZFuyn^يxgSz/G|>|~+p=~/[?Ʒ?7vr-K$+y{f ^  x-x/~\o{<~+οGǖOҿx+۟׎0 ?3߾m>>aW xf/[Fx^zW O<_a+l|Wx_|Ңt\ 7+z6~Wv-S;l-G勏ӭ8?6~f֐_=#/}m \a۷Fpz|}zOxe \a[ #J4%c<dEcclǖ[4Oxe~IWsj^S4mTuXM g+?XvF|o|PGpԳ(^ov?z6Qg{ 'lW, ߇},p;hmcFOr\ 7-ߥ E2bYv  \+<`īW \|x7m \7z6\ 7Xaә=o 񼞤<$0MěF8Fx+ۖןo'd[lb(.F+;<`{^y ,O{z Oxeg+x||m/Z?I\++q=e=* ի{zIn{}}?p˾nG-< x$Z>Vx|15k3#^vq?}{֓|=Vx–O6>h]+<=o&[kNxe `'!}.'dm>D=cWvyxNnp<-Xv+y{ta=:.0y{t =#^v7VXzTw}`߷V+{0Uī Fxuf7kFx_ ^`~X:[l}`דO,;[|Spo!ޚvrnpf< X-} xe۶g xf{}x|nkSE=c'{w_]پ۱>X ̭gZ}؟i}qOxݶzW O|}Wgo7Xlo~|+x+"^*~LjWx5oCx #^|߷'zv?#߾\`aoe7*x??/{:o.Wty^\`}N| Oxݶ6+a zI>k'9Vxk۷m ,p;?e޿M=E,;zq{eo|H^/e,Qi3|E\`{~{|c` Oxek/wXv7W5!pP"'go;. 0M[ ۯ/mݖ,p?>p;xV xī8j#$`wx{m+m \w{adXvgك~bۺοIVxˆm'~ [=*^` \^'y{f. FvVBx{=m[p+ś1a3Ɠ+xf] ¾~E+[ llVx+>ɱ[|Vx3=pFao{ [=y6>},pg@Q`V?:< iy+zzz[>Ɋx_ұWt\ 7P߾^`^ٻv m'W}{sq|s+x+!^x ˆx;uoGxOOqT7cYdogx+{X`7Fxo|;m+{=p+[~ogW߾m㟖T-;Y {}| {}+[njlDVVvCx3Vx+?gZ>1}l6TG:W%< ,pmkF<=X`lǷ!wlo$e3%%p;<`_omUNͷzZbx\=l߬ԟ/o'+<`Ϗxp;<`[_*x!^Ckxf{{t\ 7Èoe+v[AW;*_:Yvr$6_>[3UN?^- t\`OzGm'wX ['gE{^=~m-[NVmW^Zvr+eVڇ{8w}_xڮڇ'>Ozw_l=O+a^qlyF=$}=qzE-O= =J;V߾=}ߧGnnQ?Z 7Xx{wX~tW^҈jW xf7k<~9߭Wo Əo?nJ|n6[-;Y So;^>^׷W mtl~Oxe+["l1tl>~b|xe[<ϰB6پ ^>v\ 7+~x b?ψIj-< wXl}#6vxw qzIɱ|v{t{+{=p+`[oԣq6e )<ᕽo_]-;5}~Iߗo' \Ymk;vr;< lA<fo{}c-~v~{/O u~}<>ֻVNm~U}$>Vx{ٕYִ_W1U[HH  D($PTgfn/ N1,#2ڏjnW-<;?h^oG~.O{d,޳v+a7lV 7 <sgq~oxwx  #^0Ƴx*7o[ /زWFx>~{O}|p?y' [o1_h1-?#_)zm?q_;;%?3'}^^z| |݊wڣoWüT3~ /x_O\kmZO}ްez 7ʄ '}Fx*7k>|ZUo;#~l]쨗ZOm;<[Y5W_{?x}'x#>#ޙ~|IWvenpx^DwWWf 7xV~?߾]RV^>n0U=O: ߿+tqmo{^oز_5^N<vk|}a˞p*'VGW}O5k^olEW{] xDG \|Ê\O/^-_.v}{^e.G}Qv?G+OxÖ=o"l0M;%I &p;<w~Wþfa;i#7C k|# x V߿} .\ xloYZꞿ"򷓽>S\ z{wXߧ7l٣V~7Z{Ya/l٧=j^?| 򡴿oز|ްek>n?x N.p;IOՕF2aƳ쳟mykOx:xMv\O \k?a>nW7o,y"GK \~_+߽+;yz?keٻn2y l{ 7Èggm'{'\X]o螿}۲| ׳>< [v} 3^Co?_zg|~y)}z=l_o~T߶z|k xOnWz ްeGuo!^F`߈q Lfh^wXSϓ-xz۷ \xcYP4<+;y^e.0$"^ 5\oCx #^vq \@W;1l?+xx V}/5~[-#OywXW||b>6}>{^S}_Vvr`O{Sχm'Wx<>U}mqwv}WX?<7lM龞۷W_Xq}_[v'Uo;|d}꓌X?ۗXSN7lپs5F='l~ 7^0mFx{q[33lv'a /ز}s ^8?߾]5?7|p|覆lMWvr>]ڄzjbA~k὞/X;D~e|-{i}GU+??쳟@'a6ċyx^$_C=Nnp']﬷FxE:T/mvi-\yeW|Pvx|g?߾}ڣnp<9Wn{7^/缤CɿynNްqwğn>ZOGz?ogv{V=/o^7xްK?noV_6ڟ0<v;m'^o.paˮ?7b?߷oOxڟmmvwvGxg>6uf<?oz _,a$}>4o/xg{ʯPPvr< [Fxos~-۴Twxž۪\ wxf<.WKyݣyIvx}nWF loY+ޟ{?wx ްewwF;|g7p \D띈7oz'M;kNn#||Nްep;x{ڣQ|_xM+OxÚhy+OXB^s#ޙߞ^og([eV wx0y}}?+_ zPv2 z۷ \x)pOz}λ1'_{ Ox;7~KF_{3y5?+OxwG^m5>o'{=ޟU+~K/okϏPvr%|y 7z 7^ވw淣PX9O܏aX3}g=b>IC[ׯ+7}~oui>ߠm;V^oزQy{>m'x?UXN V~D/xÖ= \a7&x<_3M\z-~.+ۣ/>/kg.p;< 3eYpXo\m k߾]HcϷϘaz߾aˮz^e.02~l_\ wxϲ  Fgz՘1~\kd?}>`Ym+>7l'?2 o?3G۟< [wL3G>|x} V~ o'5m?/ o'[inkJ۟>At^'<va/[v{7꟭x?z+k挿>[o\wga>|T7ڟ<\xF<> ʎx?\t~e<'}mN.p+=򁔿|To_%ݶO;}n}az+?"oךY}Ox;i=s.-^o'a?}nYx-{1$nw#}.po~푖-ݖ \aϧcy}K~︿~>I߾^s7^63߮pgo|< +o.\wxC# o'}7lJ=x?l#{} 7~_Y;mok~{np`˞zuqgwx |يϟV{__7^ζF6$.O}g~o[.p;<`+;"^Ez>j/Mo'OxÖ vϿ /6xWN-{XI2O<`\ep;Z受s׳6'}V{[+zu5inOx۷+Ox; ^)0+Fxt 7l~^g]sSoTvXϟ}{ ްexQٳ oزWf~x<ϖ |҈x>y'o>WZNްe+#-X4} [}=NS}򃼽?Uo;yV{߾= /زk|li|Lܯh}k*;yQ k~e?|E˜VZ۲|??'m?X#^ oزw+`ۈx>YTz*;Y~i"۾޷[bs;<+DqyIjvw$1O /زWX}QOnpGK ~/Mo'gUEI[o{np_۾= F9`ěZxejj\'x|py~ /ز m#uXucʗqlv\a+s*;ywy^/ 7xB<'Yu=ˮZzj^mьp{WX;Oy|^7x?x}}o ˎw|WXϯ$?OxÖ$?Wo-c?p}^>/NL\ wx'o'oXWS+OX>8=zg}9b?Oxp'>z򷫵/ O2== Vڲ=s< x<_S\wx FohN^-{%}VUomg7=WXk{<_~>g5G/I~.pmUlo%YY->kC=xNj#`=?ʧ}*;y ްeW* #G>;#_wo>Sogv{ Faw@xˆ7oz٩w^;Lo'X>=ciK*p;<l?/K\X|^ox^۾=a}^kՃRTvryO^G$byog/xÖ] \#96W$-yu;OEo[<.>۪oƋ-$'aI>W|gOߙO_jn/pG5#]Uvr k>m?[N率OxúW>0W>q~Q/z۷X|~ȴ߶aOozwQot*;Y>dq^k?/s #f"\-{XuP~.iֱ~n>nWbuXm#:<`}~~g߮p֛wX-$'`\`7x~^=ޏY wx\,۞^}']m=Q7c-ز{np?V|>5_6ߟٞwz"?'_fUoxޕOx] #^AWED=M)K꼬>{G+Ox緍>_oz*j>o>O{tewx ްOkx xW묷ݞCJޏ[Xoزn0gijoWP>z;o `=ySv7]>Smo>k^[v{ WxSOwxX57^-{ ި0 Fx$?wx-˗m>$|zI5_N[.p=_<'o<ϯg\x N񔿝\wx ٱ 7l*#^E`kކ !^Ct{}ϳo 7x^0mě~GiZ<}.χp [}F<^g߈۟ϔy>{v<u^zIڿTo;H%ae._{\юS'ag7.OyoSRv+߾>')To{ڟ~W㜗3}$np'`Vz Ho^N7ly]VQyqg۟+#^0Y|/xFxxwpu}lUS x;!^%:3OԷ}= oز{뙟x^7x^e.0۟o z"D띈7qgX׫mz}N~>o7 7 ^^Oy)[ea7lUo[eZ^3%<{~zu{V=})svwo{'(;<1E?zeW~ז}ܮp;۾TsV6__^m {Vl0~l6$߱OxvoWZm?/xg.;k7lٵ۟O֛yÖ 0y%_w[}zוaoxa< oش~Wu=~7lvoku-X3>>^ݶ^U_=b|k}[l٥I,>OX?[q;۷< /زy=zj%޿.pu oز;x۱q);Yט^<\wx  #0/nۈqO{WW&ʟ߾IoNnpY#ߦ۷^)^OpUNz7Woh=~^Go/xg.pwé_[7lK*|no'OxÖˆ5_7V~"#}.p_yOyNp< #^y`+ FxeWz+Uīފx<oo~ݯ'ag/p}f OVo׿ `}=7^ZXZ] 7x0[~[ gگSmڏ#[xB;<`=o[v)p;< #^AW n/X S([ι|P_y/yIyI;<`,^=qVxZ/.dOxI>+s;<`寬?+q}'aވo76>V{~ڣxVv1uڋ^ovm'X>9u>ɸwH< /ز#~EaīZ?Vk~?=- Fx}|Fx>ƺ{d8Γ|] wx7ϲ-[ F5a_q6m\Vy V~ێ3X+_{lUo;Η+Kno'OxÖ] yg+/[Q/\`O{r^xZ/qer<v< +XNqno'k-ٲ'xuvޥj_K޶'^V(.p;<`KoYm?WXwԷU~Q-|np'I^;%?wx~}~E%oNp<#^`;zwxWV׻wox}ò<||}6iK? W yg+|T^o ߟ7o#NXo?߮5,擴g{V}(/Ga|0yaE}p'y]w[z׻~VClo'~{=^s;<`Շm'k86|/~Oxf1lOG Wy/xgڣd}^6o'wxްe۟5|SvTo;y x_fNnO[x¾^_p?w܏Û7lgv[m< /زfo"K^oz-\BxʇWrڣ^eWũOTo;yv9Qr+ag cS 7Ok<->owx پs?`N7l٧tˆO:Fx;oz;_JΗ#M^CYزW+k>imزW|~[azm'U$Qsvle/hNnp'=ԓl>97o S[^כi?pW~ /X-Ϻ#UX/XϏmۮO<_N_z^eT77cz]2 7lњ+Ox;I*Zԓ 5o[E} ް}mZ]aK}߲O8To;YO<^ᅧm `guo/Xo|Ozmp k?_}>p+O,pOxv[nc#>/Xʏ4}ڟT#ޯ=J{8o 3^_{ k~=FUo;ywG3^OrE/X^}?W0 ě|3;<씿m6NF}}To;yÖ \~kv')2o?5תm +n{va3λxV||8Os;< o#ޙORv۔loʇ{wv`Fx(;yÖJq^o?zɧ^r7{F)Y1߫ Oxú^oOn۔lۣz"]oz/Uvy:(?coۥOxÖVe)_+ڣUϓw3=<xy o_GƋoX \q~ 7x؊W3vvKz7l V!ޚ0-;J|3b۷;<l{`3H'Hc۷+Oxw'np'`;SELnpx=m٭|^}=R-?p}^e$wx پVvr~FY3_pOX;쓟WCx^<}n+g xǙOտxf wx۲~?k嬷^Vv):O Vy \a+V3^i-=pak״^\ wx-%Wϛlg~vovQx;{=pǚ} ް}?y+` oXOqWz~g\Mxvs/,;%p_ϳ'aˮ\aīVl k}c$?W0znp'`˞K~̸_~^c};Km+OX>v8-o\z۷5yϖm #@'MěFoX5s;Uo{oTv:p?=< ­n'`͗Y\_򷓵?}{k=5o{ZZl'a˞V?z'`;*; 7۾.p;<3e/%zI<m߾]k|vx `ψWϲ+ygįWq*5\oCx {N?:.{gڣ|ÌzI}z7lپ=xW[m??8KZ?G,t:)R I,6~~Pݟyjo?'?1Nڀ'OԳ ~(|?!?WJ???9h:~ϿW0~]i_ٝV_-~]?Ğge[ioi>'//~+wcX?~α최'z7u3{v{V }4cH.p;<`?+Uxj[Js>-V폦1+w~m~7-?]z׾w,Uewxr3>xk>^x)6T&xKi?̮ew*mxg-˖[Mnp'ϯw~Wo< [oXޭ:n'`}g+>ZF9w=J.pz7lٵ䟏&RIްeڣgkZ¿[4-_m ǿKIIGnpx,i _x-&\ê4_=ִnp'_<ӱ.p;<xN{t u[\x>Z=J.pQ2~tp< [ 7xϋ)XS–}ڣۿдLxOx;%#oOy'a;ݿ(.Z:n'`GɈgk7~]u4e-> wa;'|k+Oxwo"^0Un7kކx !^c<\oGz;uށxw ğ7q߼?pD ްK>^hݮpI'a^In'ߎo{0 %>(yg0 7x^0FLOx5^}ɓ&RtS#/~;h-nWẅklٿ((/ G5ߓ&򛏶3t{gGnpxfQr{?l}x"ge!C3^w~7PٴoزOvgC=_=a}^=g0~jv'`.\`;#/|<oزky{vexwo#^C3~^4|z7^7oToԸaٿ[r< /Xe[iw=J.po7Y!!z k))]wx  #^0VīWeK /X+}>s >KX.p;<3ewn#ޯ=j83~+Ogr.>1~:e{~,G+Oدo- J}{tz7l٥FxeˆW>O>?^e.05kFaq:u\oGx;oz Gqѱeڣ7F]^7x ~Ɍ݈oz7mzΣM>+SN_{ǐ溺_m;imS~W0x- bLdfk~ߧo}p9>rek \X/-'< /زWFo SWu+ܕk/xÖ}oW&xy\3_6po/xg_ykp t 7x ^0#^E=56ch>u+ngXAL[<O;2<x+;yڣ[O]#0ڣdğ7+x&ӭu[4q< /ز7ے%#F_{t};< o=2]_x퓿{?lٿ([<b+;y UO]a:`}=߰eWQ /ز7>]oX,p=-^l_e|҈׷*+Khmz~>7lنxx`ij #xUInW< =v5+{ o/o'v۟+kZǪKכvmoGy?p#xgv?W+1,{>p=95jL͟Y/5)}VxV}nˆof<>I[ l+m˞/xgFijJ|_*;yU{)?v< /#~C3}>_ xp;'ޟ_{/5`w<~WX_:ka>m4ʄ?ے+Ox;!^+05'%#^c<\oG_*ZVq]3V~ [/; VIv[|D7l٫Fxkˆ|k;gr<< +Fn = kN \xŒgK׷*Ox[}"~`+?l{WFs}}$uX>p,xxoWؿZN_[ۗ_<Gɚ.wx V>w'|n'`Wx;^_|n'g^`w哿=oزO{tjwտRҽ5^{vV|`Ճz_{ /xg.b}y߾ [.po#ޞ0mijF~Ol ׵o'wxV{ }y<h=*ޏ`˞\w3sg.p;Uv>'_mM^|nǿsXmu-[=pw~:<˦zp`ƳxJLX3'o_?sM:p;<x YvGx]vOxÖ= VU>)DH{?]wx ʎ3-}p^=Or{Ö}Sm?7þ V}χ=w`G`x}D_~V}:Mްe| 7 Ȋ\\Sv7l٭Fxmˆ?0#^G7oq?gj}Њڣ^>0M;xۯWg~?O^7oa\wxˆwi[oW]x 3ϻo.p;<{Ps {L?|⩿o=|ټݮpUD6[v 7Èx?oz;(Ī'mSw>7X_{m+-?W{w=⭻>)H$۷;<`|זmp^m^O]wx EWzo{c~s< [vE+~۷<[v{`Z3NV{kֻ~a7o4Ƅ~^ +Lϴ 3p+/xÖuG< 7lن~p'}oz}>nD>x[/n5߼"ɏ:]nޟ^e.p چyw=aROxÖ=>H߮f#zO<['}.0Mě^o.XujRbկnk|:Y~}|w9lnSΎϣ-xA^Fx5l٥n'`ī߶_'߾X}]aﯼs-ۖ[3G$7oݟ_m;Ww8CQt*5 W2|U"wqhj*?rvr;lW}[);ª?۟'`XY 7x[~̝Iq=|q?wMxeoǵ= /xߞϟFnOG^O#^w|>=x||xe.W=5ּī~L&G߾J̷+;þ^1}X\^af_;nx7*xx^ &w"Ně7q-~IV>< Vo{cg)?x/n<_'G\wx^* k=-pV 7b?GK3oׂ i Wx1+ z=6巕nO_zݞozmnp V=8_\ wxfo#n0~ILj[祐+;Ym>޺~۱S=.p;<`,XZxm>޹>޹1fao;p;l5\;q~e;{~{l{`W?A=dz'߷x~[ێ'[=N.p;'Fb;>p<`{Sog;=pW4'}v{}^/xgWF<m:xx5owx^^oyz=_>\{}8mcǗY Ox;hqlwv}`īʇ}k}} y> }ZWX#ێwx +;~}cLxe~n֯8w/Y ?s/Xfft9㋯ x نx?'[ԓ<6x;{>Ʒx^||qh߾Xz\}_zm3'7m} Fū;< }tU-+= lO:ykOxgzc_dwx^C{ wx/xgYێo|'O?x^x^b 0-78e_x~v+<O^p7_}{eGbTۣj~u;< /xgWī%#^U~zMAu+`UVvWVYSv33}n z뛿{w_7ת~|ƓF;nxkgoՇx|?w ۦ,xoW?w|G4}x+;yg.o{˞p;< Gx`kh>OXϗ)ppۦX ;yg?.p;<`56yokq~n ~_5ǻogדo'~5_ll/X޿Pv-ѿWv | +nou ^m_/kWVW(;y^zݮpl~|ImEw xW#}T{,mW 7: #@Q`8߁YzH \`'#Dwzp '7mc}vm?x?}[[4nѿ6xX1۷u?->]^ .+>I'<`>>G >}߾m~W \aW+51lo{\#=c= z> ^\#0-ŏp<`/߾]{?NJm>paלz$#W<k/xgpo#Ϸx%ێ;?؟O;lW}\ #}vvEx["^Vk8߆MO>.1vևm+ێUA۷;< /xgI\mh>ջ+#y8^[om~DSТOx;{~dx ~O}\wonWo^m;< /xgzLj_I#^A_]G>W6XZ/zQs;lw! zY-xgW_K͏+#ޚ׃w}m_0 'n{V~gWo{ ٱ? 7 1Uʯ?ϷOx]E51v#okS*󷽞 k>~mn?O`_P+GzY_SwW7=<|qa'7#F=`یηG 7x/~Km /}{^V;Xٕt{i} f_nw\|z>5x7XFJ޷\ON.\ww}_V#{?plzWZ\fmU4M \`F~|2T-;[o; fmgOJV}&}wz|7XW>^3WzWXOx;{ Fm0o|x~ .ZEZ_To;y;Gn% V=~ 7/f +:޾0'iwnp|o)nW^+`[\_3x;=/Ȉuvx^Oz~q+f\?OQ.ov^nv>O3v=paVDxˆ+/} 7x1x1mcۈؿmpOo'x ٞtxZ߮vy;߯w xQ^I ;< /XWGON p5zae|[5ޞqceXžo^qKqSm.X+%+`v|}t<7||}tTQ FWT_lwv}#oOxe.p!^3vvGxw}=XOr޾5vV=Omw,pxoi?ϧO+Noq}ޚ+kpaox^DZ>qlwV~ 7xT>^S = \a>؟ lߟˆhoU jv<xˆo}_V9tt N.p$?I}'\a+jo/xgno~j|6vm x Fxplwx` VAOxgF|C7X'T߾=᝽ 0m~Ipl0is|'4xOxgm/{+Oxe.S5ַiXv|y;=p;^naWyV w=go^Njێ+Ɍ?lO>֣T ʷ9>|Iʹʶ.p;<`ogOğmLj7VzMk\^R|^wxjWX}[|z xo x>y \`ۗp<`Ǐ&yOԷa?q}T*'|˪[;kOU2wy}p5T|`';;m ӟ8yTo^\ wxogoۈx_{>O']wfx+<`5|:c=f'9pl'9F<ߟXoޟu}{ד~t\ w7o FxSW6x;h]jnpOX롴*[e)np<x^:y: @?o|z<Y #Di0M[x^_wPw]m~q+ތ{]nOGk=k ^.\a]{47hr}7q|~n\ wx3{7_さ? V>[ۣm}}q+a zZoٳ +wz k>{>W |cXk#\xm}h-wk%Ɠ<7x*[emM ;l~\|oog7co Fx#^v紸}+I0 نx>txxxS=>k6x;{!^ox g> /X%ovԋk^o ^k~ըp|oNٿQ)ը'IMmE{@ |v ^^z>|)sM V}GVw7X+OwqW}4bQvȶbZf|Ǔ_nq6x;% +gv`_g?.pU?hOx;;>WQ6x g.p; |:Ljo{{H{FkGv'F<0ʞ7o|'M`qڃ/mݮp><᝽ 0m?a/zimƷ'< /xg{>);Z_dkN!ۛ/\ߞ'z^MohoT^6{4ok^ވzn r/~C'~h=~3_?skC'; 8^w,pxOWokۓ#;lw>]Am+`%4 #^U{PM Y x+=p+x ;w Fxo 8߁p֏7~ ^몞fw{\ {4i,K o?p+xn 0FxÈWx*η"^Vīmi|p|z<r 7#^_Fz(ox wvr<`>>~np 0/{Ǔn#Bw<6-] 7xʗT>fyoȗޫzGN ^pw?mQ}}>){Tv _q~q=l+{>pm%I=U s׀}|pz|>mqrD<_Ozzc'.'Gnp>{'Uo;y; Fb0{o"^0UoU~#Gm `_<^/pǻ>_׮_{)YW+OrOxg۷ yǷc/{ѱ= f!j0-wk;Ǔ oKX|zm.p=.p;l'xUϲWT+E=^};WF>a1 zI5>6omV~Ljkgo6^1O[ZU,_K'w`'ye.p;<`۾ ۪\`wz^c?Ͼqo^; w7-8?_oVRɭ"پ?t /xg`a'z5KoZOrMIOMIn/xg77Z|޾6x;?p}StN^Ϸ!|g_yO;}ۿz+"? FaF߾{%zT);y;{ Fxcˆgx$Ƿ-ߌš?oߞ+> 7xvo*;ygp;xzZWo'wxjh}Gv}G~b~۱FmZ?zV{&wX׫Mx;Xk~-\w #+zIOx;{ˆ7ox#j0/[8߅x||owX7?3nSp3lw?k? FaįWWvCx !^6vq:uoGx;ox ?zL}_}/>/xg7k|^pS@ X:f[j?x{k}tV}ߵf+ێ ;'mK~ʧ쪷]|oߞ\w #BU`[x V*;Yu ^oWXϓvN6x;'yW^q|E+;;kUo;yg7͗}>zۗ}}[)߷{OXAZ?zV`T;G_|ȯ Ξꏏ8>+;iWA-*p;<`7m=<`xnp .W ӵbm(Uۺ ^_k3knlW|7X;<kdm_Nn ^OnO||=mn/3<v;MXSWFϾ_q;<`m;}fq^Or|nz/G~ ;ܼl WvGxˆx;{ @#-l)e}wOxe{ #B<O~;Pvy6X9um.p;<`og+I~>^owv} 7ÈW۷$_<|x :y1y1wxw @53!!| pSeO<o=<ʷN^^\w|cߞO߷]`Oj<M ^~ǣKJ.p;<`īzj}ϯ+`몏W?W?N{ {Pv|X{{;=p+H5_oO(;Y %z7Oxeoۈ#0z ߎ,}t ]z۾6}͏d([&+{}tvxPvrlb?5_|{tnp ovws̸c7[a+pσ=^+<ᕽ|ߏw}XzwN㯪o؟d||LjVǎXv__9;To|Pv33ݶ7 o'w=Icokٙ6xwv֋?q=[=}ބw;}>'9} #@a0 c3דד<Ξ\`ωI>Sámm^ \`7#F) `_5w>KC۷m'o'wxh6x;>Jꋵ8:`'~do&=37o4ד|{9Or o{{^m;~뷋[|޻v<g3E ^x[Z\g 1^qmϏm}c|IUߏ^)'>pawwv{7tk Vwz+gUo;ygp;Ao<_cgX׷ՈKOx[x| wx/|=I<`'7o;;< oWXW\/m{ջ;7;'b ]}q n? Uo;y/xgw<`{/YwU;;}t{+F<0+OO>:Ϗ85ook5~ڹ/E6x+/)o'Wzo +>^m} k? o[ y'{ٌomv ^~Og|~W~p;l]s>GAG;< +Wlxqy_okVvV~IqW;< +x/U/N[Fϯ);yg.p;<`nWīWu/mM/xg{Xۚ//x]x~OGn7O.{n֓.pmm<` npM~ +ѱzޟ`v { `gjƔLy+<~`UIןZ~Il/xklwv{`]_~xZ|}}G~ ٣/ho}nqζ.pUc7'`57=>y ovx m\y VA;_?^[o|);-m?{}z(ϭ} Ύ 7_>/9?=g~8 |w^\gkx;{?p}N=_dzoOjkZ|$>>V{P!5~xZ"'Ob^ߔm6^{z>ypwC6o'XAp{}q|8~߿}NW=p+(;Y 7&I??ϗ<.p5V^Zn+_nx݊k 7x+睝KxP=6xª窷x=Qx߾ \`=Oߴſp;lW@Q`oOx;mWX_0o'kyϿKSvrvoTPu=pÈs xglߟ$Vߎ^q5uc')2c?u{5gvW:< /xg{ˆWxUfS{_$ۛ}t }t'Fx}e'Fx;<5c/x>T/GSAs6x+>Ҵ^nʏQ߶~lOSvr o<$3q}+7}~۷'mn0|1WmSK(;oT};zOXJnWXZ\1`nWoۛ/+?S X\wxfv<}{i_+oUl$ +k3Vԓ<5QN|7O[C4N'GLjx|ۈ7^5lw=p:x'MěFx;iy[ ITV}Hu?pa{5رx>ގc =ڑt\ #^}`,?2n'LԾWy /xgw+k>~-/p;l0$zy=v^Obf|Uo;y;{XPk?0w;t ~;g?pUϷ=O|}y>o]+Iowo<) 0yD> $4XvXjO߾[+|{nWo'WX;47U; Fx6g|v;|zIbO;WXIf<^Xwד<|nu X OZ |]o{{}UoVǛNn Ύ>#~A _TYt{[%'9V/.Sf 7xO︿>Hzy+{dm;< /׫W6xˆ7O\a^\o'G+w盿]}ϛw.px1Onƛ{zX<>?y^=4G߮?<>|T>xo;znwvF<w@<ϗ^%m'^`}o lߟ7:x|φxx53!y=xwV}7?X3;~ }քcoo0vԳNo[6Vd? ޖEV~O߶^پq[oކx%jyz#כ/y N%p;l{OyH;}=_<`?Go^\qzV;[ Rx 7XuZ8W׎'p5lowv{ 7È״+oeJ;}[Qv~Oy^^)~5>= o=Ynp zϖx^3#w6wBUa[j{})_w'k<`ͷ] \a'6XjQ>߾_+<|?q}قw,T;y>}}|X=:lW=.po7㩿Uq<`ϼߣ$?{=c}_Rvr ʮ/xRvr;< w~:_>:pio+`g?To;Yϯc߾<Xf+wx^,U6x;{>0MěFG܏w=ygnpޡdS~RXӟ'o'R wx#^AW3T/Uh\;_|zIǪ5|^F^4߯`yk- 8lw{3kw+!޻m[ozZwVmqUGMmoXeJXʟY?dn ήj"^U}ׯ=~OG}pUJ7,߾ \#^Gwۈ7#+ogOě7x`ğp -#xք5_ywnp>SՌ|] #25}GPG~iܔ_#^pl[hD>T ]N.p;<{%W6 I<`dzx~v}>vkϾ q}b?8V 7xO|}1wmʟWxWW(|M+}mǚ)6Xg=}= WJ='# \{G<ˊYZϞ}Gnm޷7zۭo^ٿQr ^0J W6X>5)=s;lדh}Rkltþ:ΧOx;{Faux{d>e{ 7Z^Ξ|TϷR>'z٫>xo?>mon xR/'Ɠ zZ~bU%m':.pVvx ٣_ܞ}{OxgÈgg+{"D7q&xs|q?׀ \a_o>~I'nop~[o/X_>%o;_=a|w  <l߿ˆGLjo<0 8߁x;{:~ZOX4}{g3OQ^\wX>Nxيsa߷=u[~xV`_/>;cO|?`ǫhwv/pU>AI u8O$7)aWv]R$-B >︪OArFnTOOO.[ \a;UKgx<=(V/iͯ[l>n;^rˌ?"\/I=?BvZq:_p3\#^f9n|WXӞ}˞|f=_wzq[=ol޾w[sn;<#-g~pAwkDjgkp+,pt#^B`ur3\ xzx [z3In'pm= 75y{/YH 7X`W#~z =0m'&w a=/80y~|g l5χj{SymYo.= a{^~mv?ڝ` 7\a?xXߏ3\ aoq|>޶a|jwQ/xϷm%ۖa$q=x=>9n,[ q_p#s~Ⱦ6o{zz$8öjzx[ci.pfq<%yo.p-> 7X#^`ě\qV;owՏ&{^]wxx5ÈW}>_oxz0pl#TmQ_Em +lRVtqWp|+<l3Oy a=_z7g+QGggy>+ݞjv՛nmw7Xp??o}X`>wgyo="N{o{ g|=N Np묏׉+}_pMp `mzϯv.p-·I.[mnp;yeFxeǺ'}z [} 7Ö?~fgtz3\ lm=I.piz .pl [~o/ ? ΰgz{mjۇ;{| 7Ϸ]}G2\ar_"gx?|/nxˆ7G5w39:Np+`#G-m>7}eۇ޶={wm>͟S>WX[>4o[Np?xo]7X#^ ￰zۇ \a;zy?:xP\_/lW8=l`6 W[~Eki<%>-pzq?iwuo{>t l:. q:]p3x^dxtNp `Y.W INp+`{8uz%8eon~;È\lߗn:uηݝ{x!m`} i;_=n}r \a;n`/5Xn6?o[x)^O*`n?KR?WXx#7^꾾to?/Ϗ,q>4Oq=i,}oלΰ-leeۇ;l+'np>U^O3\a˯ <`[o}8n}8kMps?v[{[mro/$8%\xvĝ+Ú'ٝWX9v8p;xzZ}}ݸI úg64,pi#xtF<'2oFx ^A5q[No߶\wxzY{E}$h-7Ij߽|˯?w?x,>_^~|Isd/϶+JRu/νoOۿḟ̶G!hgh6`޶{x޶3vma޷¼oaGXG{?}񻿿xWYU^k6<o^/y?_mnw]lO-w^%:.[ܞQs J{mVY[](-c˽~ ZgM'g?]_/_wIָX{OٻZ)|}.\=>eof;]cw˟D,L|}߼_o_i7?|~x%_m{텋=2 GS|}:b<>~WO߽}훷!}_/z# endstream endobj 34 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 37 0 obj << /Length 200 /Filter /FlateDecode >> stream xMN 0+vjWAЛxZEPVAlff%ȹȗH&.4zKK77}d}װb_f:Ť*!`C} ‚9̜`/+E}ߌʌ1ROUf;*MLwp>&iGgbc7~y|L.cvuP PN7&VD; endstream endobj 25 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpfZcsRR/Rbuild394c4f937362/mcmc/vignettes/demo-fig2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 38 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 39 0 R/F3 40 0 R>> /ExtGState << >>/ColorSpace << /sRGB 41 0 R >>>> /Length 12648 /Filter /FlateDecode >> stream x}Kʕ2Ŕ~,g60f!˜ FZ8']нQl& &O?zM۸l_|[0ߺ/z?x~t?vu~?/oۿ~?"x?6o:ݶ7ncnݘx}m6N~s6'po݆~/Dz;mLGͷtnm/9vln]?m%.x­m+.aTRtK<~p|6M'o}~/$x4,mN'xUo9zR?tʏ%z۹6\o3? S7֋@u+0S=O2ycϵ-/~ F3?{/ol<_ԉ$hK= ^7bc-Ķ }kU1t E֮?FTxî=^d?/ċ p?^%RFlx)*U*q苣K cwx<Ʊ1s 8{S{: {*<q= q Sc&d{xE%)8+4ZMR{{vb?MC|/U?nI1Q= ̘0^yߧ>7ՏD?wŽgKD|]Yަ",뚥hmZb6ʚ Ǩ‡6fAZ.T,͒kMy(3Lb؛ei<8]^.J,MZkz^6abn^<>k&++fO7u {w}x,9&*?77{SmtkPle;)}5 o.CSE28qR/2q2=^>3(㥬/B6KKD؛kY5Ƴ߇%/`,apB17ƳnBgYaښlc+~TsҒTC>)mD5x¡0B8>V'm(Cbp(֥>Tu]1eXk aT* M;EW6M5q"j*lHZ j)TSaSME2RTKi2[}HvTMuf~1]]I&^U\} '&}:h]7 7ż0.Fpm؆~(36ĐW"bhV7py5x%>a^6lͷY64 ֬fob*9&fo_PjE˫ƫD}jV]R0`^6^bmGuaۇ.L^W]0m^6^˿lUkc77ƫxܼl㴧[mÎyO0yOWٷbX(}c G[4<)~l͈2m͈2^}U7/yDeaQKi4S3܌(EO6#x]χ:vlc?i[I+*<АgqUN'V a+4|¡`B8)-¡hZZ,[=ڟ>&afımlu c޳վ8Z|lqR\V6V:D j)\BEj+T!"mu:+U$rZ݋U"][ݺ_aRĶnNOzq72[oC[j>ۣ;~aV;mVݔ~(ڜoVߌwUMЬ6gV .7[Zk㲶›ڔW oz>][`-s<昼mnl0smҬgZ,=%^\f$ Z,lEe?g{[]&Թh.d>TbP[SaOE)dH5RV[UTVKꮥ"*Y[== j~uf~=f.~&Gŵ⓭'ͽV8 SAj=joo߫N1Olu1G N1{Y>v4?u}(Kp.Ϥ˱C(x¹,7U&'4`yY+HNO8kɫ ]] 粛ɯ ]`PsYA*:+xto]ou֚k}|'ZݳNg>ϓʴsC}[:}C37>UJe`0) <+PIaa&£i}50 C&HS@[n`RpvCf &ݤ &V, Fm 0v & &][x/S,5{k`0)7!0 M &Z:650^+g*)R10ċnJL mA`0Q`R{ |L )x IA{x1E,£l<IA<"0ģ:IA~:mE6jKmE㩟q? sIK8;U<#36q~]&Pz|` Ul![]{blV;]I N W&q5IA9݄|`Rw.[F>0<DIA;|`R7&Ŭ^=|`Ra5Ľ Wh pIA;u|`Rw+5ƽJ}\g*)g֮"N|`(0;IaWRJy?|`R!:&Ң%|`R&0V0TC>)m PpX!趡 ¡hZZ4ͼ%ͼ%ͼ} 2PCSԌ]TE䡥"<4=4~CK!-Exh<4C7Koxh.{h{8/hO`=3sEm^fDؤO^\]~a|4}7/~(zF&ي" K&h"`RXfZxP(|`(2@7~2IAܩ|%IAe&qg|`RwzgI M]xm/MIA0~7IA9?IAܻR e4 pl Oy Oy l|`Rc x%ʸL cPVY;ۘs3{=tb>0)RIތ(^/ a>0'-M{R0D Pp[!n8y?CnkpRlm[CѴ.YyKyKyKyPU}0 Ff쒭".C-k "WĿfV[)l"luۺFDk[7㼠mij l5k ~l_mާvV>&WmhlSc[}7/Q8cgPLMm#1cP,m%{e׶P$pwCA\̻ Af=[xd#I\Wf=[1K-\iL NI-C!l|`Rw."D>0);"ДĝJLE28Ij=oIAܻPCmGojֳz|`R̚+J֬gZf ^&1_|`R6fD%Fn|WܐA_~ш=D3__)B.K{k r, xBs_kMRgY#pVh*QpZhZ><+q;t=c~5cyeY8;{ᡭPWD h)GK!#-E8i+hLKnm]R|O3wP+4xQ$Rrn j꿁:w>]X _b19gǟ |l~65~$zJ'88xL욅$c_,E {|ol s9>f /+  лt?+=e>(r|60)ڸ17IW/(P~rJV+APg}! .b>CSz( p?h=X?+P5q pߟ>Wpm<iJB|(tn~+(84OC+܊(\@ [)YX͢ NvӋRg؊BG hZ>#xϠ~1~`ccwV —LR j*¦d"L]d%7L5r|M5SMuf"(,liyj?q/6imAW;WK:b17?\|j[ij?uEO LYAYd. %fJ8}ipn6fL(_(xS~VEΊY@]8P(UW4 Y8}HUϏ5%8*1 p,0 ǙS/Y5 0eqBJ8R~_(c4(M#JLb׈d׈b>Q ŠE_(FqP~QR~BwQ Zj]YA)BZ p~gbkMh.h.h.hh_@UApV29 pᢥp᢭PvwyP.m]R|˵ uѭԟ\\s­fu.]MZ|.hUhm/\t䢟r/NO}^HX` >]Ĕ_(Y _(e RnXŖLY0+| >Ĕ_(eF pm/ZB0Vf)?+ҦB9""LK pY&_Yk>fZkPp LYAC|-\4L8)P̚M-Bw~S~;W2%p9H S~łblFpߩ[)PjBw­Q±_(O?+m/^IKUjX9٬j:b?B{XVz9C{8IRku;i:EH]L]H]Lݵվd8LS аF j)R4Ri)hi;m~i]R|V3wV+4xq3Mvݴs­femMک]^*_L)qﱭ+u˃ǚ'J_WN' &1 w=Fϼ4b~zyH֘_~b~nzb~<1??2O@!6o}2fyC5nxj/xC g}6{\g7O@ #3B0x(kD'L6K VLͲp{M ck0uƛkT>pŽ0]W*k=Si8) N )BSIimΊܺh|q}q,}q}_ˠ\/qx(b)_L}1K!_,Eb*싩HX b)7 w|1S{W}1~7ĩ=\a`5Ok͈31~:=87틞PѮ??rcg|};㇢g_df/婆wCj$ W1HǙ_/%P%2{PxBF^R| 2{I\l _R }C.Ɂ& qGjK ,dPprfxl͈/%0|U2{ . ͈.M͗xw8_ amF^RBxWI2|Q<3>)"qRhXKA 'qRKA[hZ}3V?j/~ _ _TbK;ŀ-{j+|RWV^VbC {j)\AExj+T!=uۺP|p]Oݺg쑅ݜn=5d/Ԉ}_mھCvSkym{;=~A4WSdNGgD]E0K cL0vomk {{[E) Ƴ*f/a"K c1 c}01E>/Ԅu+،yK c}*0v*pkFTތ'Nmmt`ːK c*׋b5$ O dL5X=]弜ʘ=| N u[)Sҝm]y]]]ݳоؙ8U;SLzg)4쥰BZT,-QL,Y Zh+i](a׻hύq^ϖXj WYh>/hCvBkym{;-~A{,}/W:ϳzJ՛jy$Ӯ6yfv'"gh"3Ryb6G<@x!bhS1xfV i<@vwMK0b:f\Y /1#gh߭ <@/YYaI*vEN,,߆YY18rHݙG$ʬwfxǂ@t5mgVY!5 )Wsvf嚲3+4ȝY#ݷ*6ʈ2+4B]lY#^>kά.5YghzIP4K,Ѩg8b̢È%2N.(:0d"ln[d)V\Jե~7T?=eꎶ[M": هxRc:#JqN%v)7:6}17֏^ЕP :v*&8LhZ$e*e̫cZvSkL)qdS~tj[q#4$ad[l01|yF^Np5z fٸ+,)}>&クUW\yNuJ1<_jD\~p[L?/zp {ͬ؟Rq`.xU2<#[ZC!bH/ZWӂN ^Pm/]$zsizTZ^*d&-xY 8kɏyg_z!YcHL~Shz.g-xٕH8˽0fP/DW= ^PJ$ς+; Ph~yu4$ЂTf'~k c^% 86 ^P9-2fJɽq wz xF =O|nPY^k ^cy~ϟjOIom J>zAWyS.K?bM٪]8d9 eHՎTS~U#Rsf<8Wilm_MKT|OpK?)HhiiLDa_>65j5"XW+\(H55zfEƼE8Gt +f+,;_ \Gg 9ʋUXdC}ۛU[k^?;BV"V M &SNqW'WD\j[^\俙/w2T|$Z T/_*:PER/ yC"FbT8(ER9j ÌrDF=ҖrD' =#To'TlL3_G2pilG+x[-TJV|e颱fᴔ*[َV[}#cZv36&#%c+1O8؟U=w{ endstream endobj 43 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 46 0 obj << /Length 2690 /Filter /FlateDecode >> stream xڵYY~_!AF&g]8 l$ȱH!uv78J>ÛtUu*6.jUe|[}n6jh Mnே o;N=}_eqeuRIU9imgXui:2.r _=nVF#û7I8Ҕ=U.[gi}oc|wܒH W$qG)G#2 Y4#ӌrLQ)0%F6;#m}%qFfwJvyV^Iad^oxNH*ˆ mm>@kǎTN mcw;B8FlQkdLq*7=. āRt'S3m>:ɃA"UFO;i`fܘ:7\87:Aq!44@զi`G ^Q=:a Ckv́9Z-YPafvtg&447&Dkis낒+2~d>dH wـ(pDr L?qT2E~Q}xĽwZrQ>b~cIK BױUi_ ;H5)d:Q/SqUowK5M Gz+ pQb 7|ivs, 6 V GO+zV.eAwVf;5BCx)w;].. GSt@L5["knv[,rП/=S; R/&yxEI=!e/Vr~N/Xnb_•` <MnA%%{b֛"'f yg`jCʓ.N+4TYs\E:* N,oAE@ B<0T~"v̇+8$/o3]fqn!4봖b kZSr_A=Pz-&iƥZ ?G,Jt$'āIq4cRw&qE9es %$Y9E M 8XFZJlޣ_zzقhD7ԐbdpT+BM1@( [C!I3pMd(7a8aZxi&,uׁRj&~$kB _PEn,dFXǻtJVGW?p D)2Bx-(1Aǥ2>j 5YӺ]%JӌMLUQ̫iQ {KLa?Y擴40Wл^e\uA6= +OPs%ojL-O,bSU D,߸E |CzW96"|U=TZC #«*c%dιp\ʢ-Eh zaը܌j!+8m,vO .,֗Yr}2Tl,)rvTC@i;]“IڋPg*In{Y6,qϾhM1ˮ ,oŕM~mv|̆/NN_{/꼲k b첧2J[_N o A ~Sq"DtՓ7҂kv~e) 6L@:ν# ;P":DSk0+Zb U)VD16N\z^OU\ۭF^^SoJh%Pi| s믨taVimⶬSend֢ЉA+H9ɛwo~ endstream endobj 52 0 obj << /Length 2037 /Filter /FlateDecode >> stream xYK W萃ڦ&;}HŧlxXxTSc'C$AΟn^|cB);7w e>. B][ZRKvZͪ3-n5?>囸EGmV.:܃pؘcxZzCU[肋m= ~Lg^鰼ߓ(|g8\h7֍Af76#?[xy'x>dZ&~ -zzݡ%R&YjiX ɢww@ i)<<=e-xH[lb1Ţ%]CI$= /$D69{fS9PZj,!GJa1UX`,? sw/@% s4_|ڥW Όbf](}Ĺ'F rN:k,i)M>$Iu ~Q|4͉9=[0Di}$I<{n5 RSx8~ʳ=!:khGܜL!8/+l؜25_'lwǴv3_YI.U#=CkXۉ FFߜ J[+ܜ71Xz͵l$ RWc@*Q&bGG*yF4+kFgQ_AZSq?Mňn#Q mɉuNVʜÖSiK ;Թ#q[I4_Wnw@SqVnS%X"|($τzYJ3ulَ>_9ߑū'\˼D4+uWx,'#u)j :djfS_9[sڶ+@r5 q k΀R~e ^)\~E]p,2-j/+T3NǼ6W?R Z>{i }01x!Xn†EWAZd?皭iX/ۆ zxf:?U}Yt04p!MR: '6YDs-,c_Ffh8sw--vF.Lsa\C%0> 6Wkolߴ #zz=.օX6l}21K?G^x=2  B&8|qf՛~}рĠhVY7 RI.|a14 m7Θ|?sa,vgMmϴ%i]@tIbXs$7Aj%W 58%EF]",$J_Vhxǿ tо˗LZR_!Pg "^%U_0Ymheep)=!Nh+lEzLxؙb =CLNQ/P^:PhCSz`%m^_GHLJ^:ۏ--Jfݪi E7!6)p˂'}`h9hd&>{NKaZpO&ƖQjB^RWVZ98>:\#GjC!"[F]}C)S 2Jx.%c{?8 endstream endobj 56 0 obj << /Length 1785 /Filter /FlateDecode >> stream xYo6_!fw5/ҺEPC0 Vt+;Q,Nl}PLǻ>ȼ9=yJQ:ϙ2FxWd.B<;dgj9Cp-j8Ҿ=j\֢XoIHb,[pBJsԨi6#|Ei .oC5gpd`\Ei?ʲȑ-{t*D)6.\FR"l*OEwjGalI0S|*h4xnnUc [Mnfbi0_tuC'8D^O\7EJ@u(o@o'C<6e.<}EzPdFu:hyXiy黫6F`P31z;FfA1UA\vҎN6k3xI? \ΈD&W ׃ui$eC@ /oj}B:WAKi)@X$--Q]'J{{;nu€< -Ve|uN(GrZf 9NBLhꂊtH2 XCab,ɻӓ'2Slteٹ&0!*Y] b0mdNC+~hJKׁɜf3+-vqy\|_e8Њ#9D~6FAo>JW3NvJfޥmV<. ΟR 8ЩYuO6ʆ5;>sl9k:2ֳaM.{֋pYhNЅ4l.8!X-T@Z4N+VzE1p d x`W\nm>tBg7|5_0kjҶwѪQ_JBNEW0$$+ z +<#.X z&ۘVD z/% YE (7fudeFu=2$z+NC[8C(}oJ ^6i!a͖6n,@Z-Ձ(tB*%ݻźu =#[śh"Ja:p+w`gQ endstream endobj 62 0 obj << /Length 1302 /Filter /FlateDecode >> stream xڵWYoF~%^<@[@ ћEB$)9v(jٹw fB$1r <+fl]F:ERGq[fs먹џUc >^-:(feRf2C:)EBp+͢cG5ͫ-E6XQW~u JjU8g6\fQCp !V[`R,ZG :wYJM $s{Vj4_v3~ύ^vw\i5ͫ3^tљ BXIxcv`M4zݑq6ևy$w#Ǩҡc.VBsPʇϞPmZ:{ on珱,Z975%}}6e EJf!UrL@69Hz/yGL˓Cd'd( G8qXivGzzӡH,%")*W/ya?3$SEGS2I27YƤIS6 ^Fs*E^9s>6O$yL.1Ρ&V$y(W%hE.xӉҙd)$1D3xaCM~;SEH5P* V1xvSX"Z`)x $2| > stream xXKo7W, b8|3(zH hdyWj}j%$;Vo=Pۡޞ ^":媓 ޅY/Eu:i4J y[?81gU~aqN~d5Ѯ˺?,DzLy@]rKvcOJV5k21;Cٛ2kS>0eK{p?ź/.dA  ⰂI+)}!xo{u_Yʀ=DθXI~d`| 88"WBFzrK"y17ff) _&=aҧkvXD& 'IlC^T`2n"X$Su޿n(J:-?/ OBm3)zGr:7z9y9(hL뱊N`׳=! ׼RsOlRuMfޤċPV>Pz,Y.N̓ʹb0ƃ+HL "xS1lIr*r|hl>jM~M$`du~YA cjz=8=b C@וotoUi%JֻW$Ф4yVUp4ckkTP=?>+'X2+xP.94#(Ȑ8Pτsv>䁒i 4ҹvRzak3ZvEzC>4zT0 `@S p\-cژ%U"N-.. Ij^!0msXQ_-4zuZ&f5YvIsU;' (~mk\Ͻ~Cd5G}߲ΧҐ5Z>"yI"pɯ-3_2.C.rB]wrfs#^p`.x/bC5-1;M͵!0A&<3 endstream endobj 68 0 obj << /Length 2654 /Filter /FlateDecode >> stream xڭYܶ~~^/b]HR@Ps( $m;oEq8g~߽ng^F7VfM-jvR][SuWsUm?_c*ZSk]? 'g &9Ltx#Nq]tÅIf9ጟ5 ՘r{orɟf ogD|i/)j_!3:-H B|ZleDmZLK>15;xvPc,*V1Vw2+eFJF8Vhy>Z̖lR5F`02KcSh{GJ _ys?9/kR|+)͹X1 d~B{RZ~Y3SVhR \kYQG6 u5l/[<ʎ#Nk\y[؁l5[[0D+[{[| b1eI\5 'ƕbX }KVtdA>jMxx?>\r7#x?_vٺem0& [X oQ=.W V6OK)|H{d!!*&0emTr#w*.|f > [T]!AXpqNKKvN+CJgSN.ovSy@~CnN% ]- A$vLGB@YCLY]gmbJXsDؽ20|9e l7>k I4JPy78n1yȅדDTu) B'J !(쇘O ZQ*)ڄ:8?T9*EP)U Y*XPZ9*TrAߟ_ TKB)Wm\B .A. \Ңiue^j(MS-Js8~(8pn"=Bam TF"`Eb:v:~\23f>MlM|ifɬhDCdnۗ3U?ƮG x%uՔCJm>@Z ʲ<=>rpH +Bs7¡j'|MȘsSmTFCVҎRԃMʀ80 hZT&wG{ᴶ4Y? F53@)x)0@|%@GK @%B1oHzʦzJfHVQsuf*xKbtʭ3 m-'fgN>$z7t(k򒒙oWPy^^HD]'0Xth@9͹؅F2xROB ɳ8gI'<=+%%M3)P#!Nl->b@WwXG𷙐)ɟ.b;6_d;\4@CSz:ł/UJVUXz JOG+VO=7eh3HƈqGwW.幰VHw,z_" ˒5B_S> AblɍwJj!,z lCѣRd endstream endobj 73 0 obj << /Length 1406 /Filter /FlateDecode >> stream xX[o6~=XDIöK>(b,ǒ(Q ݆M >:6)Sa`QO'56Mh7$spkm=|ixY8Z:dPGCCz`QXw(vw1AaW /L0/D{^q(bL Q@L# +0^4St9^g,CS̲rA,U)֭`5qY@rk%LCH/(wq#[PcBf;&2ԝBΓε64;by}CKDaĹ(#HQ%cA`a֘p;)5tWaW4s$"cK\4<> /ExtGState << >>/ColorSpace << /sRGB 78 0 R >>>> /Length 7872 /Filter /FlateDecode >> stream xM,IRW$f[4H%@YT!1?fvyz\V_]tOEf 絪z/_o^.{W۫g{~_/Rޥ__ۿ?럾_~z~n_}׏.\wXR!>[{UH^=>jQ,ӂGwկ&}d/-RՂK{D}w&ǻnHM_Rl<5w`)lUI{ vR-xs?x (mr~JˤWev#Lw;En_>Hm_ZL ҰVqL~ ~Z]> &ۻXp$ӃjW ./2h2nN+b~h+:ګF6T;G+xpt~ ҢzX,6du@m21V><8ڏ6E,g^zZAs]}`eK=w?wdf<ǤK>WOYhY-y6<.Qwxv6qZjf~eQCiq=uFSbNqm:һ4/՜Cێk{; Dj b"W1^}FxXۉ@1/a+̈́q{Lz{|Wa#t<\ٰb|m ܉Z?[‹6@5nQ ۀv;2]}~di|~diB~TİtƳRF!cLj# #H #4"aȦ)ɴiMd#8vj~dzv?f$G[v?2[:3liP q⑟3Ǿumz^t_||z"oV(Uנ^/xi^ϓ#ӨoԂqbTj#-~P|Y<G%9Ger~[~T&մQId=ezz:GGDx~ QVV/ ~fZY>_ <]Ҭ>?^0 x}ABw~4q?'hEuzf~߂ͼ ?_Ïl}OÏ\﵉~㳨ݏLG}rG7 t ?*a>{vzx؃Ȇ9õ;uQN7|_V?⫹kmH8_UBt2> B~J^ƃ6à^.-ȯSӵCz} >fyA|| 5^?u\gz+߬>!?Mӏ0_} ~Q5#G>5=V)~z">>+7Q~e*tQizӵ ~!~sLQ˴2Go_*|~?4(OmѠxkLq&մy=;h2fʥ?"kezÏlQ x~z~"qO|qstQ|ӏ[ݗ6G5)ug#\#Ԃ yZ<]~MRD= Y ?Z|Z}^S/r~Ïiz#'hfy-ѹ ?Z}mz$<)h?bk/VW?jaH/]oz>o2-?XOs-ϟcZq9>V~Ɇq:9~#^GcmǏ5/G~4~sL^Ïg|U~ߵ ?y ?x%\kE|̏^*ﯮÏ 7 GGz"{׍">}ުb٥Ʌ/Y Ta9;JiN/3w"_Ϫ:U ˉ^GmʅOҔ 6\}a!.wGkZ++ Ԭ0 8kV@X|S +f\q\qŷ lO>j:*); q*XM#^Μ1vGlI4-Qnf#."_$a7 /} ꦜ᥺y&n✀ ׏]ו>=]7ۂs;2;aTJ |m *eFA$̀!|p!*`US׭r*=S+*𜊪FFz~Ili[mf\ V]T5]bI -@bZ3%4Yf PkD9@#jaBy$ҲFbq nb^#IK9GcpnCH^]uC-P5vy:ݏss[y:ssϮs_9g?pW˟Ut뇟^T/ɿT6kζo9}پ k9َ-g{}f&9{~l@?v:HhzS^5ssܗ !8u@9N>Oart$v6m2s;|gʰ9>鷟g˷5UV_2(JkLOx{ On '_~)v'x߮+H{NۯߩTw*;N~rCrSߩ }ܣ#T#T#T#TߚTO*{4[}뚻GG|]ޣ#T#T*'{igRGʽ|ēʽʽgRޏxRGK}??TzTѤrI*T#T#T#TM)%{i&ۿrއKxI Zs?yܣ TnjS*?T.MkܣI咂=TO*'{i}ēʽ>I嶯KGܣI^z[ʽ&{'{'{iyēʽ<{> rw=z={=zC-C-xRG<ܣ%#^I9zI^zI^z?I^Z=hgRGL?^GG~&{%{ק%:K?(K?(K?(ܣӏ=z>(ܣӏ=z?(ܣGIO?J*7uRGק%{t{QRG%{xQRGϧ%{4K?(K?(ܣGIN*?J*?J*ߟ~TGI=~TѤrO?J*hyQRGӏMT~T~T~T~TGI~TG* K}ܣT *7%K+PG;rKTnI ԇw0Kr/oy}{KȽFyK`qo9 qopopoGK{KA~d-z{ux{}v{}˃R[z2 NuݲCm!=r^m/`Ҷ\w0hK;%Fm{IKm n#GSm mo`pW0([-z_rrr_ `-uˀR`@+H-#cH{IaPH\(: rPG(:?u_?u{٩}RG+_H}#|Gm#uuTIaCR:~χ:%sQG=CQRG-PG5)>)&RGzRU:_U: ..H5"UBoCTu4I$u4x:$:ꤦ:jI):bC%EQ%PGIY:jB*"=QRhIou9u 緧ЫC:jH=:uHp>}#ۇ:®:*|uAuPGχ:B}#χ:>RG=)C!?+#2:.E#_RGcRG٫-H0_:JJ,?z>KF/#Ӥ@aCT:*I5PD?ѡHw\RG+{(uz:boC 㢎0~d%u4wʿBG/mRG3{JbARGQRI/u4#9$e{h:K(WRG$U|Jh2:-Ѡ&u4X$u4I oRG뤎I RI R&I 癩3u^m: (ؤ-#졎rLh0ߒ:b/Cu[RGQR7Iu[RGIM&u:boCJB%uԙoIu[RGu|KꈽuDPGQOif-ۇ:B}#GI5[RG;1ߒ:j̷WVRG vC5)r)-w$uD*PG;.0I5I(wi:jœQޅr'|;Q%œCUBJꨲLRG5RG{:+:͓QeäW:"U{HuN :I5:b=~>Iۡ PG\8ׅuToIȡ -#v8Qa%u]CqPGjU8sW Q}J$uT |u );9Re8 G..#U#Ufx#v7+{Nrр'w?&k}D`?&ihRF3Re~2XSev1=D # CHHyHK{]f!Z]1H;vl. ,H ? mdd#@< e)O HYɓґM'̖}`"ґ R$%\Ņ%̇uyb>-[i{-`>˱|jSH6#1~voj<1Tvt"SOE"%SDaO6"*<1.&?&O̧y1D"<1߉Ṅwb>|QḨ0ú;1lḞUwb>\Ȯ?Oa"a|i1d܈loEH|61aMGXl|50l뒍Ӏ2Hu|61aMGXl9;|DH|DH|DH|$a GXlc/0&0Ay$0ɾ|$[NQ 807+0HB||61|||SF"G'j'_`>b&#`U|d3|. ,mb>bG;=rG0 ph`>b&#,8g7lI$0aMGXl |de|1a gb>H|61aMGVB1`|\]`>H|\hmb>b&s`>2L&0ab>Cmb>b& (x,n#3ٜ|$|vb>b;1&3H|O63$b;1ۉNg7?Z'3 endstream endobj 80 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 84 0 obj << /Length 1876 /Filter /FlateDecode >> stream xXY6~ϯ0ە"%mhS&d[6bKe_߹(R@hS䐜!_^>{*K'eTL.'RQn(Ur1 ~Yvh{hAVAA͡!M3}w}IƑ.5xd w3v54fdGNetd!o,}GC䋱c+~~HsPW[#4T v`nh.[Aچ)indPYFKjN^&yj͌N3T㱽f,-(I Hb|b2W(&*2*HG:Z1?dEdI,Fz2OAeB#U<[t&(kqlWo(DDGCF/Z=`h>`dn -'r<"~v lP :ix'ڪҠn(hD?Z|2#<4&z 6v< 6 5G^B]uald;kUKVVxXX19>H1+-Pcx ߒ̱HkXS !k.ot`=W sɲf-pCF4_+u~G"Eӝ lXА ̹u붱 r&1Y3ɟ{i9pi$(P bOfC˒*HZQdX/eeD[YϤ &g3RRk<ℚA19T+9`Ja눿@Q_DYax+U_Ř}CP*9qpPe_-J|w'@dݲIx\ ;:8(J複dn缞+U8X$m?e 3%JT׋1{Ye2g}Izע1W9ʕ MGT1@_ȗ}件KM72\)`[tch8o%b X/ ^ Z\ nreJW]=%WH<ץ]XyF?=zGx9GI\4yT8`jmMsNc÷58=o[Y`*fbHCkeby%/#C6V@vp馂,7<]<͇.O?ȖqcqZa% cy|FA,ʤ{ph$JtTY<.T## XA[ob[j wGLjZѫtm6 Lop.x ~? endstream endobj 87 0 obj << /Length 351 /Filter /FlateDecode >> stream xUQN0+,N!np.!5ڴ@] zg8'-wMGpBЦo*JQ&u>m)Kǿ;vJ? ~ endstream endobj 81 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpfZcsRR/Rbuild394c4f937362/mcmc/vignettes/demo-figgambat.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 88 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 89 0 R/F6 90 0 R>> /ExtGState << >>/ColorSpace << /sRGB 91 0 R >>>> /Length 1111 /Filter /FlateDecode >> stream xO5)|C R$Žq pX2Ha|}UؑVpFo_KClӗV.5 ɵ&'^+7N~Jn <ԱKckxshizx/G_>G[;wG~Ž|~9wG۝A49o5bq2ؿr7#sҰ^?'m<>]yL endstream endobj 93 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 96 0 obj << /Length 748 /Filter /FlateDecode >> stream xڅTMO0+rtqAPJiendi3cg7tz==d~t|U&4Wl >qL6Ͼ! L}m~q|#ˬǘ輄aU0~ Ul6zA4_wԀu/G'ɾy\T Oݕ?S ,; 2H.H}ʾQN#Vsȹ4nB9RҬz5P1rU =q!@swAPgYlB3lDTkSO;pƅǑ;?r&.&p뽋>%SY^(+">%mM"_BO]ռᐃEEmRB#mV<JL&j$0~ȬO]nmkH HNKr52jN[S\{aql~l endstream endobj 104 0 obj << /Length 149 /Filter /FlateDecode >> stream x3135R0P0Bc3csCB.c46K$r9yr+p{E=}JJS ]  b<]00 @0?`d=0s@f d'n.WO@.sud endstream endobj 116 0 obj << /Length1 1444 /Length2 8638 /Length3 0 /Length 9594 /Filter /FlateDecode >> stream xڍtTݷ6H )  0 %-HJwtHH7Ҡtu~sϮ}8em %(#ה3sa21Π1 A08 7< D<&Pswxxxx|<<BabPB@pL&y7 lx#ņ+** m&ryhtAm `p@ \Ÿ===.p.(^ F8tApd 2@ 5.L&Aj@3?ClA0Cv+X/r3޿!66PW  ؁AJ\/ :á@ hS:$>twp炃;5+Bl.. >0 dp CCl~amT<0!<<ЊooG ma=á!y@ / 4FcJYJOQIMVNY'k\$֊aI] ,g2sw>{MhotZn|o-t'6[0RcPql޹9=jBnWcrs!Q-٪RǺ-meT):}IFx|0sZ;~4 _R}>x# 93 fwjd3>Q˒3o?ϽR7&.L h'bI9ڌi֠0*%3 ZS⍑m?utƿ%>Bs.I֖/t{]Pxd0ˈ^<6ǴW6W#7%,/2k턣XӺJ3q|6Ѱq=B|dr%"Ry]T(F:׶tTҸwm: Hh,T*A"b &.ܟu [uΧH7̴FCJ=5n:GH;='XCUnw! ꆤ'&*q04 E+\Z{Enj莓k9@f:n1!OwDhKϘwD [d<"\T/KMriZUiE)'TdۦK2>! xMl9 bc))m\S~3mlPjΩg ӵa fVEmKp[R~3F66Η }[ѯrHW!s18wռ-vxhfIh<;4@1 d Ct.K|- -!*o } q_\IDڗ|r 'NJXXAZv1 B%]([o}خ)&8t6p[rnJB(̬u"_m-6u 9S@xEC][pq晽`zjd|gKvUbmU%|$| LOYN;ZU+,sWFIrb!y딂Z:ؑ~C6Ueh(ȆϟnSc/65Ⳟ%JX> M |qɬpTMjZ&wf0_$͂FAWlmxsQI 1Q5-'vqmڇ2x.,nOcت)ap۷̷z=:^M$EGN/s*lpq԰&K)8B*T齉Pb/(^2fu9Im[f񑈉*ܻ)C'?8R /;n7empZpi&s$li^ɫ4>҈.znAk`>nON/XfϞ<;jZ^VjBAk xSJl^S<0]?M{2fcHU'~ Ȼ5ER [SrHC> |i4,n57݃?{Go^|=4A&SԴJE`iQѼ Dt7f I)~< rA/N7w0:[& 2[׺r`񽼣y0C)3Y*hJ}"iQQRQk>(@y+\`%aVH]6@%q4bbyj%9_rd].Kk'*GoL@Drkk81ԷQZ?BaMRR풠~qx'3cЍ<ˋaf7!c DIژVo͏ }Mu߯VI F.N5a{;;xӭ;}.~upFxRmd 7P<2L|>VE.nw ^- uFzR+rCKc#IɱKp"mtQJSҬo>[>Z$pig:USmT᷂5B0kJJ$k?;c=VhByvN"u4R`0԰*u͇t/9T2-VrJoږ84P}h&1VB^C6Ψ;q TǦ5q-oh퓗K 8tLO;ZZXζf2kګs 8+ŏZI!$>p7EcoR,vg)Ƙ>bwNNCƉקgY#dvԤ]nnOE,''2멀빍>ei%&tV9ٷlG-nȯ36fEd#k#Xa]k4}(h#XKװF {0dg,iuE_gt;ad}nF93l'?>>#U! 5'pnk~Hpig9s3:%4ٓf/)Juy SM#~X䈡[OpPǽy}s եӓxzr$c[rP9~.Uw$ 0\8tZ/>:Fsgf՗K`7Mf.= sE]3aDʖtH\yVho$Rϋ%~Gu%e/UAa߬0m =%vzǪּ4ӢA@<Kϧ\u?Zཌྷ\S"T`x5k9u5P]L6`v-'gupPī 4 SWJ=0Ư|=vCP!`6LCn<.01(`ŭŷ8Yj?8#p 0kJIdiL 뎴Gėp0 >pgl 3ɹs cf; eѫuoj"i5->ć6vR6c\@/V OlM>16#v3vzp7Q4解"2]y*:,j.1 %9frf,>-?sX\QY3k2X qFfU'B"_ZK\Q kJ^}"L=}5_?Q'?am}oZqf/PͿ}̌ńD=+^֊HANC"w%|OB䃑7V˺(yݑd=FF"2w Ki篬gDc./|H6(~_&QHT]ͿVȂvell+ky P?Zp 7͹ryAq"et#+_|mCQ,)nsg2!'*w5;q0#0RF蕍ط7vD-N|j V))U3oRWby˲)cLKΕM;ӄïB֏R둶e|[]Fj}Ud V[Eu yz\ř̾no<(]g0Ohe}wv"gռ4ҾK&gBV}uWhsZ%89 NC4+DJIVlli8['_4rE;2n߾]dɊw~|qIPV[ncj|֞y#6H)zMc#b{NO͊KMXFaFlNuf4f-fbnCҼ.'$|Syxe6ocʼNW2KB5w霆u ANѬnr4PPob{WGV&|Q۫aO}6dlut/s ,KxS6CF>^8QyRp?I}[}q&f7|ЫL}T먄h1;P8["]Kޱ_$d'!nUǕm˳1o(a?| h=4x;b} TPP8`b@hWY#ajOprpaK{c:' ?pKblᅣlSWt.3SQdxrr7$~&,_(;7ЭO]bOܚJ fS7pwBJ ^g#TêFJH^q}ʽuvњ)E-~S `Zgw׺_fiJ_;-[tͯ,"84֊:{*.;O )$-N6 iCБ -֕D&|NMm xH1쐍›sV}˶UBr>c ([~J KzupBF~%H #ef {^V1-#/AW \LâGbpG">)x^UѶ㝳^vn _ wwlum>elft8#."@P~}g9Seaƅ?P2/hXB`NU+݇:'2y`T) %ן+$"y˼Tf'glۖߠI7,4q e׆dʫjlbyHK䶸Ы0;4YpMB!~R|lֈȺ3]bX#NM ӟl/_ƆBK&e|rjX3΍Z3bl`xn. 5$xn:'x?䙰@7/Xx Ųw8uCp;F$ (Q"hKRۗB/y=&*jB !lyBc0 <|u@WFE<"UuiFEl+ g*<ON1zQtK:nﰶJFE 5_ 0Ju!(B3Mbq6o|W*6sC߬ȲNp@GZoMê/EK,=E\nTÏs!9)򉴵+U>rJ)j**,pP|.ko*IuQs'S@BgR\P[(#M `pۡUƕ{ȓTOYҽ%\wlJA<&Îa6wVR7uѝA:gH\;|vJ焇0A:+ZxzrV`К{k9S(wi<ғV7-_#i3b ?.utzж :xL @Fby.J~:;Mp ,w5__e$bÞT$؊6שh۞uuP1duaJB){){sHm#|mˡG+HNllO.F4%biח&A'vZEO9?vxPiyv긕~f%ϓ;`56 q\"~ & mKc`C xJWv?cK3!Y  D]\DŽM%]D **+* -u2iY?­Ht.[9ؽsÌ':c=AiTB Ȏ/畲;vcU_2BuUF!mbp|(HM?D_SҎi" mԃ@k!fd2dh-C ɂNyȡFNiRLG8gAG?1 ?zO 4xo6䧲tZv:Ŋv4εΑC*/˸*>P"Y$~-"W%@<\qKѲHk?𿳎ϥXR9o #EX /اN,wr9\6Tg^$KQ|%vfVJH=}oT8:*GQ^ử.IV\|(N<'8gT0)֐N{y#uMeJ}!$.$99 d8+a4Ѱћ U.6O_L_GzGx~o8M$ zv8f֞L t)>XEmvn-W0|qS龆YEcXeh!nq)kRWQ,Js0 *|I0jpI৥mF"f'~b\JwY*X0-nW 7Z |Ǯ̫G.1A$ ֠P:NqeRh\TKL% dK91d;Cdw,@A0Bo-~=^0HerHp7DOVe!8V03-n*c|ubR,ُ~KzB"Bfv&vҴWԒg+ʑn3,HAʞ&f~=(,G؞*LO)? T[>/|=$a"!OdG3#5/;^N5&'2ʚy85OʺB*~ֹxΕdhg֜S÷*G>VDx MuO0Pg4q QEwcV,qi` &9RU)QYBR6Tq/15_lbkuWϯ1||ò# v {mk흩|1mDE9ƢN%ےU ;t]z.-<tr<c)h[5Ts-M'Ⱦ9#WMq ʎ/5PJ&^|P@6%VO`h#Qk6G[1~& ڛ`t;/ g_Rg_]U=UOnz!-1-ޭ|&K2|p2 ({!fՂ~ā6)Ӳn~4@\>)Eʰ١DZCHq;]xSŖ endstream endobj 118 0 obj << /Length1 1938 /Length2 12676 /Length3 0 /Length 13868 /Filter /FlateDecode >> stream xڍP. w/BťH[݊@qwZsL=K޵oBK*afg8rq%rr8888PhiN6Qhu@PGD_RPY& tz6TmN>!N~! Bi PQhݡ` Kg44L ' bd/udZ1\N #2Q2@h 46Z%/+ < l 㳋3 gOyy; -P; (q<9  vN.vP?N./`R]79첿ѳoxT7]7kFtAs虙?菞 rA;nvCm óſ3In >3 9Aym_R?S~n4g.bw%J+9osr'K(_?srsϝ kM[yX|@n S9;S J W֭1i-FVEh/ $ƊOߠI_V6e^/Qk#5x+qy^A)'q \&YN]@7gr/ZĴ&`HCG_tʱ`I&_(ZT}SxVr`(d(5ڋZ[A f4+!.aŻj.Jăϒ&#ʰvA@`nrx6=qceXdTYYפ|qC0eq n݄p6|2-"C: (!QJ@?ޗd@t=k:G׊MZuUؤtޟlof}m~?#!~ncUpSn^>ah3}tߵ@l3tQIٲ(z6`j@zl1Km&Ұskᘇ629w5k}K'2%  oIM:B$xO`}02_iiu(:N6a~icyU ={@B_} 1 p_,Nu؟$PNP\|{}Z5`> !#ֱ3}ΓK#ZU:l_WvX|w:zPÉWJӟNϓaoeEyXGtr_oG Upُ>!tUJ3a&46śKzSa< -W!Q;{YGLyec8FbjHEeb )8I)[H< dH G?_)7,yR Y.(y|&#mkmxgNhURe^Țxn,-HZr20$.`L[>DA39쵷<-81ho*eK/%lN&-O_aj!zGZ*Fj?Ԩ|Wۿ_ʧUivY*g/% n?JۊwT) '=I=f@~RvBm<ˍ;tbvS#O[0'o~eԚkJNI`:}U`~o2FA@tG8՚'z_ A `,=եv صs4]+wNT4(1\ҿ, A3wӇ:SٗSJ OC) y[f;OX p+`ƶ:ECOPivCe_!rYIuLwhUA*@^\,U ñY8Yyb4*NUwU@ylW1#W6RR$E$"ܜ]V ouZԪcgiO y_FLKiݥ+׾|p:j~)W`x74zsO?x-#9V20a/ǴI1RfoH;\yo#H/]K`O+*LƟIu8GuFC+bAcJ p$(x#Wn`vӖb b/b23Y_޶*jVH;* 4 DDoZko*!+Wq6}wN+d|teB,c;nO՛31IBQ~z*2SN56LXAYZBZ*]5ef[ņ~svn dlv2a; ZdRzאm'> Zsh t)4߂c}/-;ob:w 3Hice_=-m 4 k }?Rkbn|^ywX_vٿ" w{\>ͯj*҄(5*ٙyPVṙar좀Z45W:q%§0*-o 2gv) )a%Ƈ^scwn'Qt<)/"D6pP"MuԬPިݼ/zol9Ks mge'IÑ?X/g-$Ԑ u(q6^qZl:X'&~`qDU?)O! kty=ޫwݙr~0K{zu$qO{8i%s Ws$ʊgp֦\B}Y6zrS:- ZVFaEYŏ Y/5iȁ^h7vh'XadSkqzj $Ta[y>b m$UdqO4a U037=dZ3xt =LMg2G,oDz}#~9Ӭ&Kt*tVM@hke-2"鲕 3,g@ľ ߀$HڏPd&SMTg"o) ٿ\fҒSP|?bS=x:1[#b}Ίp#]A=Ɣ% cҪ;ᗞx:>Rr) E=8 _j1 j> b>tyk.]OTHmoywHD-T*X EQs.+.;~<|5o(/T.7Ty pMVr`dϷkN^yzDu_Q !vi-}Z|cM6wugJ3=Ba#T>d_&@`6b;e릛9!6>p7ۙ*tptM[18{}갘/u"U>mPp|.]K̓z( ,zo%@2ʠUAKOBN_I"3`Puz.4Ys[ӗ™H&a_{ ۈC-\(f'C"hs@?W*h\hZqdkҨ4ym>w2\Ȕn~Udpc,͋2?OB)n5qxJE2$5<ʷ5geތ5G>F&:r,ͥ,„~[qֻ )ߡJ ($b|2mkPq2^3CoD`wqi2 n(Z%2b |X-h_jů3c\UKrGJXÃyբ5$d:ܫ覷20UA-F66E8|` xYXb{= Z5uC1nt:B֢=4Rªy$ ٥ s"[ أ˶:kE#5Ϸa1y)|^`cAe=%+\ ^JP>^vBI໇d]|vQ)G3 M2_`fp0k _DÊE3֥kQ(R`?A"D{X*Ѡ'tIޅg;R.&?ARl{ɥ!M;\+PBtRg`xx*?Z̔!|D g,.dN 9FDEFG8b5P74,l&ȁMѢ* l8UM & ?i5?kw)>׆#NԹ Rc*7 35]o*r3kR"-࣬%W\ǒ 'Wѕfr2ӕ+vD4)E|(WMs?= Š㡂I$+\,b $S H+O縚]R}eM:GQ{+ > w)!vZM_JZX-pg*j^@y/6=bbIT|kj8p``V%B-:xn{ɛQ?MPo4>%BN7[Aן6T .NI罆:Ż-&VVܹXt]A{n[L#I} ~mRr>7?-}9קO40&) )zph$T pB:ޙo0+|B;ʠ{qrɇ|$8zxmzz Y>acGǰ]'Y@7pܲ5| A|39/Tؓ;/쨑KNð||R𭍅:R%rpxi)׫,{4i| `My֒h_'V4Rh'+J\aDE,yC.jv;xt 8>l(6/R4=7opCyY (_Q<ί8vV{?FGD\PҲ B]6½BҎEL =2D+$/C,h\#H%i]* B]o3\t~ILb6z+ܚusct|L&Wy=d:9}QɈ Lն$t \)6:S_#>"W`˙x8w|9SzŀWaDHwv-8jma_I(쾦/vd$9U_RYVozBH Sx>261r'JtVѭ744R}ej dF !ˉ%eb;8VA[bci @^zgݺ4lӑ L#JB^H6-l& [4+=-osz?&z\QMet']"V/P$:[ AP]$Ҋֺf _YmM"AXUD079mD/~?7F(9%yI!w~yet Zl.ھ)g%g 9[@BѰv}Sc?Wg/8 >6 mFs4\=vIʗ΄ƟZvkkRS 5drq߀N q#-V<%~28Uֽ\52i9t6]=%w㺝-H;d[O6_M`?qf|=jA:0+BH,{/+'DvoN者iۋ#,bǬhxp^Od&gp9"|FW}S}7I V>g?DkUqDO"BBO}j]夃"{_wͥ{x,z[.Gjk RXB^٭6^}k IF%IelZZ,Fz2rLZS4SGe)=|u~_< 'W??m9mq&1D9o0կݷ܉e5*F4OL[CJCz 2vBNBGmm;blLفfĜkpXuD#;Պ<]ʣaDom/>"Z\VS^6Z{Me-v@0=)MTO_Bi-ɼA@Ym'3 POÍZ`]>+̪ J'g)@7U]D{cG:)􏵄:"NBmadK)ڰ4EVX/@lmA=<#Ti\U& XӔ6@NxJՇuMhD<&C]. oaYXKqd*GTQ>(^Ÿr]qLNՑxRa6Y]c7aD?gTc} ݑbѓw,-g:4sW7c A8eKј[D$mٙ!VdbV¶ۡȧ4eb5 U[ƣWg_>+|dӢtѾi2pp*̏E*[^!vAᵢВ bvSiBvuMPF=r#cs#6} Y~cBXT$u?DrQ ZC?cbs] ͡ZK,PZVukje$2S46?Qu1٪GXU/sQ`V0tR oTa(Z ]߇G1Vm>+=%#r Iy͜ȯvq4)4z:FwTti JTL_xD[%>zeeE粜p&c_SYJ_SuA~T"իzR#*g%%xuPtXGDZLT5.M*[OZ&3ƹEKاK_I\$2)x萝oONRoul` 65^3H@?!s>ͺ)Nh6q |݌@M.SQTI~fç; |ƒυ&,U>Uo5=BoaV.suKs2ClaĂt"LFe.W;,Zh0vhޞq)*>ʾz^.!;Pa!CYx{ S_wfCFD(#> ưngQZn"_/f9 ~&Odx׃+c܈ϥQZt,^)Ĥab$>&O/ѐỉ*v`}Y)蓤+eDQ\tI;'gD뛪D}o ȗzdax]8>9wB#1ɚW^kٸ| ldG`%<^\|+x4L| 'q~x{ԯݝA`'x=ot Z߼m}k9+$vWj f(S$ 1=,_OX9öcirz/KCU&q?FSpo]|b{RU4)T4Oy~A5SZݒ)|v>?H\QW{]$@)~4pّԛ:/ikR[?}i?SVwj9g j)3 u8󾗞AţвgI{Md;l(4XԍYOae9ܙ>F;qyu/f+Hj=4qհo{);`[Mq3u٩ixB捽IS  <'Wu?5%%U\w J M*1?#<)M_\b\)ya=eV5nMC;OXXe Cnz[i0 5=,>0"z9oqpݛ+'ǢZ:.{}h>6Xe zSD0GEE&!1]Iq D X.gڵfMs#' q^N`B"\ʧy[y G͡Fw>*?;^c=&H[zj _R͓ƃ&įd\ȅ5'bBRhŵsckL%x}OhJ:AUz 5Tl6>x4]Nz?wzan+>|&XM_]Ǟ^_瞤(s-Լ!tfqm/NwĘ٭`z!nG \&G-s]Ţ$A(ic+oҨk_S􎓔W2G&le|OvME0m;zimj9F效p鑺$HWV=[^կf/qȖ%ё_i:lH~rI-"WRk^~FMXO+,5b㇗Cʄ $Zt$JbDlAXGBjY=k"Sc{rIhcclУ`yx #jJ\p[KhEu. ߃Qڇ Ca{L4VP76%DW )R{b[E,o{d0;GG7\hPkdH`˳}_ )C/O^FU8X!xtpƇriCkRAN?TQ,v!Q4W%گOxm!dlE;7zD(=)_]k;?{GoW$N=0mX%DOS YYEF[kK]v$DR,wg?2:/)%_xhc|ʼވS0W'ZxvbJe*k]Å'w5;0N8J;OP> H`#m1A݂R<w_97x![q#)|l2Z <) 2r: ś].'U-~ و-vu_B M@{;*@|i/ޘ=XUN|5Ggaw (b  L-+#ثwA2)E`Osk 6;)5.]FX>\Ssv<΋io1@ H] ' ՋExKOD ͉:ֳ /VVIpN )4N-&iaIRVK8q=!z4u ְ{x/o{o_KQ^Ff\d5Zu`-V%t U Y9+f7 ,} ҇9jh8KӬpjY!kR{Ln"YIA^dwD.{UYm endstream endobj 120 0 obj << /Length1 1493 /Length2 6458 /Length3 0 /Length 7461 /Filter /FlateDecode >> stream xڍvT]6]%(9twJw 030 !ҥt% !{ﳯk9kdm%8 k(yܼ|xLLPo;!!w6;PX+7(<6 n8 $wF@w `œ 4@H{ݎ`@B*aDxzzrݸ;)6N'iЅA gȟҸP=- NP0v wTZ._d?r@Pog wv0;- RRFz!9 /" ~A@wߩJ:]s#.H7n7ӯy~;fE<COݛ:0߿WP2l]x `PWwΝ 6; +',$ ^`{_{@~_}].ۻ2 P[  6P0`  k}wN~@__w ÜM}ogj:g ENzE4uz4-ݓgx{%+| >|nԏMhOIO0m=ɷdh>VYL?"H ~5㮖Kݓ7)}}xZ)aMlnQI<hRnUX.7/ !ߟC)Y`!Brx㲗KUB%-LGS6y}*2مK=<_%{5ӎy&ꀜCHey>vx"Dx6!@;z%h#@خ칯GŸ?f £T i* c @ %#SCqIϐU k-bRJ 0yJςO2e,)]ޯٖUHdS'{LاDF+*6uj>ʨ7֯,,aS?hB;̦(T 5EJFgr/XnAWKlڃ̴qz~JbXƯNtn 9J+a|Q^V817Oè1Tԃ"\y])Ӷ5~)$֝п#y[llWb^\ȝbUWfO>\D m(ꎊ;ݎO!db/kP{(-O?*%ng9 j9-vKB;ݸ1?ӗ{jE^lTy/_mkhk9DٹfKxҧԟ/~gGf 9yEJxe#zAI~V ݥd o=_Bˮ&Bv.:>߱2sv e,2QU&_# Ť ˳K˹ʠE.YtkQ^R9,'giRaݏ8cjqp&fګ0H;aGIqoPIhcğZ:tl^qv7J}c@gԂV2~Z".)Qx vQ#Gw:hS$8"cĒP`U^ePfʕkoӢjܗCVSއмKN m/j]n;TÊ8m*KRvގ`P4cE7E|^ PɼÕȪQ,8:m:nE+(P[=hRJ ÝphԓLɩԾދhJ(W bxճ@"3،[8$wՂKa;[F6l&8w-GBa6c01ᙂr[ǓA.˧ú$n >bPP§0x8DNWLr:BgsTߩ: _aLѳGXJ*v;Jl݃!c~n-։Jqk1$ny^ dMwLT VR EvzЭپ '*w18wb#sP&e8h լL/1754-BKȏ@O.q}=f@!ʢ"* <3 Tqz-9?[c"Ϧ(5mʑ?^]gŒPԺCF^8/p1#_0!F_rOesSY, $//0(I׍hhM&9 ^Zs.:[bGDMcj-ڣBj &Ez+mzΎ!isky xņ,ZoQ?M;?A E9)0E9'p#l[42MVFA5vi +|-'rm4AI^Ƌ*cKx1dDjKy-T{ y&üF'hws8odH1*/9_uCZ2dpEHhtzA' ,T=J'?jU fgLT(4=KU&7Y~Mg%Ehט$L0EӅMכ:zHFnȧu {/ISIփyPNv ]gF>/[- M8 ]2vǜOs㮎F?\8W%4MYûԟ!haɺ8VZ$gX0NB_\gC==|.܎-${Ϯvv)yPVo{S|#V#6|gnڟKmd"CД|NS7[p N&sN&5(gU@Qk< G6tu?n8tF{v[|zPjw\1dh|n閮)KI; luw'߯`!z;td gzI-TÅ,"99}S ]}-U`'K{WoƂXLSBD=;as7Y?-?C]}MIcV-A!?k9` ?71* $!vC>~T$ԿMڈj@^1hk%wcvys].49G!9"jŢ0 d1hsЦ΀BqS>|*< +:2S#Tl4L$Ol#8rՇLJ|x-<"?S;Ws*جgL2?u69KtjtfU2U&X'[J'[*C֋"w ,~J'RȮGb ~c$s8kW-DDc=T׃Ѹ-x_Ĝm͟j9tdgV+ʺVSTzVs>L@t s8^W,Q.8/WT4\IH؍c Lo3}E9^|ry{82̛̣j^;GҠ(1ØA GTs[:uܔ5ƬvtMVJU{DKb n3 J=(^}kAa`nZߤ?MLγжO93^1${w0!;HhKHӃxhvls"!y`e-0f.dsӔ8똲BAyrz|ph22i,MeZ$~3%mR*G\ Z-'xcIŵ2ZaS;/7@u4+QpݬS{̜.}15 ! h%YUo? `2}-Q]~h9C;"`t|ӳγO>Ą#<+h/^'k`kؼ%nL 6_FvR2`VV6 BN rD1yO(pA:=Ox;2d+z#9 =B.bqUO$t9`ڤcnbSnA+/od!\M0^n#4:jDj^f1^]K[ 0uLj~dǰӓS*>8EF><#CC|m]kRS+Pi*kg^bgeƋ nmz# ͙1KO'n HSxH>"m?}IzO uҲhfg +U UwkFs; &rAuK#c'JDjR$:(hISACk]\VA"mqޡuTX IXnjxȑxF&=<53[=$R_.}*,]Zw5lʦզ,.AkYex 3 N$${ͽdY[b%=Ǹl+(YK:QԢOPio< s9 ͣ w{k'DftlT?%r2['ʹusoc.,E,yOг=s|z >Z%PXgOI1ci,А!.VbU9?MY" 5br"ۼ9! Ml W3\"e#): kf>D+jr?d#%g:N`rx aڱ Vbaes()?TJWuaJ_kk}{8xl0@2 i2i7*P1֣a~J%%d .0 ic Һ̸&pmiK4170]#XC5%Il tS}SSvd:uÆ6;̤]|.yhd{#Y3)b&xi%Sv\ qv=ss^FuNJ?/zD. 5d&qjzhpFFV N9P@D^ .@|3)M ~b^$KdfzK'N^B\>g2_es endstream endobj 122 0 obj << /Length1 1679 /Length2 9632 /Length3 0 /Length 10726 /Filter /FlateDecode >> stream xڍT6{%P R\ [qwwZ@iP)|9soe}fg3; 6%$qrqUU99l\Xtt:`=?v,:=  qCm2@ q(8|BB.!.BP8Xt'O  NAA~?  ـ+Z 0_)Dl`0'!vvwww6 b-plZ ( d ]2@ 46,: Cbsp=:Z\ڊ*u'd? ,w'; 88=+=.@{(tp[$5@xp;lP4bޟ d?wOkqw;ZZ.Չ] R7ac3aa{O'Nfx N' / @+ߎFXK `;bnYw{ 9p~d W%-fђf保RR7+7#?w }+V ~=%& p (݈?Bd;U#9W{? ?~/\0BT}П :W5\Ҭj?w'*W iW.P!k1=#yCZQDZH5V{~/eOd[1m( _VxBJo!]v^<Ğe_2cUډɞ15CB7YU5%TKN;0*KT§vJa!ʞsV\ 3Ɖ>6uDY"N_e&` \`2Hi+\ n Rakۋ!S~ι*1 kn'-'zԚ(i/w *UcHoW (*d]p4 [kMZorKbvn,
==4Sj3a.k>l$Y_bJ<#Z܍-LDޝ̹ĭ!`׍o 6 i}j\9kɎd!u+k(rl|~֮b́/Up7(gPe-u7 NdD9鱗u:FڭBTxGчwwc \*\SUXb^(zs(zD%sƄGAyA;a^7 SC;7^_4|z 4d._ CSjѶ("n;C1׻"? Q<:}Xii͉d4auOwl{3H/x*&xSϖm%ͬ4Kkj1 5RK;o, ڡ3dʽ .%vAxwjzV?ni8c26ڎ=xùe7< G8\Gld'jk_ut6^}MH_(P :?xt!(  !T>T*MrEJD)]NP6vA$1Eor^ ?ؕg 2 !vr&S2$CdI*ܔ&oݶWB͂*A<tZroӞ!pM- H7pAb6FH0f^@_ݚu.i' Zai)P W'<zޙ#A:5z*㼞>^k>s0|[)˝=JYni%MΆ)n{'G ]U= -BVvjNuE-Wԯ0,m>g}Yy;V=1JS7 <٧ڰ'_W%"!}x*2_$S5S+P<ȰaH q̩Θ/D~+><e ũa +r}.+R*HbK3Y㣜|PDxb"c{V|$ճ6K6gߴNt`j0&e ++#^/K 8Hz͞oeXv Ӭw:-_$?k&/|=}ﲏ0@[rrrlV9›tL7|F?N6WbEv74hm+w?BK|ɬI@nA1t۠567LAzhE*;m ]IE.XE޹wEup"⹷)̇_))f4?8pieK/sÖ6tvҩB;[mv~*c[埞 ˋeJoc O^I@M_y?ņb_5b^zd K|/?o@3VN&+2GՔL^8NڡJP1b],ĘTM'/~)JqVl+@E8lq1lC1M ;# Uk]d{ˈ$@J%Yb暄`$u HB%lzEs+*;Fi1Ż^u)V`)"}'Ϙ ]8GވlDUkɊK]P6X9h{NcdnR`__ ^P3oLVghi<)9kM.+W=NSYa䒍9@~Z-ɠ.7asZک4*M٣[Wd>BxJ°$D&/[1Tx\X2Vܾւ`A7 |} \$41~}{mg,>Ck?~<~h&_B7h-yKZ9Nj[x) I)2dZZ87>`Qz{o ]88GX!*vtO_}Kr!k)QAs_{$LM|76.ATr}lŖ~)Kwz8#Ue xN[jF P.g,ʍ7:-M⭠uZx(Ȋt}*s-V|RgY5gz٢`E0A^5+4اd^GÎخ[j0_ix25#dqئ0%]JFTTRŃZ2DdIlP:[Qy.zVwG~kgԢ;  {2"uսCM7˳\P"[zPj,&Zg\BߛHKFnW.Č%e;W0p/v38(ŋƝ8.aD<%zoH%(.{LN_|bD˅Ik81݉@csjY R"^Wš~"[paoWd.|:"-8xE۶e=edQYNBCYcIJٟ?*D) Ixͨq;6gSUFt7{cɢXg-(@SyANX1{ȝgeI|3vB#^ur:{34t+^FCZG٨qdS\/-DUgq97>J،g F(hD, n2"IGmq?vģ"4n+^zF" RT7u5#GEB=!zF1NnAZ& g~!,$E~[/<~m'Zk )@UOIω^Ղ|nS̫~HƁ p$|T}O.'Q[ڇ9Gfc<=srոFG#UO\QӨ2]Զ1lCă6dPۢb) ߟy$v;3>&3+V|>~h+R Dω@v4$v917+M3N7KbݼokM K;}' gOqآgn(w߈| Z,R'Ϫ2~9M/3%[G >vsj\MGAg i~\͌)L9@Q'˷Ni&p:dJf*ŭV\v%{Vjj 9piI2kk^ޠ:rd<ٷC_Uia_dZ6Aw`;9jƫa:fF)\_b\2D5l{;ǘUV2ڝ+;]j1dISy%yO9䥍Ә]"VX x oMQ"kFt ٯdḾ;Kx^:@"*H8%ķC5s#_VQ6,a3}60Q! ܲgaeLbO?QP'<ڗ0e"BЉ$k4*7, n¦9=[y+5ڙ(Px)"U4C9g$@ls҉Ҥ(InjHѺ}$Y.c,ŹS1"C3Liw8?hNF>&V7̌׆y{ͱFe0gA$(u>"+=.шo5JD}@t$>ȃ0^/2@܏X\X2o$zN3(oz~#x[45;;뾥?{eB 静ِ@ c$ j路Ie$(Ģc SBByS/R~l@Z'./FSYu5;0ڋErk7]ug]9+ٮ~Wu;)^/}$9~“<0G$$QJQ&& ۸8/0S \(JMd,ef\ͦG%ZyZ-F\{񏋮]:o~~S[nh+bdkt*7kR' 5ۃ AP?:+?&Z-P/zXA:$r{jvaߛ_Ƥ*1YdQ|$cw2MS1_> mJ7֦oK!GS9,^sPZkmZ\߷ٳ KbDD:b94YX6Z׃Q-FFrq=_f~ؾg¢vORPYLޑ'΋$f rlbTܮQF'#nqvإl&sg|{Dl.zU6Ձ::>[+ƾ|}4Xh\ ? | S0^@P2-{Y}ho4;>|+yHqOtǦS$r/ \liLڗgWW7:^(0OpJXCf ju#(a7jBsηn&\ړ'z{@j#,8w/Vhx^[ѹ3{\!J)br*Z!zhRkZ2b=+!ĵ:y-JNTsP/;W.20J 7\1-+'*~WءhlW@N5!uy%XĐsRH }i'X+^(]G',]U1ң26.$ʙ#5%bK7ҦbU\3jOQdQ#Eއƽ~jgZDg@n:V/ۺufq i虝HBe<+jzNK+a*1Qro~܌Y0:2OEhn>i yOÿ{HvcQj]F/y'Fi4qAN\gyQw^ψ/P3Sz']diHx1|;xN훊Հ&{';N(1,-4p~XJBd%d"lOnt4Owȿ]1{cmyGRc^n=p[/MؗӚW8u3uZ {].B?}B!4d%!:/?/;@HJoġMؙgݵ^VF5{k zk|JyX'!)k ʝxOm =/~z: 3@9^cA^lcX5S_ޢO}驗}rpFz-tV)'T*9}V54Ө 䊜7DMR a˷Zf3i"͂C^(ȗa*R_au_\&A33UX) HS4QAwY~Auy_!*VATwTLV_ \5_DSD>Zb:pLZ}f HUո,|{Rg HfX:$dS(!F^m֌Jt[/eJlfPkJoe X$>=)ab iBU͈oYkAe!x-_>a\$1.A^CFP6*ڽ>JtʞX7K'bj}RMc`Tvd¯Jo<6ZRcӃ>شRt&!nތ D 4ͪ5ϲ|Urq"Q0lzt6,}6UTDL:8Byr6S8- endstream endobj 124 0 obj << /Length1 1415 /Length2 6638 /Length3 0 /Length 7611 /Filter /FlateDecode >> stream xڍtT.)"]25tIt 0  1C  Hw7R)"HHI41Ϲw{׬ͷ~~~|@z-].+%TGryr^^~n^^>< Ptu .0\\`$'Fp8@@b>^^.by; PAx@9 :_V$**; uAp:i uD;t%X%lH'1n+7FCtPw #dx@-_a@( 2VPp@ Vr'!aP7 í~T> s[;e`Ԁsܮ0_#*e GO݋f_5>U A@A^a~>*r&qB8QC@`P+ @A|w?-<` P(7Z `‹g(zY!^GYQ_[ր"<>\  /Q/~YE ?pk[5c`+6@X CrS^A^URtspf?`G_nH(j#ZuH0J2p@ܼ0WE'J /9P-+׷_1 +B`Wؐˆ}(!_]\^xգ,A%P+ofx$*`pf cmǩ7T[ɂj_oCP4"lWrV)C>"rf5kQ0_IHW-V)ٵk:Tш ,O(X2Wc_|6Hxà*vQK@"Q7mGT{S(HAF^`1*}C'IJJl&lqi=;Xa/7r;veki->:\T9 [ nR /MCw @$v >_ }@Pm/z.>+Q]6Ky6;Ooȥj)"d?%!!C\2͹"w_4jag4s8Ω:zDpzLA|]Oxw-Y]⾉3VVTU$ur07SdmW\{Eu,e1ޝT! :s~U2M>&|T:|WSHNK'WS7.rgDvECRL4^K4l໎}rr(*_e+H6J[QoUZlnG} VܠAQ +6KCo׫Ǣ}q?qI1n6Fiήx0|.i"BY,"a/oM$WFc \Vvy0-8gheB:2 2 %64߽\h>vA.lR&Mj0 p;B pDb<2̧Zr>- 2ea#gٵG1{pI‰cRee2,:wf2)u)]suCߟdLDe[aSe+Tv!/i;.7 Ue1n"tL1*Eq+Wz`$qF0SURˬ9_dCtJIdLALDcf9SFSu?ثD]Ȅ(B rԯy%vh5uX_> -f[Y~imCK[A% /}9WIeMn Yz+uҮVU,Zs\;di!ExMAj@ k G$gʌ8́l'C2"cNI>Y"wǜg@c9P}Qk8Rx%a6GXF0}}rHf8Y &~5X l1ϓwKkT5w"gY N+ŗ+{v)3]Ǎ d٫y߈sd?;0q\R#Vlby "{Jx t~=TBhLtHT=_&^ JARj3a 'lC)pjHI ˣ=i]Œl];\< qa9Cw >XqCHƬ8Uڐd#EkA0b-gdz²pR zũ仑Ďާ-S.\(mi$?b $hO˘_N~k(y?H҆6'uw0ۄ=[j >bZ,m$0od;bp\cM'6jo6/!O呢U"(&vhSq75*['@2'faQ"m:$Xugs@+]JoϪbK9+BxcCE\f=]cbٌi%s.L ;;|N=RؘI^N,5mٽ]hnY}Ijkg43*D&>=xr]FѼ5M3%Rn:Gr9:PYHq8@e :xL%3W5ݨ=n"^)aڽ(|6Yᴜgp"~1z8m3tguN4,5~7X[Gk[ޓ:v2gn`F@s>8AAP.ϯ_jifoKǗGս^") $u`4ST S>&\*τaO{OڑV *<uZv넕?s}Nǜ$+-=CS?fArP}֦%4ٹ8gR$ɫ uw&=mTd!txBf&р|ຣ~R䖪?H,.).ǁݘri$O\ѻonaٶ QrX{b;<Ľr_\wCRN6m53_±)H[U)NJOň Ua=kxXT+cV-AUn:MEaÜ0|zVMގ\elW\S djzI+ke:)~h"TT9~5Iũ˔eXϞc5ME#2iz&.5E$gaė 5&/"(6lOg^k[׋3Ȳwȴĸ<`IJ釃Ai9h gd e_=[h5}̕zekVM'f3,+ۮ3ÜՌ~g}tR>9(bu _/RnΙ3EySmk„Gȸ+Mwq}}ca MfОdj>ChSDAW;8{<A|t Y;4"_ b6y}]W""fw~[SnNx>z*rtӇXea*l}[q8tw1cQ ؛㏇; K< 3^ÿjS}cQr}c!l$CLk&כS-*N&c?s,skGY{!w-]xCsH8bQO-l E}xz+Nv &sfFr֞~/-pқcm$No Z]Ux|z2l~ImY.S C~e7x&/ޙ&{ncЗ578 %uV'ƾi_Oj ĹyTyS[z!7hL숆H"w׬zcCF7ƦH5Mbƀ^}0E=D,!2HMy~;A:]t#B秏yy vB[sťk#SI B1~V̰S* ;P${}?p a}y|Uw(|wpݍB}\(s*:DsQ*j{=ē>t=vhE%|}ޞ nx DF)%͆Yl,*%}0DRpt("w3KB'Ms`V>[aĊ޲‰dPmƓßZNe\JсGm7$"AiGOʇfAxa닏6˃tco5A/r~K/xSC\Wc^acϯ']?%N) ~@tHHi-hb%9UCsKlzNJ{q 1h-^H- 9ZՓ,99c:3)Kzh#BH_}ng'>l1 }v|0mz(`%04SfGû_/jq84==[fD2Wq2>lf}uP-"빴sW 7O'3H;ި2OSܨ\C9$*(=徶6w`.FNm2%ChG$8dvF'+Nw z;&uc4SPUno ij)3O )Vg{ ;~ u]b;!{d$u^;~Sv?De|l h+LӋ\NCP+Tgvi".⼕Jڱ jRE6Y>x^[iBؠeW=7`)XDM9lKw]BZt:tɆXx!Y%b_r$5FSA|\lUd,V$yUtRdO> Ӂ(jrK{3|1:W%7̗@m.7 *#Uq[>E;*flgZ}>ՠ?ڳojΐ"zV^C@H{Mnat\_4nAƄ~ _xTVNo='gSaoH˴ͯ^arDؘ1*~1|0dVX&4atMbHql>fr߬4\}.m0쟵.JwɎYcܩ-&]u:}b̄DMn=U 1.0Sb(g|[уiӞclFJ˅X*Id߻[4 '~XgX>gXr&#/@j@5(nbQn8a QoHf|rR=H94. Hw}F8l+?ɷ')\ &T%̖ȥn Oi&UU}_xG>yf Q24._)6hC C Fv *)QעNjG_|N>sW){ٖi=2+Kj}f^Z5#݆SCci)Ԥ.Wdse۽mHņ=ڰe{{¦yky GW r?ճj?EJ<{@&z$Šb휦 U.҅0+Q|hiP8ӸZD_VA~jV4F}Qݲi1Nl“[qb~-Fb'>0[%8:܀A36OJl@h? ?.mRb1YBU~yRײ36}_2ՠV'_>S_ :\?=O`RC"&e՚73 !Oj뱾-=ޤ䜜2I|9+W]t(;!ϼPYRLDhHh2 bZԧdӘqz "}wJKY B4[&R^)%e6۽ endstream endobj 126 0 obj << /Length1 2596 /Length2 22564 /Length3 0 /Length 24035 /Filter /FlateDecode >> stream xڌp.;۶mNc6iضwϜ3Iu<+Jf& L<Qyf&+ 9p.<:ebƮ@;y{-`abCg@ `oG.lmi L?TfnnN̝MƮVvƶUSksW Ag`ll)@Mv;~ P0328r?rU WcgsP`kmjnp73wTc@wo o߁llj`hlemo 5(J1z~ۺ8ݍmMbn V wy.֎. .ֶKdeq{3Q;;s{WĬMmbg<} ,,~aȨnof.-o 0w{Z1h/%o1?GGs?k s8cwsߊFp3kSW=ܟ@?8|gkO.pLI^f^5_FyQu-Q*NDCgag0^2NdloJ[8a l0vP8K?Kd rQoK IKM/GmlgmoҺ@xT77vZiWc![.֞fJ֮Vl?rWfkmob逧epTfO`l2|hf%02;]p'`-qE N`bs[W?jn'QZKUvv\9YR+Qb0A@d+*A@rA\@J0̮A0̮ Dr1\L؁:S[G[w~_N?-mϾ/*Smp ?~  ŧW}u%CA_@Xܮ^ ,K/X3&ٳ$P04H3wӨ?߉diNbY}t6XgW+X\qpt oQǦ(|DRd}JW~,x"ҥ#3dXD7չ-v2}P@I+kB7t&QĨi3FschNpi!~ca;`Q8iux}XjpvWA|Kfq+ݨeLTrqnMsitd%/\/ơ|>.Ept @|/.:7fPm=P߃9MR/.pXō¨3{")y73^lTa2y%m/\IKWG}y.d8ӨRoK`/T&9?h 3;غ18txT ɏT vQL+ߞ5!=Uq'kGT.y+#,^= ]_+é Œm d֡@G Nj1ܤq+P@7k|xtjǶJ+[3=&6x~;0z*&"yMC~ .s)t+ĉ2kM}.9f;[(E-_h^6(ٺ` Ǘ_xQ8;5ssX@ts2Pnc,B>DÀlR}OTASb'CDx TMTfDƵχ*4HcoxvNj/:lļxK2ߚ eTx)#FlBf2_wCDža@La#kΔcLxñEiji%22çfd nA\ٱy r&52c8tn,knIy34m4%S]1MGo]XVQmyR;Hk'3Sm,XR)TItD,gzY1fH_锘)G;q~0kjcsmEߡoPm*(m5v/bw&f! lȋS@4[Ξ]ʃx&G2ij]J~gG!\tҺbDȮ_Is6 nńi1 (??y=/۶\I%PCZUDq\4Gp>ۖguA ^*&$ $Ge! _ jPD-@Amn:Ue ?kG#"Π5FH81Ds#!i).]{(XT ^js xM|} աek󠵯*͘mJ rS%؆Z(X7y5jJyp#tIoKVOn !1F>0s BXRJS8?t* iwcQkiMx}V`Y144x#? V+2(lXӵsqUZoHl(M|}4fSfƪTpo9i7+$|<-p1˴]U_3/㍣rQ U\P -/M&-gF,`io./p' {4^',=˶bA{wrqDsir7)Hh k $Wk[Xx6΋J7ϳekՕYح<Q'.[gZSkYљ9.طUtbB ^ZNG"OT-I8Uvd T\ÕɆ͋@*Ba&3f.7k7ڳEk )r8&U!ӴG(=V] (*nqX`1O̲qz>hˀKֹJ^[ sYW:4me#.&B>^s0ĢD>X0 :'{LX&.JifdSzw53r|]Hh-\O )^DDGsnXgao@ pfRñ-=`8w%`T/CsҫmD+aR݉$>BX]:+_7֍d({Rϻ,I8F*rþx)G2] 2~jʮ]()&z~hIuS扡LU@zkBa0Uqx /T d0ʻv 천Q} kQR)U:-5ln~]}7P)/'G 303ڻӹ85'ϙ"cxPVcarVU߼JڒeeSX ѡBISTpY}MbR6. ]CSvC|< Ty;xcc4A-f߂WHˑ)EBT_ NGk{.a3+ӅLm4A婮⡜A.Ok,ڂTRJlֿN+|.I;p4>0Z:VntPB|z ԩ˟uU6 :]hk5U^bh2Ub!F$@F?$OewpNhyB7!ƨHyVs#+?v`L&4k=JB׏* Ǚv ۽bmc^/D؜ɘڷs߫ k$ %3K\cf6bǶ.6"똫# h,-J@ ~HW@y AH;; ZZFv ]:?|H v{dFR HvEA8/OCj5./nɭ;Fu[6 '_MXlr8Q1Xw 3i0 B*]ktia7Y6XڎJEY]W xFnB`'Ds+? 8s/QKtk&~uz@!{Y_`ٌ =F x"k6BBڇĥ1|Pc+S}e5Zyȑ^nb\H`T_JkRp5R.>@%& cUydT"vs-$ǁ6v:lԵN\[DT:_֓jsy$M;ؐ;~o[TxAUAϤ÷4k⤤INER 9`Uœ$>ba*|,7.%n, ˲>Ӣ-h|MAb8$#YVнMXynH@kQ@b/ u 6E!*6J$2v\;׳}Lw'}Xfrst.oEeN}wV1H:!beB B6|VF;b2ZH~S_E~ [`&}Vㅌ"n&HTk qzo0 N ϛ{(6<:F:dIGzM:SncrL*(0~E଱ԋ_.@uӠhЉ?)L@QJf]W#}%53~3I-s* qճTWIf9f"!d̰] @r0>BGYcR^>VҼw\ۛ&QħeAS;:SUv9$}sY-Ww L4`ѐb<*1bC (SyͤE#mzWHcQYl4A8ŪJ咔+OX',LJ)q`jhFO%Cѿd!Sn2$>; ($]1+q !~>"rvNWPտW2> lP+9*+~Wt(zT(g0Y+D?z l[/ _"K26J۬كی@4zu سueQxdZscwVED/\b[ I"KisKGA2dSUkIOVfz7(Fvɲ,QUq`UI°o)]z|A'֢%f|C_qb/ }F;Ɯ6X!3W:B_NyGLG>܊SyOch!tB|K.w.fY^ɪaDueu@&%wNAY6@#x#bŶCs6HsO7ٹ+L2qdD1uWaZO% G3ͱ%uő?nWFt"w;Sabg4?"G8meЈ,l!Gw*mBYzc2%^ZN=[1jfƧ; X>KF^;Ut')1Q[z鲟$^*I a"e4Kmb+G|186Hj4EW+(|jd(`֬rT—PBWs1'܀FĖGkbk=VOXǤ[{YU;rjL?cNF(-s/h^)v7иO38Pi@#Kf[Ϸ8 D& g\@&q";C@ R5{J%+˷;|ZaQ]dϟS1,k= 14i얙r_FzpT5u58sd> LJ)xeN1=1&cZjJG]5vE.DfUw2u ]GU і_uߕQVv/,LC$GN1 O-MEqHXƽ&\,^!0L%(>2K6 *ā~6խuXAYϭwl_NXǠRx ckdoIXj@g]CZ9#A\QK 9nDQ!n=u0! Q%=R Ũ^|.x F%bLGFG4"{ zxBĜ;~ B#\'η{40#Xet# SK" 191"p6"IJޫAcHR5͓taw 'at=}S=<=FUSF!*eF{]r-, r|䌤#(EYAq*6%@4l.Uql]$Cc>仦Ԙ{tú.S Ξ3}6 5o,mFڊ}om#uz )7aT?/3FsP\@)_eKk0)A ,UO#>Q{ ԄĶv#?$BD}8E]5ewðv)$9}SjOSKěfDZj[oAjWJ+O[v *gO$osXOר ug6ƹqQ!$vfi  $ӝPSY*^NKĒashX$DDn Q.E.C8.xܝ_2=M=d(Oq휕bys󳮙~ [c(#Rl6LY\MD"oi@3˅>m/h/-"ϕ{?qR1vQ``M""d h$leBAL xfv}IFiNB eP` !a""ѧ!Wہ 踔X>@w}37a78RNCN&;Y-!/5k?1kMP~~#)naJTSGrF_%hd'ya`4xjϭ%.lȔ|25$St!o='/޷ןχrHq0e{DP0t'ȨiGb?/#zs޹ƲnWcV;^ MW&#LlVXb^ -&f ~H(lqŔ-k9(hq\."pU8b&L1*ug!8_0A;ϯB-|tH6\p`A&"cQ4Mj(?"tkܯ:EvDi!MFHࣼ @ޥ)3썭(D MT{Ny3O@><;_?CuI1h{&I4x/h{\6݃Osu0 {!4Kw8R_;`. y}w /G"5M|@(CH~״]P(oʩhDR-}ll&=T*w8><| Ts\{%\طw[D%3 ;J8 AIE5ǖ)yL[e(~̼OA-c5!9BnV3J/T UЈW4RaϚ9qNNE6/<J{Qn`A'. 2v|j54 gd1I´׺d_?KHf[*dO'"Z k#ƻjܯGwj1$598IE5ʿgvG/^S`|G,&pfLLߊ߉qaE?Aф:)<vgEv(>^_C*.ch }T ڱ *j2q7 X$WKJWof_gb@3Dl˜&xeė<շ QynSߣIB-o-X@H2GHRNE hgBͦ{=Pqߐo[&e,oN}ĨUYMVܸI'%{,O"^M2DvT1F_A(1SK:''8 wK1Rz^c(/B&0f5%^7^mZ]lB4H>Є-Y*_uy/sƽ2M!}pNۭ8Ո&b9rmI[}62jDCXČƊ9Z)xRt)gmnEy,-1=v̉wxƂQ rUn'tFej3lsDSe(b:{7 ` Oz[L\,Ȃ1pw2F|AO+&kV~ l%sz˰>v$6 uTH/ gP4 k HEbE6=3,X&:r9O@&W"3[7N>~&#yDcɱ~Di*h𸋟;5'G@wMOrtz0Gik팗 T޵e g7]z|*^D!|彸r[:I69E8y-s^712 $q&r'x[XK#v 4ђ<'>,M` 6&k_┳:)%R"*~]ِ}06<ڊyW0n2OtjΧ/>efcs%(&Se6:JrU5W\gʹ4-;T.駻<`Q!0/ ?EqakvP΋SSon2PO3wdw^![0U[(f R؊uh sg.*Mp䒷*QD2j|(y>s ;gD%([;[#d$G022N}Xl5:'PUS^@:rJt簎wldHΐLAʍhUPӟ:|lcm8TTOӋ~0wj@jcj=Xm[VȔe>4]o)2UM á"@ 6*Ͷr/+b7¥S(P$Hs]3"n&ɇQg~[d. Υ@PO֏mP:(&jjJj^ ;Oe+>,GB2kv{Ġ*Fw]v WncCgΈH!N&/E0ML3gڗ(N'E@=9NCOD(SHr}xHFp1 Tk&V*y?"-8W"ѝN2A\/G-a-B *Ԍ̼99 78%X?U0NۺLReFg2%ǚ YMvGDO;2>[I^D}ĦK(X';"6BEk]Ox3dܠt*GpqFNZ7e\x{M83@0Mn \Qrȁpx[TT0Y~cukWo|_P\AH \jĻ|"rsZtJxE$&'4i,pK6צG,x(jKY  $: [}4`f'*,"vf PZ6hrZEwyZ.:pU>jOx_?!ANZV7H gӈs7rTU3#;M'wLRR}z$qEٮƱ:#E˴SvI^=Rݯ@zdOᨼ)u&8_nEASuˏf-qPU~˅+hdT Pn"a0t"P1n1#chH "l``b(Z ,L=&`e7CK}VX[_// !lϒHè#F ~yDh|0_&`}L/A`(=J{9jj^VEɥj=qB$ʛ[P6?9B%N$yxT| Qzu3m!wSeLAy6ߓ>vtH2Y'?rc׊gXcB <;)u%|QP3֩bZP7ȊeCׂ8Jp_0g6w0qǖ]57QJ97:nؙJOr/_IhKdD0vؾ Qm&G%}BC(eV@HBVm9z˲Ip4&eˠ{aǑۍeʻf*i]w*ym6~. e*6e6^&TTnM!7L. `]4ԍuiݦ1YEg9$wRdDEkm(>߻Os}*{i|4%w=g}2z/m0HG*V-_!le2U`s'1=Z_oCRldO۝Ƕ; a[>Z١]{*am>rQ>qޞ/. ޱ!C,:(髙-)2΃IJMdlTNO!JXl15D'0F pb`F*//fH,CG?i5\Ћ.V@Z?@)<}qZώ(uZH\3Ƚpn{Y+y"vcDF8[p/!00UAhJnl׉aJO=o+WuGN}y#Q`nưVﭛKrb9ZfᎣԁ vevW" VyWy@θuҫ-BcWt[qNb9tWKȭMj*λV]Z u4OYúY)N} 叽|`e4)H(KV%GjqH?"ͭ>^'řj '% )i4X麥;eLm?-o/F^fh=g@J]^ wڐ(Բ~ M2@s|=D͟y_s^ Jf=[u06)w-:mڛn9yo3\1ëKV&:C72;:˄o+l)`p–7kO.|u#8Rz\\Kj3O~V-LZRCKʙ5*< s@3=uWdf |=}O3 m'7q9)>%0c12G_Ubvg:(z"04 Dx9f``4[FXGcı;C&)"0;O͚fcCK}Aբn!{pҐմ ҳϷ_|aAbcn[>#?kz gr=^=C%ota$ㅇ\AMZ]\rRßw)atxs|ns 0*I/\d߸~HJւRd6ZXxZ#=g; *8IB/t\"f9e))}H#wyWJ.Hn>A'"̦&]i@o0ԯ#%oTne`¾dN `~ahtm)zUd@dH =Ͱ*G= ɑyM?)l[E -aZe5շwQYOfE| ea[N/zFuve%cmHG%Kb?'`57+ _Al+WO-%;â2s騆 vFG  I;8j(Œ7M& z2vgw$4` e\B$w?qv} tiVlaƚ|Qp?*S:+[GK4|`Ԡ"nF2uaw@ImkYw'vGVL7 1B}.m/["񲧝 @x#%b j'ρС黇bH"X%39ƶU+#g{@-phQo$7/QY ?)@| NA*Sjn6'̿O}FfwG< 8gبVQ9>)hmc OG,㳂Z&+0l>Y,Gܞ}'!KNh OtCEB̧- o3Z{EnB-D3n=Q`aFM10 9r7;%Ms%狱L #=`SI[pml!T^단_xXjr\ÿ!y`d]^3k4H+B V.S Q_^HM54N]QZ>} !h5c\3gL\w4 禖GXC^8ݻr@ޮM.D{fNFV'Ou]*ߙuw4k]f  QAU&&`O-E*_{[U[f[jv'H.4EիҸ⡀`ڮR' g.#u@kc♂`E- ԊWc*5WDiօZߘV[ juͭY+;ϚW<pۧ+D F=I_FPrYc%FKѩuE/bT@tbcWNG =L`\WdxX_0>~f|^){8^,e^b ?Vʦw'~]Et^/s:p[< $ a.HZ*{U*,$',1UZ`WӽH)n@Z.զC (&/z79O_VY=~kI7 ͛.{MWU0̄h:}[SD*2z3 vNb4ޤ Wi-s/ ,dځmsiUP?Sb|8" 86\58M^^_iRpZLJ{A>V>qmvDAGS !8*rU;(Gq9o &|35}hnڝGlU)+aYAad1ɛވx5w:Zb[6V竎[2d9ETu4p۝T:y/isD[aW4hEvԎ7^2We WUH(&AW/MTux]bXL騢FdBw+']c@_+0ʃ=kE'*{wdKvO?D[Qa\kRJͱp h")!4ݫ¨rpSx 9ȱϹOI1UD@*QټDRq#89螮܈ qw| T‘nA}Kzc3H#,g#~?IJ0sJ. 1##Q0}MaQtH5G˰B zrMQs }F?]Tک:j+ZRWquz0$UۥAƘXv)=uQ[00vx65Q,ufHN1{cztfL[ϵKkEd[h9Ԑ_^ey2|a\ hq;E){Eݱ>9MLcAj6rw_D=fx(=A?c&)b̆rNI8i{O9* R>IUNRlΘ`spv*Nz>gԬLD0%w :0;"S0'RFGG3^-gcSYܰdG# 8ťī/Tǭ!nǡb*;t|QyIi)Xشm#2(Zs#O66!*eJgĠ금+`Ve+7 šf]삠FBTuM$m|[Ԁp#]y.m1qH-N3%xmSvq?fHF+9u|kH^KA1A3×`̓ f]㡿K.Ke9NdVއS<-;5:@>ozlm*if2DOD*dpZ#~,z$B 82Z,S< Wmm3g~-2r2 \^}2{$ة+|z=uUw5wdaQM3 #61VnA6ko/y;iwHH0ym ? sSNfDׁ֠ 4jӣRמ Ap!pl>̓yoFP{x*' D%;dpnvL槐A,|¾LT@=E͂9~i`Ӏ ]9q%&@蝥< F3U+P߆&gP^J K)ܲ!JsK[%gE09 S NRtqkU6kOC&ayΈ}<. fRh:'ĮK.kwR͏]֋ P`~Ɏ$~$AN@7jo0NWLQ6Bcw `MrÜaY"=tBap8Z–V^g tW; &C ;͌&Kњ.v9\(0@ r9MR& ksB&J*tK|qTݽs"iYhyI^e/]htdpx0nEa(; e䧔7s/]l=:Y]|?i\:*m$u*/evB6i'G3X HFn U.ԿsGpl퓽Pr{MDӓ 5:,,hlyUd~᤾-8x*ifDcM!lN! p%VX;j)-b %3u`?4f+oݻY9|4zP\ho9v --z:hǷT[}t] n:*7A2V^paG3!YSlG G]ib u%\˚N^T&[=nm㨕.8f&L+!bb?'ȃ6+y(o ߊ0(,B4Oȸ04nIx_rLffدNΎ7M'Td&~Cu%le$q&P]Pœ+Hן4@ᯑ rS,s^6vf䬳.b"r~օ>=ml@DŸ@”xfT .:&;{9s{p d6_/YHIa5(;LدsGxrX9X7=^UHx N+D1]s7n2 G'qGVѕVecnrRyV]X6mBGH"I2{.{V?; y5|+/`bGŹ}5Q7gϻn/dORñR;_["hVHiދ@h$ԁȹ̟:#~\U dE %sm;Jbj;9Tn&y 9$%UK;ð#%ʡ-ߓϪ) G u`PBy.7%N\[JKDf~1GbVS~Cr{[;o_yÍ J%>L;I1]I_%oW~èeD>@7̰T'%|<<:?Edܴ8DLuqCB9qP{Ok)٩>rd)cuN/܈D6am +v"FԢ޾$rlɵ" @^ kOxQvviYHB*E#bʫ<.`/yN>RVl-f v`ާ\z6|_qՉ EwRtbH>/СB ԫ /vaƱ(/|M):m4.8 /?]}õ@M`?9Pl@ԗXaqh0oD7"ճ* gsE*>_4 nwp<@ty(+]FQpl,%tz{*2Է 9.aOG,sT.X[ɋ˟1.oŻnVD1uH%liFv73m7PQN%6<)".#'c.Eh+3VĉYYBKy4rFhE;ʡI{b#תr@]lf)oY;z!_cø&տ"hIX#P7.]ڜ0=D"E.栭|NkX=fVsOR^jNК27#T8zg38,pP -: ([FEggs7jͦ.~no%Oep| AG)s$L+$g3MoT 5.!7{_ 2.)["Ep 7l_4|þ MQacHYRzt37,0)o-)he%A…wD]ĜxIUTqz4flm; am%&  迒LM)t6$YQxWh+Z놀C{P1I(xrL#\#vyX*0Z>#*nA:=iRv1C\ "\ګ?ZC)kw,Бma^áN, Tq9# endstream endobj 128 0 obj << /Length1 1659 /Length2 9214 /Length3 0 /Length 10297 /Filter /FlateDecode >> stream xڍT.SChq;S$ K"ŋ;ys9Zﭬof 6%5XuaȪy\\\\< :{_fL=3h<eW{7/[@[P %G@qaP3&, qy;?7@XH , _Up,S_l;:Q`?7xV!-HC 9ϙU[B\Ur=΁4k8+@< ?]C`M3Vssq8YvQP#0/99<1~EKpr@a.!|V0'/*m 8eFNSo$ =rQ!?/ b/X_PiOza~7'Z=J f/N7=-\Nw?<{sc9^`? W' DŽ<> [`M,Dm;)7O2l꧳{9uࢧf.;]H|tq]\j{}#zX[V/[f;htC?5Ԗϝ^{.e|GW!\B+>EMZۊ h)9ȞS?a%8:$}UN`=-6\ችJǹܐ`x[f'Utƻdi8IȪC2צ:iĔaTH)*zeC)]"_Ѣ҉/4! @,͞tfz0 qJ-?17hz6txDM¸;׬v}ZR:Vw]g'::Ȃ tm8[:"045ԵaQF4P^DyIk̤~s%v*oBA:_(%z\u R+تAتrx=sh~ӑ&E\b2xɄ񪇓D"*m>?0{#a/s9v Jtryk3 耐c%4yҊ^D"nvMW7({tje7'p^M(q5ԡC *Ja@7?NXxpB,*{IUiYλ(CܙNM܊sfs(5jC;< 'xMfюJR;e ]Nss M}C ֮u?H^.^=$%sЬd`Yc6[ME^>EYSUWӼ, 2C~VM\(HŇg7Œv_FD(,:$VdFFkUt5mon*`u)ȳPmFK9Zܹ0I&?.$-(2G-HO+_ڱ]]{b/ 0'_VW>.ƙ {P۱vYov?#4.$z֕sXrWaWeRFߡzƐÓZy'\meL+YB).JEtִ@dT=+tocy 5v8BtnGX$#>YO{M$hf[~,Zeޝz3Hxe'+q&\bfpSjMrX^< ኛY}`+QLe58csL99=،h>13oX#ט9M&-NV=4('Dq[ʀ.%ȇ%@ǜH!0Bk;aXgHq1 WŗI 4mk*̋ge|w uZ]#ǙeIk nڛ 7; K/0޵߿EotWtJ ^$fjGM|əT—IzmzSxbPt02aU$vK=fDXJOOҁIBsԮnɮkH+)5hdW}sI <-!3wE^kj{,E0W_ٔk ~ŋay=]!C)l8t6Rv+Ä6(…V_zҙ}pXGFဉ"Ye#f'J Qĕ RaxOVJt&%KiEɪ[ G~/]ȭ%]' 19/<8-kCx+T_Βn"5}ݍ`hK* ?8azSj-L+%䫣 Y{d=@5trm3)7~4X,3Yh/&0$o4rs:i4H&CRr+#Jb?shA+"WKBiѡℰZDM%֌&eix;- Y51qܐwn4cA"feS?efnU1K/*Q^yBּ[WVl_+i~pnL,lZIPIyxl*0Ҹz_WlMKzQ\./Y `?mCd?-%DHuk 8c)E# INA-LOtp` a *({R.]m|I[ui!^3tLY:{Zb'H:1amN茔]zFtGS`0KI[gL1P1Vȭ*SW9J\yNJE< BjL"h* Trf]F%9eIH9Z)W o s@ yX:X[A}*#w6xx_mpצW:N`E.utD*kQDvUKNa8!h6 `Іy^w1U;VUYBEO i /bQWwœ!ϐ"/kpj-qp=R;Q[rmw3-C3g;i?3AmMml}I@`SVS_ ؚ[hoR)z%g'>QpFrE ُ̈d$P"iIEftJl*bx!j~}aLqlt9hu ͣ[<"vJ ާ`>5w秧h@)͸,w R"8rgkZ計0<6gZ ^}eb-@ŴύanK ׽y D&U⚲fD;zTz>QUm ⏐iqPBBB_Z~ *{M3GRN㫹6и ; w;w vo\_>eUl-s*`Y$qYQx&RH v ʽ~y*/˖敔>͓E\F HC8)c{KM4.>_C k7N)z9ud$/I!yOB+[}FT|` 4z9"Us'Kgq]OIm֊u(X#1vͼXZ6čݽuS o6.4;P-6$Lr0PY*$uLӱ3{!#DRW̾Yd[$:h:XjiS^LYl_H~$ g /++~ ƫ^F!+VZQ3SUjja}.5ʭLVAPaT)~rip>DRӜZ X_ i!fQZsUytpKگ_AMg 04h?u+񣓫{y.=5btyH3ܸTD!%qA-e= =EglD.[_ZJP,< A@4(MsPv}Sʄ!N%/:UZħ鼐&ZfpіS}"2_g2قexSXG7}nTzzY0c<2t]8=uh,QcqV47 >dw0U-cŬiۏ,cN|!|,*]oj@S@^t(|~F!&\cq=2`i+.doτG+]Ophن|G@daa pKrXF4ۊs[gl;,MF ;@qq+T+k[ILae4-jKL'b_L}tRKx*VSi#ڰwFM=rٚy!^ICu@9J۴6dE>G*Q*7ēlAl|ߤʈPsbd4zEڑ|QEn~p<@WRS~SsǷtSU`f08qN4'; ݹhro^ ``ΊsђF\(Gw WV+\;Ȝ᪗x>~=9uV6D*ň`7nҝZP}>G ɕha>)/Gߑu9;ߜ:z"^C6DL"M ;"ڢrOcTi\Ao; YvhKV<:y#~%4Z\ӣV :4# v\I9)e6(rqw-'D5! -ΙDOW>ˌN˯/[\u,-_m)δY(0k}u82%o_GZ+FŚl-=9|#R^ K,iNJ/Q^e5*~+v%?-kaUTbU$[w[b.JWe{d-^uo[>8E$vzɪ>:g3u.66< J)NRi`%*F56D}|rqrVe#9$7Ÿ+`z+26(ߚ~ߊH?W R>[A-w'7.[{PCc>e)W{bu=i~@sX!c̯ N^ Fcٍ qC }-(돥_:macz;CwhR/OB싌 eQ"cʷV`Ӆ.=+,$'{RRXbJ}+V tFٛ>wI QC(63 J[!7aXQeM)^*&5, E{V歊MRnMR4).0F8i`}4ɢ^囯%B6XG_b`0+.(c eOo}-cdΠ{ qo!K4e3U0 Kw[ci;$_fvK,u1*QKuԗX也;e{ئ FIvQKhe&()M^K{1(cD e-Y>YoNqDrΈn'ݢѱqɠE0w1#N_®"+5ߤH{2a @ ݑO9(}CC*UqR b$V8 v>*%_NoVzH-C995.ޏ`!n 8ݷ/Ԇx"(g 3t/ft-W5wqPڊ?evS= h=\{u]/HM [f\2V5#uX_bZX [lU>,s9ԭ,4`DՂM̖O|-W%O IURhRۛ7oZ9 FǾ35m ֭ 9Po8/όBocV3i0d]UH[ImMuFn9F2ꜷOf3vxOG~y%^9fm aL\j|_? +g'gXwG$8ZV8B6AoCd=D|Z5CGP niSJMzS:HB N;耆@>F*p=BeKIRsEF=P0[/Dìݗ_B(ù)O )H,4%*]%q߅eh[̢:ۑHxUۗY*pPj\" 2H r6Pˮ>*md}>8 *m~;-f *DQF;$l{weH$Ă%ɿ.BYYQEa7n<"DoyJuM&e12>k }kM;5Br,s1Z{%l3@h(pE@䝾ֵArs_Id,cG3s n,'"\|a' >9cK~|q'}EBt8K/ mgDdl}uY\ZwޗN^!x,{a$ yᣥhɿn2+?[zkf;Pc#VP2 n|5sI}E#>`7 ^. V~𱻿|3N%u5*7誛q~W?kfpQ!v^O)a79U&-{&Ƭj%4Aܒg wlS<'E(T YMo)&thg~DOɕuҐ͐YxhKFI.]!r\{PAR)ޣPڡ,~tavbB?+Wj)q_%x*~]]#(@a"Ct=;|=?yïlhF7O}avq]5}D|o<7Đ>#YmJQs:"]q^pb?mv`>K){a=/]? @dyREhL|хS򕨚)#/wՅ> zdSts ZXr\݅6n3+׋Wak *z ,OcV,paŀʙ5#L/n^CTr~&D@u OtrӆU Dox_ sb,j,O5jw9/`Bm!@};mUTMͧKCK,gz%m8Qnh`ղ/@.[B|3J<3n? 3$Ӡ/=yLO3ft 'Wn^"d endstream endobj 130 0 obj << /Length1 1760 /Length2 10548 /Length3 0 /Length 11674 /Filter /FlateDecode >> stream xڍP-L7in=;$xp  CpGf̽_^uU֖9kLEQb]YXjv&6D** /J 4uy$L]^!``ca#ĉ a(2 `3"8 de4V^^n?@')hb Y1]<+3;3JrNn@ J?;cBhX!.N@ a2_"\@'uYŸ w'657;=A`+%PR`rpa-~;9C^MLAvf/Tn U4W{N g&gyeI8vqF] h- Xpu`]PpV@' 7/'z[3N~|i  z;.N@_!,@.3Oh'~9|'@E{ߟ _ey2+hj)611ps|;)*X [BK)k6hK "Z p|?+?$jgljE./WL]ά"jVYӗ9[ g)BbnX5 T8~*FVL?L%%0ur2Ddy''e-h^XB(7Y7'0K_l#? 7}4d17d0[܀0Vu2[{:X\:xplyv/Y_'K(ece/`v`lteS/[hſq_q'/ӟ!:(?;#BClB>ֈ3n NQmk2z;uޣVg:] t-mJ\,>y6%?<'Ml#΍!byr n}U*ѕEֽGڣ|q8lv[uK|1V3 d,g΅uz #oT.0[݌rs'>%1;oT9ޥZ r #hyیwK^Eu !zI}o@ՕlW%$3Fӻs;z$7Q2 @f픆Hç[>WԪP7O..ʔpBa>J嬮4!hc(A1RcZJe^SlԓH6?!ӨYOu͑=DIzb S =J~=wMa=y#X=y0Q WgT] w-ħ'YGrfԷ&m_b4gH;#0 jXrݣXɪBЖ>b!TI hϳ2]P;&O8ȡ'ZG%60IZO6f F8C[V;^T|[Hi/b٪C0hefBQ}6ČU.I;Xt_yW!iEAӇ(;TAyFd^,~"-h#rxCq o8A?HdK2pM$-,O£ rf$V0=RT۰7PIQ$u u-a_Iy˺Y<W=R ׮0 %Buv'KPU$][&sw]ֲ$lk1>RlǞ<)cßJ$_VgTÛ'͔jXx]H?p('Wȶ0NGb \>F._Ga 1:G~Gf3PXIqC,.M\nKvEc1IRg ZFQqVB)e!$ jIԡF^Y̷?fE;QP> hjtoLZ1LG;}o Y$42*BLJ.4fOҶlo|f,Wem-愸$S=6wǡ{o1joFB0(ۗQn_}UєZɨ9?T[D3Ƭ3ݡ"V-O{P+ltc-?o &/+bB2)*E*YJY4Hm_t 35!AIsY.~e'gE 4w|LUĘ8M`BC(c>>j$Oʼ\cЁ^ݾM5Ȟ-DE-#)H[La듇m4,x":{tpF5z"W+>m\W}{kսR4PzkāB0Ke/wOZ#1nZxU²vtMA&.uu5bh #ug&voFN cwd mQ3\#h 7'vkiK5Dyu< oDJL8>^,? IA]J9ka:yvm׺9kC_7e& ӄUH猈Sv•4N~@Ll [Ѩk4mC*gOP$˂`6Vw8z3Zε+Bőwh!l,d^3'c7͉}l|=3e-Eh)t>'k5pKU{zdN]%|%7nnB4cUXTD]_x%My HgQceRKOJͅgܐ5GlFt"@Vt8{6Pt*@Rd6ģjfƥʌiA 1*0bN7=\Ff8=RO;W{pu@㺒|JZ#Z>X\(4^w:TUdsOUMp B=3ij؅~;kۮvyCP`adҰ'59l,>[ Hm+7T n^YUVq9\ŜL^ \'׺d\z'd2c.s77#~6|>Fb2id\ UK .RZ0od_]0P\D)1, GI`Zn< ErcuãB=ut? uc#$GȳPΰTu6XTM\`/̣-z[^Ѹfk9+Dg$Gks{odly:4TmaF߆u,ynbWO3W*\o6[v9I8hWf&'ByB9#ԥ8ҜLL%pmɥs!K<.u"(x͕ N@-Yogo4ӣ"ozmqF/;LVA$b אM` Ҿo&riMbx죱ۚnS گ\-Y'=f|U?`zfLm72uj*6AI%yʯJ vw' ި5>~[CHd4<囗 n {/#tZY xmҞUYVr[)s|%Ƈ꽈]]7`>ePY\jpvUI@8=r̨"~f9-V}^v_%~AZuƹ@ hd`C¤Qݲ!C|宜F.Vw[Xs23[MdCo3ÔqUkc@Qha>u 7|1E~b1^B;pRn-[F̖|~ݜﯙŮM"oMK M2H"Ճjmb:G~f!7Rx7H8&o=*aOʙf~2Țj||KyUAz@0*lβK-c͙%(xB[ՍE[D([UԾmZ"(Lw閿Hkrɣy"vV 5oǾb~RdZ4!."?/&7$;c3Z3vNZ!'yv= тYAvFNSoF\_=Xęc}m%~]Б_n#*#OJ{ҕܲ~ub?!p2d|J4*R`>'ḥ l*,u[kQ1Zs;31Nqz%p^&ծQf3/W ˈk(VNA70A ZZ~Xd\ի:ud@ &KR ѐClsW_a NYPy$䤓8\<&*=Aa:'kפgPL% R-G 3ljv Qɟ)Z$Qn!ΌDLR= XɈ9ˍ}J$ׂ;i+ lR_'aGHa8C! NKaIfe] 6RMe^c/+)d058f;@b}DI])kJwRsQHk&JPL;_/]녽J1s֣+!\ .[GH;Z sɔ=EpP4x$ cFdp4M:jV 4iTnty?S}'nLT[>dΓ T1) SL/ 4dG-Hkh<|<@'u8ueAZ@)¡Jw>|̫ sWIâ[oSPp񵓧:)iH@~f `NGG^ mDӖ{Yrε]0^B GWy=Jh@(%"m,3&>X&*1_*NZIGI>>WytG&LycaŲyii 3zu?1qIWyFx MeoTDc|Tn?`I3]piT~Uڱf6^Uxzx]B>ܧXJ!D:5T1d#?(OC+Eky}3 bDHZ,]Is[PP'K8%_2SjË-xU_77VIpPTs8sqH|]uqq}4!ȸ-8"X\V{Xo JX>(z0=bR#,'<'fm9hKkp}MņlA$[)?Võgsoc9ljF9Z-~G"|3ȷ *u:2+ͦ ԇx#XTxJZRrnQ[ސԷM4. fRLdk͇QIHFOۂ8 ĸSYPrRֽ?Q[HB9F E,}odbU)Y箌J:2Q.爀O?9&_lL*]54LxuY~Tu!NJ#oҭ3Pk)~.!(LBc*/8UiN;GIL*N9bajW~iCBe@ ^J+m\V1dG*6([&.zDvHUdaGv/!Fi)&n2LrmGpyHm>abZg<%o>Z 4;j>ڄyԛ_FjHM<20-VJZcrP5]J|XZ*3G,OZF L*"0v3k}B[-4CE؂%57mРX2} y[sh%ny\z&Bja̜$%Tv t`k`ש39xR5Ty쳻\TkN j@|FD0 , 6)`dR٬kev#G;Y-"A`g5[SHx14Y\!݄Sr$n6gUWM$E-lJTUh,^c-.w3iDޱ~<SP?[w}<ݽЧZ5f E=$|wW ( _~yiR`[q0#bw`J`H%2 }vk煢6m98SX̟PBl53՗p8]ՃgDn~>#q/"* Wpn Ww¢=pİקPfuh,WBG9"]\&60`r[ ek|q#-Q0>h6WtWGLRNoy̿굒]􋥩 ]z5HG/+ҫ*9R*PZ=޽Hs 'zsK ^OCwrbG/ *}_M+#JJ髝ebi\r#Ƶ|bYɜ8_#%H{)):_E[8]];Pi<~#LSmi2y}Ҵe;[p($O3Rᤞ[DQˈ8)2*Km:}lH?6sͺqܿMKGv-;8^>!'ٝAd:(?BIBvmn?hZD6~t i@܅&F U]Ier 67hm=w4 JSݤW:Dk+YD",Hƨ::,2}T$*^;(y`kWlXeq)i8XiaH|ڇѨ}3$%Xڹ6qGK/n%"#aJAC37(zl-V&ENJr|%oSj $c̞)b:4n cZR9ZN)$&/n! yȦMTLb?vE_vV.]ڲTaV Lyw~RI3w!MQѭfZy' Rއz{ju)Vj}?7ACPs 9R]..;Ikd:Uo$ 倾";/^ۑFw8NC?bC13m(wlh96:BBk=Faxr;_a9– {XzMwXZ,Np٨GM!h? ɪp^113h}_U!LBe|n֙6)ǂwʳΫ,yҖ{=N;~f;Y/bzN更wCN/QQz b>%/ʜ|g4S߭"].ہH) ,9YE؀{G:I*횇2tgs&(sB3E1T|>!mn ge8*̓n͙nךzRLuW#NϤs,iKٲ1j \]SNZh+[I+ع0GyQLVWAKF c:Hr 0*MԺv"w=a:}Jy;bjJ%Kv6. {]Lcr見Ylmhf*dtjlQ~*wLBpwIb-?3cG+k_7d`ig)G3|B/pgV ޯhʺBV~j/zW6 Xq- |YkRmqQU&-H,5x[~,r4]f67lᶐuqkL}#JaWIvA#BnM>Ϗ*yUE~͋p(z貿&f39 &헝Z#.yRZolHM G!d' B^/弽xWǔK{ wQ(^tPöP㌄;WzPWof0):b=*S ~&gDs沍%jUT8U[{%wKu⤔֙BS3o߸5Dx0Zn1lj֓ڟ0\llcR4a7lk/ oz,NZ{TYd><v} 9e벤^i򗲴an?oѨkj)@mLc:ye"@rYHS~4.>dz^hb'B䃡e ,;GEQoWx#q.HܷT~G?EpĥZF_c z!#V3Ҡ~:Wݫ5-o ,`I͖l8QJ`w[Q$PERt>l <#.ћaVFcf`bPRB Y#~Q} z=j'PߓrsWZG?9%21} U3hsCm *eK^/\ꩫCE]V:.; dtIdهw'`r"Sj+m/,QK ] C VZѾ`mS`z_:dSbOZ3J9#LqvSΤ ՎiSK4vAA;F=3 ˮ5's ]PglO<ѓÂ7{bJs 6W~.l_b@RF|Sś^r JqP;ShVq ]NKͽO?щÿ (C/SUR_'1E 0Nt^rwuU>x|"{o-OkWuRm2!~L_58ą=OIc |j-FTȧA>6"%#蝈t ,+l>ID+!5[p+GC]jƱ2rh8iB](+v',] wǷVnUr(ŤD?{W» ;V"u"r,ՙ)H\Dゥ|p?&k%vAN Y~;Z!F)_fjLG>YYEkE0G5idbLUfrb.)ɐhPaiҫ V 7zoT::e^ Ei 1mG+:$HRz.> stream xڍvTk."14H !50C ݡt7"]Jt HwJ?wZwy;;] -m àpn> qXXtpE A Znj0(@  ~ P?01;PAA8,`N^.`[;8V>QQaiG  Pہ7ZY@0+0vp/+) h\A. kv-Aa؁]a6p @PWD@ VR;U8p tEJ9:Y@P[ ˫=\ /G + onXX"~nX ;W+ܕ !4!AAP+ίd. +Խx 9ۀ6ZvsՅ@Jy T8lAp  O+;_u@|Ԉ|`ND ? qp.n ?m[ [05揌ؼ `D}2A`x{r 97IF gѰUX% XĔS_gzC `@ACoG mee?`_v^ >]@`7*-B"U í@^ `(H A /UV+M i} f]B  /Ċ ACkoxy08"h`sOQa/Ik$ [CO - +7Q^9 Fp?z{BߵҐhdGf'U|֧poγI%nU`(hv/)P6>/I5 $f.U-fQN OyN~`;1* NVo|4o߷xGWoeӋ{ŎޙZ3)@ x=s+0zkMDW=,7%إhOOoܽO0?nH[7\PtTih*}1${5T_Nꁇז9EV}dMx1jc<2J۝cc !UʘLM"DjWE9O(rv9,}oD|Eoo7%v]q" n8-}oXGv׮FYx OC0-U}֢<%xmDXvw%1D>H zei?]!Q4&9"9b9߷3~D#gZN“&iMò1֮&nj6!CAq Y~)3Rغ׳H0B|?ϡrUػ(fWaٶnf8M<ݿG2GO4\?3 s}r&{[Ţهg쀛=>CA ڸs,ٺāS=XmC7Ui"QoԅLD>T=\ÜdCnSx5w}\YGkH #VEJe~ϣm?U"';]LLDsuԻo  Dzխz8&3]ިj1('[kxGy@J)ud5+'m"(iBX){~5Ǩ-5Ũ|VE}d|+qutp#)QO3Cw'Bvbv/2 0u+LeC8(ڛ1[^-!x&J*tH ?q(j=Ѯ| LhK|w[r:oH=_Xt[tC y %=>E*r}7yKJK0Ė.?eK2aEsgQY1(gS| Zܚ.Q*ϵmAb:Vv|m.M=ݦ\ۣ!ϟWxq]w:&9,LLbÌH2=7-(o! Q/%#ӱɀy73G%KrdrOhҍILH 7'|Dʏz8TO*S zHєhBw`]/F<Te9>M*3]$f'sDٙ:0̓'w~*V]%]ܧjRT]ʤ^->|ǧ3[ ?SqmHx4vH}o ,3*nslÿݛ5 y ?vp:RK>͉<9Rs>17wN]Lŝ.q'jx1h9^B(bbu` p`-z e2|IS/w+G+ |#M#"wVOZ j-rn GNh\c:1򢁲E@'jGҳSGEp`ߐD|@PEcii؍^2q{F ! OdFU^/Le,o_kȓĒ-x[9ޯtW~'低IepE Jus7i/:!NSt2W\$ [oؠqtH`P&6M/S6Y肑43`o{3O`q^&6hU n&(:ѯxTR">;WwhCU5C!X'09/Fw34GDk:tV6jcwzTRqM0߹^e OÏx`ӺeYt.m!zPB't+8V= Vc $Es_~46>N]!i2OT6sb6 2$^zز'u?0L 7X2N czC3MQ$o6P7*wlHnsw:o6| ~; $A!\?zԬyf}NByWycT=%&(:ڳ-YȸkĮG_pD2Rn\r5(u}=O]KB|L/K: IN]`ayh }Í5I!L̈́cAS86:˭D X!Lɜkf5'Ұ<2eýs,Ucv9e/B /l'oD1|Pijx1CǟWE_9_KjC%)MR4YB{[u ԰*C  .;ZT~Rq wZiH^BdjyZ=j.4 ~ 6Q wnA]0>R4^y7riHIZ\5.-vr*=>n v{ ^1_Kw\\=X&#.RB 64/UY&d|٦lu~r@i҇#.uz2~6\.T)he0 %𬍑'.`%a(tFop~d6XfT+rWs]\Z(_t%wJ@6酈{59N!Od> >H5ȈGŔ-7-5E_tm̡4/Sl}~KIbڽBsgs ¸F"G YȻSx[j} w֜k&ooC[/fcB pVjt'\$]wd-z0%m!KAH YG2K%"%S#~sیT@mfv\ z|D vP# .TuO ~anސˍ{]Ӹ.Gl fc&⒚2+&*B%^kϐs֎TeAZj~P#1'A9B}Khb+dݷ|)]xsReyeRl)/ ]0q\g,3vQ:EhqgWNG]FjN~WgN[,OУ*_ܤ-2On [fzbm$Q5~tRf5ɣ@KpLl/6Dه$|԰ğ$x^>Tr^| Pu:k܎ay_ 9>, YJX|q 5d%鯦iID*+x%Њ.'!yxg`USZ:{9c=:hόΚtvͺ4Vlʑu'wRN L&HSx/aat O,D}Iq~tv>]6j%JzvREc<̔*Uo$=P=9OHeAh-$e>dOcwRNFR,b>_fsZ*$xo[D_޾9~:07F`,v8B1>3&a W:4_<(JA~ :9Dyߚbe{nn YUJ !\3p;yR *xf5?r^Ȉa 5d~hZcFqAX9fx1 47"v:G~Rma􉂻ÀA΢Զ3мWͦő/1CѩɦvF[D5. Y\&_pX/v$1m*R)Pbm\CXvMnULwɐ|0 Zr*nLQlZ]h\"Fijޗ.R$jdrIvv*e27Č J=UE$u  7e|=n[SjR{,fU8&ivۦ:hй]<*x)W=KU7XL2+m)$7n+3&5-ĥx>4iL,/[_c:?w"1_ _)J(0(c1 3^E{x 1c~I$Y@ضHHb쩹N236tǎ9>m_ i-ܦHcg_w >󗈿Ek4" j|LVǓ`I&F#Vg|5遼_*.pi7ZiEeb8B"MYl8R{EJ -Iҵ: )iUC1Yf)g 8ηn RJպH>C=iIy@Х{gZ8F3`ڨobgTi: -g) [nX?3Ƞ|br'{?8 ǹ.Xհⴷ~}:_6Uaadf|:q/`H{y]D/1Nq)bqpB|#'o ZIsD)fcZ;q3SԘ$8Ӯ:EӒv"#> stream xڍvTk.%1t7 %Рtw 5 ݥ4R ! "tJI*!͏9k֚y~b7Tp@TQH/AXc(E`a1 pОpR0 1A!n@". ` Qhi2j0O wr9?@{^ DJJB;PCH94Ba^ s]"U& <.  /Vٻ\7|,ͿTAڣ~m8FC7#Ā5tf0$Dyݸo :Ѐ_?$d$-C | A(o, 9-\y"@?q x7'x9axT E&>{7o4?+&PwY]HT$kVwq]FOl-Ir9=\Ҧ`)sNz/C#OHHbR_sxA/SNw:UaI<_>>ڜ_aTMv}0ܽzww 8MC@nc X`n38`3R,~ z%P RVj=r" R>m^og1]lE~bLn@N"ۛ@ozmKW ތKp"F9KJ:">g$x¬pђ7)t7%vEku}z#x '[ud6mnjκ}[ͭbh΂l M!tE\x0|)sD:dmg֖,U0kр 7 YG;^;s RSf`&[r} ]OOTF[v1c{MUV̻HBmG삁;;k%gԀcu&;̙yw+)ÚVjN.ikG 6}Wb>M$ DZ姥BBQ Lrw7bqs[Ӟ%D~sZ+Mhg{-Ꭵ䞘w}iV~50U~v]2(CV}ps Lui7:YȢȏs~KJp"7/lcRLZ'Ka΂G=Ҕh=X>ˬPtRb_cw| ૠ + Ouu5SMNx(Bo 94dDZI~6DN=|p2Tl)dNj)[c'Ɏ {ᔔzTG&0^5CgY9Kd=w qoKOJ6j$MbR~QQz3ɪ ,Ӯx*[0d/RCH%D}4gQ4r0', kl0$dv`pAЖhIRn5 _s-̀TО\If}J">b+EVʓ9oeS)3<ӷAhť'kqۗe8'eZ΋GQRu>KJI":|:]n{G!O N̩P=kx@3@XeR_l\{(0J %| yqc)^LŒ_!B;mA6=,t W<rE/C] #dSHq%`AywC+sQ' S4ͧUfQ*:Q{cexT9$Dfݱtpe2AyyHNla;jӮV3ý:*}lF7Qm/~ToThŪ r'GL>Hˡ*=j,I>P_e}ULK3J]g+xR;& 1*#ٮLT'F ۲zrnoH{Bi@ 46+6?Q<8u9~~;|ehSUDmndlQ2o pcnon'%86nś'V+ȍkm$2d[!,8(ůՔ{5 ;y1AH7e̵,ryR9|Gl9VlB rY@U۱.7e.?:EXƙy1мA1'X;eɧ$Rħ+Zܣ-3e##IXqc ra#w7ɯre{];.Gw3i%ƭMѽul[ L ftJfqI &F-cN{ Ʒ5 o\9aCA,6GQr̍3c΁Zu>%x~`̥exlKwk͔~ /%qniNufj3ri\1&%ޜ7Emd@Vp>nDUn[8'ވ<؉K:¢6QYЁz^02Hݑ`ih} /s?L]ukwӜѫnܒ/|% pn\K)1 %; TU,6kOrSzjԒ$ ;U=truĹp0M=G"& iQ)GFhD\g,tL $xt. f0CG8&Ϸu&Leno,$܉ f aڂSwuZz}F4L igtQ wEܶp ǻW[FAM\QDq f]}qkS=I2Ђ١^ܱkJH֭Zk#)8NI’(KZf?S78ce E|jPlRbpzm`ۤދ*K3(I$"1Z~rmˋ>RLӣ:j% 5Q_*{xONIa߮7Q|(lT@{=T_V9*/8zgJ GI|7x*؛߮.~$yRZǎVRDz:3?:4z2)+W kW3T%<^f䧨yǹ~66RMM؍iz]q*fDZAd=2.j~ul/:HBG8>O[A;hb᥵}24A:4 HեxŒ۹ A:@w٣4 |gލPݡr-YBpW 1^ ;XU fޟI[l [H3r5!k(Ɵ\eN-%7OiSθԋ%P:[Z Gr'\:# G)RdxP7'Bj$a \wgFBJF'(mv\ʛtXbĭ `e]- 2r8~r Dsf\H,7E/f[̴/LAj=]jL⣪mLGW3qFǁe#?5#W[~8:BŔ8ݜ[/D@|OV8u+xڄ:{QCø+cey/wE-'T4իTiaH#ˇZq$T\@IM15:Sױg UaK>ƌ A-\`J6۲]$4p;=G>7`}&0}|^lؒ S ^̢y%{s]t_emxkteE$r.ёJC LzH{e1u{/"ϟN[RjA&")C9 DAS;)ZkC D9u9%yܧz=n#0^ M/LgUeȉp|PWWJ1K3%T}8Tj/px {d prJDAѺg ql $_ZN9^V]KR?$||ph] ў||`ZUnM3 Qi`9_cFdQ"tn^cZsZvw`#B ½U^$%hy'Nvu3En'5~+S#yi}3؏@8X+<8alNUwV,oߑ+vd|uSTbuHm{")J_ W'&5! ;2/U7iizpPT'>Gr.vze hA>`~')^[aH~roBu).]ZudѨD1 c⸪]]A5hD LJ \,v? "ܥ?bJg>݀:-Zj:/|R ٢ T-?!Ѝz7CŃ[CFz T7CWDf*' !";] FGO-@P{ё q> |m+4 /{o_`J3Om6 Zih:{Dh][H9k5`gH|; zfl"kr?{YvRi/>X]E.Ie':UOi Sl`~΍Ů$x;)Z}Α<@/*4Cb;?Eؤb3QCn/R{v?x[ p~e#,ԯ6BkBEc8ۓ`nu:ˊm9]-@vnz#nC S.KGf&j(ui@âa҃sMgIQzv78#ꏓ]f78ahi7˄LjredLm|X:2qp9هy߿'X۫3"HVC b:kzSӒ%ig8qbJW?X7"[|[(Y d|v*ϷoQ8; o}P$i~>Un=[=)[cϞG9 &"$A/Q҇>gf&8m~iݓ-[`JcIPnژ7-L+C⮼ m$c:#}Žw?$(v̫5ڜjI]}PnK)nIZ3to2o& pDfTJޙ9Mς~U[G_}UW|Sl㲉}7hI2EĻ'5xK?QpUT#Hz"&UCVqߜX˿xgpn"mFϟ.GE$1$ۈ˳`KVPP$ȪeByu4 ҉Lb#ɡ, -NO <[3>%g'{v5dAv eR7^%V\d͜* 7QY"2eb.V.Guf@NBiwͧ'H YF@Sܸ,ݒGygg4 U=Ʉ2Nə2Ȳ0aE[N9NRяͅ )3ć]ǿ։~f}q%Z_g:ľn\),3ϼZ2;"=-%[-4g[HvJJx[s:)&~Py'zEJi"ݶ."4cyy]|LPK.S[%#ݏ/W Dc=䍜 |+!-JLy64|e`&V>on^3=S q05-PN{ϮlI$5cت8'R])eD?ІEǏ)⿠0zoyIjbm;,0YYG㋜eቯ]Yh3~S%n)aiFtDԧl9 ->[f nx8jf> stream xڍwctnܸbv۶Nciƶ4s;2F42"y%:!c[C=#7@DFIZYB KFld#%S:8pq8D ޡ26)g+ ?@[n1@ ekt%sw075sz?FT&..F6'3G#+9LP99q30X;:S\͝@G ;m5af)ٚ88 +s#㻒1$) ,o-?03c?ڿ K`bnȉK;9 l m \ ̭  .0x?:999;[ΒᷙBZ[ma'j4z;?-uCNَA(); `cdd|o,t32cD/!o{ޞvvT&?.@3oSLLcs#'!w68߇ O:sflkcF3K˪*?baa[7'3#`bx!y򗪤-bv PgOmK}?h{V?$le/@/0#2Kajo K% B}Y6w7w˛;kLVvV6@y[Gߧ@dfd~Nߧ_"*W1#[;0pp0pe|*f66'r5z{[߭e0f`0|d0(X (6?4p42772w0r1>+o{-0N:&No%\,{}ZYs$Y ,ZY8xOaSr{^ ?*ᚘeo?妿_$ߐd^13w;3_w_{7-"߫'D~O{j bcݖ$)Ի/gk߷#(m濺=;_ PC)pRMSRpMw(s}l!` q5J9;:? vvER] -I9p(`|8$~?cnӱs埘➇O1q?*28(=cBv5egՙؔǎ'^%סw'  S&򣂎 3b'TfJ\F&y^l4e+"e =}w ź[ʝNӬ˯^!-a⾀f/]g7XT#$sKP\Dq-hTVK>vPDHZ~WP`~/]K˯o*nܧ~J\ dZ )"6Y0БHoS dqR\v% /S鵬 kX#ICID珣aWu ʌQA\'Rvg~|)X`dP& ~G AS_ql:/,7q?xt32i\oE4*|Ld Bx7di $/MN(_Ť r ^#x@T@Eĝ/cwĥf""'i&kbblL$0#v?;/^4lʭ~O+vN$+XfҸ;ƙCb =AOࢬյ{V!)NY%oJ(Rf&%z\נ a p%+̝F0EԸ r%#o;16!IsʖƩEqRS ʮ/,]6`%٧;9EuBaa5 ZYK+B^) ˘hrMTaI"F[}E*$v\։0ʔ@ڐ㔍"MB r<˳%%!t:85~jgv$l{ ~XpxJR\yoT(M5&m =(؆S܆h6΋?ch?f a'Am"N]ވ$'S:|l~ǓrI2 c0b#`,տDV$rƺpa'p:9b[KؼV;7^~kƃDၘL&GdU6Ya]9f1rvV9^FÑg5yKf!YLoQto#iz3H"mvd5X?H)]^Xi 9Tmk}枝mB.ܧ6ܺ%و,wPF/~_F3ԶFeE \f`t24;LK:]a^E~j?~h♎zi|CyRӗBQ?[%ۤȟ_%*;~^v5\+s#)(C2.z.p¹> ]F)!#'׃eF,f DgDiK!lƃiuː:&Y(pBm~<v>Ӥ,?f|ɠu=qE;;x8[ZJs⏍Q-Uo>5kǶt+:JN.Db3]LM6~Ie(M<6iS~h3F=Dҷܞ 3vg'tMՊ!VJFoB(`E9퉉%1יw6Bu3Iukkغ}H/:V>PGk;&fELWO۞°3xnk,ԇODi7$i"oޜ%Z#[ČYQCO GߏV{J ~/ M86ia}4Q…F.NÕ-h'qK= FkҶh(Zfda Xڝ=>J?A`2!?sj؅lg [O W vWى̧}ύgTx( b!,^v+CGXp"=To>T|^Np?C&Z#(gfLcFs4A-1? .ș0/N *5 yP`8?\z1 ͊9A8g[Txː#XmfX'pI=KDsCdLɭ_-/Nl9Vm1);W= pAv~zjS_p_ -kg.[WQu2C[q lJMV.Fh9s"Abb› ׾MdZWJ3ў:xdzNW"-kzS\[Xn2(`đ&*j3l)=CO04ySfua6IU[* FWc#A]u9s8*}+g ~w_OF`7,%:cYqO3!I|s2-.:~ )|Ɯ"ul]9-^(/M5E\Yqj!y>K ƲlL? ,Ü|~q:FfE[D["QKQ!M=(AP89P4%9c<*tAL&0q%O<86wy :W9UEzEG%=dbi5gP8yڈ1[NXTb: a"[Q.M;LZZ\WnAUU11!a;"`~Lm3YԕO+\yt5zv:Gwxre('xcj18ײMI*H闑{8{W~~ sdH6q`lFTik ;$rMwBeż0 JxZ"aٖd ZSXԇۀUU=ιO hWżV *&?7+ҏQ2Zk1? 1ųqG;h2a.='t\snKoeSAb=3FAo=u'Sy ͂V7^ ʅ^Q)tG K~}"w:kjDH)&tRh Pw"K^ɓPcx w[/1ytݾpB94Lނ䙀(43L U;mFF? kxϺm%;i N&㕖Z38U]6!EF"c_i1FgP ѽVBu:!_b` !A%e^XTc f_:B-m^+9Ä*f@`ٖ_ǾCy^5ֱ>Y{d/A3vU^imc?o#%)3 VajLVZmaQͧ~YuAƿFa%wc; Copx\bզ;1 VEa[:ՆiQ <;]. &Hx-f ?Wz |Fڢ UTY*?\Pyf@V Yj]-rT$tNu1bmuFTL\lis:)`Zuy~hQxˆ ɡ}!> gȇ ;fR$է +kk!p.LTNݓu(eI[mkR־\XO5-*q!j~wg 7t2쑪r3Ufv J=vZГD :sX EGz4Ȼa-Ba 0C-:DyQCZ⪐YI"f1j=c!K+gvDM___mDm겹Lr]˅#$a[JU-'Cnk `@U[pl7I?*tݧ 8 mjgi AS><=rnDR|3}b^uk[GD4ubp1T$ȣyy0#NpY0W^#;Jkbc{4~b'51'W㹅|[`P V@ l=؝qNb&2 Q"}bt) NJ>Sr+E(y\U6ZBDbZ$c^ (Y@YNu9"Kπ w ";H]EVl/%{OɆRh䌋GaG}VWR/Uo+ 5_V L^\4@d>87rLjo-lؿӠ}IBJ>^LRN+@Qf99AEAa bÖzW1*0[o]]ÆYKEnz#Ƴ:j;O2KK{)_}`G"}n?;ԍPM/3,G1=%yP]홅#MȔ7q6*E7;Xt2A9Iq$Ys 0&s> M~)RȀ~`Bd]S5}Ak]G35gS@+@-%BE$ נ3?_lĢblIN>wԲh `[ 4u7Mm a^$X6=O<.>kH&C+z7J9)Ӎ)j~5tm0~ec"9ooؠH C}ʲPkh_j~R[7_|H^0FܢVE&,7k^GKj?G)=8 N]޷zcNxt;رʷW mCO|1SKXB:fC:u=w݈(B+Lj5ٜauDl+MѢX#inT@aq5133#ɏbjt(JkN*Ēv:9T-ɂkSw*`Ƨ|+qnI" ; S|y43!|V;Mδ"}YY=UȆu% s &zu$X.TU̅׺})2 ENxDPWb],TB~6KJAx/a^Gx .12q^BMG ;2 ===+ZHڒ\B0ttbuc9h|'uRu %QKvα\x3Ȑ} Ssi#!ؔGwLM:kB>چCpy:o^d#]T8YZozzor3a N ࡄW 'Ne W/8b6墼!mggS.Yg{KLiF?jlq;ہ7ܣSn94[G037ه11˯O'YřHxeXvvdƢ`k>ZN0lǜeR;}u⍁WK(JF- Yi]~k"G NJ"鏉˅] b8Y\#QQyn㽌g;Yr7Ii UXUfbX9 gAlAA?&j(n+μg#5^K/Wh`fr^ z[iU*hj%w"u b᫻(Tv$,{xY]ǽɎ!D?̖x*vKD UavIdKk[t!A ;À&9|$f (ZFv(6v|@B\֊F䊴:Q[%#?%?׋Ǥa]4 ʐ1-(pJyW3A'].VBtbю䮸NxT9H(#"|X ivC(䅏S׸FѰ`J waCϜ'CL{qʄmӛ/.oc0~xOs{1lVXb$knx@OQ9p%&S 9vm^lǖEz +[o!e43y1,hdD'0?F]#^ץD]<]mǼP\Ʋ%^3lBYN=6)HQpdfmsZ6a,+`[$4~arGa c숔/{⊎"[\<]

WB8y}:C)^7XCGs GNqm*W`^\I߼0 %]}q𲮑WviS]-1:]bQn kh<ًE]hlDf+Ş[sIS E!s=aobtEΦPav-RZtQ,zNO8QuǁI"^%G gk`>g`e`h 1!z,@xw/X/9W%ux]$t!Ob]PSBg2}2+\8 IB]t m=l$2:_ILH'.+I)Gyo01 ~H++1):(MQ4znnGsje-ou2-DGZ>^^⁴7LkTah3 oQSl5Q--!p}EJ'=E Hq5ZiPHXQ2A|;uձZ72,Ǿ[=WM ]$΄ M2It" G;њxoG:3 EQyl;T6Nň5w'P6HNJo]җ+CeRp {}:jti8XDgE|Uf_j42o=iUkɑ`!ŒxrPHmM5T: T|'33QOJ!~%L @ɸ`lN[f0zvE# +cSAlSB{Co#B-&KLJco23TGfEPcmFӣx5Mb bmi&IknMf'Q0O!,̜/X V%vE؅ )Xm~sp~(:#Z&B:A-;B'Nq֥5QQXO!sT8^Xx;'MMsW{q]bB81ZZUx**AeXč>ڡR~̃_V2A8-V|(NXД oS@.! iMOR*b EVvA.PPBȼu%fP-0Wa] MW^—`e[M\"zl ͜7ma|)pDX\q'n+"<ώZd_3Fc^yfY|~&Uo*Q,<#Mvkamr&"yğ$P#|`7);;*\>ퟴӤH]Áǀ(6? %oAtx{A*8:`(cf\߆zm;^~- J LU*D*kvDX!?&ӝg+'MA!a,NV?2W^/$F ZBG`J1q(" yo " ,,xAҕ"/"= q jm#FlgNdGx!m6@> c kZB t4~r{20X8&'DG9fi%M4Mb:$L[Ɓ'ɾ%mTWQ7dAQOϰnyNu3yD^Q +Ϥ>L5U],gO$Li7EqN?nC2`u z\N'6#ZPm0q vm-t=uwdyaAC>T&̘OIHǠԋĢ1[;IJQVH&GZӏ3W??N$p$ Pٿs}s߾<0WIdG`%ԕ$x(ycwL2-Xu0.Dq/%ܪ潿HjJSo}'{>jJ夡SF0aD;zH\Ŧ9ٮ2: i A_JnJB6W/O>z6v8@_. Vl\yЩ; h`ýCxYä+Rvgb{ߍh?Zvg&ض}/(ts !-:=nP'GiSHmU>hDQ2 gF z{c GPm8,,@c/-֮BѶy3%sɘѸF3hއT/$9#83!-t:#_EzG\CA'=òlNWZŻ&tTHruy*Vn؊ KIІjwVd` >;N‹`~M XP&S(L.fB" @tNsO7e ⍆(C\1CY&>^|(/;۔oD(y$8N6Tl<8J9DvQƬpuu o/SR 6u7ncWtz !şu9ف2M;[z9pϖM Jµ題?XsUOc$^ ?`pS};LLx q8 ]̳>{R>bFNbq7%] *gw4CZ;E{0VWCBv&{g6^]D:&P4 Tŗ&V-}\W"ZL$Jw|9\\ |gE Vxi&+ք5C4HL4 zс[ļ?HI:!CKcm.<>f&_J$Кʧy`H' ^DHo=hA Eh"G?\#PcQ\>K91p=G~sN(N0ڢ#0yGq Z./bqbh rD|<$ȟj8>hPO3?utpN<]@Q 8q/7c&qyNwrҥm9)~n0I@4rX"nU.AfDLr1@4PɐvzXif nIX5.mF1zOl%nEI D+?P "% 1Ϡ͂a^A](KgLW™z0Fy5 ]n:KCru[-_Ce k(4Hl d_J?N,m*Ua߸OqV%3m7֐$b|Sx1Q3#gj^|B+4O7@~-׃bIR7:*efK@mfW0(>U8F&sfZdE>H+ |HO!(C|s0inqKF`k daneY,t endstream endobj 138 0 obj << /Length1 1462 /Length2 6392 /Length3 0 /Length 7392 /Filter /FlateDecode >> stream xڍxT[5"- DzI I@H" WM Hw H& Ҥ " |{Z߷V={̜s.v#S!e D`DrU}SkQ ň`8/ꉆ!rP0XL  *b@_D@ :HM̥Dy\\1}z҂PO0P``àDD|||Aham>A 0PgOi\3WyBXCh`wj QPoo DEg 3 Fz@? Cz_ $h$ ANX¯A ec[`O F?k{*󄂱'"௕3 qY %bj`!0( @`W`l A($ -sb? o( OÿWĢ 8A]`ca50_-+?Q'; Hij* )o  $& DEEҒ1g$@ws+e?3 |2@b #;@I &/F_ix켿 a`N>; ZB>o6e VB@8 B`o!Ѱ7 /v[/;CWFB~ #b%f05?+& PH_]/l_8Dn_(P n#B1ȿ! !п% N/Ua+k뚀B}`Y$X>YDY2(JWlu${Qa]GFQLgcw^.ej`pT pB.b(?;Y^DJo>P i# Pg2avq[s`P$RyfyiǽKQ{G8y圙&N5kHi 2j o^=RkQȐ [8f1nq׫N"bD]6e<:dXnŖTR`{w %~3ǭYȡ.hiO}% ~467ҮwE3FZt|~4n[mE˰Pi7[+<*֒O`W2}]ŕ4l7¢(:hM\эp7TQ4kH- |gTDu6?4]<7Oϛ淦 87(eIV"ɫ|9f}! #ܕNSB /{Xbel)"obѓ줺 j;QࠀɁ!L90++1bhqaL@%AE'W.|N܊A1mFśnPE ޡJ!riPF`^6`gn:"S|IMV<;e"mVJQmhn ư'7!w`aW._SU+,ć}.sT*ahCsekD[%ލn&&b8"LωA LoHjBx7_`nl?^R{AUwG!zB w&񺉓 iP19D] >5ouxdߩe=[[*A&{of(?zDďo=‘/?VH0o<({Hƛ־tFpg xs"ONXhw1xZМ#ՆmoMM ҏvt7ky[-f>/iWåt,o/y8)|੔vfE}by[ߴ?kvu@B P}hczr<]MSraEy=E'U7,=_i H*u.qMz%'MTH dPk릢?ڔ. t3Im`n+aOr_m0Q] kKϊZd{ ?9>}Vc{BV&|M`LIvg^\'c<&#!㰓քu2T裨Y|th<;ۜ?4O?FL_u{-d-tod P&_]*_Ԟ,Lx6.XnE㗗g71R;9J+7ØQOY ѩ~VIxSO>`.2+)=WUs{\UDĄUj>eYaۜ 4򏘦y:oUX#u=Ɵov%\TFKR'OiBqr Y6飕ܗۃ9rKz,θ 4ܠT7yv`57ʩ.;V=M< 6GY]C쟌_1HN^[&tm+n[z mXK灹87 JZD:O5 : T4 4%B~.cM ZH'fpA) PtT 2C)<3EF9P(c+%qed&3 y]@D#jV3C/vViUX-qȪ&)߷STm= Z@.)~Z2]/P%{k=ryJg#lϗ&% X'E9ӿV}$8k_ uqgqmʻގI:%wjr^0E ]\NvKc4;\[@3;6JaMX6^9N^nm߶b<4%䘲P:{(ڝn&-</RP:NIygp'\ACI_ \E]4ypiчKD#cXAv w9}"` X |y(X.IƽZ˝Jt0ٓ[x<>oeoʢpˌ;|Y)5lr56ns7*đmB+NRtNּ9dw !WpBbzH|V[CH:iv!SiKz.0dS sXl2bN99$vkh-5J#G<@kȎwZ)A]inXY-:ɻV&Ø5Oȍ^m=vTI}-f򍋡.scsg 7߇)@|v╌d;338\AZ̽%+YW'|'?r(fx[sK7Gn>U]7iҳAyТ;kό =|RQh~A3#vݱ().4"7abkwq'}Ak-w|e_qf\G+Z,NiZ->&֓9 dď85_gj-Z0* &0ZPhP&8Y8)ԝ7rg`ۂ=Jt`F4|mڭ+oeuY+8L SBj \:BzH? i8^>] ӟ^WKJ?*g қ-9"ժkeVIF+f1hڏx'vOS&~\*<.3DsO&-I=i'Iٳt_qqt|^(nxQ4C{/"h2Uًc^iFfw{:"Rµۛou# U K{HJW>R`vG%),VG*)K<`7G<K#4+WtY5'裐|ř ;6;^;y;5˼nte"\1~cW)1d\3BrOf_yAlwgyIu'Qk61.[=Jyf ׀nnk^jQyidAG!ddϖo:1zջI$KcVF'.״56{0c271UےUҷC-K*:qGjxŸ2/{6g(-)oddb9ʀ KeCe=ZD3\L>HSafoE`y>fV3z(s3"]=|‘%M%aX~ⱼqaEn~^vG sOex^] N Cb.mRLi7AxVC} a嘀m̠fY_ӱ8&겭Э27~,q-ʹ^kn5M=y?7375f{YOaP8n U~qo9/q ÍgfN/ 5y|פRt2vuQs. /u՞\YܻaT sob »N7OrpCEg$@L?:G*$+\}~*.)MrUsN[벴f]}1,w'iV"Pr?$Ř~b A --<k"RJ -ԢlynԵ}zcNUHf`'fX Y%LFa\)BlRAIwC(T3kL&_6)*N1XV\yYy yg[uT[z{ǡg˛x33J""R;eC^Gwʺco.~xdw_BI85^Y$gTWln.u[W+^y(| DBojDzSRX)_(v-v?M̵8tnjd:kUuI>eyzK2XCQYhU7ޠM\pgj5<'pwSs\%(mpQzɳӁ8WSuz\ o8Jl iU;^cMZ>F endstream endobj 140 0 obj << /Length1 1375 /Length2 6029 /Length3 0 /Length 6976 /Filter /FlateDecode >> stream xڍtT.(0t+ -8  1H (H#!!)Hݍ ?9kfw羯;zXtyd,PEȩx`({_3> C@ 6y0 SG.$, @0K:/@:!=0k̿^NHLLp u0ꀮt6(8 vpE 9`(tZ~ ;@LKг9"Pn`$6 P3:n E*jMG(X!n ^п @` n Cj(wCn wF`= 9( ;3 sD9:e G9OBkY;8 `[ZsrMDYCQ!>1aaAQ upv~x9"V!>0+( .PX ('Ovj猾|$`‡ghzY"_S&OV xĄ@?!"g-0o|U[!bE_%_qpKf- A7+ݐo7o;=ФuA@PѪC-a.UAB[c9+ܡZ0e؟= B8~}[Q||C b~8yEu/ H$؃M'~!!-HKo&p @B ~]5C!Gv VoK[P;B45HV70 -,55 BOQOQu}nYrБ o!wOiʙ( Cދo̖za7/Vⴙn?71y`gHFzU%-Ѽiº32%@$<ŠŜ6F]x$uu8~L$S%?:.M]V\aB=\Pylq##kL Ѷ_Լ:\82#-F^& #+ly57P^[LpGvk˜7t:Ty)9ֱA 6vZ%4*ͷuS9wO(l`LȺ_3=P0YR7TV?o.P.YL;f,[(|&oK=7C Vo %R*]56~|@N-g|]ߓh։ª_{﯀YIK[-FG7w;fW_4Kڐo8F/!?p:s}"燆K W4}Gr\ds~?' `X l$Jv0u//U7_yP<vEg ? H({mᾦ-\|zX_ rk6ϡ &X{^ 6=Son 5+P=oN(" m e-t1eJ>:/N!~+?L$z7 -'ć8q0vXr?szE DŽEpWM*!,"Ď5+@-=S KXOe!缌Π:b$Z *Q#28 a^GV+SڪK*mgL+(|y17GCY✉#fpbLL#fNf#:b`῞,M^WL鮫~oɐ};|:Kzh>dimX"{Ct,^tC.q@' eHCSM۩[ hb-nV+ ?^8)pR=ȐPa 6Xd]z:7?% ,Ԣn`Iv?y7\6p4ȔhgUș2f}4F-871TZ7>Xkp7NB)`)NV& E 3#boe925O-i]R4DBp}ٺ_z ^K,sbn|yC5MgS 1(CF+ou}7s,1$AJ4sr2觺N*CB 8uJn#;.x\7Un%R2FNWSdձ\ZgۄkzaXzo-L?Ji4$-eǐt~w|\b)6ǠEO&"B:e0Hii|L^ˉ_A=''YHpŊK]Sd>11O|Zr{|Zح=w'a.s-3OU[{:9^HeGS{x$ngD}Ӄ <륾B.'dPYt~ 7#]ib&gIzmonWsZ:z(" p%eOw&U4} *WߙAc*^FJSl>%ga?٤ߩy&p-{u=vLdP@MzU7pG/<񫣖pAY=E^=yߩ 2 e71d5ǭ=.Ezm۞;5W{q[0I;LF{{&1}3å/$i\;qt^daUk. 6Y%`!MuA;C#eE9g%4Ncx8x6V(ϸv1Dd/ T)4>ObUyLXGk}XСARrin\.iXbdS͚qQcPJ}۔1pٚ[2ާъwr]j6]˭ɹq_XD#}S~:9u6*߂,;v$d[7Ʀ-jyqS3(BRa5*D56Ny̯Y$@xLiu'ސӅxq 91UaQZ3#1-$1}9<-8F7N"&~}}3Vg]L]bkd<|8[bj|fƷWd*#)BYPb?mS^ )x)Ho1m& йͲSS, ׮#wzvf6y츕5p n"5ĕij9>QAfUޯ#|⑵fQY"HZDFCw&.b 8 35+7mٍzn:@X,oU"2^i9e>i-O ǟnHk%ts5 {t_9ʹDO*`U3\l6z!z7g6'-4L? Zod.idIpIJ\ǤnǜYr=eNkO^ #2=R)8>2 xP\eyMAvt`Q]Vݍ%9lD;/`,ZAoȷp'(]uZ#|.8(P%7gtUe%_ljhCfKOUo}Z{bvČnuT,jh_bW(*57%^'Dp=ёfm[wJdcX YF^4yF6C=8eǰUvtdLy¨Po.X3թ3Jg69^ I>䛕?`W~_%E>Oؿnp^pi{/*@]+Щ'LV{-~DM=K&wQS;y{&u`科-jkFLfYOb4._D ER 3 [a  6'\mlכV˝SО@46??~^Žs1`'$oMb=zh/FwlVdđ̊l}ۈ׺=ʡ#Й`eȮo<:CqQ3~a4Cj+hVQt2jMJ+$0Hr`pkP {2D)HOR7UZ}F|&M 7۝E^=zkBYڈ9GZ3ԌELfiJ7* TVN '#8Q^\;.wQDڊw=3E(m;XSNO̗[/$yKf%yv: rDBΩϨ-")EN~Db$-mΥf^pĭ{;sBrgc5˱ڒ[<;>pt+a,g3V/EJKHnNdWhJП9bhjk|8@>|:ypMlud,Ǫġc`]|~͵X%nX6ҿ-QIR2)թjtgJ:֏{bL*q+LE3XIc{j Vօf˳?]9?>+QW4v fۘ?ISGGWdGn&EmCHY5__r?"2 endstream endobj 142 0 obj << /Length1 1800 /Length2 11971 /Length3 0 /Length 13114 /Filter /FlateDecode >> stream xڍPwwwww[B,Hp -xp `]-}-ݣmѳ"W`t4J;ݘؘYJrlVVfVVv$**M=?v$*m+/ &iFTrl6n~6~VV;++.I3%@ "QI8:ym@kA`a3 tYJfn6@f G R ڸ9xzz292;X 14ε3Z N'::BuR:|M`: @k:!^ [noRr/FNPV<X9͎}dY{JfMEe 4"2\L?DcMהbLU+%Y XxnzDN 풽F[VQ,29z`"b? >P>nK' K(V"1D)Ȁc"xL"RdN"c*SY)~~GˎmQ_lH9WY]FP>@:ia$ZV Qȕ1aU)gE5z*=n(A * 2rWD!6!.+8+܋ ƧL :!vHw Snz~ ԿT*b6Ǻ% @!Ci=.!Bk1"`&nH}pvB#0(IEOK9uAH5Xe\h%@X:^QX.nuʲ !P<-@g?)(iNcMe *q\[Fx腖Z~#$sHQ~#ۺfUic}5!}vD){xZ6]worEV:unFiFGd7P旇9hPͳA*75ͨɦmt]e(w'(fmN;_cyxjl祼'JלwCQ$ΞoWWQdoPCLy!,hѫ=d6?af!wouֲ|F{ۨPLS"T&Ը)5uFѾV(EbHI ʑ,oo|@ D7E|5l (q1=?VD#={ d"f,ÕIWwU /h hLLm.9?Rq \i]ޕya_ns&ޯ(Nd6F=}7V8 E^-y$dHXvo鲇٫ϑ<)IhLAFQX.RQZ *VIE @|?lQ\P]sdPum\E]f}#LtZd,KS(xڃа*2m^ -zbA4KX$vth@4ᅡǢbdubouY(=  ]⇫ ױ4p3~tYj a4~Mfs h]sĢg OcMDž߰.=W/E<W2`i}dlSQݑ`3h/rAU~ԵuӅM d4r~ZO)? :OYC]Ň55NWaj# ==n9ifdz] }ӵ,{C:J_E$i/P{g" W|򕹞#Pо]1SP@\YrQѩS}5]- O$s8lvFRc CtMUhP}lX,΁7h)L6{ס7¢`ٸ]"[C@"wqN,w-vSmCV`ԁ8$5A/Բ+a_fW`-HYni]x‡O̸iV*~zi>oKu)ZAw欘QՂO/#hP}sهu_~j$O2㠚)07yL6e+_K0Z Xm!i&5HɄ>}fʹK8HY#qU$5] S.^)t&ے$X#f??GL@)od_IeW5D#JQD_rd GF2.H6k(+Ίtlx&AKIF?e'kb?0,7u[fF ~ =&onB qnt[R(_xrc|nG3!虞X%Tl)E#y-u:Nπdk3u.uآi[QZ_ՍYK£'ܰ|zЭ(ޝIZݓo}N,W[BHA4(q LdWlMr(~uobAҗsDyH]>ˇi;y:5k{k[¸DJ7;SߢlDRߊxF8b6\|¼bGlEhu_UFQyCe/-G }ݑ?N,+_u_cNJ74cE5C<+_ rO*|F;JM7-|FodML)Ro91ёdWdXht^u~~}ޟr'7{Vi_m}M.YX=+h~\]/X/"1M%AQИ.;U^+6aʃ M CT$1i+cQK'ʨ\Btx!~c˓I)p&5jP_o ˲Ka Ğ{ba-EM6mԜ#mk (mNq@)96_#덎=A}%Jyv‰rRWbz#s"us*i$@,mEx>oX욃_FJ4Ǫ7.`ݣ^~~(x.Ȯ9lݽP 2=s["ulYc>oWC{ % 9KG@n!-e$b〭'"Jǥ8i "h=!q^vS/n8-0Dt<M ;D>>a؛W/7ErH%j9ˏԮ1b; O*wpotbLktUߘь^BKUȞ)O[®4.W p2>ӫ R>Ɠ"z֔.ba>0X-D<l*ő 8{U-pgkN`F~bw_3Ct?"!ByҶa74N, w c3JodM~ (yj%²l#]xuw\>TK> I& cT6ZLQ,?8[;ϲnn`AC)N^xx6e3^oТLvIo23|z~nFW?w#"{@uGXk]poNtzYl:hG7y׌b|](z:w ppA]p9iDgnoY5;o*$:^UHhvJAݑN D:Swb`pބ8Y]56'ؙ8 6FضpӜHp\UJ#|]m~K$t$/] G|tSG}DFqCXnjN}sw_T4,FߗTZX/w[*`Fgl /7ȗe*Vv}$hrLƬ;RiW`fuIp`CE(P!{@Z=|,U+ vYiR&}^ny$u}-.•lt[ņ>|J!Kr@fI6i70'geo3"lbf5"c_W.֟oKNݤ7my^.V @ȹS\\_vF1HbXa)IJt::;t3K}V)"QҨj%Wz1lvJ+ARҼx"N܋pŖˬPD̘|=;7zYX^o9gŸk\WU |]k5f>T!zSUrV.e3KE!,x\|dkI- A;c'bٛ) Oö.!~%2@ƽgxRu|yTMn5JJiT16d/铓O_Y1f|䔪ET(߯XA `R^3հƜFђO,t t^;#'g}j>LLBsF7T5lCg1Ň/ G ~~r@!vRIe6CK:}TSe}+N}$틩(oI];wP`Ӳ9|J{ǖs;#&dBH]Z_Hm.=\w Pφw> ]7.xt\+ I~SvSoqv2jk`_c$B~#Y|c^εLELΏ}[6r;cZ5pCENH:!stDZ27csdڧƍ:>RR!6hORMB>Y>zAۘl8?VYyؿɸ5 6C,~t[21CEq *5j2Fg Ӧݨe3L-W0Aeez#9^2WchS jCNz>WD>J'I4TϪY~yLh``5 J('On^U2MYO ZS4~;NM<+Z/Y4+cՍZ7y)]T`lK .q"&䝜+K1`_ h_.&.v4^==R7V"6TEt֠2NÃA NY#6t{ 76|[XFlk4KwcaxsdKi3Z"79_g͘mGE8^,[R, C2:am$:Zl%d`D7y₉|i+d5#=uV5i6pCϤ_ `^sk{!% AnӐrH#Yn 2:&CRÌuf&a#dsͦa{kKp"ՓEJ.nN%w/f"̔W/zßuzRJNhC/u9/Ifs0(m\ ݊YhMCLe-=E"*]RT{fۣD"d@WXc^&_ R&hz!0:LF;Y>H($tl`Ng@Cߕn c)uf]{<,i K_u\ 8лʂvx΃n]-tJڨ޿g7N"-V%<80S}q| \tDӎF7V/yQRn&R- J8\l$`uϼT=Jnv3bM{ByuO|j4GvIjUECrc$3F|' b7(ŋ"wޯ&?gmOR?i)X̏$q[~h5A },Q-zKfj@Y03&`9ivJ&? "Xkt:b A&Tz#hLXPa w?4Bڵԍ<()go5tVMA쭱Z#swfB2LX ft/4p"Z^뜥FÇ$~J0Śmm i.=4A։sk:[ÁU8w<ۑaM{0VNv.t(b]lg1'NKZm g*XHBe{%uvDOJ}t^,r /+g@Z0ݍ޾R(pJ^$ Ҍh>r_j>ܗ'YȥD)mV~-N+8U֕} ]qM{NT} o1ާ3[Y; ZI_|(/ 1oE2P7c?L<Ķ}MA z>hY u:>XȽڂy4HL۬eTxam<N^X3y?.9'rC ֢%>yY D0|%q&qiL;—~XGħK$G>X#icT.,9L@+ɫBa;gv'@G5{uy{jRh ~6<^1ὒ,}lhqb.LNjwUa'釳{}.dO-+H^YKo{:xd W%u 9uh\匕y/>C{8j2gxsdE͘c(CF3Dω mMLHR_qOHC*ϐBb] ]bg-V5;A.'ѿN*PE% $`Գ, |I}] {=ϥ 2fbs6=YV+h7,LHn7r( nmI^sZhU£}|kR#O=z"UxH83. בilahLRo7 h*0đ@&Ge.#Tzng)|NӱuA  B%w5d|"ULlNw Np%aF2#kċ{za ՉM?[2Edx̢nF1Qz^ qXkEhXi$7&mȪkz=O_xTn8m'G D~r 4yV"*|}uBX#eC$trK\*di6y#2\\iRDaBOKԈq%ӗ[.N+Hdc4PVJnGU0_J06 Vky̓sZj|2/Lڠsv E!BH Ҥ膖Y|(* $> fվCª] =|9cp$rbp~KL5¶{.zv=/j.H6;t͊Aix"ss~TLmo[F_qmџG4I$1ڂkVE2C65ORO8]%g7Mv2_Xk?Y<9Rl)1y/Fk{RS~KA^#UWqkž̍z$bKP`al 5Y ]ҨρՆBqAlPvW0Uv%xԁCRQݮ/4 )yȂӘ'>l(*{+Dci1YFex:<_},Vd7JX{g (1H$aΤEj_saqqvl\ YͮAldId\WC˾21WPu 8!8d!&K>s9ҝZկ@(7@i?GpepBB~HӔ]Օmbcccڥ͒iMa,%cdY`xż 11.#J-oG(#-Pl4}Ƿ#U߯|tr׻xƟWV_WZs9vzzuaOx{]`DIE;PJ23U]D0*[O~ I`=n87C\Y2WmSiI^ѻVP֮w0N>Q:{bDg'8tb >jJ% C0Ho:o[|F$_g{+'#MĤg^^wĥ$=Im0c,6@z!HQ:s L.~SOlQFdjn@(KtJ<MyC[/wJ̄vblcaBJc%/l ?ȼpPfCx}'g= b6?6[3@iaM$ஈHr1;G`CP0H Ҵ(vK3}«/;+ljxs!9pWPd3*S(` Tcs[wM yֶΑ J[ϦHRJ~l*e|b+L~{м(YJ(eqx]b}=Bxw9K0p/xHi]"85VHw1*ྺf%㌻\g|m2 wJ+e| LBYiBq>sE^/!rT _10ƪdܢ٭0︣%EiXس\{^S~G\. Vuw%XxR*b6pe32ꇏ tG"$taNB!;(ßxa).&:@% rQa>K78D8"OK"H@Y1D;\A{ 﫿5d<ΥZ-> stream xڌPNp'и; 4.! .ACp 2sLr-'ӽ7MA b` twe`ad)0Y((A(4. {?,Ĝ&o2q7C{- `ef3/@dP`:](AVoq@mF` btL\voLljf PP[:21yxx0ع0:8[ <@VU hd(V (,\=L7- hfotE1=XY/"&ffv&^ {KPgtt؛ehbon51}3;u s1s90l/6K؛9]]O 4{?õw/ٛ[U#= (#͛ `fffc@O3+{9V%~`Vd|b:|T/B`a\@K=o71?m Oۆ;z6{L*JtRT``ecpq8y8~ˢl'?ǭ mI*폾OF3KCSE" ԅ||5l [e)ܸ)by Hy_U٫C|*T|5O)~/޲FӂqtnGoF//2fX2蓸FjyȄeW ϴKO(DR0e{kF1iUXã!YYZOy=4qdF]G f_N>#.+ߩiƻbU9HlJ@կ>DͅvgsҺ 3F$e?s cs(<*)b[Mk}ܳѾXt+'GLǗ͂(5Si>Jg,;t< NgjfnkO1 BVWQ-ٛ/C"}6"(!e} B% ο(+՘9*=/o,rC3O+@GTӚ$1F>962-yX{ʒ*1yPy0SP*CNJe'PXlZK}֞v/y-l[5\?LfXi>43nd ֡j.=∔4 b꜇Y0faGCSvGį=H4UU*,eXCv%rI'U|+͑:bj-=zA2$<):@(PQzȒ}JԀr ,:gh3D` )T0vPfв%6y|ؤXU sm1bkR8ftJ!Ȼ| 6)+X8Ql\YyS c)kԃd+ ie hT[2XxiAh= 6jxI]=^^vsem1vPz*1rTKM|hu cBPj\A^FЄOa Qn|b-[*1U'TFRR&%4Qd^9s&HFXSځTͶ.n X#:?@93iB41?+uIRLT]e,)Lqm颎GƁsT;jP`o،d;= 6:;jH-IUm%, n;9uM0mJW Ͷ!^Ѿ`t2xb{ p,*oc#cgiDn{[NA ° 9VO4N&`!0#[Q3&Yb2h |\A*MWty]FaBB{Y_G. B"zg[aB-Z"ܬ(Bu!l 虺K`*/H::v3{áK[(<ϒGBz}УV1K=K.5 擼 ׺Å px ^)ƵCȗ"xqLGx$ 3E'dU9iOIcgt!+OG0ʕEȆ,I-cHi/ŔU$#qB!]YpSc1Zܤ&1G66+FCj3{wsc5=iX8ɻk5 R]zu7VK  c%jčIq,k4!dFe`& p;G/ZU_RRd IrnME&}W~HM宭I#!m˜FW{kO`泐n`mbo` QܦXFu3`a~u+$Hk0ЁPNkoaAxgЪtJ}Bw2'G0x˭FhpA,jGjW`:?Ìi*gpyv ީLKTxgY[J'1R"ng2LCQ9:u] bTz{/~03ptjol.^pNR_{Z(M;mpߓcz4F:;#X4US$hC(iߡ?=bg+z5g?sHO,G L]ywLD2q!p _>T&IGbsl6c۷`LO<2t=庾~S~:Iv*,O^U%Ɉ3jI@X|Eqէ?l(Kx=u/YiSQX}٥dݝ։_Gğv)UL)KOջ[&{y1p cN&+ς-0,A:eZ<¬yz6Ϲ?,-CZnJ HmA8(c^e#zkr-zFpmr' z'mt}uz+^O!'AA8:]lmZN6U>^iY3eS8 %ھ/2$!-ѪeKNDN(%a{3>){hf--goD tbhszW׼4Ħt>۹Or>)I06ͷgEi6ˇi `W=$]T7xtrClZV/e7V.}Ѵ<^$RP'pKJ\^ Xw"ZRqt-kE}!XUy"9^jK%{*n*|p*/a,؀*_&C}’ي{҂I@o©*YXIV,|T% _P~W>a5g}\k2K+;mŚoeZ4E]sZ}[SxS 둈RLN7bH\Bu\FvL*WnW[T2P[B#Ne4qǙutM"_gO;nrRJO',9Cs9סu~i_.2hT>1 Zy K"kI&h"J[\Ck=pME3HtC?KOmY!(2sؑ @0mń&֛!E-Cނ=mt $zKnh.JnbRdu) _ azD~$D7_%3"YJ<@ŏ5GE_V{# đhK T/,(/#*1/E'DCwCb Q8e 8}븂їlQ!+kR3_6IEG;lGW "CՄ&uw\*:H@l.%#kG n4ීjud,n %b9r_ iBRsAQosD|1.75 *s8F"aJM;-p[l?˴;^\̞FC ǼK󱾉]N˩JQd4`-cuN >$sUP)r{(DRI DB̖l&|A3C^luGdǩ?Z-9<~75T<@WQAnY} `EP&&:N=\/"#=aqwAa=O~-KgyztFaG%7 ,GM~# _g{f}vOnWZֱǽ"'.R?;ì6f6e{N-h Rq ~ZfE V.جE^Wld(+J)H-(0p$-xr fW-c2C0w,Zxpu*j?ef}XQo{Z9p#5øwda;B3-:w{PwxՈS[́ I/dy@&wpGHTއf0Z6z+6вvZH_4_SрM(ͥXi]d#/=sE7DX?4)cR!o/{}IPGdF>q_ NÔZWx *B3#%(qL P< VRe`49m+UpחZi50qgvڙ9Q[NYra&MC>z2K"4pKM-XA^ۺ]_#.[DIXk q'4^ޡ "8Dis&\TgK)&ҧRA.IOiJ :DAXCNBYq ^)d]nŅMYQ,Ntg ^ft춆}'"*K~xR- q=OoEɪjkλ+)8躞XhX0l=-d% x8,|l[ Yꤖf0Ki`u1xza|T\dXq|9k b,_K?*=uΑ(F*[5c#זP2Tb"}i}7{t=.Mh#x Q6ZG &iN@LBF sCȔ0ۜ9qa m$誦 C^iGQ' hD@Is+B?Ns~$tn}c d)!~hAZD"h4(<է)əGTL(+JBͮ)#BN9lz)k42\.{hlc/Y)bz)1Wtϧ#aUY/@害Ynޒ\5='z[EFx NӃ.=Q(2M?*SA6\:7 }ӦZiKBڳ~ʊ28+)iC)y]iІ g8^}W>/0Xƾ.g1Ύ槎+%VkG?5?sO/m'*Td/;R89b`=V(o{2ENxNɝ5q8`ZE[O/sԉ *d\sOJDͣN8 +|sn:f}2!wL&ܸ'[hZ\xSk"5td@㻵eCq궘(Δ wM,|* KqH'Zƕ@'^-Oz Xt@07T7GhqO@ ]<2*_kHpLB6hVNΣN?6Kgru-4u)*<7Z7TV}tJYiQ#Tg_ k_hKXy߸|ߕm^ߓ 5ݡJim71]-bX"e/op-DWt"wQR½*A >Y6p3V׺\T #_zħX\OJ %-wˢEzQ%0mGףG2osU-ƿB} ;Y^#A5 ;b{A \i ])Q 4+te#mXgd^R*>OrI5&c2+ D-?7Z6 :{Xؤ MK&>ƩQTqQt0?CD auwO;`?"|två0F61V5μ4U]`Alv!Pk;#4Fl%xdžXVyx}["\*oy_eqbr,˶99~Ў/E)_Rc:jq J)3~xZ{%TYnЭ`׌),%H6.dH2 g@UY~PԞ E J/zBmνӸMvYo-FK3bȨ![L𼫢[ !mS~AoR(SgʊHݒ?Ys/|ksRے/(Y-* 98};]r8cp/ @L&R8_U7P,-Zt#IU W䙎(v&z?쁝r.{52#AWN@ruHm2F rd3odges3v.|^ x %`_Lu-_Ʋ,!nNjp\9C-:.]-T [0}&V*&=rr흝S-\FǙ,+*pPvo5R dL@yww !G4?m_aC2āDĩWkHc_`U~ bU4_Z9T.G[~N5yճ{%F?aI{~EC eNc=G}="#V}$exn0Y JJ)cx)rY!H=(XLTiZ-˗W}eҢ7)Ɩ{[w]q?B0\ԘA9,|0sns\b@_ f 2`G.s ~=9#+>{fÚNL'J ~fRL[}kDaBȆ[GZIcmpPJ"Ckƾ+2\E68fMp3t:,.G({1îP LN2i< Sqo8Jј["#pRFFa_]&f`>}=|3*4(qkx>yME9mD@ꈌm>zv &O%32.'.]|7/ZD5e~C1+kS3(iYf5ih.Q!,x RtP_=:>SuZ~nCͰ{e ~hr=o"A06V;uz3Ճ/-T&W$"챲͠},%ptsעMxaYL{=;Go;ׅPt{hچ,HoFvfRm~La")1:YyNn'+VWעSqi6 Td/ ~Wl(v5 Mv4T AoK oIo*?ATD1QxӢgճWkº஧9u|jX9\{ R\i&MѴ._f(3W+WaQ!Yɢ<ğuoׁ9gˡޝ!fEiB=~)Tkˬ~S"\w\^~VCH=".iXT7nܜ4ϓ9 LԸ!C)S|gT#Q "?|j( դɒrO8{kuȤ| Ŧ [r= )XO6Ӑ_Xf5F+L-#xFmP_@_nX}:_N ٣JՊƶPaE/~5z~m ^/WJ D+lfl:!7ʂƮլaթ詜1# pT̓:9pz&Pmo"^ZEJna݊ @(qbGs wWL)% UnM2:-3\Y_ִѾΔ'7xfVuW!4m K=w "QNFєM#}.rkL܃$5!΅x#~I.&ԭn}]: fDp25H.KR~E ߛY9{%k@Lp ^3gD?#EGvn"%:X=Ke:r3s1p5ssJSA[]w>%?a]npr:\&5oq;fT=" 9%-ł GD%jN̉ =iL~ɘ݆-?P^*<7 uLPY=W#nb޷UKYгMs#KE\ u4lcTf2-C_$QX%4 rPgfVb㜵$N4 ubi)[s 4v*awҠAn1.k3MڷGhDB}b@j 5Rl O_BU[dPD?6r`nH5zhu6v#;w|E̫6}ZHs}I] 2 P|'OXݧ|*K*fwiuINd"7S ]BssaԨil@EXW.V yɋk z,q#ʄ|)w${own\llQt.؃LTqԋȯO^΅I㚔Rzuk\F(sn Ύ-`B)O *b^?L$$hQbgȂ̂iplXvN"ACZ1q˘$zq.f$k{RZQP*(oc./1_'ʅG,U\FvkoЏT1|<;V9 2nE!-r=i/')? iCnm|4TbTԩ+]$ }2OݰNQ0b΂JMH0 ;ssW I~8MF0ewB} anBD#ٍ5 PTB3cy07#e7Oɠ! Oq8m&ADI>0}џ$M=-0RNYM&'^i3|WY,'(a!UӕF㟧S""2(tiv=S.SNUz_I9P9RzsgnTr8\X&1 SD"TLe7]<7LTc 5ƍ|8ٛZ'b]ީ1Rqe0rB8?zž9S gIVTgR]upXxc(.DX(t:Ybm*÷g]-k2WǦ"7UǘZ 3VoZl4J gJ8"c yuڡqa֮`B%4k b%ˊb\tYӔ#*l6m36C ]NǯhZ5#kȨ3_:߱JI~z=c3ExCQ:8UkݫNZ/dU&LxaDiSl]򈺲,SM]]fɆRV"vT5_r{IDہ6%Sy}gY8kx{ZX+ ȑ7o{Y,,>㌍)HTxTa˦b"z4¸q@JP)SB/?gE82Bn9^ kR]t,Dbv46}O`J´HkY0zMaAzF?utZ>?ֶק'FXdMzv-!80L.Rqמ Su"7P67󍥖DL'߆Wˀ2"͚U-i_HS$\Y]8 w6'3I1ݩ0F )H{,q ؿs[!,<$Lm[+@w ЁU_F1nyQZ3Ui`a[ 4!M A5鷱%Nw>s 4?1nAp {0Q^!qL3_|/9 5zپ'd[S3΃t^FSuX/tR# .IqyÖt9K a,}۩EY*?@Dۂ+OP̧&KG?I5jF {ЃP6BK7Ld5,2- CUqF]]xCĨg|-$wf54 O"Q L+ jZ-PX*2Q5[]Vi ? GhO8nPTY\ toEx*Ӊ>XJ6]2t3Eq<ſ~TUN=Ơ"'_ Sߋ)I@ԻL={/XV*-&A@ɑ@t].'a툒LȊS$4guK;x7\CE 5bDzPBnF' sO4b;g{Lg]G*4cAg9G^{eN.Vġa#AM=ω$J5EG\bZ\=nnO ߌhz*().hZ)#0}l$'A^0@>dŖ_}M]`!l񂗤YH}>6@Kk3iܬW!vD)-܁f.n/"EK\p TlY9Vp!}Ictݯ1{ :}rVBZ.MY {(ɑ'ǽ.RPk_C+, 5aPHf'a$@1>!f 6{ *uxd,.t9|+-gGI&aܜ2CLHϹƒec~)Ve;ŖoY; e|Q's6z.>HqEt<''M%QŒ(d&6&T#Tgէ[Y{f^y׀Z6*+rߑu~;*y^3YM6.3q9.iq(64$JAIIf&*}t4qaIlHdjE`uQ36a쀝sy5wpt%7?Įk GZc^ ja\]n?.~5x SkVE/!?dxjh58S a>Y4-3ޚhw ~󑶦_@ M$qޓD@>+tTtnaj̳TTGXR8Rܕ7nyBщ0{)>+0a=Ƥ>v.; K*EVjp@Xo=qD-Q W"PEs-@doX/D=(_mlW|51n| "9tT:5d߇ Y9AQeh=J -% HK*lS)̥8 (>*6 iMe3j\̰`N䗩vi:*' +?9}#K& l\⅒e+Fs%nl&z@S7s۲Cގ-(HTEgF" ^R*"+U-ժީ|(CciPr<@E5CXmIhP${BwNnD&۹l7@+(U'Dg]Up~wJA^mY`m"vp'qW,\͆G6 VFU_&*7b;5P?Tܨ5U#7CK.5bMV]F ENRF)[.(\ΆNՃy{;do۔k%G:5܌A[.%V.]<U\-( gk+͞QT|WCrzӳ=WXK9Zd1/Q[рׇZ&-S?Ebk+"V,dvn2aFUwȺяV׭@y^kLε gaVB)/͖GsByOĚ⸜,'Dlnr2c4~XN8)DB+Y@1%34B a~fKmS1hDfzə(7P_Eg3CZ@_3F/DVuGBp kNWR?1_NE}KT:N CJPl/l;-uܞL9"QX4lbI~!^ܩ( G(?1}T<&tI RNPS&і%ex?w~X5n2p*; Zn}'h^hKzETy>RL( aJ4(zKЁa&c9oHQ?(X?4'Q>hVqT%5Rfpr0q +벒Fvα  {6Ê&b8]jf7kJ\Q,E85󿿠%kI8aR*xn];lUcsŐ,NIHK @`?=?ZTcQejS<׬RliNמQ6VQq*-WT$pD{7 P[5X)qfy.i@$r8%3#9w\mLi7>SyD'1C!P|zI_gf6Vh&!ޥܑ)c7 g endstream endobj 10 0 obj << /Type /ObjStm /N 100 /First 842 /Length 4415 /Filter /FlateDecode >> stream x\s6W4W}%Mh%WG_=Dey;N* "3y(dƽ͸Ȅwtd3e}&Df<<3mfasb ajLr<"tX&JL·͸%$Ze ;T0 9P0CC7.S-CeB$3x䙆h#3 l^3vR~g5LpBlFd.7 uTVۭvV뷼A \6La HL[Niݻv7-y52?D (XmrwRGs4-n,{.?Ga9^~&*k(;^\.nO n1+IY9RΫa1`_aLNJrOv'˵~dp%:6VH(}vTȨ^(xPw,&_8 ugĎx㰎#{vLqX7IpC->k՜XR8#yjrӴxvd=F(+M;z,tKcKI$Wm-KoqJefZZ U,)%et9[rA_K~A]{q|\,9(vll$|iIDX@CC7Aq,kJZ_V5qb38 ЊZ p l|~`0W4N?fÂXTz2HI%>;EqXc,nh/qZ.{ˆD@PD^>QtF{GЂ ܒ35Q8ZMSS)_)JiAAN4P[d2RB=nS52JDŽS5pb)@jZK1˜6 d4?R j)Tz-( hTRB#?~OwٖVA!q T.@w Fz1'E9N<]]ZO+L;99&wQ2S֐ܟ)V|ﺘf\{YO a ߌ3u=(\A}@P40A5KY*![<:~?RlI/v:əh=PF\*&cz!4a0YBGi-0f̅J1G' {h2\ RՆ"P nYK_BIqfa4L< A %A?7_. "Hc! { RZP/8(@1( CeT tbW︐9Az!p2ljGBIO(z Ao1;'ǔc|(Mq4ZkVtʥTQЊdʠ);UIH2@:0d\Q2@t.ɲB\,Fbd0C?I$unS C|x&N=:B!gjtj|:>xX ̲JÍN0%{hNqz ŃC"V!F(yΑapopD02\(D^o 3ڄ)k(|6M r,^-p%5ʺ&<fP\J 3QOIG@˾PB4,Ѽuewz):ih!ӱ -:I` G¡V!XyȐ% x ^!4;Hsoّ&`oڢ TzVVtᘇ'cNQ? 47]zB޾/giu;LB}sWLOɞ!(t (YY]]ã3d bT Fe˛3||I]cݰ10 wqX\~7'g/W+\U{zv}v+eG옝3V 6d'_Ŕ]kVQd\[v[N%U_ٜͯeO؂*,޾{#A &o'RZ*O'#WM$%y*i1\‹~P|bg|lqsC^VQmE&u`hodyLn+w +zrޣLCV Wsr9eeK fbv }]DO=#Qu|x *`uʎڄW{G>ŪVl1w{~9bxD}ƞgƛ&dBxp2Q`!_ W1hb^c@m/𯂘DpDǰt;Zˋz Ua ݍd_+]N'(<;;)'HRwqh-pPFNAy|[#GH =+e0w+{e*|557ep41E뷼ZP_⑛g?x=2e$?n!Q>~=LG=B<1`+R*q | "%^RJ&aa[JRQ|buٰ+Mi*f gABq蕨P FԉѨ.,YcUO76^\Sm~+r/7 'o Q4tXb8c &6cpoS5H[mώ~}A~ `w'${PX1]'<0i7["()7ܴ*(KLvs_.5/ #R}=wRnjf>=kƦoy[mN}Ҧ;&/1rsKOEBݹ%~sl2e]5 :p\H>%7': w._]&jꡭMktj:O?Zuٱ9=æg6>oW mS tN*>m(&4> endobj 146 0 obj << /Type /ObjStm /N 6 /First 41 /Length 251 /Filter /FlateDecode >> stream xڝ1O0wۑXQJP%Zm$D*>@ JL݋cD@a@u DFD Ȯ 61><-1p\j?wї'.g0`jMi <CLiPhW6c.5;Xp;c^ |>{=n# <399037F2E1508DD9B978097A044EEBC3>] /Length 425 /Filter /FlateDecode >> stream x%9LTQ]A@QQ@eTFAeDQqAA{i Zٸ Ci 1H,3lM99;r̖ܬ `ViL70 ׋i)48dT C"I`Z RK-~ )ZJH9 =ﴮ%vդT,5MjU[{gZO'ǵ:$Hl"[f'aB.|Fluud';.kұ&_W=@v!{I3G#%Yr!T9L#G1FvANNr"]$ON#TOl7BN/~( oS:07tI$Ïz<tɛJ.+Z 6.ׇVR?W]vB"φ8j*I- endstream endobj startxref 382779 %%EOF mcmc/inst/doc/bfst.Rnw0000644000175100001440000007725213074514644014404 0ustar hornikusers \documentclass[11pt]{article} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{indentfirst} \usepackage{natbib} \usepackage{url} \usepackage[utf8]{inputenc} \newcommand{\real}{\mathbb{R}} \DeclareMathOperator{\prior}{pri} \DeclareMathOperator{\posterior}{post} \DeclareMathOperator{\indicator}{ind} \newcommand{\fatdot}{\,\cdot\,} % \VignetteIndexEntry{Bayes Factors via Serial Tempering} \begin{document} \title{Bayes Factors via Serial Tempering} \author{Charles J. Geyer} \maketitle <>= options(keep.source = TRUE, width = 65) @ \section{Introduction} \subsection{Bayes Factors} \label{sec:bayes-factors} Let $\mathcal{M}$ be a finite or countable set of models (here we only deal with finite $\mathcal{M}$ but Bayes factors make sense for countable $\mathcal{M}$). For each model $m \in \mathcal{M}$ we have the prior probability of the model $\prior(m)$. It does not matter if this prior on models is unnormalized. Each model $m$ has a parameter space $\Theta_m$ and a prior $$ g(\theta \mid m), \qquad \theta \in \Theta_m $$ The spaces $\Theta_m$ can and usually do have different dimensions. That's the point. These within model priors must be normalized proper priors. The calculations to follow make no sense if these priors are unnormalized or improper. Each model $m$ has a data distribution $$ f(y \mid \theta, m) $$ and the observed data $y$ may be either discrete or continuous (it makes no difference to the Bayesian who treats $y$ as fixed after it is observed and treats only $\theta$ and $m$ as random). The unnormalized posterior for everything (for models and parameters within models) is $$ f(y \mid \theta, m) g(\theta \mid m) \prior(m) $$ To obtain the conditional distribution of $y$ given $m$, we must integrate out the nuisance parameter $\theta$ \begin{align*} q(y \mid m) & = \int_{\Theta_m} f(y \mid \theta, m) g(\theta \mid m) \prior(m) \, d \theta \\ & = \prior(m) \int_{\Theta_m} f(y \mid \theta, m) g(\theta \mid m) \, d \theta \end{align*} These are the unnormalized posterior probabilities of the models. The normalized posterior probabilities are $$ \posterior(m \mid y) = \frac{ q(y \mid m) }{ \sum_{m \in \mathcal{M}} q(y \mid m) } $$ It is considered useful to define $$ b(y \mid m) = \int_{\Theta_m} f(y \mid \theta, m) g(\theta \mid m) \, d \theta $$ so $$ q(y \mid m) = b(y \mid m) \prior(m) $$ Then the ratio of posterior probabilities of models $m_1$ and $m_2$ is $$ \frac{\posterior(m_1 \mid y)}{\posterior(m_2 \mid y)} = \frac{q(y \mid m_1)}{q(y \mid m_2)} = \frac{b(y \mid m_1)}{b(y \mid m_2)} \cdot \frac{\prior(m_1)}{\prior(m_2)} $$ This ratio is called the \emph{posterior odds} of the models (a ratio of probabilities is called an \emph{odds}) of these models. The \emph{prior odds} is $$ \frac{\prior(m_1)}{\prior(m_2)} $$ The term we have not yet named in $$ \frac{\posterior(m_1 \mid y)}{\posterior(m_2 \mid y)} = \frac{b(y \mid m_1)}{b(y \mid m_2)} \cdot \frac{\prior(m_1)}{\prior(m_2)} $$ is called the \emph{Bayes factor} \begin{equation} \label{eq:factor} \frac{b(y \mid m_1)}{b(y \mid m_2)} \end{equation} the ratio of posterior odds to prior odds. The prior odds tells how the prior compares the probability of the models. The Bayes factor tells us how the data shifts that comparison going from prior to posterior via Bayes rule. Bayes factors are the primary tool Bayesians use for model comparison, the competitor for frequentist $P$-values in frequentist hypothesis tests of model comparison. Note that our clumsy multiple letter notation for priors and posteriors $\prior(m)$ and $\posterior(m \mid y)$ does not matter because neither is involved in the actual calculation of Bayes factors \eqref{eq:factor}. Priors and posteriors are involved in motivating Bayes factors but not in calculating them. \subsection{Tempering} \label{sec:temper} Simulated tempering \citep{marinari-parisi,geyer-thompson} is a method of Markov chain Monte Carlo (MCMC) simulation of many distributions at once. It was originally invented with the primary aim of speeding up MCMC convergence, but was also recognized to be useful for sampling multiple distributions \citep{geyer-thompson}. In the latter role it is sometimes referred to as ``umbrella sampling'' which is a term coined by \citet{torrie-valleau} for sampling multiple distributions via MCMC. We have a finite set of unnormalized distributions we want to sample, all related in some way. The R function \texttt{temper} in the CRAN package \texttt{mcmc} requires all to have continuous distributions for random vectors of the same dimension (all distributions have the same domain $\real^p$). Let $h_i$, $i \in \mathcal{I}$ denote the unnormalized densities of these distributions. Simulated tempering (called ``serial tempering'' by the \texttt{temper} function to distinguish from a related scheme not used in this document called ``parallel tempering'' and in either case abbreviated ST) runs a Markov chain whose state is a pair $(i, x)$ where $i \in \mathcal{I}$ and $x \in \real^p$. The unnormalized density of stationary distribution of the ST chain is \begin{equation} \label{eq:st-joint} h(i, x) = h_i(x) c_i \end{equation} where the $c_i$ are arbitrary constants chosen by the user (more on this later). The equilibrium distribution of the ST state $(I, X)$ --- both bits random --- is such that conditional distribution of $X$ given $I = i$ is the distribution with unnormalized density $h_i$. This is obvious from $h(i, x)$ being the unnormalized conditional density --- the same function thought of as a function of both variables is the unnormalized joint density and thought of as a function of just one of the variables is an unnormalized conditional density --- and $h(i, x)$ thought of as a function of $x$ for fixed $i$ being proportional to $h_i$. The equilibrium unnormalized marginal distribution of $I$ is \begin{equation} \label{eq:margin} \int h(i, x) \, d x = c_i \int h_i(x) \, d x = c_i d_i \end{equation} where $$ d_i = \int h_i(x) \, d x $$ is the normalizing constant for $h_i$, that is, $h_i / d_i$ is a normalized distribution. It is clear from \eqref{eq:margin} being the unnormalized marginal distribution that in order for the marginal distribution to be uniform we must choose the tuning constants $c_i$ to be proportional to $1 / d_i$. It is not important that the marginal distribution be exactly uniform, but unless it is approximately uniform, the sampler will not visit each distribution frequently. Thus we do need to have the $c_i$ to be approximately proportional to $1 / d_i$. This is accomplished by trial and error (one example is done in this document) and is easy for easy problems and hard for hard problems \citep[have much to say about adjusting the $c_i$]{geyer-thompson}. For the rest of this section we will assume the tuning constants $c_i$ have been so adjusted: we do not have the $c_i$ exactly proportional to $1 / d_i$ but do have them approximately proportional to $1 / d_i$. \subsection{Tempering and Bayes Factors} Bayes factors are very important in Bayesian inference and many methods have been invented to calculate them. No method except the one described here using ST is anywhere near as accurate and straightforward. Thus no competitors will be discussed. In using ST for Bayes factors we identify the index set $\mathcal{I}$ with the model set $\mathcal{M}$ and use the integers 1, $\ldots$, $k$ for both. We would like to identify the within model parameter vector $\theta$ with the vector $x$ that is the continuous part of the state of the ST Markov chain, but cannot because the dimension of $\theta$ depends on $m$ and this is not allowed. Thus we have to do something a bit more complicated. We ``pad'' $\theta$ so that it always has the same dimension, doing so in a way that does not interfere with the Bayes factor calculation. Write $\theta = (\theta_{\text{actual}}, \theta_{\text{pad}})$, the dimension of both parts depending on the model $m$. Then we insist on the following conditions: $$ f(y \mid \theta, m) = f(y \mid \theta_{\text{actual}}, m) $$ so the data distribution does not depend on the ``padding'' and $$ g(\theta \mid m) = g_{\text{actual}}(\theta_{\text{actual}} \mid m) \cdot g_{\text{pad}}(\theta_{\text{pad}} \mid m) $$ so the two parts are \emph{a priori} independent and both parts of the prior are normalized proper priors. This assures that \begin{equation} \label{eq:unnormalized-bayes-factors} \begin{split} b(y \mid m) & = \int_{\Theta_m} f(y \mid \theta, m) g(\theta \mid m) \, d \theta \\ & = \iint f(y \mid \theta_{\text{actual}}, m) g_{\text{actual}}(\theta_{\text{actual}} \mid m) g_{\text{pad}}(\theta_{\text{pad}} \mid m) \, d \theta_{\text{actual}} \, d \theta_{\text{pad}} \\ & = \int_{\Theta_m} f(y \mid \theta_{\text{actual}}, m) g_{\text{actual}}(\theta_{\text{actual}} \mid m) \, d \theta_{\text{actual}} \end{split} \end{equation} so the calculation of the unnormalized Bayes factors is the same whether or not we ``pad'' $\theta$, and we may then take \begin{align*} h_m(\theta) & = f(y \mid \theta, m) g(\theta \mid m) \\ & = f(y \mid \theta_{\text{actual}}, m) g_{\text{actual}}(\theta_{\text{actual}} \mid m) g_{\text{pad}}(\theta_{\text{pad}} \mid m) \end{align*} to be the unnormalized densities for the component distributions of the ST chain, in which case the unnormalized Bayes factors are proportional to the normalizing constants $d_i$ in Section~\ref{sec:temper}. \subsection{Tempering and Normalizing Constants} Let $d$ be the normalizing constant for the joint equilibrium distribution of the ST chain \eqref{eq:st-joint}. When we are running the ST chain we know neither $d$ nor the $d_i$ but we do know the $c_i$, which are constants we have chosen based on the results of previous runs but are fixed known numbers for the current run. Let $(I_t, X_t)$, $t = 1$, 2, $\ldots$ be the sample path of the ST chain. Recall that (somewhat annoyingly) we are using the notation $(i, x)$ for the state vector of a general ST chain and the notation $(m, \theta)$ for ST chains used to calculate Bayes factors, identifying $i = m$ and $x = \theta$. Let $\indicator(\fatdot)$ denote the function that maps logical values to numerical values, false to zero and true to one. Normalizing constants are estimated by averaging the time spent in each model \begin{equation} \label{eq:st-estimates} \hat{\delta}_n(m) = \frac{1}{n} \sum_{t = 1}^n \indicator(I_t = m) \end{equation} For the purposes of approximating Bayes factors the $X_t$ are ignored. The $X_t$ may be useful for other purposes, such as Bayesian model averaging \citep*{bma}, but this is not discussed here. The Monte Carlo approximations \eqref{eq:st-estimates} converge to their expected values under the equilibrium distribution \begin{equation} \label{eq:st-expectations} E\{ \indicator(I_t = m) \} = \int \frac{h(m, x)}{d} \, d x = \frac{c_m d_m}{d} = \delta(m) \end{equation} We want to estimate the unnormalized Bayes factors \eqref{eq:unnormalized-bayes-factors}, which are in this context proportional to the $d_m$. The $c_m$ are known, $d$ is unknown but does not matter since we only need to estimate the $d_m = b(m \mid y)$ up to an overall unknown constant of proportionality, which cancels out of Bayes factors \eqref{eq:factor}. Note that our discussion here applies unchanged to the general problem of estimating normalizing constants up to an unknown constant of proportionality, which has applications other than Bayes factors, for example, missing data maximum likelihood \citep{thompson-guo,geyer,sung-geyer}. The ST method approximates normalizing constants up to an overall constant of proportionality with high accuracy regardless of how large or small they are (whether they are $10^{100}$ or $10^{-100}$), and no other method that does not use essentially the same idea can do this. The key is what seems at first sight to be a weakness of ST, the need to adjust the tuning constants $c_i$ by trial and error. In this context the weakness is actually a strength: the adjusted $c_i$ contain most of the information about the size of the normalizing constants $d_i$ and the Monte Carlo averages \eqref{eq:st-estimates} add only the finishing touch. Thus multiple runs of the ST chain with different choices of the $c_i$ used in each run are needed (the ``trial and error''), but the information from all are incorporated in the final run used for final approximation of the normalizing constants (Bayes factors). It is perhaps surprising that the Monte Carlo error approximation is trivial. In the context of the last run of the ST chain the $c_i$ are known constants and contribute no error. The Monte Carlo error of the averages \eqref{eq:st-estimates} is straightforwardly estimated by batch means or competing methods. \citet{geyer-thompson} note that the $c_i$ enter formally like a prior: one can think of $h_i(x) c_i$ as likelihood times prior. But one should not think of the $c_i$ as representing prior information, informative, non-informative, or in between. The $c_i$ are adjusted to make the ST distribution sample all the models $h_i$, and that is the only criterion for the adjustment. For this reason \citet{geyer-thompson} call the $c_i$ the \emph{pseudoprior}. This is a special case of a general principle of MCMC. When doing MCMC one should forget the statistical motivation (in this case Bayes factors). One should set up a Markov chain that does a good job of simulating the required equilibrium distribution, whatever it is. Thinking about the statistical motivation of the equilibrium does not help and can hurt (if one thinks of the pseudoprior as an actual prior, one may be tempted to adjust it to represent prior information). \section{R Package MCMC} We use the R statistical computing environment \citep{rcore} in our analysis. It is free software and can be obtained from \url{http://cran.r-project.org}. Precompiled binaries are available for Windows, Macintosh, and popular Linux distributions. We use the contributed package \verb@mcmc@ \citep{mcmc-R-package} If R has been installed, but this package has not yet been installed, do \begin{verbatim} install.packages("mcmc") \end{verbatim} from the R command line (or do the equivalent using the GUI menus if on Apple Macintosh or Microsoft Windows). This may require root or administrator privileges. Assuming the \verb@mcmc@ package has been installed, we load it <>= library(mcmc) @ <>= baz <- library(help = "mcmc") baz <- baz$info[[1]] baz <- baz[grep("Version", baz)] baz <- sub("^Version: *", "", baz) bazzer <- paste(R.version$major, R.version$minor, sep = ".") @ The version of the package used to make this document is \Sexpr{baz} (which is available on CRAN). The version of R used to make this document is \Sexpr{bazzer}. We also set the random number generator seed so that the results are reproducible. <>= set.seed(42) @ To get different results, change the setting or don't set the seed at all. \section{Logistic Regression Example} We use the same logistic regression example used in the \texttt{mcmc} package vignette for the \texttt{metrop} function (file \texttt{demo.pdf}. Simulated data for the problem are in the data set \verb@logit@. There are five variables in the data set, the response \verb@y@ and four predictors, \verb@x1@, \verb@x2@, \verb@x3@, and \verb@x4@. A frequentist analysis for the problem is done by the following R statements <>= data(logit) out <- glm(y ~ x1 + x2 + x3 + x4, data = logit, family = binomial, x = TRUE) summary(out) @ But this example isn't about frequentist analysis, we want a Bayesian analysis. For our Bayesian analysis we assume the same data model as the frequentist, and we assume the prior distribution of the five parameters (the regression coefficients) makes them independent and identically normally distributed with mean 0 and standard deviation 2. Moreover, we wish to calculate Bayes factors for the $16 = 2^4$ possible submodels that include or exclude each of the predictors, \verb@x1@, \verb@x2@, \verb@x3@, and \verb@x4@. \subsection{Setup} We set up a matrix that indicates these models. <>= varnam <- names(coefficients(out)) varnam <- varnam[varnam != "(Intercept)"] nvar <- length(varnam) models <- NULL foo <- seq(0, 2^nvar - 1) for (i in 1:nvar) { bar <- foo %/% 2^(i - 1) bar <- bar %% 2 models <- cbind(bar, models, deparse.level = 0) } colnames(models) <- varnam models @ In each row, 1 indicates the predictor is in the model and 0 indicates it is out. The function \texttt{temper} in the \text{mcmc} package that does tempering requires a notion of neighbors among models. It attempts jumps only between neighboring models. Here we choose models to be neighbors if they differ only by one predictor. <>= neighbors <- matrix(FALSE, nrow(models), nrow(models)) for (i in 1:nrow(neighbors)) { for (j in 1:ncol(neighbors)) { foo <- models[i, ] bar <- models[j, ] if (sum(foo != bar) == 1) neighbors[i, j] <- TRUE } } @ Now we specify the equilibrium distribution of the ST chain. Its state vector is $(i, x)$ or $(m, \theta)$ in our alternative notations, where $i$ is an integer between $1$ and \verb@nrow(models)@ = \Sexpr{nrow(models)} and $\theta$ is the parameter vector ``padded'' to always be the same length, so we take it to be the length of the parameter vector of the full model which is \verb@length(out$coefficients)@ or \verb@ncol(models) + 1@ which makes the length of the state of the ST chain \verb@ncol(models) + 2@. We take the within model priors for the ``padded'' components of the parameter vector to be the same as those for the ``actual'' components, normal with mean 0 and standard deviation 2 for all cases. As is seen in \eqref{eq:unnormalized-bayes-factors} the priors for the ``padded'' components (parameters not in the model for the current state) do not matter because they drop out of the Bayes factor calculation. The choice does not matter much for this toy example. See the discussion section for more on this issue. It is important that we use normalized log priors, the term \verb@dnorm(beta, 0, 2, log = TRUE)@ in the function, unlike when we are simulating only one model as in the \texttt{mcmc} package vignette where it would be o.~k.\ to use unnormalized log priors \verb@- beta^2 / 8@. The \texttt{temper} function wants the log unnormalized density of the equilibrium distribution. We include an additional argument \texttt{log.pseudo.prior}, which is $\log(c_i)$ in our mathematical development, because this changes from run to run as we adjust it by trial and error. Other ``arguments'' are the model matrix of the full model \texttt{modmat}, the matrix \texttt{models} relating integer indices (the first component of the state vector of the ST chain) to which predictors are in or out of the model, and the data vector \texttt{y}, but these are not passed as arguments to our function and instead are found in the R global environment. <>= modmat <- out$x y <- logit$y ludfun <- function(state, log.pseudo.prior) { stopifnot(is.numeric(state)) stopifnot(length(state) == ncol(models) + 2) icomp <- state[1] stopifnot(icomp == as.integer(icomp)) stopifnot(1 <= icomp && icomp <= nrow(models)) stopifnot(is.numeric(log.pseudo.prior)) stopifnot(length(log.pseudo.prior) == nrow(models)) beta <- state[-1] inies <- c(TRUE, as.logical(models[icomp, ])) beta.logl <- beta beta.logl[! inies] <- 0 eta <- as.numeric(modmat %*% beta.logl) logp <- ifelse(eta < 0, eta - log1p(exp(eta)), - log1p(exp(- eta))) logq <- ifelse(eta < 0, - log1p(exp(eta)), - eta - log1p(exp(- eta))) logl <- sum(logp[y == 1]) + sum(logq[y == 0]) logl + sum(dnorm(beta, 0, 2, log = TRUE)) + log.pseudo.prior[icomp] } @ \subsection{Trial and Error} Now we are ready to try it out. We start in the full model at its MLE, and we initialize \texttt{log.pseudo.prior} at all zeros, having no idea \emph{a priori} what it should be. <>= state.initial <- c(nrow(models), out$coefficients) qux <- rep(0, nrow(models)) out <- temper(ludfun, initial = state.initial, neighbors = neighbors, nbatch = 1000, blen = 100, log.pseudo.prior = qux) names(out) out$time @ So what happened? <>= ibar <- colMeans(out$ibatch) ibar @ The ST chain did not mix well, several models not being visited even once. So we adjust the pseudo priors to get uniform distribution. <>= qux <- qux + pmin(log(max(ibar) / ibar), 10) qux <- qux - min(qux) qux @ The new pseudoprior should be proportional to \verb@1 / ibar@ if \texttt{ibar} is an accurate estimate of \eqref{eq:st-expectations}, but this makes no sense when the estimates are bad, in particular, when the are exactly zero. Thus we put an upper bound, chosen arbitrarily (here 10) on the maximum increase of the log pseudoprior. The statement \begin{verbatim} qux <- qux - min(qux) \end{verbatim} is unnecessary. An overall arbitrary constant can be added to the log pseudoprior without changing the equilibrium distribution of the ST chain. We do this only to make \texttt{qux} more comparable from run to run. Now we repeat this until the log pseudoprior ``converges'' roughly. Because this loop takes longer than CRAN vingettes are supposed to take, we save the results to a file and load the results from this file if it already exists. <>= lout <- suppressWarnings(try(load("bfst1.rda"), silent = TRUE)) if (inherits(lout, "try-error")) { qux.save <- qux time.save <- out$time repeat{ out <- temper(out, log.pseudo.prior = qux) ibar <- colMeans(out$ibatch) qux <- qux + pmin(log(max(ibar) / ibar), 10) qux <- qux - min(qux) qux.save <- rbind(qux.save, qux, deparse.level = 0) time.save <- rbind(time.save, out$time, deparse.level = 0) if (max(ibar) / min(ibar) < 2) break } save(out, qux, qux.save, time.save, file = "bfst1.rda") } else { .Random.seed <- out$final.seed } print(qux.save, digits = 3) print(qux, digits = 3) apply(time.save, 2, sum) @ Now that the pseudoprior is adjusted well enough, we need to perhaps make other adjustments to get acceptance rates near 20\%. <>= print(out$accepti, digits = 3) print(out$acceptx, digits = 3) @ The acceptance rates for swaps seem o. k. <>= min(as.vector(out$accepti), na.rm = TRUE) @ and there is nothing simple we can do to adjust them (adjustment is possible, see the discussion section for more on this issue). We adjust the acceptance rates for within model moves by adjusting the scaling. <>= out <- temper(out, scale = 0.5, log.pseudo.prior = qux) time.save <- rbind(time.save, out$time, deparse.level = 0) print(out$acceptx, digits = 3) @ Looks o.~k.\ now. Inspection of autocorrelation functions for components of \verb@out$ibatch@ (not shown) says batch length needs to be at least 4 times longer. We make it 10 times longer for safety. Because this run takes longer than CRAN vingettes are supposed to take, we save the results to a file and load the results from this file if it already exists. <>= lout <- suppressWarnings(try(load("bfst2.rda"), silent = TRUE)) if (inherits(lout, "try-error")) { out <- temper(out, blen = 10 * out$blen, log.pseudo.prior = qux) save(out, file = "bfst2.rda") } else { .Random.seed <- out$final.seed } time.save <- rbind(time.save, out$time, deparse.level = 0) foo <- apply(time.save, 2, sum) foo.min <- floor(foo[1] / 60) foo.sec <- foo[1] - 60 * foo.min c(foo.min, foo.sec) @ The total time for all runs of the temper function was \Sexpr{foo.min} minutes and \Sexpr{round(foo.sec, 1)} seconds. \subsection{Bayes Factor Calculations} Now we calculate log 10 Bayes factors relative to the model with the highest unnormalized Bayes factor. <>= log.10.unnorm.bayes <- (qux - log(colMeans(out$ibatch))) / log(10) k <- seq(along = log.10.unnorm.bayes)[log.10.unnorm.bayes == min(log.10.unnorm.bayes)] models[k, ] log.10.bayes <- log.10.unnorm.bayes - log.10.unnorm.bayes[k] log.10.bayes @ These are base 10 logarithms of the Bayes factors against the $k$-th model where $k = \Sexpr{k}$. For example, the Bayes factor for the $k$-th model divided by the Bayes factor for the first model is $10^{\Sexpr{round(log.10.bayes[1], 3)}}$. Now we calculate Monte Carlo standard errors two different ways. One is the way the delta method is usually taught. To simplify notation, denote the Bayes factors $$ b_m = b(y \mid m) $$ and their Monte Carlo approximations $\hat{b}_m$. Then the log Bayes factors are $$ g_i(b) = \log_{10} b_i - \log_{10} b_k $$ hence we need to apply the delta method with the function $g_i$, which has derivatives \begin{align*} \frac{\partial g_i(b)}{\partial b_i} & = \frac{1}{b_i \log_e(10)} \\ \frac{\partial g_i(b)}{\partial b_k} & = - \frac{1}{b_k \log_e(10)} \\ \frac{\partial g_i(b)}{\partial b_j} & = 0, \qquad \text{$j \neq i$ and $j \neq k$} \end{align*} <>= fred <- var(out$ibatch) / out$nbatch sally <- colMeans(out$ibatch) mcse.log.10.bayes <- (1 / log(10)) * sqrt(diag(fred) / sally^2 - 2 * fred[ , k] / (sally * sally[k]) + fred[k, k] / sally[k]^2) mcse.log.10.bayes foompter <- cbind(models, log.10.bayes, mcse.log.10.bayes) round(foompter, 5) @ An alternative calculation of the MCSE replaces the actual function of the raw Bayes factors with its best linear approximation $$ \frac{1}{\log_e(10)} \left(\frac{\hat{b}_i - b_i}{b_i} - \frac{\hat{b}_k - b_k}{b_k} \right) $$ and calculates the standard deviation of this quantity by batch means <>= ibar <- colMeans(out$ibatch) herman <- sweep(out$ibatch, 2, ibar, "/") herman <- sweep(herman, 1, herman[ , k], "-") mcse.log.10.bayes.too <- (1 / log(10)) * apply(herman, 2, sd) /sqrt(out$nbatch) all.equal(mcse.log.10.bayes, mcse.log.10.bayes.too) @ \section{Discussion} We hope readers are impressed with the power of this method. The key to the method is pseudopriors adjusted by trial and error. The method could have been invented by any Bayesian who realized that the priors on models, $\prior(m)$ in our notation in Section~\ref{sec:bayes-factors}, do not affect the Bayes factors and hence are irrelevant to calculating Bayes factors. Thus the priors (or pseudopriors in our terminology) should be chosen for reasons of computational convenience, as we have done, rather than to incorporate prior information. The rest of the details of the method are unimportant. The \texttt{temper} function in R is convenient to use for this purpose, but there is no reason to believe that it provides optimal sampling. Samplers carefully designed for each particular application would undoubtedly do better. Our notion of ``padding'' so that the within model parameters have the same dimension for all models follows \citet{carlin-chib} but ``reversible jump'' samplers \citep{green} would undoubtedly do better. Unfortunately, there seems to be no way to code up a function like \texttt{temper} that uses ``reversible jump'' and requires no theoretical work from users that if messed up destroys the algorithm. The \texttt{temper} function is foolproof in the sense that if the log unnormalized density function written by the user (like our \texttt{ludfun}) is correct, then the ST Markov chain has the equilibrium distribution is supposed to have. There is nothing the user can mess up except this user written function. No analog of this for ``reversible jump'' chains is apparent (to your humble author). Two issues remain where the text above said ``see the discussion section for more on this issue.'' The first was about within model priors for the ``padding'' components of within model parameter vectors $g_{\text{pad}}(\theta_{\text{pad}} \mid m)$ in the notation in \eqref{eq:unnormalized-bayes-factors}. Rather than choose these so that they do not depend on the data (as we did), it would be better (if more trouble) to choose them differently for each ``padding'' component, centering $g_{\text{pad}}(\theta_{\text{pad}} \mid m)$ so the distribution of a component of $\theta_{\text{pad}}$ is near to the marginal distribution of the same component in neighboring models (according to the \texttt{neighbors} argument of the \texttt{temper} function). The other remaining issue is adjusting acceptance rates for jumps. There is no way to adjust this other than by changing the number of models and their definitions. But the models we have cannot be changed; if we are to calculate Bayes factors for them, then we must sample them as they are. But we can insert new models between old models. For example, if the acceptance for swaps between model $i$ and model $j$ is too low, then we can insert distribution $k$ between them that has unnormalized density $$ h_k(x) = \sqrt{h_i(x) h_j(x)}. $$ This idea is inherited from simulated tempering; \citep{geyer-thompson} have much discussion of how to insert additional distributions into a tempering network. It is another key issue in using tempering to speed up sampling. It is less obvious in the Bayes factor context, but still an available technique if needed. \begin{thebibliography}{} \bibitem[Carlin and Chib(1995)]{carlin-chib} Carlin, B.~P. and Chib, S. (1995). \newblock Bayesian model choice via Markov chain Monte Carlo methods. \newblock \emph{Journal of the Royal Statistical Society, Series B}, \textbf{57}, 473--484. \bibitem[Geyer(1994)]{geyer} Geyer, C.~J. (1994). \newblock On the convergence of Monte Carlo maximum likelihood calculations. \newblock \emph{Journal of the Royal Statistical Society, Series B}, \textbf{56} 261--274. \bibitem[Geyer., 2009]{mcmc-R-package} Geyer., C.~J. (2009). \newblock \emph{mcmc: Markov Chain Monte Carlo}. \newblock R package version 0.7-2, available from CRAN. \bibitem[Geyer and Thompson(1995)]{geyer-thompson} Geyer, C.~J., and Thompson, E.~A. (1995). \newblock Annealing Markov chain Monte Carlo with applications to ancestral inference. \newblock \emph{Journal of the American Statistical Association}, \textbf{90}, 909--920. \bibitem[Green(1995)]{green} Green, P.~J. (1995). \newblock Reversible jump {M}arkov chain {M}onte {C}arlo computation and {B}ayesian model determination. \newblock \emph{Biometrika}, \textbf{82}, 711--732. \bibitem[Hoeting et al.(1999)Hoeting, Madigan, Raftery, and Volinsky]{bma} Hoeting, J.~A., Madigan, D., Raftery, A.~E. and Volinsky, C.~T. (1999). \newblock Bayesian model averaging: A tutorial (with discussion). \newblock \emph{Statical Science}, \textbf{19}, 382--417. \newblock The version printed in the journal had the equations messed up in the production process; a corrected version is available at \url{http://www.stat.washington.edu/www/research/online/1999/hoeting.pdf}. \bibitem[Marinari and Parisi(1992)]{marinari-parisi} Marinari, E., and Parisi G. (1992). \newblock Simulated tempering: A new Monte Carlo Scheme. \newblock \emph{Europhysics Letters}, \textbf{19}, 451--458. \bibitem[R Development Core Team(2010)]{rcore} R Development Core Team (2010). \newblock R: A language and environment for statistical computing. \newblock R Foundation for Statistical Computing, Vienna, Austria. \newblock \url{http://www.R-project.org}. \bibitem[Sung and Geyer(2007)]{sung-geyer} Sung, Y.~J. and Geyer, C.~J. (2007). \newblock Monte Carlo likelihood inference for missing data models. \newblock \emph{Annals of Statistics}, \textbf{35}, 990--1011. \bibitem[Thompson and Guo(1991)]{thompson-guo} Thompson, E. A. and Guo, S. W. (1991). \newblock Evaluation of likelihood ratios for complex genetic models. \newblock \emph{IMA J. Math. Appl. Med. Biol.}, \textbf{8}, 149--169. \bibitem[Torrie and Valleau(1977)]{torrie-valleau} Torrie, G.~M., and Valleau, J.~P. (1977). \newblock Nonphysical sampling distributions in Monte Carlo free-energy estimation: Umbrella sampling. \newblock \emph{Journal of Computational Physics}, \textbf{23}, 187--199. \end{thebibliography} \end{document} mcmc/inst/doc/debug.pdf0000644000175100001440000027720713074514644014541 0ustar hornikusers%PDF-1.5 % 3 0 obj << /Length 2495 /Filter /FlateDecode >> stream xڝɒ`bJ@c͑-[%JU*$AI}`F${yKoo~xe SƩaHMWi(Lgux.4Q|{sr%&nI_4q\ymy^y6\*j7;>|x"=<ŧeZF-AE<꼗jЉm_Ņ^ 64RB⥽,m?ǑWEA14 8q&:egXԷڰg *}QqIZ GKWA"( gIO<Ҍ1w/Pl %so.Htǧ`n(0ggIƦ 8ՍƥTa!JI1BY xF}b{)(4v 5u^IMC9fI+'_tss*VI@dW^,.8ȶCLæ?/L`# b2~J(BR}x{W#o2^$g:; vhF17=;Si+6DBPI|*UX]epw%הL䨳4!| oTkx*:1QrXpi73ir/ի Ye--K) J%3aa'I LqRJ )5G&p|@)4gͳfQk>Q[tPzMH[HogC?S7)Pڤ؁%~O-, mB2n1)a' OpvHd*(34i>HL&[-eSe&jɔp}dv+WA/jQ゜ߩ2^ ki8{%fx՗ι-ZQQj,;s*eyya蹏r=)e3^~ЃҗMtV 0Oj͑(V-/D5Y"7pʥL^uIo_m29&Fy$EáG)(AXj4 L+pH}1'lXNNMQKo8 3#AkbҌ}='N鷺Ƚ*\ղ}9BZWULN^M˲-FdZ4KGhWbhh5gRzn K*T|v )89Ij}Ke7W_J :$U^Rݤuupa{-I戹7ə L6sE~wIW;cXbcYw,1uVڢ^DﻗEҜЛ&/8uo$,h%h%̟ &sk83o$p{CЮɾ+Iԑ]6k_h'=+'qSn- > stream xZK6WL$mY$Y=8[qmmes'8F#if-S&o?$aI~߾)n8usZU7ΖBi{s{wLR*;jХ{~^~y_oS/nJ{x:f~79;1eK)1:Nv?Oq:Ux=c:3. %deqGxYU9C{\-lwj]A]5Q١y8듒EFxj80r`M{`u#+(FRmb0 F% !vMv`SÖ.u!S0Ť_7SQԕ*`$6nYtKpS3ޘ2Ldu54늢P1#gxa޲=y=VX}p;OȔdA xUBC(x` {%-tb4`dy:kָ4p$C0|!ES\#Tː ^ANg`R8, e%iUB/%< Hȗ8 ] ӫ2(*+$q C!Dp hξ]YjC|ݱ ysQ>ފQ_xO7D47L+ к CR:gIE{4_f-U_[o*lO0(QKb\5"R!`ÐVT.1Z"*{(gLXQW5TCDmia7հLrDϦ;8uP5by$|bX\ |$xXu1#݆4'?CISPOC_?` {K=/ڂpDм ;ɮf^=\ǣoFGYi =s 1x~**FzKUd~$6xzkp6 *Ȅ.$_ev<d].8݇ _ c810*<^~+246Snke"<:?;R@%^%qTTX7|ԍl8Ѓ-?vE:IL(2Ŭ{w4Sz=҇Mq\|0Ш/ޛE 8W|ENҗua,q1q{ݨK\'5lƤ!*}IMzR}[ctj*i2^yyQ3=\w0VsEO4/)byn*[kޅ#z<;,˪+8ZY@O&S} xo%,ԐhqA5/STs|&fV w0R\ք5ֿ~bo]gygoƗ£k{[0M h w&`.y(yHe#Yt)Vk~Yeܳݳ'XJ*g?;gmT>~]*uön0u*BtG1fc=v31u}?auܷZڧ܎?0$nLD40{4zd \{.aa*./bpN[ᅤ{L8&eL`M| '%@-}!u!t>1JW/nC?tUbϤ#pY}RX{F_ CPɫӨ jGҗ^eGpoI endstream endobj 18 0 obj << /Length 3173 /Filter /FlateDecode >> stream x[KW $%+n"X# 9laׇyxgIקWz MboUsʈ+.%]mzuL =z[5[?>rY}6᭻jYkN5cBgr ЈE+3$4IG=ͣHfM+G^>#~Or{-3ďei9A(ftEsagϵuawݎN:߿u[ڋ+p4UǷr:;7~˺V3CeYw)~J_9f[eAlw@+NCqw(;ճ0[T34T>ɮux 4mcN q}i.lPTƹcj@hiK/="-e0ArBypq#Ã~Cv*vD|DOQP$W YQL mr J[okTn/ >$)?Zu%\"`-I$;q^|!K9V~1ti$/l xRbME9x(%L}Q$Bߒ 4O3@Y+m{|o&"CP ߥ@GL|7Y7L8SQC_IE6JJ ?%kM8s7Ab1qrjʑ8b:7`(I0`9xjf5n-?7:is !$8v/ctB O3ƔPM0^0$H!"Fo|҂<B%ѨOS1mW 3Į\vH jWߙ]m?޲*v:y}-]~":´rS"{4x;Ĺ7@;FAz38nzyW~K.~R !^ƺ m+|\G%v DOr!q2D ^Av%D7kڭږ<mG^&KaSn&s *rlFɚf KSަ eXIL<'kΚ j8OA}R`0>g֔W\itai9qg:SR3|GӶ o&~u2tXaGqQ!WcȏgWko<I#(0 gԕn6A#[C}V d-ܾNuḭ`ޤ_m</،1c4RUTYJ$ma`roOp(S-Of X%1Y2pT`Ue0[[ɜ~wA]Vll!6$\Es~9 K?LBKPYMBOw^% =S ~ _J|cgfl>>u)5ÚA!kbV qMYVxYD!҇u -m|pCu<'帑?"[(n9/Rp5b)wf/L?i+I4L2?<5;?ǼMԜYmǞC3<hj$ՐFqkp;@?b@ajAX?i#>Twq`+Jxt_[c{1!iʱEuʋM_>vZoez^,d9F.;YXUQY%ZA@!?x e'ﻼKZ+ pMrxz@LJwƥWZGbo}䛝ӚnG?~'-{x< z= !qV$ !'|U{!bH5Y;V].&NC9QYS͋I5/"鬔o(e}0y\VS,,fbL*0Ӌe:CUju0H$?d [=|dZ 1ipA9 iH 9ljE!ЍI[)lc=IU`1v;Œ"VfgTfYɴ0y:AE)F0KCk`AԷogԺ}:V!8_b3m#/yܚN  +=g# 엖1P970GFU{Wt-VnR|+AпGwiҙڊMc;:n_\#8ԎK8fI|%awZ,C:8v&~݇,9ڨA6܂hRB0fKZ/֘ v*a+|f??aw۴=,c DgN=b6U@G,zӗ6b'wXA(䊲MӑÆxs}~0' 8 endstream endobj 22 0 obj << /Length 2935 /Filter /FlateDecode >> stream xZKsWDU5T*'$Z>P$%9*`^n p4_w_^~/*Q 'EiP^\.~cw97-rzl/ nnqճ#5V8[x=innvUԤ{~95/6{Q W ÐQ7Ca H*MKze+0ФGk`mqԖZc)DTg W榨XBslLiCC4`Ŋ3rЌb(Z /;(LHp#zOb]ªhbK/<ܽNwȆ]~E>.(+^6Dړ?'n`zP*  d|/FE\pPrn(-Hا .WhX}G(qFylv(6zMim4JJ\}UB}z1t7sm@Cfw5M}M]}?eRJuʖ9.s }!`|UmH^XʸбV#:6›Ɖ?_ @|rRuohiYE]#/|'{i@"+*N{Jh'sE,2“7/{7,/M1 ߰~ATQU)$lyV< GHZ> ~X $ Fʅn6vWktL em6Xلe-2aWd1&kkX tӐ Y+&m dbd&LoۺK#B25Hs0a Br(1e1Ze|JYSp ]k#&P,qW}09H5fBޒ3 ٬ !䪡4OLM[! :22-툁@&427Whz{ދRF¦6 `0U2!L LmOg<՟cX'UB 4N -܅(mFKj0N*A 2s2Dle%0Ŧ? & e%F5m|%L\ڒ ()[ +Z 2=`A0=܊ӌX"z6dtx1"|(6u=@m5ih$EO|zݒ>4Y ;%6EU{pi 5Ä!F#ޤӠNF $?zao3Dx=c h_E1r:yi-$r^{ՕgQUk*ȕ- #U3F+VK=k]Ȳg2aNqlEP" lePDZ";Elb1?%Ȕ9<)(]yw? zS@)KФvab4d]Cٶcr%}qh-L ޭ$\!z.Z߀VU=VO/V٧YߝAUPU /ʧj٣61S d! /o-r1y%[Fxv`aRUPϔKZ8{)- Y R LdID}[}*@bM?Wg)69:KX"x!&'Cp0r(n]S&mN,Ua䄸 ~FYL6y4udV8#qmgu7ySGC,;Ճl+tO=:*gSJE BX̪̀](gҙ.bO pM*5rgVA6%7HD(R?Bz"$:yѐNT*3G\5#ıB*DfK[.%k4CpRF6u|~K75?gdbvx./DR;sRnwf6"UN# X^F R};H EXG7 Ŕ$ (3en5n: JokZhpj8AfG'tw[?M2gZG'6w\,k@/M|ic ! 2nC!1pdʫS_M>Ʌf =z퓆G12k I{Jg@RJKB((>rя#V1IFo|$MrH9hs uj7(rE< . erggBF$E"']FS%D*`i SZ]qO J.Y,ZSpx*hv50d'~uׄ%b·HH~$R_5ŴtN $b=Od. ,\f1/0{ϓVUoBi3lBILyN?2BHd>D!\{W?],\ endstream endobj 25 0 obj << /Length 912 /Filter /FlateDecode >> stream xڥVKs0Wpgb$C;̴S[18qc8I}wW+;@"}.R?T6 E&6*~/aBq!ED<-ZkB__,_pvS"r{XŴȐQy pc)OtX]9%fYE QoV_[JboEo%#xh-dQ[ښ| w]!}Yw3aPېnΉEQfZfKB> )rW5~&@5"M}2QkyD=>F}|ATMΖ%"%VwJA؅LD6߽ '۟v2yf)wr͘ ސLi e:J %Ӧv9P [:gMʂ|m ni%'z8)L<)bSt1| ܹff <񡐨lV`3̭P:ksA 2 ?#00\rJ*/)(K:fQD3veN|ħj]S@=֌6E5ֽj2$aMdD||> stream x3135R0P0Bc3csCB.c46K$r9yr+p{E=}JJS ]  b<]00 @0?`d=0s@f d'n.WO@.sud endstream endobj 37 0 obj << /Length1 1640 /Length2 8887 /Length3 0 /Length 9955 /Filter /FlateDecode >> stream xڍP. 0w d h !NݽޫbOwO, Z>?p8@T0+6<s{8??VY'jnv]_)%ܜŁ@OOO^+/a+ t e Wk,=;]'<VC;<UVh:C`$p ;_ѿAaN`7f :Bjn^n07 {`Cj:BaOap''w} Pa.@a6۰vwà.e8&l7xY m~ yh<|a= 7;ߎF jBad0ClzLAap??W;^_! D~G ba6p؟>?%{߹4ʅ)S,WoE$`'_庻=l:a`K5rpG)vAfP/OihPD x@||{.+A G>Yo0@/$=50C9? FE@ߦ?FHL h/!vB _!? / 7|>r'!@nv?Syвl@<5A ^+ID}uhE,'Г,k<36+|dEęlr'¹է2Mo[_X$ꌮ`OwߖJEˣ'AJr K(VɅ%%?'״+UqnJxbcLYr-&(x09OϾgӫ$ra /]N̗vR1SSҡmPLƫGЙO6H]:f$K),KVG㭴WXzu)sjDnAخ>3!nZi_;>=eFoߌL*?V>@&q2ͤ셷HoxX Dm/dǐ-baOw92͇GU*>5m[HϚK_>Zr[s.1ƥۋtPUu*MfYK#CE*)ylԍ'EZtC^lYWY~9\2:Ay0IAaU*`&3w`C\x|N2UJwN*ANU] JST}י]^oWg*M-s#+ˆc9me-]>k5yz/OvX. ~~!N}ғP᎘P{n!n"xGah&Kk<ڼȏs'O>eg <)B|ִMbO.&Yy5{P-fO&4NR1^H-3MTiU2އ\e[ɵ 3L/htN/(U AʦNH_kg9T|T6jI /q; Q$CfvT ߆(~*Ef7%(m"C23֑~|@anX&FDC\׶$$ݩsqsIy&@"_`RsDXpD`|57I3W"պW~o_qv,v[6da 3oxE&ĩ#P+4[ku/j?k\-}l_!RUI`#f!SRh$koZD} 1T(w.p% KU/sQ(eZr GhMpJ_eUvNJ ,H h#;m&39ANFӋ_ 7$&]z<{iaq.F]Aa-4)`$X"Dk$^Y\i{Q.)esGuE$TGRդ8Y`'u{};8iVE@ {VZIܤS#.XI`NWJB_|"gKW٩;6\'A Ac.]g 7{Wg =` Tf:Tk6m99u/"JždefpIBcms >_:.g ?8Ez4[X X̫`+KK HQ,igye|g& (?* ά'2'SobS]?g)P,}׹|SI>p '1%[THWvlDDTH("iuƃ$p-OsZXSGujknQ|0^5ds7!qдpG@"2FmU_'Ha R-pjȯY djh(@Fڽe˲3&g4FX|5z-EKlps] iUM~%x~BO- s䎫SH.̶Tl;h0Oeǵ{v;cOFVjo/TM+s;}Q<_X>b5wN 8&<9^G--jdx <"ՑlkZubLO"j*P[nGN[bl ߹ٸS-? }{{7jtvU"|pF]ã&F-OS`/dȚ"1sDh誨{ڛ5]rB7c1UcY+->`t-rv) ]+!hmFB4OP4ƂXbAh+9[@Agg wu']y+tm3kbrkNY}=MT^4bs5-:aOmqpu*Q?>ǯ~FQJ%NcCW @ )Y3N_IOoטy,V:A˰VTΐգ\1RR(9 w _z\z=N4{ s"w嗧\|qq)t1>~.3nedQfj~x'Q.gԟ'g=]-ӐЪ?BI#ɀ:ٔY̍VOT]Ka'qD-oB- E/D3к/mpP)n 5\gsDȠIk|ӧs&zDEX6lr_j>f k'5Qvj5d?M{ZZQV@hsp:1~,8 KW\3yًqxI'Ux!wJee_9i\a KO&^%A=dRj lW/ dE,Su~|q3RXke \ r_Dsb28f|tZ#2x騇Z߈np´fҸ,E2R 36Tz{mf{8#ukZNXig[.M^Bi\S?ݰu!qf[t(84赢dMxڍ1 6|Hg ֧c"hi劫_$cgOfTب~:x|8fjvuy V-Ϫ]Sf#goJxQ($8_fؘ<#+q gӍ@/y~[Ԓ½i=az! Mݭl~IIi„pߦ[&P$0c˚ؐMEEZT/OP◃Z#`,~Cޅ#(W]֍!ӠeA>>tA-ݯ63?O:PZ&ĝ 3]Gkhq_e(uLVX.P8x5^}݁!Vb8ܳNkcQJ]qk0j[Q.SL, ?}l 7RnO[gg5TolNң0t\2E'z'}57u*U4iN'9~6sRa-EʹSTE|hrI5%іDۈoGn~J-5wM."GvK «Wr]ȗ›=\$@p. l T ty]ش`bNH"~/,!6(Hi޸QszA q/'{Kp_ZMq\QB*2o^8]?P[-LC$iE0~>sow-U22޶"4,?ֲ$"l-I]o/JkCe_5N P74*KPT|tiT~҆}% { Xgh[ 0Z=hg{5(Mmq^q!bh.|h$T2ߘfeЪz`Sx}?:JJ4D/#y'DG.kaJdePg": T8\>>Ȳb K:R#^6،J#uv3=g?ϙ߿al+6/Ց3&䁘ni`؝li㟕 Nǎ*RlQ"#x c uw]? ז'RRhy,ꫯjɒwGh4群r%S4Q.84 i5\%FaOm߼b!%0*)& [",oXsB<~& vh+V4w׃'"OY5o.H ,-ڪ vXBB5ngJxiف/W|TđkT؞u-_3cOErQk:]vsc.pou/?vZŠ7ݧpJKaVmqӰ ,4&_S!CLhczA"qiLF](q_m[/jbRqċʟb٥>3N&\| ޽'66rqnbOz7'#}d+Ni>]T ҝN*L֫ϔb\ IօӍ G !O oɁqFL}Xu~Ī4E3[@EoahnwBR7RD.TN?mpxΰEc|R^& X }G[*}' BڂǢ}Nϕm g}j&OG>j3Ev͋th'1=Nʼ']RK'GBDJjIS?.dm= NgMkui(Bmċ>!"y^^DrKD{ckpaeμ_q_E%S$ݳ7eʔ\{WG2Sm 2$aobcW04bx`6R!ſZ5X2\(S M34@!ꕐ$y. dnsqR{i]J/࠷"%tUXPץeGȕ\A4v ̫"|<|_T6}Ё7*+ jEU;娇I4R"f絳&0l(sbiU7qd r&/EU+F 2qZgDA9# 3tFh)qekDOB Ig}LR^ }^Ŷ,X2WyXvD5+W5<_JOULڗERL/IcYs ɯf^+w9 hK{B* ;dY ؉ݩvr%LA Sl-g.=2YI$Wrm|c6(]ۧ8yU(F\K{CLo}pȔGQkZ:]e_jnnL-a`T%Nx-a+(s̓ {AYȻg uMZvV-uwcfSӨ$HG"r蕎7{*"],[\Ӈs(cõT{tyH 7ȝtqSRl弆KOroV{Tu> oT!,ؖ6:Fn:>zSk"u鼠/յr.+rjƑsuA#6C32^g0+/hdM]e/5xy՛Ҍsʧ~c8B}O~TVRpH]ML&^$VK'w5}J8< ;%SA#t%&\RC 2ֳ^fy q>W~ V줌}ug N9 |hV'm ֿUdX-ccm"jAAzRB飻 omUËZMSoRG0)G 7>} q؈`%:J5+*۷KIg|m[/y58c×DHA15ΑEVoO5 endstream endobj 39 0 obj << /Length1 1397 /Length2 5931 /Length3 0 /Length 6883 /Filter /FlateDecode >> stream xڍwT}? i7Fww ƀF ]Jw)""(")!tC繟=;g^}]2RqDh^, A@HLpsCxwz9CQᡆE@:Op4@^@,)  ߎh,Ptu(a.xB@^8,##%+"PwAx*¡@S4# zXgE>A4AXo#|d!g4a76>P,HP#rD`@S}Ar`a>OD h D90/84! ECa_C*@(a?X$!g9OCf #8D, A-9!QNc8zaDPHO/ o3IKIK@/Ee 3`a D A  O?% tD@;;Ap-EAϿN9Q~vb[zFQU  J`4Ppg[P>#V';pQg2C4 ￑n _3`~EwC=~<h`&߮5@8"<۪蠂r&@Z,. G4[H<7l~ D!nqG ! /ep7cGoG"eTCG;OTBb~ 0L#"(4$tBc狖(=Wj/#8$.ZvP#<,Oy`)*4\lG_H6˝{iay?n;`O|OSsՙ8ywa<%`$M3tU2l-8NJ%GSnjާ0kJFwV3ɘdoC%v*q?l1&&0|! ٧voE\\x: ~6uq*釗yod(o87552K/CMo8Aiҗ NĭU-i09=rϛti(N˄X҉Q{#3+.4|#/ ?}ޮ3YJ.~p yUϪWX ]@=o:^>o Lэ]bP+:A>!iUpz]wdi {m,"pLĸΤq^Ni_7ߟul"(RBABVpț&\>Unkcs>=P^28AeX'B vb?I!zݩQ{c\n{;\Y2BaܠwX3!onކ^aa@ܛל A9E~Z4 Ft'0`'8P:aNQ)R=}?O؂, #Ѳ ٢i]eg{wrPxa~eaX -O|QP'H*_uES14kzQ4#VZKZ#D +yAA09~paW%Q/0qME:Z+w4(Q`.!jCU{ZT};HFn<Ճ;?_Gٮ4<+ps+l ZR'a,z[L)_Jk$|p7a&8G8<6܈# {g 쯱Yϼ>VPh*JF CwDk7$mtVkA$D@ͫœ) m&GSI\mP{כ%M!90 n&0\]5<7%C=cdY;sug*9ΣQƏkj)yK? VSqa`Ԉdk<ּq?#KD_3Zw*#F(,f/{fD+y$v/-?lxOZ#4oe~1싸ekȕQQcܭ6eO~b{$꽜EAD5zӍ0=P8Vf-V򤱤jM"EdFt.O*m1{/GLIsPTsW[[#,-Umk ߢZ$6~ |kJwu98Yݠ֌CN5!tg ~"Z{ tMqƿ%G9i@8f<I3? ^8Ո'/vUu\0W 6 n[mo8s8.<Šaf - b%_\~Z+7#)( o*7w8 cg)I85 T4}ٽV<}>f}~D1>HlgfU];-a$ HI nMa/+]Z{"D%7ݭdaGG܌}_+:ouSr (=խI&t&`W~"NQ9P9c܍`&v\^ff5!)o uȿIv98,ʊP_#]w?ԬHvBTx. Ӑ5.||YYx<8YIwܪUkkDCK:!G@}al2^ER!}IK xu^Q4o5Loٚ>n>py~Bh4'kj'x]-#ϙ,#sܹ@ܾnOԲdCd> = r Q%B|nU9-HJiXҁ2ځ֙pR$~doU 鶷Ԃ\0G86!p70F`EŐQ8AJ.+:E9m>6ӱ ЊuQf*iBm*Yͣ =Lð~BNZKh(iBLոϼySn/uzwu4f\;KG<ځTuʩ[\[ː8Ϫհ`ѕJVEehe($Oƿ/frB#,)gاES|*e/c6pw4hHaE#I5UxSn[W"[ˮXX54S7.W݃ 5  *8,(1?IY>&BNcIY-؅=(tqvVؕ*m5Oμ;w]O2 UǚV$q}rڢk;k KDJw#(> ދ%#RO܎EFR9ÅW%YR"Mn{dCv,u n*qqr~+(-Ӕr%uʱr<ت?]d/[VpV0>tFpu?\mJ6𺧝R#Iյ*HJ^K+VYCU]}L\9MIG.Xa !=Z ̅aJYeRcI/:祤'Oi'1 /MND==* /k<ړ ݅ߥ,xy8Y= #m'v(P=M1A'cp5J`(c!9xT~rߛ*AVCn>fYOhȶ 0jR *tvbtJ3ݜM^K$r)IѪͼ^O o~¨[ri1y3D"coLYۈ][O(@D'U*ݰ% nwP649EM֊& n7g vM uvm.1 z) oK{=>)DMU8liFqꦎ ,ĤIx+nȇdô܂ h9꜋Z񗦕2bx"kbv^+/R4fA B__c9P<܁U}Ȣ׏e D[o7|LL7* .R-i!~_jңpB{"Q5j$4jώFP>3g;HQDN-J+E(^V'}@f}oO=CEdX,=ЇNai A07UyVe4vW,3-w?BK+0/ոX~ 3 i \6!h;J׾WfZ3XRS CPU7xN!>$9 E GN "54<`MH6sel<~ EVjũJzE@IEK(y2{[HtV_UJ~ w^Pe Ui/C.|#=c?b/y%ps@5f.c]g("D:NTҜW9k{77(d{p[gTdz GS@= 8yV>hN~a[B]%K9VjI9b~~FhbqA])O$LVBkfG #HF\ɾ~;lf.tb:/>4#hغWsr#g$vj}K?G*-+ AQ1>&XiעjO}2Et@ָ/*Qvi[l z`|h.ÏG}k?S$f2U)$^hSwN 9/[t:MHN%z4-I_7~͞\]1GH]ؘ 'i\miٔ<<ցJ8-v:ٲrfwɷer8@kF%QXDqtD| PߔGJl/d&AR_Z1Tل/zKal#Az_ 4)+"Џ1W2\L>@;bl"p˻ ^59Gqz^ 匾Y]ګ/t9p`Sy2S2ncmIԵᒍ>Ts_]HK{02X-rƆQeb1.kEw:C* ` R?knxXiL3s;s~q(עIU'ĺHת1Ub8꜒svaDr|2F.xꖦN{Lޅ2ގez,_ڟc&X/) #wV|vJj&9spN4G>Uƥkv_S endstream endobj 41 0 obj << /Length1 2407 /Length2 20639 /Length3 0 /Length 22035 /Filter /FlateDecode >> stream xڌt[.;6 fƶiؠac{~㜑1VusINB/ljg ugf`)33XXU-ՁNv<2u9Čl.fV33' ybF9- \=|Lܜtm&F9#g {D#k%(,ylneh ]0@we pU K*vfnF@hbk tH쁶m@7f/g#;{#[K[s5 .L05mhddojdimdnWFqa%{dhidiD4]hk*jgcuv#O`fikjS{F5[K?&"?2s3tM,ӫzR2Weog0{/ci|d 8;}o 04q-mf;Ztw?_zejgk2H+]t""v/z6&= ;q7?iWwm]Y5࿹޷LL&?ϫ߆f-NH/5_uq~?rvj>r@SKr6z?¶i;Tm[Y[,_+/2z:W/wȏ&v ;}~M-1^D9¿E# `bALF?(% VAz GzgQYT 6^AzquF{t??]gbg>==F0g1x/|'43k@v_v.{71|'{,<-x+ {߻c/fwWvyw/{1d﯒5Oؘ:W޳G7(\윁Gߤh[{H8{TEamtWI/T-'k#''l;f/wa gzv|ͻ'ojL\߻c~i݁&psv&; OhR{-:v<~N \wNE^Hu#Du֖lEyjnaDp,>Юzx+7i\hnˣs;J52?բtJffI `hPݑfnnQs&ވGyioR*g70=p0WDZ(:o  5ߺ8S8r T ܥ&! V|=kLz*Jl=]FW.%FNY(7 s潨 Vԇ_M?K]=B&j y28Ap+}>HϱmSd^U%l-^4p/WTQf-kjn K3߁C"НLǒ25"ZO[YBD-Nuk7|!ZdbjI9?%l+#p~Y֐%fOɲ`d\oQGh˜D€lR&_()~#EDx T_'*="\B Q G>7}4;'9pX6A|܍D=1B%̻-No|o<~з/&퍯次a!sm|-7x aC+#Lx\H+.wE>6Y+~{I%$D^G֧t5QHtI窺i[l¹W_Bru3ݶ]66Wb ;g5wM"q *.r*Gc]8ֱt`9$8wY?dVd{$FdEE$; <>DP(0MTsH)Y?Ĕ27,>q:0qӸ2EG鋝RbzكE%vaQ3mh(cs])Ȥ|LWiނÙG*((bPލ"ާ*uyIhhN| C-6:1ŋ;P:IXY;繏@) 4xô2 4VC(XPˬ=wfX4VC+p(砍iш2zG)†'*%ӔXb^DnM CUUd8ck`hu2nN> Ew Zapj^Χeg$(@Ƒ7 ~%gvRsSt=Zf!hQ,6]Pj:ͬ1&KaP% Lj'o\_>׷0^=<1)ЃY6*TmzGu:]_igKfN%Cs~;uJB~uiN_v7tsnn,cXT( AOp ~>I1Ք~Jf|&Bj 5woF#prGkѦAgHXN5L U|X&Q1l \r"14=8EHXZՃAe,Qr+1~sxb iu#@{Ew6ɐ\ Che 9td-4VkūMI] {v{r{NvF'Fӈ&s2w %:[\c N-1~* X#Y3L<=*5J%^4,UX74˰!`Qᘌlp}l إ,,I/h"iol蛍=7ڐIH9gK @7%/~ݡMYEѼ*87E wE>/yXLSX>#FJ2.C\MMބUJu?/Er )RK`/q fm)!Id7ȎS-Z@x zm9Q0G64-z q9drMF3䌣Ń$e(U{frNS3Dj/>Ϸ-Z3%"$`b "y/lI} [!#[.GZ `O V~!h?B( ; 6ݨ=M$"NA2tp~VӲ!5+AauF-NsʹbȱWb>ǚ3q{}}#+pìӌmG*.2ի$83>Z_U٬GjtU]ιԻ<] !T@qWI(LJ~z ͋~Ϡ Im]XׅnBIm}"[-M՚G6ӬwB+qfA/V- G7/6 c*۽bD؜ Z7sU6M5.OHΌQ3ѣ[plkl |hw͹-K@ JW@ Crt8.e5\Bt]w9uvU@'6zɔZ| 쌂pD_GNfT^8f53S-ү*SfI|8I!Hg =a0B*2lITIa7O-48vhΗJmLo~nAPC{!0\oc"KxSOFyC:5Ȇ?F?f@!yZ^c|7,T3玴{ cdKCvUdj@ =P09t۰S`ϟi1^F6KBh;ւH`K`;<nj~Ĺ4Ni>zWN=t ߾ jƱJg_L:2SN|'9^IeV sx*18 ^?8?YqKi^ǛeNoM<Ѣ-k~<.IFb8$#^VнEXyi4mnv%Td2:\U-Ϥղ)ol%{ w}~Xst{N-e }÷QHڄbeBw@}!O|:|7'bҳ)mmH>S%CXUͰ_R }x!#H;dnIǿ6{}ӟI'M>T"Jp) LRf)󺓶^2F9Y&oq(0vIਾЋCz,Q:ݮ Yg/oRNͲ,BV^GRrfz[PDhA kO ZEgbCc*ͬU\"va^Z_r0>\[#Ƥ(u|2$ѳw.\ӂ&a,A{OtZw$f|`X2.QZʭ3ϰذl17t.ڒa_f࣋!7#¹Պ2ݨ"~`8l~"-jYv/pCo&V -h_z:y6Et Ν|ө7m^Hx]$¿49^~@y{kFuT+Ψk/ 7(eCDZ\\&\sRpZ&>DҲ -F-| ;w}PO=hty6I\fA/}2e:2@T>5FDTv>$y+ DOuwwBp`_ ҠiT0! c˜+~Èύ%U{"ye; rUB{)X{2+ͼ+s!판*-=:-hy#qIRi&8"_1Ci)?;0?X -x6K*n`)J4bzKYY%x=9Еtt&k+.{ Ňbȯ6=r 2(V[kcm6ˈa63)MWݲhؔ$L\]sfRe[(Pw鼩z_ԝDQh VMD}[`ւ·oM8x]ӵ>OzX3;KY7Rh6*|P \dq;hM W>Pu_3@lo8 6*aEA?88A\BXB;DZ'Je{0) ^:lGQy$]WIhZ0(uo7*jƸ^u}E#3nU$ZIFx cuYT-q:o/2Ei+DC*rMq1M4X_ iqy[мu[eAB:vT;pNkc1;yPgm`$.”[T1z_c8c ,J|"'9D&ځ3jYX?@PK,3j/H I0?PyQ5,M(>7B#t#z7`DSs n[Ca 2X!*%& 3Zn4$S.pzE$ôIo)њ|]tl;VIVrE}{}}n ^M[XKl4)6wڿ?m 7!Exb܌(0̳t 1^^bv8uK̹k?JO59azusLy2hFI7 $q{ AXo6e{6歠s|C,{ f2ZKQthVuMYvX)uUc[$6Y޲ߑ< N^?l`%K=t+bQ xQQ.uY;jN1X|0PzPzF0ÖF"ot GIԫ>_/gs_{G#%`OũwؔܟiInʐ4M*rŲ{(qmT:қ=Z- b\?>|v#G`Xha/;k `+lvZ#G] f'sԩkU 4iFBSTiT-v9Yzjekf[Ŋ$Q `aܓg姎CwWDwi 8qw 3=~!YZF;E]oGA;~A0Ȉ>#  TdKʩGm3t%F`]!z±iX)~S,,)I p WlJ- 4BG(ݙǤ< J<|肋#4xhzz@8eS[ֺ{O_ D ;q 垶6w3,2C/ruvPs(uI^35O2]do}|a؄7 b1Kϓ=\?\O5$7-b!3O‡OA*bqdn;R?C؎<KrR$ˁe.ǩQƿm=d+Qc:&@wy M[KS&p?B_#4rjބƎ֚ǔ`jiEq 7g08ͤD50ebjGY]5!xό5cR _˖12g!6s;Ma뒝q+ 6b)qw|#\3#:?9y+GRuaRb0[Bl&TQokqɅ.H1>^C6KcarU6 _E U>BqHy>{v3l 8}Rw6> ]x)>{H"ztk۫]F)』ZfS%仆 Jצ&c**g a~U KZMSu Yp\[bgeJ4ahx~F{BHscnvo Ul";=$mWrV3"* #bMۖ>e iu:M?}_/ Zq7iJ S,k)7u`+TFzԉO-/'#+&kMv,Q;mR0h+VA&+;ܽ7_\1`N=oV<;!JK [٫cRi"ފ3Px]IHxo~۞"Dݯب9j-x4/+3 fU%2d˦|OƲ=]NIaqWGm(A^GB :](i| e8H.ujIn}Mfw.<BwsZC85:SqʠN~کY^7ܼpR Ou#5N! ƫtGkڀ jA4j ~G-ʫ SFb;p;~nP9%ѽ`?q[ {mOÉg!Acq{{ 76A{]+AZQE7Qڼ &j?x c)#ky܄iP4$yHV[q=l!8k/[C]Y  u;Exv= KI)Na!v"*aQsKeߤ/RES&mN~ЦnL?ƾfz5{ݩBˢUl0K)|l]TDzsV2 vH" 5.暥KYäXk<nMZ):kF&Y9йiv%|6S F~|󳎾gr=QsQ;yGUzB/$@ `m@=rpg )+g= ( +*K[05cFYjUWb7=pm3h_8QB]d$dLXY~U^yr-%׈Ж3Gc-%1(HRSƫS< &e/P_fN6U6Z {̯,V3ac υ_%eEԿXlХNK9!K ='_HY㏎AHaSf[6]ch'(z@z*ߠy":lZCl5Gv!dLN]Q}AvYVB-$>!p Y2Y:ZdᑁU@aOP@z C u))\Snڒ܇ ,IXr0m|ZiWg,%_h&ᝪ__DYfBf';z&mTDIL'H>|΅V& lvR 4ۇa1UZ,Vʌs n}"f@ّfs)IN$cc Yn< f0v$ýwIAUIHFFWWV DA}RGܗx,f.Hr8d7Bb܇Pi Zp( k7%~eʣd_︩bڔ{t{[АS퇄-Y/K 㛕 Uax*Vc' !< NdT"J?>Ka|f*}bJ,(\%NvW388/7wab^1~x-;TxlU8}їhe}ۈ_~b¨0("c,ܨ==V9JQI[4EtnOlE /Vד:X:T%{=F,|‘'Mj~}]- ޫYD(&90M#/̐#9<TRJhAWUm2,96XC04*] p+QIY4s=&7`ib[8%k21;'?rŭ𥸿<.XV!<~UAG+RR*7K/DJT760]H A" NgMD)Ç~QdM&n),}s_51,TӔ 9t,|ۦ`R/iEPF~<)4՟))N }xڬڄ@Uu-)=@H`sU'Kw~4/Z~bDFʦUyVsmT<- 8:ϒBA:R~Y+I&! ɮZgAE֫5_V:f\d>uJ!Tm>=9z|>} 7kkmU=BU/z1ݯrlciinT<þ >Iŗ8ӶҺ&#D~rt0胟M؛CZF5] ȧ1c7\#o@9'e k3U>ҔȪQ NF?jzoo >"OWG(O.߭+cm\'Y7%W(UIuDv!>JV@%4(?+hC&pMb:s N;JNjef$0!6U!C08p{BY,xBQ$$;-UlIҎ<ǧ9~;=!7A5炕iz8u #d)wy3j:y"Vwƛzuo.l%Hiz,2b/fL+4Iyk(IfleA$ 7[p)MJpT"m'Ť'.I6Ez<;+y,@;KIё֬~=QiZ "/s s.gp7_ei"?=pb>"3W3$8Q|[t3z{"`DVZ?qË7c^j P\٧x#n@Ƒ7M#p5-j{NaXpMYK ?/ýBc\"C-@B.2T.uj -y",>Mcmp Pi;!*ho뎻@+h-?f|FGMMר{cϛ0HDٖzrE8䳹U lB ?,eZa=/ь rP.#\45q/؈@;]zaz9flc+7]DCY\+lrU`S)=2IhҼr\f/7i|/ppCPѧOf=+1L kJ יGv~1ųH?I3HNqBWN\{+#7(;2^b!-u$D9pKE˱otzp!sP؝Rkb3>%Z?Qҁ*yStޡ 3f) |ăWG#\dDG2ZYuWҒV# gh_#}2I[}c-3LebFcnu#lpK4"AuAB5c'b+a_/-}lN`ب!Waw7Z6|#r2M+k8YL{ /#̼;$EYnsd.WraP=Ԛg16UD%Ӹs"azT j@賲`{G"1@A1~2A _+ JM[/bc A J@z(b}:O4pJƇ̯۹MeHsɘ.fNZeU%7z$Dl##!;I'x(o*\ɓP, fe6 YA.y{{#̒5|/Rbp I_0ֵn_Jr*`.}V.pZA> 2 ̭K`;۫`F@JMT'4 TǓV$"FȬק}u{W'#L_a8ɌꑧB~ ?n4,nfB'L#8<3 \s38/:F=*sEho33\(l&x% <ہ-p *%4"x˹*۴TF,p~lA҅i%8kEz,YjͽL$⃿Ú!L;N[f8A̍)マy{^Owqu)*եI2N-/[C! H%re2qZ|O ȦTp(M=ߺ f]S[u.tM[Zb\kuOx~](A^zͧvX ˤwhy`3Eݓ-lVdOY(<o)vz0;("ZCr0}=SAaV"DwJvƲRbpaU$g}ص"@_~=wCZtqEcv۷ MLLtqy+OKx R%L@jԊ ɛ_;@cxg7Ն $<@n8W|-:B\*p#jGw |!ba5!-c3jYJhǑ<}QgsoڊVބQ%6`uȓD"Iٟ+ّ#.QCC-Wմ4uEY ]EC@RɆ(0բPJ/{6Th[>=l IxvlȜ;F@"drewY790zn}JVuqGjV#8fhL'c:Y CєI_AIR 4my 3k }IrZzL7W^{s*TvU#IК2dG&]k`hH{7ᷤʱj!iDމ0 J_B/Fm*jХMK)0` 2?]PQwi!,-6~ّ/QT?֩!X9ҊMG LaXňYpyn(>|83l#G6 Y6$;"Q'?|+xP4?p[,3D: nu0[T>`oePB݌qdV*`b73T(Lg\uvgbgֻ e; $ò9''%dGe"nQ?0홰sj%"4ln@1B" oe vTص'x# R-†@K3& >Lю:L\ֈJ/3pj-$!LRwXa~2^e<'kuH||*p!/*v">MGg(yn85yyCOE16 D댻t!C$AAPS@NĐ$oo*Sl'Es'Wd(`|AKt/`BT=^=Lt/wӍU3=7ƞePֆxPqNfS ">:Vb4f&Tri}15 )`d/&@nG q 16ǓlEUfE7Cj6\6^ہZ=xP46j!*k-F i/B,Tf#{Xr!x-$󁑸avBWT9v)$ 8L.rRӴAb18qQoWW= D<09[`Ņ c+&q:$~Ƣ1j2rof Bka"H׼BsT_⡖`1?%ݻNyy8ofV+;tWJW荾jhLtIef$dL& P=g_43p<_͠Ho5Y7@%8(R~sTq+qZ +Xx|8Y,`#qIo@_17$7iߖKHJR\hGYuO nkB.V}x7;-Iff%G -^LK|+Rĺ~1` * c@q ku9,[(SLuoY۬&12N"G7A_7>] 0MtrcDe4LgIMi4f%vgd-gSf6N 4JF#jWi E8[iUt [%z"LGWlsu _'YkYFxu:,Ax%]a+l(RfՀNw 鸥ˉS(=`|b$~k %)n2~r |Y!/wnI/WGRP=?4}._ׯ"W\SC{FB# L(gd }Sbq Ã!ڢZMcϘ}voJb ڡ)dեkukQu~l'` <{ ;G_Y"Eol_aysw ؃Wv9 dڴ^DXB{~M~!#Aj̹,w!ȗ/;E|gjb<yYN~=XG;ɳɠl= э ,#ףĥvUoo/SCTrJ#|i0oPw*~cĕJłKޥKVm:==J؀A~NqWv}嶸 `]p԰ܕq n(sr4Ij_1VrQ$`Z5|eu|BBSY(XɌys >ۨ!OϾLC%|BMv`doPYi$;OD"C 2j<7-,D ư1:&&4S6 մ9& V{ Zs^ ?ytAGxV ';s7/_rRf35;22_a dd^4XRF[t(Wz] !G86X}hj -0 Sr#ûT_`bU[EwW0k;) Z&#JzP/:]3"υ Tg)|_;fwc$*=sHl3 ]4yfL*R`z !j2g .xsϭZIk-8c2+l**Y_-#J--aJÏ?'7%]fwZ8+F{(@9+2$9¼y9BU=ꍛ΋tW~]/{nn8qeketG,/&0ZW%xL NYCd>(Q2,zq=66yۥ endstream endobj 43 0 obj << /Length1 1659 /Length2 9214 /Length3 0 /Length 10297 /Filter /FlateDecode >> stream xڍT.SChq;S$ K"ŋ;ys9Zﭬof 6%5XuaȪy\\\\< :{_fL=3h<eW{7/[@[P %G@qaP3&, qy;?7@XH , _Up,S_l;:Q`?7xV!-HC 9ϙU[B\Ur=΁4k8+@< ?]C`M3Vssq8YvQP#0/99<1~EKpr@a.!|V0'/*m 8eFNSo$ =rQ!?/ b/X_PiOza~7'Z=J f/N7=-\Nw?<{sc9^`? W' DŽ<> [`M,Dm;)7O2l꧳{9uࢧf.;]H|tq]\j{}#zX[V/[f;htC?5Ԗϝ^{.e|GW!\B+>EMZۊ h)9ȞS?a%8:$}UN`=-6\ችJǹܐ`x[f'Utƻdi8IȪC2צ:iĔaTH)*zeC)]"_Ѣ҉/4! @,͞tfz0 qJ-?17hz6txDM¸;׬v}ZR:Vw]g'::Ȃ tm8[:"045ԵaQF4P^DyIk̤~s%v*oBA:_(%z\u R+تAتrx=sh~ӑ&E\b2xɄ񪇓D"*m>?0{#a/s9v Jtryk3 耐c%4yҊ^D"nvMW7({tje7'p^M(q5ԡC *Ja@7?NXxpB,*{IUiYλ(CܙNM܊sfs(5jC;< 'xMfюJR;e ]Nss M}C ֮u?H^.^=$%sЬd`Yc6[ME^>EYSUWӼ, 2C~VM\(HŇg7Œv_FD(,:$VdFFkUt5mon*`u)ȳPmFK9Zܹ0I&?.$-(2G-HO+_ڱ]]{b/ 0'_VW>.ƙ {P۱vYov?#4.$z֕sXrWaWeRFߡzƐÓZy'\meL+YB).JEtִ@dT=+tocy 5v8BtnGX$#>YO{M$hf[~,Zeޝz3Hxe'+q&\bfpSjMrX^< ኛY}`+QLe58csL99=،h>13oX#ט9M&-NV=4('Dq[ʀ.%ȇ%@ǜH!0Bk;aXgHq1 WŗI 4mk*̋ge|w uZ]#ǙeIk nڛ 7; K/0޵߿EotWtJ ^$fjGM|əT—IzmzSxbPt02aU$vK=fDXJOOҁIBsԮnɮkH+)5hdW}sI <-!3wE^kj{,E0W_ٔk ~ŋay=]!C)l8t6Rv+Ä6(…V_zҙ}pXGFဉ"Ye#f'J Qĕ RaxOVJt&%KiEɪ[ G~/]ȭ%]' 19/<8-kCx+T_Βn"5}ݍ`hK* ?8azSj-L+%䫣 Y{d=@5trm3)7~4X,3Yh/&0$o4rs:i4H&CRr+#Jb?shA+"WKBiѡℰZDM%֌&eix;- Y51qܐwn4cA"feS?efnU1K/*Q^yBּ[WVl_+i~pnL,lZIPIyxl*0Ҹz_WlMKzQ\./Y `?mCd?-%DHuk 8c)E# INA-LOtp` a *({R.]m|I[ui!^3tLY:{Zb'H:1amN茔]zFtGS`0KI[gL1P1Vȭ*SW9J\yNJE< BjL"h* Trf]F%9eIH9Z)W o s@ yX:X[A}*#w6xx_mpצW:N`E.utD*kQDvUKNa8!h6 `Іy^w1U;VUYBEO i /bQWwœ!ϐ"/kpj-qp=R;Q[rmw3-C3g;i?3AmMml}I@`SVS_ ؚ[hoR)z%g'>QpFrE ُ̈d$P"iIEftJl*bx!j~}aLqlt9hu ͣ[<"vJ ާ`>5w秧h@)͸,w R"8rgkZ計0<6gZ ^}eb-@ŴύanK ׽y D&U⚲fD;zTz>QUm ⏐iqPBBB_Z~ *{M3GRN㫹6и ; w;w vo\_>eUl-s*`Y$qYQx&RH v ʽ~y*/˖敔>͓E\F HC8)c{KM4.>_C k7N)z9ud$/I!yOB+[}FT|` 4z9"Us'Kgq]OIm֊u(X#1vͼXZ6čݽuS o6.4;P-6$Lr0PY*$uLӱ3{!#DRW̾Yd[$:h:XjiS^LYl_H~$ g /++~ ƫ^F!+VZQ3SUjja}.5ʭLVAPaT)~rip>DRӜZ X_ i!fQZsUytpKگ_AMg 04h?u+񣓫{y.=5btyH3ܸTD!%qA-e= =EglD.[_ZJP,< A@4(MsPv}Sʄ!N%/:UZħ鼐&ZfpіS}"2_g2قexSXG7}nTzzY0c<2t]8=uh,QcqV47 >dw0U-cŬiۏ,cN|!|,*]oj@S@^t(|~F!&\cq=2`i+.doτG+]Ophن|G@daa pKrXF4ۊs[gl;,MF ;@qq+T+k[ILae4-jKL'b_L}tRKx*VSi#ڰwFM=rٚy!^ICu@9J۴6dE>G*Q*7ēlAl|ߤʈPsbd4zEڑ|QEn~p<@WRS~SsǷtSU`f08qN4'; ݹhro^ ``ΊsђF\(Gw WV+\;Ȝ᪗x>~=9uV6D*ň`7nҝZP}>G ɕha>)/Gߑu9;ߜ:z"^C6DL"M ;"ڢrOcTi\Ao; YvhKV<:y#~%4Z\ӣV :4# v\I9)e6(rqw-'D5! -ΙDOW>ˌN˯/[\u,-_m)δY(0k}u82%o_GZ+FŚl-=9|#R^ K,iNJ/Q^e5*~+v%?-kaUTbU$[w[b.JWe{d-^uo[>8E$vzɪ>:g3u.66< J)NRi`%*F56D}|rqrVe#9$7Ÿ+`z+26(ߚ~ߊH?W R>[A-w'7.[{PCc>e)W{bu=i~@sX!c̯ N^ Fcٍ qC }-(돥_:macz;CwhR/OB싌 eQ"cʷV`Ӆ.=+,$'{RRXbJ}+V tFٛ>wI QC(63 J[!7aXQeM)^*&5, E{V歊MRnMR4).0F8i`}4ɢ^囯%B6XG_b`0+.(c eOo}-cdΠ{ qo!K4e3U0 Kw[ci;$_fvK,u1*QKuԗX也;e{ئ FIvQKhe&()M^K{1(cD e-Y>YoNqDrΈn'ݢѱqɠE0w1#N_®"+5ߤH{2a @ ݑO9(}CC*UqR b$V8 v>*%_NoVzH-C995.ޏ`!n 8ݷ/Ԇx"(g 3t/ft-W5wqPڊ?evS= h=\{u]/HM [f\2V5#uX_bZX [lU>,s9ԭ,4`DՂM̖O|-W%O IURhRۛ7oZ9 FǾ35m ֭ 9Po8/όBocV3i0d]UH[ImMuFn9F2ꜷOf3vxOG~y%^9fm aL\j|_? +g'gXwG$8ZV8B6AoCd=D|Z5CGP niSJMzS:HB N;耆@>F*p=BeKIRsEF=P0[/Dìݗ_B(ù)O )H,4%*]%q߅eh[̢:ۑHxUۗY*pPj\" 2H r6Pˮ>*md}>8 *m~;-f *DQF;$l{weH$Ă%ɿ.BYYQEa7n<"DoyJuM&e12>k }kM;5Br,s1Z{%l3@h(pE@䝾ֵArs_Id,cG3s n,'"\|a' >9cK~|q'}EBt8K/ mgDdl}uY\ZwޗN^!x,{a$ yᣥhɿn2+?[zkf;Pc#VP2 n|5sI}E#>`7 ^. V~𱻿|3N%u5*7誛q~W?kfpQ!v^O)a79U&-{&Ƭj%4Aܒg wlS<'E(T YMo)&thg~DOɕuҐ͐YxhKFI.]!r\{PAR)ޣPڡ,~tavbB?+Wj)q_%x*~]]#(@a"Ct=;|=?yïlhF7O}avq]5}D|o<7Đ>#YmJQs:"]q^pb?mv`>K){a=/]? @dyREhL|хS򕨚)#/wՅ> zdSts ZXr\݅6n3+׋Wak *z ,OcV,paŀʙ5#L/n^CTr~&D@u OtrӆU Dox_ sb,j,O5jw9/`Bm!@};mUTMͧKCK,gz%m8Qnh`ղ/@.[B|3J<3n? 3$Ӡ/=yLO3ft 'Wn^"d endstream endobj 45 0 obj << /Length1 1509 /Length2 7714 /Length3 0 /Length 8715 /Filter /FlateDecode >> stream xڍTk6Lw !1Cwww  1CwwJwI(R %HtHJK}=}Ykڽ}{ #&%"sq\| bdԂCc1@]p $!2)s;e8 fp@ ?pg;P .XpG/gC|,.;@ 6`s{& zWf!WWGNNs jЀ@!_ T :bh@]5V \<`gCr@cǀ l\\W (췳9 wp4yAa+=*0Y24w?C- ~WnW?4W{.`g Wp e@/K8)+nO$$v;7/z {w5s_UqY?>L?u cH 0q# /.-H6w{eY7+?; 9Vaa"XA]6Gk0Vs{,*wJinkøy_̝ͽDp=%70 =?׉pJAN߃NozY~i/ 8y ׃/_/7Nnc}@ 0,,j[~Y+N=&<Ÿ=&'x\ۋycj{Rۥ€Si ds>obZ8F orM؎)K흯E?w\ay˴K6`z:SS>r λ|/g&JH+_>rN'b1+OcsԜ/<.r~(O6%*XZ&_'rvNY)Ə6 8A<`Y-qץrH[s^)X:Z ?k;'P.iO-OeFIZMݙݳA_Y=7l&WG4R{9' I}u ZԮ7Vyv;تr̦vblcX OBf˟T 1!ٛ;PngcOdsY?5G@'RqH[l8=E=g`SZ3>3ۯ:A l/{ 9~o76ݤgA~ïnv5'I!RpeƴU3'Fط}e.E>HoZcƣ WG^v4c>zu<=-9&U0?:.t!ϝZ &g2IUo%It§ HœXXdљǫy@띵Fxp~ʫ1c.t)rD 'Huıg",V%i0c?ˉ(ŷw|Yb9[XW7*qPMG[ae&ňmD>㕦 <ER9ƛ&q}d"v/ Mݼ;(6:?%QQrTj>u C}[6Uϩ泥 -ȖN~L'zگJqfS{n&[mKʻA)װ򥁙=݈v'TE |7ʀ@6RZꃚ^;A jEʯF p+'Y Bts#RZoCe?,ḯo]ͽf/xs׍|רj-R=!i%W^賲1(; ,+f#DEh#M2!n׆jYTJfL >kQϤCg^3qNa-G|n$8zA:1u ).H`"NMqN\ǵ(+m:g#PƁ;[ȱ{z&J4Fy;1a ɴY jǯ9E,nlSE1@__Olvr,N}.fӭ*bRѮ c>YL {f)geQK_0,o`\F8hO"MWםb\JfJ FpI[Ee֜Ʉ52aS3Zq g{\Ex8!-LrcN(]ڢ#ۓ,x xkJSói_^2+E BOiIHYr2 PDSqJNfkѪ16n*ɘ1y-aRhgq&W!Ә>"k-jcƱC:?4 ;~(f~M.}άG}[NQRon3:YfQ xY'rKJBlА ~-E<1v a\Jg̗=U@PnRҗz3j]{[e*`dH ә~HBՒY DL/Luɞ*0~cbo](?AѨbAlQm5wq u>V5=~/V{,U^ztLywL"B/,Fj9ŕ)^,{dM8]?<Xlj\D1&pR8FNE0WxVqUReJ'旁Z٬3o(u&XѵzW F}yo^ijJ@b3?S7#d6hbgD[ѩ2 rjDKdWw^=HVufq`!.0&:F,gIJ`W~S,&7SڭUcڷ{殕,t*ߐPo.C^OS#56W>d((E+wEcnT|M4Uqm5~r(oC*0L%Reˆ7t8-a{ՑJ}rlch.➌~h`%HD]h%1=NxrHmnY)``Y[ӷi):cK*r)́"U$DϨRz{ Fcطa\MJCe2K*ԦM3W`-QoQ&5,)Aȣ毰VHhkQ]vAs- 45iec[scReYv"Bwa  *Hoj'%l = mWR/}W(4JiEi}+J|f&\47Y>WEϐүXdYPi {؍RTJRFjB;EoIxT?lSk= ] GN24!XVUeU[KRTFjО t! $n*z:{ǭ}g3sH>u; wKO13>V90Gm+h_ %f#1>< !הX `{} ܒB}_`fkV`LMՄ@zN:̬"<5ujFMҟw7U)z#Kxt#` YZ5:<7|o'z՜N&=%G:8B%МdG7 xS:&)nM'Y:RFHh@9qo;6۰ni%x?(dsZ GEͲ>R>wl@e(2Bی$.t˜8!J'Q-D+PcK(!AS]r/f|P?ʍaNH)͎fs36TIw/59<ӥʣIe_fo=TߥSb8-xV s]Q4)贝Oa6>A,b B'C""iD'LcGY,,%XƔ]1٩K%k>ygXc Un5s#e"F o1HU$gE/I՝ l,E ~6H9l|GQ.".VS ˪6ʞjyokdEᬤ@`P؜m"^^~>5;9:سL1jU/y4Kqnn|iC[ki$G{(a,fjǼG+'u\3?}}*V~X. ZO#_ ĆB7dnƈi:I4}s,Ij O^@AADPٳ /"+E}':GNjmng ^5IC̽`)(Ӹrg `^j=?PmZ܊|YI!+ r j7S$I /L^I_I6;*WB[H2U?!Fȸ9 2nKY%2 5*QVsaJP s4'7IOo58fO'yco75@"-PM'Q<'>u_=oGp03d 0.wQ;Dy][ۙ#Z; 6ґb(/nҩGϓvJc, ~LC%ڱbI;W[)tWFj>{-ͬNv#^;i S$DtO3O1H^xRfCeWOD7FdJ'}Hp,l4hVpe#oE\[`Y!(nc۩/ѭݫ^r2$xoMLz:[ ]RKɠ,bݳ8z@}ɋsѸcڬ"o^r? U^! sepx9ibq&^󾗚-gC&uj]F]հ: XMTRcqKT(HINPׇ8;ĸDX2 OIjwj}vL~ߞbB{KKlGD'TM@0`@EzJzضXQ"zta 'd)&zO IҰq*MkFᬱe7 QN^&䶑pp-Sέ& Wy YF0/'Xp>ԩn}fo}ZhUr'xʴLa_e`k$Z5R{h}RUW-\bKb caaE U =tZ ,NIQ٨,nGigjdcuUoKP Sd1rN$%܄uq47bUeʋpN",t]alzO +t Ty;t! Sy=CeńkSE>ܲ K a$hgT=U.`(*۱nӊe>7 kKF()0Ky}fļTg Z-Ouզ<؅|q Z&wcܚUM_GHJ{7ɉ xd-["c-z9=vJ {MXEa3KoQ_TEÐ3=uMܝrJW<"W"XјOJX϶BiSb"3d+"Di-}Ggg-Cstyt4Q8hȍ¿dTi¤j J(xHdqÃD׿`ؿabM„O~&L,~nehxAwpm}HhgX q@{}ݺKLXAȾ/Jq?BJ aC!DD&JJ"oK-Dp7z8zӓ1Lh 1s(f:D+^wc}3ZRe38̢BSv:x|ę'R-'M}z/LJ9ضqfuJ͆,Y { l 9kw6\Ur۸#-Dueug])p '(3چu}en=5}V > stream xڍT]6LH7J 2tݥ0 0 0CtJ( tK7-(<}kֺ\{_{Ϲae,k*!|byMU~>/rmg5!a?nP0ΦF5p_D_Xp(=`6M^E#\`v}^8 ~QQa?P7 hQP!`'>Cr===yH^'AP7 w-3xY0}-`(yvj]?x?# ]po` s4xQ^(nvB"`G`.|_!!n0 s#wcV#pw} 07(ܽ]# 6۰qwaPU8w&(Hu@ x@p6p޵B}`(`P;P?Na6\1HNKIː㔓Cx|  AytG*ܻsd4׀pK q\(B7}Gg +Rrwr';Üb)u7Y/jBm`UEAnw|aH%F?톿  /] x z7CWA6 wwH76P? ][M"Q':.?^!fP?=:T6>|}$Hs}kH㱡,/q~(!fJm|=||Tp[hBh#F9]݄ek7B.yp>QyɌqRHT`/=-aK1C-""@,\*W!;6ޢʂ<Hy=Z)A->"rQ?Jߒz `uCGQSsk䠾4xȁZ]Jfw +%<^+\  r}؋:K*tM) }OQ?`aLKH_7k_ A{r>xUaIBHh9(Π(,"el#OnUv\d"&{b,#&;U =4\SgmFe|iؒ GLǎ3TCfd0۱U* Hj۴N{)aY0ɾUO:v[+ {29aAesf^gorc(N f6*곡CjL|쐗,DuIBþ4REOJY}ֲ#S{FwS[$:Cޖ4Z׋ ""qf1@˾$oj&BwD P<bRY M9L`(&uCh؏7It'jJY1(WڕK[k{\jJ232,~a;z 8͓0b]Ls<rW\d`A/ָ Ulrnղ%b8ư>,|eDQ3}\XZC-z~,TʺA%i~Q&HXԞ93a*pt<#Ozzٳ9S ̀p7I*Qf H7.eR{\/0ڽ㠴^250+p5x{e DrI}^ezG`<)~@}DH,NZ?ԍTwG}hS]7F愆T"Ck˱gLXAB􇔭 Sj!7gS Ƙ|N^ [o-촜BU.8r\0::/?K/m4˧C |wBtQ-J*|$DNwv6~ 7}Sۥ3;~h?]c:e? {NT4u+n匬Sb(PÜxM[d"ӥrN4"?M, Ԝ6Ոm2d{Ґ@ @ۓLR݈)6~o,Z>Tի$tXѯEZq =\)fVlO4M1 Z1iQ )*]D a4!^oVHzؾ mK)TVlՏu!?&yrORR6C0A]1^7Gp֓I]UX ; ƔZdY^پ7<\F@e3v?)%OY[c0~MR-ps9*}'KK*6!  m`'Y zE 3C$08Rո(>g |^7~cU?ŅPܶhfn%P2h¦jwFncܘ-Du7xN%C8=WC!ÃKr2CcФ2XcK]T#EU,PܯSg%TϿl&{֒6*ivd]Q ,u}n(u<{s5ht+\pWڈʧN˻Z ;U7G(=V&4~/]SȎ, Tg} Oٞ/W"7(Z S`lֹ4 &/IGTN[1=ǂLRv-3=Z ]:^A&X?588D^7[("?s"+uOy?V$%QzGƒ/~93z`9FE>ʹyŖt|9X<ԺH!O@*sQ֛ iS=tKBm\nG[" 5'q9Rԕh;0Mp`NېgI#Cơ^rvR#Y&<ȳSk=vҜ8nCϘ!O`Hgf60{nQ:7EZu֖L78. > o`t8gG .Iʂ(De2=qr z"{:CZ$mV c]5Qmkgc[zӉK1(F&357>1#X8ye9hUL.W$#U}:"T_^xuD+\%b鮂Ң_LB7|UDVgѝdHGuV{Uؓ$', eֶ'l1$9|ٙ}Xs6Jb]>*tb@utWeGoN_ާsk tRT=#p\BdX(ZmΩz$= %SoF6f)dX7[훁--QŤd.z6۸Y80qbq;E>}McK[>ЉS\yO1x\jŠ` pʴE:k|k|=jcȝN˺ZJk3m9 wR"\r#wQ#kJ0lcMб@SBF484QGĖAJaI (HXѪjF$H˒2>mWPgT#7t_ԗqdlKI]sbYX鉳fWqX62TKB53|P7λk`=7jߦ*̷=a?:5N!yuR *%|$eY00mTy%9!S2+nQő .u8gUKΈٝKFH,U4{,Z1[&"K߬Ixym|2F7m!"&HL}kJnERZiu1mJ_&"`g!{@2e>K0r2Pug ]D1x3Ӊk,s'v[#ylٕ*)T1X6$@ `-lf~0C/"cNUJ1aÀcv,]>9ŏ*=*=6X3i0&)M_sx&>⭢ł-uŗ>i,H;97`30:t\Jq6ӮLe gя;t˞by;') ?u{idPmAq(Oګ)@pDV{f(-mU,-ĵU L&nQػAmi0(wI4[G~1#-%ur2nշ߬Ek|ېmʱpMT.lf3Z9XN@u2gfB.0 !;Ydnou|UEd Ny]_w$a(lG5l jzHF|]>6'1ƽL-9=sgKx@KSQ%ܼG[U\\e!SZ4sX {i\]ǒO3~>y`2/y]~xXB_,n+])W*kQvch&ڶ5xҘL4G$pRt'nUʪd-gN`Sj QYSotm: 4 &{vySiVӲҐZd|x ޯ.1Ԓ̒ţΟq%]XC !/#$AϿQ %]K䚱SM.GW-)liGR|/k%k3X4~?c~aPl8H}Rڪ!}zRjmP/]eKk.Iscp{NYwMAkC 9'/SjZsA)mjt9L[L ` Sلh\!v=י]R?9ji9]NZ,q0c10QJ61JMymXk n`ѷISr~U2V6kJI0]ٱ-\_LqHKӹ\!ed'L(䬺& L\(amHWy[sݏU_hI o^mW+O|9Խ$,<qOtA0cdngCQz,Xyk:o]oȸ;L譽8 WYCdQȩ~:$#ƃ'+c}Y>~ bsp5\=/5#&_-I,&!tƲSdUބC\ԎUo 1 3-X3рs06 r'4 #>/&!͗Sױ5Yvd4iO8 { 2O\Ɵ;gE;h_#m(\Da:ᜆ2?ZӼ-̴Αd*b"sdOpcdĦ$!,违4ӨAp kћf3fMj FǠy&? L B\ 7zP+=ɑIv@v"s'C8({K1g0%T,ٛ;!;{ =z\bG?38ur"}>OT4?y,HŊ=I0 p^?OHqE=\$ܵfLm+Fd@ԋu5;np"T,w$.? u}횾.F440_{Px丗T1 ކv"xM%J >e=˖Fyӯ!f`>+.put) 6)g4ېw6$EWI"0/p,,$?Ə ˬ b}Z؃Nl5P-|gO7 $q̧`R{g.y).!뽃Sh%@fqʳSg s<6"{joEG 'i-Ľh]I:PkAy3 endstream endobj 49 0 obj << /Length1 2051 /Length2 13533 /Length3 0 /Length 14785 /Filter /FlateDecode >> stream xڍP\-;www .wwNpwBp x'ޫڽ1לkS*1ٛ\YX ,v&6JJu ?r@'g߿,ĝ.o2 c7C{; `ca@ dP`(<@.oy 1r3:L .@۷65{SBX8133:3;Y2A.U3 h2@75&J%/&\\̀N5Yy/c 7Odg0JRL.. c;? m݌A6&on U1řdG?¼YLhG} '[=>\k;{w; s4\5@@YmDe@' ;zZ2@_o{ /l8}o 0L ;@;<,o `ϛۄx6T>H)Mdpr|;1*)kgnط.`'w,Eh~ 'ۃyt?_+rSOGol mn]]v@mT*@u1~Q;  ry͔A._b?dTwqYYXG\oHg37c8NNƞ,o f}F3ǟC `fwys;!q\f?D!^?,q#? ~#oO `6qE1v~k=["߈ 9Z.lsrM?7F3v/Gϙ6 ފ4|Kl/w7owo7_VolzmaK/[ooow*s76ߨ:ڻLU1_[Yf_qp|c:%~s@))UMHc(;ބ,f-S l2mUVІӽhpڎ$͝ /:ذD֟>φ{KS8'D">}>ZC6wQ9(`>I{.WqG|.aш ,7ɞ#qa$ø@ȝ|%G=a⭳Ǽz:s>4awIQb -X?h',.2ok-sV/|֞] "tRSQPC[,2ԝI]]mxmFu_aX 0<]>V߼{&Of==%]Q` Q0 3)arW񶚀uHi29^pNXi4Y$iHbe]ɐȝ[0\#ܪWVSqnòf5O'B'Ps:aMwX2+;:5a8_tG'bd{8waRP,u+(qĞGz-TߗG *5uV|+#M\֯&KәY 6I%?{IQ2OKQoGFg݂ᯉQuYY:ۦy}XcBkLN{q,]>\"GU>SLŪP߇AfQiFz7\{~QN]I2>'O' :O%eH&Oq2#Po95 9XVZw$m9[Vdۊ#8ϥy*1,2s)9{lm.S3#)+버-o#L^薉 (ER?"}̌ D# ʻ*T1}1Pzm Sm,8O"3s͟܊$򚊳9N>> 6NcmJC\3kdLztA.+~)U"GX,ҟtl]EyM"z^^ӬGL7QA-CeǜRvVl0 XqH1Ϗc&aYݞM5|vK׎~[Rv:](P{׌3y$^F k&'}*KgcZ0 SuraO_*CQ"z25>Nsg*ۊ }XZiCgn@z"^AU5L8A/^[ѳ-zAAcbM}0~2$|F1ymPju6dD$YUSх1XMr,5m{j۳BYʊ | ޑjl("\zŒ8Z1wR8Li?mJǖj8UVng(~5Ē1q'NEks QI4 t$ 价&BFSmZ ʖDmv ?=a//K7PhʵY#4:+JO(N Ch1tz3bmK>qxr-/t_4`i\d -_‰X ZT (bj nr*4\r:@4; ,\HL#toovfT8dD,-ܘu(CݡC 0QS)v@m,x!wwއ[#k!vB:NCޭN:e s_\9xW6;ƙ Pd,Vwi]1yKH>3knEL}7,93͑O9UA 19N7SnS#r0F0&Eԩ 范"/%˯֐J]ay_WP9ѣT6 "}׻|W1;(0>\a^:) 9Up.]Fu3ҬiOm0#j_4pUg# ʢddPbՎ>D6>0.(+aKZ1lf1c4DRKF(H-pv . FߟV{mn_߀uR=|uWCfk+_zɺqΪOi~DߌŒ(b_5㨂w$?&B2$ gf'NN =/JO|_oAB؂1e ߨ њc%BoNCq!'l~HTze>F6,iS$N >…*pyƉGÃbOI~U̴0ɑI4cC޾("dH,tp,28`X6H7wZ|?E&Q}M" Yq;PgSXryWC5@ߗ.] SٓsN8iCkF Niq -hάb9dšYU-&\=#W]p[ʣf=zNvAr$/Q*+jk;:S}X٧r.UE[rӽ [&wj4<+0Bݐ0&YIJ7 EGilS]{_EjMPQF3pI_>V!1ۯkEgƾHhP\ [ JGL&:~ `8Tbp k/PPKCR?ivSub7h96S?j_VK FLG 0Cymū(6c9ʨcWdBɎ{y+);ɹPj~8Ьjcal= 2$w LyK-ևZ~껒):"GTInN. a"!Y*M:71*NA(x9LAnPesGk~9J`9,{ݠ ic$ Mu8p  {uo:=uqb!<<ahT׳˺$o+H$+ b8q,&΋0(KN:pĪ8nbI7 * ^Wy^2lm2V%+d|*{5:a;/GZPlPj~JCԸPp~D_ ϻ;IĴ-Ҡ`V`MOBcgYν\jһ$ъ.xo<^/Vŗx)ө-ё(.Ś`Z bACl1d>Wu5.@W*ht*JEt1[CӐ/18M4TZE%3$λ`Tq#/ZA;MAO_]_AsݛO%F(SW26|ћFw؟?}r=y:`FXciI8K0^Et|A }]wSn,h !ibP"2qgf;vx/-m{M%5B4#ZW,ʬbNt%ޫ~~\UAJd9{>_ec "ueVu'w oCw pDc`n/ZsJ\?Ѩ!H&!:K[x,e)_<}pGiM֠ߤdroG$id>̴aG,&=?v <'Wmv=8:\#xM;<צy]d_×8bJǀ&i-=.zq[o "&ݱ̐9e8gN݇A;s@S>:, |9ky9Ul,Go~O tb%kRvf ڮ&ʐAn† ֜:}X%3y~g=BsK' hyi;<iKFF0ŨGll Ȓ'Qxf>~ 0}c'y;&6H00%m#9CMb9ǫ#L$RaANNyLΤ"&3e5B-c|U;/˩JQ՞e>-bt 7t OB ~~I,*VqGUsF! l-(J4.FdTkmbs}qQJf rb{c7B[ɾ b`gv@TGknZtU.5U{Q9bB=xڈ?P0`\q,ސ7ӓhkd=kv?cLMK(\X|gMw2N֚6pƼnR>9|ǫ$2 riHI<*[p LY~O\(ШIG#><sR{0o4s"ї;"nng;IVk7PshdچN.W|'xi8wvi\;$Xm t_5$={ 5VdG`n &nͅ?Ce`M7I<æJ,UhH=) Ҡz2(dmܾz*.?ECxMO[~M:BR9ΎG֮vnptMBaK%92#ϝH[Ykqx?@jGEZ0rMXug63 @@ p[ubn2̗k+߈5M13."I~R Ϟۃ?(kڃBGKl<BV!I_qڛ7nq<̾LqG^׸hಙC*b36`"L2C+VD2׃E4y}&rb!W89e McrNU%f| rWtdΉVmS=]E584iJd\dޱ|rwmc!KXJDnDBQ aب,SIJ a~9FL }{䇾OFⓟ,\JhR S:1 !UC1;HwBt3AΪwNjE"=FVq dW!}cH*e f6|*~~a3'"R`>c\(ui "GɘQ̣Kk+Mi?c"`~qah3 MK^j~H. =l_wG1jm_?u\;_zD!$LqKQ=ُ%H@/#-#"b,3yC©owN+&V/O66?33gf0,kP oE;o<zC R!̝<+tnlL0¿eG*kEsNVBE{VXcK y=UWJi_lf/'g\y1(ĂP[d ζW|0]{E2U3C DEřݏp<C^DbC|(M$ Z kz/ؐR/_|v^QEГ8*Q tʵU!vF؜| 9)$10:Œ*M'$ {*Oj%gstxjKmZ0p<;!Տ݁j̋>R'LJ3~&Ϊk-YԲ #[D${1p׏m?GS TJ渣*,PDe3_~x M1+gL:P~wqOsD32E2=:iEՠo^757D"$Փ"z]ϗ}$uR/2QKs>v s!}p-B9;?3MfVme$~99(录6z_V@P(6ƟuʇIIcD<漮eSa"s?v[ eA[vJ9ŔΦ>[B)=}b.4Ɨk!T =VcALu5+v{E!I} 'V#)n(1 ABMdpPC0ZebotVnkOclT⌇lGX+R& LPфP#Ob,tdY뼫1qyz0/Mon1/x ӗ78߿@BkM< `SF}P1لr6$ #?~$oz={en݅Ioȯ'5ΣZ%Xd;񜏝uUdJ * I 2~`ߌX3D!C{Uk}& {&2C:OZQy_W){-T +5<aN>((ss3X 3ϠWG78먬'EC?od!|zfR}FdR-(Q"9V-%V3mk:z=]A;5((1@>L{T쮶׼X;aIq{bǡ׹FkY]/h#A , 6NVcm =dDQYWɧs$L4CN_I[վ2C_X/PcNL%GڮE"C1N 6 & h[|'NKmQwĠG4uW?4so!fa'W}q7A"yX,?|g$iJp8st)c>3߇z%qDJ:{[.FY!:762\/ZC3Pu@-3a90ꢡ`r[Y;]'q%%8@ ʳ6xRou<%,@GvCyxYQ~G&=S--=k ,[b@mvY n8460`r]&^:﨏t^v}h:cFKU qyv5L4#z7*tXᖪ&Ӈyo 鎜Յ14H%}3Q pI; ~V0T|naNb's_ ;ggU;,OƥϽ/KZU$:^i 8iW)y\L4MubxS#kqj[nLO$#f*xnƨ(Z*uRTv*ciPz=`(eBz~Ju)Tkf`*>϶/E*14ʶ"hޫq B#;0bvLE[\*R!`S*̨+^d%H6ȏ~6َ5ʈʻu^%JNqkK?X(ѯpP9Bt$J %A5&BOJ7ga wЇ a3E.O-N:3"}r :YLBq.p #CdO kͯpת.>׃Zf&\CBH!19n)̨ȻjWCD enЕuoX_EUcT#>cx"84׹*'Gr j"xl*] Z 9ʯ`j5y|C+UY AL',D˘ Bb`?uQ [|. GRe ,~u;I:CN; %[K/HQa 8)4fhdTm|y`(zתI\ܞ5yӈ):з?%"WqV2{@hC{`M7u64|4M}պ Q1mں ާ`> c3]OA#-JGO+KO+kO'ߞ(lb8t֣xD_o;ٶA!KdOgS=Ö2UT/n{cs ΫWU\ʱ=oN@6tN )>CW5嫉|x_x"푆wBx"DsTOcuj}e' 9भ_wԑl 8A20rE;iw{nMݩ'7~ayAPysKɼ$3p d߻H^.l*΋HkA4fb1{668,fr} 6} 1טҳM6QUrVuLA#U|I+*75E=Q ý5j*+9CnoޮT&`4B1#Q6'ry7t$ov}no{솎 R 58ˈC ?咫)1˝?ː#DDOzm/89RziB *FWoۓY6? }AmW A~,l"6I"Iɶf„3ڏXYOK>2э$noz\IY3(J(Gxnm(o9-}Lm%Y&f5LNNݖ/FJySxt +^<.$V Lk[Bw&>0?Ĥ$-KZˌ6vW^57($f`]ZV.>Ѽ:t?= *eso 4/D|gs˓'lpɴ  3~P |_itKtSD~>aRfnHH},9)P&$RV>;*d{mGnG0:aǏ0@%͕m3yR tܬ*񃄝+Y[\"91^;5,. > -rѶAuQ!ŕP{3 opٴg}GQC?6?T9EfM%,lA4^L6H |3Vߞ"s;]W& 5@8 ~ żX> ɧ3{awq ^b@/oPJA#B0h= eb$fV*gZ֎ʘ's[ 묂L{'w'}.Yi|QnЂ^{hCO ӯ +Qpzp𪭦P-C/D}DElrAv{'._O2vb. +0em G~V'HP.y)[AYJB$plOʔu9}"Qd3M , zCSxyDr!Ndh߿n=X{gV(B|Q—b>-~ a&G^ϋ֐y(fJ ғٸ9ՂYA e.&j*_QRqN> endobj 10 0 obj << /Type /ObjStm /N 37 /First 274 /Length 1948 /Filter /FlateDecode >> stream xY[s۶~ׯct"w`&ˉ4ڎSȒ#ҹ[H*J:=OgbB `b "eLF1IpLy˄ey&3119kT7LH,0 J+`2@R)hA1!i(dFy4HC:0!$0ŴN11`eF1cB`9BN 'g6 (~<~<_ Əb糺Sp~1)*-e>f,<肼`H>S<41cEa$YԐl3t06pd$|rR>3~Z|RWAB>60! x>6@ك뮗fb-iF!*]k,ףҘe^gʡlZ \:p^\AF:viP a~[D''Ty( LȌv5Ĩ9@kw[b.w墪oWyo**1.Oge9WTk1D6. @ɴs9UP$>HN9^jژuͲRN=I5%2X5R;i\˼V$ڑM#a%,K( kM;µAfkҊFIygP#k}(FnE/vb*2P.wPJN$/5$:Q(*jltSǖ8aޅ@VG^ed : y!'c9IT C輄Pou#BXِޭ&= hK)D|w?.@m 5k4 ١/px@KRCcܒ{RFN8"tL~kA[ܬ"2⚩R\GDC\F-dJ6qYfW|pZHVLXQI՞+nEvŕTL/| eC璹-c' )AB$% C1߬nhh(բę`4%GkĠdKt{$I%UVӬMVdqm[fQ[DIQM]=_#P:7|ՏBbb_WLIyHLECGjBgJ=/t=N? |Qr7,٭.nϐ{a6Prӑ[?1)K^^[>s>/xEQӜ'9.!]`> /DuDlzhշ`?z n:qO混yOɳ_x|b5p8(ڰ}|Ɵ#C~O9 O,*yX+5rM1CJiLYXf}L:Q(XKidXvO%r+^e2*>BaU~4n?O3(v%tO|CeB >3߈>b3bR>.E!g| j'<˓ *oШ:m'-N0턬J'%5Smvv6:4SХw5o 2Kьکz6>#\[`!pB%DuWiŧWkWзZCT|tn7pWExSwBra}3CbUs1ˮrr,/E{ﶞjWMYb[W{6fwݽmo~)HUnl$z]MtZх=TΗe##KI7Rޭ~4$q?"`E endstream endobj 53 0 obj << /Type /XRef /Index [0 54] /Size 54 /W [1 3 1] /Root 51 0 R /Info 52 0 R /ID [<4FAB486F52DC5D4A651C8F1240E65F57> <4FAB486F52DC5D4A651C8F1240E65F57>] /Length 159 /Filter /FlateDecode >> stream x9q-c*IȑD p P%TzG>T#H XT^&"#<Ŷ"'D0-'җm%Q$;(UQhh˭=fȪCܯV]⻶ӪOV1%w54 endstream endobj startxref 97518 %%EOF mcmc/inst/doc/morph.Rnw0000644000175100001440000006124413074514644014565 0ustar hornikusers\documentclass{article} \usepackage{natbib} \usepackage{graphics} \usepackage{amsmath,amssymb} \usepackage{indentfirst} \usepackage[utf8]{inputenc} \usepackage[tableposition=top]{caption} \usepackage{url} \DeclareMathOperator{\var}{var} \DeclareMathOperator{\cov}{cov} \DeclareMathOperator{\E}{E} \newcommand{\inner}[1]{\langle #1 \rangle} % \VignetteIndexEntry{MCMC Morph Example} \begin{document} <>= options(keep.source = TRUE, width = 60) foo <- packageDescription("mcmc") @ \title{Morphometric MCMC (mcmc Package Ver.~\Sexpr{foo$Version})} % $ (Just to make emacs syntax highlighting work properly) \author{Leif T. Johnson \and Charles J. Geyer} \maketitle \section{Overview} This is an example how to use morphometric Markov chains as implemented in the \verb@mcmc@ package in R. Let $X$ be an $\mathbb{R}^k$ valued random variable with probability density function, $f_X$. Let $g$ be a diffeomorphism, and $Y=g(X)$. Then the probability density function of $Y$, $f_Y$ is given by \begin{equation}\label{eq:def-fy} f_Y(y) = f_X\bigl(g^{-1}(y)\bigr) \det\bigl( \nabla g^{-1}(y) \bigr). \end{equation} Since $g$ is a diffeomorphism, we can draw inference about $X$ from information about $Y$ (and vice versa). It is not unusual for $f_X$ to either be known only up to a normalizing constant, or to be analytically intractable in other ways --- such as being high dimensional. A common solution to this problem is to use Markov chain Monte Carlo (MCMC) methods to learn about $f_X$. When using MCMC, a primary concern of the practitioner should be the question ``Does the Markov chain converge fast enough to be useful?'' One very useful convergence rate is called \emph{geometrically ergodic} \citep[Chapter~1]{johnson-thesis}. The \texttt{mcmc} package implements the Metropolis random-walk algorithm for arbitrary log unnormalized probability densities. But the Metropolis random-walk algorithm does not always perform well. As is demonstrated in \citet{johnson-geyer}, for $f_X$ and $f_Y$ related by diffeomorphism as in \eqref{eq:def-fy}, a Metropolis random-walk for $f_Y$ can be geometrically ergodic even though a Metropolis random-walk for $f_X$ is not. Since the transformation is one-to-one, inference about $f_X$ can be drawn from the Markov chain for $f_Y$. The \texttt{morph.metrop} and \texttt{morph} functions in the \texttt{mcmc} package provide this functionality, and this vignette gives a demonstration on how to use them. \section{T Distribution} \label{sec:toy} We start with a univariate example, which is a Student $t$ distribution with three degrees of freedom. Of course, one doesn't need MCMC to simulate this distribution (the R function \texttt{rt} does that), so this is just a toy problem. But it does illustrate some aspects of using variable transformation. A necessary condition for geometric ergodicity of a random-walk Metropolis algorithm is that the target density $\pi$ have a moment generating function \citep{jarner-tweedie}. For a univariate target density, which we have in this section, a sufficient condition for geometric ergodicity of a random-walk Metropolis algorithm is that the target density $\pi$ be exponentially light \citet{mengersen-tweedie}. Thus if we do not use variable transformation, the Markov chain simulated by the \texttt{metrop} function will not be geometrically ergodic. \citet[Example 4.2]{johnson-geyer} show that a $t$ distribution is sub-exponentially light. Hence using the transformations described in their Corollaries~1 and~2 will induce a target density $\pi_\gamma$ for which a Metropolis random-walk will be geometrically ergodic. using the transformation described as $h_2$ in \citet[Corollary~2]{johnson-geyer} will induce a target density for which a Metropolis random-walk will be geometrically ergodic. Passing a positive value for \texttt{b} to \texttt{morph} function will create the aforementioned transformation, $h_2$. It's as simple as <<>>= library(mcmc) h2 <- morph(b=1) @ We can now see the induced density. Note that \texttt{morph} works for log unnormalized densities, so we need exponentiate the induced density to plot it on the usual scale. <<>>= lud <- function(x) dt(x, df=3, log=TRUE) lud.induced <- h2$lud(lud) @ We can plot the two densities, <>= curve(exp(Vectorize(lud.induced)(x)), from = -3, to = 3, lty = 2, xlab = "t", ylab = "density") curve(exp(lud(x)), add = TRUE) legend("topright", c("t density", "induced density"), lty=1:2) @ The \texttt{Vectorize} in this example is necessary because the function \texttt{lud.induced} is not vectorized. Instead, it treats any vector passed as a single input, which is rescaled (using the specified diffeomorphism) and passed to \texttt{lud}. Compare the behavior of \texttt{lud} and \texttt{lud.induced} in the following example. <<>>= lud(1:4) lud(1) foo <- try(lud.induced(1:4)) class(foo) cat(foo, "\n") lud.induced(1) @ Because the function \texttt{dt} is vectorized, the function \texttt{lud} is also vectorized, mapping vectors to vectors, whereas the function \texttt{lud.induced} is not vectorized, mapping vectors to scalars. Before we start using random numbers, we set the seed of the random number generator so this document always produces the same results. <>= set.seed(42) @ To change the results, change the seed or delete the \texttt{set.seed} statement. Running a Markov chain for the induced density is done with \texttt{morph.metrop}. <<>>= out <- morph.metrop(lud, 0, blen=100, nbatch=100, morph=morph(b=1)) @ The content of \texttt{out\$batch} is on the scale of used by \texttt{lud}. Once the transformation has been set, no adjustment is needed (unless you want to change transformations). We start by adjusting the scale. <<>>= # adjust scale to find a roughly 20% acceptance rate out$accept @ An acceptance rate of \Sexpr{round(100 * out$accept, 1)}\% %$ to fix emacs highlighting is probably too high. By increasing the scale of the proposal distribution we can bring it down towards 20\%. <<>>= out <- morph.metrop(out, scale=4) out$accept @ We now use this Markov chain to estimate the expectation of the target distribution. But first we need to check whether our batch length is good. The following code <>= acf(out$batch) @ makes the autocorrelation plot (Figure~\ref{fig:fig0}). \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Autocorrelation plot for the sequence of batch means.} \label{fig:fig0} \end{figure} It looks like there is no significant autocorrelation among the batches so the following produces a valid confidence interval for the true unknown mean of the target distribution (since this is a toy problem we actually know the true ``unknown'' mean is zero, but we pretend we don't know that for the purposes of the toy problem) <<>>= t.test(out$batch) @ If we want a point estimate and a Monte Carlo standard error, those are <<>>= colMeans(out$batch) apply(out$batch, 2, sd) / sqrt(out$nbatch) @ If a shorter confidence interval is desired, the Markov chain can be run longer (increase either the number of batches or the batch length, or both). Note that when calculating our estimate and the Monte Carlo standard error we are not concerned with what was happening on the transformed scale. The \texttt{morph.metrop} function seamlessly does this for us. \subsection{Comparison of Morphed and Unmorphed} To show the utility of the transformation, we will study the behavior of the Markov chain with and without the transformation for the same problem as in the preceding section. We will consider two different estimation methods. \begin{enumerate} \item \label{enum:rw} Estimate the mean of the target distribution using a random-walk Metropolis algorithm implemented by the \texttt{metrop} function. \citet{jarner-roberts} demonstrate that a central limit theorem does not hold for these estimates. \item \label{enum:rw-induced} Estimate the mean of the target distribution using a random-walk Metropolis algorithm implemented by the \texttt{morph.metrop} function with argument \texttt{morph = morph(b=1)}. \citet{johnson-geyer} demonstrate that a central limit theorem does hold for these estimates. \end{enumerate} For the former, we need to adjust the scale. <>= out.unmorph <- metrop(lud, 0, blen=1000, nbatch=1) out.unmorph$accept out.unmorph <- metrop(out.unmorph, scale=4) out.unmorph$accept out.unmorph <- metrop(out.unmorph, scale=6) out.unmorph$accept @ A scale of 6 appears to be about right. Now we do a long run for this sampler. Because this run takes longer than CRAN vingettes are supposed to take, we save the results to a file and load the results from this file if it already exists. <>= lout <- suppressWarnings(try(load("morph1.rda"), silent = TRUE)) if (inherits(lout, "try-error")) { out.unmorph <- metrop(out.unmorph, blen = 1e5, nbatch = 1e3) save(out.unmorph, file = "morph1.rda") } else { .Random.seed <- out.unmorph$final.seed } out.unmorph$accept @ Let's look at the distribution of batch means. The following code <>= foo <- as.vector(out.unmorph$batch) qqnorm(foo) qqline(foo) @ makes a Q-Q plot of the batch means (Figure~\ref{fig:fig4}). \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Q-Q plot of batch means (batch length \Sexpr{out.unmorph$blen}) for the unmorphed chain.} \label{fig:fig4} \end{figure} We see bad behavior of the unmorphed chain. These batch means (or at least some batch means for sufficiently long batch length) should look normally distributed, and these don't. Not even close. We do a formal test just to check our interpretation of the plot <>= shapiro.test(foo) @ Now for comparison, we check the morphed chain. <>= lout <- suppressWarnings(try(load("morph2.rda"), silent = TRUE)) if (inherits(lout, "try-error")) { out.morph <- morph.metrop(out, blen = 1e5, nbatch = 1e3) save(out.morph, file = "morph2.rda") } else { .Random.seed <- out.morph$final.seed } out.morph$accept @ The following code <>= foo <- as.vector(out.morph$batch) qqnorm(foo) qqline(foo) @ makes a Q-Q plot of the batch means (Figure~\ref{fig:fig5}). \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Q-Q plot of batch means (batch length \Sexpr{out.unmorph$blen}) for the morphed chain.} \label{fig:fig5} \end{figure} We see good behavior of the morphed chain. These batch means do look normally distributed. We do a formal test just to check our interpretation of the plot <>= shapiro.test(foo) @ \section{Binomial Distribution with a Conjugate Prior} We demonstrate a morphometric Markov chain using the \texttt{UCBAdmisions} data set included in \texttt{R}, (use \texttt{help(UCBAdmissions)} to see details of this data set). We will model the probability of a student being admitted or rejected, using the sex of the student and the department that the student applied to as predictor variables. For our prior, we naively assume that 30\% of all students are admitted, independent of sex or department. As this is a naive prior, we will only add 5 students to each gender-department combination. This will not give the prior much weight, most of the information in the posterior distribution will be from the data. If we have $L$ observations from a multinomial distribution, then using a multinomial logit-link, with model matrices $M^1,\dots,M^L$, regression parameter $\beta$, observed counts $Y^1,\dots,Y^N$ with observed sample sizes $N^1,\dots,N^L$ and prior probabilities $\xi^1, \dots, \xi^L$ and prior ``sample sizes'' $\nu^1,\dots,\nu^L$ then the posterior distribution of $\beta$ is given by \citep[Sec. 5.1.2]{johnson-thesis} \begin{equation}\label{eq:mult-post-conj-complicated} \pi(\beta|y,n,\xi,\nu) \propto \exp\biggl\{ \sum_{l=1}^L \inner{y^l + \xi^l \nu^l, M^l \beta} - (n^l + \nu^l) \log\bigl( \sum_j e^{M_{j\cdot} \beta} \bigr) \biggr\} \end{equation} where $\inner{a, b}$ denotes the usual inner product between vectors $a$ and $b$. For our application, we can simplify this in two ways. First, we use the posterior counts instead of the sum of the prior and data counts, i.e. use $y^{*l} = y^l + \xi^l \nu^l$ and $n^{*l} = n^l + \nu^l$. Second, to avoid having a direction of recession in $\pi(\beta|\cdot)$, we need to fix the elements of $\beta$ that correspond with one of the response categories. Since we are going to fitting a binomial response, if we set these elements of $\beta$ to be $0$, we may then replace the sequence of model matrices with a single model matrix; $M$ instead of $M^1,\dots,M^L$. The $l$-th row of $M$ will correspond to $M^l$. Label the two response categories $A$ and $B$. Without loss of generality, we will fix the elements of $\beta$ corresponding to category $B$ to 0. Let $x_1,\dots,x_L$ represent the posterior counts of category $A$, and $\beta^*$ represent the corresponding elements of $\beta$ --- these are the elements of $\beta$ we did not fix as 0. The meaning of $n^{*1},\dots,n^{*L}$ is unchanged. Then our simplified unnormalized posterior density is \begin{equation}\label{eq:simplified-posterior} \pi(\beta|x,n^*) \propto \exp\biggl\{ \inner{x, M \beta^*} - \sum_{l=1}^L n^{*l} \log\bigl(1 + e^{(M \beta^*)_l}\bigr) \biggr\}. \end{equation} This can be computed with a very simple \texttt{R} function, we implement it in log form. <>= lud.binom <- function(beta, M, x, n) { MB <- M %*% beta sum(x * MB) - sum(n * log(1 + exp(MB))) } @ Now that we have a function to calculate a log-unnormalized posterior density, we can run the Markov chain. To that, we need the model matrix. First we convert the \texttt{UCAdmissions} data to a \texttt{data.frame}. <>= dat <- as.data.frame(UCBAdmissions) dat.split <- split(dat, dat$Admit) dat.split <- lapply(dat.split, function(d) { val <- as.character(d$Admit[1]) d["Admit"] <- NULL names(d)[names(d) == "Freq"] <- val d }) dat <- merge(dat.split[[1]], dat.split[[2]]) @ Next we build the model matrix. Our model specification allows for an interaction between gender and department, even though our prior assumes that they are independent. <>= formula <- cbind(Admitted, Rejected) ~ (Gender + Dept)^2 mf <- model.frame(formula, dat) M <- model.matrix(formula, mf) @ As stated above, we will take $\nu = 5$ and $\xi=0.30$. That is, we will add 5 students to each gender-department combination, where each combination has a 30\% acceptance rate. <<>>= xi <- 0.30 nu <- 5 @ <>= lud.berkeley <- function(B) lud.binom(B, M, dat$Admitted + xi * nu, dat$Admitted + dat$Rejected + nu) @ This function is suitable for passing to \texttt{metrop} or \texttt{morph.metrop}. We know that using \texttt{morph.metrop} with \texttt{morph=morph(p=3)} will run a geometrically ergodic Markov chain \citep{johnson-geyer}. <<>>= berkeley.out <- morph.metrop(lud.berkeley, rep(0, ncol(M)), blen=1000, nbatch=1, scale=0.1, morph=morph(p=3)) berkeley.out$accept berkeley.out <- morph.metrop(berkeley.out, scale=0.05) berkeley.out$accept berkeley.out <- morph.metrop(berkeley.out, scale=0.02) berkeley.out$accept berkeley.out <- morph.metrop(berkeley.out, blen=10000) berkeley.out$accept @ <<>>= berkeley.out <- morph.metrop(berkeley.out, blen=1, nbatch=100000) @ Estimate the posterior mean acceptance probabilities for each gender-department combination. <<>>= beta <- setNames(colMeans(berkeley.out$batch), colnames(M)) MB <- M %*% beta dat$p <- dat$Admitted / (dat$Admitted + dat$Rejected) dat$p.post <- exp(MB) / (1 + exp(MB)) dat @ The small difference between the data and posterior probabilities is expected, our prior was given very little weight. Using \texttt{morph.metrop} with the setting \texttt{morph=morph(p=3)} in this setting is an efficient way of sampling from the posterior distribution. We can also compare the posterior distribution of admittance probability for each gender-department combination. Table~\ref{tab:post-quant} gives the 5\% and 95\% quantiles for the posterior distribution of the admittance probabilities for each gender-department combination. Figure~\ref{fig:posterior-probs} gives the same quantiles, plus the mean posterior-probability for each gender-department combination. From these we can see that for each department, there is considerable overlap of the distributions of probabilities for males and females. <>= posterior.probabilities <- t(apply(berkeley.out$batch, 1, function(r) { eMB <- exp(M %*% r) eMB / (1 + eMB) })) quants <- apply(posterior.probabilities, 2, quantile, prob=c(0.05, 0.95)) quants.str <- matrix(apply(quants, 2, function(r) sprintf("[%0.2f, %0.2f]", r[1], r[2])), nrow=2, byrow=TRUE) @ \begin{table}[ht] \caption{5\% and 95\% posterior quantiles for admittance probability for each gender-department combination} \begin{center} \begin{tabular}{|l|c|c|c|c|c|c|} \hline Gender & Dept. A & Dept. B & Dept. C & Dept. D & Dept. E. & Dept. F \\ \hline Female & \Sexpr{paste(quants.str[1, 1:6], collapse=" & ")} \\ Male & \Sexpr{paste(quants.str[2, 1:6], collapse=" & ")} \\ \hline \end{tabular} \label{tab:post-quant} \end{center} \end{table} \begin{figure} \begin{center} <>= x <- (0:5) * 2 + 1 plot(x[c(1, 6)] + 0.5 * c(-1, 1), 0:1, xlab="Department", ylab="Probability", xaxt="n", type="n") axis(1, x, LETTERS[1:6]) for(i in 1:6) { lines((x[i]-0.25)*c(1, 1), quants[1:2, i], lwd=2, col="gray") lines((x[i] + 0.25) * c(1, 1), quants[1:2, i + 6], lwd=2, col="gray") points(x[i] + 0.25 * c(-1, 1), dat$p.post[i + c(0, 6)], pch=c("F", "M")) } @ \end{center} \caption{Posterior 5\% and 95\% quantiles and mean, by department and gender.} \label{fig:posterior-probs} \end{figure} \section{Cauchy Location-Scale Model} We are going to do a Cauchy location-scale family objective Bayesianly. \subsection{Data} First we generate some data. <>= n <- 15 mu0 <- 50 sigma0 <- 10 x <- rcauchy(n, mu0, sigma0) round(sort(x), 1) @ \texttt{mu0} and \texttt{sigma0} are the true unknown parameter values (since the data are simulated we actually know these ``unknown'' parameter values, but we must pretend we don't know them and estimate them). \subsection{Prior} The standard objective prior distribution for this situation (insofar as any prior distribution can be said to be an objective standard) is the improper prior $$ g(\mu, \sigma) = \frac{1}{\sigma} $$ which is right Haar measure for the location-scale group, and is the standard prior that comes from the group invariance argument \citep[Section~3.2]{kass-wasserman}. \subsection{Log Unnormalized Posterior} We need a function whose argument is a two-vector <>= lup <- function(theta) { if (any(is.na(theta))) stop("NA or NaN in input to log unnormalized density function") mu <- theta[1] sigma <- theta[2] if (sigma <= 0) return(-Inf) if (any(! is.finite(theta))) return(-Inf) result <- sum(dcauchy(x, mu, sigma, log = TRUE)) - log(sigma) if (! is.finite(result)) { warning(paste("Oops! mu = ", mu, "and sigma =", sigma)) } return(result) } @ \subsection{Laplace Approximation} To have some idea what we are doing, we first maximize the log unnormalized posterior. To do it helps to have good starting points for the optimization. Robust estimators of location and scale are <>= mu.twiddle <- median(x) sigma.twiddle <- IQR(x) c(mu.twiddle, sigma.twiddle) @ The posterior mode is <>= oout <- optim(c(mu.twiddle, sigma.twiddle), lup, control = list(fnscale = -1), hessian = TRUE) stopifnot(oout$convergence == 0) mu.hat <- oout$par[1] sigma.hat <- oout$par[2] c(mu.hat, sigma.hat) @ and the hessian evaluated at the posterior mode (calculated by \texttt{optim} using finite differences) is <>= oout$hessian @ The hessian is nearly diagonal and one can check that theoretically is exactly diagonal. Thus approximate (asymptotic) posterior standard deviations are <>= sqrt(- 1 / diag(oout$hessian)) @ \subsection{Theory} To use the theory in \citet{johnson-geyer} we must verify that the target distribution (the unnormalized posterior) is everywhere positive, and it isn't (it is zero for $\sigma \le 0$). We tried making $\log(\sigma)$ the parameter but this didn't work either because $\log(\sigma)$ goes to infinity so slowly that this stretches out the tails so much that the transformations introduced by \citet{johnson-geyer} can't pull them back in again. We do know \citep[Example~3.4]{johnson-geyer} that if we fix $\sigma$ this is a sub-exponentially light target distribution. Letting $\sigma$ vary can only make this worse. Thus, if we don't do anything and just use the \texttt{metrop} function, then performance will be very bad. So we are going to use the transformations and the \texttt{morph.metrop} function, even though the theory that motivates them does not hold. \subsection{Morph} We want to center the transformation at the posterior mode, and use a radius $r$ that doesn't transform until several approximate standard deviations <>= moo <- morph(b = 0.5, r = 7, center = c(mu.hat, sigma.hat)) mout <- morph.metrop(lup, c(mu.hat, sigma.hat), 1e4, scale = 3, morph = moo) mout$accept mout <- morph.metrop(mout) @ Good enough. An attempt to increase the scale led to error when the transformation functions overflowed. Can't take steps too big with this stuff. The following code <>= acf(mout$batch) @ makes an autocorrelation plot (Figure~\ref{fig:cfig1}). \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Autocorrelation plot. First component is $\mu$, second is $\sigma$.} \label{fig:cfig1} \end{figure} It looks like lag 10 to 15 is enough to get near independence. Now we want to make marginal density plots. If we just feed our MCMC output to the R function \texttt{density} it undersmooths because it expects independent and identically distributed data rather than autocorrelated data. Thus we feed it subsampled, nearly uncorrelated data to select the bandwidth and then use that bandwidth on the full data. Here's how that works. The following code <>= mu <- mout$batch[ , 1] i <- seq(1, mout$nbatch, by = 15) out.sub <- density(mu[i]) out <- density(mu, bw = out.sub$bw) plot(out) @ makes the density plot (Figure~\ref{fig:cfig2}). \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Density plot for the marginal posterior for $\mu$.} \label{fig:cfig2} \end{figure} And a similar plot for $\sigma$ (Figure~\ref{fig:cfig3}) \begin{figure} \begin{center} <>= sigma <- mout$batch[ , 2] out.sub <- density(sigma[i]) out <- density(sigma, bw = out.sub$bw) plot(out) @ \end{center} \caption{Density plot for the marginal posterior for $\sigma$.} \label{fig:cfig3} \end{figure} \begin{thebibliography}{} \bibitem[Jarner and Roberts(2007)]{jarner-roberts} Jarner, S.F., and G.O. Roberts (2007). \newblock Convergence of heavy-tailed Monte Carlo Markov chain algorithms. \newblock \emph{Scandinavian Journal of Statistics}, 34, 781--815. \bibitem[Jarner and Tweedie(2003)]{jarner-tweedie} Jarner, S.~F., and Tweedie, R.~L. (2003). \newblock Necessary conditions for geometric and polynomial ergodicity of random-walk-type Markov chains. \newblock \emph{Bernoulli}, 9, 559--578. \bibitem[Johnson(2011)]{johnson-thesis} Johnson, L.~T. (2011). \newblock Geometric Ergodicity of a Random-Walk Metropolis Algorithm via Variable Transformation and Computer Aided Reasoning in Statistics. \newblock Ph.~D. thesis. University of Minesota. \url{http://purl.umn.edu/113140} \bibitem[Johnson and Geyer(submitted)]{johnson-geyer} Johnson, L.~T., and C.~J. Geyer (submitted). \newblock Variable Transformation to Obtain Geometric Ergodicity in the Random-walk Metropolis Algorithm. \newblock Revised and resubmitted to \emph{Annals of Statistics}. \bibitem[Kass and Wasserman(1996)]{kass-wasserman} Kass, R.~E., and Wasserman, L. (1996). \newblock Formal rules for selecting prior distributions: A review and annotated bibliography. \newblock \emph{Journal of the American Statistical Association}, 435, 1343--1370. \bibitem[Mengersen and Tweedie(1996)]{mengersen-tweedie} Mengersen, K.L., ad R. L. Tweedie (1996). \newblock Rates of convergence of the Hastings and Metropolis algorithms. \newblock \emph{Annals of Statistics}, 24, 101--121. \end{thebibliography} \end{document} mcmc/tests/0000755000175100001440000000000013074514645012362 5ustar hornikusersmcmc/tests/logitnegidx.Rout.save0000644000175100001440000001001013045741600016466 0ustar hornikusers R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > # test outfun (negative index vector) > > epsilon <- 1e-15 > > library(mcmc) > > RNGkind("Marsaglia-Multicarry") > set.seed(42) > > n <- 100 > rho <- 0.5 > beta0 <- 0.25 > beta1 <- 1 > beta2 <- 0.5 > > x1 <- rnorm(n) > x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) > eta <- beta0 + beta1 * x1 + beta2 * x2 > p <- 1 / (1 + exp(- eta)) > y <- as.numeric(runif(n) < p) > > out <- glm(y ~ x1 + x2, family = binomial()) > > logl <- function(beta) { + if (length(beta) != 3) stop("length(beta) != 3") + beta0 <- beta[1] + beta1 <- beta[2] + beta2 <- beta[3] + eta <- beta0 + beta1 * x1 + beta2 * x2 + p <- exp(eta) / (1 + exp(eta)) + return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) + } > > out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) > out.metro$accept [1] 0.982 > > out.metro <- metrop(out.metro, scale = 0.1) > out.metro$accept [1] 0.795 > > out.metro <- metrop(out.metro, scale = 0.5) > out.metro$accept [1] 0.264 > > apply(out.metro$batch, 2, mean) [1] 0.06080257 1.42304941 0.52634149 > > out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, + scale = 0.5, debug = TRUE, outfun = - 2) > > niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac > niter == nrow(out.metro$current) [1] TRUE > niter == nrow(out.metro$proposal) [1] TRUE > all(out.metro$current[1, ] == out.metro$initial) [1] TRUE > all(out.metro$current[niter, ] == out.metro$final) | + all(out.metro$proposal[niter, ] == out.metro$final) [1] TRUE > > .Random.seed <- out.metro$initial.seed > d <- ncol(out.metro$proposal) > n <- nrow(out.metro$proposal) > my.proposal <- matrix(NA, n, d) > my.u <- double(n) > ska <- out.metro$scale > for (i in 1:n) { + my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) + if (is.na(out.metro$u[i])) { + my.u[i] <- NA + } else { + my.u[i] <- runif(1) + } + } > max(abs(out.metro$proposal - my.proposal)) < epsilon [1] TRUE > all(is.na(out.metro$u) == is.na(my.u)) [1] TRUE > all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) [1] TRUE > > my.curr.log.green <- apply(out.metro$current, 1, logl) > my.prop.log.green <- apply(out.metro$proposal, 1, logl) > all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) [1] TRUE > foo <- my.prop.log.green - my.curr.log.green > max(abs(foo - out.metro$log.green)) < epsilon [1] TRUE > > my.accept <- is.na(my.u) | my.u < exp(foo) > sum(my.accept) == round(n * out.metro$accept) [1] TRUE > if (my.accept[niter]) { + all(out.metro$proposal[niter, ] == out.metro$final) + } else { + all(out.metro$current[niter, ] == out.metro$final) + } [1] TRUE > > my.current <- out.metro$current > my.current[my.accept, ] <- my.proposal[my.accept, ] > my.current <- rbind(out.metro$initial, my.current[- niter, ]) > max(abs(out.metro$current - my.current)) < epsilon [1] TRUE > > my.path <- matrix(NA, n, d) > my.path[my.accept, ] <- out.metro$proposal[my.accept, ] > my.path[! my.accept, ] <- out.metro$current[! my.accept, ] > nspac <- out.metro$nspac > > my.path <- my.path[seq(nspac, niter, by = nspac), ] > > fred <- my.path[ , out.metro$outfun] > k <- ncol(fred) > > foom <- array(as.vector(t(fred)), c(k, out.metro$blen, out.metro$nbatch)) > boom <- t(apply(foom, c(1, 3), mean)) > > all(dim(boom) == dim(out.metro$batch)) [1] TRUE > max(abs(boom - out.metro$batch)) < epsilon [1] TRUE > > mcmc/tests/logitfunarg.Rout.save0000644000175100001440000000600713045741600016505 0ustar hornikusers R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > # test outfun (function) > > epsilon <- 1e-15 > > library(mcmc) > > RNGkind("Marsaglia-Multicarry") > set.seed(42) > > n <- 100 > rho <- 0.5 > beta0 <- 0.25 > beta1 <- 1 > beta2 <- 0.5 > > x1 <- rnorm(n) > x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) > eta <- beta0 + beta1 * x1 + beta2 * x2 > p <- 1 / (1 + exp(- eta)) > y <- as.numeric(runif(n) < p) > > out <- glm(y ~ x1 + x2, family = binomial()) > > logl <- function(beta) { + if (length(beta) != 3) stop("length(beta) != 3") + beta0 <- beta[1] + beta1 <- beta[2] + beta2 <- beta[3] + eta <- beta0 + beta1 * x1 + beta2 * x2 + p <- exp(eta) / (1 + exp(eta)) + return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) + } > > out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) > out.metro$accept [1] 0.982 > > out.metro <- metrop(out.metro, scale = 0.1) > out.metro$accept [1] 0.795 > > out.metro <- metrop(out.metro, scale = 0.5) > out.metro$accept [1] 0.264 > > apply(out.metro$batch, 2, mean) [1] 0.06080257 1.42304941 0.52634149 > > out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, + scale = 0.5, debug = TRUE, outfun = function(x) c(x, x^2)) > > out.metro <- metrop(out.metro) > out.metro$outfun function (x) c(x, x^2) > dim(out.metro$batch) [1] 100 6 > > logl <- function(beta, x1, x2, y) { + if (length(beta) != 3) stop("length(beta) != 3") + beta0 <- beta[1] + beta1 <- beta[2] + beta2 <- beta[3] + eta <- beta0 + beta1 * x1 + beta2 * x2 + p <- exp(eta) / (1 + exp(eta)) + return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) + } > > out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, + scale = 0.5, debug = TRUE, x1 = x1, x2 = x2, y = y) > out.metro$lud function (beta, x1, x2, y) { if (length(beta) != 3) stop("length(beta) != 3") beta0 <- beta[1] beta1 <- beta[2] beta2 <- beta[3] eta <- beta0 + beta1 * x1 + beta2 * x2 p <- exp(eta)/(1 + exp(eta)) return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) } > out.metro <- metrop(out.metro, x1 = x1, x2 = x2, y = y) > out.metro$lud function (beta, x1, x2, y) { if (length(beta) != 3) stop("length(beta) != 3") beta0 <- beta[1] beta1 <- beta[2] beta2 <- beta[3] eta <- beta0 + beta1 * x1 + beta2 * x2 p <- exp(eta)/(1 + exp(eta)) return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) } > > mcmc/tests/logitfun.R0000644000175100001440000000617513045741240014334 0ustar hornikusers # test outfun (function) epsilon <- 1e-15 library(mcmc) RNGkind("Marsaglia-Multicarry") set.seed(42) n <- 100 rho <- 0.5 beta0 <- 0.25 beta1 <- 1 beta2 <- 0.5 x1 <- rnorm(n) x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) eta <- beta0 + beta1 * x1 + beta2 * x2 p <- 1 / (1 + exp(- eta)) y <- as.numeric(runif(n) < p) out <- glm(y ~ x1 + x2, family = binomial()) logl <- function(beta) { if (length(beta) != 3) stop("length(beta) != 3") beta0 <- beta[1] beta1 <- beta[2] beta2 <- beta[3] eta <- beta0 + beta1 * x1 + beta2 * x2 p <- exp(eta) / (1 + exp(eta)) return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) } out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) out.metro$accept out.metro <- metrop(out.metro, scale = 0.1) out.metro$accept out.metro <- metrop(out.metro, scale = 0.5) out.metro$accept apply(out.metro$batch, 2, mean) out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, scale = 0.5, debug = TRUE, outfun = function(x) c(x, x^2)) niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac niter == nrow(out.metro$current) niter == nrow(out.metro$proposal) all(out.metro$current[1, ] == out.metro$initial) all(out.metro$current[niter, ] == out.metro$final) | all(out.metro$proposal[niter, ] == out.metro$final) .Random.seed <- out.metro$initial.seed d <- ncol(out.metro$proposal) n <- nrow(out.metro$proposal) my.proposal <- matrix(NA, n, d) my.u <- double(n) ska <- out.metro$scale for (i in 1:n) { my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) if (is.na(out.metro$u[i])) { my.u[i] <- NA } else { my.u[i] <- runif(1) } } max(abs(out.metro$proposal - my.proposal)) < epsilon all(is.na(out.metro$u) == is.na(my.u)) all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) my.curr.log.green <- apply(out.metro$current, 1, logl) my.prop.log.green <- apply(out.metro$proposal, 1, logl) all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) foo <- my.prop.log.green - my.curr.log.green max(abs(foo - out.metro$log.green)) < epsilon my.accept <- is.na(my.u) | my.u < exp(foo) sum(my.accept) == round(n * out.metro$accept) if (my.accept[niter]) { all(out.metro$proposal[niter, ] == out.metro$final) } else { all(out.metro$current[niter, ] == out.metro$final) } my.current <- out.metro$current my.current[my.accept, ] <- my.proposal[my.accept, ] my.current <- rbind(out.metro$initial, my.current[- niter, ]) max(abs(out.metro$current - my.current)) < epsilon my.path <- matrix(NA, n, d) my.path[my.accept, ] <- out.metro$proposal[my.accept, ] my.path[! my.accept, ] <- out.metro$current[! my.accept, ] nspac <- out.metro$nspac my.path <- my.path[seq(nspac, niter, by = nspac), ] fred <- t(apply(my.path, 1, out.metro$outfun)) k <- ncol(fred) foom <- array(as.vector(t(fred)), c(k, out.metro$blen, out.metro$nbatch)) boom <- t(apply(foom, c(1, 3), mean)) all(dim(boom) == dim(out.metro$batch)) max(abs(boom - out.metro$batch)) < epsilon goom <- cbind(my.path, my.path^2) all(dim(goom) == dim(out.metro$batch)) max(abs(goom - out.metro$batch)) < epsilon mcmc/tests/logitsub.Rout.save0000644000175100001440000000746413045741600016024 0ustar hornikusers R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > # test spacing (nspac) > > epsilon <- 1e-15 > > library(mcmc) > > RNGkind("Marsaglia-Multicarry") > set.seed(42) > > n <- 100 > rho <- 0.5 > beta0 <- 0.25 > beta1 <- 1 > beta2 <- 0.5 > > x1 <- rnorm(n) > x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) > eta <- beta0 + beta1 * x1 + beta2 * x2 > p <- 1 / (1 + exp(- eta)) > y <- as.numeric(runif(n) < p) > > out <- glm(y ~ x1 + x2, family = binomial()) > > logl <- function(beta) { + if (length(beta) != 3) stop("length(beta) != 3") + beta0 <- beta[1] + beta1 <- beta[2] + beta2 <- beta[3] + eta <- beta0 + beta1 * x1 + beta2 * x2 + p <- exp(eta) / (1 + exp(eta)) + return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) + } > > out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) > out.metro$accept [1] 0.982 > > out.metro <- metrop(out.metro, scale = 0.1) > out.metro$accept [1] 0.795 > > out.metro <- metrop(out.metro, scale = 0.5) > out.metro$accept [1] 0.264 > > apply(out.metro$batch, 2, mean) [1] 0.06080257 1.42304941 0.52634149 > > out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, + scale = 0.5, debug = TRUE, nspac = 3) > > niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac > niter == nrow(out.metro$current) [1] TRUE > niter == nrow(out.metro$proposal) [1] TRUE > all(out.metro$current[1, ] == out.metro$initial) [1] TRUE > all(out.metro$current[niter, ] == out.metro$final) | + all(out.metro$proposal[niter, ] == out.metro$final) [1] TRUE > > .Random.seed <- out.metro$initial.seed > d <- ncol(out.metro$proposal) > n <- nrow(out.metro$proposal) > my.proposal <- matrix(NA, n, d) > my.u <- double(n) > ska <- out.metro$scale > for (i in 1:n) { + my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) + if (is.na(out.metro$u[i])) { + my.u[i] <- NA + } else { + my.u[i] <- runif(1) + } + } > max(abs(out.metro$proposal - my.proposal)) < epsilon [1] TRUE > all(is.na(out.metro$u) == is.na(my.u)) [1] TRUE > all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) [1] TRUE > > my.curr.log.green <- apply(out.metro$current, 1, logl) > my.prop.log.green <- apply(out.metro$proposal, 1, logl) > all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) [1] TRUE > foo <- my.prop.log.green - my.curr.log.green > max(abs(foo - out.metro$log.green)) < epsilon [1] TRUE > > my.accept <- is.na(my.u) | my.u < exp(foo) > sum(my.accept) == round(n * out.metro$accept) [1] TRUE > if (my.accept[niter]) { + all(out.metro$proposal[niter, ] == out.metro$final) + } else { + all(out.metro$current[niter, ] == out.metro$final) + } [1] TRUE > > my.current <- out.metro$current > my.current[my.accept, ] <- my.proposal[my.accept, ] > my.current <- rbind(out.metro$initial, my.current[- niter, ]) > max(abs(out.metro$current - my.current)) < epsilon [1] TRUE > > my.path <- matrix(NA, n, d) > my.path[my.accept, ] <- out.metro$proposal[my.accept, ] > my.path[! my.accept, ] <- out.metro$current[! my.accept, ] > nspac <- out.metro$nspac > my.path <- my.path[seq(nspac, niter, by = nspac), ] > all(dim(my.path) == dim(out.metro$batch)) [1] TRUE > > all(my.path == out.metro$batch) [1] TRUE > > mcmc/tests/morphtoo.Rout.save0000644000175100001440000000412713045741600016034 0ustar hornikusers R version 2.15.0 (2012-03-30) Copyright (C) 2012 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: i686-pc-linux-gnu (32-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > library(mcmc) > > x <- seq(0, 10, length = 10001) > > ### sub-exponentially light transformation > > b <- 0.5 > fsub <- morph(b = b) > > y <- unlist(Map(fsub$inverse, x)) > > myfsub <- function(x) ifelse(x > 1 / b, exp(b * x) - exp(1) / 3, + (x * b)^3 * exp(1) / 6 + x * b * exp(1) / 2) > y2 <- myfsub(x) > all.equal(y, y2, tolerance = 1e-14) [1] TRUE > > z <- unlist(Map(fsub$transform, y)) > all.equal(z, x, tolerance = 1e-14) [1] TRUE > > ### exponentially light transformation > > r <- 5 > p <- 3 > fp3 <- morph(r = r) > > y <- unlist(Map(fp3$inverse, x)) > > myfp3 <- function(x) ifelse(x < r, x, x + (x - r)^p) > y2 <- myfp3(x) > all.equal(y, y2, tolerance = 1e-14) [1] TRUE > > z <- unlist(Map(fp3$transform, y)) > all.equal(z, x, tolerance = 1e-12) [1] TRUE > > ### both together > > fboth <- morph(b = b, r = r) > > y <- unlist(Map(fboth$inverse, x)) > y2 <- myfsub(myfp3(x)) > all.equal(y, y2, tolerance = 1e-14) [1] TRUE > > z <- unlist(Map(fboth$transform, y)) > all.equal(z, x, tolerance = 1e-12) [1] TRUE > > ### exponentially light transformation with p != 3 > > r <- 5 > p <- 2.2 > fpo <- morph(r = r, p = p) > > y <- unlist(Map(fpo$inverse, x)) > > myfpo <- function(x) ifelse(x < r, x, x + (x - r)^p) > y2 <- myfpo(x) > all.equal(y, y2, tolerance = 1e-14) [1] TRUE > > z <- unlist(Map(fpo$transform, y)) > all.equal(z, x, tolerance = 1e-14) [1] TRUE > > > proc.time() user system elapsed 4.024 0.036 4.038 mcmc/tests/isotropic.R0000644000175100001440000000243513045741600014513 0ustar hornikuserslibrary(mcmc) isotropic <- mcmc:::isotropic isotropic.logjacobian <- mcmc:::isotropic.logjacobian # create identity test function identity <- function(x) x d.identity <- function(x) 1 # check that isotropic is length preserving for vectors of lengths 1--1000 all(sapply(1:1000, function(x) length(isotropic(identity)(rep(1, x))) == x)) # test that isotropic(identity) is an identity function all.equal(isotropic(identity)(1:10), 1:10) x <- seq(0, 1, length.out=200) all.equal(isotropic(identity)(x), x) # make sure that isotropic.logjacobian(identity, d.identity) is a 0 function all.equal(isotropic.logjacobian(identity, d.identity)(1:10), 0) # make sure that 0 as an input does not cause divide-by-zero errors all.equal(isotropic(identity)(0), 0) all.equal(isotropic(identity)(0 * 1:4), rep(0, 4)) all.equal(isotropic.logjacobian(identity, d.identity)(0), 0) all.equal(isotropic.logjacobian(identity, d.identity)(0 * 1:4), 0) # try isotropic with f(x) = x^2, then we should get # istropic(f)(x) := |x| * x f <- function(x) x^2 all.equal(isotropic(f)(1), 1) all.equal(isotropic(f)(c(1, 1)), sqrt(2) * c(1, 1)) all.equal(isotropic(f)(c(1, 0, 1)), sqrt(2) * c(1, 0, 1)) # make sure lazy-loading works properly. g <- function(x) x^2 g.iso <- isotropic(g) g <- function(x) x all.equal(g.iso(2), 2*2) mcmc/tests/circle.Rout.save0000644000175100001440000000555713045741600015436 0ustar hornikusers R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > epsilon <- 1e-15 > > library(mcmc) > > RNGkind("Marsaglia-Multicarry") > set.seed(42) > > d <- 5 > > logh <- function(x) { + if (! is.numeric(x)) stop("x not numeric") + if (length(x) != d) stop("length(x) != d") + fred <- 1 - sum(x^2) + if (fred > 0) return(log(fred)) else return(-Inf) + } > > out.metro <- metrop(logh, rep(0, d), 1e3, scale = 0.01) > out.metro$accept [1] 0.979 > > out.metro <- metrop(out.metro, scale = 0.1) > out.metro$accept [1] 0.72 > > out.metro <- metrop(out.metro, scale = 0.5) > out.metro$accept [1] 0.16 > > out.metro <- metrop(out.metro, scale = 0.4) > out.metro$accept [1] 0.228 > > out.metro <- metrop(out.metro, nbatch = 1e2, debug = TRUE) > > all(out.metro$batch[- out.metro$nbatch, ] == out.metro$current[- 1, ]) [1] TRUE > all(out.metro$current[1, ] == out.metro$initial) [1] TRUE > all(out.metro$batch[out.metro$nbatch, ] == out.metro$final) [1] TRUE > > .Random.seed <- out.metro$initial.seed > d <- ncol(out.metro$proposal) > n <- nrow(out.metro$proposal) > my.proposal <- matrix(NA, n, d) > my.u <- double(n) > ska <- out.metro$scale > for (i in 1:n) { + my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) + if (is.na(out.metro$u[i])) { + my.u[i] <- NA + } else { + my.u[i] <- runif(1) + } + } > max(abs(out.metro$proposal - my.proposal)) < epsilon [1] TRUE > all(is.na(out.metro$u) == is.na(my.u)) [1] TRUE > all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) [1] TRUE > > my.curr.log.green <- apply(out.metro$current, 1, logh) > my.prop.log.green <- apply(out.metro$proposal, 1, logh) > all(is.na(out.metro$u) == ((my.prop.log.green == -Inf) | + (my.prop.log.green > my.curr.log.green))) [1] TRUE > foo <- my.prop.log.green - my.curr.log.green > blurfle <- foo - out.metro$log.green > blurfle[foo == -Inf & out.metro$log.green == -Inf] <- 0 > max(blurfle) < epsilon [1] TRUE > > my.accept <- (my.prop.log.green > -Inf) & (is.na(my.u) | my.u < exp(foo)) > sum(my.accept) == round(n * out.metro$accept) [1] TRUE > > my.path <- matrix(NA, n, d) > my.path[my.accept, ] <- out.metro$proposal[my.accept, ] > my.path[! my.accept, ] <- out.metro$current[! my.accept, ] > > all(my.path == out.metro$batch) [1] TRUE > > mcmc/tests/logitfun.Rout.save0000644000175100001440000001024613045741600016013 0ustar hornikusers R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > # test outfun (function) > > epsilon <- 1e-15 > > library(mcmc) > > RNGkind("Marsaglia-Multicarry") > set.seed(42) > > n <- 100 > rho <- 0.5 > beta0 <- 0.25 > beta1 <- 1 > beta2 <- 0.5 > > x1 <- rnorm(n) > x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) > eta <- beta0 + beta1 * x1 + beta2 * x2 > p <- 1 / (1 + exp(- eta)) > y <- as.numeric(runif(n) < p) > > out <- glm(y ~ x1 + x2, family = binomial()) > > logl <- function(beta) { + if (length(beta) != 3) stop("length(beta) != 3") + beta0 <- beta[1] + beta1 <- beta[2] + beta2 <- beta[3] + eta <- beta0 + beta1 * x1 + beta2 * x2 + p <- exp(eta) / (1 + exp(eta)) + return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) + } > > out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) > out.metro$accept [1] 0.982 > > out.metro <- metrop(out.metro, scale = 0.1) > out.metro$accept [1] 0.795 > > out.metro <- metrop(out.metro, scale = 0.5) > out.metro$accept [1] 0.264 > > apply(out.metro$batch, 2, mean) [1] 0.06080257 1.42304941 0.52634149 > > out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, + scale = 0.5, debug = TRUE, outfun = function(x) c(x, x^2)) > > niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac > niter == nrow(out.metro$current) [1] TRUE > niter == nrow(out.metro$proposal) [1] TRUE > all(out.metro$current[1, ] == out.metro$initial) [1] TRUE > all(out.metro$current[niter, ] == out.metro$final) | + all(out.metro$proposal[niter, ] == out.metro$final) [1] TRUE > > .Random.seed <- out.metro$initial.seed > d <- ncol(out.metro$proposal) > n <- nrow(out.metro$proposal) > my.proposal <- matrix(NA, n, d) > my.u <- double(n) > ska <- out.metro$scale > for (i in 1:n) { + my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) + if (is.na(out.metro$u[i])) { + my.u[i] <- NA + } else { + my.u[i] <- runif(1) + } + } > max(abs(out.metro$proposal - my.proposal)) < epsilon [1] TRUE > all(is.na(out.metro$u) == is.na(my.u)) [1] TRUE > all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) [1] TRUE > > my.curr.log.green <- apply(out.metro$current, 1, logl) > my.prop.log.green <- apply(out.metro$proposal, 1, logl) > all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) [1] TRUE > foo <- my.prop.log.green - my.curr.log.green > max(abs(foo - out.metro$log.green)) < epsilon [1] TRUE > > my.accept <- is.na(my.u) | my.u < exp(foo) > sum(my.accept) == round(n * out.metro$accept) [1] TRUE > if (my.accept[niter]) { + all(out.metro$proposal[niter, ] == out.metro$final) + } else { + all(out.metro$current[niter, ] == out.metro$final) + } [1] TRUE > > my.current <- out.metro$current > my.current[my.accept, ] <- my.proposal[my.accept, ] > my.current <- rbind(out.metro$initial, my.current[- niter, ]) > max(abs(out.metro$current - my.current)) < epsilon [1] TRUE > > my.path <- matrix(NA, n, d) > my.path[my.accept, ] <- out.metro$proposal[my.accept, ] > my.path[! my.accept, ] <- out.metro$current[! my.accept, ] > nspac <- out.metro$nspac > > my.path <- my.path[seq(nspac, niter, by = nspac), ] > > fred <- t(apply(my.path, 1, out.metro$outfun)) > k <- ncol(fred) > > foom <- array(as.vector(t(fred)), c(k, out.metro$blen, out.metro$nbatch)) > boom <- t(apply(foom, c(1, 3), mean)) > > all(dim(boom) == dim(out.metro$batch)) [1] TRUE > max(abs(boom - out.metro$batch)) < epsilon [1] TRUE > > goom <- cbind(my.path, my.path^2) > all(dim(goom) == dim(out.metro$batch)) [1] TRUE > max(abs(goom - out.metro$batch)) < epsilon [1] TRUE > mcmc/tests/logitidx.R0000644000175100001440000000577313045741240014333 0ustar hornikusers # test outfun (positive index vector) epsilon <- 1e-15 library(mcmc) RNGkind("Marsaglia-Multicarry") set.seed(42) n <- 100 rho <- 0.5 beta0 <- 0.25 beta1 <- 1 beta2 <- 0.5 x1 <- rnorm(n) x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) eta <- beta0 + beta1 * x1 + beta2 * x2 p <- 1 / (1 + exp(- eta)) y <- as.numeric(runif(n) < p) out <- glm(y ~ x1 + x2, family = binomial()) logl <- function(beta) { if (length(beta) != 3) stop("length(beta) != 3") beta0 <- beta[1] beta1 <- beta[2] beta2 <- beta[3] eta <- beta0 + beta1 * x1 + beta2 * x2 p <- exp(eta) / (1 + exp(eta)) return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) } out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) out.metro$accept out.metro <- metrop(out.metro, scale = 0.1) out.metro$accept out.metro <- metrop(out.metro, scale = 0.5) out.metro$accept apply(out.metro$batch, 2, mean) out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, scale = 0.5, debug = TRUE, outfun = c(2, 3)) niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac niter == nrow(out.metro$current) niter == nrow(out.metro$proposal) all(out.metro$current[1, ] == out.metro$initial) all(out.metro$current[niter, ] == out.metro$final) | all(out.metro$proposal[niter, ] == out.metro$final) .Random.seed <- out.metro$initial.seed d <- ncol(out.metro$proposal) n <- nrow(out.metro$proposal) my.proposal <- matrix(NA, n, d) my.u <- double(n) ska <- out.metro$scale for (i in 1:n) { my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) if (is.na(out.metro$u[i])) { my.u[i] <- NA } else { my.u[i] <- runif(1) } } max(abs(out.metro$proposal - my.proposal)) < epsilon all(is.na(out.metro$u) == is.na(my.u)) all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) my.curr.log.green <- apply(out.metro$current, 1, logl) my.prop.log.green <- apply(out.metro$proposal, 1, logl) all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) foo <- my.prop.log.green - my.curr.log.green max(abs(foo - out.metro$log.green)) < epsilon my.accept <- is.na(my.u) | my.u < exp(foo) sum(my.accept) == round(n * out.metro$accept) if (my.accept[niter]) { all(out.metro$proposal[niter, ] == out.metro$final) } else { all(out.metro$current[niter, ] == out.metro$final) } my.current <- out.metro$current my.current[my.accept, ] <- my.proposal[my.accept, ] my.current <- rbind(out.metro$initial, my.current[- niter, ]) max(abs(out.metro$current - my.current)) < epsilon my.path <- matrix(NA, n, d) my.path[my.accept, ] <- out.metro$proposal[my.accept, ] my.path[! my.accept, ] <- out.metro$current[! my.accept, ] nspac <- out.metro$nspac my.path <- my.path[seq(nspac, niter, by = nspac), ] fred <- my.path[ , out.metro$outfun] k <- ncol(fred) foom <- array(as.vector(t(fred)), c(k, out.metro$blen, out.metro$nbatch)) boom <- t(apply(foom, c(1, 3), mean)) all(dim(boom) == dim(out.metro$batch)) max(abs(boom - out.metro$batch)) < epsilon mcmc/tests/temp-par.R0000644000175100001440000002221613045741240014224 0ustar hornikusers library(mcmc) set.seed(42) data(foo) attach(foo) out <- glm(y ~ x1 + x2 + x3, family = binomial, x = TRUE) summary(out) modmat <- out$x models <- cbind(rep(0:1, each = 4), rep(rep(0:1, times = 2), each = 2), rep(0:1, times = 4)) exes <- paste("x", 1:3, sep = "") betas <- NULL for (i in 1:nrow(models)) { inies <- as.logical(models[i, ]) foo <- exes[inies] bar <- paste("y ~", paste(foo, collapse = " + ")) if (! any(inies)) bar <- paste(bar, "1") baz <- glm(as.formula(bar), family = binomial) beta <- rep(0, 4) beta[c(TRUE, inies)] <- baz$coef betas <- rbind(betas, beta) } neighbors <- matrix(FALSE, nrow(models), nrow(models)) for (i in 1:nrow(neighbors)) { for (j in 1:ncol(neighbors)) { foo <- models[i, ] bar <- models[j, ] if (sum(foo != bar) == 1) neighbors[i, j] <- TRUE } } ludfun <- function(state, ...) { stopifnot(is.numeric(state)) stopifnot(length(state) == ncol(models) + 2) stopifnot(length(state) == ncol(models) + 2) icomp <- state[1] stopifnot(icomp == as.integer(icomp)) stopifnot(1 <= icomp && icomp <= nrow(models)) beta <- state[-1] inies <- c(TRUE, as.logical(models[icomp, ])) beta.logl <- beta beta.logl[! inies] <- 0 eta <- as.numeric(modmat %*% beta.logl) logp <- ifelse(eta < 0, eta - log1p(exp(eta)), - log1p(exp(- eta))) logq <- ifelse(eta < 0, - log1p(exp(eta)), - eta - log1p(exp(- eta))) logl <- sum(logp[y == 1]) + sum(logq[y == 0]) val <- logl - sum(beta^2) / 2 return(val) } ludval <- NULL for (i in 1:nrow(models)) ludval <- c(ludval, ludfun(c(i, betas[i, ]))) all(is.finite(ludval)) out <- temper(ludfun, initial = betas, neighbors = neighbors, nbatch = 20, blen = 10, nspac = 5, scale = 0.56789, parallel = TRUE, debug = TRUE) names(out) ### check decision about within-component or jump/swap identical(out$unif.which < 0.5, out$which) identical(out$which, out$proposal[ , 1] == out$coproposal[ , 1]) ### check proposal and coproposal are actually current state or part thereof prop <- out$proposal coprop <- out$coproposal prop.i <- prop[ , 1] coprop.i <- coprop[ , 1] alt.prop <- prop alt.coprop <- coprop for (i in 1:nrow(prop)) { alt.prop[i, ] <- c(prop.i[i], out$state[i, prop.i[i], ]) alt.coprop[i, ] <- c(coprop.i[i], out$state[i, coprop.i[i], ]) } identical(coprop, alt.coprop) identical(prop[! out$which, ], alt.prop[! out$which, ]) identical(prop[out$which, 1], alt.prop[out$which, 1]) ### check hastings ratio calculated correctly foo <- apply(prop, 1, ludfun) fooco <- apply(coprop, 1, ludfun) prop[ , 1] <- out$coproposal[ , 1] coprop[ , 1] <- out$proposal[ , 1] foo.swap <- apply(prop, 1, ludfun) fooco.swap <- apply(coprop, 1, ludfun) log.haste <- ifelse(out$which, foo - fooco, foo.swap + fooco.swap - foo - fooco) all.equal(log.haste, out$log.hastings) ### check hastings rejection decided correctly identical(out$log.hastings >= 0, is.na(out$unif.hastings)) all(out$log.hastings < 0 | out$acceptd) identical(out$acceptd, out$log.hastings >= 0 | out$unif.hastings < exp(out$log.hastings)) ### check acceptance carried out or not (according to decision) correctly before <- out$state after <- before after[- dim(after)[1], , ] <- before[-1, , ] after[dim(after)[1], , ] <- out$final my.after <- before for (i in 1:length(out$acceptd)) { if (out$acceptd[i]) { if (out$which[i]) { j <- out$proposal[i, 1] my.after[i, j, ] <- out$proposal[i, -1] } else { j <- out$proposal[i, 1] k <- out$coproposal[i, 1] my.after[i, j, ] <- out$coproposal[i, -1] my.after[i, k, ] <- out$proposal[i, -1] } } } identical(after, my.after) ### check within-component proposal my.coproposal.within <- out$coproposal[out$which, ] proposal.within <- out$proposal[out$which, ] my.z <- out$norm[out$which, ] my.proposal.within <- my.coproposal.within my.proposal.within[ , -1] <- my.coproposal.within[ , -1] + out$scale * my.z all.equal(proposal.within, my.proposal.within) my.unif.choose <- out$unif.choose[out$which, 1] my.i <- floor(nrow(models) * my.unif.choose) + 1 all(1 <= my.i & my.i <= nrow(models)) identical(my.i, my.coproposal.within[ , 1]) ### check swap proposal coproposal.swap <- out$coproposal[! out$which, ] proposal.swap <- out$proposal[! out$which, ] unif.choose.swap <- out$unif.choose[! out$which, ] my.i <- floor(nrow(models) * unif.choose.swap[ , 1]) + 1 nneighbors <- apply(out$neighbors, 1, sum) my.nneighbors <- nneighbors[my.i] my.k <- floor(my.nneighbors * unif.choose.swap[ , 2]) + 1 my.j <- my.k foo <- seq(1, ncol(out$neighbors)) for (i in seq(along = my.j)) { my.j[i] <- (foo[out$neighbors[my.i[i], ]])[my.k[i]] } identical(coproposal.swap[ , 1], my.i) identical(proposal.swap[ , 1], my.j) ### check standard normal and uniform random numbers are as purported save.Random.seed <- .Random.seed .Random.seed <- out$initial.seed nx <- ncol(out$initial) niter <- out$nbatch * out$blen * out$nspac my.norm <- matrix(NA, nrow = nrow(out$norm), ncol = ncol(out$norm)) my.unif.which <- rep(NA, niter) my.unif.hastings <- rep(NA, niter) my.unif.choose <- matrix(NA, niter, 2) for (iiter in 1:niter) { my.unif.which[iiter] <- runif(1) if (out$which[iiter]) { my.unif.choose[iiter, 1] <- runif(1) my.norm[iiter, ] <- rnorm(nx) if (out$log.hastings[iiter] < 0) my.unif.hastings[iiter] <- runif(1) } else { my.unif.choose[iiter, ] <- runif(2) if (out$log.hastings[iiter] < 0) my.unif.hastings[iiter] <- runif(1) } } identical(my.norm, out$norm) identical(my.unif.which, out$unif.which) identical(my.unif.hastings, out$unif.hastings) identical(my.unif.choose, out$unif.choose) .Random.seed <- save.Random.seed ### check batch means foo <- after[seq(1, niter) %% out$nspac == 0, , ] foo <- array(as.vector(foo), dim = c(out$blen, out$nbatch, dim(foo)[2:3])) foo <- apply(foo, c(2, 3, 4), mean) all.equal(foo, out$batch) ### check acceptance rates accept.within <- out$acceptd[out$which] my.i.within <- out$coproposal[out$which, 1] my.acceptx <- as.vector(sapply(split(accept.within, my.i.within), mean)) identical(my.acceptx, out$acceptx) accept.swap <- out$acceptd[! out$which] my.i.swap <- out$coproposal[! out$which, 1] my.j.swap <- out$proposal[! out$which, 1] nmodel <- nrow(out$neighbors) my.accepti <- matrix(NA, nmodel, nmodel) for (i in 1:nmodel) { for (j in 1:nmodel) { if (out$neighbors[i, j]) { my.accepti[i, j] <- mean(accept.swap[my.i.swap == i & my.j.swap == j]) } } } identical(my.accepti, out$accepti) ### check scale vector nx <- ncol(models) + 1 newscale <- rnorm(nx, 0.5, 0.1) out <- temper(out, scale = newscale) my.coproposal.within <- out$coproposal[out$which, ] proposal.within <- out$proposal[out$which, ] my.z <- out$norm[out$which, ] my.proposal.within <- my.coproposal.within my.proposal.within[ , -1] <- my.coproposal.within[ , -1] + sweep(my.z, 2, out$scale, "*") all.equal(proposal.within, my.proposal.within) ### check scale matrix matscale <- matrix(rnorm(nx * nx, 0.0, 0.1), nx, nx) diag(matscale) <- 0.56789 out <- temper(out, scale = matscale) my.coproposal.within <- out$coproposal[out$which, ] proposal.within <- out$proposal[out$which, ] my.z <- out$norm[out$which, ] my.proposal.within <- my.coproposal.within my.proposal.within[ , -1] <- my.coproposal.within[ , -1] + my.z %*% t(out$scale) all.equal(proposal.within, my.proposal.within) ### check scale list lisztscale <- list(0.56789, newscale, matscale, matscale, newscale, 0.98765, 0.98765, newscale) out <- temper(out, scale = lisztscale) my.coproposal.within <- out$coproposal[out$which, ] proposal.within <- out$proposal[out$which, ] my.z <- out$norm[out$which, ] my.proposal.within <- my.coproposal.within for (iiter in 1:nrow(my.z)) { my.i <- my.coproposal.within[iiter, 1] my.scale <- out$scale[[my.i]] if (is.matrix(my.scale)) { my.proposal.within[iiter, -1] <- my.coproposal.within[iiter, -1] + my.z[iiter, , drop = FALSE] %*% t(my.scale) } else { my.proposal.within[iiter, -1] <- my.coproposal.within[iiter, -1] + my.z[iiter, ] * my.scale } } all.equal(proposal.within, my.proposal.within) ### check outfun outfun <- function(state, icomp, ...) { stopifnot(is.matrix(state)) stopifnot(is.numeric(state)) nx <- ncol(betas) ncomp <- nrow(betas) stopifnot(ncol(state) == nx) stopifnot(nrow(state) == ncomp) stopifnot(1 <= icomp && icomp <= ncomp) foo <- state[icomp, ] bar <- foo^2 return(c(foo, bar)) } out <- temper(out, outfun = outfun, icomp = 4) before <- out$state after <- before after[- dim(after)[1], , ] <- before[-1, , ] after[dim(after)[1], , ] <- out$final outies <- apply(after, 1, outfun, icomp = 4) outies <- t(outies) foo <- outies[seq(1, niter) %% out$nspac == 0, ] foo <- array(as.vector(foo), dim = c(out$blen, out$nbatch, dim(foo)[2])) foo <- apply(foo, c(2, 3), mean) all.equal(foo, out$batch) mcmc/tests/accept-batch.R0000644000175100001440000000101413062633366015016 0ustar hornikusers # new feature batching acceptance rates set.seed(42) library(mcmc) h <- function(x) if (all(x >= 0) && sum(x) <= 1) return(1) else return(-Inf) out <- metrop(h, rep(0, 5), nbatch = 100, blen = 100, scale = 0.1, debug = TRUE) all.equal(out$accept, mean(out$accept.batch)) foo <- matrix(out$debug.accept, nrow = out$blen) bar <- colMeans(foo) all.equal(out$accept.batch, bar) options(digits = 4) # try to keep insanity of computer arithmetic under control out$accept t.test(out$accept.batch)$conf.int mcmc/tests/saveseed.R0000644000175100001440000000060713045741240014276 0ustar hornikusers library(mcmc) set.seed(42) h <- function(x) if (all(x >= 0) && sum(x) <= 1) return(1) else return(-Inf) out <- metrop(h, initial = rep(0, 5), nbatch = 100, blen = 17, nspac = 3, scale = 0.1) save.seed <- .Random.seed out1 <- metrop(out) out2 <- metrop(out1) out3 <- metrop(out, nbatch = 2 * out$nbatch) fred <- rbind(out1$batch, out2$batch) identical(fred, out3$batch) mcmc/tests/logit.R0000644000175100001440000000520613045741600013615 0ustar hornikusers epsilon <- 1e-15 library(mcmc) RNGkind("Marsaglia-Multicarry") set.seed(42) options(digits = 3) n <- 100 rho <- 0.5 beta0 <- 0.25 beta1 <- 1 beta2 <- 0.5 x1 <- rnorm(n) x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) eta <- beta0 + beta1 * x1 + beta2 * x2 p <- 1 / (1 + exp(- eta)) y <- as.numeric(runif(n) < p) out <- glm(y ~ x1 + x2, family = binomial()) summary(out) mlogl <- function(beta) { if (length(beta) != 3) stop("length(beta) != 3") beta0 <- beta[1] beta1 <- beta[2] beta2 <- beta[3] eta <- beta0 + beta1 * x1 + beta2 * x2 p <- exp(eta) / (1 + exp(eta)) return(- sum(log(p[y == 1])) - sum(log(1 - p[y == 0]))) } out.nlm <- nlm(mlogl, coefficients(out), print.level = 2) logl <- function(beta) { if (length(beta) != 3) stop("length(beta) != 3") beta0 <- beta[1] beta1 <- beta[2] beta2 <- beta[3] eta <- beta0 + beta1 * x1 + beta2 * x2 p <- exp(eta) / (1 + exp(eta)) return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) } out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) out.metro$accept out.metro <- metrop(out.metro, scale = 0.1) out.metro$accept out.metro <- metrop(out.metro, scale = 0.5) out.metro$accept apply(out.metro$batch, 2, mean) var(out.metro$batch) olbm(out.metro$batch, 25) saveseed <- .Random.seed out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, scale = 0.5, debug = TRUE) all(out.metro$batch[- out.metro$nbatch, ] == out.metro$current[- 1, ]) all(out.metro$current[1, ] == out.metro$initial) all(out.metro$batch[out.metro$nbatch, ] == out.metro$final) .Random.seed <- saveseed d <- ncol(out.metro$proposal) n <- nrow(out.metro$proposal) my.proposal <- matrix(NA, n, d) my.u <- double(n) ska <- out.metro$scale for (i in 1:n) { my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) if (is.na(out.metro$u[i])) { my.u[i] <- NA } else { my.u[i] <- runif(1) } } max(abs(out.metro$proposal - my.proposal)) < epsilon all(is.na(out.metro$u) == is.na(my.u)) all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) my.curr.log.green <- apply(out.metro$current, 1, logl) my.prop.log.green <- apply(out.metro$proposal, 1, logl) all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) foo <- my.prop.log.green - my.curr.log.green max(abs(foo - out.metro$log.green)) < epsilon my.accept <- is.na(my.u) | my.u < exp(foo) sum(my.accept) == round(n * out.metro$accept) my.path <- matrix(NA, n, d) my.path[my.accept, ] <- out.metro$proposal[my.accept, ] my.path[! my.accept, ] <- out.metro$current[! my.accept, ] all(my.path == out.metro$batch) mcmc/tests/isotropic.Rout.save0000644000175100001440000000411313045741600016173 0ustar hornikusers R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(mcmc) > isotropic <- mcmc:::isotropic > isotropic.logjacobian <- mcmc:::isotropic.logjacobian > > # create identity test function > identity <- function(x) x > d.identity <- function(x) 1 > > # check that isotropic is length preserving for vectors of lengths 1--1000 > all(sapply(1:1000, function(x) length(isotropic(identity)(rep(1, x))) == x)) [1] TRUE > > # test that isotropic(identity) is an identity function > all.equal(isotropic(identity)(1:10), 1:10) [1] TRUE > x <- seq(0, 1, length.out=200) > all.equal(isotropic(identity)(x), x) [1] TRUE > > # make sure that isotropic.logjacobian(identity, d.identity) is a 0 function > all.equal(isotropic.logjacobian(identity, d.identity)(1:10), 0) [1] TRUE > > # make sure that 0 as an input does not cause divide-by-zero errors > all.equal(isotropic(identity)(0), 0) [1] TRUE > all.equal(isotropic(identity)(0 * 1:4), rep(0, 4)) [1] TRUE > all.equal(isotropic.logjacobian(identity, d.identity)(0), 0) [1] TRUE > all.equal(isotropic.logjacobian(identity, d.identity)(0 * 1:4), 0) [1] TRUE > > # try isotropic with f(x) = x^2, then we should get > # istropic(f)(x) := |x| * x > f <- function(x) x^2 > all.equal(isotropic(f)(1), 1) [1] TRUE > all.equal(isotropic(f)(c(1, 1)), sqrt(2) * c(1, 1)) [1] TRUE > all.equal(isotropic(f)(c(1, 0, 1)), sqrt(2) * c(1, 0, 1)) [1] TRUE > > # make sure lazy-loading works properly. > g <- function(x) x^2 > g.iso <- isotropic(g) > g <- function(x) x > all.equal(g.iso(2), 2*2) [1] TRUE > mcmc/tests/logitlogidx.R0000644000175100001440000000577713045741240015041 0ustar hornikusers # test outfun (logical index vector) epsilon <- 1e-15 library(mcmc) RNGkind("Marsaglia-Multicarry") set.seed(42) n <- 100 rho <- 0.5 beta0 <- 0.25 beta1 <- 1 beta2 <- 0.5 x1 <- rnorm(n) x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) eta <- beta0 + beta1 * x1 + beta2 * x2 p <- 1 / (1 + exp(- eta)) y <- as.numeric(runif(n) < p) out <- glm(y ~ x1 + x2, family = binomial()) logl <- function(beta) { if (length(beta) != 3) stop("length(beta) != 3") beta0 <- beta[1] beta1 <- beta[2] beta2 <- beta[3] eta <- beta0 + beta1 * x1 + beta2 * x2 p <- exp(eta) / (1 + exp(eta)) return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) } out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) out.metro$accept out.metro <- metrop(out.metro, scale = 0.1) out.metro$accept out.metro <- metrop(out.metro, scale = 0.5) out.metro$accept apply(out.metro$batch, 2, mean) out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, scale = 0.5, debug = TRUE, outfun = seq(1:3) > 1) niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac niter == nrow(out.metro$current) niter == nrow(out.metro$proposal) all(out.metro$current[1, ] == out.metro$initial) all(out.metro$current[niter, ] == out.metro$final) | all(out.metro$proposal[niter, ] == out.metro$final) .Random.seed <- out.metro$initial.seed d <- ncol(out.metro$proposal) n <- nrow(out.metro$proposal) my.proposal <- matrix(NA, n, d) my.u <- double(n) ska <- out.metro$scale for (i in 1:n) { my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) if (is.na(out.metro$u[i])) { my.u[i] <- NA } else { my.u[i] <- runif(1) } } max(abs(out.metro$proposal - my.proposal)) < epsilon all(is.na(out.metro$u) == is.na(my.u)) all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) my.curr.log.green <- apply(out.metro$current, 1, logl) my.prop.log.green <- apply(out.metro$proposal, 1, logl) all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) foo <- my.prop.log.green - my.curr.log.green max(abs(foo - out.metro$log.green)) < epsilon my.accept <- is.na(my.u) | my.u < exp(foo) sum(my.accept) == round(n * out.metro$accept) if (my.accept[niter]) { all(out.metro$proposal[niter, ] == out.metro$final) } else { all(out.metro$current[niter, ] == out.metro$final) } my.current <- out.metro$current my.current[my.accept, ] <- my.proposal[my.accept, ] my.current <- rbind(out.metro$initial, my.current[- niter, ]) max(abs(out.metro$current - my.current)) < epsilon my.path <- matrix(NA, n, d) my.path[my.accept, ] <- out.metro$proposal[my.accept, ] my.path[! my.accept, ] <- out.metro$current[! my.accept, ] nspac <- out.metro$nspac my.path <- my.path[seq(nspac, niter, by = nspac), ] fred <- my.path[ , out.metro$outfun] k <- ncol(fred) foom <- array(as.vector(t(fred)), c(k, out.metro$blen, out.metro$nbatch)) boom <- t(apply(foom, c(1, 3), mean)) all(dim(boom) == dim(out.metro$batch)) max(abs(boom - out.metro$batch)) < epsilon mcmc/tests/logitvec.Rout.save0000644000175100001440000001014213045741600015773 0ustar hornikusers R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > # test vector (diag(foo)) scaling > > epsilon <- 1e-15 > > library(mcmc) > > RNGkind("Marsaglia-Multicarry") > set.seed(42) > > n <- 100 > rho <- 0.5 > beta0 <- 0.25 > beta1 <- 1 > beta2 <- 0.5 > > x1 <- rnorm(n) > x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) > eta <- beta0 + beta1 * x1 + beta2 * x2 > p <- 1 / (1 + exp(- eta)) > y <- as.numeric(runif(n) < p) > > out <- glm(y ~ x1 + x2, family = binomial()) > > logl <- function(beta) { + if (length(beta) != 3) stop("length(beta) != 3") + beta0 <- beta[1] + beta1 <- beta[2] + beta2 <- beta[3] + eta <- beta0 + beta1 * x1 + beta2 * x2 + p <- exp(eta) / (1 + exp(eta)) + return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) + } > > out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) > out.metro$accept [1] 0.982 > > out.metro <- metrop(out.metro, scale = 0.1) > out.metro$accept [1] 0.795 > > out.metro <- metrop(out.metro, scale = 0.5) > out.metro$accept [1] 0.264 > > apply(out.metro$batch, 2, mean) [1] 0.06080257 1.42304941 0.52634149 > sally <- apply(out.metro$batch, 2, sd) > > out.metro <- metrop(out.metro, scale = sally) > out.metro$accept [1] 0.398 > > out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, + scale = sally, debug = TRUE) > > niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac > niter == nrow(out.metro$current) [1] TRUE > niter == nrow(out.metro$proposal) [1] TRUE > all(out.metro$current[1, ] == out.metro$initial) [1] TRUE > all(out.metro$current[niter, ] == out.metro$final) | + all(out.metro$proposal[niter, ] == out.metro$final) [1] TRUE > > .Random.seed <- out.metro$initial.seed > d <- ncol(out.metro$proposal) > n <- nrow(out.metro$proposal) > my.proposal <- matrix(NA, n, d) > my.u <- double(n) > ska <- out.metro$scale > for (i in 1:n) { + my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) + if (is.na(out.metro$u[i])) { + my.u[i] <- NA + } else { + my.u[i] <- runif(1) + } + } > max(abs(out.metro$proposal - my.proposal)) < epsilon [1] TRUE > > all(is.na(out.metro$u) == is.na(my.u)) [1] TRUE > all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) [1] TRUE > > my.curr.log.green <- apply(out.metro$current, 1, logl) > my.prop.log.green <- apply(out.metro$proposal, 1, logl) > all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) [1] TRUE > foo <- my.prop.log.green - my.curr.log.green > max(abs(foo - out.metro$log.green)) < epsilon [1] TRUE > > my.accept <- is.na(my.u) | my.u < exp(foo) > sum(my.accept) == round(n * out.metro$accept) [1] TRUE > if (my.accept[niter]) { + all(out.metro$proposal[niter, ] == out.metro$final) + } else { + all(out.metro$current[niter, ] == out.metro$final) + } [1] TRUE > > my.current <- out.metro$current > my.current[my.accept, ] <- my.proposal[my.accept, ] > my.current <- rbind(out.metro$initial, my.current[- niter, ]) > max(abs(out.metro$current - my.current)) < epsilon [1] TRUE > > my.path <- matrix(NA, n, d) > my.path[my.accept, ] <- out.metro$proposal[my.accept, ] > my.path[! my.accept, ] <- out.metro$current[! my.accept, ] > nspac <- out.metro$nspac > > my.path <- my.path[seq(nspac, niter, by = nspac), ] > > fred <- my.path > k <- ncol(fred) > > foom <- array(as.vector(t(fred)), c(k, out.metro$blen, out.metro$nbatch)) > boom <- t(apply(foom, c(1, 3), mean)) > > all(dim(boom) == dim(out.metro$batch)) [1] TRUE > max(abs(boom - out.metro$batch)) < epsilon [1] TRUE > > mcmc/tests/initseq.Rout.save0000644000175100001440000000426613062551372015651 0ustar hornikusers R version 3.3.3 (2017-03-06) -- "Another Canoe" Copyright (C) 2017 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > library(mcmc) > > set.seed(42) > > n <- 1e5 > rho <- 0.99 > > x <- arima.sim(model = list(ar = rho), n = n) > gamma <- acf(x, lag.max = 1999, type = "covariance", + plot = FALSE)$acf > k <- seq(along = gamma) > Gamma <- gamma[k %% 2 == 1] + gamma[k %% 2 == 0] > k <- min(seq(along = Gamma)[Gamma < 0]) > Gamma <- Gamma[1:k] > Gamma[k] < 0 [1] TRUE > Gamma[k] <- 0 > > out <- .Call(mcmc:::C_initseq, x - mean(x)) > names(out) [1] "gamma0" "Gamma.pos" "Gamma.dec" "Gamma.con" "var.pos" "var.dec" [7] "var.con" > > all.equal(gamma[1], out$gamma0) [1] TRUE > > length(out$Gamma.pos) == length(Gamma) [1] TRUE > all.equal(out$Gamma.pos, Gamma) [1] TRUE > > Gamma.dec <- cummin(Gamma) > all.equal(out$Gamma.dec, Gamma.dec) [1] TRUE > > library(Iso) Iso 0.0-17 > Gamma.con <- Gamma.dec[1] + cumsum(c(0, pava(diff(Gamma.dec)))) > all.equal(out$Gamma.con, Gamma.con) [1] TRUE > > all.equal(0, min(out$Gamma.pos - out$Gamma.dec)) [1] TRUE > max(diff(out$Gamma.dec)) < sqrt(.Machine$double.eps) [1] TRUE > > all.equal(0, min(out$Gamma.dec - out$Gamma.con)) [1] TRUE > min(diff(diff(out$Gamma.con))) > (- sqrt(.Machine$double.eps)) [1] TRUE > > all.equal(2 * sum(out$Gamma.pos) - out$gamma0, out$var.pos) [1] TRUE > all.equal(2 * sum(out$Gamma.dec) - out$gamma0, out$var.dec) [1] TRUE > all.equal(2 * sum(out$Gamma.con) - out$gamma0, out$var.con) [1] TRUE > > rev(out$Gamma.pos)[1] == 0 [1] TRUE > rev(out$Gamma.dec)[1] == 0 [1] TRUE > all.equal(rev(out$Gamma.con)[1], 0) [1] TRUE > > > proc.time() user system elapsed 0.688 0.016 0.695 mcmc/tests/logitnegidx.R0000644000175100001440000000576713045741240015030 0ustar hornikusers # test outfun (negative index vector) epsilon <- 1e-15 library(mcmc) RNGkind("Marsaglia-Multicarry") set.seed(42) n <- 100 rho <- 0.5 beta0 <- 0.25 beta1 <- 1 beta2 <- 0.5 x1 <- rnorm(n) x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) eta <- beta0 + beta1 * x1 + beta2 * x2 p <- 1 / (1 + exp(- eta)) y <- as.numeric(runif(n) < p) out <- glm(y ~ x1 + x2, family = binomial()) logl <- function(beta) { if (length(beta) != 3) stop("length(beta) != 3") beta0 <- beta[1] beta1 <- beta[2] beta2 <- beta[3] eta <- beta0 + beta1 * x1 + beta2 * x2 p <- exp(eta) / (1 + exp(eta)) return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) } out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) out.metro$accept out.metro <- metrop(out.metro, scale = 0.1) out.metro$accept out.metro <- metrop(out.metro, scale = 0.5) out.metro$accept apply(out.metro$batch, 2, mean) out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, scale = 0.5, debug = TRUE, outfun = - 2) niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac niter == nrow(out.metro$current) niter == nrow(out.metro$proposal) all(out.metro$current[1, ] == out.metro$initial) all(out.metro$current[niter, ] == out.metro$final) | all(out.metro$proposal[niter, ] == out.metro$final) .Random.seed <- out.metro$initial.seed d <- ncol(out.metro$proposal) n <- nrow(out.metro$proposal) my.proposal <- matrix(NA, n, d) my.u <- double(n) ska <- out.metro$scale for (i in 1:n) { my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) if (is.na(out.metro$u[i])) { my.u[i] <- NA } else { my.u[i] <- runif(1) } } max(abs(out.metro$proposal - my.proposal)) < epsilon all(is.na(out.metro$u) == is.na(my.u)) all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) my.curr.log.green <- apply(out.metro$current, 1, logl) my.prop.log.green <- apply(out.metro$proposal, 1, logl) all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) foo <- my.prop.log.green - my.curr.log.green max(abs(foo - out.metro$log.green)) < epsilon my.accept <- is.na(my.u) | my.u < exp(foo) sum(my.accept) == round(n * out.metro$accept) if (my.accept[niter]) { all(out.metro$proposal[niter, ] == out.metro$final) } else { all(out.metro$current[niter, ] == out.metro$final) } my.current <- out.metro$current my.current[my.accept, ] <- my.proposal[my.accept, ] my.current <- rbind(out.metro$initial, my.current[- niter, ]) max(abs(out.metro$current - my.current)) < epsilon my.path <- matrix(NA, n, d) my.path[my.accept, ] <- out.metro$proposal[my.accept, ] my.path[! my.accept, ] <- out.metro$current[! my.accept, ] nspac <- out.metro$nspac my.path <- my.path[seq(nspac, niter, by = nspac), ] fred <- my.path[ , out.metro$outfun] k <- ncol(fred) foom <- array(as.vector(t(fred)), c(k, out.metro$blen, out.metro$nbatch)) boom <- t(apply(foom, c(1, 3), mean)) all(dim(boom) == dim(out.metro$batch)) max(abs(boom - out.metro$batch)) < epsilon mcmc/tests/logit.Rout.save0000644000175100001440000001140313045741600015276 0ustar hornikusers R version 3.2.1 (2015-06-18) -- "World-Famous Astronaut" Copyright (C) 2015 The R Foundation for Statistical Computing Platform: i686-pc-linux-gnu (32-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > epsilon <- 1e-15 > > library(mcmc) > > RNGkind("Marsaglia-Multicarry") > set.seed(42) > > options(digits = 3) > > n <- 100 > rho <- 0.5 > beta0 <- 0.25 > beta1 <- 1 > beta2 <- 0.5 > > x1 <- rnorm(n) > x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) > eta <- beta0 + beta1 * x1 + beta2 * x2 > p <- 1 / (1 + exp(- eta)) > y <- as.numeric(runif(n) < p) > > out <- glm(y ~ x1 + x2, family = binomial()) > summary(out) Call: glm(formula = y ~ x1 + x2, family = binomial()) Deviance Residuals: Min 1Q Median 3Q Max -2.064 -0.821 -0.246 0.840 2.070 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 0.0599 0.2477 0.24 0.80905 x1 1.3682 0.3844 3.56 0.00037 *** x2 0.4760 0.3135 1.52 0.12886 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 138.469 on 99 degrees of freedom Residual deviance: 99.293 on 97 degrees of freedom AIC: 105.3 Number of Fisher Scoring iterations: 5 > > mlogl <- function(beta) { + if (length(beta) != 3) stop("length(beta) != 3") + beta0 <- beta[1] + beta1 <- beta[2] + beta2 <- beta[3] + eta <- beta0 + beta1 * x1 + beta2 * x2 + p <- exp(eta) / (1 + exp(eta)) + return(- sum(log(p[y == 1])) - sum(log(1 - p[y == 0]))) + } > > out.nlm <- nlm(mlogl, coefficients(out), print.level = 2) iteration = 0 Parameter: [1] 0.0599 1.3682 0.4760 Function Value [1] 49.6 Gradient: [1] 8.24e-06 5.50e-06 6.08e-06 Relative gradient close to zero. Current iterate is probably solution. > > logl <- function(beta) { + if (length(beta) != 3) stop("length(beta) != 3") + beta0 <- beta[1] + beta1 <- beta[2] + beta2 <- beta[3] + eta <- beta0 + beta1 * x1 + beta2 * x2 + p <- exp(eta) / (1 + exp(eta)) + return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) + } > > out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) > out.metro$accept [1] 0.982 > > out.metro <- metrop(out.metro, scale = 0.1) > out.metro$accept [1] 0.795 > > out.metro <- metrop(out.metro, scale = 0.5) > out.metro$accept [1] 0.264 > > apply(out.metro$batch, 2, mean) [1] 0.0608 1.4230 0.5263 > var(out.metro$batch) [,1] [,2] [,3] [1,] 0.06755 -0.0108 0.00989 [2,] -0.01080 0.1758 -0.06155 [3,] 0.00989 -0.0615 0.10483 > olbm(out.metro$batch, 25) [,1] [,2] [,3] [1,] 4.54e-04 9.47e-05 -1.92e-05 [2,] 9.47e-05 1.84e-03 -6.45e-04 [3,] -1.92e-05 -6.45e-04 9.09e-04 > > saveseed <- .Random.seed > out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, + scale = 0.5, debug = TRUE) > > all(out.metro$batch[- out.metro$nbatch, ] == out.metro$current[- 1, ]) [1] TRUE > all(out.metro$current[1, ] == out.metro$initial) [1] TRUE > all(out.metro$batch[out.metro$nbatch, ] == out.metro$final) [1] TRUE > > .Random.seed <- saveseed > d <- ncol(out.metro$proposal) > n <- nrow(out.metro$proposal) > my.proposal <- matrix(NA, n, d) > my.u <- double(n) > ska <- out.metro$scale > for (i in 1:n) { + my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) + if (is.na(out.metro$u[i])) { + my.u[i] <- NA + } else { + my.u[i] <- runif(1) + } + } > max(abs(out.metro$proposal - my.proposal)) < epsilon [1] TRUE > all(is.na(out.metro$u) == is.na(my.u)) [1] TRUE > all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) [1] TRUE > > my.curr.log.green <- apply(out.metro$current, 1, logl) > my.prop.log.green <- apply(out.metro$proposal, 1, logl) > all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) [1] TRUE > foo <- my.prop.log.green - my.curr.log.green > max(abs(foo - out.metro$log.green)) < epsilon [1] TRUE > > my.accept <- is.na(my.u) | my.u < exp(foo) > sum(my.accept) == round(n * out.metro$accept) [1] TRUE > > my.path <- matrix(NA, n, d) > my.path[my.accept, ] <- out.metro$proposal[my.accept, ] > my.path[! my.accept, ] <- out.metro$current[! my.accept, ] > > all(my.path == out.metro$batch) [1] TRUE > > > proc.time() user system elapsed 0.532 0.028 0.551 mcmc/tests/morph.Rout.save0000644000175100001440000001125513045741600015312 0ustar hornikusers R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(mcmc) > isotropic <- mcmc:::isotropic > isotropic.logjacobian <- mcmc:::isotropic.logjacobian > > # make sure morph identity works properly > TestMorphIdentity <- function(m.id) { + ident.func <- function(x) x + if (!all.equal(m.id$transform(1:10), 1:10)) + return(FALSE) + if (!all.equal(m.id$inverse(1:10), 1:10)) + return(FALSE) + x <- seq(-1,1, length.out=15) + if (!all.equal(sapply(x, m.id$lud(function(x) dnorm(x, log=TRUE))), + dnorm(x, log=TRUE))) + return(FALSE) + if (!all.equal(m.id$outfun(ident.func)(x), x)) + return(FALSE) + return(TRUE) + } > > TestMorphIdentity(morph()) [1] TRUE > TestMorphIdentity(morph.identity()) [1] TRUE > > TestMorphIdentityOutfun <- function(m) { + f <- m$outfun(NULL) + x <- 1:20 + if (!identical(x, f(x))) + return(FALSE) + f <- m$outfun(c(6, 8)) + if (!identical(x[c(6, 8)], f(x))) + return(FALSE) + i <- rep(FALSE, 20) + i[c(1, 3, 5)] <- TRUE + f <- m$outfun(i) + if (!identical(x[i], f(x))) + return(FALSE) + return(TRUE) + } > > TestMorphIdentityOutfun(morph()) [1] TRUE > TestMorphIdentityOutfun(morph.identity()) [1] TRUE > > # make sure that morph and morph.identity give back the same things > all.equal(sort(names(morph.identity())), sort(names(morph(b=1)))) [1] TRUE > > # test center parameter, univariate version > zero.func <- function(x) 0 > center <- 2 > x <- seq(-1,1, length.out=15) > morph.center <- morph(center=center) > all.equal(sapply(x, morph.center$transform), x-center) [1] TRUE > all.equal(sapply(x, morph.center$inverse), x+center) [1] TRUE > all.equal(sapply(x, morph.center$lud(function(y) dnorm(y, log=TRUE))), + dnorm(x, log=TRUE, mean=-2)) [1] TRUE > > # test center parameter, multivariate version > center <- 1:4 > x <- rep(0, 4) > morph.center <- morph(center=center) > lud.mult.dnorm <- function(x) prod(dnorm(x, log=TRUE)) > all.equal(morph.center$transform(x), x-center) [1] TRUE > all.equal(morph.center$inverse(x), x+center) [1] TRUE > all.equal(morph.center$lud(lud.mult.dnorm)(x), + lud.mult.dnorm(x - center)) [1] TRUE > # test 'r'. > r <- 1 > morph.r <- morph(r=r) > x <- seq(-1, 1, length.out=20) > all.equal(sapply(x, morph.r$lud(function(x) dnorm(x, log=TRUE))), + dnorm(x, log=TRUE)) [1] TRUE > x <- seq(1.1, 2, length.out=10) > all(sapply(x, morph.r$lud(function(x) dnorm(x, log=TRUE))) + != + dnorm(x, log=TRUE)) [1] TRUE > > TestExponentialEvenPWithRInverse <- function() { + r <- 0.3 + p <- 2.2 + morph.r <- morph(r=r, p=p) + x <- seq(0, r, length.out=20) + all.equal(x, sapply(x, morph.r$inverse)) + } > > TestExponentialEvenPWithRInverse() [1] TRUE > > # make sure morph$lud passes '...' arguments. > mean <- 2 > ident.morph <- morph() > dnorm.morph <- ident.morph$lud(function(x, mean=0) + dnorm(x, mean=mean, log=TRUE)) > all.equal(dnorm.morph(2, mean), dnorm(2, mean=mean, log=TRUE)) [1] TRUE > x <- seq(-3, 3, length.out=20) > m2 <- morph(r=10) > dnorm.morph <- m2$lud(function(x, mean) + dnorm(x, mean=mean, log=TRUE)) > all.equal(sapply(x, function(y) dnorm.morph(y, 2)), + dnorm(x, mean=2, log=TRUE)) [1] TRUE > > # make sure morph$outfun passes '...' arguments. > outfun.orig <- function(x, mean) x + mean > ident.morph <- morph() > mean <- 1 > outfun.morph <- ident.morph$outfun(outfun.orig) > all.equal(outfun.morph(1:10, mean), 1:10+mean) [1] TRUE > > m2 <- morph(r=10) > outfun.morph <- m2$outfun(outfun.orig) > all.equal(sapply(1:10, function(x) outfun.morph(x, mean)), 1:10+mean) [1] TRUE > > ########################################################################### > # test built-in exponential and polynomial transformations. > f <- morph(b=3) > x <- seq(0, 10, length.out=100) > all.equal(x, sapply(sapply(x, f$transform), f$inverse)) [1] TRUE > > f <- morph(p=3) > all.equal(x, sapply(sapply(x, f$transform), f$inverse)) [1] TRUE > > f <- morph(p=3, r=10) > all.equal(-10:10, Vectorize(f$transform)(-10:10)) [1] TRUE > > f <- morph(p=3, b=1) > all.equal(x, sapply(sapply(x, f$transform), f$inverse)) [1] TRUE > mcmc/tests/saveseedmorph.Rout.save0000644000175100001440000000256013045741600017031 0ustar hornikusers R version 2.15.0 (2012-03-30) Copyright (C) 2012 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: i686-pc-linux-gnu (32-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > library(mcmc) > > set.seed(42) > > h <- function(x) if (all(x >= 0) && sum(x) <= 1) return(1) else return(-Inf) > out <- morph.metrop(obj = h, initial = rep(0, 5), nbatch = 100, blen = 17, + nspac = 3, scale = 0.1) > > out1 <- morph.metrop(out) > out2 <- morph.metrop(out1) > out3 <- morph.metrop(out, nbatch = 2 * out$nbatch) > > fred <- rbind(out1$batch, out2$batch) > identical(fred, out3$batch) [1] TRUE > > out <- morph.metrop(out, morph = morph(p = 2.2, r = 0.3)) > > out1 <- morph.metrop(out) > out2 <- morph.metrop(out1) > out3 <- morph.metrop(out, nbatch = 2 * out$nbatch) > > fred <- rbind(out1$batch, out2$batch) > identical(fred, out3$batch) [1] TRUE > > > proc.time() user system elapsed 0.752 0.036 0.767 mcmc/tests/circle.R0000644000175100001440000000375113045741240013743 0ustar hornikusers epsilon <- 1e-15 library(mcmc) RNGkind("Marsaglia-Multicarry") set.seed(42) d <- 5 logh <- function(x) { if (! is.numeric(x)) stop("x not numeric") if (length(x) != d) stop("length(x) != d") fred <- 1 - sum(x^2) if (fred > 0) return(log(fred)) else return(-Inf) } out.metro <- metrop(logh, rep(0, d), 1e3, scale = 0.01) out.metro$accept out.metro <- metrop(out.metro, scale = 0.1) out.metro$accept out.metro <- metrop(out.metro, scale = 0.5) out.metro$accept out.metro <- metrop(out.metro, scale = 0.4) out.metro$accept out.metro <- metrop(out.metro, nbatch = 1e2, debug = TRUE) all(out.metro$batch[- out.metro$nbatch, ] == out.metro$current[- 1, ]) all(out.metro$current[1, ] == out.metro$initial) all(out.metro$batch[out.metro$nbatch, ] == out.metro$final) .Random.seed <- out.metro$initial.seed d <- ncol(out.metro$proposal) n <- nrow(out.metro$proposal) my.proposal <- matrix(NA, n, d) my.u <- double(n) ska <- out.metro$scale for (i in 1:n) { my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) if (is.na(out.metro$u[i])) { my.u[i] <- NA } else { my.u[i] <- runif(1) } } max(abs(out.metro$proposal - my.proposal)) < epsilon all(is.na(out.metro$u) == is.na(my.u)) all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) my.curr.log.green <- apply(out.metro$current, 1, logh) my.prop.log.green <- apply(out.metro$proposal, 1, logh) all(is.na(out.metro$u) == ((my.prop.log.green == -Inf) | (my.prop.log.green > my.curr.log.green))) foo <- my.prop.log.green - my.curr.log.green blurfle <- foo - out.metro$log.green blurfle[foo == -Inf & out.metro$log.green == -Inf] <- 0 max(blurfle) < epsilon my.accept <- (my.prop.log.green > -Inf) & (is.na(my.u) | my.u < exp(foo)) sum(my.accept) == round(n * out.metro$accept) my.path <- matrix(NA, n, d) my.path[my.accept, ] <- out.metro$proposal[my.accept, ] my.path[! my.accept, ] <- out.metro$current[! my.accept, ] all(my.path == out.metro$batch) mcmc/tests/morphtoo.R0000644000175100001440000000233713045741600014350 0ustar hornikusers library(mcmc) x <- seq(0, 10, length = 10001) ### sub-exponentially light transformation b <- 0.5 fsub <- morph(b = b) y <- unlist(Map(fsub$inverse, x)) myfsub <- function(x) ifelse(x > 1 / b, exp(b * x) - exp(1) / 3, (x * b)^3 * exp(1) / 6 + x * b * exp(1) / 2) y2 <- myfsub(x) all.equal(y, y2, tolerance = 1e-14) z <- unlist(Map(fsub$transform, y)) all.equal(z, x, tolerance = 1e-14) ### exponentially light transformation r <- 5 p <- 3 fp3 <- morph(r = r) y <- unlist(Map(fp3$inverse, x)) myfp3 <- function(x) ifelse(x < r, x, x + (x - r)^p) y2 <- myfp3(x) all.equal(y, y2, tolerance = 1e-14) z <- unlist(Map(fp3$transform, y)) all.equal(z, x, tolerance = 1e-12) ### both together fboth <- morph(b = b, r = r) y <- unlist(Map(fboth$inverse, x)) y2 <- myfsub(myfp3(x)) all.equal(y, y2, tolerance = 1e-14) z <- unlist(Map(fboth$transform, y)) all.equal(z, x, tolerance = 1e-12) ### exponentially light transformation with p != 3 r <- 5 p <- 2.2 fpo <- morph(r = r, p = p) y <- unlist(Map(fpo$inverse, x)) myfpo <- function(x) ifelse(x < r, x, x + (x - r)^p) y2 <- myfpo(x) all.equal(y, y2, tolerance = 1e-14) z <- unlist(Map(fpo$transform, y)) all.equal(z, x, tolerance = 1e-14) mcmc/tests/logitvec.R0000644000175100001440000000607513045741240014320 0ustar hornikusers # test vector (diag(foo)) scaling epsilon <- 1e-15 library(mcmc) RNGkind("Marsaglia-Multicarry") set.seed(42) n <- 100 rho <- 0.5 beta0 <- 0.25 beta1 <- 1 beta2 <- 0.5 x1 <- rnorm(n) x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) eta <- beta0 + beta1 * x1 + beta2 * x2 p <- 1 / (1 + exp(- eta)) y <- as.numeric(runif(n) < p) out <- glm(y ~ x1 + x2, family = binomial()) logl <- function(beta) { if (length(beta) != 3) stop("length(beta) != 3") beta0 <- beta[1] beta1 <- beta[2] beta2 <- beta[3] eta <- beta0 + beta1 * x1 + beta2 * x2 p <- exp(eta) / (1 + exp(eta)) return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) } out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) out.metro$accept out.metro <- metrop(out.metro, scale = 0.1) out.metro$accept out.metro <- metrop(out.metro, scale = 0.5) out.metro$accept apply(out.metro$batch, 2, mean) sally <- apply(out.metro$batch, 2, sd) out.metro <- metrop(out.metro, scale = sally) out.metro$accept out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, scale = sally, debug = TRUE) niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac niter == nrow(out.metro$current) niter == nrow(out.metro$proposal) all(out.metro$current[1, ] == out.metro$initial) all(out.metro$current[niter, ] == out.metro$final) | all(out.metro$proposal[niter, ] == out.metro$final) .Random.seed <- out.metro$initial.seed d <- ncol(out.metro$proposal) n <- nrow(out.metro$proposal) my.proposal <- matrix(NA, n, d) my.u <- double(n) ska <- out.metro$scale for (i in 1:n) { my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) if (is.na(out.metro$u[i])) { my.u[i] <- NA } else { my.u[i] <- runif(1) } } max(abs(out.metro$proposal - my.proposal)) < epsilon all(is.na(out.metro$u) == is.na(my.u)) all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) my.curr.log.green <- apply(out.metro$current, 1, logl) my.prop.log.green <- apply(out.metro$proposal, 1, logl) all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) foo <- my.prop.log.green - my.curr.log.green max(abs(foo - out.metro$log.green)) < epsilon my.accept <- is.na(my.u) | my.u < exp(foo) sum(my.accept) == round(n * out.metro$accept) if (my.accept[niter]) { all(out.metro$proposal[niter, ] == out.metro$final) } else { all(out.metro$current[niter, ] == out.metro$final) } my.current <- out.metro$current my.current[my.accept, ] <- my.proposal[my.accept, ] my.current <- rbind(out.metro$initial, my.current[- niter, ]) max(abs(out.metro$current - my.current)) < epsilon my.path <- matrix(NA, n, d) my.path[my.accept, ] <- out.metro$proposal[my.accept, ] my.path[! my.accept, ] <- out.metro$current[! my.accept, ] nspac <- out.metro$nspac my.path <- my.path[seq(nspac, niter, by = nspac), ] fred <- my.path k <- ncol(fred) foom <- array(as.vector(t(fred)), c(k, out.metro$blen, out.metro$nbatch)) boom <- t(apply(foom, c(1, 3), mean)) all(dim(boom) == dim(out.metro$batch)) max(abs(boom - out.metro$batch)) < epsilon mcmc/tests/temp-ser.R0000644000175100001440000002157713045741600014244 0ustar hornikusers library(mcmc) set.seed(42) data(foo) attach(foo) out <- glm(y ~ x1 + x2 + x3, family = binomial, x = TRUE) summary(out) modmat <- out$x models <- cbind(rep(0:1, each = 4), rep(rep(0:1, times = 2), each = 2), rep(0:1, times = 4)) exes <- paste("x", 1:3, sep = "") models[nrow(models), ] beta.initial <- c(nrow(models), out$coefficients) neighbors <- matrix(FALSE, nrow(models), nrow(models)) for (i in 1:nrow(neighbors)) { for (j in 1:ncol(neighbors)) { foo <- models[i, ] bar <- models[j, ] if (sum(foo != bar) == 1) neighbors[i, j] <- TRUE } } neighbors ludfun <- function(state, log.pseudo.prior, ...) { stopifnot(is.numeric(state)) stopifnot(length(state) == ncol(models) + 2) icomp <- state[1] stopifnot(icomp == as.integer(icomp)) stopifnot(1 <= icomp && icomp <= nrow(models)) stopifnot(is.numeric(log.pseudo.prior)) stopifnot(length(log.pseudo.prior) == nrow(models)) beta <- state[-1] inies <- c(TRUE, as.logical(models[icomp, ])) beta.logl <- beta beta.logl[! inies] <- 0 eta <- as.numeric(modmat %*% beta.logl) logp <- ifelse(eta < 0, eta - log1p(exp(eta)), - log1p(exp(- eta))) logq <- ifelse(eta < 0, - log1p(exp(eta)), - eta - log1p(exp(- eta))) logl <- sum(logp[y == 1]) + sum(logq[y == 0]) val <- logl - sum(beta^2) / 2 + log.pseudo.prior[icomp] return(val) } qux <- c(25.01, 5.875, 9.028, 0.6959, 11.73, 2.367, 5.864, 0.0) out <- temper(ludfun, initial = beta.initial, neighbors = neighbors, nbatch = 25, blen = 20, nspac = 5, scale = 0.56789, debug = TRUE, log.pseudo.prior = qux) names(out) apply(out$ibatch, 2, mean) ### check decision about within-component or jump/swap identical(out$unif.which < 0.5, out$which) identical(out$which, out$proposal[ , 1] == out$state[ , 1]) ### check hastings ratio calculated correctly foo <- apply(out$state, 1, ludfun, log.pseudo.prior = qux) bar <- apply(out$proposal, 1, ludfun, log.pseudo.prior = qux) all.equal(bar - foo, out$log.hastings) ### check hastings rejection decided correctly identical(out$log.hastings >= 0, is.na(out$unif.hastings)) all(out$log.hastings < 0 | out$acceptd) identical(out$acceptd, out$log.hastings >= 0 | out$unif.hastings < exp(out$log.hastings)) ### check acceptance carried out or not (according to decision) correctly before <- out$state after <- before after[- dim(after)[1], ] <- before[-1, ] after[dim(after)[1], ] <- out$final my.after <- before my.after[out$acceptd, ] <- out$proposal[out$acceptd, ] identical(after, my.after) ### check within-component proposal my.coproposal.within <- out$state[out$which, ] proposal.within <- out$proposal[out$which, ] my.z <- out$norm[out$which, ] my.proposal.within <- my.coproposal.within my.proposal.within[ , -1] <- my.coproposal.within[ , -1] + out$scale * my.z all.equal(proposal.within, my.proposal.within) ### check swap proposal coproposal.swap <- out$state[! out$which, ] proposal.swap <- out$proposal[! out$which, ] unif.choose.swap <- out$unif.choose[! out$which] my.i <- coproposal.swap[ , 1] nneighbors <- apply(out$neighbors, 1, sum) my.nneighbors <- nneighbors[my.i] my.k <- floor(my.nneighbors * unif.choose.swap) + 1 my.j <- my.k foo <- seq(1, ncol(out$neighbors)) for (i in seq(along = my.j)) { my.j[i] <- (foo[out$neighbors[my.i[i], ]])[my.k[i]] } identical(coproposal.swap[ , 1], my.i) identical(proposal.swap[ , 1], my.j) ### check standard normal and uniform random numbers are as purported save.Random.seed <- .Random.seed .Random.seed <- out$initial.seed nx <- length(out$initial) - 1 niter <- out$nbatch * out$blen * out$nspac my.norm <- matrix(NA, nrow = nrow(out$norm), ncol = ncol(out$norm)) my.unif.which <- rep(NA, niter) my.unif.hastings <- rep(NA, niter) my.unif.choose <- rep(NA, niter) for (iiter in 1:niter) { my.unif.which[iiter] <- runif(1) if (out$which[iiter]) { my.norm[iiter, ] <- rnorm(nx) if (out$log.hastings[iiter] < 0) my.unif.hastings[iiter] <- runif(1) } else { my.unif.choose[iiter] <- runif(1) if (out$log.hastings[iiter] < 0) my.unif.hastings[iiter] <- runif(1) } } identical(my.norm, out$norm) identical(my.unif.which, out$unif.which) identical(my.unif.hastings, out$unif.hastings) identical(my.unif.choose, out$unif.choose) .Random.seed <- save.Random.seed ### check batch means my.xstate <- after[ , -1] foo <- my.xstate[seq(1, niter) %% out$nspac == 0, ] foo <- array(as.vector(foo), dim = c(out$blen, out$nbatch, dim(foo)[2])) foo <- apply(foo, c(2, 3), mean) all.equal(foo, out$batch) ### check ibatch means my.istate <- after[ , 1] my.istate.matrix <- matrix(0, length(my.istate), nrow(models)) for (i in 1:nrow(my.istate.matrix)) my.istate.matrix[i, my.istate[i]] <- 1 foo <- my.istate.matrix[seq(1, niter) %% out$nspac == 0, ] foo <- array(as.vector(foo), dim = c(out$blen, out$nbatch, dim(foo)[2])) foo <- apply(foo, c(2, 3), mean) all.equal(foo, out$ibatch) ### check acceptance rates nmodel <- nrow(out$neighbors) accept.within <- out$acceptd[out$which] my.i.within <- out$state[out$which, 1] my.i.within.accept <- my.i.within[accept.within] my.acceptx.numer <- tabulate(my.i.within.accept, nbins = nmodel) my.acceptx.denom <- tabulate(my.i.within, nbins = nmodel) my.acceptx <- my.acceptx.numer / my.acceptx.denom identical(my.acceptx, out$acceptx) accept.swap <- out$acceptd[! out$which] my.i.swap <- out$state[! out$which, 1] my.j.swap <- out$proposal[! out$which, 1] my.accepti <- matrix(NA, nmodel, nmodel) for (i in 1:nmodel) { for (j in 1:nmodel) { if (out$neighbors[i, j]) { my.accepti[i, j] <- mean(accept.swap[my.i.swap == i & my.j.swap == j]) } } } identical(my.accepti, out$accepti) ### check scale vector nx <- ncol(models) + 1 newscale <- rnorm(nx, 0.5, 0.1) out <- temper(out, scale = newscale, log.pseudo.prior = qux) my.coproposal.within <- out$state[out$which, ] proposal.within <- out$proposal[out$which, ] my.z <- out$norm[out$which, ] my.proposal.within <- my.coproposal.within my.proposal.within[ , -1] <- my.coproposal.within[ , -1] + sweep(my.z, 2, out$scale, "*") all.equal(proposal.within, my.proposal.within) ### check scale matrix matscale <- matrix(rnorm(nx * nx, 0.0, 0.1), nx, nx) diag(matscale) <- 0.56789 out <- temper(out, scale = matscale, log.pseudo.prior = qux) my.coproposal.within <- out$state[out$which, ] proposal.within <- out$proposal[out$which, ] my.z <- out$norm[out$which, ] my.proposal.within <- my.coproposal.within my.proposal.within[ , -1] <- my.coproposal.within[ , -1] + my.z %*% t(out$scale) all.equal(proposal.within, my.proposal.within) ### check scale list lisztscale <- list(0.56789, newscale, matscale, matscale, newscale, 0.98765, 0.98765, newscale) out <- temper(out, scale = lisztscale, log.pseudo.prior = qux) my.coproposal.within <- out$state[out$which, ] proposal.within <- out$proposal[out$which, ] my.z <- out$norm[out$which, ] my.proposal.within <- my.coproposal.within for (iiter in 1:nrow(my.z)) { my.i <- my.coproposal.within[iiter, 1] my.scale <- out$scale[[my.i]] if (is.matrix(my.scale)) { my.proposal.within[iiter, -1] <- my.coproposal.within[iiter, -1] + my.z[iiter, , drop = FALSE] %*% t(my.scale) } else { my.proposal.within[iiter, -1] <- my.coproposal.within[iiter, -1] + my.z[iiter, ] * my.scale } } all.equal(proposal.within, my.proposal.within) ### check outfun outfun <- function(state, icomp) { stopifnot(is.matrix(state)) stopifnot(is.numeric(state)) nx <- ncol(initial) ncomp <- nrow(initial) stopifnot(ncol(state) == nx) stopifnot(nrow(state) == ncomp) stopifnot(1 <= icomp & icomp <= ncomp) foo <- state[icomp, ] bar <- foo^2 return(c(foo, bar)) } ncomp <- nrow(models) nx <- length(beta.initial) - 1 outfun <- function(state, icomp, ...) { stopifnot(is.numeric(state)) stopifnot(length(state) == nx + 1) istate <- state[1] stopifnot(istate == as.integer(istate)) stopifnot(1 <= istate && istate <= ncomp) stopifnot(1 <= icomp && icomp <= ncomp) if (istate == icomp) { foo <- state[-1] } else { foo <- rep(0, nx) } bar <- foo^2 return(c(foo, bar)) } out <- temper(ludfun, initial = out$final, neighbors = neighbors, nbatch = 25, blen = 20, nspac = 5, scale = 0.56789, debug = TRUE, outfun = outfun, log.pseudo.prior = qux, icomp = 4) before <- out$state after <- before after[- dim(after)[1], ] <- before[-1, ] after[dim(after)[1], ] <- out$final outies <- apply(after, 1, outfun, icomp = 4) outies <- t(outies) foo <- outies[seq(1, niter) %% out$nspac == 0, ] foo <- array(as.vector(foo), dim = c(out$blen, out$nbatch, dim(foo)[2])) foo <- apply(foo, c(2, 3), mean) all.equal(foo, out$batch) mcmc/tests/logitmat.R0000644000175100001440000000641613045741240014323 0ustar hornikusers # test matrix scaling epsilon <- 1e-15 library(mcmc) RNGkind("Marsaglia-Multicarry") set.seed(42) n <- 100 rho <- 0.5 beta0 <- 0.25 beta1 <- 1 beta2 <- 0.5 x1 <- rnorm(n) x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) eta <- beta0 + beta1 * x1 + beta2 * x2 p <- 1 / (1 + exp(- eta)) y <- as.numeric(runif(n) < p) out <- glm(y ~ x1 + x2, family = binomial()) logl <- function(beta) { if (length(beta) != 3) stop("length(beta) != 3") beta0 <- beta[1] beta1 <- beta[2] beta2 <- beta[3] eta <- beta0 + beta1 * x1 + beta2 * x2 p <- exp(eta) / (1 + exp(eta)) return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) } out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) out.metro$accept out.metro <- metrop(out.metro, scale = 0.1) out.metro$accept out.metro <- metrop(out.metro, scale = 0.5) out.metro$accept apply(out.metro$batch, 2, mean) fred <- var(out.metro$batch) sally <- t(chol(fred)) max(abs(fred - sally %*% t(sally))) < epsilon out.metro <- metrop(out.metro, scale = sally) out.metro$accept out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, scale = sally, debug = TRUE) names(out.metro) niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac niter == nrow(out.metro$current) niter == nrow(out.metro$proposal) all(out.metro$current[1, ] == out.metro$initial) all(out.metro$current[niter, ] == out.metro$final) | all(out.metro$proposal[niter, ] == out.metro$final) .Random.seed <- out.metro$initial.seed d <- ncol(out.metro$proposal) n <- nrow(out.metro$proposal) my.proposal <- matrix(NA, n, d) my.u <- double(n) my.z <- matrix(NA, n, d) ska <- out.metro$scale for (i in 1:n) { zed <- rnorm(d) my.proposal[i, ] <- out.metro$current[i, ] + ska %*% zed if (is.na(out.metro$u[i])) { my.u[i] <- NA } else { my.u[i] <- runif(1) } my.z[i, ] <- zed } max(abs(out.metro$proposal - my.proposal)) < epsilon all(is.na(out.metro$u) == is.na(my.u)) all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) identical(out.metro$z, my.z) my.curr.log.green <- apply(out.metro$current, 1, logl) my.prop.log.green <- apply(out.metro$proposal, 1, logl) all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) foo <- my.prop.log.green - my.curr.log.green max(abs(foo - out.metro$log.green)) < epsilon my.accept <- is.na(my.u) | my.u < exp(foo) sum(my.accept) == round(n * out.metro$accept) if (my.accept[niter]) { all(out.metro$proposal[niter, ] == out.metro$final) } else { all(out.metro$current[niter, ] == out.metro$final) } identical(my.accept, out.metro$debug.accept) my.current <- out.metro$current my.current[my.accept, ] <- my.proposal[my.accept, ] my.current <- rbind(out.metro$initial, my.current[- niter, ]) max(abs(out.metro$current - my.current)) < epsilon my.path <- matrix(NA, n, d) my.path[my.accept, ] <- out.metro$proposal[my.accept, ] my.path[! my.accept, ] <- out.metro$current[! my.accept, ] nspac <- out.metro$nspac my.path <- my.path[seq(nspac, niter, by = nspac), ] fred <- my.path k <- ncol(fred) foom <- array(as.vector(t(fred)), c(k, out.metro$blen, out.metro$nbatch)) boom <- t(apply(foom, c(1, 3), mean)) all(dim(boom) == dim(out.metro$batch)) max(abs(boom - out.metro$batch)) < epsilon mcmc/tests/saveseed.Rout.save0000644000175100001440000000205413045741600015761 0ustar hornikusers R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > library(mcmc) > > set.seed(42) > > h <- function(x) if (all(x >= 0) && sum(x) <= 1) return(1) else return(-Inf) > out <- metrop(h, initial = rep(0, 5), nbatch = 100, blen = 17, nspac = 3, + scale = 0.1) > > save.seed <- .Random.seed > > out1 <- metrop(out) > out2 <- metrop(out1) > out3 <- metrop(out, nbatch = 2 * out$nbatch) > > fred <- rbind(out1$batch, out2$batch) > identical(fred, out3$batch) [1] TRUE > > mcmc/tests/temp-ser-witch.Rout.save0000644000175100001440000001170013074144363017035 0ustar hornikusers R version 3.3.3 (2017-03-06) -- "Another Canoe" Copyright (C) 2017 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > library(mcmc) > > set.seed(42) > > d <- 3 > witch.which <- 1 - (1 / 2)^(1 / d) * (1 / 4)^(seq(0, 5) / d) > witch.which [1] 0.2062995 0.5000000 0.6850197 0.8015749 0.8750000 0.9212549 > > ncomp <- length(witch.which) > > neighbors <- matrix(FALSE, ncomp, ncomp) > neighbors[row(neighbors) == col(neighbors) + 1] <- TRUE > neighbors[row(neighbors) == col(neighbors) - 1] <- TRUE > neighbors[row(neighbors) == col(neighbors) + 2] <- TRUE > neighbors[row(neighbors) == col(neighbors) - 2] <- TRUE > > ludfun <- function(state) { + stopifnot(is.numeric(state)) + stopifnot(length(state) == d + 1) + icomp <- state[1] + stopifnot(icomp == as.integer(icomp)) + stopifnot(1 <= icomp && icomp <= ncomp) + theta <- state[-1] + if (any(abs(theta) > 1.0)) return(-Inf) + bnd <- witch.which[icomp] + if(bnd >= 1.0) + stop(sprintf("witch.which[%d] >= 1.0", icomp)) + if(bnd <= 0.0) + stop(sprintf("witch.which[%d] <= 0.0", icomp)) + if (all(abs(theta) > bnd)) + return(- (d + 1) * log(2) - d * log(1 - bnd)) + return(- (d + 1) * log(2) - log1p(- (1 - bnd)^d)) + } > > initial <- c(1, rep(0, d)) > > out <- temper(ludfun, initial = initial, neighbors = neighbors, + nbatch = 50, blen = 13, nspac = 7, scale = 0.3456789) > > names(out) [1] "lud" "neighbors" "nbatch" "blen" "nspac" [6] "scale" "outfun" "debug" "parallel" "initial.seed" [11] "final.seed" "time" "batch" "acceptx" "accepti" [16] "initial" "final" "ibatch" > > out$acceptx [1] 0.6388889 0.4385246 0.3631714 0.4885246 0.4709677 0.4735516 > > out$accepti [,1] [,2] [,3] [,4] [,5] [,6] [1,] NA 0.5071770 0.2727273 NA NA NA [2,] 0.7070064 NA 0.4355828 0.4186047 NA NA [3,] 0.5816327 0.8039216 NA 0.5888889 0.5662651 NA [4,] NA 0.7415730 0.8571429 NA 0.7857143 0.6626506 [5,] NA NA 0.5204082 0.6516854 NA 0.8378378 [6,] NA NA NA 0.3515152 0.5056818 NA > > colMeans(out$ibatch) [1] 0.1830769 0.2153846 0.1630769 0.1369231 0.1353846 0.1661538 > > ### check that have prob 1 / 2 for corners > > outfun <- function(state) { + stopifnot(is.numeric(state)) + icomp <- state[1] + stopifnot(icomp == as.integer(icomp)) + stopifnot(1 <= icomp && icomp <= length(witch.which)) + theta <- state[-1] + foo <- all(abs(theta) > witch.which[icomp]) + bar <- rep(0, length(witch.which)) + baz <- rep(0, length(witch.which)) + bar[icomp] <- as.numeric(foo) + baz[icomp] <- 1 + return(c(bar, baz)) + } > > out <- temper(out, blen = 103, outfun = outfun, debug = TRUE) > > eta.batch <- out$batch[ , seq(1, ncomp)] > noo.batch <- out$batch[ , seq(ncomp + 1, ncomp + ncomp)] > eta <- colMeans(eta.batch) > noo <- colMeans(noo.batch) > mu <- eta / noo > eta [1] 0.06660194 0.06388350 0.05766990 0.06563107 0.10368932 0.22912621 > noo [1] 0.1365049 0.1258252 0.1293204 0.1370874 0.1716505 0.2996117 > mu [1] 0.4879090 0.5077160 0.4459459 0.4787535 0.6040724 0.7647440 > > eta.batch.rel <- sweep(eta.batch, 2, eta, "/") > noo.batch.rel <- sweep(noo.batch, 2, noo, "/") > mu.batch.rel <- eta.batch.rel - noo.batch.rel > > mu.mcse.rel <- apply(mu.batch.rel, 2, sd) / sqrt(out$nbatch) > mu.mcse.rel [1] 0.05010927 0.07897321 0.09678339 0.12636113 0.11261781 0.07082685 > > foo <- cbind(mu, mu * mu.mcse.rel) > colnames(foo) <- c("means", "MCSE") > foo means MCSE [1,] 0.4879090 0.02444876 [2,] 0.5077160 0.04009596 [3,] 0.4459459 0.04316016 [4,] 0.4787535 0.06049584 [5,] 0.6040724 0.06802931 [6,] 0.7647440 0.05416441 > > ### check decision about within-component or jump/swap > > identical(out$unif.which < 0.5, out$which) [1] TRUE > > identical(out$which, out$proposal[ , 1] == out$state[ , 1]) [1] TRUE > > ### check hastings ratio calculated correctly > > n <- apply(neighbors, 1, sum) > i <- out$state[ , 1] > istar <- out$proposal[ , 1] > foo <- apply(out$state, 1, ludfun) > bar <- apply(out$proposal, 1, ludfun) > my.log.hastings <- bar - foo - log(n[istar]) + log(n[i]) > all.equal(my.log.hastings, out$log.hastings) [1] TRUE > > > proc.time() user system elapsed 2.740 0.028 2.762 mcmc/tests/logitbat.R0000644000175100001440000000565713045741240014316 0ustar hornikusers # test batching (blen) epsilon <- 1e-15 library(mcmc) RNGkind("Marsaglia-Multicarry") set.seed(42) n <- 100 rho <- 0.5 beta0 <- 0.25 beta1 <- 1 beta2 <- 0.5 x1 <- rnorm(n) x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) eta <- beta0 + beta1 * x1 + beta2 * x2 p <- 1 / (1 + exp(- eta)) y <- as.numeric(runif(n) < p) out <- glm(y ~ x1 + x2, family = binomial()) logl <- function(beta) { if (length(beta) != 3) stop("length(beta) != 3") beta0 <- beta[1] beta1 <- beta[2] beta2 <- beta[3] eta <- beta0 + beta1 * x1 + beta2 * x2 p <- exp(eta) / (1 + exp(eta)) return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) } out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) out.metro$accept out.metro <- metrop(out.metro, scale = 0.1) out.metro$accept out.metro <- metrop(out.metro, scale = 0.5) out.metro$accept apply(out.metro$batch, 2, mean) out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, scale = 0.5, debug = TRUE, blen = 5) niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac niter == nrow(out.metro$current) niter == nrow(out.metro$proposal) all(out.metro$current[1, ] == out.metro$initial) all(out.metro$current[niter, ] == out.metro$final) | all(out.metro$proposal[niter, ] == out.metro$final) .Random.seed <- out.metro$initial.seed d <- ncol(out.metro$proposal) n <- nrow(out.metro$proposal) my.proposal <- matrix(NA, n, d) my.u <- double(n) ska <- out.metro$scale for (i in 1:n) { my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) if (is.na(out.metro$u[i])) { my.u[i] <- NA } else { my.u[i] <- runif(1) } } max(abs(out.metro$proposal - my.proposal)) < epsilon all(is.na(out.metro$u) == is.na(my.u)) all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) my.curr.log.green <- apply(out.metro$current, 1, logl) my.prop.log.green <- apply(out.metro$proposal, 1, logl) all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) foo <- my.prop.log.green - my.curr.log.green max(abs(foo - out.metro$log.green)) < epsilon my.accept <- is.na(my.u) | my.u < exp(foo) sum(my.accept) == round(n * out.metro$accept) if (my.accept[niter]) { all(out.metro$proposal[niter, ] == out.metro$final) } else { all(out.metro$current[niter, ] == out.metro$final) } my.current <- out.metro$current my.current[my.accept, ] <- my.proposal[my.accept, ] my.current <- rbind(out.metro$initial, my.current[- niter, ]) max(abs(out.metro$current - my.current)) < epsilon my.path <- matrix(NA, n, d) my.path[my.accept, ] <- out.metro$proposal[my.accept, ] my.path[! my.accept, ] <- out.metro$current[! my.accept, ] nspac <- out.metro$nspac my.path <- my.path[seq(nspac, niter, by = nspac), ] foom <- array(as.vector(t(my.path)), c(d, out.metro$blen, out.metro$nbatch)) boom <- t(apply(foom, c(1, 3), mean)) all(dim(boom) == dim(out.metro$batch)) max(abs(boom - out.metro$batch)) < epsilon mcmc/tests/logitsubbat.R0000644000175100001440000000572713045741240015026 0ustar hornikusers # test batching (blen) and spacing (nspac) together epsilon <- 1e-15 library(mcmc) RNGkind("Marsaglia-Multicarry") set.seed(42) n <- 100 rho <- 0.5 beta0 <- 0.25 beta1 <- 1 beta2 <- 0.5 x1 <- rnorm(n) x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) eta <- beta0 + beta1 * x1 + beta2 * x2 p <- 1 / (1 + exp(- eta)) y <- as.numeric(runif(n) < p) out <- glm(y ~ x1 + x2, family = binomial()) logl <- function(beta) { if (length(beta) != 3) stop("length(beta) != 3") beta0 <- beta[1] beta1 <- beta[2] beta2 <- beta[3] eta <- beta0 + beta1 * x1 + beta2 * x2 p <- exp(eta) / (1 + exp(eta)) return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) } out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) out.metro$accept out.metro <- metrop(out.metro, scale = 0.1) out.metro$accept out.metro <- metrop(out.metro, scale = 0.5) out.metro$accept apply(out.metro$batch, 2, mean) out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, scale = 0.5, debug = TRUE, blen = 5, nspac = 3) niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac niter == nrow(out.metro$current) niter == nrow(out.metro$proposal) all(out.metro$current[1, ] == out.metro$initial) all(out.metro$current[niter, ] == out.metro$final) | all(out.metro$proposal[niter, ] == out.metro$final) .Random.seed <- out.metro$initial.seed d <- ncol(out.metro$proposal) n <- nrow(out.metro$proposal) my.proposal <- matrix(NA, n, d) my.u <- double(n) ska <- out.metro$scale for (i in 1:n) { my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) if (is.na(out.metro$u[i])) { my.u[i] <- NA } else { my.u[i] <- runif(1) } } max(abs(out.metro$proposal - my.proposal)) < epsilon all(is.na(out.metro$u) == is.na(my.u)) all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) my.curr.log.green <- apply(out.metro$current, 1, logl) my.prop.log.green <- apply(out.metro$proposal, 1, logl) all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) foo <- my.prop.log.green - my.curr.log.green max(abs(foo - out.metro$log.green)) < epsilon my.accept <- is.na(my.u) | my.u < exp(foo) sum(my.accept) == round(n * out.metro$accept) if (my.accept[niter]) { all(out.metro$proposal[niter, ] == out.metro$final) } else { all(out.metro$current[niter, ] == out.metro$final) } my.current <- out.metro$current my.current[my.accept, ] <- my.proposal[my.accept, ] my.current <- rbind(out.metro$initial, my.current[- niter, ]) max(abs(out.metro$current - my.current)) < epsilon my.path <- matrix(NA, n, d) my.path[my.accept, ] <- out.metro$proposal[my.accept, ] my.path[! my.accept, ] <- out.metro$current[! my.accept, ] nspac <- out.metro$nspac my.path <- my.path[seq(nspac, niter, by = nspac), ] foom <- array(as.vector(t(my.path)), c(d, out.metro$blen, out.metro$nbatch)) boom <- t(apply(foom, c(1, 3), mean)) all(dim(boom) == dim(out.metro$batch)) max(abs(boom - out.metro$batch)) < epsilon mcmc/tests/morph.metrop.Rout.save0000644000175100001440000000353413045741600016620 0ustar hornikusers R version 3.2.1 (2015-06-18) -- "World-Famous Astronaut" Copyright (C) 2015 The R Foundation for Statistical Computing Platform: i686-pc-linux-gnu (32-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(mcmc) > > .morph.unmorph <- mcmc:::.morph.unmorph > > ########################################################################### > # basic functionality check, can morph.metro run? Can we change the > # transformation? > set.seed(42) > obj <- morph.metrop(function(x) dt(x, df=3, log=TRUE), + 100, 100, morph=morph(b=3)) > obj <- morph.metrop(obj, morph=morph(b=1)) > > obj <- morph.metrop(function(x) prod(dt(x, df=3, log=TRUE)), + rep(100, 3), 100, morph=morph(p=3, b=1)) > obj <- morph.metrop(obj, morph=morph(r=1, p=3, b=1)) > > all.equal(class(obj), c("mcmc", "morph.metropolis")) [1] TRUE > > ########################################################################### > # check .morph.unmorph > obj <- list(final=10) > outfun <- function(x) x > m <- morph(p=3) > obj <- .morph.unmorph(obj, m, outfun) > all.equal(class(obj), c("mcmc", "morph.metropolis")) [1] TRUE > all.equal(sort(names(obj)), + sort(c("final", "morph", "morph.final", "outfun"))) [1] TRUE > all.equal(c(obj$final, obj$morph.final), c(m$inverse(10), 10)) [1] TRUE > all.equal(obj$outfun, outfun) [1] TRUE > all.equal(obj$morph, m) [1] TRUE > > proc.time() user system elapsed 0.384 0.024 0.401 mcmc/tests/temp-par.Rout.save0000644000175100001440000002752413074144313015720 0ustar hornikusers R version 3.3.3 (2017-03-06) -- "Another Canoe" Copyright (C) 2017 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > library(mcmc) > > set.seed(42) > > data(foo) > attach(foo) > > out <- glm(y ~ x1 + x2 + x3, family = binomial, x = TRUE) > summary(out) Call: glm(formula = y ~ x1 + x2 + x3, family = binomial, x = TRUE) Deviance Residuals: Min 1Q Median 3Q Max -2.0371 -0.6337 0.2394 0.6685 1.9599 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 0.5772 0.2766 2.087 0.036930 * x1 0.3362 0.4256 0.790 0.429672 x2 0.8475 0.4701 1.803 0.071394 . x3 1.5143 0.4426 3.422 0.000622 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 134.602 on 99 degrees of freedom Residual deviance: 86.439 on 96 degrees of freedom AIC: 94.439 Number of Fisher Scoring iterations: 5 > > modmat <- out$x > > models <- cbind(rep(0:1, each = 4), rep(rep(0:1, times = 2), each = 2), + rep(0:1, times = 4)) > > exes <- paste("x", 1:3, sep = "") > betas <- NULL > for (i in 1:nrow(models)) { + inies <- as.logical(models[i, ]) + foo <- exes[inies] + bar <- paste("y ~", paste(foo, collapse = " + ")) + if (! any(inies)) bar <- paste(bar, "1") + baz <- glm(as.formula(bar), family = binomial) + beta <- rep(0, 4) + beta[c(TRUE, inies)] <- baz$coef + betas <- rbind(betas, beta) + } > > neighbors <- matrix(FALSE, nrow(models), nrow(models)) > for (i in 1:nrow(neighbors)) { + for (j in 1:ncol(neighbors)) { + foo <- models[i, ] + bar <- models[j, ] + if (sum(foo != bar) == 1) neighbors[i, j] <- TRUE + } + } > > ludfun <- function(state, ...) { + stopifnot(is.numeric(state)) + stopifnot(length(state) == ncol(models) + 2) + stopifnot(length(state) == ncol(models) + 2) + icomp <- state[1] + stopifnot(icomp == as.integer(icomp)) + stopifnot(1 <= icomp && icomp <= nrow(models)) + beta <- state[-1] + inies <- c(TRUE, as.logical(models[icomp, ])) + beta.logl <- beta + beta.logl[! inies] <- 0 + eta <- as.numeric(modmat %*% beta.logl) + logp <- ifelse(eta < 0, eta - log1p(exp(eta)), - log1p(exp(- eta))) + logq <- ifelse(eta < 0, - log1p(exp(eta)), - eta - log1p(exp(- eta))) + logl <- sum(logp[y == 1]) + sum(logq[y == 0]) + val <- logl - sum(beta^2) / 2 + return(val) + } > > ludval <- NULL > for (i in 1:nrow(models)) ludval <- c(ludval, ludfun(c(i, betas[i, ]))) > all(is.finite(ludval)) [1] TRUE > > > out <- temper(ludfun, initial = betas, neighbors = neighbors, nbatch = 20, + blen = 10, nspac = 5, scale = 0.56789, parallel = TRUE, debug = TRUE) > > names(out) [1] "lud" "neighbors" "nbatch" "blen" [5] "nspac" "scale" "outfun" "debug" [9] "parallel" "initial.seed" "final.seed" "time" [13] "batch" "acceptx" "accepti" "initial" [17] "final" "which" "unif.which" "state" [21] "log.hastings" "unif.hastings" "proposal" "acceptd" [25] "norm" "unif.choose" "coproposal" > > ### check decision about within-component or jump/swap > > identical(out$unif.which < 0.5, out$which) [1] TRUE > > identical(out$which, out$proposal[ , 1] == out$coproposal[ , 1]) [1] TRUE > > ### check proposal and coproposal are actually current state or part thereof > > prop <- out$proposal > coprop <- out$coproposal > prop.i <- prop[ , 1] > coprop.i <- coprop[ , 1] > alt.prop <- prop > alt.coprop <- coprop > for (i in 1:nrow(prop)) { + alt.prop[i, ] <- c(prop.i[i], out$state[i, prop.i[i], ]) + alt.coprop[i, ] <- c(coprop.i[i], out$state[i, coprop.i[i], ]) + } > identical(coprop, alt.coprop) [1] TRUE > identical(prop[! out$which, ], alt.prop[! out$which, ]) [1] TRUE > identical(prop[out$which, 1], alt.prop[out$which, 1]) [1] TRUE > > ### check hastings ratio calculated correctly > > foo <- apply(prop, 1, ludfun) > fooco <- apply(coprop, 1, ludfun) > prop[ , 1] <- out$coproposal[ , 1] > coprop[ , 1] <- out$proposal[ , 1] > foo.swap <- apply(prop, 1, ludfun) > fooco.swap <- apply(coprop, 1, ludfun) > log.haste <- ifelse(out$which, foo - fooco, + foo.swap + fooco.swap - foo - fooco) > all.equal(log.haste, out$log.hastings) [1] TRUE > > ### check hastings rejection decided correctly > > identical(out$log.hastings >= 0, is.na(out$unif.hastings)) [1] TRUE > all(out$log.hastings < 0 | out$acceptd) [1] TRUE > identical(out$acceptd, + out$log.hastings >= 0 | out$unif.hastings < exp(out$log.hastings)) [1] TRUE > > ### check acceptance carried out or not (according to decision) correctly > > before <- out$state > after <- before > after[- dim(after)[1], , ] <- before[-1, , ] > after[dim(after)[1], , ] <- out$final > my.after <- before > for (i in 1:length(out$acceptd)) { + if (out$acceptd[i]) { + if (out$which[i]) { + j <- out$proposal[i, 1] + my.after[i, j, ] <- out$proposal[i, -1] + } else { + j <- out$proposal[i, 1] + k <- out$coproposal[i, 1] + my.after[i, j, ] <- out$coproposal[i, -1] + my.after[i, k, ] <- out$proposal[i, -1] + } + } + } > identical(after, my.after) [1] TRUE > > ### check within-component proposal > > my.coproposal.within <- out$coproposal[out$which, ] > proposal.within <- out$proposal[out$which, ] > my.z <- out$norm[out$which, ] > my.proposal.within <- my.coproposal.within > my.proposal.within[ , -1] <- my.coproposal.within[ , -1] + out$scale * my.z > all.equal(proposal.within, my.proposal.within) [1] TRUE > > my.unif.choose <- out$unif.choose[out$which, 1] > my.i <- floor(nrow(models) * my.unif.choose) + 1 > all(1 <= my.i & my.i <= nrow(models)) [1] TRUE > identical(my.i, my.coproposal.within[ , 1]) [1] TRUE > > ### check swap proposal > > coproposal.swap <- out$coproposal[! out$which, ] > proposal.swap <- out$proposal[! out$which, ] > unif.choose.swap <- out$unif.choose[! out$which, ] > my.i <- floor(nrow(models) * unif.choose.swap[ , 1]) + 1 > nneighbors <- apply(out$neighbors, 1, sum) > my.nneighbors <- nneighbors[my.i] > my.k <- floor(my.nneighbors * unif.choose.swap[ , 2]) + 1 > my.j <- my.k > foo <- seq(1, ncol(out$neighbors)) > for (i in seq(along = my.j)) { + my.j[i] <- (foo[out$neighbors[my.i[i], ]])[my.k[i]] + } > identical(coproposal.swap[ , 1], my.i) [1] TRUE > identical(proposal.swap[ , 1], my.j) [1] TRUE > > ### check standard normal and uniform random numbers are as purported > > save.Random.seed <- .Random.seed > .Random.seed <- out$initial.seed > > nx <- ncol(out$initial) > niter <- out$nbatch * out$blen * out$nspac > my.norm <- matrix(NA, nrow = nrow(out$norm), ncol = ncol(out$norm)) > my.unif.which <- rep(NA, niter) > my.unif.hastings <- rep(NA, niter) > my.unif.choose <- matrix(NA, niter, 2) > for (iiter in 1:niter) { + my.unif.which[iiter] <- runif(1) + if (out$which[iiter]) { + my.unif.choose[iiter, 1] <- runif(1) + my.norm[iiter, ] <- rnorm(nx) + if (out$log.hastings[iiter] < 0) my.unif.hastings[iiter] <- runif(1) + } else { + my.unif.choose[iiter, ] <- runif(2) + if (out$log.hastings[iiter] < 0) my.unif.hastings[iiter] <- runif(1) + } + } > identical(my.norm, out$norm) [1] TRUE > identical(my.unif.which, out$unif.which) [1] TRUE > identical(my.unif.hastings, out$unif.hastings) [1] TRUE > identical(my.unif.choose, out$unif.choose) [1] TRUE > > .Random.seed <- save.Random.seed > > ### check batch means > > foo <- after[seq(1, niter) %% out$nspac == 0, , ] > foo <- array(as.vector(foo), dim = c(out$blen, out$nbatch, dim(foo)[2:3])) > foo <- apply(foo, c(2, 3, 4), mean) > all.equal(foo, out$batch) [1] TRUE > > ### check acceptance rates > > accept.within <- out$acceptd[out$which] > my.i.within <- out$coproposal[out$which, 1] > my.acceptx <- as.vector(sapply(split(accept.within, my.i.within), mean)) > identical(my.acceptx, out$acceptx) [1] TRUE > > accept.swap <- out$acceptd[! out$which] > my.i.swap <- out$coproposal[! out$which, 1] > my.j.swap <- out$proposal[! out$which, 1] > nmodel <- nrow(out$neighbors) > my.accepti <- matrix(NA, nmodel, nmodel) > for (i in 1:nmodel) { + for (j in 1:nmodel) { + if (out$neighbors[i, j]) { + my.accepti[i, j] <- + mean(accept.swap[my.i.swap == i & my.j.swap == j]) + } + } + } > identical(my.accepti, out$accepti) [1] TRUE > > ### check scale vector > > nx <- ncol(models) + 1 > newscale <- rnorm(nx, 0.5, 0.1) > > out <- temper(out, scale = newscale) > > my.coproposal.within <- out$coproposal[out$which, ] > proposal.within <- out$proposal[out$which, ] > my.z <- out$norm[out$which, ] > my.proposal.within <- my.coproposal.within > my.proposal.within[ , -1] <- my.coproposal.within[ , -1] + + sweep(my.z, 2, out$scale, "*") > all.equal(proposal.within, my.proposal.within) [1] TRUE > > ### check scale matrix > > matscale <- matrix(rnorm(nx * nx, 0.0, 0.1), nx, nx) > diag(matscale) <- 0.56789 > > out <- temper(out, scale = matscale) > > my.coproposal.within <- out$coproposal[out$which, ] > proposal.within <- out$proposal[out$which, ] > my.z <- out$norm[out$which, ] > my.proposal.within <- my.coproposal.within > my.proposal.within[ , -1] <- my.coproposal.within[ , -1] + + my.z %*% t(out$scale) > all.equal(proposal.within, my.proposal.within) [1] TRUE > > ### check scale list > > lisztscale <- list(0.56789, newscale, matscale, matscale, newscale, + 0.98765, 0.98765, newscale) > > out <- temper(out, scale = lisztscale) > > my.coproposal.within <- out$coproposal[out$which, ] > proposal.within <- out$proposal[out$which, ] > my.z <- out$norm[out$which, ] > my.proposal.within <- my.coproposal.within > for (iiter in 1:nrow(my.z)) { + my.i <- my.coproposal.within[iiter, 1] + my.scale <- out$scale[[my.i]] + if (is.matrix(my.scale)) { + my.proposal.within[iiter, -1] <- my.coproposal.within[iiter, -1] + + my.z[iiter, , drop = FALSE] %*% t(my.scale) + } else { + my.proposal.within[iiter, -1] <- my.coproposal.within[iiter, -1] + + my.z[iiter, ] * my.scale + } + } > all.equal(proposal.within, my.proposal.within) [1] TRUE > > ### check outfun > > outfun <- function(state, icomp, ...) { + stopifnot(is.matrix(state)) + stopifnot(is.numeric(state)) + nx <- ncol(betas) + ncomp <- nrow(betas) + stopifnot(ncol(state) == nx) + stopifnot(nrow(state) == ncomp) + stopifnot(1 <= icomp && icomp <= ncomp) + foo <- state[icomp, ] + bar <- foo^2 + return(c(foo, bar)) + } > > out <- temper(out, outfun = outfun, icomp = 4) > > before <- out$state > after <- before > after[- dim(after)[1], , ] <- before[-1, , ] > after[dim(after)[1], , ] <- out$final > outies <- apply(after, 1, outfun, icomp = 4) > outies <- t(outies) > > foo <- outies[seq(1, niter) %% out$nspac == 0, ] > foo <- array(as.vector(foo), dim = c(out$blen, out$nbatch, dim(foo)[2])) > foo <- apply(foo, c(2, 3), mean) > all.equal(foo, out$batch) [1] TRUE > > > proc.time() user system elapsed 1.376 0.008 1.376 mcmc/tests/saveseedmorph.R0000644000175100001440000000116613045741600015345 0ustar hornikusers library(mcmc) set.seed(42) h <- function(x) if (all(x >= 0) && sum(x) <= 1) return(1) else return(-Inf) out <- morph.metrop(obj = h, initial = rep(0, 5), nbatch = 100, blen = 17, nspac = 3, scale = 0.1) out1 <- morph.metrop(out) out2 <- morph.metrop(out1) out3 <- morph.metrop(out, nbatch = 2 * out$nbatch) fred <- rbind(out1$batch, out2$batch) identical(fred, out3$batch) out <- morph.metrop(out, morph = morph(p = 2.2, r = 0.3)) out1 <- morph.metrop(out) out2 <- morph.metrop(out1) out3 <- morph.metrop(out, nbatch = 2 * out$nbatch) fred <- rbind(out1$batch, out2$batch) identical(fred, out3$batch) mcmc/tests/logitmat.Rout.save0000644000175100001440000001133513062634616016013 0ustar hornikusers R version 3.3.3 (2017-03-06) -- "Another Canoe" Copyright (C) 2017 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > # test matrix scaling > > epsilon <- 1e-15 > > library(mcmc) > > RNGkind("Marsaglia-Multicarry") > set.seed(42) > > n <- 100 > rho <- 0.5 > beta0 <- 0.25 > beta1 <- 1 > beta2 <- 0.5 > > x1 <- rnorm(n) > x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) > eta <- beta0 + beta1 * x1 + beta2 * x2 > p <- 1 / (1 + exp(- eta)) > y <- as.numeric(runif(n) < p) > > out <- glm(y ~ x1 + x2, family = binomial()) > > logl <- function(beta) { + if (length(beta) != 3) stop("length(beta) != 3") + beta0 <- beta[1] + beta1 <- beta[2] + beta2 <- beta[3] + eta <- beta0 + beta1 * x1 + beta2 * x2 + p <- exp(eta) / (1 + exp(eta)) + return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) + } > > out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) > out.metro$accept [1] 0.982 > > out.metro <- metrop(out.metro, scale = 0.1) > out.metro$accept [1] 0.795 > > out.metro <- metrop(out.metro, scale = 0.5) > out.metro$accept [1] 0.264 > > apply(out.metro$batch, 2, mean) [1] 0.06080257 1.42304941 0.52634149 > fred <- var(out.metro$batch) > sally <- t(chol(fred)) > max(abs(fred - sally %*% t(sally))) < epsilon [1] TRUE > > out.metro <- metrop(out.metro, scale = sally) > out.metro$accept [1] 0.451 > > out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, + scale = sally, debug = TRUE) > names(out.metro) [1] "accept" "batch" "initial" "final" "accept.batch" [6] "current" "proposal" "log.green" "u" "z" [11] "debug.accept" "initial.seed" "final.seed" "time" "lud" [16] "nbatch" "blen" "nspac" "scale" "debug" > > niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac > niter == nrow(out.metro$current) [1] TRUE > niter == nrow(out.metro$proposal) [1] TRUE > all(out.metro$current[1, ] == out.metro$initial) [1] TRUE > all(out.metro$current[niter, ] == out.metro$final) | + all(out.metro$proposal[niter, ] == out.metro$final) [1] TRUE > > .Random.seed <- out.metro$initial.seed > d <- ncol(out.metro$proposal) > n <- nrow(out.metro$proposal) > my.proposal <- matrix(NA, n, d) > my.u <- double(n) > my.z <- matrix(NA, n, d) > ska <- out.metro$scale > for (i in 1:n) { + zed <- rnorm(d) + my.proposal[i, ] <- out.metro$current[i, ] + ska %*% zed + if (is.na(out.metro$u[i])) { + my.u[i] <- NA + } else { + my.u[i] <- runif(1) + } + my.z[i, ] <- zed + } > max(abs(out.metro$proposal - my.proposal)) < epsilon [1] TRUE > > all(is.na(out.metro$u) == is.na(my.u)) [1] TRUE > all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) [1] TRUE > identical(out.metro$z, my.z) [1] TRUE > > my.curr.log.green <- apply(out.metro$current, 1, logl) > my.prop.log.green <- apply(out.metro$proposal, 1, logl) > all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) [1] TRUE > foo <- my.prop.log.green - my.curr.log.green > max(abs(foo - out.metro$log.green)) < epsilon [1] TRUE > > my.accept <- is.na(my.u) | my.u < exp(foo) > sum(my.accept) == round(n * out.metro$accept) [1] TRUE > if (my.accept[niter]) { + all(out.metro$proposal[niter, ] == out.metro$final) + } else { + all(out.metro$current[niter, ] == out.metro$final) + } [1] TRUE > identical(my.accept, out.metro$debug.accept) [1] TRUE > > my.current <- out.metro$current > my.current[my.accept, ] <- my.proposal[my.accept, ] > my.current <- rbind(out.metro$initial, my.current[- niter, ]) > max(abs(out.metro$current - my.current)) < epsilon [1] TRUE > > my.path <- matrix(NA, n, d) > my.path[my.accept, ] <- out.metro$proposal[my.accept, ] > my.path[! my.accept, ] <- out.metro$current[! my.accept, ] > nspac <- out.metro$nspac > > my.path <- my.path[seq(nspac, niter, by = nspac), ] > > fred <- my.path > k <- ncol(fred) > > foom <- array(as.vector(t(fred)), c(k, out.metro$blen, out.metro$nbatch)) > boom <- t(apply(foom, c(1, 3), mean)) > > all(dim(boom) == dim(out.metro$batch)) [1] TRUE > max(abs(boom - out.metro$batch)) < epsilon [1] TRUE > > > proc.time() user system elapsed 0.340 0.028 0.359 mcmc/tests/temp-ser-witch.R0000644000175100001440000000526713045741240015356 0ustar hornikusers library(mcmc) set.seed(42) d <- 3 witch.which <- 1 - (1 / 2)^(1 / d) * (1 / 4)^(seq(0, 5) / d) witch.which ncomp <- length(witch.which) neighbors <- matrix(FALSE, ncomp, ncomp) neighbors[row(neighbors) == col(neighbors) + 1] <- TRUE neighbors[row(neighbors) == col(neighbors) - 1] <- TRUE neighbors[row(neighbors) == col(neighbors) + 2] <- TRUE neighbors[row(neighbors) == col(neighbors) - 2] <- TRUE ludfun <- function(state) { stopifnot(is.numeric(state)) stopifnot(length(state) == d + 1) icomp <- state[1] stopifnot(icomp == as.integer(icomp)) stopifnot(1 <= icomp && icomp <= ncomp) theta <- state[-1] if (any(abs(theta) > 1.0)) return(-Inf) bnd <- witch.which[icomp] if(bnd >= 1.0) stop(sprintf("witch.which[%d] >= 1.0", icomp)) if(bnd <= 0.0) stop(sprintf("witch.which[%d] <= 0.0", icomp)) if (all(abs(theta) > bnd)) return(- (d + 1) * log(2) - d * log(1 - bnd)) return(- (d + 1) * log(2) - log1p(- (1 - bnd)^d)) } initial <- c(1, rep(0, d)) out <- temper(ludfun, initial = initial, neighbors = neighbors, nbatch = 50, blen = 13, nspac = 7, scale = 0.3456789) names(out) out$acceptx out$accepti colMeans(out$ibatch) ### check that have prob 1 / 2 for corners outfun <- function(state) { stopifnot(is.numeric(state)) icomp <- state[1] stopifnot(icomp == as.integer(icomp)) stopifnot(1 <= icomp && icomp <= length(witch.which)) theta <- state[-1] foo <- all(abs(theta) > witch.which[icomp]) bar <- rep(0, length(witch.which)) baz <- rep(0, length(witch.which)) bar[icomp] <- as.numeric(foo) baz[icomp] <- 1 return(c(bar, baz)) } out <- temper(out, blen = 103, outfun = outfun, debug = TRUE) eta.batch <- out$batch[ , seq(1, ncomp)] noo.batch <- out$batch[ , seq(ncomp + 1, ncomp + ncomp)] eta <- colMeans(eta.batch) noo <- colMeans(noo.batch) mu <- eta / noo eta noo mu eta.batch.rel <- sweep(eta.batch, 2, eta, "/") noo.batch.rel <- sweep(noo.batch, 2, noo, "/") mu.batch.rel <- eta.batch.rel - noo.batch.rel mu.mcse.rel <- apply(mu.batch.rel, 2, sd) / sqrt(out$nbatch) mu.mcse.rel foo <- cbind(mu, mu * mu.mcse.rel) colnames(foo) <- c("means", "MCSE") foo ### check decision about within-component or jump/swap identical(out$unif.which < 0.5, out$which) identical(out$which, out$proposal[ , 1] == out$state[ , 1]) ### check hastings ratio calculated correctly n <- apply(neighbors, 1, sum) i <- out$state[ , 1] istar <- out$proposal[ , 1] foo <- apply(out$state, 1, ludfun) bar <- apply(out$proposal, 1, ludfun) my.log.hastings <- bar - foo - log(n[istar]) + log(n[i]) all.equal(my.log.hastings, out$log.hastings) mcmc/tests/morph.R0000644000175100001440000000717113045741600013627 0ustar hornikuserslibrary(mcmc) isotropic <- mcmc:::isotropic isotropic.logjacobian <- mcmc:::isotropic.logjacobian # make sure morph identity works properly TestMorphIdentity <- function(m.id) { ident.func <- function(x) x if (!all.equal(m.id$transform(1:10), 1:10)) return(FALSE) if (!all.equal(m.id$inverse(1:10), 1:10)) return(FALSE) x <- seq(-1,1, length.out=15) if (!all.equal(sapply(x, m.id$lud(function(x) dnorm(x, log=TRUE))), dnorm(x, log=TRUE))) return(FALSE) if (!all.equal(m.id$outfun(ident.func)(x), x)) return(FALSE) return(TRUE) } TestMorphIdentity(morph()) TestMorphIdentity(morph.identity()) TestMorphIdentityOutfun <- function(m) { f <- m$outfun(NULL) x <- 1:20 if (!identical(x, f(x))) return(FALSE) f <- m$outfun(c(6, 8)) if (!identical(x[c(6, 8)], f(x))) return(FALSE) i <- rep(FALSE, 20) i[c(1, 3, 5)] <- TRUE f <- m$outfun(i) if (!identical(x[i], f(x))) return(FALSE) return(TRUE) } TestMorphIdentityOutfun(morph()) TestMorphIdentityOutfun(morph.identity()) # make sure that morph and morph.identity give back the same things all.equal(sort(names(morph.identity())), sort(names(morph(b=1)))) # test center parameter, univariate version zero.func <- function(x) 0 center <- 2 x <- seq(-1,1, length.out=15) morph.center <- morph(center=center) all.equal(sapply(x, morph.center$transform), x-center) all.equal(sapply(x, morph.center$inverse), x+center) all.equal(sapply(x, morph.center$lud(function(y) dnorm(y, log=TRUE))), dnorm(x, log=TRUE, mean=-2)) # test center parameter, multivariate version center <- 1:4 x <- rep(0, 4) morph.center <- morph(center=center) lud.mult.dnorm <- function(x) prod(dnorm(x, log=TRUE)) all.equal(morph.center$transform(x), x-center) all.equal(morph.center$inverse(x), x+center) all.equal(morph.center$lud(lud.mult.dnorm)(x), lud.mult.dnorm(x - center)) # test 'r'. r <- 1 morph.r <- morph(r=r) x <- seq(-1, 1, length.out=20) all.equal(sapply(x, morph.r$lud(function(x) dnorm(x, log=TRUE))), dnorm(x, log=TRUE)) x <- seq(1.1, 2, length.out=10) all(sapply(x, morph.r$lud(function(x) dnorm(x, log=TRUE))) != dnorm(x, log=TRUE)) TestExponentialEvenPWithRInverse <- function() { r <- 0.3 p <- 2.2 morph.r <- morph(r=r, p=p) x <- seq(0, r, length.out=20) all.equal(x, sapply(x, morph.r$inverse)) } TestExponentialEvenPWithRInverse() # make sure morph$lud passes '...' arguments. mean <- 2 ident.morph <- morph() dnorm.morph <- ident.morph$lud(function(x, mean=0) dnorm(x, mean=mean, log=TRUE)) all.equal(dnorm.morph(2, mean), dnorm(2, mean=mean, log=TRUE)) x <- seq(-3, 3, length.out=20) m2 <- morph(r=10) dnorm.morph <- m2$lud(function(x, mean) dnorm(x, mean=mean, log=TRUE)) all.equal(sapply(x, function(y) dnorm.morph(y, 2)), dnorm(x, mean=2, log=TRUE)) # make sure morph$outfun passes '...' arguments. outfun.orig <- function(x, mean) x + mean ident.morph <- morph() mean <- 1 outfun.morph <- ident.morph$outfun(outfun.orig) all.equal(outfun.morph(1:10, mean), 1:10+mean) m2 <- morph(r=10) outfun.morph <- m2$outfun(outfun.orig) all.equal(sapply(1:10, function(x) outfun.morph(x, mean)), 1:10+mean) ########################################################################### # test built-in exponential and polynomial transformations. f <- morph(b=3) x <- seq(0, 10, length.out=100) all.equal(x, sapply(sapply(x, f$transform), f$inverse)) f <- morph(p=3) all.equal(x, sapply(sapply(x, f$transform), f$inverse)) f <- morph(p=3, r=10) all.equal(-10:10, Vectorize(f$transform)(-10:10)) f <- morph(p=3, b=1) all.equal(x, sapply(sapply(x, f$transform), f$inverse)) mcmc/tests/temp-par-witch.R0000644000175100001440000000366313074040453015345 0ustar hornikusers if ((! exists("DEBUG")) || (! identical(DEBUG, TRUE))) DEBUG <- FALSE library(mcmc) options(digits=4) # avoid rounding differences set.seed(42) save.initial.seed <- .Random.seed d <- 3 witch.which <- 1 - (1 / 2)^(1 / d) * (1 / 4)^(seq(0, 5) / d) witch.which ncomp <- length(witch.which) neighbors <- matrix(FALSE, ncomp, ncomp) neighbors[row(neighbors) == col(neighbors) + 1] <- TRUE neighbors[row(neighbors) == col(neighbors) - 1] <- TRUE neighbors[row(neighbors) == col(neighbors) + 2] <- TRUE neighbors[row(neighbors) == col(neighbors) - 2] <- TRUE ludfun <- function(state) { stopifnot(is.numeric(state)) stopifnot(length(state) == d + 1) icomp <- state[1] stopifnot(icomp == as.integer(icomp)) stopifnot(1 <= icomp && icomp <= ncomp) theta <- state[-1] if (any(abs(theta) > 1.0)) return(-Inf) bnd <- witch.which[icomp] if(bnd >= 1.0) stop(sprintf("witch.which[%d] >= 1.0", icomp)) if(bnd <= 0.0) stop(sprintf("witch.which[%d] <= 0.0", icomp)) if (all(abs(theta) > bnd)) return(- (d + 1) * log(2) - d * log(1 - bnd)) return(- (d + 1) * log(2) - log1p(- (1 - bnd)^d)) } thetas <- matrix(0, ncomp, d) out <- temper(ludfun, initial = thetas, neighbors = neighbors, nbatch = 50, blen = 13, nspac = 7, scale = 0.3456789, parallel = TRUE, debug = DEBUG) names(out) out$acceptx out$accepti ### check that have prob 1 / 2 for corners outfun <- function(state) { stopifnot(is.matrix(state)) ncomp <- nrow(state) d <- ncol(state) foo <- sweep(abs(state), 1, witch.which) bar <- apply(foo > 0, 1, all) return(as.numeric(bar)) } out2 <- temper(out, outfun = outfun) colMeans(out2$batch) apply(out2$batch, 2, sd) / sqrt(out$nbatch) ### try again out3 <- temper(out2, blen = 103) foo <- cbind(colMeans(out3$batch), apply(out3$batch, 2, sd) / sqrt(out$nbatch)) colnames(foo) <- c("means", "MCSE") foo mcmc/tests/logitsub.R0000644000175100001440000000546113045741240014332 0ustar hornikusers # test spacing (nspac) epsilon <- 1e-15 library(mcmc) RNGkind("Marsaglia-Multicarry") set.seed(42) n <- 100 rho <- 0.5 beta0 <- 0.25 beta1 <- 1 beta2 <- 0.5 x1 <- rnorm(n) x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) eta <- beta0 + beta1 * x1 + beta2 * x2 p <- 1 / (1 + exp(- eta)) y <- as.numeric(runif(n) < p) out <- glm(y ~ x1 + x2, family = binomial()) logl <- function(beta) { if (length(beta) != 3) stop("length(beta) != 3") beta0 <- beta[1] beta1 <- beta[2] beta2 <- beta[3] eta <- beta0 + beta1 * x1 + beta2 * x2 p <- exp(eta) / (1 + exp(eta)) return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) } out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) out.metro$accept out.metro <- metrop(out.metro, scale = 0.1) out.metro$accept out.metro <- metrop(out.metro, scale = 0.5) out.metro$accept apply(out.metro$batch, 2, mean) out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, scale = 0.5, debug = TRUE, nspac = 3) niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac niter == nrow(out.metro$current) niter == nrow(out.metro$proposal) all(out.metro$current[1, ] == out.metro$initial) all(out.metro$current[niter, ] == out.metro$final) | all(out.metro$proposal[niter, ] == out.metro$final) .Random.seed <- out.metro$initial.seed d <- ncol(out.metro$proposal) n <- nrow(out.metro$proposal) my.proposal <- matrix(NA, n, d) my.u <- double(n) ska <- out.metro$scale for (i in 1:n) { my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) if (is.na(out.metro$u[i])) { my.u[i] <- NA } else { my.u[i] <- runif(1) } } max(abs(out.metro$proposal - my.proposal)) < epsilon all(is.na(out.metro$u) == is.na(my.u)) all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) my.curr.log.green <- apply(out.metro$current, 1, logl) my.prop.log.green <- apply(out.metro$proposal, 1, logl) all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) foo <- my.prop.log.green - my.curr.log.green max(abs(foo - out.metro$log.green)) < epsilon my.accept <- is.na(my.u) | my.u < exp(foo) sum(my.accept) == round(n * out.metro$accept) if (my.accept[niter]) { all(out.metro$proposal[niter, ] == out.metro$final) } else { all(out.metro$current[niter, ] == out.metro$final) } my.current <- out.metro$current my.current[my.accept, ] <- my.proposal[my.accept, ] my.current <- rbind(out.metro$initial, my.current[- niter, ]) max(abs(out.metro$current - my.current)) < epsilon my.path <- matrix(NA, n, d) my.path[my.accept, ] <- out.metro$proposal[my.accept, ] my.path[! my.accept, ] <- out.metro$current[! my.accept, ] nspac <- out.metro$nspac my.path <- my.path[seq(nspac, niter, by = nspac), ] all(dim(my.path) == dim(out.metro$batch)) all(my.path == out.metro$batch) mcmc/tests/logitbat.Rout.save0000644000175100001440000000767213045741600016002 0ustar hornikusers R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > # test batching (blen) > > epsilon <- 1e-15 > > library(mcmc) > > RNGkind("Marsaglia-Multicarry") > set.seed(42) > > n <- 100 > rho <- 0.5 > beta0 <- 0.25 > beta1 <- 1 > beta2 <- 0.5 > > x1 <- rnorm(n) > x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) > eta <- beta0 + beta1 * x1 + beta2 * x2 > p <- 1 / (1 + exp(- eta)) > y <- as.numeric(runif(n) < p) > > out <- glm(y ~ x1 + x2, family = binomial()) > > logl <- function(beta) { + if (length(beta) != 3) stop("length(beta) != 3") + beta0 <- beta[1] + beta1 <- beta[2] + beta2 <- beta[3] + eta <- beta0 + beta1 * x1 + beta2 * x2 + p <- exp(eta) / (1 + exp(eta)) + return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) + } > > out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) > out.metro$accept [1] 0.982 > > out.metro <- metrop(out.metro, scale = 0.1) > out.metro$accept [1] 0.795 > > out.metro <- metrop(out.metro, scale = 0.5) > out.metro$accept [1] 0.264 > > apply(out.metro$batch, 2, mean) [1] 0.06080257 1.42304941 0.52634149 > > out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, + scale = 0.5, debug = TRUE, blen = 5) > > niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac > niter == nrow(out.metro$current) [1] TRUE > niter == nrow(out.metro$proposal) [1] TRUE > all(out.metro$current[1, ] == out.metro$initial) [1] TRUE > all(out.metro$current[niter, ] == out.metro$final) | + all(out.metro$proposal[niter, ] == out.metro$final) [1] TRUE > > .Random.seed <- out.metro$initial.seed > d <- ncol(out.metro$proposal) > n <- nrow(out.metro$proposal) > my.proposal <- matrix(NA, n, d) > my.u <- double(n) > ska <- out.metro$scale > for (i in 1:n) { + my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) + if (is.na(out.metro$u[i])) { + my.u[i] <- NA + } else { + my.u[i] <- runif(1) + } + } > max(abs(out.metro$proposal - my.proposal)) < epsilon [1] TRUE > all(is.na(out.metro$u) == is.na(my.u)) [1] TRUE > all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) [1] TRUE > > my.curr.log.green <- apply(out.metro$current, 1, logl) > my.prop.log.green <- apply(out.metro$proposal, 1, logl) > all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) [1] TRUE > foo <- my.prop.log.green - my.curr.log.green > max(abs(foo - out.metro$log.green)) < epsilon [1] TRUE > > my.accept <- is.na(my.u) | my.u < exp(foo) > sum(my.accept) == round(n * out.metro$accept) [1] TRUE > if (my.accept[niter]) { + all(out.metro$proposal[niter, ] == out.metro$final) + } else { + all(out.metro$current[niter, ] == out.metro$final) + } [1] TRUE > > my.current <- out.metro$current > my.current[my.accept, ] <- my.proposal[my.accept, ] > my.current <- rbind(out.metro$initial, my.current[- niter, ]) > max(abs(out.metro$current - my.current)) < epsilon [1] TRUE > > my.path <- matrix(NA, n, d) > my.path[my.accept, ] <- out.metro$proposal[my.accept, ] > my.path[! my.accept, ] <- out.metro$current[! my.accept, ] > nspac <- out.metro$nspac > > my.path <- my.path[seq(nspac, niter, by = nspac), ] > > foom <- array(as.vector(t(my.path)), c(d, out.metro$blen, out.metro$nbatch)) > boom <- t(apply(foom, c(1, 3), mean)) > > all(dim(boom) == dim(out.metro$batch)) [1] TRUE > max(abs(boom - out.metro$batch)) < epsilon [1] TRUE > > mcmc/tests/logitidx.Rout.save0000644000175100001440000001001413045741600016000 0ustar hornikusers R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > # test outfun (positive index vector) > > epsilon <- 1e-15 > > library(mcmc) > > RNGkind("Marsaglia-Multicarry") > set.seed(42) > > n <- 100 > rho <- 0.5 > beta0 <- 0.25 > beta1 <- 1 > beta2 <- 0.5 > > x1 <- rnorm(n) > x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) > eta <- beta0 + beta1 * x1 + beta2 * x2 > p <- 1 / (1 + exp(- eta)) > y <- as.numeric(runif(n) < p) > > out <- glm(y ~ x1 + x2, family = binomial()) > > logl <- function(beta) { + if (length(beta) != 3) stop("length(beta) != 3") + beta0 <- beta[1] + beta1 <- beta[2] + beta2 <- beta[3] + eta <- beta0 + beta1 * x1 + beta2 * x2 + p <- exp(eta) / (1 + exp(eta)) + return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) + } > > out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) > out.metro$accept [1] 0.982 > > out.metro <- metrop(out.metro, scale = 0.1) > out.metro$accept [1] 0.795 > > out.metro <- metrop(out.metro, scale = 0.5) > out.metro$accept [1] 0.264 > > apply(out.metro$batch, 2, mean) [1] 0.06080257 1.42304941 0.52634149 > > out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, + scale = 0.5, debug = TRUE, outfun = c(2, 3)) > > niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac > niter == nrow(out.metro$current) [1] TRUE > niter == nrow(out.metro$proposal) [1] TRUE > all(out.metro$current[1, ] == out.metro$initial) [1] TRUE > all(out.metro$current[niter, ] == out.metro$final) | + all(out.metro$proposal[niter, ] == out.metro$final) [1] TRUE > > .Random.seed <- out.metro$initial.seed > d <- ncol(out.metro$proposal) > n <- nrow(out.metro$proposal) > my.proposal <- matrix(NA, n, d) > my.u <- double(n) > ska <- out.metro$scale > for (i in 1:n) { + my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) + if (is.na(out.metro$u[i])) { + my.u[i] <- NA + } else { + my.u[i] <- runif(1) + } + } > max(abs(out.metro$proposal - my.proposal)) < epsilon [1] TRUE > all(is.na(out.metro$u) == is.na(my.u)) [1] TRUE > all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) [1] TRUE > > my.curr.log.green <- apply(out.metro$current, 1, logl) > my.prop.log.green <- apply(out.metro$proposal, 1, logl) > all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) [1] TRUE > foo <- my.prop.log.green - my.curr.log.green > max(abs(foo - out.metro$log.green)) < epsilon [1] TRUE > > my.accept <- is.na(my.u) | my.u < exp(foo) > sum(my.accept) == round(n * out.metro$accept) [1] TRUE > if (my.accept[niter]) { + all(out.metro$proposal[niter, ] == out.metro$final) + } else { + all(out.metro$current[niter, ] == out.metro$final) + } [1] TRUE > > my.current <- out.metro$current > my.current[my.accept, ] <- my.proposal[my.accept, ] > my.current <- rbind(out.metro$initial, my.current[- niter, ]) > max(abs(out.metro$current - my.current)) < epsilon [1] TRUE > > my.path <- matrix(NA, n, d) > my.path[my.accept, ] <- out.metro$proposal[my.accept, ] > my.path[! my.accept, ] <- out.metro$current[! my.accept, ] > nspac <- out.metro$nspac > > my.path <- my.path[seq(nspac, niter, by = nspac), ] > > fred <- my.path[ , out.metro$outfun] > k <- ncol(fred) > > foom <- array(as.vector(t(fred)), c(k, out.metro$blen, out.metro$nbatch)) > boom <- t(apply(foom, c(1, 3), mean)) > > all(dim(boom) == dim(out.metro$batch)) [1] TRUE > max(abs(boom - out.metro$batch)) < epsilon [1] TRUE > > mcmc/tests/logitsubbat.Rout.save0000644000175100001440000000774213045741600016512 0ustar hornikusers R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > # test batching (blen) and spacing (nspac) together > > epsilon <- 1e-15 > > library(mcmc) > > RNGkind("Marsaglia-Multicarry") > set.seed(42) > > n <- 100 > rho <- 0.5 > beta0 <- 0.25 > beta1 <- 1 > beta2 <- 0.5 > > x1 <- rnorm(n) > x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) > eta <- beta0 + beta1 * x1 + beta2 * x2 > p <- 1 / (1 + exp(- eta)) > y <- as.numeric(runif(n) < p) > > out <- glm(y ~ x1 + x2, family = binomial()) > > logl <- function(beta) { + if (length(beta) != 3) stop("length(beta) != 3") + beta0 <- beta[1] + beta1 <- beta[2] + beta2 <- beta[3] + eta <- beta0 + beta1 * x1 + beta2 * x2 + p <- exp(eta) / (1 + exp(eta)) + return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) + } > > out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) > out.metro$accept [1] 0.982 > > out.metro <- metrop(out.metro, scale = 0.1) > out.metro$accept [1] 0.795 > > out.metro <- metrop(out.metro, scale = 0.5) > out.metro$accept [1] 0.264 > > apply(out.metro$batch, 2, mean) [1] 0.06080257 1.42304941 0.52634149 > > out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, + scale = 0.5, debug = TRUE, blen = 5, nspac = 3) > > niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac > niter == nrow(out.metro$current) [1] TRUE > niter == nrow(out.metro$proposal) [1] TRUE > all(out.metro$current[1, ] == out.metro$initial) [1] TRUE > all(out.metro$current[niter, ] == out.metro$final) | + all(out.metro$proposal[niter, ] == out.metro$final) [1] TRUE > > .Random.seed <- out.metro$initial.seed > d <- ncol(out.metro$proposal) > n <- nrow(out.metro$proposal) > my.proposal <- matrix(NA, n, d) > my.u <- double(n) > ska <- out.metro$scale > for (i in 1:n) { + my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) + if (is.na(out.metro$u[i])) { + my.u[i] <- NA + } else { + my.u[i] <- runif(1) + } + } > max(abs(out.metro$proposal - my.proposal)) < epsilon [1] TRUE > all(is.na(out.metro$u) == is.na(my.u)) [1] TRUE > all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) [1] TRUE > > my.curr.log.green <- apply(out.metro$current, 1, logl) > my.prop.log.green <- apply(out.metro$proposal, 1, logl) > all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) [1] TRUE > foo <- my.prop.log.green - my.curr.log.green > max(abs(foo - out.metro$log.green)) < epsilon [1] TRUE > > my.accept <- is.na(my.u) | my.u < exp(foo) > sum(my.accept) == round(n * out.metro$accept) [1] TRUE > if (my.accept[niter]) { + all(out.metro$proposal[niter, ] == out.metro$final) + } else { + all(out.metro$current[niter, ] == out.metro$final) + } [1] TRUE > > my.current <- out.metro$current > my.current[my.accept, ] <- my.proposal[my.accept, ] > my.current <- rbind(out.metro$initial, my.current[- niter, ]) > max(abs(out.metro$current - my.current)) < epsilon [1] TRUE > > my.path <- matrix(NA, n, d) > my.path[my.accept, ] <- out.metro$proposal[my.accept, ] > my.path[! my.accept, ] <- out.metro$current[! my.accept, ] > nspac <- out.metro$nspac > > my.path <- my.path[seq(nspac, niter, by = nspac), ] > > foom <- array(as.vector(t(my.path)), c(d, out.metro$blen, out.metro$nbatch)) > boom <- t(apply(foom, c(1, 3), mean)) > > all(dim(boom) == dim(out.metro$batch)) [1] TRUE > max(abs(boom - out.metro$batch)) < epsilon [1] TRUE > > mcmc/tests/logitlogidx.Rout.save0000644000175100001440000001002013045741600016477 0ustar hornikusers R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > # test outfun (logical index vector) > > epsilon <- 1e-15 > > library(mcmc) > > RNGkind("Marsaglia-Multicarry") > set.seed(42) > > n <- 100 > rho <- 0.5 > beta0 <- 0.25 > beta1 <- 1 > beta2 <- 0.5 > > x1 <- rnorm(n) > x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) > eta <- beta0 + beta1 * x1 + beta2 * x2 > p <- 1 / (1 + exp(- eta)) > y <- as.numeric(runif(n) < p) > > out <- glm(y ~ x1 + x2, family = binomial()) > > logl <- function(beta) { + if (length(beta) != 3) stop("length(beta) != 3") + beta0 <- beta[1] + beta1 <- beta[2] + beta2 <- beta[3] + eta <- beta0 + beta1 * x1 + beta2 * x2 + p <- exp(eta) / (1 + exp(eta)) + return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) + } > > out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) > out.metro$accept [1] 0.982 > > out.metro <- metrop(out.metro, scale = 0.1) > out.metro$accept [1] 0.795 > > out.metro <- metrop(out.metro, scale = 0.5) > out.metro$accept [1] 0.264 > > apply(out.metro$batch, 2, mean) [1] 0.06080257 1.42304941 0.52634149 > > out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, + scale = 0.5, debug = TRUE, outfun = seq(1:3) > 1) > > niter <- out.metro$nbatch * out.metro$blen * out.metro$nspac > niter == nrow(out.metro$current) [1] TRUE > niter == nrow(out.metro$proposal) [1] TRUE > all(out.metro$current[1, ] == out.metro$initial) [1] TRUE > all(out.metro$current[niter, ] == out.metro$final) | + all(out.metro$proposal[niter, ] == out.metro$final) [1] TRUE > > .Random.seed <- out.metro$initial.seed > d <- ncol(out.metro$proposal) > n <- nrow(out.metro$proposal) > my.proposal <- matrix(NA, n, d) > my.u <- double(n) > ska <- out.metro$scale > for (i in 1:n) { + my.proposal[i, ] <- out.metro$current[i, ] + ska * rnorm(d) + if (is.na(out.metro$u[i])) { + my.u[i] <- NA + } else { + my.u[i] <- runif(1) + } + } > max(abs(out.metro$proposal - my.proposal)) < epsilon [1] TRUE > all(is.na(out.metro$u) == is.na(my.u)) [1] TRUE > all(out.metro$u[!is.na(out.metro$u)] == my.u[!is.na(my.u)]) [1] TRUE > > my.curr.log.green <- apply(out.metro$current, 1, logl) > my.prop.log.green <- apply(out.metro$proposal, 1, logl) > all(is.na(out.metro$u) == (my.prop.log.green > my.curr.log.green)) [1] TRUE > foo <- my.prop.log.green - my.curr.log.green > max(abs(foo - out.metro$log.green)) < epsilon [1] TRUE > > my.accept <- is.na(my.u) | my.u < exp(foo) > sum(my.accept) == round(n * out.metro$accept) [1] TRUE > if (my.accept[niter]) { + all(out.metro$proposal[niter, ] == out.metro$final) + } else { + all(out.metro$current[niter, ] == out.metro$final) + } [1] TRUE > > my.current <- out.metro$current > my.current[my.accept, ] <- my.proposal[my.accept, ] > my.current <- rbind(out.metro$initial, my.current[- niter, ]) > max(abs(out.metro$current - my.current)) < epsilon [1] TRUE > > my.path <- matrix(NA, n, d) > my.path[my.accept, ] <- out.metro$proposal[my.accept, ] > my.path[! my.accept, ] <- out.metro$current[! my.accept, ] > nspac <- out.metro$nspac > > my.path <- my.path[seq(nspac, niter, by = nspac), ] > > fred <- my.path[ , out.metro$outfun] > k <- ncol(fred) > > foom <- array(as.vector(t(fred)), c(k, out.metro$blen, out.metro$nbatch)) > boom <- t(apply(foom, c(1, 3), mean)) > > all(dim(boom) == dim(out.metro$batch)) [1] TRUE > max(abs(boom - out.metro$batch)) < epsilon [1] TRUE > > mcmc/tests/temp-ser.Rout.save0000644000175100001440000003003713074144341015721 0ustar hornikusers R version 3.3.3 (2017-03-06) -- "Another Canoe" Copyright (C) 2017 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > library(mcmc) > > set.seed(42) > > data(foo) > attach(foo) > > out <- glm(y ~ x1 + x2 + x3, family = binomial, x = TRUE) > summary(out) Call: glm(formula = y ~ x1 + x2 + x3, family = binomial, x = TRUE) Deviance Residuals: Min 1Q Median 3Q Max -2.0371 -0.6337 0.2394 0.6685 1.9599 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 0.5772 0.2766 2.087 0.036930 * x1 0.3362 0.4256 0.790 0.429672 x2 0.8475 0.4701 1.803 0.071394 . x3 1.5143 0.4426 3.422 0.000622 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 134.602 on 99 degrees of freedom Residual deviance: 86.439 on 96 degrees of freedom AIC: 94.439 Number of Fisher Scoring iterations: 5 > > modmat <- out$x > > models <- cbind(rep(0:1, each = 4), rep(rep(0:1, times = 2), each = 2), + rep(0:1, times = 4)) > > exes <- paste("x", 1:3, sep = "") > models[nrow(models), ] [1] 1 1 1 > beta.initial <- c(nrow(models), out$coefficients) > > neighbors <- matrix(FALSE, nrow(models), nrow(models)) > for (i in 1:nrow(neighbors)) { + for (j in 1:ncol(neighbors)) { + foo <- models[i, ] + bar <- models[j, ] + if (sum(foo != bar) == 1) neighbors[i, j] <- TRUE + } + } > neighbors [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] FALSE TRUE TRUE FALSE TRUE FALSE FALSE FALSE [2,] TRUE FALSE FALSE TRUE FALSE TRUE FALSE FALSE [3,] TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE [4,] FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE [5,] TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE [6,] FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE [7,] FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE [8,] FALSE FALSE FALSE TRUE FALSE TRUE TRUE FALSE > > ludfun <- function(state, log.pseudo.prior, ...) { + stopifnot(is.numeric(state)) + stopifnot(length(state) == ncol(models) + 2) + icomp <- state[1] + stopifnot(icomp == as.integer(icomp)) + stopifnot(1 <= icomp && icomp <= nrow(models)) + stopifnot(is.numeric(log.pseudo.prior)) + stopifnot(length(log.pseudo.prior) == nrow(models)) + beta <- state[-1] + inies <- c(TRUE, as.logical(models[icomp, ])) + beta.logl <- beta + beta.logl[! inies] <- 0 + eta <- as.numeric(modmat %*% beta.logl) + logp <- ifelse(eta < 0, eta - log1p(exp(eta)), - log1p(exp(- eta))) + logq <- ifelse(eta < 0, - log1p(exp(eta)), - eta - log1p(exp(- eta))) + logl <- sum(logp[y == 1]) + sum(logq[y == 0]) + val <- logl - sum(beta^2) / 2 + log.pseudo.prior[icomp] + return(val) + } > > qux <- c(25.01, 5.875, 9.028, 0.6959, 11.73, 2.367, 5.864, 0.0) > > out <- temper(ludfun, initial = beta.initial, neighbors = neighbors, + nbatch = 25, blen = 20, nspac = 5, scale = 0.56789, debug = TRUE, + log.pseudo.prior = qux) > > names(out) [1] "lud" "neighbors" "nbatch" "blen" [5] "nspac" "scale" "outfun" "debug" [9] "parallel" "initial.seed" "final.seed" "time" [13] "batch" "acceptx" "accepti" "initial" [17] "final" "ibatch" "which" "unif.which" [21] "state" "log.hastings" "unif.hastings" "proposal" [25] "acceptd" "norm" "unif.choose" > > apply(out$ibatch, 2, mean) [1] 0.776 0.170 0.000 0.006 0.024 0.010 0.004 0.010 > > ### check decision about within-component or jump/swap > > identical(out$unif.which < 0.5, out$which) [1] TRUE > > identical(out$which, out$proposal[ , 1] == out$state[ , 1]) [1] TRUE > > ### check hastings ratio calculated correctly > > foo <- apply(out$state, 1, ludfun, log.pseudo.prior = qux) > bar <- apply(out$proposal, 1, ludfun, log.pseudo.prior = qux) > all.equal(bar - foo, out$log.hastings) [1] TRUE > > ### check hastings rejection decided correctly > > identical(out$log.hastings >= 0, is.na(out$unif.hastings)) [1] TRUE > all(out$log.hastings < 0 | out$acceptd) [1] TRUE > identical(out$acceptd, + out$log.hastings >= 0 | out$unif.hastings < exp(out$log.hastings)) [1] TRUE > > ### check acceptance carried out or not (according to decision) correctly > > before <- out$state > after <- before > after[- dim(after)[1], ] <- before[-1, ] > after[dim(after)[1], ] <- out$final > my.after <- before > my.after[out$acceptd, ] <- out$proposal[out$acceptd, ] > identical(after, my.after) [1] TRUE > > ### check within-component proposal > > my.coproposal.within <- out$state[out$which, ] > proposal.within <- out$proposal[out$which, ] > my.z <- out$norm[out$which, ] > my.proposal.within <- my.coproposal.within > my.proposal.within[ , -1] <- my.coproposal.within[ , -1] + out$scale * my.z > all.equal(proposal.within, my.proposal.within) [1] TRUE > > ### check swap proposal > > coproposal.swap <- out$state[! out$which, ] > proposal.swap <- out$proposal[! out$which, ] > unif.choose.swap <- out$unif.choose[! out$which] > my.i <- coproposal.swap[ , 1] > nneighbors <- apply(out$neighbors, 1, sum) > my.nneighbors <- nneighbors[my.i] > my.k <- floor(my.nneighbors * unif.choose.swap) + 1 > my.j <- my.k > foo <- seq(1, ncol(out$neighbors)) > for (i in seq(along = my.j)) { + my.j[i] <- (foo[out$neighbors[my.i[i], ]])[my.k[i]] + } > identical(coproposal.swap[ , 1], my.i) [1] TRUE > identical(proposal.swap[ , 1], my.j) [1] TRUE > > ### check standard normal and uniform random numbers are as purported > > save.Random.seed <- .Random.seed > .Random.seed <- out$initial.seed > > nx <- length(out$initial) - 1 > niter <- out$nbatch * out$blen * out$nspac > my.norm <- matrix(NA, nrow = nrow(out$norm), ncol = ncol(out$norm)) > my.unif.which <- rep(NA, niter) > my.unif.hastings <- rep(NA, niter) > my.unif.choose <- rep(NA, niter) > for (iiter in 1:niter) { + my.unif.which[iiter] <- runif(1) + if (out$which[iiter]) { + my.norm[iiter, ] <- rnorm(nx) + if (out$log.hastings[iiter] < 0) my.unif.hastings[iiter] <- runif(1) + } else { + my.unif.choose[iiter] <- runif(1) + if (out$log.hastings[iiter] < 0) my.unif.hastings[iiter] <- runif(1) + } + } > identical(my.norm, out$norm) [1] TRUE > identical(my.unif.which, out$unif.which) [1] TRUE > identical(my.unif.hastings, out$unif.hastings) [1] TRUE > identical(my.unif.choose, out$unif.choose) [1] TRUE > > .Random.seed <- save.Random.seed > > ### check batch means > > my.xstate <- after[ , -1] > foo <- my.xstate[seq(1, niter) %% out$nspac == 0, ] > foo <- array(as.vector(foo), dim = c(out$blen, out$nbatch, dim(foo)[2])) > foo <- apply(foo, c(2, 3), mean) > all.equal(foo, out$batch) [1] TRUE > > ### check ibatch means > > my.istate <- after[ , 1] > my.istate.matrix <- matrix(0, length(my.istate), nrow(models)) > for (i in 1:nrow(my.istate.matrix)) + my.istate.matrix[i, my.istate[i]] <- 1 > foo <- my.istate.matrix[seq(1, niter) %% out$nspac == 0, ] > foo <- array(as.vector(foo), dim = c(out$blen, out$nbatch, dim(foo)[2])) > foo <- apply(foo, c(2, 3), mean) > all.equal(foo, out$ibatch) [1] TRUE > > ### check acceptance rates > > nmodel <- nrow(out$neighbors) > > accept.within <- out$acceptd[out$which] > my.i.within <- out$state[out$which, 1] > my.i.within.accept <- my.i.within[accept.within] > my.acceptx.numer <- tabulate(my.i.within.accept, nbins = nmodel) > my.acceptx.denom <- tabulate(my.i.within, nbins = nmodel) > my.acceptx <- my.acceptx.numer / my.acceptx.denom > identical(my.acceptx, out$acceptx) [1] TRUE > > accept.swap <- out$acceptd[! out$which] > my.i.swap <- out$state[! out$which, 1] > my.j.swap <- out$proposal[! out$which, 1] > my.accepti <- matrix(NA, nmodel, nmodel) > for (i in 1:nmodel) { + for (j in 1:nmodel) { + if (out$neighbors[i, j]) { + my.accepti[i, j] <- + mean(accept.swap[my.i.swap == i & my.j.swap == j]) + } + } + } > identical(my.accepti, out$accepti) [1] TRUE > > ### check scale vector > > nx <- ncol(models) + 1 > newscale <- rnorm(nx, 0.5, 0.1) > > out <- temper(out, scale = newscale, log.pseudo.prior = qux) > > my.coproposal.within <- out$state[out$which, ] > proposal.within <- out$proposal[out$which, ] > my.z <- out$norm[out$which, ] > my.proposal.within <- my.coproposal.within > my.proposal.within[ , -1] <- my.coproposal.within[ , -1] + + sweep(my.z, 2, out$scale, "*") > all.equal(proposal.within, my.proposal.within) [1] TRUE > > ### check scale matrix > > matscale <- matrix(rnorm(nx * nx, 0.0, 0.1), nx, nx) > diag(matscale) <- 0.56789 > > out <- temper(out, scale = matscale, log.pseudo.prior = qux) > > my.coproposal.within <- out$state[out$which, ] > proposal.within <- out$proposal[out$which, ] > my.z <- out$norm[out$which, ] > my.proposal.within <- my.coproposal.within > my.proposal.within[ , -1] <- my.coproposal.within[ , -1] + + my.z %*% t(out$scale) > all.equal(proposal.within, my.proposal.within) [1] TRUE > > ### check scale list > > lisztscale <- list(0.56789, newscale, matscale, matscale, newscale, + 0.98765, 0.98765, newscale) > > out <- temper(out, scale = lisztscale, log.pseudo.prior = qux) > > my.coproposal.within <- out$state[out$which, ] > proposal.within <- out$proposal[out$which, ] > my.z <- out$norm[out$which, ] > my.proposal.within <- my.coproposal.within > for (iiter in 1:nrow(my.z)) { + my.i <- my.coproposal.within[iiter, 1] + my.scale <- out$scale[[my.i]] + if (is.matrix(my.scale)) { + my.proposal.within[iiter, -1] <- my.coproposal.within[iiter, -1] + + my.z[iiter, , drop = FALSE] %*% t(my.scale) + } else { + my.proposal.within[iiter, -1] <- my.coproposal.within[iiter, -1] + + my.z[iiter, ] * my.scale + } + } > all.equal(proposal.within, my.proposal.within) [1] TRUE > > ### check outfun > > outfun <- function(state, icomp) { + stopifnot(is.matrix(state)) + stopifnot(is.numeric(state)) + nx <- ncol(initial) + ncomp <- nrow(initial) + stopifnot(ncol(state) == nx) + stopifnot(nrow(state) == ncomp) + stopifnot(1 <= icomp & icomp <= ncomp) + foo <- state[icomp, ] + bar <- foo^2 + return(c(foo, bar)) + } > > ncomp <- nrow(models) > nx <- length(beta.initial) - 1 > > outfun <- function(state, icomp, ...) { + stopifnot(is.numeric(state)) + stopifnot(length(state) == nx + 1) + istate <- state[1] + stopifnot(istate == as.integer(istate)) + stopifnot(1 <= istate && istate <= ncomp) + stopifnot(1 <= icomp && icomp <= ncomp) + if (istate == icomp) { + foo <- state[-1] + } else { + foo <- rep(0, nx) + } + bar <- foo^2 + return(c(foo, bar)) + } > > out <- temper(ludfun, initial = out$final, neighbors = neighbors, + nbatch = 25, blen = 20, nspac = 5, scale = 0.56789, debug = TRUE, + outfun = outfun, log.pseudo.prior = qux, icomp = 4) > > before <- out$state > after <- before > after[- dim(after)[1], ] <- before[-1, ] > after[dim(after)[1], ] <- out$final > outies <- apply(after, 1, outfun, icomp = 4) > outies <- t(outies) > > foo <- outies[seq(1, niter) %% out$nspac == 0, ] > foo <- array(as.vector(foo), dim = c(out$blen, out$nbatch, dim(foo)[2])) > foo <- apply(foo, c(2, 3), mean) > all.equal(foo, out$batch) [1] TRUE > > > proc.time() user system elapsed 1.808 0.020 1.820 mcmc/tests/logitfunarg.R0000644000175100001440000000313213045741240015014 0ustar hornikusers # test outfun (function) epsilon <- 1e-15 library(mcmc) RNGkind("Marsaglia-Multicarry") set.seed(42) n <- 100 rho <- 0.5 beta0 <- 0.25 beta1 <- 1 beta2 <- 0.5 x1 <- rnorm(n) x2 <- rho * x1 + sqrt(1 - rho^2) * rnorm(n) eta <- beta0 + beta1 * x1 + beta2 * x2 p <- 1 / (1 + exp(- eta)) y <- as.numeric(runif(n) < p) out <- glm(y ~ x1 + x2, family = binomial()) logl <- function(beta) { if (length(beta) != 3) stop("length(beta) != 3") beta0 <- beta[1] beta1 <- beta[2] beta2 <- beta[3] eta <- beta0 + beta1 * x1 + beta2 * x2 p <- exp(eta) / (1 + exp(eta)) return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) } out.metro <- metrop(logl, coefficients(out), 1e3, scale = 0.01) out.metro$accept out.metro <- metrop(out.metro, scale = 0.1) out.metro$accept out.metro <- metrop(out.metro, scale = 0.5) out.metro$accept apply(out.metro$batch, 2, mean) out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, scale = 0.5, debug = TRUE, outfun = function(x) c(x, x^2)) out.metro <- metrop(out.metro) out.metro$outfun dim(out.metro$batch) logl <- function(beta, x1, x2, y) { if (length(beta) != 3) stop("length(beta) != 3") beta0 <- beta[1] beta1 <- beta[2] beta2 <- beta[3] eta <- beta0 + beta1 * x1 + beta2 * x2 p <- exp(eta) / (1 + exp(eta)) return(sum(log(p[y == 1])) + sum(log(1 - p[y == 0]))) } out.metro <- metrop(logl, as.numeric(coefficients(out)), 1e2, scale = 0.5, debug = TRUE, x1 = x1, x2 = x2, y = y) out.metro$lud out.metro <- metrop(out.metro, x1 = x1, x2 = x2, y = y) out.metro$lud mcmc/tests/morph.metrop.R0000644000175100001440000000205413045741600015127 0ustar hornikuserslibrary(mcmc) .morph.unmorph <- mcmc:::.morph.unmorph ########################################################################### # basic functionality check, can morph.metro run? Can we change the # transformation? set.seed(42) obj <- morph.metrop(function(x) dt(x, df=3, log=TRUE), 100, 100, morph=morph(b=3)) obj <- morph.metrop(obj, morph=morph(b=1)) obj <- morph.metrop(function(x) prod(dt(x, df=3, log=TRUE)), rep(100, 3), 100, morph=morph(p=3, b=1)) obj <- morph.metrop(obj, morph=morph(r=1, p=3, b=1)) all.equal(class(obj), c("mcmc", "morph.metropolis")) ########################################################################### # check .morph.unmorph obj <- list(final=10) outfun <- function(x) x m <- morph(p=3) obj <- .morph.unmorph(obj, m, outfun) all.equal(class(obj), c("mcmc", "morph.metropolis")) all.equal(sort(names(obj)), sort(c("final", "morph", "morph.final", "outfun"))) all.equal(c(obj$final, obj$morph.final), c(m$inverse(10), 10)) all.equal(obj$outfun, outfun) all.equal(obj$morph, m) mcmc/tests/accept-batch.Rout.save0000644000175100001440000000247313062634500016504 0ustar hornikusers R version 3.3.3 (2017-03-06) -- "Another Canoe" Copyright (C) 2017 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > # new feature batching acceptance rates > > set.seed(42) > > library(mcmc) > > h <- function(x) if (all(x >= 0) && sum(x) <= 1) return(1) else return(-Inf) > out <- metrop(h, rep(0, 5), nbatch = 100, blen = 100, scale = 0.1, + debug = TRUE) > > all.equal(out$accept, mean(out$accept.batch)) [1] TRUE > > foo <- matrix(out$debug.accept, nrow = out$blen) > bar <- colMeans(foo) > all.equal(out$accept.batch, bar) [1] TRUE > > options(digits = 4) # try to keep insanity of computer arithmetic under control > > out$accept [1] 0.2257 > t.test(out$accept.batch)$conf.int [1] 0.2124 0.2390 attr(,"conf.level") [1] 0.95 > > > proc.time() user system elapsed 0.168 0.020 0.184 mcmc/tests/initseq.R0000644000175100001440000000225213062544417014157 0ustar hornikusers library(mcmc) set.seed(42) n <- 1e5 rho <- 0.99 x <- arima.sim(model = list(ar = rho), n = n) gamma <- acf(x, lag.max = 1999, type = "covariance", plot = FALSE)$acf k <- seq(along = gamma) Gamma <- gamma[k %% 2 == 1] + gamma[k %% 2 == 0] k <- min(seq(along = Gamma)[Gamma < 0]) Gamma <- Gamma[1:k] Gamma[k] < 0 Gamma[k] <- 0 out <- .Call(mcmc:::C_initseq, x - mean(x)) names(out) all.equal(gamma[1], out$gamma0) length(out$Gamma.pos) == length(Gamma) all.equal(out$Gamma.pos, Gamma) Gamma.dec <- cummin(Gamma) all.equal(out$Gamma.dec, Gamma.dec) library(Iso) Gamma.con <- Gamma.dec[1] + cumsum(c(0, pava(diff(Gamma.dec)))) all.equal(out$Gamma.con, Gamma.con) all.equal(0, min(out$Gamma.pos - out$Gamma.dec)) max(diff(out$Gamma.dec)) < sqrt(.Machine$double.eps) all.equal(0, min(out$Gamma.dec - out$Gamma.con)) min(diff(diff(out$Gamma.con))) > (- sqrt(.Machine$double.eps)) all.equal(2 * sum(out$Gamma.pos) - out$gamma0, out$var.pos) all.equal(2 * sum(out$Gamma.dec) - out$gamma0, out$var.dec) all.equal(2 * sum(out$Gamma.con) - out$gamma0, out$var.con) rev(out$Gamma.pos)[1] == 0 rev(out$Gamma.dec)[1] == 0 all.equal(rev(out$Gamma.con)[1], 0) mcmc/src/0000755000175100001440000000000013074514645012007 5ustar hornikusersmcmc/src/Makevars0000644000175100001440000000003313074514645013477 0ustar hornikusersPKG_CFLAGS=$(C_VISIBILITY) mcmc/src/temper.c0000644000175100001440000012020213074514645013444 0ustar hornikusers #include #include #include #include "myutil.h" #include "mcmc.h" #ifdef BLEAT #include #endif /* BLEAT */ static void propose(SEXP coproposal, SEXP proposal, SEXP scale, double *z); static double logh(SEXP func, SEXP state, SEXP rho); static SEXP outfun(SEXP func, SEXP state, SEXP rho); static void check_valid_scale(SEXP scale, int i, int ncomp, int nx); SEXP temper(SEXP func1, SEXP initial, SEXP neighbors, SEXP nbatch, SEXP blen, SEXP nspac, SEXP scale, SEXP func2, SEXP debug, SEXP parallel, SEXP rho1, SEXP rho2) { if (! isFunction(func1)) error("argument \"func1\" must be function"); if (! isEnvironment(rho1)) error("argument \"rho1\" must be environment"); int is_parallel = getScalarLogical(parallel, "parallel"); int is_debug = getScalarLogical(debug, "debug"); if (! isLogical(neighbors)) error("argument \"neighbors\" must be logical"); if (! isMatrix(neighbors)) error("argument \"neighbors\" must be matrix"); if (nrows(neighbors) != ncols(neighbors)) error("argument \"neighbors\" must have same row and column dimension"); int ncomp = nrows(neighbors); if (ncomp <= 1) error("must have at least two components"); for (int i = 0; i < ncomp; i++) for (int j = 0; j < ncomp; j++) if (LOGICAL(neighbors)[i + ncomp * j] != LOGICAL(neighbors)[j + ncomp * i]) error("argument \"neighbors\" must be symmetric matrix"); if (! isReal(initial)) error("argument \"initial\" must be real"); if (! isAllFinite(initial)) error("argument \"initial\" must have all elements finite"); int nx; if (is_parallel) { if (! isMatrix(initial)) error("argument \"initial\" must be matrix in parallel case"); if (nrows(initial) != ncomp) error("row dim of args \"initial\" and \"neighbors\" must be same in parallel case"); nx = ncols(initial); } else /* serial */ { if (! (LENGTH(initial) > 1)) error("argument \"initial\" must have length > 1 in serial case"); double reali = REAL(initial)[0]; int i = reali; if (i != reali) error("1st elem of argument \"initial\" must be integer in serial case"); if (i <= 0 || i > ncomp) error("1st elem of argument \"initial\" must be in 1, ..., k in serial case"); nx = LENGTH(initial) - 1; } int int_nbatch = getScalarInteger(nbatch, "nbatch"); if (int_nbatch <= 0) error("argument \"nbatch\" must be positive"); int int_blen = getScalarInteger(blen, "blen"); if (int_blen <= 0) error("argument \"blen\" must be positive"); int int_nspac = getScalarInteger(nspac, "nspac"); if (int_nspac <= 0) error("argument \"nspac\" must be positive"); if (isNewList(scale)) { if (LENGTH(scale) != ncomp) error("argument \"scale\" must have length k if list"); for (int i = 0; i < ncomp; i++) { SEXP fred = VECTOR_ELT(scale, i); check_valid_scale(fred, i, ncomp, nx); } } else /* scale not list */ { check_valid_scale(scale, -1, ncomp, nx); } int no_outfun = isNull(func2); if (! no_outfun) { if (! isFunction(func2)) error("argument \"outfun\" must be function"); if (! isEnvironment(rho2)) error("argument \"rho2\" must be environment"); } double current_log_dens[ncomp]; if (is_parallel) { SEXP fred; PROTECT(fred = allocVector(REALSXP, nx + 1)); for (int i = 0; i < ncomp; i++) { REAL(fred)[0] = i + 1; for (int j = 0; j < nx; j++) REAL(fred)[j + 1] = REAL(initial)[i + ncomp * j]; current_log_dens[i] = logh(func1, fred, rho1); #ifdef BLATHER fprintf(stderr, "current_log_dens[%d] = %e\n", i, current_log_dens[i]); for (int j = 0; j < nx; j++) fprintf(stderr, " state[%d, %d] = %e\n", i, j, REAL(initial)[i + ncomp * j]); for (int j = 0; j <= nx; j++) fprintf(stderr, " fred[%d] = %e\n", j, REAL(fred)[j]); fprintf(stderr, " logh(func1, fred, rho1)) = %e\n", logh(func1, fred, rho1)); #endif /* BLATHER */ if (current_log_dens[i] == R_NegInf) error("log unnormalized density -Inf at initial state"); } UNPROTECT(1); } else /* serial */ { for (int i = 0; i < ncomp; i++) current_log_dens[i] = R_NaN; int i = REAL(initial)[0] - 1; current_log_dens[i] = logh(func1, initial, rho1); if (current_log_dens[i] == R_NegInf) error("log unnormalized density -Inf at initial state"); } /* at this point, all arguments have been checked for validity */ // current_log_dens saves info that cuts in half // the number of invocations of log unnormalized density SEXP state, proposal, coproposal; PROTECT(state = duplicate(initial)); PROTECT(proposal = allocVector(REALSXP, nx + 1)); PROTECT(coproposal = allocVector(REALSXP, nx + 1)); int nout; if (no_outfun) { nout = is_parallel ? nx * ncomp : nx; } else /* has outfun */ { nout = LENGTH(outfun(func2, state, rho2)); } int niter = int_nbatch * int_blen * int_nspac; // TO DO LIST // // regular output (if serial) // // batch nbatch x nout matrix // ibatch nbatch x ncomp matrix // acceptx vector of length ncomp // accepti ncomp x ncomp matrix // initial copy of initial state // final final state // // regular output (if parallel) // // batch (if outfun) nbatch x nout matrix // (if no outfun) nbatch x ncomp x nx array // acceptx vector of length ncomp // accepti ncomp x ncomp matrix // initial copy of initial state // final final state // // debug output (if not parallel) // // which vector of length niter (TRUE if within-component) // unif_which vector of length niter (uniform for deciding which) // state niter x (nx + 1) matrix (state before) // proposal niter x (nx + 1) matrix // log_hastings niter vector // unif_hastings niter vector (uniform for deciding acceptance) // acceptd niter vector (TRUE if accept) // norm niter x nx matrix (std normals) // unif_choose niter vector (uniform for choosing neighbor) // // debug output (if parallel) // // which vector of length niter (TRUE if within-component) // unif_which vector of length niter (uniform for deciding which) // state niter x ncomp x nx array (state before) // coproposal niter x (nx + 1) matrix // proposal niter x (nx + 1) matrix // log_hastings niter vector // unif_hastings niter vector (uniform for deciding acceptance) // acceptd niter vector (TRUE if accept) // norm niter x nx matrix (std normals) // unif_choose niter x 2 matrix (uniforms for choosing components // to update) // // for within-component move coproposal and proposal have natural // meaning // for swap move we have 2 coproposals (i, x_i) and (j, x_j) // and 2 proposals (i, x_j) and (j, x_i) but since the information // here is quite redundant we just store (i, x_i) in "coproposal" // and (j, x_j) in "proposal" -- the checker can figure it out int len_result_regular = is_parallel ? 5 : 6; int len_result_debug = is_parallel ? 10 : 9; int len_result = len_result_regular; len_result += is_debug ? len_result_debug : 0; #ifdef BLEAT fprintf(stderr, "len_result = %d\n", len_result); #endif /* BLEAT */ SEXP result, resultnames, acceptx, accepti, batch, ibatch, save_initial, save_final, debug_which, debug_unif_which, debug_state, debug_coproposal, debug_proposal, debug_log_hastings, debug_unif_hastings, debug_acceptd, debug_norm, debug_unif_choose; PROTECT(result = allocVector(VECSXP, len_result)); PROTECT(resultnames = allocVector(STRSXP, len_result)); namesgets(result, resultnames); UNPROTECT(1); if (no_outfun && is_parallel) PROTECT(batch = alloc3DArray(REALSXP, int_nbatch, ncomp, nx)); else PROTECT(batch = allocMatrix(REALSXP, int_nbatch, nout)); SET_VECTOR_ELT(result, 0, batch); SET_STRING_ELT(resultnames, 0, mkChar("batch")); UNPROTECT(1); PROTECT(acceptx = allocVector(REALSXP, ncomp)); SET_VECTOR_ELT(result, 1, acceptx); SET_STRING_ELT(resultnames, 1, mkChar("acceptx")); UNPROTECT(1); PROTECT(accepti = allocMatrix(REALSXP, ncomp, ncomp)); SET_VECTOR_ELT(result, 2, accepti); SET_STRING_ELT(resultnames, 2, mkChar("accepti")); UNPROTECT(1); PROTECT(save_initial = duplicate(initial)); SET_VECTOR_ELT(result, 3, save_initial); SET_STRING_ELT(resultnames, 3, mkChar("initial")); UNPROTECT(1); SET_STRING_ELT(resultnames, 4, mkChar("final")); // at end need to duplicate state as save_final and copy to result[4] if (! is_parallel) { PROTECT(ibatch = allocMatrix(REALSXP, int_nbatch, ncomp)); SET_VECTOR_ELT(result, 5, ibatch); SET_STRING_ELT(resultnames, 5, mkChar("ibatch")); UNPROTECT(1); } if (is_debug) { PROTECT(debug_which = allocVector(LGLSXP, niter)); SET_VECTOR_ELT(result, len_result_regular + 0, debug_which); SET_STRING_ELT(resultnames, len_result_regular + 0, mkChar("which")); UNPROTECT(1); PROTECT(debug_unif_which = allocVector(REALSXP, niter)); SET_VECTOR_ELT(result, len_result_regular + 1, debug_unif_which); SET_STRING_ELT(resultnames, len_result_regular + 1, mkChar("unif.which")); UNPROTECT(1); if (is_parallel) PROTECT(debug_state = alloc3DArray(REALSXP, niter, ncomp, nx)); else PROTECT(debug_state = allocMatrix(REALSXP, niter, nx + 1)); SET_VECTOR_ELT(result, len_result_regular + 2, debug_state); SET_STRING_ELT(resultnames, len_result_regular + 2, mkChar("state")); UNPROTECT(1); PROTECT(debug_log_hastings = allocVector(REALSXP, niter)); SET_VECTOR_ELT(result, len_result_regular + 3, debug_log_hastings); SET_STRING_ELT(resultnames, len_result_regular + 3, mkChar("log.hastings")); UNPROTECT(1); PROTECT(debug_unif_hastings = allocVector(REALSXP, niter)); SET_VECTOR_ELT(result, len_result_regular + 4, debug_unif_hastings); SET_STRING_ELT(resultnames, len_result_regular + 4, mkChar("unif.hastings")); UNPROTECT(1); PROTECT(debug_proposal = allocMatrix(REALSXP, niter, nx + 1)); SET_VECTOR_ELT(result, len_result_regular + 5, debug_proposal); SET_STRING_ELT(resultnames, len_result_regular + 5, mkChar("proposal")); UNPROTECT(1); PROTECT(debug_acceptd = allocVector(LGLSXP, niter)); SET_VECTOR_ELT(result, len_result_regular + 6, debug_acceptd); SET_STRING_ELT(resultnames, len_result_regular + 6, mkChar("acceptd")); UNPROTECT(1); PROTECT(debug_norm = allocMatrix(REALSXP, niter, nx)); SET_VECTOR_ELT(result, len_result_regular + 7, debug_norm); SET_STRING_ELT(resultnames, len_result_regular + 7, mkChar("norm")); UNPROTECT(1); if (is_parallel) PROTECT(debug_unif_choose = allocMatrix(REALSXP, niter, 2)); else PROTECT(debug_unif_choose = allocVector(REALSXP, niter)); SET_VECTOR_ELT(result, len_result_regular + 8, debug_unif_choose); SET_STRING_ELT(resultnames, len_result_regular + 8, mkChar("unif.choose")); UNPROTECT(1); if (is_parallel) { PROTECT(debug_coproposal = allocMatrix(REALSXP, niter, nx + 1)); SET_VECTOR_ELT(result, len_result_regular + 9, debug_coproposal); SET_STRING_ELT(resultnames, len_result_regular + 9, mkChar("coproposal")); UNPROTECT(1); } } // at this point, entire output structure (SEXP result) is set up, except // for aforementioned need to duplicate final state and put in result[4] GetRNGstate(); // need buffers for acceptance rate(s) double acceptx_numer[ncomp]; double acceptx_denom[ncomp]; double accepti_numer[ncomp][ncomp]; double accepti_denom[ncomp][ncomp]; for (int i = 0; i < ncomp; i++) { acceptx_numer[i] = 0; acceptx_denom[i] = 0; for (int j = 0; j < ncomp; j++) { accepti_numer[i][j] = 0; accepti_denom[i][j] = 0; } } // need neighbor counts and neighbors // note: the_neighbors uses zero-origin indexing both for indexing // and values double n_neighbors[ncomp]; for (int i = 0; i < ncomp; i++) { n_neighbors[i] = 0; for (int j = 0; j < ncomp; j++) n_neighbors[i] += LOGICAL(neighbors)[i + ncomp * j]; } double the_neighbors[ncomp][ncomp]; for (int i = 0; i < ncomp; i++) { for (int j = 0, k = 0; j < ncomp; j++) { if (LOGICAL(neighbors)[i + ncomp * j]) the_neighbors[i][k++] = j; } } // need buffers for batch means double batch_buff[nout]; double ibatch_buff[ncomp]; for (int kbatch = 0, iiter = 0; kbatch < int_nbatch; kbatch++) { for (int i = 0; i < nout; i++) batch_buff[i] = 0.0; for (int i = 0; i < ncomp; i++) ibatch_buff[i] = 0.0; for (int jbatch = 0; jbatch < int_blen; jbatch++) { for (int ispac = 0; ispac < int_nspac; ispac++, iiter++) { #ifdef EXTRA_CHECK #ifdef WOOF fprintf(stderr, "Check for validity of current_log_dens at top of inner loop\n"); #endif /* WOOF */ if (is_parallel) { for (int i = 0; i < ncomp; i++) { REAL(proposal)[0] = i + 1; for (int j = 0; j < nx; j++) REAL(proposal)[j + 1] = REAL(state)[i + ncomp * j]; #ifdef BLATHER fprintf(stderr, "current_log_dens[%d] = %e\n", i, current_log_dens[i]); for (int j = 0; j < nx; j++) fprintf(stderr, " state[%d, %d] = %e\n", i, j, REAL(state)[i + ncomp * j]); for (int j = 0; j <= nx; j++) fprintf(stderr, " proposal[%d] = %e\n", j, REAL(proposal)[j]); fprintf(stderr, " logh(func1, proposal, rho1)) = %e\n", logh(func1, proposal, rho1)); #endif /* BLATHER */ if (current_log_dens[i] != logh(func1, proposal, rho1)) error("current_log_dens[%d] bogus\n", i); } } else /* serial */ { for (int j = 0; j <= nx; j++) REAL(proposal)[j] = REAL(state)[j]; int i = REAL(proposal)[0] - 1; double my_actual_logh = logh(func1, proposal, rho1); double my_stored_logh = current_log_dens[i]; #ifdef WOOF fprintf(stderr, "icomp = %d, stored logh = %e, actual logh = %e\n", i + 1, my_stored_logh, my_actual_logh); #endif /* WOOF */ if (my_stored_logh != my_actual_logh) error("current_log_dens[%d] bogus\n", i); } #endif /* EXTRA_CHECK */ if (is_debug) { int len_state = is_parallel ? ncomp * nx : nx + 1; for (int j = 0; j < len_state; j++) REAL(debug_state)[iiter + niter * j] = REAL(state)[j]; } double my_unif_which = unif_rand(); int my_which = my_unif_which < 0.5; if (is_debug) { LOGICAL(debug_which)[iiter] = my_which; REAL(debug_unif_which)[iiter] = my_unif_which; } if (my_which) /* within-component update */ { if (is_parallel) { // note: my_i and my_j are 1-origin indexing (for R) // go from 1, ..., ncomp // everything else 0-origin indexing (for C) double unif_choose = unif_rand(); int my_i = trunc(ncomp * unif_choose) + 1; if (my_i > ncomp) my_i--; if (my_i <= 0 || my_i > ncomp) error("Can't happen: my_i out of range"); REAL(coproposal)[0] = my_i; for (int j = 0; j < nx; j++) REAL(coproposal)[j + 1] = REAL(state)[(my_i - 1) + ncomp * j]; double z[nx]; propose(coproposal, proposal, scale, z); double my_coproposal_log_dens = current_log_dens[my_i - 1]; #ifdef EXTRA_CHECK if (my_coproposal_log_dens != logh(func1, coproposal, rho1)) { fprintf(stderr, "with-in component update (parallel)\n"); error("saving logh didn't work right (coproposal)"); } #endif /* EXTRA_CHECK */ #ifdef BLEAT if (my_coproposal_log_dens == R_NegInf) { fprintf(stderr, "Oopsie #1!\n"); fprintf(stderr, " my_i = %d\n", my_i); fprintf(stderr, " current_log_dens[my_i - 1] = %e\n", current_log_dens[my_i - 1]); fprintf(stderr, " my_coproposal_log_dens = %e\n", my_coproposal_log_dens); for (int j = 0; j <= nx; j++) fprintf(stderr, " coproposal[%d] = %e\n", j + 1, REAL(coproposal)[j]); fprintf(stderr, " logh(coproposal) = %e\n", logh(func1, coproposal, rho1)); } #endif /* BLEAT */ if (my_coproposal_log_dens == R_NegInf) error("Can't happen: log density -Inf at current state"); double my_new_log_dens = logh(func1, proposal, rho1); double my_log_hastings = my_new_log_dens - my_coproposal_log_dens; if (isnan(my_log_hastings) || (isinf(my_log_hastings) && my_log_hastings > 0)) error("Can't happen: log hastings ratio +Inf or NaN\n"); int my_accept = 1; double my_unif_hastings = R_NaReal; if (my_log_hastings < 0.0) { my_unif_hastings = unif_rand(); my_accept = my_unif_hastings < exp(my_log_hastings); } if (is_debug) { for (int j = 0; j <= nx; j++) REAL(debug_proposal)[iiter + niter * j] = REAL(proposal)[j]; for (int j = 0; j <= nx; j++) REAL(debug_coproposal)[iiter + niter * j] = REAL(coproposal)[j]; REAL(debug_log_hastings)[iiter] = my_log_hastings; REAL(debug_unif_hastings)[iiter] = my_unif_hastings; LOGICAL(debug_acceptd)[iiter] = my_accept; for (int j = 0; j < nx; j++) REAL(debug_norm)[iiter + niter * j] = z[j]; REAL(debug_unif_choose)[iiter] = unif_choose; REAL(debug_unif_choose)[iiter + niter] = R_NaReal; } if (my_accept) { for (int j = 0; j < nx; j++) REAL(state)[(my_i - 1) + ncomp * j] = REAL(proposal)[j + 1]; current_log_dens[my_i - 1] = my_new_log_dens; acceptx_numer[my_i - 1]++; } acceptx_denom[my_i - 1]++; } else /* serial */ { int my_i = REAL(state)[0]; if (my_i <= 0 || my_i > ncomp) error("Can't happen: my_i out of range"); REAL(coproposal)[0] = my_i; for (int j = 0; j < nx; j++) REAL(coproposal)[j + 1] = REAL(state)[j + 1]; double z[nx]; propose(coproposal, proposal, scale, z); double my_new_log_dens = logh(func1, proposal, rho1); double my_old_log_dens = current_log_dens[my_i - 1]; #ifdef BLEAT if (my_old_log_dens == R_NegInf) { fprintf(stderr, "Oopsie #2!\n"); } #endif /* BLEAT */ if (my_old_log_dens == R_NegInf) error("Can't happen: log density -Inf at current state"); #ifdef EXTRA_CHECK if (my_old_log_dens != logh(func1, coproposal, rho1)) { fprintf(stderr, "with-in component update (serial)\n"); error("saving logh didn't work right (coproposal)"); } #endif /* EXTRA_CHECK */ double my_log_hastings = my_new_log_dens - my_old_log_dens; if (isnan(my_log_hastings) || (isinf(my_log_hastings) && my_log_hastings > 0)) { #ifdef WOOF fprintf(stderr, "my_old_log_dens = %e\n", my_old_log_dens); fprintf(stderr, "my_new_log_dens = %e\n", my_old_log_dens); fprintf(stderr, "my_i = %d\n", my_i); #endif /* WOOF */ error("Can't happen: log hastings ratio +Inf or NaN\n"); } int my_accept = 1; double my_unif_hastings = R_NaReal; if (my_log_hastings < 0.0) { my_unif_hastings = unif_rand(); my_accept = my_unif_hastings < exp(my_log_hastings); } if (is_debug) { for (int j = 0; j <= nx; j++) REAL(debug_proposal)[iiter + niter * j] = REAL(proposal)[j]; REAL(debug_log_hastings)[iiter] = my_log_hastings; REAL(debug_unif_hastings)[iiter] = my_unif_hastings; LOGICAL(debug_acceptd)[iiter] = my_accept; for (int j = 0; j < nx; j++) REAL(debug_norm)[iiter + niter * j] = z[j]; REAL(debug_unif_choose)[iiter] = R_NaReal; } if (my_accept) { for (int j = 0; j <= nx; j++) REAL(state)[j] = REAL(proposal)[j]; current_log_dens[my_i - 1] = my_new_log_dens; acceptx_numer[my_i - 1]++; } acceptx_denom[my_i - 1]++; } } else /* jump/swap update */ { if (is_parallel) { double unif_choose_one = unif_rand(); double unif_choose_two = unif_rand(); int my_i = trunc(ncomp * unif_choose_one) + 1; if (my_i > ncomp) my_i--; if (my_i <= 0 || my_i > ncomp) error("Can't happen: my_i out of range"); REAL(coproposal)[0] = my_i; for (int j = 0; j < nx; j++) REAL(coproposal)[j + 1] = REAL(state)[(my_i - 1) + ncomp * j]; int my_i_neighbors = n_neighbors[my_i - 1]; int foo = trunc(my_i_neighbors * unif_choose_two) + 1; if (foo > my_i_neighbors) foo--; int my_j = the_neighbors[my_i - 1][foo - 1] + 1; #ifdef BLEAT fprintf(stderr, "my_i = %d, my_i_neighbors = %d, foo = %d\n", my_i, my_i_neighbors, foo); fprintf(stderr, "(parallel) ncomp = %d, my_j = %d\n", ncomp, my_j); #endif /* BLEAT */ if (my_j <= 0 || my_j > ncomp) error("Can't happen: my_j out of range"); REAL(proposal)[0] = my_j; for (int j = 0; j < nx; j++) REAL(proposal)[j + 1] = REAL(state)[(my_j - 1) + ncomp * j]; double my_coproposal_log_dens = current_log_dens[my_i - 1]; #ifdef EXTRA_CHECK if (my_coproposal_log_dens != logh(func1, coproposal, rho1)) { fprintf(stderr, "swap component update (parallel)\n"); error("saving logh didn't work right (coproposal)"); } #endif /* EXTRA_CHECK */ #ifdef BLEAT if (my_coproposal_log_dens == R_NegInf) { fprintf(stderr, "Oopsie #3!\n"); fprintf(stderr, " my_i = %d\n", my_i); fprintf(stderr, " current_log_dens[my_i - 1] = %e\n", current_log_dens[my_i - 1]); fprintf(stderr, " my_coproposal_log_dens = %e\n", my_coproposal_log_dens); for (int j = 0; j <= nx; j++) fprintf(stderr, " coproposal[%d] = %e\n", j + 1, REAL(coproposal)[j]); fprintf(stderr, " logh(coproposal) = %e\n", logh(func1, coproposal, rho1)); } #endif /* BLEAT */ if (my_coproposal_log_dens == R_NegInf) error("Can't happen: log density -Inf at current state"); double my_proposal_log_dens = current_log_dens[my_j - 1]; #ifdef EXTRA_CHECK if (my_proposal_log_dens != logh(func1, proposal, rho1)) { fprintf(stderr, "swap component update (parallel)\n"); error("saving logh didn't work right (proposal)"); } #endif /* EXTRA_CHECK */ #ifdef BLEAT if (my_proposal_log_dens == R_NegInf) { fprintf(stderr, "Oopsie #4!\n"); } #endif /* BLEAT */ if (my_proposal_log_dens == R_NegInf) error("Can't happen: log density -Inf at current state"); if (is_debug) { for (int j = 0; j <= nx; j++) REAL(debug_proposal)[iiter + niter * j] = REAL(proposal)[j]; for (int j = 0; j <= nx; j++) REAL(debug_coproposal)[iiter + niter * j] = REAL(coproposal)[j]; } // proposal and coproposal now saved and logh evaluated // for them, can clobber to evaluate for swap REAL(proposal)[0] = my_i; REAL(coproposal)[0] = my_j; double my_swapped_coproposal_log_dens = logh(func1, coproposal, rho1); double my_swapped_proposal_log_dens = logh(func1, proposal, rho1); double my_log_hastings = my_swapped_proposal_log_dens + my_swapped_coproposal_log_dens - my_proposal_log_dens - my_coproposal_log_dens; if (isnan(my_log_hastings) || (isinf(my_log_hastings) && my_log_hastings > 0)) error("Can't happen: log hastings ratio +Inf or NaN\n"); int my_accept = 1; double my_unif_hastings = R_NaReal; if (my_log_hastings < 0.0) { my_unif_hastings = unif_rand(); my_accept = my_unif_hastings < exp(my_log_hastings); } if (is_debug) { REAL(debug_log_hastings)[iiter] = my_log_hastings; REAL(debug_unif_hastings)[iiter] = my_unif_hastings; LOGICAL(debug_acceptd)[iiter] = my_accept; for (int j = 0; j < nx; j++) REAL(debug_norm)[iiter + niter * j] = R_NaReal; REAL(debug_unif_choose)[iiter] = unif_choose_one; REAL(debug_unif_choose)[iiter + niter] = unif_choose_two; } if (my_accept) { for (int j = 0; j < nx; j++) REAL(state)[(my_j - 1) + ncomp * j] = REAL(coproposal)[j + 1]; for (int j = 0; j < nx; j++) REAL(state)[(my_i - 1) + ncomp * j] = REAL(proposal)[j + 1]; current_log_dens[my_i - 1] = my_swapped_proposal_log_dens; current_log_dens[my_j - 1] = my_swapped_coproposal_log_dens; accepti_numer[my_i - 1][my_j - 1]++; } accepti_denom[my_i - 1][my_j - 1]++; } else /* serial */ { int my_i = REAL(state)[0]; if (my_i <= 0 || my_i > ncomp) error("Can't happen: my_i out of range"); int my_i_neighbors = n_neighbors[my_i - 1]; double unif_choose = unif_rand(); int foo = trunc(my_i_neighbors * unif_choose) + 1; if (foo > my_i_neighbors) foo--; int my_j = the_neighbors[my_i - 1][foo - 1] + 1; int my_j_neighbors = n_neighbors[my_j - 1]; #ifdef BLEAT fprintf(stderr, "(serial) ncomp = %d, my_j = %d, my_i_neighbors = %d, foo = %d\n", ncomp, my_j, my_i_neighbors, foo); fprintf(stderr, " unif_choose = %f\n", unif_choose); for (int j = 0; j < ncomp; j++) fprintf(stderr, " LOGICAL(neighbors)[(my_i - 1) + ncomp * %d] = %d\n", j, LOGICAL(neighbors)[(my_i - 1) + ncomp * j]); #endif /* BLEAT */ if (my_j <= 0 || my_j > ncomp) error("Can't happen: my_j out of range"); REAL(proposal)[0] = my_j; for (int j = 0; j < nx; j++) REAL(proposal)[j + 1] = REAL(state)[j + 1]; #ifdef WOOF fprintf(stderr, "got to here, about to call logh\n"); fprintf(stderr, " REAL(proposal)[0] = %e\n", REAL(proposal)[0]); #endif /* WOOF */ double my_new_log_dens = logh(func1, proposal, rho1); double my_old_log_dens = current_log_dens[my_i - 1]; #ifdef BLEAT if (my_old_log_dens == R_NegInf) { fprintf(stderr, "Oopsie #5!\n"); } #endif /* BLEAT */ #ifdef EXTRA_CHECK for (int j = 0; j <= nx; j++) REAL(coproposal)[j] = REAL(state)[j]; if (my_old_log_dens != logh(func1, coproposal, rho1)) { fprintf(stderr, "swap component update (serial)\n"); error("saving logh didn't work right (coproposal)"); } #endif /* EXTRA_CHECK */ if (my_old_log_dens == R_NegInf) error("Can't happen: log density -Inf at current state"); double my_log_hastings = my_new_log_dens - my_old_log_dens + log(my_i_neighbors) - log(my_j_neighbors); if (isnan(my_log_hastings) || (isinf(my_log_hastings) && my_log_hastings > 0)) error("Can't happen: log hastings ratio +Inf or NaN\n"); int my_accept = 1; double my_unif_hastings = R_NaReal; if (my_log_hastings < 0.0) { my_unif_hastings = unif_rand(); my_accept = my_unif_hastings < exp(my_log_hastings); } if (is_debug) { for (int j = 0; j <= nx; j++) REAL(debug_proposal)[iiter + niter * j] = REAL(proposal)[j]; REAL(debug_log_hastings)[iiter] = my_log_hastings; REAL(debug_unif_hastings)[iiter] = my_unif_hastings; LOGICAL(debug_acceptd)[iiter] = my_accept; for (int j = 0; j < nx; j++) REAL(debug_norm)[iiter + niter * j] = R_NaReal; REAL(debug_unif_choose)[iiter] = unif_choose; } #ifdef WOOF_WOOF fprintf(stderr, "unif_choose = %f, ", unif_choose); fprintf(stderr, "REAL(debug_unif_choose)[iiter] = %f\n", REAL(debug_unif_choose)[iiter]); #endif /* WOOF_WOOF */ if (my_accept) { for (int j = 0; j <= nx; j++) REAL(state)[j] = REAL(proposal)[j]; current_log_dens[my_j - 1] = my_new_log_dens; accepti_numer[my_i - 1][my_j - 1]++; } accepti_denom[my_i - 1][my_j - 1]++; } } } /* end of inner loop (one iteration) */ if (no_outfun) { if (is_parallel) for (int i = 0; i < nout; i++) batch_buff[i] += REAL(state)[i]; else for (int i = 0; i < nout; i++) batch_buff[i] += REAL(state)[i + 1]; } else /* has outfun */ { SEXP fred = outfun(func2, state, rho2); if (LENGTH(fred) != nout) error("function outfun returns results of different lengths"); for (int i = 0; i < nout; i++) batch_buff[i] += REAL(fred)[i]; } if (! is_parallel) ibatch_buff[((int) REAL(state)[0]) - 1]++; } /* end of middle loop (one batch) */ if (no_outfun && is_parallel) for (int i = 0; i < ncomp; i++) for (int j = 0; j < nx; j++) REAL(batch)[kbatch + int_nbatch * (i + ncomp * j)] = batch_buff[i + ncomp * j] / int_blen; else for (int i = 0; i < nout; i++) REAL(batch)[kbatch + int_nbatch * i] = batch_buff[i] / int_blen; if (! is_parallel) for (int i = 0; i < ncomp; i++) REAL(ibatch)[kbatch + int_nbatch * i] = ibatch_buff[i] / int_blen; } /* end of outer loop */ for (int i = 0; i < ncomp; i++) REAL(acceptx)[i] = acceptx_numer[i] / acceptx_denom[i]; for (int i = 0; i < ncomp; i++) for (int j = 0; j < ncomp; j++) if (LOGICAL(neighbors)[i + ncomp * j]) REAL(accepti)[i + ncomp * j] = accepti_numer[i][j] / accepti_denom[i][j]; else REAL(accepti)[i + ncomp * j] = R_NaReal; PutRNGstate(); PROTECT(save_final = duplicate(state)); SET_VECTOR_ELT(result, 4, save_final); UNPROTECT(5); return result; } static void check_valid_scale(SEXP scale, int i, int ncomp, int nx) { if (i > ncomp) error("check_valid_scale: i = %d, ncomp = %d, invalid\n", i, ncomp); if (! isReal(scale)) { if (i >= 0) error("component %d of scale not type double", i + 1); else error("scale not type double"); } if (! isAllFinite(scale)) { if (i >= 0) error("component %d of scale has non-finite element", i + 1); else error("scale has non-finite element"); } if (isMatrix(scale)) { if (nrows(scale) != nx) { if (i >= 0) error("component %d of scale matrix with wrong row dim", i + 1); else error("scale matrix with wrong row dim"); } if (ncols(scale) != nx) { if (i >= 0) error("component %d of scale matrix with wrong col dim", i + 1); else error("scale matrix with wrong col dim"); } } else /* scale not matrix */ { if (! (LENGTH(scale) == 1 || LENGTH(scale) == nx)) { if (i >= 0) error("component %d of scale not matrix, scalar, or vector of length k", i + 1); else error("scale not matrix, scalar, or vector of length k"); } } } static double logh(SEXP func, SEXP state, SEXP rho) { SEXP call, result, foo; double bar; PROTECT(call = lang2(func, state)); PROTECT(result = eval(call, rho)); if (! isNumeric(result)) error("log unnormalized density function returned non-numeric"); if (LENGTH(result) != 1) error("log unnormalized density function returned non-scalar"); PROTECT(foo = coerceVector(result, REALSXP)); bar = REAL(foo)[0]; UNPROTECT(3); if (bar == R_PosInf) error("log unnormalized density function returned +Inf"); if (R_IsNaN(bar) || R_IsNA(bar)) error("log unnormalized density function returned NA or NaN"); /* Note: -Inf is allowed */ return bar; } static SEXP outfun(SEXP func, SEXP state, SEXP rho) { SEXP call, result, foo; PROTECT(call = lang2(func, state)); PROTECT(result = eval(call, rho)); if (! isNumeric(result)) error("outfun returned non-numeric"); PROTECT(foo = coerceVector(result, REALSXP)); UNPROTECT(3); return foo; } static void propose(SEXP coproposal, SEXP proposal, SEXP scale, double *z) { int my_i = REAL(coproposal)[0]; int nx = LENGTH(coproposal) - 1; for (int j = 0; j < nx; j++) z[j] = norm_rand(); if (isNewList(scale)) scale = VECTOR_ELT(scale, my_i - 1); REAL(proposal)[0] = my_i; if (LENGTH(scale) == 1) { for (int j = 0; j < nx; j++) REAL(proposal)[j + 1] = REAL(coproposal)[j + 1] + REAL(scale)[0] * z[j]; } else if (LENGTH(scale) == nx) { for (int j = 0; j < nx; j++) REAL(proposal)[j + 1] = REAL(coproposal)[j + 1] + REAL(scale)[j] * z[j]; } else /* scale is nx by nx matrix */ { for (int j = 0; j < nx; j++) REAL(proposal)[j + 1] = REAL(coproposal)[j + 1]; for (int j = 0, m = 0; j < nx; j++) { double u = z[j]; for (int k = 0; k < nx; k++) REAL(proposal)[k + 1] += REAL(scale)[m++] * u; } } } mcmc/src/getScalarInteger.c0000644000175100001440000000066513074514645015405 0ustar hornikusers #include #include #include "myutil.h" int getScalarInteger(SEXP foo, char *argname) { if (! isNumeric(foo)) error("argument \"%s\" must be numeric", argname); if (LENGTH(foo) != 1) error("argument \"%s\" must be scalar", argname); if (isInteger(foo)) { return INTEGER(foo)[0]; } else { SEXP bar = coerceVector(foo, INTSXP); return INTEGER(bar)[0]; } } mcmc/src/olbm.c0000644000175100001440000000324313074514645013106 0ustar hornikusers #include #include "mcmc.h" /* overlapping batch means for vector time series * * input: * * x time series, n x p matrix, n time points and p components * len batch length * * output: * * mean sample mean, a p vector * var estimated variance of sample mean, a p x p matrix * */ #define X(I,J) x[(I) + n * (J)] #define VAR(I,J) var[(I) + p * (J)] void olbm(double *x, int *nin, int *pin, int *lin, double *mean, double *var, int *nocalcin) { int n = nin[0]; int p = pin[0]; int len = lin[0]; double nbatch = n - len + 1; int nocalc = nocalcin[0]; double *work = (double *) R_alloc(p, sizeof(double)); int i, j, k, l; if (len > n) error("len > n\n"); if (! nocalc) for (i=0; i=0; j--) VAR(i,j) = (work[i] - mean[i]) * (work[j] - mean[j]); } for (k=0, l=len; l=0; j--) VAR(i,j) += (work[i] - mean[i]) * (work[j] - mean[j]); } /* fix up means and variances, divide out factors of len and len^2 */ for (i=0; i #include SEXP metrop(SEXP func1, SEXP initial, SEXP nbatch, SEXP blen, SEXP nspac, SEXP scale, SEXP func2, SEXP debug, SEXP rho1, SEXP rho2); SEXP temper(SEXP func1, SEXP initial, SEXP neighbors, SEXP nbatch, SEXP blen, SEXP nspac, SEXP scale, SEXP func2, SEXP debug, SEXP parallel, SEXP rho1, SEXP rho2); SEXP initseq(SEXP x); void olbm(double *x, int *nin, int *pin, int *lin, double *mean, double *var, int *nocalcin); #endif /* MCMC_MCMC_H */ mcmc/src/isAllFinite.c0000644000175100001440000000046013074514645014356 0ustar hornikusers #include #include #include "myutil.h" int isAllFinite(SEXP foo) { int d, i; int result = TRUE; if (! isReal(foo)) error("argument must be real"); d = LENGTH(foo); for (i = 0; i < d; i++) result &= R_finite(REAL(foo)[i]); return result; } mcmc/src/metrop.c0000644000175100001440000004017213074514645013465 0ustar hornikusers #include #include #include #include "myutil.h" #include "mcmc.h" static void proposal_setup(SEXP scale, int d); static void propose(SEXP state, SEXP proposal, double *z); static double logh(SEXP func, SEXP state, SEXP rho); static int out_setup(SEXP func, SEXP rho, SEXP state); static void outfun(SEXP state, SEXP buffer); SEXP metrop(SEXP func1, SEXP initial, SEXP nbatch, SEXP blen, SEXP nspac, SEXP scale, SEXP func2, SEXP debug, SEXP rho1, SEXP rho2) { int int_nbatch, int_blen, int_nspac, int_debug; SEXP state, proposal; int dim_state, dim_out; SEXP result, resultnames, acceptance_rate, path, save_initial, save_final, acceptance_rate_batches; double *batch_buffer; SEXP out_buffer; double acceptances = 0.0; double tries = 0.0; double current_log_dens; if (! isFunction(func1)) error("argument \"func1\" must be function"); if (! isEnvironment(rho1)) error("argument \"rho1\" must be environment"); if (! isNumeric(initial)) error("argument \"initial\" must be numeric"); if (! isNumeric(nbatch)) error("argument \"nbatch\" must be numeric"); if (! isNumeric(blen)) error("argument \"blen\" must be numeric"); if (! isNumeric(nspac)) error("argument \"nspac\" must be numeric"); if (! isNumeric(scale)) error("argument \"scale\" must be numeric"); if (! isLogical(debug)) error("argument \"debug\" must be logical"); int_nbatch = getScalarInteger(nbatch, "nbatch"); int_blen = getScalarInteger(blen, "blen"); int_nspac = getScalarInteger(nspac, "nspac"); int_debug = getScalarLogical(debug, "debug"); if (int_nbatch <= 0) error("argument \"nbatch\" must be positive"); if (int_blen <= 0) error("argument \"blen\" must be positive"); if (int_nspac <= 0) error("argument \"nspac\" must be positive"); PROTECT(state = coerceVector(duplicate(initial), REALSXP)); if (! isAllFinite(state)) error("all elements of \"state\" must be finite"); dim_state = LENGTH(state); PROTECT(proposal = allocVector(REALSXP, dim_state)); proposal_setup(scale, dim_state); dim_out = out_setup(func2, rho2, state); batch_buffer = (double *) R_alloc(dim_out, sizeof(double)); PROTECT(out_buffer = allocVector(REALSXP, dim_out)); if (! int_debug) { PROTECT(result = allocVector(VECSXP, 5)); PROTECT(resultnames = allocVector(STRSXP, 5)); } else { PROTECT(result = allocVector(VECSXP, 11)); PROTECT(resultnames = allocVector(STRSXP, 11)); } PROTECT(acceptance_rate = allocVector(REALSXP, 1)); SET_VECTOR_ELT(result, 0, acceptance_rate); PROTECT(path = allocMatrix(REALSXP, dim_out, int_nbatch)); SET_VECTOR_ELT(result, 1, path); PROTECT(save_initial = duplicate(state)); SET_VECTOR_ELT(result, 2, save_initial); /* cannot set final yet because we haven't got it yet (final value at end of run). See third to last statement of this function. */ PROTECT(acceptance_rate_batches = allocVector(REALSXP, int_nbatch)); SET_VECTOR_ELT(result, 4, acceptance_rate_batches); UNPROTECT(4); SET_STRING_ELT(resultnames, 0, mkChar("accept")); SET_STRING_ELT(resultnames, 1, mkChar("batch")); SET_STRING_ELT(resultnames, 2, mkChar("initial")); SET_STRING_ELT(resultnames, 3, mkChar("final")); SET_STRING_ELT(resultnames, 4, mkChar("accept.batch")); if (int_debug) { SEXP spath, ppath, gpath, upath, zpath, apath; int nn = int_nbatch * int_blen * int_nspac; PROTECT(spath = allocMatrix(REALSXP, dim_state, nn)); SET_VECTOR_ELT(result, 5, spath); PROTECT(ppath = allocMatrix(REALSXP, dim_state, nn)); SET_VECTOR_ELT(result, 6, ppath); PROTECT(gpath = allocVector(REALSXP, nn)); SET_VECTOR_ELT(result, 7, gpath); PROTECT(upath = allocVector(REALSXP, nn)); SET_VECTOR_ELT(result, 8, upath); PROTECT(zpath = allocMatrix(REALSXP, dim_state, nn)); SET_VECTOR_ELT(result, 9, zpath); PROTECT(apath = allocVector(LGLSXP, nn)); SET_VECTOR_ELT(result, 10, apath); UNPROTECT(6); SET_STRING_ELT(resultnames, 5, mkChar("current")); SET_STRING_ELT(resultnames, 6, mkChar("proposal")); SET_STRING_ELT(resultnames, 7, mkChar("log.green")); SET_STRING_ELT(resultnames, 8, mkChar("u")); SET_STRING_ELT(resultnames, 9, mkChar("z")); SET_STRING_ELT(resultnames, 10, mkChar("debug.accept")); } namesgets(result, resultnames); UNPROTECT(1); GetRNGstate(); current_log_dens = logh(func1, state, rho1); if (current_log_dens == R_NegInf) error("log unnormalized density -Inf at initial state"); for (int ibatch = 0, k = 0; ibatch < int_nbatch; ibatch++) { double acceptances_this_batch = 0.0; double tries_this_batch = 0.0; for (int i = 0; i < dim_out; i++) batch_buffer[i] = 0.0; for (int jbatch = 0; jbatch < int_blen; jbatch++) { double proposal_log_dens; for (int ispac = 0; ispac < int_nspac; ispac++) { int accept; double u = -1.0; /* impossible return from unif_rand() */ double z[dim_state]; /* buffer for output of norm_rand() */ /* Note: should never happen! */ if (current_log_dens == R_NegInf) error("log density -Inf at current state"); propose(state, proposal, z); proposal_log_dens = logh(func1, proposal, rho1); accept = FALSE; if (proposal_log_dens != R_NegInf) { if (proposal_log_dens > current_log_dens) { accept = TRUE; } else { double green = exp(proposal_log_dens - current_log_dens); u = unif_rand(); accept = u < green; } } if (int_debug) { int l = ispac + int_nspac * (jbatch + int_blen * ibatch); int lbase = l * dim_state; SEXP spath = VECTOR_ELT(result, 5); SEXP ppath = VECTOR_ELT(result, 6); SEXP gpath = VECTOR_ELT(result, 7); SEXP upath = VECTOR_ELT(result, 8); SEXP zpath = VECTOR_ELT(result, 9); SEXP apath = VECTOR_ELT(result, 10); for (int lj = 0; lj < dim_state; lj++) { REAL(spath)[lbase + lj] = REAL(state)[lj]; REAL(ppath)[lbase + lj] = REAL(proposal)[lj]; REAL(zpath)[lbase + lj] = z[lj]; } REAL(gpath)[l] = proposal_log_dens - current_log_dens; if (u == -1.0) REAL(upath)[l] = NA_REAL; else REAL(upath)[l] = u; LOGICAL(apath)[l] = accept; } if (accept) { for (int jj = 0; jj < dim_state; jj++) REAL(state)[jj] = REAL(proposal)[jj]; current_log_dens = proposal_log_dens; acceptances++; acceptances_this_batch++; } tries++; tries_this_batch++; } /* end of inner loop (one iteration) */ outfun(state, out_buffer); for (int j = 0; j < dim_out; j++) batch_buffer[j] += REAL(out_buffer)[j]; } /* end of middle loop (one batch) */ for (int j = 0; j < dim_out; j++, k++) REAL(path)[k] = batch_buffer[j] / int_blen; REAL(acceptance_rate_batches)[ibatch] = acceptances_this_batch / tries_this_batch; } /* end of outer loop */ PutRNGstate(); REAL(acceptance_rate)[0] = acceptances / tries; PROTECT(save_final = coerceVector(state, REALSXP)); SET_VECTOR_ELT(result, 3, save_final); UNPROTECT(5); return result; } static double logh(SEXP func, SEXP state, SEXP rho) { SEXP call, result, foo; double bar; PROTECT(call = lang2(func, state)); PROTECT(result = eval(call, rho)); if (! isNumeric(result)) error("logh: result of function call must be numeric"); if (LENGTH(result) != 1) error("logh: result of function call must be scalar"); PROTECT(foo = coerceVector(result, REALSXP)); bar = REAL(foo)[0]; UNPROTECT(3); if (bar == R_PosInf) error("logh: func returned +Inf"); if (R_IsNaN(bar) || R_IsNA(bar)) error("logh: func returned NA or NaN"); /* Note: -Inf is allowed */ return bar; } static double *scale_factor; static double scale_factor_buffer; static int scale_option; static int state_dimension; #define CONSTANT 1 #define DIAGONAL 2 #define FULL 3 static void proposal_setup(SEXP scale, int d) { SEXP foo; state_dimension = d; PROTECT(foo = coerceVector(scale, REALSXP)); if (isMatrix(scale)) { SEXP bar; PROTECT(bar = getAttrib(scale, R_DimSymbol)); if (INTEGER(bar)[0] == d && INTEGER(bar)[1] == d) { scale_factor = (double *) R_alloc(d * d, sizeof(double)); for (int i = 0; i < d * d; i++) scale_factor[i] = REAL(foo)[i]; scale_option = FULL; } else { error("dimensions of \"scale\" matrix not d by d"); } UNPROTECT(1); } else if (LENGTH(foo) == d) { scale_factor = (double *) R_alloc(d, sizeof(double)); for (int i = 0; i < d; i++) scale_factor[i] = REAL(foo)[i]; scale_option = DIAGONAL; } else if (LENGTH(foo) == 1) { scale_factor = &scale_factor_buffer; scale_factor[0] = REAL(foo)[0]; scale_option = CONSTANT; } else { error("length of \"scale\" vector not d or 1"); } UNPROTECT(1); } static void propose(SEXP state, SEXP proposal, double *z) { int d = state_dimension; if (scale_option == 0) error("attempt to call propose without setup"); if (LENGTH(state) != d || LENGTH(proposal) != d) error("State or proposal length different from initialization\n"); for (int j = 0; j < d; j++) z[j] = norm_rand(); switch (scale_option) { case CONSTANT: for (int j = 0; j < d; j++) REAL(proposal)[j] = REAL(state)[j] + scale_factor[0] * z[j]; break; case DIAGONAL: for (int j = 0; j < d; j++) REAL(proposal)[j] = REAL(state)[j] + scale_factor[j] * z[j]; break; case FULL: for (int j = 0; j < d; j++) REAL(proposal)[j] = REAL(state)[j]; for (int i = 0, k = 0; i < d; i++) { double u = z[i]; for (int j = 0; j < d; j++) REAL(proposal)[j] += scale_factor[k++] * u; } break; default: error("bogus scaling option\n"); } } static SEXP out_func; static SEXP out_env; static int *out_index; static int out_option; static int out_dimension; static int out_state_dimension; #define OUT_FUNCTION 1 #define OUT_INDEX 2 #define OUT_IDENTITY 3 static int out_setup(SEXP func, SEXP rho, SEXP state) { out_state_dimension = LENGTH(state); if (func == R_NilValue) { out_option = OUT_IDENTITY; out_dimension = out_state_dimension; out_func = R_NilValue; out_env = R_NilValue; } else if (isFunction(func)) { if (! isEnvironment(rho)) error("out_setup: argument \"rho\" must be environment"); out_option = OUT_FUNCTION; out_func = func; out_env = rho; out_dimension = LENGTH(eval(lang2(func, state), rho)); } else if (isLogical(func)) { if (LENGTH(func) != out_state_dimension) error("is.logical(outfun) & (length(outfun) != length(initial))"); out_option = OUT_INDEX; out_index = (int *) R_alloc(out_state_dimension, sizeof(int)); out_dimension = 0; for (int i = 0; i < out_state_dimension; i++) { out_index[i] = LOGICAL(func)[i]; out_dimension += out_index[i]; } } else if (isNumeric(func)) { SEXP foo; int foopos = 0; int fooneg = 0; PROTECT(foo = coerceVector(func, REALSXP)); int foolen = LENGTH(foo); for (int i = 0; i < foolen; i++) { double foodble = REAL(foo)[i]; if (ISNAN(foodble)) error("NA or NaN index for outfun"); if (! R_FINITE(foodble)) error("-Inf or Inf index for outfun"); int fooint = foodble; int fooabs = fooint >= 0 ? fooint : (- fooint); if (fooint == 0) error("is.numeric(outfun) & any(outfun == 0)"); if (foodble != fooint) error("is.numeric(outfun) & any(outfun != as.integer(outfun))"); if (fooabs > out_state_dimension) error("is.numeric(outfun) & any(abs(outfun) > length(initial)"); if (foodble > 0) foopos++; else if (foodble < 0) fooneg++; } if ((foopos > 0) && (fooneg > 0)) error("is.numeric(outfun) & any(outfun > 0) & any(outfun < 0)"); out_option = OUT_INDEX; out_index = (int *) R_alloc(out_state_dimension, sizeof(int)); if (foopos > 0) { for (int i = 0; i < out_state_dimension; i++) out_index[i] = FALSE; for (int i = 0; i < foolen; i++) { int fooint = REAL(foo)[i]; out_index[fooint - 1] = TRUE; } } else /* (fooneg > 0) */ { for (int i = 0; i < out_state_dimension; i++) out_index[i] = TRUE; for (int i = 0; i < foolen; i++) { int fooint = REAL(foo)[i]; int fooabs = (- fooint); out_index[fooabs - 1] = FALSE; } } out_dimension = 0; for (int i = 0; i < out_state_dimension; i++) out_dimension += out_index[i]; UNPROTECT(1); } else { error("outfun must be NULL, a function, a numeric vector," " or a logical vector"); } return out_dimension; } static void outfun(SEXP state, SEXP buffer) { if (out_option == 0) error("attempt to call outfun without setup"); if (LENGTH(state) != out_state_dimension) error("outfun: state length different from initialization"); if (! isReal(buffer)) error("outfun: buffer must be real"); if (LENGTH(buffer) != out_dimension) error("outfun: buffer length different from initialization"); switch (out_option) { case OUT_IDENTITY: for (int j = 0; j < out_state_dimension; j++) REAL(buffer)[j] = REAL(state)[j]; break; case OUT_INDEX: for (int j = 0, k = 0; j < out_state_dimension; j++) if (out_index[j]) REAL(buffer)[k++] = REAL(state)[j]; break; case OUT_FUNCTION: { SEXP call, result, foo; PROTECT(call = lang2(out_func, state)); PROTECT(result = eval(call, out_env)); if (! isNumeric(result)) error("outfun: result of function call must be numeric"); PROTECT(foo = coerceVector(result, REALSXP)); if (! isAllFinite(foo)) error("outfun returned vector with non-finite element"); if (LENGTH(foo) != out_dimension) error("outfun return vector length changed from initial"); for (int k = 0; k < out_dimension; k++) REAL(buffer)[k] = REAL(foo)[k]; UNPROTECT(3); } break; default: error("bogus out option\n"); } } mcmc/src/initseq.c0000644000175100001440000000716213074514645013635 0ustar hornikusers #include #include #include "myutil.h" #include "mcmc.h" SEXP initseq(SEXP x) { SEXP xreal; if (! isNumeric(x)) error("argument must be numeric"); PROTECT(xreal = coerceVector(x, REALSXP)); if (! isAllFinite(x)) error("all elements of argument must be finite"); int len = LENGTH(xreal); double *buff = (double *) R_alloc(len / 2, sizeof(double)); int i; double gamma_zero = 0.0; /* for gcc -Wall -Wextra */ for (i = 0; i < len / 2; ++i) { int lag1 = 2 * i; double gam1 = 0.0; for (int j = 0; j + lag1 < len; ++j) gam1 += REAL(xreal)[j] * REAL(xreal)[j + lag1]; gam1 /= len; if (i == 0) gamma_zero = gam1; int lag2 = lag1 + 1; double gam2 = 0.0; for (int j = 0; j + lag2 < len; ++j) gam2 += REAL(xreal)[j] * REAL(xreal)[j + lag2]; gam2 /= len; buff[i] = gam1 + gam2; if (buff[i] < 0.0) { buff[i] = 0.0; ++i; break; } } SEXP gamma_pos, gamma_dec, gamma_con; PROTECT(gamma_pos = allocVector(REALSXP, i)); for (int j = 0; j < i; ++j) REAL(gamma_pos)[j] = buff[j]; for (int j = 1; j < i; ++j) if (buff[j] > buff[j - 1]) buff[j] = buff[j - 1]; PROTECT(gamma_dec = allocVector(REALSXP, i)); for (int j = 0; j < i; ++j) REAL(gamma_dec)[j] = buff[j]; for (int j = i - 1; j > 0; --j) buff[j] -= buff[j - 1]; /* Pool Adjacent Violators Algorithm (PAVA) */ double *puff = (double *) R_alloc(i, sizeof(double)); int *nuff = (int *) R_alloc(i, sizeof(int)); int nstep = 0; for (int j = 1; j < i; ++j) { puff[nstep] = buff[j]; nuff[nstep] = 1; ++nstep; while(nstep > 1 && puff[nstep - 1] / nuff[nstep - 1] < puff[nstep - 2] / nuff[nstep - 2]) { puff[nstep - 2] += puff[nstep - 1]; nuff[nstep - 2] += nuff[nstep - 1]; --nstep; } } for (int jstep = 0, j = 1; jstep < nstep; ++jstep) { double muff = puff[jstep] / nuff[jstep]; for (int k = 0; k < nuff[jstep]; ++j, ++k) buff[j] = buff[j - 1] + muff; } PROTECT(gamma_con = allocVector(REALSXP, i)); for (int j = 0; j < i; ++j) REAL(gamma_con)[j] = buff[j]; double var_pos = 0.0; double var_dec = 0.0; double var_con = 0.0; for (int j = 0; j < i; ++j) { var_pos += REAL(gamma_pos)[j]; var_dec += REAL(gamma_dec)[j]; var_con += REAL(gamma_con)[j]; } var_pos *= 2.0; var_dec *= 2.0; var_con *= 2.0; var_pos -= gamma_zero; var_dec -= gamma_zero; var_con -= gamma_zero; SEXP result, resultnames; PROTECT(result = allocVector(VECSXP, 7)); PROTECT(resultnames = allocVector(STRSXP, 7)); SET_VECTOR_ELT(result, 0, ScalarReal(gamma_zero)); SET_STRING_ELT(resultnames, 0, mkChar("gamma0")); SET_VECTOR_ELT(result, 1, gamma_pos); SET_STRING_ELT(resultnames, 1, mkChar("Gamma.pos")); SET_VECTOR_ELT(result, 2, gamma_dec); SET_STRING_ELT(resultnames, 2, mkChar("Gamma.dec")); SET_VECTOR_ELT(result, 3, gamma_con); SET_STRING_ELT(resultnames, 3, mkChar("Gamma.con")); SET_VECTOR_ELT(result, 4, ScalarReal(var_pos)); SET_STRING_ELT(resultnames, 4, mkChar("var.pos")); SET_VECTOR_ELT(result, 5, ScalarReal(var_dec)); SET_STRING_ELT(resultnames, 5, mkChar("var.dec")); SET_VECTOR_ELT(result, 6, ScalarReal(var_con)); SET_STRING_ELT(resultnames, 6, mkChar("var.con")); namesgets(result, resultnames); UNPROTECT(6); return result; } mcmc/src/getScalarLogical.c0000644000175100001440000000046613074514645015361 0ustar hornikusers #include #include #include "myutil.h" int getScalarLogical(SEXP foo, char *argname) { if (! isLogical(foo)) error("argument \"%s\" must be logical", argname); if (LENGTH(foo) != 1) error("argument \"%s\" must be scalar", argname); return LOGICAL(foo)[0]; } mcmc/src/init.c0000644000175100001440000000127313074514645013121 0ustar hornikusers #include #include #include #include "mcmc.h" static R_NativePrimitiveArgType olbm_types[7] = {REALSXP, INTSXP, INTSXP, INTSXP, REALSXP, REALSXP, LGLSXP}; static R_CMethodDef cMethods[] = { {"olbm", (DL_FUNC) &olbm, 7, olbm_types}, {NULL, NULL, 0, NULL} }; static R_CallMethodDef callMethods[] = { {"metrop", (DL_FUNC) &metrop, 10}, {"temper", (DL_FUNC) &temper, 12}, {"initseq", (DL_FUNC) &initseq, 1}, {NULL, NULL, 0} }; void attribute_visible R_init_mcmc(DllInfo *info) { R_registerRoutines(info, cMethods, callMethods, NULL, NULL); R_useDynamicSymbols(info, FALSE); R_forceSymbols(info, TRUE); } mcmc/src/getListElement.c0000644000175100001440000000066613074514645015110 0ustar hornikusers #include #include #include "myutil.h" SEXP getListElement(SEXP list, char *str) { SEXP elmt = R_NilValue; SEXP names = getAttrib(list, R_NamesSymbol); int i; if (names == R_NilValue) return R_NilValue; for (i = 0; i < length(list); i++) if(strcmp(CHAR(STRING_ELT(names, i)), str) == 0) { elmt = VECTOR_ELT(list, i); break; } return elmt; } mcmc/src/myutil.h0000644000175100001440000000042713074514645013506 0ustar hornikusers #ifndef MCMC_MYUTIL_H #define MCMC_MYUTIL_H #include #include SEXP getListElement(SEXP list, char *str); int getScalarInteger(SEXP foo, char *argname); int getScalarLogical(SEXP foo, char *argname); int isAllFinite(SEXP foo); #endif /* MCMC_MYUTIL_H */ mcmc/NAMESPACE0000644000175100001440000000066113062534650012435 0ustar hornikusers useDynLib(mcmc, .registration = TRUE, .fixes = "C_") export(metrop) export(morph) export(olbm) export(initseq) export(temper) export(morph.metrop) export(morph) export(morph.identity) S3method(metrop, metropolis) S3method(metrop, "function") S3method(morph.metrop, morph.metropolis) S3method(morph.metrop, "function") S3method(temper, tempering) S3method(temper, "function") importFrom(stats, runif) importFrom(compiler, cmpfun) mcmc/data/0000755000175100001440000000000013074514645012131 5ustar hornikusersmcmc/data/foo.txt.gz0000644000175100001440000000542113074514645014076 0ustar hornikusers=[r 9 E{8 vֳ9•NI_?gݧVg/Yߛ79uNwZk]Y?tz徶+mV>Ӟ[٬Otin;o%~X{B^!ڝNoIbNNjnHIpR2lÐy " $Ь ЙIZwD]P gllf$^}aap,v`s [xx16<3sH3^&'QoQ$~9A[Mn)PJX E&9h/;Ժp.a Hb!J~6턮|R\L"ˢ{~@ sFIDJQ neϴ'mɳM@!ΙSL%ˌGW;lR}T?Y%KJrSD HTLN\OƁ4.f?; l(Qa,yUWHNggwC?ėd̉$BJ(mqtI.WB^֎ѐL Ѥ)ɃH5)VOC!E =Ks HފdS.cj0Rp&-lt4 j]=\cLyi2fbP(JgS%D9${=}87em Q $A ?x{I5j)P 4ug}]/!J$ۣoR3o}P5NN^x8,\Bj([ M&=bLy_D,yˍ`E-`n,.hc~&kBW*U5j& TcM܄}d$gL@Ɂ5_נ%4MS e!%]'9KD)"0KytHx>|_CxM!Nu4Q!Y9}y¨~d8 A-Z[u 7w# lp,bO,Dvh{_z_ B<˾(A 3Rc "!ҌK D>726p$I#zW\=QoQxjuqS\_C$ NAs~-VIEϔگI!ԧlU'(| IsƢ13Ͻl(C+V %Eїo,BC95]pNF\ǹRz>1mcmc/data/logit.txt.gz0000644000175100001440000000210613074514645014426 0ustar hornikusersUV]$7{S27>F7A~}~w_eq'-K?y*TY"=L 5/LYT{XCw{ \f)8\&};5g1{ƞ,r{xS>x fqim9>&^"3f)`T%"fE'[թ-9yAgGr u9+Fᰞ2Er~Jn5ypju\rJ/7eqexRi kB>vk7CYvhWڵM퓦/ #W0}tr}IĤ aGЩLjT}),C.:aߵU@PK9݋ ~^(`̿)Q DIJ9G7t>hK8Es[t7rDܣ܄EaetYm+OʫQYAsEMLObzlp|7^W)29^%`HW$Wߡ;9u_g: mcmc/R/0000755000175100001440000000000013074143477011422 5ustar hornikusersmcmc/R/olbm.R0000644000175100001440000000113113062534551012464 0ustar hornikusers olbm <- function(x, batch.length, demean = TRUE) { x <- as.matrix(x) n <- nrow(x) p <- ncol(x) storage.mode(x) <- "double" if (batch.length > n) stop("batch.length must be <= nrow(x)") if (demean) { mean <- apply(x, 2, mean) no.calc.mean <- TRUE } else { mean <- double(p) no.calc.mean <- FALSE } out <- .C(C_olbm, x=x, n=as.integer(n), p=as.integer(p), batch.length=as.integer(batch.length), mean=as.double(mean), var=matrix(as.double(0), p, p), no.calc.mean=as.logical(no.calc.mean)) return(out$var) } mcmc/R/morph.R0000644000175100001440000001211213045741600012655 0ustar hornikuserseuclid.norm <- function(x) { sqrt(sum(x * x)) } isotropic <- function(f) { force(f) function(x) { x.norm <- euclid.norm(x) if (x.norm == 0) rep(0, length(x)) else f(x.norm) * x / x.norm } } isotropic.logjacobian <- function(f, d.f) { force(f) force(d.f) function(x) { x.norm <- euclid.norm(x) k <- length(x) if (x.norm == 0) { k * log(d.f(x.norm)) } else { log(d.f(x.norm)) + (k - 1) * (log(f(x.norm)) - log(x.norm)) } } } # rearranged by charlie # add starting point so we can use a better starting point for # the current actual use # also do one more Newton step after error is < sqrt(machine.eps) # so ultimate error is about machine.eps newton.raphson <- function(f, df, x, r, x0 = 2 * r) { f.err <- function(cur) f(cur) - x step <- function(cur, err=NULL) cur - ifelse(is.null(err), f.err(cur), err) / df(cur) err <- f.err(x0) while(err >= sqrt(.Machine$double.eps)) { x0 <- step(x0, err) err <- f.err(x0) } # if you don't want to use an extra-step, replace this return with # return(x0) return(step(x0, err)) } subexponential <- function(b=1) { if (missing(b) | is.null(b)) b <- 1 stopifnot(b > 0) force(b) f.inv <- function(x) ifelse(x > 1/b, exp(b * x) - exp(1)/3, (x * b)^3 * exp(1) / 6 + x * b * exp(1) / 2) d.f.inv <- function(x) ifelse(x > 1/b, b * exp(b * x), b * (x * b)^2 * exp(1) / 2 + b * exp(1) / 2) f <- function(x) { # x > exp(b * 1 / b) - exp(1) / 3 if (x > 2 * exp(1) / 3) { log(x + exp(1)/3) / b } else { poly.inv <- exp(1/3) * (sqrt(b^12 * (9 * x^2 + exp(2))) - 3 * b^6 * x)^(-1/3) poly.inv * b - 1 / (poly.inv * b^3) } } return(list(f=f, f.inv=f.inv, d.f.inv=d.f.inv)) } exponential <- function(r=1, p=3) { if (missing(p) || is.null(p)) p <- 3 if (missing(r) || is.null(r)) r <- 0 stopifnot(p > 2) stopifnot(r >= 0) f.inv <- function(x) ifelse(x <= r, x, x + (x-r)^p) d.f.inv <- function(x) ifelse(x <= r, 1, 1 + p * (x-r)^(p-1)) if (p == 3) { g <- function(x) { n <- sqrt((27*r-27*x)^2 + 108) + 27 * (r - x) r + (2/n)^(1/3) - (n/2)^(1/3)/3 } f <- function(x) ifelse(x < r, x, g(x)) } else { # No general closed form solution exists. However, since the # transformation has polynomial form, using the Newton-Raphson method # should work well. f <- function(x) ifelse(x < r, x, newton.raphson(f.inv, d.f.inv, x, r, x0 = r + x^(1 / p))) } return(list(f=f, f.inv=f.inv, d.f.inv=d.f.inv)) } .make.outfun <- function(out) { force(out) function(f) { force(f) if (is.null(f)) return(out$inverse) else if (is.function(f)) return(function(state, ...) f(out$inverse(state), ...)) else return(function(state) out$inverse(state)[f]) } } identity.func <- function(x) x morph.identity <- function() { out <- list(transform=identity.func, inverse=identity.func, lud=function(f) function(x, ...) f(x, ...), log.jacobian=function(x) 0, center=0, f=identity.func, f.inv=identity.func) out$outfun <- .make.outfun(out) return(out) } morph <- function(b, r, p, center) { if (all(missing(b), missing(r), missing(p), missing(center))) return(morph.identity()) if (missing(center)) center <- 0 use.subexpo <- !missing(b) use.expo <- !(missing(r) && missing(p)) if (!use.expo && !use.subexpo) { f <- function(x) x f.inv <- function(x) x log.jacobian <- function(x) 0 } else { if (use.expo && !use.subexpo) { expo <- exponential(r, p) f <- expo$f f.inv <- expo$f.inv d.f.inv <- expo$d.f.inv } else if (!use.expo && use.subexpo) { subexpo <- subexponential(b) f <- subexpo$f f.inv <- subexpo$f.inv d.f.inv <- subexpo$d.f.inv } else { #use.expo && use.subexpo expo <- exponential(r, p) subexpo <- subexponential(b) f <- function(x) expo$f(subexpo$f(x)) f.inv <- function(x) subexpo$f.inv(expo$f.inv(x)) d.f.inv <- function(x) expo$d.f.inv(x) * subexpo$d.f.inv(expo$f.inv(x)) } f <- isotropic(f) f.inv <- isotropic(f.inv) log.jacobian <- isotropic.logjacobian(f.inv, d.f.inv) } out <- list(f=f, f.inv=f.inv, log.jacobian=log.jacobian, center=center) out$transform <- function(state) out$f(state - out$center) out$inverse <- function(state) out$f.inv(state) + out$center out$outfun <- .make.outfun(out) out$lud <- function(lud) { force(lud) function(state, ...) { foo <- lud(out$inverse(state), ...) if (length(foo) != 1) stop("log unnormalized density function returned vector not scalar") if (is.na(foo)) stop("log unnormalized density function returned NA or NaN") if (foo == -Inf) return(foo) if (! is.finite(foo)) stop("log unnormalized density function returned +Inf") foo + out$log.jacobian(state) } } return(out) } mcmc/R/temper.R0000644000175100001440000000557713074142671013052 0ustar hornikusers temper <- function(obj, initial, neighbors, nbatch, blen = 1, nspac = 1, scale = 1, outfun, debug = FALSE, parallel = FALSE, ...) UseMethod("temper") temper.tempering <- function(obj, initial, neighbors, nbatch, blen = 1, nspac = 1, scale = 1, outfun, debug = FALSE, parallel = FALSE, ...) { # like metrop, ignore initial argument initial <- obj$final # makes no (at least little?) sense to change neighbor structure neighbors <- obj$neighbors if (missing(nbatch)) nbatch <- obj$nbatch if (missing(blen)) blen <- obj$blen if (missing(nspac)) nspac <- obj$nspac if (missing(scale)) scale <- obj$scale if (missing(debug)) debug <- obj$debug # makes no sense to change from parallel to serial or vice versa # size and shape of state wouldn't even be the same parallel <- obj$parallel assign(".Random.seed", obj$final.seed, .GlobalEnv) if (missing(outfun)) { if (is.null(obj$outfun)) { temper.function(obj$lud, initial, neighbors, nbatch, blen, nspac, scale, debug = debug, parallel = parallel, ...) } else { temper.function(obj$lud, initial, neighbors, nbatch, blen, nspac, scale, obj$outfun, debug = debug, parallel = parallel, ...) } } else { temper.function(obj$lud, initial, neighbors, nbatch, blen, nspac, scale, outfun, debug = debug, parallel = parallel, ...) } } temper.function <- function(obj, initial, neighbors, nbatch, blen = 1, nspac = 1, scale = 1, outfun, debug = FALSE, parallel = FALSE, ...) { if (! exists(".Random.seed")) runif(1) saveseed <- .Random.seed obj <- cmpfun(obj) func1 <- function(state) obj(state, ...) func1 <- cmpfun(func1) env1 <- environment(fun = func1) if (missing(outfun)) { func2 <- NULL env2 <- NULL outfun <- NULL } else if (is.function(outfun)) { outfun <- cmpfun(outfun) func2 <- function(state) outfun(state, ...) func2 <- cmpfun(func2) env2 <- environment(fun = func2) } stopifnot(is.numeric(initial)) storage.mode(initial) <- "double" if (is.list(scale)) { for (i in 1:length(scale)) { stopifnot(is.numeric(scale[[i]])) storage.mode(scale[[i]]) <- "double" } } else { stopifnot(is.numeric(scale)) storage.mode(scale) <- "double" } out.time <- system.time( out <- .Call(C_temper, func1, initial, neighbors, nbatch, blen, nspac, scale, func2, debug, parallel, env1, env2) ) result <- structure(c(list(lud = obj, neighbors = neighbors, nbatch = nbatch, blen = blen, nspac = nspac, scale = scale, outfun = outfun, debug = debug, parallel = parallel, initial.seed = saveseed, final.seed = .Random.seed, time = out.time), out), class = c("mcmc", "tempering")) return(result) } mcmc/R/metrop.R0000644000175100001440000000435513062616565013062 0ustar hornikusers metrop <- function(obj, initial, nbatch, blen = 1, nspac = 1, scale = 1, outfun, debug = FALSE, ...) UseMethod("metrop") metrop.metropolis <- function(obj, initial, nbatch, blen = 1, nspac = 1, scale = 1, outfun, debug = FALSE, ...) { if (missing(nbatch)) nbatch <- obj$nbatch if (missing(blen)) blen <- obj$blen if (missing(nspac)) nspac <- obj$nspac if (missing(scale)) scale <- obj$scale if (missing(debug)) debug <- obj$debug assign(".Random.seed", obj$final.seed, .GlobalEnv) if (missing(outfun)) { if (is.null(obj$outfun)) { metrop.function(obj$lud, obj$final, nbatch, blen, nspac, scale, debug = debug, ...) } else { metrop.function(obj$lud, obj$final, nbatch, blen, nspac, scale, obj$outfun, debug, ...) } } else { metrop.function(obj$lud, obj$final, nbatch, blen, nspac, scale, outfun, debug, ...) } } metrop.function <- function(obj, initial, nbatch, blen = 1, nspac = 1, scale = 1, outfun, debug = FALSE, ...) { if (! exists(".Random.seed")) runif(1) saveseed <- .Random.seed obj <- cmpfun(obj) func1 <- function(state) obj(state, ...) func1 <- cmpfun(func1) env1 <- environment(fun = func1) if (missing(outfun)) { func2 <- NULL env2 <- NULL outfun <- NULL } else if (is.function(outfun)) { outfun <- cmpfun(outfun) func2 <- function(state) outfun(state, ...) func2 <- cmpfun(func2) env2 <- environment(fun = func2) } else { func2 <- outfun env2 <- NULL } out.time <- system.time( out <- .Call(C_metrop, func1, initial, nbatch, blen, nspac, scale, func2, debug, env1, env2) ) out$initial.seed <- saveseed out$final.seed <- .Random.seed out$time <- out.time out$lud <- obj out$nbatch <- nbatch out$blen <- blen out$nspac <- nspac out$scale <- scale out$outfun <- outfun out$batch <- t(out$batch) out$debug <- debug if (! is.null(out$current)) out$current <- t(out$current) if (! is.null(out$proposal)) out$proposal <- t(out$proposal) if (! is.null(out$z)) out$z <- t(out$z) class(out) <- c("mcmc", "metropolis") return(out) } mcmc/R/morph.metrop.R0000644000175100001440000000421113045741600014163 0ustar hornikusersmorph.metrop <- function(obj, initial, nbatch, blen = 1, nspac = 1, scale = 1, outfun, debug = FALSE, morph, ...) UseMethod("morph.metrop") morph.metrop.morph.metropolis <- function(obj, initial, nbatch, blen = 1, nspac = 1, scale = 1, outfun, debug = FALSE, morph, ...) { if (missing(morph)) { morph <- obj$morph obj$final <- obj$morph.final } else { # if the transformation was changed, transform the last state from the # original space to be the initial state. obj$final <- morph$transform(obj$final) } if (missing(outfun)) outfun <- obj$outfun if (missing(blen)) blen <- obj$blen if (missing(nspac)) nspac <- obj$nspac if (missing(debug)) debug <- obj$debug if (missing(scale)) scale <- obj$scale morphed.obj <- metrop.metropolis(obj, nbatch=nbatch, blen=blen, nspac=nspac, scale=scale, outfun=morph$outfun(outfun), debug=debug, ...) unmorphed.obj <- .morph.unmorph(morphed.obj, morph, outfun) return(unmorphed.obj) } morph.metrop.function <- function(obj, initial, nbatch, blen = 1, nspac = 1, scale = 1, outfun, debug = FALSE, morph, ...) { if (missing(morph)) morph <- morph.identity() if (missing(outfun)) outfun <- NULL morphed.obj <- metrop.function(morph$lud(obj), initial=morph$transform(initial), nbatch=nbatch, blen=blen, scale=scale, outfun=morph$outfun(outfun), debug=debug, ...) unmorphed.obj <- .morph.unmorph(morphed.obj, morph, outfun) return(unmorphed.obj) } .morph.unmorph <- function(obj, morph, outfun) { obj$morph <- morph obj$morph.final <- obj$final obj$final <- morph$inverse(obj$final) obj$outfun <- outfun class(obj) <- c("mcmc", "morph.metropolis") return(obj) } mcmc/R/initseq.R0000644000175100001440000000016613062534425013216 0ustar hornikusersinitseq <- function(x) { stopifnot(is.numeric(x)) stopifnot(is.finite(x)) .Call(C_initseq, x - mean(x)) } mcmc/vignettes/0000755000175100001440000000000013074514644013227 5ustar hornikusersmcmc/vignettes/debug.Rnw0000644000175100001440000003135013045741600014777 0ustar hornikusers \documentclass{article} \usepackage{amstext} % \VignetteIndexEntry{Debugging MCMC Code} \begin{document} <>= options(keep.source = TRUE, width = 60) foo <- packageDescription("mcmc") @ \title{Debugging MCMC Code} \author{Charles J. Geyer} \maketitle \section{Introduction} This document discusses debugging Markov chain Monte Carlo code using the R contributed package \texttt{mcmc} (Version \Sexpr{foo$Version}) for examples. It also documents the debugging output of the functions \texttt{mcmc} and \texttt{temper}. Debugging MCMC code if the code is taken as a black box is basically impossible. In interesting examples, the only thing one knows about the equilibrium distribution of an MCMC sampler is what one learns from the samples. This obviously doesn't help with testing. If the sampler is buggy, then the only thing you know about the equilibrium distribution is wrong, but if you don't know it is buggy, then you don't know it is wrong. So you don't know anything. There is no way to tell whether random output has the correct distribution when you don't know anything about the distribution it is supposed to have. The secret to debugging MCMC code lies in two principles: \begin{itemize} \item take the randomness out, and \item expose the innards. \end{itemize} The first slogan means consider the algorithm a deterministic function of the elementary pseudo-random numbers that are trusted (for example, the outputs of the R random number generators, which you aren't responsible for debugging and are also well tested). The second slogan means output, at least for debugging purposes, enough intermediate state so that testing is straightforward. For a Gibbs sampler, this means outputting all of the trusted elementary pseudo-random numbers used, the state before and after each elementary Gibbs update, and which update is being done if a random scan is used. Also one needs to output the initial seeds of the pseudo-random number generator (this is true for all situations and will not be mentioned again). For a Metropolis-Hastings sampler, this means outputting all of the trusted elementary pseudo-random numbers used, the state before and after each elementary Metropolis-Hastings update, the proposal for that update, the Hastings ratio for that update, decision (accept or reject) in that update. For more complicated MCMC samplers, there is more ``innards'' to ``expose'' (see the discussion of the \texttt{temper} function below), but you get the idea. You can't output too much debugging information. \section{The Metrop Function} The R function \texttt{metrop} in the \texttt{mcmc} package has an argument \verb@debug = FALSE@ that when \verb@TRUE@ causes extra debugging information to be output. Let \texttt{niter} be the number of iterations \verb@nbatch * blen * nspac@, and let \texttt{d} be the dimension of the state vector. The result of invoking \texttt{metrop} is a list. When \verb@debug = TRUE@ it has the following additional components \begin{itemize} \item \texttt{current}, an \texttt{niter} by \texttt{d} matrix of mode \verb@"numeric"@, the state before iteration \texttt{i} is \verb@current[i, ]@ \item \texttt{proposal}, an \texttt{niter} by \texttt{d} matrix of mode \verb@"numeric"@, the proposal for iteration \texttt{i} is \verb@proposal[i, ]@ \item \texttt{z}, an \texttt{niter} by \texttt{d} matrix of mode \verb@"numeric"@, the vector of standard normal random variates used to generate the proposal for iteration \texttt{i} is \verb@z[i, ]@ \item \texttt{log.green}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the logarithm of the Hastings ratio for each iteration \item \texttt{u}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the $\text{Uniform}(0, 1)$ random variate compared to the Hastings ratio for each iteration or \texttt{NA} if none is needed (when the log Hastings ratio is nonnegative) \item \texttt{debug.accept}, a vector of length \texttt{niter} and mode \verb@"logical"@, the decision for each iteration, accept the proposal (\texttt{TRUE}) or reject it (\texttt{FALSE}) \end{itemize} (The components \texttt{z} and \texttt{debug.accept} were added in version 0.7-3 of the \texttt{mcmc} package. Before that only the others were output.) Two components of the list returned by the \texttt{metrop} function always (whether \verb@debug = TRUE@ or \verb@debug = FALSE@) are also necessary for debugging. They are \begin{itemize} \item \texttt{initial.seed} the value of the variable \texttt{.Random.seed} that contains the seeds of the R random number generator system before invocation of the \texttt{metrop} function \item \texttt{final}, a vector of length \texttt{d} and mode \verb@"numeric"@, the state after the last iteration \end{itemize} All of the files in the \texttt{tests} directory of the source for the package (not installed but found in the source tarball on CRAN) test the \texttt{metrop} function except those beginning \texttt{temp}, which test the \texttt{temper} function. Since these tests were written many years ago, are spread out over many files, and are not commented, we will not describe them in detail. Suffice it to say that they check every aspect of the functioning of the \texttt{metrop} function. \section{The Temper Function} The R function \texttt{temper} in the \texttt{mcmc} package has an argument \verb@debug = FALSE@ that when \verb@TRUE@ causes extra debugging information to be output. Let \texttt{niter} be the number of iterations \verb@nbatch * blen * nspac@, let \texttt{d} be the dimension of the state vector, and let \texttt{ncomp} be the number of components of the tempering mixture. The result of invoking \texttt{temper} is a list. When \verb@debug = TRUE@ and \verb@parallel = TRUE@ it has the following additional components % which % unif.which % state % log.hastings % unif.hastings % proposal % acceptd % norm % unif.choose % coproposal \begin{itemize} \item \texttt{which}, a vector of length \texttt{niter} and mode \verb@"logical"@ the type of update for each iteration, within component (\texttt{TRUE}) or swap components (\texttt{FALSE}). \item \texttt{unif.which}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the $\text{Uniform}(0, 1)$ random variate used to decide which type of update is done. \item \texttt{state}, an \texttt{niter} by \texttt{ncomp} by \texttt{d} array of mode \verb@"numeric"@, the state before iteration \texttt{i} is \verb@state[i, , ]@ \item \texttt{proposal}, an \texttt{niter} by \verb@d + 1@ matrix of mode \verb@"numeric"@, the proposal for iteration \texttt{i} is \verb@proposal[i, ]@ (explanation below) \item \texttt{coproposal}, an \texttt{niter} by \verb@d + 1@ matrix of mode \verb@"numeric"@, the proposal for iteration \texttt{i} is \verb@coproposal[i, ]@ (explanation below) \item \texttt{log.hastings}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the logarithm of the Hastings ratio for each iteration \item \texttt{unif.hastings}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the $\text{Uniform}(0, 1)$ random variate compared to the Hastings ratio for each iteration or \texttt{NA} if none is needed (when the log Hastings ratio is nonnegative) \item \texttt{acceptd}, a vector of length \texttt{niter} and mode \verb@"logical"@, the decision for each iteration, accept the proposal (\texttt{TRUE}) or reject it (\texttt{FALSE}) \item \texttt{norm}, an \texttt{niter} by \texttt{d} matrix of mode \verb@"numeric"@, the vector of standard normal random variates used to generate the proposal for iteration \texttt{i} is \verb@z[i, ]@ unless none are needed (for swap updates) when it is \texttt{NA} \item \texttt{unif.choose}, an \texttt{niter} by 2 matrix of mode \verb@"numeric"@, the vector of $\text{Uniform}(0, 1)$ random variates used to choose the components to update in iteration \texttt{i} is \verb@unif.choose[i, ]@; in a swap update two are used; in a within-component update only one is used and the second is \texttt{NA} \end{itemize} In a within-component update, one component say \texttt{j} is chosen for update. The \emph{coproposal} is the current value of the state for this component, which is a vector of length \verb@d + 1@, the first component of which is \texttt{j} and the rest of which is \verb@state[i, j, ]@ if we are in iteration \texttt{i}. The \emph{proposal} is a similar vector, the first component of which is again \texttt{j} and the rest of which is a multivariate normal random vector centered at \verb@state[i, j, ]@. The coproposal is the current state; the proposal is the possible value (if accepted) of the state at the next time. In a swap update, two components say \texttt{j1} and \texttt{j2} are chosen for update. Strictly, speaking the coproposal is the pair of vectors \verb@c(j1, state[i, j1, ])@ and \verb@c(j2, state[i, j2, ])@ and the proposal is these swapped, that is, the pair of vectors \verb@c(j2, state[i, j1, ])@ and \verb@c(j1, state[i, j2, ])@ if we are in iteration \texttt{i}. Since, however, there is a lot of redundant information here, the vector \verb@c(j1, state[i, j1, ])@ is output as \verb@coproposal[i, ]@ and the vector \verb@c(j2, state[i, j2, ])@ is output as \verb@proposal[i, ]@. When \verb@debug = TRUE@ and \verb@parallel = FALSE@ the result of invoking \texttt{temper} is a list having the following additional components % which % unif.which % state % log.hastings % unif.hastings % proposal % acceptd % norm % unif.choose \begin{itemize} \item \texttt{which}, a vector of length \texttt{niter} and mode \verb@"logical"@ the type of update for each iteration, within component (\texttt{TRUE}) or jump from one component to another (\texttt{FALSE}). \item \texttt{unif.which}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the $\text{Uniform}(0, 1)$ random variate used to decide which type of update is done. \item \texttt{state}, an \texttt{niter} by \verb@d + 1@ matrix of mode \verb@"numeric"@, the state before iteration \texttt{i} is \verb@state[i, ]@ \item \texttt{proposal}, an \texttt{niter} by \verb@d + 1@ matrix of mode \verb@"numeric"@, the proposal for iteration \texttt{i} is \verb@proposal[i, ]@ \item \texttt{log.hastings}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the logarithm of the Hastings ratio for each iteration \item \texttt{unif.hastings}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the $\text{Uniform}(0, 1)$ random variate compared to the Hastings ratio for each iteration or \texttt{NA} if none is needed (when the log Hastings ratio is nonnegative) \item \texttt{acceptd}, a vector of length \texttt{niter} and mode \verb@"logical"@, the decision for each iteration, accept the proposal (\texttt{TRUE}) or reject it (\texttt{FALSE}) \item \texttt{norm}, an \texttt{niter} by \texttt{d} matrix of mode \verb@"numeric"@, the vector of standard normal random variates used to generate the proposal for iteration \texttt{i} is \verb@z[i, ]@ unless none are needed (for jump updates) when it is \texttt{NA} \item \texttt{unif.choose}, a vector of length \texttt{niter} and mode \verb@"numeric"@, the $\text{Uniform}(0, 1)$ random variates used to choose the component to update in iteration \texttt{i} is \verb@unif.choose[i, ]@; in a jump update one is used; in a within-component update none is used and \texttt{NA} is output \end{itemize} All of the files in the \texttt{tests} directory of the source for the package (not installed but found in the source tarball on CRAN) beginning \texttt{temp} test the \texttt{temper} function. They check every aspect of the functioning of the \texttt{temper} function. In the file \texttt{temp-par.R} in the \texttt{tests} directory, the following checks are made according to the comments in that file \begin{enumerate} \item check decision about within-component or jump/swap \item check proposal and coproposal are actually current state or part thereof \item check hastings ratio calculated correctly \item check hastings rejection decided correctly \item check acceptance carried out or not (according to decision) correctly \item check within-component proposal \item check swap proposal \item check standard normal and uniform random numbers are as purported \item check batch means \item check acceptance rates \item check scale vector \item check scale matrix \item check scale list \item check outfun \end{enumerate} In the file \texttt{temp-ser.R} in the \texttt{tests} directory, the all of the same checks are made according to the comments in that file except for check number 2 above, which would make no sense because there is no \texttt{coproposal} component in the serial (\verb@parallel = FALSE@) case. \end{document} mcmc/vignettes/morph2.rda0000644000175100001440000004260413045741600015124 0ustar hornikusers} \Mmߵk!EZ0B*)Em-m}W$HbHDTPBd)տˍU}{?ow9g,̙jRQ#b1=d_R?DRtH-@0OGO?K0EGڵwyI^n B;'o\8;y/lw;k{_C7v !i SOoL TlE-=:<Ȋyssu|pqٵ @lMHhTo<~t.;]PZ =tId7H)w@T4L<<`^^)_K[GBZSJW] ffG:n 5!ĠW +K;+@&IsEE)8 |.Xsؿ JI\a: =zFІeu0NNRa9>Chj45-WaAټ}'a ^7(?lMrA3u*d[ 5O> 8hF PDJ bf"8'I zsyNDX1_٠ќaAN 5k0@ޛ;8,I|=L S~_>@q3[#qi& I2vCTI?W$,Sdzl 9끞'E[rLHo-g@H-yl%P+ᤷfUPB zVNAk@[ÏaK腄)`u$j%&DUE|w.WҀ Ԋa (/rKDKd,]x7jkR=@D=ur>L9o] }gLʚG}pkpNR/P6^Uq>IaSTA/kmI\G|_/;wѺXg! dnUƂW  6.RU%;Jݵej7k܇G/M:Sw0|,0ԴҿT\Pu>G5˶&߃KrپI]k9Ϛ[Øa2nlr ~uE|/:) 6QcH4-봡ˣ3Wݵ4іgTjzƣ0=ly|f=z{5U mc;XSt67+Sa߶TPx8HT'@C1z/CSTj)Es RiéxԦ(SK9c0FO[|W̫*jN#6:˿@)U bYgi)eXw:0 (< Q b(y@h̩g0n7ąy0쩊)MC}iײJvB,F]~GqY;A;/129dEv/Fd 6;G`h@jE&jrze`h@$m 6 >[7R5l r=X餀Ϝ]0ܓ 0[Ftrg\0 Hca'ס;`v eK@f Lh, 3Aa>ԡ8N<;E)[a,ݓ B <umzIծf;R2x#`/_v>S{M=pa>@lXxu|$N$t "<{7h׳74o+yA"pG-4nJ1z <,iGw rC-5c(qJxxI= <[$ cj `גCon\}k"EwIVfT{aXfL=${Dd5NﷂvGGB`8:֏Fdt$@rEt=<D{o"P\W1$8f?8&u$ktچ;j`l[ZA2頻\ :([ָdȗn%{mhlD| Ar nPM=L|al[t-/"˪L$\泡K+`vMy E u$HX[& UKĂ,ebأ F9zfT2qC Z46 ieKP2}I0oo 7`\80o\ IdIxOJgiVv hec$@(N "$R{֭i GÒ%IpSD Jm'n6a*x~+ ?f< Ut&9W@7PA(`Qr#]5a̝S'A^Fއȣ uFx:H:(J1MՊ OZ\, ҕxNh=׎H<<X81s(kyKDf | Ԟr:{ܕKALöIq%(5[0Q~g *R\ܼ#4 Y`i1ӆ{{+zbr]͡}^6Ֆ`٠cU *O_J~^dtZ%}ʞi{Nunt{43'Uw<aƎCSEP6 V|q^ܤ9(`P)Y,NpۀIE2sytnrbڢ(Ə2&,=i9oݤ`M3.kӝ%;A`};`a$gɨr?p9k:s^Wsl׫uA*A+O1D~S<:ğ{v m[B L;n{syS-{n& ´cAg*?:"f^s]m>g* ,T#} x};Q0θ Rr}2pg8'ï#tB'AZց)3Yalѽ+Q8/0ϷMT`a •2ۡ Zk j-7z?Bى.也_pAe!+ rPoYߖnpK` X< L'5 M>N׈]y('a sAAFG `$NwCoܗY//Dz|?&Ȱ;hx4^Z28u){l`U+U 2w3r:[L UE^,x VM%faFy\!]/U/!rCFp7! @s?iDӶCqpMR)4=ӳc_msFEZ'ߙ@ ,V9@W]}zJeBt[;wXʾgo*9Fz>Y$^+pǫ'.tyzd~k0 u.95ZV>ci1OU|YV9* RL;̾"X>t>1C*לYKOSAO}9 y@3eP=P~yZ~EBN$اZ5 c`Zkr ˟OfiXClqs۝PM&64/lRkt`N'caFCYZy$ҥj +|fJoR-;^JKjaZ{U5Os_/l@}:k*j; I`jjo^֤#9 6Gahc@P&4NYcC}:8:{AFN"C|Yz1;@}(f!*T'I`nX2r0:ZzyZ"dXOLvt*^oA \yOhОC d*0>yeCT pgWzp*HJ|f<=/z нj`^ԧrSH]u6j0W|SPjQ4n=nVc ɏl^[mU_8oy]4Xa{{C# 3%Թߧhԩ bC,b6 rWyo5vB|ǠŦ"'j7xǃL)i\Ű-Jn {O6JֆmZtnZ0"d=fkK lnisH ̤!fJV&@ōI0mmvw+жRSlA)*( zs]д>_w@B"чA:}VN yycZ+N(csG[;Ӟj͚@fnF ,ԫדBg "f>K:*u䶢΁0!1)g(@9|;Y $g>r6?L;X0nS"U@"}xP35 NyBk`bzC Mڬ b 9,NsCI' ]?Do 3IvZ %/J0>2m!̜xu9sfI`o-6%ߌBo9E l4kؿDu/N00|Ulb"?h;$Q#Ɂ0j蠴mE`SA|z닋(`Η8Q7Pn0*!E,{bL5:0س8r49a681{|B7JZA_ `Дp?pCF׬`.%( 2ՅV5KUV8QyHfd$ 2_;PbMKҮ}`3AkZKc0my̥Ao83<7nE큏Iy@x\c s&s9F5OFGӳt$#G[ދ϶9OI 7~b[wˠzR'BBVU1`Ug;;Go8Ծ 6KA @P`S%{)ءq Э[3*|Q/<获n衡WoAl쫩0J~Qk+`{q_^us{cUyN Ӵv-6 뤔U7A77D}%Eknɋ@3N5EDa$MKP("(4|Wl@ F7I}i?r:q*,/>:\b#}aL *{e}̓q] |[UnxDgɚ&U0A k3%9UBZ.qk10.I$& =?Wz xxz@N0煁=0(hGC5Tߓ%#LhDÆM [e=Tm`ڤE0nGI cy6ؓ_<МQ#Uo,Sg}}[INT 'weTSa/*RE==gRAtG^%ũǗ<8f0z3b^;Dn= yEրIz} ]W!=m=dm4WDZBp_-o[vGNxtsQ[S=bٴe_|JFzkr{O?̯ZgM{6kwdY_5S&ܹ4{CbIzF.*& 8#{&u4BB]oT+8M!EEL Ȗ`9e۳n\" E'i]/d+/3\^'yv) w"|AYKkb]ځqcQaO~ˡ91 ox[{faɎ5= вYd :]3Y#nN|ƭz|5D<7K)V0np)1;lREֲouкaO,|L`%I"(Vid3EA*ȗdK+NwݙZhHhTKzub.`q2<mw@YZ]'[M:iLX]A#t+gK?Zm?zi Ba'.chHf 62 ՑJfO]E;^=Ca ##6^2 8*GUuu*g*'N:n GT7PlT[69A[}Z 43oiPMXkç' 48Ьߛj#zU=^(jۄ#c+{sJ n\?NGvb#I)6G9 nIR'q;G<4 %[{450Bm4 dm;SbBAկr+he9N7S[]ȝ!nUfPeUMP1FsaNd-UJ6ӂF{d.WHv2͛ {Ȳ],>F|n`YT{]R}`׷g_I_)Y>~b D{ZdL)vRQqϘSm-g7Ru?}5;cM6}ɇW^~PٴEЩbjuӷ#z^؛wp%~Tއ+?>JylLSJo NG|5;*ZCEx5Ǥo H>ws%IOX^*nm6+{g|gi(RҏRhս$eCUg, zV}aSI_M{JGbG_%P".SSק]f V?z'CEl-.ݼ#7WUHG<,mWsgpT/uwКp4cT&jĊYfKPg#[:81VSpMO̗1iW OI|1-sKYC?Ґj*MSZ"'kƗ$kFU6<%EEtŠ2K^cSB“G(*b۫37*_ƫc .rK  ~Hk /Il E@U9ڦ{Ⱦ9vE}'=eK ohCp /qe7CØ.hNJ/_wAnLIE 4U%)}'.xi/.GVU9YO;H%~i&'\xX*)o9o3YyWDO N͋dzG܆6)k1bڣaqs'Z~- E.s^.Hj`6]PtѤ}_ڥǟo`)~UgD * 7=[av쨙\ˍO-RdvY$ѩ%X>Kvƻ,l][Ȓ^$z݂/G]ȲvI ex`]VJeG9(ij=k_HL!#OqeS@v,WUPϠ#*k"愾ۅOo,/lw=jթl4.͡ | "Koce⾦IFiWW^8(MW#O,}Ksc]%FlC|zUcL/|~!}^9QexZ9n*QHF]>bJ\g!H&3z6Z^u>׺;vX&/HyBq1[Yf_t_ImJJiS)<7Tb&ℴ%A#̭i/&\peϣ[N&z㭑iϰ;%rUtdnZ]O%&MWC'ջd@y XӐ*s;nz-t7Se|##/Y= eV}vISJ׊/E9_%*<'|}pZשy]gj͹k@ p)hٽvV~\); ^5zCZ9/OcF6Z]F}NqTW/iq0.&Y~ޛϱSy\⳽;C%ݶc #gO^2hS՟XeT@r$3{?] k"o]a3͍t/|SzELjeV8y+Ǜ?kPXg tKt흿 ✧WTxn"ihE< L|\?x;xژ>8Bu9Y;ȮTг>o8IGgNx޷nMƛQ\"";IEK;UAu7ًGZs69ǦZRt+Wm)Cfm}#^+h>f(/˟z-X|Co#$~ogs0?~VIO_I[ =8Dd/=9vȾ웒|nQU$ԐfƚE6;>Lm+{!ݶuъV5XkA|MHwOۘ}I(?>6,H>7 sG4) &^k}osG+4KْD ѭlC+Սk^ 1.U|s'xsKsO{4 }6cbpc:rsjYʟ,OxH EWg/]5Td4 iMʮtp}hWpAfm:;>vִ7=0?Bfhqek8n*N1į~zL moӜ^#$iGG*LO=K;h?fP6h? t<<쬼ݐ6nhh4K D9`#(ѻиH'i} o䌚d#I 36$f"usqnRwzxOcQH1J4sQO})quYZ`rO?,X+7+Ba~D K>HcIüccX|X~y&U܏ 8 $|(b=>g_[(3 s` &EKXt~'?d>Q8bQf'i 8La r<$(==P}L:bD2՟4 _dh/D@$|>@I<@yI;`)&jv:;XOg,|]sU_5{8 q[4~-M7/=O2A`1q#|bdưtFĂ6ô*bogAI}aђ2Yw;io_C6$,o?~0vdƍ0T~#?i!,GiؐR̂!q?.tؐ7kM#Æ6#YE2cC&lȀgSK9|ӾSՄ;Xe[do|x! 6İ)e1$wv@HĂ&-B}ֹLAƊ iȄMAw'Egid?)䰐>|`a~|>?1FOug,(뿛opqa`F/yT8fFx ?%x4qC m),mY,m9hafQ<3G; %&~fO}āȆ Ov3pxp6#SEE6O9+9* R'luFPj3J O1-Fu!c Ze%O(/Ῠdc%LA '.4Sѯ$u1OϘ~SL k \g4V jfVCS&\Ξ;QL?fϬf9{CMG} s=O#יrc3#,+O~#f/M=;'L=.ҚQqnr`q``E888gqLIay+=#OcbK)R^n= 1;wh? N9㟌gEʁv6SB>Xa,ܿxbULf\79 a#~HLr!C A6pf`¸ ؐτeE,Sm)ПZ<+ [t>B ٠OiC/X#`!g~çϐOF fUWD~^h^B=?O̥qgi "`?6ޘqZ1e8ffs?F>ĬīYfs_3yQf⫏ w~ ~% Dk Ybs/b,9δ~V |~Cx?w'>r?'ƿ¡\Nc|'1;_ }ů-Ŝڙ (QLOIgʷZ; bo/ws_ӹ^_?5SXZ}Om1{p>׆ʹO cf p؆v&Nm!?c-A,aEg2Y\)R>("ϕ K- 0~2in"++1R΁#fvoN"•ai';ObMD%/Xg1gOQb1\g\ףXr&b>iju,Y1b11~ cGRŷaé|*;uzIk,=OW͏7/5^%9.IP>x&F6k2 D!ږ/T˂"1N8uI<<"T9  1ڹ!}Lۗ #,Dቇ'}ʹ9lr@#޻xfoVt/ËÛmgI c,B8WBFLi͖V|Gުy@F;V V /0F7ſX5ߨ5q-wőҜ's˟y@):_oXgw+,nbaj&F X\oSL^*, ?fFʇ0i0q8~YO*ʈCͿV`d s/,_Xs 1_XV3LcăG*vVDOǵ`շ0VO3cwKα𼍊crVk2W? cJKf+.}zE5GU41{bB!?QBN?X:Wgg>Ԋ?D;^̀E8!gx>?fھujvYg㨿<t4q *zeUˈ]Y{=ߘP"lbA66x& a M&M,q??N:/q,DopA8O/>+PP~xzp@! p`A蛋)'oc}c@|;cMR,½Y{f!'? ܛ5poެwf-ؿ7 < Oެ"܉#܉XXWLw wJ04;qpOMw?*²"@Xv n!,#ǖݿ&Yp0Էׯgֺ)maf47 }};7e~nYpQy!*ّfZ##LN09 0-:|]p™eILH[spF!Վ c c\?3=+=oOR %mgㅔvssqľ8=ALrvG*#RIݏ(Y#}뺈(Z9 ZcCMQ,<4tC~$+0":?$vx%qwus ߄~~vvCmܦWESɱo$3 x ޳hN~(1Un61n1K?d&$禸g!:gL l&O6\;]?e\?u Malr{o݆v c|Ⱦ8X䇕~4:[F8݊sac`ב [gNt+p'ӭӭsfDӭyhV:So\f$ULT$lp%lprYP $>I#}1o/@1xK$o>/_]\}YWljO}f:[8x[8pp ǿy|#Wo _=v߆<-v<,4~wykbƕCWoM1 P sE@ l O,WEc <#bĄ3a!aضY9,dLf;;$2[o;dmP߹vvBMB#81R|ai!E!g'sG{ͼ`Lv2{#P3H1'ذ3|wCz{yxzXaM?# mcmc/vignettes/morph1.rda0000644000175100001440000003246613045741600015130 0ustar hornikusersT8N( !% RK#%//t#H-( !ܫ9}ٙhaa\AGba\Ѱ/nnoW7Ow{44L E *V}s}c̝ 5ZϽ®rBH0aWP^h(0Zk\%$? xE0q,7ȫL\J2=쮯6.t&D*HofeW₄"; ӑ6qjC{T%>˪<] }\OC3.N|,~Kx?례75dNȇ s]b)h "ok /{F%GO@<1Y+h 2Yw゗ kUn~}xfѡMdW[w똦Y>J0˚ UuBa{TM(zu jXM'N]x-uרq-Ҁ/GqH 2gBb2@ v. ~xT@Of.ZjhA hMHVRoƠzpD3vx*@ /Kd2+=Ziƭ(ՙa5ԓJ#-la2_LT+ & J\tǓ8OIgvd6>bF]TJ ƿ$Vz:HNw) Fpv+Ċl2~5tߔLz5_ xMH8"uvkAdRr c5Miv; :bH|#@\gЬUV0 TC]E0S ن<AhmOW̑I'`soND7gMd>fp4dBѱ dzFw_ ];;X_߹ znWgہgdM ʼo1 K3OyS%(0pMa!Ȑ+z|.T .`ZM ` kI \bE$@NP]zAD0;0;njJn̂t//!{K0*J&xԂ3RzXXBE5*aq@Lj'7Cr7i„QazXJ73sFT ڂIX"~!) FMJS$M (> 2 =loA۶[*Z8=_OsaG3͝pώf> G}/%Bte*~2)g Y^ ħF{JCL LQ(h`},?%Ҳ<ݡa"uhkft 3=׈-"sq V!9%\_ U_(qٳЛ#s6HTkZ>~ 7`DOS#Wdt"ehp3#LօŃ~PfzA!&*ǭ{ ;4Ix8}[QP!y`i"+~ }&,D+b>@h)&1P|*&僒\ec[k~0yRr=A"+6Q3"x* &]TU Yx}>W^&QRQhAD| m,TAL[JfCXz?X+TwmKa~Q%QD'0Eⲅ#=Q{-% }TSTM9p%byyKHD$nOE+0OrLƔ.^0\|ɲ2L(yvL[L,oa"y.1TA8^0h_(NԷŒ,gș" :1O6/('{=3" gj.6t&yP9}cq}/a)T9_>hYhDl0*R3ğjI?@ufR|$ A;, }0ةykF60ǏaAA'CU}-|g(kmC.~p@s4[n1I=Jl=OWD[b4?$}͢-9VX6atBY9 K^JEF\\ k0ơ$܃y(D@1v;}u8$8vqNLSh0t'?{/봃h91<6Z뼅|<c ri0%o)jFEdoK r-(t-sd"Sl7Ry|oѩ7,ЫH~M 3w5# @vlX)|m4FVf9I~ 4COGdH˪ 0/ީ($LMdr*X`Kvi`\OI]0 @b* Q4{5UfV %b"@r(ZI@fqs3at}-hy9 VW|P2I(SXgdp֌=%Uka@1k)űBh"No9E|/KE$4H$92 e {׎V$  Ou-rJY7.I[ϚaLr9"Ƴ ͓ <"+޾Rc%JO, t?(p-=wAL?+9qcU<z#%Ҏ?4obУz>qo.o! {_78n`NI 0%.)Cd;;R$I<AD\;CXo]4é@¶ VfWBDR Nq`ljcmXEKX C7^ŵhV,{gq*0rdÔ`fV_`$r= 9.k ]whB$-ä^<8!n R Ce/PSH1ˮ'Sz ,1yּ{W$\?޼#f^01Qkp;X!w[~$b|==kI|R7)b`փ`8bT02^ezc.w \HFg;4b:]t )q Q&bE[wKxHru5[тxқLl|f$Pt}˩ÎHB}`@ơG5J| e؈`3޽ S%-~{c+zy2A_y^uЏa) y<;+g"tR!T7L<:b?ߡSG^"eIE[rxqp(dڲWZR2A\cy)D`|6gt7 )'HC34ItA@s(j. y?±"e |L ְsk0Qf2D/J D9VT%L}|B6`N{7x;:^R?1:3u_sN<6=%}j OK7le{G- 𧟊\har% cVqzQyWd^%m㤱`(5q%k4=CԋIaؚʍRkV>5KSW oUtT]*P =D efzU 4sVI1[`، ?0goh$ aRII{ @}*r`sɋ*Yu>m1&@1v]3X$ è*Y]kG Y<Rs ,eBo[]-@;5[ldAky0j*b~apz|6ׂ;}02T#4^ڶHny mj܍|; 1sdejB=E]]얉O[*KVk$35REf>'{ t] R+}ު鏄dmwҳy/Wt- `]_+`4d~|3Ĥ\>d*9nt"TJ*K/[z #o}`H[Hüq _jWucͫ5Yhw7E q=Jt4F,|yɊj3D Kzpy} _u]8iv6x"+ lAL}0vw6v)/dl78E@m<!x&8;@::ȠxELĥț/i(::̬tZZ Xw\= 4o!CEe$`:f Fm{ǂ!ʟio'ŏI0IUS,Q@aìAAu\*Oҵ :\ܚL9H/۲W˗qaTBVvۖ.0p 0Pj[ke2K j7yNvx_@y Pd 1i/ۉATTdp8 ɞiE~tSV{0|8 O̓`{ƍ3j6ԅZ0$/C.6L*DxBC\u+@ J|I`sy !} FwW0LG/9Py2T0 _d,doC9v%+LuwO ύL;qI7L y ;)ph*ε1vh k )|~Px1/|7?R#1')T}1XϞJ@q aٯ>0D%|I|9 3_J׸ vjrwr|Ze&2#R>pC+^#P*!VxlGV f}`UhK}xZΚW[0,f̓;4^]qj0f/wGb)#; #Kqai)_l w7ozUJ=#B]*"Q+ lz/*\.a 2P qե03+~(JI='@AJI;[_ճq.v=>qܦ kUcU :O<>_JD2XĂ&W<4| r[ h#Sӫ]0e%ONIMm}LN>)D#`!% e7]sZTTUL0W^ lXJsM_Dknl ,z1ˁ!,Yz=ܠ2Bԣl g`5S bfds T;݀!. &ۮݪ 0혿(M w]pR[T'C=էE;9w m)!: ^Hop̈cB@i%i]ݚR 钏@|x^aT)KƉm긙 ]ا`Ssp@u\K k >2YE}s}_0`/KA`M.+T=ٳbB"”BsQ:l{dĻBKF^>yώR#&EtH Ӵg_WYn l:g 9'%yW f" A!,2w`cgMc??сs}{A>@ (3$Q jaK\ ߵbDJg(Ag9Y 9!U-8؄sAJ.0$3n{dM;@$]ȍ1?xE=%,ae a=mͪ`EIvQ|OW (Uo`ׇC͐O="! b𷮯 B`dO8 &/_Rȏ7h}gR.+{W~hT8*deA٘,GlwLHs~,ST=NRϨ9/u>1gw7%V5O5!۽GƢLz^&ʶ5Oj O;K}25],i50 Rc#{Rf9HG,`e<@Rhk o-}v"_Fl65 <Up ~@]k?6o'Im0Q!X@XٛW~3z8T> 2M24130HĹAi&tdS ZL@j "R߂l?&ApuIxz@cGĠۊM0dby&TkpJav<O< =,. :!}ޣ=Bk?uJY;FlyV+9;랏/(uyD$ AQ c ]4y;"!'?0P|E"a}Je_͒x5b: d{S 7,XƸh0ԅx$٤?8rM~aQx4v&IrzW|31/5!T}Bۥ;-Q߿GGpr,_K9Gvy d`]d@bR)I aLGD=bYQOS'CCE8vHL5!{r/8ȪAp[zoYJ7cIbYCѼG$iUr}_*$Bo`2iGG[K%Q> |حRV.ɣ#Y2fByD z_X{spoUX9/֘ [Lq 8"AZ(rV\2bĈНϋ37wx1 &'U`AN?bhzLRh4(>ϥOcL9VU85 H1&;<`)y.7V.qkwZ >5 ȎgEq@a453ZJkר _ݶeDGzmÖ+:j$`;2߱Ө _!dc`Efh#j^yVR7р*Gu[rtdŠ؍knd/Yώ͟O(0_;M( ߰q(x/tdQѸE@,͸~Ɂ/:'8~_& :O~ jAixI2Twڬyک#h@T9m;R|t Y9,{? nx$t 6*~+1x) EL`m$`c sDDZ-P4ݣÆ-:brųp _JМ 'L҅V1XaT_5O":O,:@u,f؏8]l_UЌ4O?˯Ԑ>9 mz2;" նZbI y c#Vgś;se 8}G8vU5ڤPѾp1Xs2KBľ:\+,m 8$~&r/}Go,x;PMY}|2$Sk: }=L'HЇVT&m8`kBzb0[އ@* ٺ?uTY|udEd 6>0"!zW_e3ߙ?#CB +18_,rM Q"iQs= 2S=aU`#"mDI<&%9VOzYyh^Uyc<[j_=AYz\7*0p`!B8*v =UO &nl{_]3Wr .#ؼDw~ /F=$kc!iwLKEnZJ }W2Ey6'$9sf_VTLyb%0ZhV5X6y1v譮lfzS+-$1 ,ōͳ!I7ڱ1cKݾFN:eFeծ/ܝ5OH*pL!`$RZJ4V>O y(ղ[Va0bNN͞Nr>,XZ.Bs=T VKBǟj2CsS6 M^e<?VC+X_]kCzW̏ޔJ8H;B.,cy`&Txڬ`UĤitwo;|Nwl|W4I*\&;-`4r)ZHm yH>N;pX(3N@}Q),Soo͒ڿLTW9WtG~uUMG_{GkV>x*$~5ͮꧮSə%qqwESŬ]<;i:4ĺk4b5ǧГ"Z,}d)R%lI>H~w|xvIƥQ#yoٴJ 6OɈr g%1x=T(Q=])[O:>,QDGlՕ{\5\yxȌ)e^)YLBޥE3"zl`fޘ%d}h{$GoUV=^c֯\,Z"(6#OE^Իsy+?`1EUR ΗvB>%ϋloYODOuO:Y~|`1kc2c7+nsGJP#w8S/763Ĕ<:uufz”9n$>b2c9lob]vE+h [FoIUW;/8iwn d*PJS89 2W 1sN]ǷTR}{[Ǐ%g*n=BYirMk]e}cz gEeGH#D/*Y<ڏ6멐LJ HO_¥gwN8hyڇ_Ėh) y'څTủ_Y wpD猴}:20h6^1+V>=ŏmo)7i31%L4MOܿDXW_RedYew/acObjm]}9lvXѾ?? %fC))7[){[?[Onv׬e >|VqvwYG%]uсގn"^V޶?H{^qtttsߏU[OG߇w9ۺ{;çj,BKsvsq!oͤ/lu#YyI:zz^K  ͧ\XYx]C?F1DoT[e[o,\ʥS׏Vk#Cc V5]W= ^BYC ?OǔZ?*~AG;X"1).bATT$~N'-_ Oߴu?:_œqut~voT~lǞOjBy5c*(4^4?vt%*w ?T[[NX;[yayHYL۫?ƿaur!G5Qaߖ`l]rc#M?Zi"z;G_[=kڿ(4QOoaAPͿ40 }Iv*濸@B{10l?kCl?_d@deG/Y~@џ?_d2?Ye~Ku'<^K?P'C?Y[u'~/%O֑{/YG@?q|ggr~T3,?2O\/τHq,(,UnZ;Ip'&X*y; u9丝EQ&Symsks9KS]BO0}5tsVҼpQ r=8\!4wZ;չCqm'x⯹f~5Y#B7%ڲtaT0 5ธ9_C+ge:bs#0OUOYW^vt꟮i)~ ۗɳԔzMYv\ݖ \%Q^#{]l]cҪҷع.ӼQRdajKჇJ =i0w: X(Ƹ~k#Wm:V4ESc+3;^.۷ NhKr3k X[_ <~CS!Q09ڠ52WM򾧬CSqdm͕~p}ㆦ8Y?w儥)+oČ8UY.9vV>ft;cb>PqRg;iW͜U^ &AaCcmBn6OC3G^g}GHlP2[1ɸyN[Y]~}O'Zo\[{a}5{CuUW>*]v3zt&_]T\ZJj+ q)E'Xމ=ʊ\ :-m5) O4w<κhcIp7ާj5UqիNo&l5uݤɘAll2.q\Frצ^8QJruy" k.]f~a59m􁦐ݓO_u|fԫ`?ĿiL7-qHYz)bl8Wvþ-\wr}汦s==w u5nKɋߋYک6KxK5͓W>՜'ݺEٶ`TöWx"x#JWZi';}+Jd&!sI:c_a$25Ǚ Yu)G-h8Ԛ~ǵlKVʼnKS&xB%NXj &Ύ硲xHj5_X,oDR, iE>N\7dūW{M?v{t獣ƽ{XydR^If>?VubgGأW^əSNfO7(R>n7{v r c]m#$u^`O>(dH5J):So }JIJ]K"| S_(}dh[53o8+8('WfD)tnzpm qSfy. s xE_: 9T^}ዻ$7XMQR6&+"Qɾo^wТ+::ˉ.1ɥ˞ģx^~}Pq?+By' n r55k@v}S}!IُF87:XKܟ:06$QnV2xZU( =n|I$|FnjhNcɽl9&%jێf"VܲzŬ KOi꣭<_dh4-2 vxsJnn&]6_E:J]Q$[? -ezwcIsWǸk7wB/:!={%>!]k[ٝM=$aJ(.ݞd,ե'Qpҵ$ >Dg o($5_ |Cg۪|?9"5 ނ(zT6eeׇSFE%M}Y2.rc}㋹εEc1WZϜJycCܼ8堦]AX4;AfIIteWR͆ ytڮ[ԝQ'w5L±/txw_ɓ"^ ^z'ys6yOv^g?knĝvz_ӌ;l-7mk"UqO}dM6I:*<%BԔk>}ɆqBb ]ሱі1gS>/cٕK̆d \ 95g>컰ET~%شC$V&G3Nv bxB*(OgJ/Ozͩϩx!׏[('{S%*Oȉ3 -tJ"B}TaIRѫ'"=zT;ƯN驮 /UoyP%0hۇ:x15v /GZ@9u90_[7+p>+O6w?]n46->dt̖:{HqF:b 3Qۨ0s~OY>Zl_J,Q=䧦..N[Q'+x)w;5sO#_}iWn=VNShі5{ lcYx704C8WC\MWg 'ſ<񾠜rob tz$6,q؞t]wrrk &o\4:| UѶ柏z>%8?u4$]bevgbˤKGER%5@r" .#L>jnFg~*ƭ[ Ο4_n' MM;{I[@r\EXcM쌂SbޗEy6dO.G%uoh+ k / nQ!o$!NuW<;aQFՇ9@9Ro4_JwAG:ꇧ*n<"*st$ߒ̞d=R[^ -5+xuICbtV-34l-ªzI]Aeh[[:ICY20߰ҸŖ\ * A|4wxp;yhM]=Ȇ+{N\AU;D^Nn[%ķ#ˮ{fuj> H2l*)?w̤gPF΋7 gR%Z/!GmHPϒіTq /dGFHa:3Kpw_ dk%>?rafr3;ʝф*CakOl^u U #|y&ꃈ%>݊%4Wk֛vƌH-|sDMFYV^^ M[koxp?ceWijS4a^|~L1ww&㧋:yvF+UŲ/$~hZۿzʗL{wd8n5eI1" a o_Uĺ/XYhw˔Aer%Uϼtҷ6*nҌםKi'u "T#$dgf>2Wxi'd|z.*j#~SP7Vn@R[ .V|2@u#zI LBQǍV3 fHj7[F59S8";]ܲG]lI?@}9썋j\eZOM*qW;tE1^ o{"X8,oslj>-Jeǝ5U2@]!lNkE^ Lzerr 6wA]^_ι|e-N+`ūKGh_N&>zC(~rv@xLiHCvI%?CɧZ+h뷎 jwO7kpSVzyq5?^_X`ȁiT ӍTy 0u :7I$Gzad4D6N`eOqDK7J HW_N>ޢR,Y ͂*fyx^\) ^^ Oy\2נ&UI"19Cߑ/章;oq,(,1ߤݲ2W$H܍ZSA_}Rw9]{ R@=RxΈ9-7*3ur*/b2ӥb0A# f\HMJhUcfrzoЮQX CUdtke+:65򐤹 :?WLY-`#^ǚ DIpA;vهe$vj|(zsBQ.hٓETQsW.A^t_83zv.#w*tW!nUlP?B[Xs*75(bڜ*M\ Ɲ ÄV$ۓoM+Jɹn-Ahw%2@Î:J6rx0iH1 Y%To@W!0/Mۚ(Zh,֦?C3QM“xz&ru֠KZ cbؘ|]xtb?:A>|7?]p}8#.$UձӯǝY&4`-&h"Ͼo]ͷgr0TydY5CK˗}$#dʹ0iq>G&yvl¨y}xK^U6Y9۶0TQzu URg6[DT :} 4b0p:N b``!: Z ?/u, &0I[qarct ]6Y^}2BwcU J0$gMu& j>&o9!^$ &S ^<>a̼]L3фZVo88D# F% 8 `r>2 Mߕы>20ȷv[hz=:zbrN?RCw'E+j!]{ K߶^&VdZ!Jy5 =(&S5بsK`& w?e(CR)Fomsi^47>pɁп_{aKXȋa12rc="b G@+eY89`!jg^>th0|b\-30K^@ ɒd葯+ԫ\+0-~e /L7Nσ@cwtCCqa퐀#V5I6aVs_eonvoAIO˟/H[})6|5GW C_|Ԡ4nMQ|}L<0/iw[w*kB$d!1tcb+#M&VJMjvkeanZR/ϘOX DaȰDwk(c.&ŗ=K'ʢ曵/nl:/_i'^.~"J+RGDaxB{\ޮq">Ԝe[xaЈ,a90Nc6E PmjBPGݩ-@[<]#|ГI]ߖ⤵U=14hVwibt:v#sekIhwj+&'JlPRfSʼnEeв&Mve쩻rs`CqOh~fzr z*_\gC T2|VDn~Y)#ns} .>~m 7kAW$= =AJ0`f2HXg7F]u54KzdAmO!LN; E~Ƈ2l.$iD4J0|U'drsf ni* rrQ,K5S 폑/:K=̳!_YLs)Cv$AY.2#ä &皆3p;ǹ>m@HitX؅o ѭФ%-gWC@dG*j9E@$ Qn\22l1c%Buj(}Y hc^60B!r92QEt!RK!|<MWDbj  +y]k9-Ƌ N&S [ ۳R7C J+Mg)%COe3vD Uk~nߺJtPf-|Bu 0.[B~X?r¸(EFO?tsgA3}F+E>wz9sLLhEEm ; ;ve^Pz|o|i4?ĆC DܢQ.r?}Lג++&53%`Qw*u_B&a~.GRxm)he􏮃uҼz%ء#[#[I0uD V&_&l%82o9x> @{(8:L46zkR$kZ'h_ B}}K>Paf 4ЙlA/Q'5zV,,2N@Q|Ȕtݧ PVQ?fՕ}}~G &Gy3( 6;֏:W<,{s&b Dh<; x,`N)~KJ8LM,a ߌ3t mJ*}MбS6IW%n6Oa>{{m,g]zсP,`XwN/Ds(ósڨv8-ZڡB5~VkDj.=pg&ďik1rfLrU0/Y@#ٯiJӢ3zhJ[Ե 3¢m 0L3h8]BE^4жE><kv|6o2u)9U &?3H@7G 0wD$7Te<0sxh\=/b[GpMBG;rl| LMӛ Aog@΁Gahw4yO9]^ "@S#_.+ݦt yr5P}PF05r&ΙK. | ~\\uW'֠st<Fr '܊?9AE=Òy*V_jma,F-?B<<F+G`}z5tfiX`^]=UʾfCEj'+@W@YL۫Vh7zIenxBPNiY/]s2~Eh[ 1sc,`쌸StɊMJv(~oteaX?b! ~? -u]m1!٩*A'%'@헣:|S =VۆqML6(˕:I+@ ]z }ev!b| ߡe0Cc?&ͼU Byz&|Un)Y<ˉУ#wDYlahWCH,k\D%l%N #ޟ Cb| p8PT0ׄ|PntȢ9d|D$zoEaP85L7罥ޫY_'CCn䡭- ubKr]"&IUA{<̮ WIB7J[kg.$S]6Xx~Cny+; ˼Hd={&6x`D!yNra`Rt-9*Gs,7&`>´ChƎwB?wl?|{y ;#0W4r4@]D<>4gZnZJץaQmmh{9 =4d\>BFMC ~Pg:}n%L*QsK"|sbTnk~?vFA=8x$;'?K>:ՏS*;)|s rۋ(6B|-U(<tGއڊ1Y0]y9DțxI!г,t\ `dD.w˱ ڞFg{BWLLݱlX9wUNj3lX4D]PU{L0ƕ*Zni@:}[y$Gt/c.CeIUM开2[2*;l:u0I;wzX=*ɥS$ ˃00gv._p7D"4K Ci)a/k+C6Cwoh~u8%LS\WtAY>.:gx-'cV>/4&=ЧJl& )2ھvONAJ^gh;`Eij C3C I[Az8tu:%T [:ôtC4U(*{ m7s%.?KSKzaM=M&͟&zJ+80WiV%XȲ7wttm F'^,߽-lVBPu.7$i4R>DEԗ[PVբRvOXC)Iy2Hԍ:AWM.Bohi9qC(4>K1 :<-r3߅[\IEW-OYFRfNAg6/7P͜<7=bte&4!b> YQ@c0"Ǫ4A9nFB1$ƷT;ip6?n qx?) zmlC mh謺4o1cW2i 5Cu{L >kI=HCǞsf >Inz5ژm)9]&b y>ՠh?L[rrݺe Z/t۴ĆN{N{B!n7p?&Ė aKb+xM S WmX+ =.YMŔ? ~vN/Xc.ߝe&gHEʼTӬ o\ s~g,EМ\πZޤ:,t,ڟm&#Жt6 ƌl\ iHT.vF ge0ra[0>k> m[r@Wx¾zB|e rÏ;Ȫcw, oUSUҜ%LGD3 NeU4 Sm'89h RsRk6>0K ͫH3IaKB=XOv oA530# PpP: +۠;])5t\%|)hiQH|MS EeinKmc04h \cM|-$&5ca֛y)D{)LIgSZX,e~IJv"cO#9`w:HW x@ǖ>=;mw :[ganj?I3y XN*  o99IhxxH%o=d@/o$J5I҅vo˓KtG ߋ<LT'sMa2@A_%kZ5R*PoxDA~| cF/@W*~9a߅iTД\Ї)}{(`Ou" S0t^ C ~#18X:>Shj8~4t|V r*?F-( X`4Utpo54]a2h(έ FD11l0ܐuN:-x2J* guJq ~9 ["FwS JXl N6gO-Qo$B;7d:@'Ǘ S{,ZWeSQғx8 ӠX<%" q!l {0zXp];|;`[ucy=cE*WzLMI}`*è8X2óXn܇%I>Xeм9# yYm>{ 02JރDL%"UB99B zub#>rެhbԫXB4EȊ+nwiI!N%{ab!_n9Lw+ܚ-Nx.h"43p%t  RAּ=¨N"֜Z4 692W ՠes(!sB|K`h3,5pd)~_ YMyk- PsV?q >2wZ<#;ON^jO~ѷiq0?/vt%&tqXy USgaT5e> ͑X&%~ޘ s0'+c ^yϷLVE}&`”SnaݮH=m˗sRK kWG7wv]5=Ǟnf V4tj`uuMS;Z9m% l|W2kUWYrΣ V& L,&;PPE)ظI! &HX&ȦkL4r?6#vl>1*>s8@>,U91&A{ EtRԏK{?DAx8:d4ht>l=ҥ? F8*V8qZIEZ<wE4EƝm.`ΚYDuģ:q[ߒ㡣J"";*DFMk6qVA_5#9$I/4v8L]Y!"7S2#ͥIX4R*\x~ۊ̃G-ՄzAZ>|/rX[ ڢ 5\67`Ft62(]/ .nˏM"["mQ6`|dǣ.L,`IϾ)xkW/׊J֊\(4L_8hw3F֑]v&yR֮h\h&D픷%g^ 'T 5?h@kS}'?Ò~nnatB,xRet<tLZYHZ)nՠi#DifO*~Fv.}/zʋfr !Sy ܍Y}H7pԄ8ZtЕJxXh^ͨ`Zhq[`JD!K6l/Pz2F]}&H,| L69!o%C㷝la5G=Nf;N3%gù֏<:Yb~l?,U8s2 @p,v>”}oi/HP 'o@#ɡ>0g&.#c`.|&Ziʤl>{77'EUcX^ʯ|׾୕sD"d脙GlaQAiƥKWY<`KfzbT}?6O@R..:, 6O %eTD`}&1UW+}gFwR"Nhx zgM. )ݭ/ ߦ$g 4AM4Y hOHE=R0 h* xT 5NJX S<(0ߥ_PK\b\`4eQ}Yb(o 1U 遇r0;tN$>`Tœ :ju'J#b;!{Mn)aa'>o{6rRhwQZI i`MGz/'1ao.qK-GrD,۰P- `x4nNT]8ozY Z'9ӯ(o?gC!torTdcFR*,!h^Dm}5XRVvgea&O՜PX~6v B[O?O0 ݁ZG+d`(Xu6 M9 N2ܛ0v5B<*1v4q녮;Ƚ6`6DWGULيPL.촐=oK1Js`R▔_GG "I$b#jӧhnγaUzѷ,[ ӥyytI0'sjdBY< zϣ:.`U:wvXR{&1z!s,>CiH^7BZwUr  _}sHJ )6]Scd)2a/:I 6j}`ΗP ZhJ?!}ѩh~>`W{{9ae]+N57u+S6wa[VnWr 5 '%B|&20jwoFxhv_U2ztyRqT)qŁ$ S*ςs_΢m˖ңÌ3K@XMX4(?{<[ͦKiA3T>cL:FDr62RSPz 9s:>J4C b0 \CȧLumUA-)άb}&U} 2 y-ͧ! <-._0>3 5w(o\XylK|=,|z7df0;ӵG |QfsdEu:lyMdWpnV&li}493 h{seNtO~dl2ſRG%H9? h0c =6P蜖؇`#lN= tvII|!v":W^H+FOHzQ:OtT`= )௚i)U.#uW^mnXƸ^;1 is;z!A{-EvvwbZ]tnQm`ޮ3X=VbNg]/"].0[-aɃk Z]%7S^dXR"MYpEI 8(d9?īrMS5eBϊq :@F_|820s4IH>b.|s&QĠ5Ea!2O澭<WFU 1_ [ԥA7&7td_E!4 oysF4DŽ1=K2ɵ^A2`fji4gzL MXx;M^}W T-sRAa hHED5Ȁ5j8H$Q P[3ޮ hL]hYxƴP;{ 67B':&IC&uD̮$b"z<0R>;H1WIIdp,WX/30-G@Aˎ0"q_ I ɽ0'R@Q)# ii.R1{9,?e+\9؈tpjÊh?o\Y6jrxX8%C[E9)V|B^ckF03;̏ р^ê} X=]YJ֤29@PIs>:bFOο}^G8BVg[pZ]/>L0Sv9 0 ڣi$7O\s[y+0;g8v0DDDži"{nGW?lK8!K4s5lL[&׵<}_;3 )`b,l?Mpp̋lMX]Mz'ݷ"N\;O0'I|=Wm%aC׻l,^륙9[ζQ}O`LǕ]P~ g#_QDZAXQ]'7jx.y9|,`5қa6sXjyw?࿓ku2"bL^*omԣne<^nܼoq醣0M`M+ )!B,U[ᅴ^w調gPdiR{uPh͵'(J3LE+ gﭣP$ N8כ]Ca6žGmxC0~-=Ln~"gJ̓ye=0o{6zR}H%crȃd!ʰ|\#{Ҳ v)t?~^'=+o*oI 6lucVQO ~LJ}(xK̀Uir\Oz*apL7BzC9aW'`߽ͥvlda*sk(V r'Ү2ժc^&M'YTNvѣ*|0ɩsk~&T•Jk#.M0ɖjc7*;AD]JФ!̾ȴ$7-o|}ʩVE1Y^"-^[͂ b+JÏ]^:aIA\ƣh?>6^滷pCAROLa5%/ ;fs`i*,Hkq0lX6$$ )`k簙}BlOp 8]ƭ`9TŃ`uYw”cPMrLm#20׋wR1/F|}znX=y}|뿢)ߚjXf Xv 7ezGD9Y}M,xpbM vB3rhԠ >)&yGYy!v޹q4](EtkR(lVuF^Wa-*G 4Tuz=$4a^ʬ",6J=F e&;L/ )3ӆ^*+1,$/%O?щuaGgs||Ȑʵ{KSF[Hkd"ރ}͚n9w{xjJX8##Vjn'i#1)_8V:a4a_:pn=M;aA5x~:(+Q!m9wl9W+o evu󰬭( _EUEFqiE6MOOO5mvȰ}IT'%|Vd\J?7t&2o&oD(.ע_l# O_n+[:C}C_C`XXIg"xxi\ +![uaj~<,WU\5iza1ZU9DUGKcUn(:.e;ܮN}Vom'1>~!05|Ӛ K^6!o@ !nG}EtFr 0>055Heyo.d*ȑ[]̻m5a9tsf z?5Dxr8^mnkOH\X;A®~{ txs[? @՟b:Upe^F,9w]ׁوf{}065d1)NXJ1x O\2 ,Lu/U~΋1pIղ{=V j'ic^F {^˷g-a]T!|sGY"{bV}YIyȮ M\f({pJq-OZ#,vJhS4y%.(M՝N&?q0ud/y \N/} r]e*- Ð)C,2YׅF4WG&17~E+x4 EzekE$)+ X爃'VaVydfI6uB;6|(Mf!7~4({I%qngZ}Ct6Y-%R-ˑ#j)d }B`f82w .2{&1F热 T;y9xo^;D:|P[ Od]io|9uD"~EPmy pl$N鉴`>g/:%0Or.Fi4od?ږ;b_% k#s$ѩFs!9pGH}DJt[pM@Xws (*bbUP@ X5wHzWeESzG.A3Ʊ ,ۋ3W {ȅT |D3ys4= A3׮wPIcIxJ>y:0cu#Lf/u;nh򐴁nhj̴׽hR#>` atN.E --u:?LQDkw`RIgr4[Y`]A%}~ˢ'c%:j؃(4S(j뫅9(2F!'$Ҁ`*’[`)U#?漰ْ+VV(Zs۷Ybu3@}l M!S8 MS42fBI`#sA)Q=5D ,"AK>pmIk!X=gN@Z Vz=ۃ%I%00eib 76`Vj5aeL@ ys,xi2X1<2@5f6|^!_pX5-a k ZRnNyn$V9n̝ [XZq)2] !UdFK'La}"Qm Kv{}_.P)zDN>A OnAX|{@&TňD|x65yZ-g-ف >#;p1 1x /}Q)ݼ}s<@ `i a9d%ݺY;Kw#<%E\;={߹#+~|Sa9(X:enXT,/d@] lR<,'ܒѢZ@pKK{}Zn>Ȓn74Ƀ\h4MG_,/zVd!&2Ni능)5 |WY(/'/RrK1amxw6ZaM*k*QֺL-mVF chqoqˢSRȖXxJd:OȪ,c<4qo `BRX/_EBz-0{Lh%`ن[zVEnӦ Vmfk<0,1r/35g&c֤KA0 ':K է̟tL ҆yڮ9b Tuzg{u/ Vju aܳtXs}J d Q (/67ydj7PsR" ׷/ºxQ sf'jo6X@x-Kݤb[`3,Z-pYӳ`%sUv˛j怿t6eޏ۴ZavN߬!$]r\;,i45\F(=u=cYQseH]o&x,"n^:1t).# HwOh *amve,>"e*O>!xCd=R\qό:`9,)}t 6߽d> ^U-2n[J.!7 7)R֫´[a# zL+OɱL"Eew EudL|(.n͙!Fw){aQ]{Ssd 43>pX?.B{0$WC{ ;5L ^__|`I]3ay;̍ǹoѻ3:{nr )X}&y"W6]/*絫'ȩx[LsBrZ3'[  JOÑwMp_#}da٭It}/#/j0W(Sd [ẹSC:.\;u+ְ@EFR뇰* PbYl,X{ TF[PgV,6ȥ~^uaaRVnz[!!ehRr'6ҷA:%ۜǐX[I{찇ϴ.l؏K=")Eܿ"fi5;~"b E?N}#3:-:aRVM-Ŋ<|`vsea" +4C&}6=o{hKS wwp vXyf{TĒ,%k;k,AǏHni(HlD3SE)FB_Pe S'^~/&엯RM^[dXi&N_ Ƌ]ݶxqW#5J| u,y?PDh4؎LGs7LT-1ixjݣ(bIkmyX$)oyIde':S~kzDN>l}PuwUae4O֮E$i'P< #W|+{1S'%,unn1mXj8{p%) ]NR)=!yiX(!-!#ˁҋdYI%5 cM/q GnOk}nk3"M:-z"nqI4/D14g 9D kԖr4qWv,:K #ſpVk?L_s YCEɳ"m <ݧ[Byܱ>h]N+/ZYna׀g|0`{)!BҹB6W[q.Hm{.G3'uaFݧ]3X:x3y,Q=\; 53Bo8#"z&lq}%sDgQtA0 -猚*R Y ^O&z0Mzo d)UEIV#)6X_9<̆<`M̀a'L0X-=d`*`JJ foԓ a1@.~ooquªDNG$܃)xr((뼻YأfFZmiY=9)ͷ3"ܧ_4A[ض^<xJ~/M6=K ZC#X;)>%ض-.=uj}V)9r}b^7/4sA!_zfKiԓz>Apg \$ѺGI)zKL_p]D3q3 BS&3br &}O]@ Ou[.@A0\ml9 \;Bban:(ڗꨠΆD [*g4Ago^x!RUI |LV 6fdѮRtEh\-]0\>È`F勀ѿ2aE!3ww{e0r]\o|@@GUVIV|*|; =}Gax$T/Sʉg+nvL2XB/_@~^0وijf0lfY޳`/RBk#lRJ蹄C4p&+ >hסS㹒-İȽ[nfCӸ(˱1RdG/C4%b\hf4Sv<@Vca(&'©r41caDCY9~0U[l Kl g,\`Bt.zo7Eʷ;t! \V}w`ȪOo]2!B (,֘U5N+]{lh`e!sx%O|n^B>g*ϱa]a0Oi#+|*g,aQ0$( MƏߚ ut0D1?ܥW$E3}UԋEP +ji`R Pst?QKW/ 0a.6fZZ}؂'4RK1r47lU|9XM.;a/,.8ՇTI{ƹ=:`  al ON"ER&B;=H[5$2k ?) ُr;'Iv[Ց{yfHܱDh"ovg+"h[ľ+pd{`2/y'KlE7VLxE*)n %h\&CMoV}'0@W&cjqwe3Lj Cb{NT(Y]B6"k YszZ?&Hĺ'79eͿ(҇k~a5AAK;gVY Logݞ7 .Q̫=w^"c)/t1Uy_{9Z7u8 E]x:tTQF-rY4Þc^i܋壘\Ob`N{Ee\3-U9TtڟK*dL&^&RGg/G;|8GkU@ʋ:^jXj*9ui4Ga'T7& =dʁjpqO8!\i2q0<]&7M-f`^2KQװIs[` 1DQ= 鬂Z;"|P$A(>\#EZwzuC 0TEl#_F)Έ W!;|ꖘXdZim82󌊎I Fk̯n Ƹ>C5ieDSU܃&s$(f hj|MΪ"8]Ռr؏#M$)`KbOWɟ!C#_a: Yk3@D [HX8*_]C Wk6@_ecs0Iw0؈Eܹ8c?`A>_812uoA_]tm$F(wĀ$=ñ],H˕0Ț, y6MN=,Y} ? ;yz61`UYx{>YmZ)*/ä!ukd~S'h `٫EcSK-Awc𥿳E |U7 0czI}THNxx=J%Mql {*Lק+@d|L *D*&A|>h&53B y1/mA3e W u')3d9뽣vRZBh2YQ`Fvp^„^z9s]w<]bm陼 dž8Qf@8"O7󮦅>&+Ӟ04,^X6?"Jseie!aۉ8 Ճ!Uil:H2֛/"bI⫹ePak) *l P3~2 ~p;ݷ):kdiq* a5SbN)oc0W}TkL+g(/EN([d^=#U^>u'`THV_Fe"uNo?T ׊zu0 /1"0 #0kzE!,20o1À"SQ7cKaߍ4 lY w7X1&rLPR[-÷W-F/?Ӂ!)N<VœeSDA*>4肅9`H#c5&rZz'an/Ӊp x4<7aެ+0"=/veV°K} 3"/Y$~JӜ]>I W-" :iZ+iC6os8yh.~(5tW%ŝ`=9|&EE]`&=N8o+.ph‚!<ѐd,fʾ---bVm~P K!0dTPZx䃡oDD =l2:Mb]=vTG,PTlfIZb PJU*[>z¸W:{ *RQݨu+-v+v]݃H Hww{~3Ϭsw}sٝ|yOLE׊B#SYۃЌ5[{U¥쳾x<ٗsZ켵?bD&xChǮO˔1tO[{Yw7"LW0˗CPWr+Blq:V59Z@P6N$ʹXwb?•͗:k=t峼w싋!dzZAp NJNr=Ν' r!0.p=oj<"&!#_ts[co*yԴ͟VZ^&tnzx^ng6I]qB3jأg}ţϊ(pSjIk8x |ݻD9ma!l 54B;2̈́KwXr29-=!y*>o҈oU#?c7n|)pӶ;-<1L.!Bwg އsgǖPm\~es}\pSNzf>'[plAZvj-!$(d".h\)ΕUWcY>m6hfuBcfBJ%rn]+ܰw:$6X&nb\4l> ;gt+zuV{Q7{uY٥5Ԁst|$ӓ=(YCL+c gr?-U*Rķ HjWYpݯUmE.*7eo\!ײevF "@J: J}ǚ QKYAIE*F=-1e:v\H5+_y :95 48MfTWyy1qN!~X4|b٧GGɋ7|Dޕwͥl7:_twOA\:ΓEVܷܛsw=AkַPwg\#|P]^j!l֙+- Ww!ܨAɎ#?Uٝm~Ѐr=ώRE^/8}}ĎpѓMF oGfjW\]CoR RdeŶK%.+;(2_Δ6Q_G;MLڥ'qE3L?ß uғE<Yk_v^"(׸\%{ɵ_tIO/{X^v񨢵w8 vMɮw > >*mg|MoY2Tw 셮M^-XeRְarj'_p\{Phf ZJ?3RW\k6!oɊd$HV<'2;rKdzz6Ug=oThoc fu,RM&C}G':GJu >sB y&f7!#?N uuRUϖ;Ϻk)sYˍG?mJt q^ ! \n >ڵgH -uS+ U)~C.|]Z\eŜ]F/wZ+1wֲ\Nݷ%AkׁuN+pNs:7!ތ!<|k21XH|?\!GHPf|ĭ]!TKd5DۯrM {ง6]1m\"nܺG\rgE2ޑ(Ar- _~4 4Znpvr9Ë5;k7Co^ڽJFVpK2ܯ\+=jЮv\[)Kp1雛 v WoL /LʅYUb ={haLhY-;>b'8F'z/^K6t=ǐ:xpjyy [iЂY5B}KgQn\o3z _M@B}Fm7+;ݛmiLyirqk w>߼LoנM묃]g43"uj>+>,,RYEȩz#E~dZ~i#P !F&W𧈅*3m lQʡOEZ@pL#o^Bk[;÷Fsj[]{.dy)].yq֞Kzo/'/ٯrzbW.ꔩFM%:9B64Vu=H^=r]Df]{`>G~ rEt%ׄӌK?Pn8㳎/͂9iCNo] !ٽǧzOflnm\-v85neoZDyE?|It+Ҭ9yz2aQ!ܰl}zźVJ#kHNt xWءQqi.Дȉ/vnC9wtAkW{{FIq[o?vMn0Ĕɬ55~iSC!W74||?p馢߂:k!׺r`FZ^\sݶs^GVmv8}]Yhɝ̖..u4Kr'/vmи\Nᕿ~1lNݛi˷tV9B-|5_7m.>if&/9yr?VK^Y.w!q먤u1kez~#- o$vQ̯+Þ:BM B?onyԫ˺a~帤26\b+lvϾ΅~{W9=9OݗkwaVV}- !t蠯sq[d=~G!B;K| Jh 16d\ xyzrCIee/@6=0 1@7v.#iؽBx ~n޽to}M6Cm1:Zli#?rywvӺa>)fg\\3x 5upP;Νˇ7*t\wGď `Q9z_< _?i.k\ Gix/w-ĕa>xxR'\߽CZ{ZG̽e5;ە6 s[fus8) kRS-8{=ѭ3 }޶#@!VfCΩIeZʊu_Wkb ߐU9ㅩw\i8բþm׹?@9\eZc:OIn ^6WAcKpw:G|íDg|Gݯ7JVЬkqYi r!Q~!b?a Y< Q?fE .2pucpAW9 CqhWzMdPKHp/Z;iۜ*7m7#?X rNejԪ3GkG2_e3o5.eBծܣøyԖ]B{Vٳ&mj}~e/KvMEWe$wXkBnY$R 4}ٖ\2/f%׾sk:b//?ޣz\_7<z ۓ),uF[ RL}®%վw{v\Y76-cPZءb^,8ӳ&HwՕ81;蹱f}Hlmzf/!\SݗT؞BjL9~62x3Fwۃk|v5RǙu W]7G#qdrݓnW"{q9N<[m3>uv\ÍN.md 6ԫcN h"+kӡӻ@ ڌġӷ\.m Ӻ_Ʋ}e7Z. 3hcUef{4YĠg | ޜҮp{OzaNvCw!ٚ73!)Ĕ\3N4V^ld6;]]A;$pc.yO֖2Nw>{֑W7h[ }n/P³҅V]_>K5H.7I`_ns٣[Z\ G7ڟ 7Gk sT :=O[1mz= ~.]Kv^Yy*'S@5fBye>!25T?Ǭ_9a4)5p L4jzBO2kJ] ~VOH f$Ccnl %!m 3ܻC&%+mt~K!jBҜ[^ '>U :Xix *}0(W"Z4Ԁ\wR8j 2c2R1+]<U?<@oOڂ\CZXG( Y^6ۼ' <"_ώKCv |j#o@tBcɴVΞ6dqinlRNXg'0#.U/)bx}5֕m$>]31$~~)"ΫD:EG/{)Ko|9qx[_. }zVp<{ir}7kDf|Zvk$w/o37|_=v6nMgHX=2wD$x{5^ָ>~BTx':]b ^+z[! ɿqzx$i~f1tBHӶǐ`zԞRf:2ՐzmlFB'&kQ>8ysݷT Vv@lۻݏXJˌ#Q?r!OXQ "9yuBڮ'/]킠nmv>U/EDwvڐ8` tYZOzr{tow ?lYw r3!tpL Vc]A'm}z[CD2ݧ ڌԽ =R|: +B~!f|"!.;nќ=F7>2Nn$Xբ$Ha4m-m Q*^r z6p\ԟڌ[e+?­_ ކ+yb=ܞ\6ag~l89"9WY[oWM/@>MAvKVC죗O(ƫ={,V{!>^w^,BϿ o0'#Яo1n;HXhrDe"\Mjio!vKMݪφvZTE㷼-8cܹѥR~LIN \!y[Ct<PVd˕"]_a$m-Kj6q*B"3+N M Ӟe;"-ִ|H3q9Vj?~apcQ5_1=^^}C͐uA־oZkLXV^JliwgL{.u!aLGnc.=F\z-o6obN^֎.՝pY#~<ď{ Y?*Y}R|=m vE2^k!i\gqGk{wˁs_y /ڲv]:)Ywׇ*~^:j$=6$E-i6_#,)q7S?m- 5[vvvfvr~KφK\GŸcSFļϥ._Ŋ朣٤\P ku:`;W3 bzKrRGieJ& 5o]~ٝ˯C̫O&8Mw@d5_[:6 KV)ɚDkdY3yD5#K߼2ܗwku6k[݋y=$\>^0Hx߹ĻN?%[EyCrX ٮ4~c6&em mv} qަA;}nj]NA+?bƣ_^?~>ĎxviH8v [6A⧢_%W$%cޖ6qVsf DNTԫ=- ikh;%)5r#rHXsÇ!aj.9L9Z2QҚA!yȐ,s.zƄg-=e&*/;3]\a/pY!ߎF>rUo$/[RML4/-[%SVv)]{AVtT+!|gڮ)_G>-%L_D.8w!\ּ;[Gpk"m6 t8r/<89n93$xr;ʹ'Oˠ0`sϭr.ii.^orY^qI!on0.8?6r|HSK[sK@ }!RAsf\T֗.l}ի0.uT״m3+/\+>"eުrzZ\MlQaQM&h8Kڨu.nnI[+͜\LJΉW1#-@tzzqr7Örvz{r.Cmzmo9d/9d]N<eUM7|sRcjԵc,${Ԯ'$u*vr-̼8(K*7:ƛl!؎Y߂IKbuzAꡥKOWȧӷ _-=9Bn%R㷝vM*b/>to\2?DXךN1//ݢ *_"Zm.;xؤɾ R=q76,ZQޜ\ףr_-{%m(d \ҳ5AAXBZ7C 7lZCnoW][VvEʊ0<0u7;_xsk\j$]}4qiH|oK!lgʖ|!Bҷ#L P{\a `Տ=q?n2O)תt)k/q| $[cRsჹ̒jAZjg(G:e;@x7tmW]4ĵ]QJhMm$X*oú$6m9H?bk{!aUߠyCt'uj22{ߢ_mN _)˖CKOCIr;N.E8,o:+ Ϸ_RbWO\$/-ZeHwf59K2~{.#w޲H}Gnp/"~̲4mznX ٵj7 r+xsh ri?\N@3ΰ7tilu0$9le;H0?7,F.3*FZاӅѦ|.ckʼn&xra{f.jjhj7b .rs,[ȅ8 փ`ʭ]cos2$|vm8cX"ľvA|SA7jFB6%<5>Ӡ.Afuy݉wZ5ׁgէ'z4٘a&+o>[Jm~vgd,jnH}5N%"Fm̗LXsJ!xA拎 _ny?WCʆķճ箇ܨ mC>|ɱOw?sΗʋoa8K[v4~r,`ت]]ˇKpT2ulf+UC<9 OK謘8lؔ;g2םOx ρKWhz\;śq[_Kj)ꡭ)^Q-٭& GsOչv&+Ů|.u}=c]_oOmܿ^#;|>.mv<^7Uk٫az r=\Nr_ښ*EY]3v~Enm-χ٣v(>NM_\[r>jR=Gk*m<<݆j Ͽ sY}iKEF7I}Iؿݽ8{}QQ.O߹m^~QprrkXu53fۉk}l539?jɁm{~l^xJ U@pMi]MV-{{oGӏnIOV\[{2q}vG!*l֬a̲#kA}͓] DscgVU_v=;7Q~sG_V|Zo:}MKǚ /o0+|yY'*cw7Cyڥ ?v >%~ͥqUwwzY: >_ϡa|.*Ze?ZEeZ$"F'X2ͬ&u_ߟu?YIlSTKOs-Ѩ3NxycV/SWkWTyuzsrF]oRnn .^5tiއnZnbm@;i1y4<ʲ#_ZY'4}=_~X>$? au%A%GxrI^uN_U7_ſ3o+6RPo^w3=ζc?A?"xۍ ,c\)##o~%2N+n?y[l͢Ga;ac=ՏKwg"xZz8Vr-睠>q.(z˯DG-+e~;t r~|UPUW>)Y!!?uA<[,A<~?Q`>X^}(̘؏t=%vO:'hΐ_pU%RGK3+xזǘ|o?D8DEm=#n>L=c|ndӕ{brqWJ>"娚R?w7|5nJ;?a~ȷQ~' ˿}Ij6KaG="HK߈qaJ~#YY C=]<T}4WbAsOU0ܢec,T~t(+5qD>|;C't-ȇo%!d~#R_=-&\?@ގxƝ>wW"i_+"R8[ J0oWGf,z{.I] h*\*/"6z!^ npFϚJ.4'oSv&=JB=魲vIM_. ]cā0CzxA-]]+5VZ LE/?Jqȅz֟>%,(WݘǰWи-]^e)+c'*ڕ+~xy@zn($O7Y~~_?p+Gk!ѮG|OB}r\ K"=\E9q .ek h{mop3O]9H=B4esD펚Rΐ8PeG;|J xH/Ox +_y!omTMjF<3䓈oŲIL~8)߂"Ы|8ܡ? ݣWP_v1h:S>WhV ?Joȟ)U51 QxL^1|\CvNbxyΟKgM_O2U/_"n Ƌwy.q An D|FI響GxVRq+zL__16e!d= eeb>I|8hp /Cuyu>o_s t⥌ W\wYXJg{(y+bq\/LJ%g @9C4?%|'Ǖ~Ol>ͪAͰo5G8/$Ɠ AzD=a"_LJXP~%2^8o\h:WߢXie_Yo%(g8rK:Pׅ( xUl1_"D e}@>b$Cz%˯}ȸPz/G;[D;D#ȿq4^x:/<ś=d=O>#xWE󚗇 CHwȇЯqHg~ô83?nZPɈO-2;gl?#]ϯ{)O1z þLu_U?L$Q>d8  yȢ?g1zW<>Tԗ5?Fܨ4?@)~zx궧ؾ䞶O($i5fy/P絭2?!/>rIDD X_._vj(^\ryyLw."/.X~nL xNM{1}?413S媌GX LI"8˷` 5.s@UTD^pD:!xԚaXq783䝘 P.88?qLu"$v(?h܋x0hA:C8> pd,2>b)MǥOGu/'ۉE3'y +G*ơOhr+]GG`'9cMP|h&ϚډQy{N\Wiz$~Ϗ//|Hd}, (>A}3u~<1 J>•Z/@䑠Hh7Fz~BBm_|:Ej|>Rq%5漢R5hoA[I@So #؍) nA|qk}~Tv"w3n? ӐZj}{jE~.w@ U4- ;_~'zpǣ~ Ո#a >@=΍ʳ^ ov~"ez]okR;NM*쬢#C=PqCt}Az+<}Se1#>E@eA-^^NY. ?KTYPr1~ewC7u8?iyxDB;[e}~HX/J?"<ǡ ^]yU\g.OO"C,a8?i `}5UK8z<JXy!<+_crT㛈Fe͢xeA7lu8Y8޿@.ZY$h{ sR6z#~t{~kPqO$a#05z6ίWI=4^c;?{S <$ =PО+Nn]O{ 'U"k/_ y&"Y"z=Μ[eB׋yr׫C$cJ\(yO5=*s F/?oӉS ڿғQkȿ0ʾMDQBwx<I궏P) &[\Gם?SgH@ /W/g!}z{JNZX$T< . g%o#Gu!M'QrA_h~pu_^Vcu%%WH_.o"~aܒvUh_ qPIO@.Iޣ.DxDc8/$b]^^T5> ǝ8.ȇю*(1}CLr=4_^WI$,9Gvb2r8:?JE:-2 z} N9\|~$̯$ׇwq#z_C/ꇔ|`ŧ8^|Aq||硘묲B"^_M~ZtJ/~xW_8hgby1. 8n ["z2.%>9L8N"}8^IWJL mw*`;`~ b`灟rt}HQ_F}6珑<0\O xXPh/+go8wտYQ̿O' uD+rh|&OE~NO1E\Si9/?#1sw)_DO#^ ?.^P&!.菬8;rj ^zc;.,^U A}U?ў\>^5߬!Lp~I*XG*DG[CEG~KMɭAhUe!e=4-d:@|;-.B8To C&]#i|E׌홈hG?En<SXC~z4>N?_XP خU9O1\NNtBa p:uvfiU:~AM9л$Byz/-])qAq(qePU'E'@/.ĬXazD3TDP{5P~%2δ񂪉Tr>Gz1 |'#P}3ufN/y(6p=/z2h>(p\mT&AT.g`kwHb#nGqHH_VLZz^!uh':TW՗ws1[gḰ8Nh700jf}^@0'oS~L_Nu3b Ώ{"Bx?/G \ o1|(Z?D~اMP"ѻ8vnv AL+П&Wi*噯!cwb*Q P|޷/7-~-MV|P_`l wRQ5_r`|Xz$79Ĵȫ}?<аޟ_%cy|}H2(C舁:S$h;h'E=@4|3Th?kqN]bߑ8&]xeeʷz '+Bg*ҹD$9hʹIrKt\gD|xrN M8?=(*گ.){T!;\8~JOϣWH>IۺNoh/WIa_DqA!<3/$#_y| /c>T(_C/P?_GrDAqJod˂r<3 xmU3~w%n_5=+ĥ+<dž GَMHT{a!gxǃx!}E~R8>?GP/䟮IR+ݰ ~֌U5sy9l.\~d~!?+!&\YXGzer7^ɼB? ۃ{;?߬ )ACy=.\uc&ߡkoWlc$1jz-Vs ɿm);9փhAT|?NYۅquS}k.q.Ɵc;U\]Z$HU*'?SP^4~2ϐ>S #C"χq7Em^*h֗7!b|T}/G ߏϨx6y|-(GO>:7"/WDߦD>&bסp1 >4ՖLOǍޗ[EGy/O("mF&s˘"= +,gKPԕkSxx O>cRe~h;G;1G5UR?<^EB%)LEB7vwOE3#p=uWߋ|Udߑnr%Q;8ȏ]T_a~8NjRvs^~EKy q}2 (10场~Cˣ-U#oo;ixEI4_DQ~'l)~6Cʼn ʥ|Rn.9nD_q1> W5XJyCyfOhbyf1Dm9 NgqJbZ>R <$GGrhH#;nD~:KPjCoE=|ob_ H[/E>c1^1v>o kŏ|DGm|GT{)?qlFxnH,ϗY j{? }DOʏPQqadxCJ8NGHq#}Pvl|B;2[?ezW|^g) "|<ɲ"ہ!Q*o|3+7$p_E/Y\/V ?D|U2 Ri;y*Nyt)=GX/F?-5=Դ BPP?ϣ4_S|OKy8$u_Q?qQ1_ǣ߉ =.q=}qPI&Un`eK0(CsW#q8 x4ˢG9 Rm%IH"GM?q4|6qE }Iyx֭9pa'Nsiަžz_ѿ޿[η|o _X?"~wk.B_54aK~>s]ä&p&U;J)&k}=:.J kj[Bz]Į_s),y%~ Yz9OXHNj3+!*Okh|;7 S,/:GY3%bEthS39, R jLo#84h@0LCQ"02$^ lo>Dҋ|#8.s5,8 !~k_>"oH!c3^"3b~Bv瞧cE.mA"F?۫_>O'y; =q9eX0 BCįqouS!b^ў|ё^䋤\q X<3i?[: M>GZT<ו<c(q3sM5ku!klD?\.O[U?Ez=:# S~_/!+$8_y>4.Et |LzkX.zƕ? Hdd~7*_0lWE;8 Bg>Ԅ7s\G!jrԏP+Xo H_V{+Q~@ .r^PX*/~p_NGQ|ϖ(W |ger /O$>Ap ɼcY}~|?3ÌZglw8O;5?Og} ّ<_cK},?`"t >r$2OÈ9|/#xNKS"O9>&(9~Y ~S8>Y~G| Ge9,=Xغ@߈)?! -2't 尿~濙oqzߏ5Ol~# I]gO!ԧ)=QTBdz~rFbyǢ}sW"] a+ޭ9ReW|J\ʞ$] ?qqf`<.g:oq=p=?/74G:+~(DT@$5g*ȏ!ꡩ$?qG/}Ӎ⏚A@E9Un@yi8J0}޿9~ƺ:RcyGhc)kT"?+/y~ 5O~ 2:>.UB+dqR`?aZFA@nZQ^g@*A1~fJ`ƹ1!u1.CW<|8x9;27;j;-W^ o^cȟx ia| cnدqv~'9i4GV8ߟ[~.xO*?C<署{kAY nl/ѯ72cBƗ;An?Pߑڏ(U֏CW"J~JӔǨ?> {@}1Ǒ>tN@OuBwj.b]^C!8b_ԇ## qf1ԃލqS|\oKoM4GH|\sC#]KSQNUI4yHOAYX֩59NU^~䂞L=X_IA!- K o\| tԴ1eG|?HtN!k?q /96;{.{g ϷUShL?B~J.7mi=O;#zzGQbM,O?(_._H]>Gf>X?B{8Om\o<~? :vx^N/O|*7{Ļ? ~C="ke=h`%|q0+>8/XWLE<8t\'ȗu> #.g^LoA=7~@{?h5\kl_x7cuA.{]*֋|zLqmlj_$5 3U^qοz5H/Ӱ^n)(sz>h?W; _AY/ >wA8N"KK:zq,= c"+#~z>!R*O~73gՓ?x!f>tXI3T߄B}U DA^uVʸKP>Q=7P77N%z3%z"|O~ 5hh> ȷݎ_=Ɵ#N~A_WC\۹؟Ѝ?/dȯ%2^D]mW.)<|W/tRuJ?i*q'ƹDAىq0~o_1nٿn&9N(Xv|^Ek=AYPH[y;< ^"(υ8 -ظ.uo1;ڮ* tbK| fP_@zz B|Gp^Rߕ>)!XM-MU?:ˡЈC-tq+bzu*ׇ^Uƿy=kcb3y>H8EM~I]HTȬ8!?|]H)ϒ |VS\b4V_' ?~8ƿNWkHCcvqu~}TnG![Dnzn ~YK߈[5FeG&4ޤw&ϩTS'/F"ȟqMOeyӿ;N,R!>*څi>N'DyvxJĞJKE|T"MDUI:r. 8!CCq C}"SqUֺ%aܧa݉)}?^/|53ep]V/_0Ϭ!W/יo uQ#ByxƸ%q%_+`NHĻ8~hxp =*nC>^EHw>y}67mE.[u fъ3W1m,KΟ?+|ٌX%s*?[>gf^G3/_|;m+wX9w`` /_>cK,G'X2rʌW20YNl5eeuӎ>++W'wҼWxSg{13,BWt\\ʲ{ߘpBۮo~BVZ =$<+6'pjbz%6"^UejUklf~2Yz`da."Iw=vսrmS=XϻL {O'$/,VmfJ5Y].%/;xY+HV׾SId޸cH0n蕕tߨIVJ}1d}?>%#ڣ}!jB<߾/;'[cɺ^U!U5MltܕO%+ks |CV}v!Zj#Ri!jkZ8BVvd*]dm9gLy2~_m>4xmlK2ԸswX>&Žh_g t/؅AT+CDӚkWs+e JQbvo_(k)Z~qY+W3;7;;8{_̊$Y+m;=9b_vU/;9zѸ"c΂SX?n{?N(_lR??Zfן1e?O=g>>)yO?؁mcmc/vignettes/bfst2.rda0000644000175100001440000022541713045741600014742 0ustar hornikusersT>NKtJw)(8ADIQCFEDP@0@ |tǦϽw;XY5לϳcd(NlHCy"N1Dj7W W+kL 2!`Z[I} XV1=JO%""NV"6V>V"Wݽ\D,,D,nzstst7vVniY&yZ]XыW;fNy*&Ybdc~W֯\gLfnnn%+_~~ܝy܄=\,~迶rqՆMNɞ3g+{7>66?ggs^7/ f&lnec{?f!d~ss1 f.N^叞vcoro?RGmVf\?V.۶8YSGkaV&AgKdJcGפ RgLo'hgolAfbμV?+H?Bum7<~s^&z ՁE{&p~??o.>_\1ێN^Uع99iEn`*g?+::/X؛ype ۫:ƿOh怙ΟDk{+csIiȬ,/Yyhyt >VN8?:v1{'mq~*@Hp1)޿l~\D3J{_BBKԡ_?s_̒F33'=#Pg~IO%**/E{/QG~O%/Ա̕_B3BeՓF:=P檿PԿu\/QNNKԙ_3 ъ_oQ O ы:oX?o*I%?GGNoJ ~gk+l))+~wj' cB݌4+cْnoofc:?律7s;a('L>Yؿ|@g<˩ˑq(SS C%dz {~Ǽ~`;74 =Frz%lp4eT#tkrjf+vc'ᰖ11oxvN _G_%UZW +g?Ǔ?$$knڑ?ֈw`7W`7 [O0_߶OoO_j_ݞOS,~߽ePP;?1pXyƌ ј籺 E\F/B!tR9g7@t[fsx\1>o~'Bj{?m^rwB_;5e6xS;w8eI77]vMޱlvUci2 ]52Z(%8L 7 -(=X^}@wD$U؞IW"S:ర)xvKw|+ÛAhi/KmT7'O&P(1.Zv-EN+Op]vkV2hUfb;u V6Ȭ/ Rr5{)W3,.Y[fGՌȾ↙*]|{Ay?œ޿,$iŋkgjv 9*^,{(5& n$Z)V9ߒil7ow7DHKR$e gպL{5Gˁn3!Sj//񌑌PcGfSʆ26 o"׋lsҶL ha Np.QId04nP[4VQ/+BPM`y) ZgwXOsQO!۩гDrԑ i\# شGmxxL3(!8{X泞o/&|^ڷ>1&|#qon Z8麟s |{k7zU|QAq&cxc1گ6j 5O<̉3یf=_qq\JmGZr.^`|cS&\=DO)?z~N"^*^dC"4D KeV>w开;IRVx3Oc|5mTlq&JjG*{e6ӹLQ;B]ibFq:R>pހ![j*(3&r2yt[v5"Wbrqy.HE)<~?6qRcod^|Mc1ּjY-ލ:j19ӒqӸ[U~x)&nZ*V]kJ%w(ަf+>z,qQS Fc?\tt:9-&F +æ +}{]ﭷ<<].]{eBU….7N)CsuKCӇM|>??s ۅdCgs=48(z. 5/gHk_扢M(2Wj{qfo$W!j'xnGm˅iKክ)L}DDp{w|ȤhHO3~fDI a_$I̞' ڼrS\iSOnT,sav11s 1m߮RLpԎ1 ؤ_~W#5vU/KəTOHT{P ㋖Es\hi\=~JsO<)+kt7Qۨor=+@}B@9[&g 21dv 9>6 ޕV)ӝ|6Tū*ԝtI;'_DFK/1sk(]n[6 &\]FuqXp!2m_4h2'o\y# V6IVpjx.3Buso5efbb?Cb^q MZ\g6@5 =ULc+fxnL^h6qzN ;+#g+%t}捜~X6b\vpٙէ>cwwVYn|8[#`hg.ȟܸt>=>D} oZz*-J)58iqj Fsf4*_k|AP~E;wAAMt OˍPښ+<;ǑsLofc;\

ƚ0eKMOZwon(6W>Uxb[}od&bϲcԉY{Uj|=FHU/M/\*[G P,~t@ O1m˱_?xw&kNyD~햩Eǖ25_%ZJ52|"|C,񤪟(.Q|~3^Am򚍯4) EK1~PG[WݚX4˕D5_n#Rs2 zl`:VO uFJ4tm9⃓ߒs8%jwpjFw\K1-e+K^""=w̅I*Ox f\EߣU6/~"yV=_tkd>,ߠzɎꗂ`!&=jeEG-ijZUX$q/NuI.`qR#+"&zJ|ܝ͏Y>n>JM?v]QvZʔ!=m"O]&,XjZ=-T% 7nB GXWCYDjv#|)]Ky"鋶 MV}m6Fz2W&c:?6vfh+]#yu{]>}BX Jka(/cQ]w(WiN:n>J^,=hcaL'd rG\j;TZӥ0SSz؏S6r*^H?g9{;3r_쌼=\G ykPѯpKMXU. ;L^VCy+EUe0y,FFĈp95}5_2'1 {`!?7W{wACC@C\ZqmwK {TDnUSѕ8Ha\pQ҄:c}lbE5;%x#IVjg҃OrU'GzX)R^RPt 6 ^ޭlBs֩kYoL%QrT/o/S;xz.k3I`>[ǿ͟?UV[{ [;?J~vr<Fv@ޓ y2aȧA_D>`ٹaO[/xz ھ-ݕѷS@/ל`et;jȥEB]NЮl/^6N%БL8[M ]=Uw ϹGjjЕP}\Oo wAGޕu&1| 6Z %ۦ#=W+a@+.=|Ƃ#up R|)n0d*aH'0hDh@j.VK0xlD :&(GTEY+%c1iN@_ KfM5z9ԱȤ5R O}ɦb"\< $ю^rym?F`ؔ{cI!; at>h1G݄\[IYOJO8v ~;[&V Dr'Ih,;Fnj63By-0r_Rzo??i== Q)E%@hj汎1ÀA.fN!0+J jFv0)  Ϡg04f~ +ˑð*%6;:H!vJ!ifcNW[`@(kf t0>ɉZ5P='}86vVWƠrܚCp|K]q}hreC12`=;I+&1v}SPtr0_`^q}"تV`}@ qY*c]Sri '%CMRl~ *ao[0t4vV* QD Atٮnjֳ[^uWF}%?F{Hqi|jVV2QI^)D`03= d+"1U =ܜ8K9t4}Hbag0<Z/z~䎅p;&$_!CseQ`7q+߅rb̾) Gt?J5Uzک0@NxFXe E^̈́Aekg-&Ry٨i BE6 4Lw0pYzC5%O@/d%&]1:FLt,0B io'G\j8%[~ cBX uU1N=S( 6Qb500tO} ެ܅Qg2t094ZCV1I*.|8zl/)70pqs_-a]T;%Qr^0ug[@=+XO6Y#1 Ub=@7Ѻ ׻NXvV\seBc!2FÍ`W5W:/}臶SSq` yf0ݡ5}( '% jb1Ku7ʐzg֧۸`4Mdj͹PP߰tX;#WwI6%@_y* &4Z{B ߷`OpP.FU7̽WXggcO=dE3 Wc~ltq04Q.]g$0a~.潍- ҿFo_hmh̿F\򓦠E:#WGfc Y0`4Yz f1v^I:y5 oGT`[uv-Bjٳo 8 c gJw_ q`_J_yJ cIq`|ۛY$FcMQB= [̃^ZɀtRR""WlJrYQ `Yߪqp 0BV AdmC 2@*Ew_@0~<k;ل.6fʓ\XQy{`pݛ 06 Ru%/T)СHZ LJwƠ!5 |(iϔB_S}`Y3VRO<ZiB0x;%>bVܫ6:-oxSqQ̋ce}m7z'fVH3n)T˘sՀr;cQŕfK:<Ý5N yڑ0ؔ.t)1L'}Kl VH|6HZ82>} {4 L [0:OzW :܉UrnZo~:*~Kv n"nwڝtj@F;OhߩFNy*LW=1?p$e6ET9m@{^> Z98犟`7 l>x{ +n}[bt0i-글{/-XBW,qi&ƾ<.| Cϥ`eMIz*[x}j{[x5n",{4EI ~0v5d- yS+<(c&V`Tz2q't3K/W>u7a 9=^/ɼRWW^'o GwS+T>B't_l &d:P FOŽ>2IkjGUr~ >nb aql? Rh˨cٻ䷇NGx]j kv 00hAד"YKo|a⎟K`=W F'oPAOISն%tOx _N=3y o\Nyfi/X+hHܸjeh*1 Q4W!֏ j׽Ûrzi^@|>zY~ 0M/R(N AW3h8N,}x5I0t#U%E~ #,2m0}| O^Y# A1Gbwj%GBKZj8F#.v^_[V{Htz7hs٠̓ 64|ciIMPz$1Vd4t[O= #I/ IXٓv5ۥ0oD>٤ 0̦U[oS1hWFK(W``SëFy#s92otPЅщS0|e֘hk2a`5蛏@,׫ЧQ`;w:)oR KOւnI0r`@1,<C7Ś1:Q }!’jrB?A,EmUwՅVx{<1 ոg0@&"SXA` m PW2X.aC_6q! FtHxcx٬q) UϞϽУ褻 =?͚ghq1oq;0/,|#0JpN۬)4|VF欉)aԻ,"4: "*oFaq_>\avzPk 8?8`ތ(?t;p m0~!tc/n.a,܉~0ೳ4Vc7$N(t$SZg 8>^w_TD ]k( uC.p3Pg0M8n\v w oνL[6! f,rR=8 ;>"kãxlA:/1݀A"W\mm֖7TI61qbstfk?*w/a.&c倫;i< P$ =yc&gaJr9_f4|4R =rR-8<̂ѽqV"osz,aGtX FvA{4W`T6"{4=I`@RU?~I b\ѹB`!>ɶ-Ez F֏3e5R7ӆNT#g{Ү SNʆF%.]T":̹5 sw`;Ln¿b w- KH`wrG{s,6<.j1éˉ1qլ,mV1Ag|6m -12 5UY&ֲ!O  (w6faǡ㼣:7h`1d٣@ ]T~s~<ހAO-t?Ǜ».0[+zYuaPO: =2Av/ҡ_[.N>?? q!m㪾+vة8B/Yz<7v~hʾ:>p{ŸSE=Ϻt7zC<1,pwnO% e!<1Ǡ]!t4vk >rF?a~pztC.e=K3Z*.K8؂;hx+/L.S'=cGd@w~/Yl@k< Z1~Sza$dz4/΄Lt =mS4 PY9IPq;[+ѿ}ڢͨ>hc_[3U1~T8ɰbeDVpX\De'թr0P{tIS T35!w'oYj yf̪ is1/ oDA y%GY_`!M'ԴcV%4}X7 =FU}L-Dvn+C5l>=m㲃 cyKFy@lcOn>J)ma-geTʉi!>ͧfglz0:cA0r&qD@OGޜ޶+F`Q 'dh3C[X.,@='2pCrh'e  شTG\'US贈1i'92 1zg*=b!ʒZx6!9'_|0;,hHN =[u`20WU~]]qw]ᄈ1m~}fR'1>^}ֳпdӊ3j]}˼?^)҆^Ț$(t8(^iusch/QouN@ejZ󻀱=!W 8}ZdžQk"0EeA}54Ԁ06[7aSZ!SeLsy4tn 6J}i/XXZTpzWp:Akn!D%Bwzp%/T7@G9[;#<}{`t9dC_²pCcZՆvWa+pWK׉bzCL;=%f9vzͯt}a3cM~"BUlԡ]X{O.*).@=-nǪw\j}XM1ƞNسB뫵mW| ͓[f=#͙_5@7G93:bjTq Əi2a[ً^KĚNoi;~F}Z#hG%̽VT;tEH c'EK28 dLSٚ %+$?J`! H9ɡuy*'?fYw3\>b[8O}\5l|8mX믱eo=DRf!HP0 {F CrS,zN0;B޽j`"syt/$-au{Qlwwl u~|Fsp{XsgB-Vc֮~Ajn ՏKrt5/A)$(9K5v >Y~;s?l`_"B{n>lX`9k\Tw5a5Y=),{ryXY:ųVia7.M+ akkN۰D3q-?aj1IQXie{o vZ7rfe =滛5VZW)&'\3svx+ Y xWx= soX[6Ƅ;,{bIck uuq"E;نHV!s 8jg #o˰E7`X.MG?w0jJøF-ppM~+XD0F'8U [0Y!8]:y k4ğ2#{ʴ+Xak]$IaE9_#cnoDF`n4X>a+Sp_X[N6xm6ԅnd}F'U8Jʲ/ )J,6d⩎VȳD-z唱#X8cz}+`X$ku QCSVc_,XIR~w@1sh/Y=wC{dIi^+|ׂcgc{t}R=Ht^lv=$Ot:q6:dUS_%0R'aAl86DT2q9YXOwc3]J=")00Bx̓d a&q9劍Tѫx3%ay)1`E =-#7rt$=Sv|R6.n {R9tm) aԕdd~#tS%\R:1԰U)<2aͳn K^&yf@H`Y%Tk.حRѓ |v9‘o x3;0xua]XI %* ]VG}8~I <䎗K.؅a@.o}FTރ q Ԗ;֓ YkX̓\؜} 0vE8|mƖذS^w `oJ\M=2_ hc-V"@\݁gzAÕW<`͔oYw; .fnD,aJD\+?}M_4Rn"M7({9@ 3jN_L77c)0V=P"cw,޻? kodڴp6n44 JAYܻBkay#]$`yyBq&jI O lyt%.j|b%$%ugӒw!W%bX P! S;ϱOˈ`@ γJz';@ i7a.Ol;.{ع9}6bJuTd(Ѻ{ ^{t ٺ3Ht͊R Y~E/̇u#?XЧH.OjQJ%%֑-Qܰn槨pa`j_]lLi}6_7H1ҏtfcyb+%ԏU>"b7aK%fm! ?FxEw{ hޱCq>( Pq}tl%2pO(ihz`"=* h@8j;8*<sKd=Q C%M7خ%"Lsx׊$-[* dՈnYj9=)x>hZey<8Ys(Þ<~ _vfuda[0+~a8I5K!(dSu3l=8W2GTM/_U"q2ɑqMǛ:N* /X$|ziC9ݡ2c8f\k.<)RM0ӄ#0EƾT/BamPXHp[?=c0{/tNbvNtWX{Vn=L}5Xea\mzlK C*óaÈ$ǝǁ=Oĥz\r`ɉzXՑR '<<ҥO?/HBۧT|N&rS( zT`a߸|2 8Kΰ}#Y9A1\E[b̥߾֋q acDu7Цa"+k{p U*qd-}\n#joaL* E:8^%lU~Xq j_,L`QX:8 +3J,+~L{n.MyJa0486tj@_/X<~m[⠬},?Ide'`jO j[eGhbDGz?zSԇ&Yh`e3ҺqSfE:jcK']ay:zX:O3/̰b`|YI@k9V:;jGOpZa!FL3?#sd{ S:azƛm+jsсVjpHp!YX%Zg)SA<Υٝ S__?j(U>}-?k V*YBf&`K(xYuO;G'zIXh 54&mſc [#POVQ9jfą;"2&agW-W$b6 ܻ > HϞ)-Xzos꩎}7aeYb%@Zg@=Hc Vu&S%?0؆5-r~ށ5A^~L%b_eg97]DMV%9&_Xzd 5=2ja} Vugvq{󎱰J>ĭ a<.tcjMKI3;2o,ZfuX|;9y:4Y7[WDCG=X0{Í3 Az蓟`?a`mF4 =`#Rh9mdk"e +Ʊbf4?6uL0lr$_T~)HE%8Zԡ c科7`5DaL7J>Sİ^Qyz˖\C:ثVs1SIws"=Pr2:,U>}d;?̬~ 晆.;P,ZZ¤V-FQ=I"KU^s6`g'aKd,U<Ф.#>bj̑aV4q|V E,=K85Mr6cg׬ ̥p<h9Cưtom, Xop~V/ Hٕe&–:A/Xj}`ͬw(bЩ2p{S1#C:Nd2!>z*6?;6f+kEAMc0:,JgsU‚⻏ QR%R1\l6DL'&͉#ѿ k%1 97X*pgTuml/b0r_5D# /'"m,BU3ƧMQx?#kTua 8%/ i|Xa(\X w6y7v[cU0A MXO(w.Ȋٺ ;RxQlcHo^Y٨8d9{-,5FںolmԳ-aCdnzJpnlI}-ү/=KGXh@wQ_"J<ȸ+ꩍ&:I[~=~,/}k36 'BiGaw$͵ffu&9^8m_i%B)ҺЫm'}}uwf _P\e3MmG"{yG*ұuSb{jSʝbϾw<>`K&>]hxVwO ZQ:f6#@7Y P\A<ӄ&rwoGCMZۋ8JXBPutKJ* QW>V*(X:ֽ4Je}mؖ#ޚ~쇕7Gr9 Oa>̨ۇKcL0y|}1eOu{ja\O`3SvB= )#܆4ؕ CޯfW4F #Rap 9ƞ s?h ;ԏߥ/P0!JtnZO3U|"SFZXh3J)ȖH91oVstփ/^Ld6F `1W-<&Z|;btG%جm#CJFFP͡|#ôaSHܵ2W\_*m$c.ڰkA* :1gӭga8aXarۜԄuFl4F@QH^7鄓Z>}PRsXҋit-$~(1y9X0=/% w>yPOL6a]5`!*DTCkspaIhɦNJ>63Ȇ 0!ē}pt[2՚!Xѵ)o6md%?씤,0XaD⣴2 5%}HߔJ6mNKtaJf,ɌWʷUªHwl3S`D a :̬'#l:dQjg7ʧ~O\E#]bƒtA9Zt/I}PXhq=&7?=քgv/=8;&$Ӿg "H^{r z% x`6gv;Bd_˩N0:a!)22W=jBh8zKVop*2zc5W~Fm_o}h"֎}h;o2 j؉\聆(Tl|8T^ү`/ 43hGOa{'563S/5Im\|`ZIyM%lݴ0@ODJ7#vV,[Ulw)/U k"E4_u̯] cz?y:M_;a' :=?X6k`aɀ+i{rH?F1XLW`Ǯ%2سM fǾngS^|֏]Ûw9piDSP)иO6bVU(߅@{atH:lbv赗Y]..a Rn ¯-M`'&)tuϋl)*KZbC2y2oM0|qw&9ݾzGu(6)o-ֽ̃ ǡi/Ѳy&(},Ý:y( jE5r$USkIql4*4~Ak2~Ĝ/u?+:OMȨ>jV0MzA^PQFga PlZTyR{^R܀mOf2SR\g:#et NRhWXEP6Vbw4 _J>`dU1|W{]+FV/g@\\^t6v9&zq [g2,nBCVK0)m.M<3 uXގlY*ތcܚNuAZsy=I0u|,d¦nԀz<;kib?W=~vz]͌«a,".=W/ے/xo [RclÌSOW!Ȳ.|+a' oB_b-r BH{q`i1Ԣ6?|$Qфz).7}7|fy(rLB"^flu#`T۵ *` XR?ڂ6^Kjsl>#6Hd$GY&~u~_a}WU?*&Rj"x7u۴N@#n3// LU[sB!6zǮQY'! u*sѶn ;/cx閸~yӵ+P!51S!U;DgEa^s  +Ml~ ?]S#+O3dau1>ld]0f#wyYHGGʮy `s'F<6ۤk2̑Rf3X{^]`¥/%84SF8'ܿ"?gmjn:Z&2Y{CA%3cAVO9ŕɞ>SS~@5 gB1ju-JvO/GNlNUcfr|ADH&h@3R|Oateb)W4~Dڵ]ל-S^hm{ЏIxg0v ֺ ݙsZk0fhr{ #7]ـ~QX2; ]F7^"͝DP_ݲ5˰&C9 ϢI/J  ?z碾×jԊe8wyzGʈcg m.XWvRZWNN}Pv<idgyV2,xˏbOԭ7SƋ0[yL6~x慲oycX.7nMaHs9ue#ʆ +0u(BkN`5ʝTJBXy ;X~IL$zYOa 5JdXȚ]gE)0{+J( +Jωbhhdid5L&(YɢxAVY8y}jI/M:NOTW!?U$ Ang^-@{>ʲ=x#ƭWȸ[߹HzXL,Ȋ羽) iHH@qS퐭 #k&qHanh7 1 2`՜-0K4kA ]`_\g$X5Y)m/fHD6K䦥`캔쎵&zcutG1}HE%XsF'_1J5ʱ3M"MjK6ؓ fiZM|vdkaN1&شK9FhM@i[Y=Z*+B2 +u-5~3aֻ& <'D@2,ie~3(u9LKb`l7ҕ!.N.3onH Qt$o,B&H>iyRm~t'u|t[Q0άl7AD7["f}:3% @[& F6O*\G6ClPSS/]D&SjmaջGha"YU(c8K؁lF(Fа7l`yl-5pb3?a.~*xCyKQ &ɺUyvPo%É{QyE0r}b$[>_GR4xG(3(hB1ySf*ņz֪,A;g`NY>O\f?!@>L8-ޅ2:]\ENn⫒ѢC O9@O bg9,.X{`Y!BlV a +=$'ޘu~[3=f/'VHljVk}dP,E#aiYx ҺB៉͔g`*ezY@; 2J_N=N) }b@ӥ2j>}c;?A3hy¸Y,dRGa cdhX9n”,INͷK+e< ݁V/hz?Řf}l?T]snrz=Nj*f LFÊ7W&L6-Dl=\aymlODoB ϸzdr3 Ww\i9sIU_oLWwTtWkmt):?~}J -px1RD<5]6-nRJ֍T1#g|GAT~1.ף0Lx"*{A(BdGI` 6`qN $e-]9-Ioԛŕqk<鴚)',Hϣ5e58H +'dajZ uXJqA`E-H!!XHpv-Rƍf[@hսia -_:6tW ȃKo`8Y.@ϺO$Y VXºjz7K|w]DOȔ>I&d5usBrǾڢy|HfB`xɉлyg]eȈ:O2 {] _"[`顸{wX?4΀e w;"HF?⹃Մfڳ(K; ˰S=<ʰ}ju`M"ţqSbqZhRyY3 cug?#E$!ȀWn7/TǪ~EMS&[7t,Eߛ?Z#I'%& :cPJDƆJA`҇#=l6*gT ,b̼lxV!fr݂17ayCVk}#kecٸڅ-lsL0>=,TT|u8 t+džsT)Ʉ{י<b} 7&Tә.XţY-4r`*eoU؞aʻ?nYG-eD"faK0{}#!`۸ {&)p /ě[":_"I_ &u#w,bv,ӕ8W Wwx{4v]AU(Z !2(8f[cmjr%{s* &g_JT¸*S7m=ߺI28`Z&З ߂goRBV9ME>Z"?zxz)cš-OsN Bol`w?'ra]t!OTuAA M\t=,V1r`s$3 N`^z#xִVjK99B7_ܟ_Ɏ6A#^|Pjxjcݒ JhW@[OǺPGQnU*Rui"TG4>rO#\r( ]/J4`Rj:?ԅ%,{Qt`?广^ST䕒[s`?9ZߐM QD=} ZlN}@bse*0GpQ&U8F39vG)]Ld,j`b6 aA7xT´B] #SMdL2#}6XP+݇gݒZw@iǟm@6 dm?ji&;AX WPNG;%[8RnP Bvu>:Id'ǵT,d%Sl,ReЎL+K/n -&.r>.v|0&lrbF5Xqauᅳ0JwssR.RAM({k9PӢWRv~olSyL D71ܷ`X(s*'|= -uȊi2;,Ϟ=#t{Uǡ&A;rM@'|2{Iz#?"Dе<TD#}q P tZ"n9t,sQxHeד_޻hJI1,-vU>;aL2yj^u5 |G3@qЗ `J#w#5 `rR ? j alҸ*>tݖ̃-<fRHkE,ZJa>c\HERT>ڬV|m9|ue$b`Pq 9znY]g+B߼ZCgi\= &=fI݄4,GXqkr:]R q\C[=ru$Ϟr1ԗ邂ï0#psY4-@ypKvG*gU_d XNteuc߅cxO`jԜ'/|=y\ڈbz:b@$j8SAt}oL<0NEޟ=i<H{:)Lj]-}}"Ȓ'Av%`>%O|RJ=̭>5GLIХ߼OKYyW`Se!%3Ѳ*А{I0!_&KSDwr bI۶T`&#g>g@6UZd / ma4߾Fe8>T=˪=QF|2+d͐x`1S=qTgn0qAkmfveqy31rAԞ;b "Xt$  0A8_|[=bg*tZ-{-agUOܬWWЦ^z~$Rv^.B>zX* >A9OMیYpL0'v92I ־_SE[GZW Vq ;7ݡ &m{dœEy$*= u?oU +-y~٧|T{(P9^B%I-@kVh 4^ZV{*_a;āv #kbWa1,&&>H۲ emu5`SZ OTAt'ԊŸDZmXdQ@y+MDǔ:."|~ T1UzY!ګKFVr`M[B-δ]:>`0h[^}hAY) <7ST d1R,iX$vk dS#c&(N4q3 7S uxkO'U K0ts _& ;yaբ)_3 .Ο-Sб+XH EfqFW !JHȊu-@8"ayf`*socW3T>@e3hd0}d &=?6- ZeT:VQcN$'M0z\c{Ŵ-A[mg)5s iݤx &ׅڤ{3jp]fcBPnճ`F?.E)kƧ[ӿgC{AdnY7!l*> BN0g1S +sL4a#N}?F 1d*SZ3=]l80YI=* SŜ@&Lf.`Rm[Ȫ% ?YoIPYwynhBRϹLE-l6V-hf}& ԭoa~:4̈́Sy##/ӃV%6hM%tf4p%C^櫧WCNR-X4^8ͧ|-ܐŽH?Wk q~JFX~jYQ-Iȅ-d MLAgeu( Rpߛ,t<5S]4_Ŕd9`gK __Aj$Aka򙬻[ j;}P;Bfİtf&) iu+nDXs^i)cc<*,'f;LGU]>yw/v)}+|e$Dlܴ{t}Zz "ÂZ@M,,(x7r0|3JkCYSB"4ّيfvt" '8⬽&O qQh:~r9n]ꍂN"[t#j{ 8+n QRA\tJ"R4Hw4H4\1M00}|=s{o޻DNH<5;߿øyrG\*ٷmDy:cw{c_~JξmJTs{4À:{k9KSW f̉@ƞm;?sk<"]} 9KDڬu;g2cz*/wB+Zas.-PMb,BkrvևD8S,43Io|VVzJ;K5˅oBb|!$pW/NvIvOJwL9UR&'?޿xoA2C[%!W0̉q>\bs0o]\o//VBFW`}=>_N 9~5nN %pEs.%WcP>̽ۗN{$24x<1$v_c|-1nFǯΕd|!1ӵ;Bnݝ9 mS/:q^R\¿D}ǜ#_mt[4 쟐RA=aro%!q';7]jvIĺďtֹplʣ+:V]u<㜳nqW{yg3M %|M?f=&QMDM'Şuk^wOo?=&]J| } 8dUֹtրgʭiAuϝx-j36[̜"ifA;/:_(^|wAeůBJ]nͽ&JԊ'+zoJۏm#TҧVNG +~Ilǯphσ%z+~e0bNr/D?sܓOR$!Ŷ4=n\ +X؉lNR7EgzΪn]y^iX;yp#K~e#m\j}6΍3>M{եCNa[8юeJKGdzi]u6n i>@LҸjk{j. j4NG`w~ HOH<$~?m/%wc՝הkeN1Egkso'__9ޗ+cV[3b_FrnABpdr#K;ygjyA -\]>cmFUMo줅M/VMVzIkH²(Q?+EN>{:Q<_:@x ܡ\<4Ĵ+ks{˥?VLXL*ʦ,ܫ?O;>'řݨwwN~BDc^UMZ}dΥ#dyϹls:gn)PsSխu!>ɍ d`n6+ڭ + >S;us̤yߝ\<wLsNݶzvº͌O~ɧ0y*OĦ%oU]'z{Tw.}3%۸啰6|vAB_~-mk(w'L|Urk 7d;~ݩճ}\[*WJΝgIQ,SO{v\r_NK|(!0Ruңr1 o*!(S. r 9]*D=W Jx|~앲?Uٰ΃o-NωՅ69/*\v?k|fK'fM4Z^+4lw29GתSN/o6y6/SKH-,yG՝]sfЫ#݈<J/$Vf3/ -4ϰtw=CqKw'=${0JO?3 YsR (VOg7]nelԿڳQccbuϖF˘gVF?99ޗ6w D"vfX|m$,զ1_%_aZ>5~woPms7cop>fM: wwS9sAӚٟJ䟽g$O~)Q_ݲ籏H{?jokR<{a?8Wm {2 ^?oG$vajVMwbrֆi%f.m74pTdAj?9~ gF쎬H`4 ޾2qfp~愔zw@_JĻ#~ )S68skâ"Ozntf~66"C\;N˜E/=XH8|T9mƽ%&:Gɋߊjһ\UMT~i*'RgdEj#i3hsCWd/-}hSٛrƦY쬯[-x҉U.˝KҴ~\?Vr$宅аuU%iU1]y͞HhҾ/dRj%.`[C$/.41Ϗr;o uWfk^ȍ>uD./4)"C +~>NKtt":u*^ ֵUzަ坈YZQ"*Nz$d}`k۩q4KOLc¿l}F㝭J>}}}3Jd¼ȭZw O)׾y$|p|Ûւ?tZB7k9TGc{[-/(wf*,.ߩ_8ˣ$<1h՗U_B:PDlIu~s6/8)έ} :'n,msOܾfcB]ivJ 9N_?2ꗙ?;+٣< < |׫'g +jz芑SȲ:):'lj8hYI<7׸,% VVnu,!kY lS583cԴCJ{;ߙ7<g)֑:L2Un%\wμ~]kwx"7z.% 9WmPr>yש{ek߁(+WiKw{O.~~ erJ~k|~vv=ǥCUx6FhsnouJ[/o렶˵>{WbOv|ftEߎe"q2u(T_ҧ/ENV|,\4/ep\e5\˸P/g 0yP˦"_SZ+9wȍg/Z_\BIrGT l۵qn}%fV*wUKeU>&㪷m* *>y:wmrbG.v.DγMXd֎n9iE˕(5\/ݶ6ZYb^Y^]r7f}!sڮ))sA.1l\rMr!䁳j̈$&cɷpG:ǟ>O鄷VesNTG=<,-әrQPsdO%Nl3ny˹nq/˱p֢ǧ!Es{9TTYu8$VB ]Np ߬ unLp'ɯ-'ȋ}Vk.I2s69CyT9%Zaı*ȣry $,*׆ML|>Pdк%g}?m(ӗ?ivtE[K%IOD( d}{s6'ƻ@t>ۉJ%mSߋ7VcL*cN3M8vߴTh^eoHBWÒEzO?$wzIu~_6ΰ N|]_}Ho%JFn%wg~lI'',{{^ ZJBM=f+&[F-ɑ_3TDAN}kʭmzR}h^6%y4qן=o\ոjj뿔=Zg+5q}C?fyqK9`O8a?7ܜS~>.fYyKB9s&o_?o~=!K0*X+dz?%vno',Et?j5o6WjuΞpԽ>;~<}Frک>kf97L8lHl\,ܠ\N'<^Bgִs;ZC'dti:6_mT7b+KWn_ei缬w'pnceH ̷НZ+:|}&IֿGڋ2&5H\}R^<{O[ر#I̲IU!^;Ɖ/v͟;_$ <mEω-Oˉ~e+y٠7zEʓI[v@"g˖K{T|:AU%rߕ.4)i$z ~"Y>irbly9}I=r8G财#?R-)-έmn2XZ{> ;IѨ.AP{͟w;۳o\Z?\}Ԑ# % !Y'&H; H~D='ʋc9z7oa?YjB9γ/Kd 9#Tk?Ws_8yUv'tU_>ZrʹOJeiKF5 u>w^)K6*>G~kGM/=w9_~$qwGVC"t+v%N*Q+{.r= T2ec%:O殙$F/*]n}̻ZYFu&|_%C6b˞ˍ=Q"f-k"ܚx =܍L_Ikd䗾#Lmdc k5hGeLC%M-=γARrk܌_z%QyLH"/ϼDn}pQr7pdsw8!_b埲cX+:'<-.]Ώ;;G.l62{g"8V[.ci:TPعuXJEL Q=jK!w>,2YO'ʝ/v 틬Itrӛ+K`)rϐ;){Arf.7$_ ]9JXC7.& Y>k۹|[-8'V~k녔das ^eww$W{m/%DI7yNkO̢ _4ǥl^O'EuUVoSrmO#GYr!WWM.c#q;A_fMܭ-LYVnwJbr[򗟜>9Vgu#٬/>+\s};WUUVd6R].#7Gd,w]"_ͬ.ڬ]6I];ÏWdB|T5Z7}%7v `s3[y-b >NuYuعhc~%F݆$Xc%8i"s}ܓۇG>Xhצ[a_I{['w4Mѯx{=Q^^_N]~ZŇ7} RM8OV;SW"T4ڪL=U c剧$.>.QgXm|0 ߥJL>'v\Q0Gβ|٠_>%w7qhs)ČIqŞ-UZK4or#kպ{ɍ?}o>V^LNn=S~q} I<;HH~˧(w&|ږ$fk_u!AMs.e$^]γ-x> YU9r;3ϙ[whF~CmKhGV.Oc`x咎y$&E |$G*q..ȷjer)KӀQGfOjX|<_s݃_T΍YҲܘ۩?bџSm'6Opn ~(Gy֋,{V 9`[6_w]BVDb I8jk|$é^zJϿ#]4]_lmr7]H|^/xg|!㳞Txom!e\s]$ OWk_NXND_1X^BzbyZ>^&?siNIyC>_uObrV)Djdz;$>r_HlHFoOJx!a]g̓Ćޟ1ĥ^qf[o'>{7IuZܢrxKΦv,Y{yQ2ar!$ުZ#`-'!kĶw~>caZZG=}.ynw%3gL/E/K@e/7=/]M9d9?ި*˃_UMkݤf;UɳdƶZ(7Dt=)uF TEB[Ir/?UN`4Sn兮y?*T<+]ƅ^+>O,X:MS<_i}UĈWr)>q Pnl_%ռW%U2 v{s56MU:]5IOyxx=xJh詯/ߑi놵9yI]}A[y{o2,[g3Ps Z>]Gbu)'zﴺh@뷱ϵ$&݊ UWo# mrynK|#Ϫ5;Q{i$<[KB+{ ]l0Ayg$?6e)=7q"i05 rI|$>XݫxMsك}9s+['Q3woiῬp+ߞWD37d%I|C9r $زԋri/CmSYLvY6f׹voI~~tˬ$\js9dO޿-?^98l=D k%!DOJƕ#%t W{o~KvWM6.b%aد W-7jr̬[ ǧG } w+Y{~4͜=0!<~a`$ӛ>{}{|uGs~h>ޱ>R<Ԓ˙VZ6` R}}O.d(z%lŶm}slϫ;=no/;ϟ~>vFBr]}NvJGC<5Aʒ%ߟ+BsnHΤݓ_MJv\mYz:L8b]?_GovjZ`ڋiKm;%~'3>.ݩ'*s#XjZ9~Ar3oqM_Joc*mrIz/ޒ[o7SgeH'oϔJ˰œ"J״<> sF!S }ֹvraWsf[O.I~6ʉ:]':;(}m$=yx3`'U~CsUBwo>}=4˫s=UډǓyV)Ii50ÈPL6%/R(S'YwN\V%͉~1%_IHm hr?SOIF[e>ݛ6WYWufO 'n}K~Z⇦<=vvsy0jӬc$s[tL5m\cJ36-ή,%j%맵U=u3TJEƭaΉ!}ui$Q !UWy^XB_I6C_7V'"]>TK%Kd;?{Dߥ 34nҀ%fByy)-b[yŶ˓O7N=iT3IG}RZ\Kb|sY.h-v|D~|vuG f,@ϭۼRX2Ej}l$?kUS.ץCh'=y0bWlqUn~fv"/&ZS:n |NJ%y淗tX<6E-qaaGɈw[;{oeLH\:)~\Tg 99oZqѓsqbC?\amA6$\_{VݻFI-&I4v^tV[ qSY:n\lkwgG%&ӈ5E_)эxDw(=1}xu"B)g'<}Y[qNĬcx&ԑ-f~srRK}+[?('jotB3n E%w\;lrcK_&<[re~Qg/%jT(U>;}OaļM%qϸFտm5oNTC>!~/uVuZ x}f:S~9vIr{'$\ T~SvF&E~rڪkB7mӖɵ%2^) ޶wOeC|3{Wk$7]݂úw}Oq8LKȒN> w΃_yωXϪK\cEO-!W6wJl;:6hMɝ+OWKwmWQB>jidx^^}Q݆%e⣍{y[)γ&V[4?С=Fjs"yU"7kϿ;O9<߃lIr!E^-b O&s?e*r{LTw/"_tq{fΓo^NK\i)v͢Ƀw.j>ٹ:(uIx)GZ^eԬܬ_mǙIg_P,jsd`it_#W%K"Y/%KV;edI{I"?*.ah?7Ӓ[>NON49sh^Ȏ?x{EON#{ٔ{rjq9: ߪ\gDžN/'vǤa%#yaIIvh;ΤCvKLsE*gYu^"zN94uA~w fz?JuG_uLy"H.Y'1xb?;:/E^߼θ?~}\QV??QTv="~+g8QV52Bmvߥw<3َ9%~^A -xdž5Y>>]ͨ__hfmm<}Eun678巭OvJ^|?ܱ/iןrfM]t^߰wUF,,[9#ϣ3g=h(w>2k7:W|m~KD~[gL޼AvW4R]oq7<0o~\ [jI`{w,ߋ!Y' >jQtS$q]D :Fμ|˧f~3߭FsM8KI"3zed 7Ak?6{>膝n!o+h@Z;  ^YS+Jo\e{_] ǒdѭ|{oݡnCWJ gte<^C?䄿yoW-eybؿ#N#W=}+k;~q>Ǭ\,53^0v==kqޯ1V+ykB>>@3|{\#/CG`᫗˱W(^çMf<9n5ȃ6R4V~OA1^;Inj~#zBϠ|6<5#N9Fyk~aM܇|Nr+U׌ys?vz#}`f=ׁ~AgW \V8|Wb$x~!?Ɖ30;ƅ]9i:`1_GX>,R+6kر׏?M/{ }5~r9 E[3nR8GCw1އ?/3_m6M6Љq7 -c;B|bo}eO}}{ >b'F^m5; ݠ?ya^ y?0^Sd!3Oރ>W!؈ eXŃf^>J~#Ƶ~\bx~3N!C_;"_?gM\H~@.?8F^>wG+CKOW3LۡWa`]yX o_p1t5r a~|_&=p>\K{G5CC3ܷIK~z!OjqY>_`w?G }yv\5 HRVg> ^!]ǩ#6߬Co#;_ {}xKT}6z^8=<y7~=`:,W E{zȻgq2?%c75wOxoxerF>d^G(:k]s:އ<'[QV v{u:?g_`)f~vi|@~oīQgKOyz1zc_^yOUvE?x}At~<g\{q<ü?A,~{OŎ2)ʮ 6mƃ=qDnr{7<|]7<ۥp=~w B'_?1~Ɓ+`qsBNbnЕy 6|oBG)u٦..P;t՟|p= Ѓ$3E_O>}.rL?iM7 |鼘=  W_碷c|[N7q6< *:~nx?k[01:^$Uǃ?Qe젪g[y} 8<rA^Uׯ#8zV?x Wz ?J+U_ׁ[=>O|5a p#?|8#~nܑn)|#q'B7lqVA-{W ~Xpop3RR ;LAnG جk~F/t彌W;hW}>RrhvㄫCЇuzTߵ=JomRCx.x=ޑ&oa\ع*ojRF_<67a^+SeAwYYvU74r\7IA C|T8&:?{U|f/Oi"'Gh_xϢ^_]~o'Nx7a;z@? 'ԧ׼cwe8G/~:'!w_*@?)rhB'x7gN߫\^Z _Nuüu5{O!/2OzUwm}:.fq.7߭ʎ~H;yoU6S_S2;C>0o>樸Voҧ; O<#yM\Ά^A_J'u]ޏ~$q6qV>42zH;/[aoWQ_Qȟ2~䙾-r< }oUwD/K?WCGծ2;g{N!sTGnfA_ V{ooz(~`N[Fp)Cϓ&i{ME밌^0ݟR}S6a :z65oq[p$?p?O#,1uF}Fx?vO%9FN)=o<=>\GuQgR8V8;h] ݰ)gۙ8<˟}+nyr?o:B_oO>roz?f8Rw{~yk9[_-nPw)!y?'?>}[T߬=NSϼ&pl><[k~'_} zC{|莽| oA ]B~{c/NxI_4z+A^1/"/T }#Tx:߉@+-pq#ӗٸ@[0򁼃cmCM;CGS]ǯ8G[@zeJ2qVo7:>a/z țt'%MykԾ:?KA_,W쌓pr#/䑸&mybA0 $:ty ~\#o!o~zq9+T8܉!Gz?#<h/|Yak Nn#B=W_G^ / &.Ѹ@PP{v܌y>#H_v#uy[3ӗqWbcA' }nz xIo~>HznQy^oƼ+C8Y ;~< ȍgYG#'~>cg_\k]GupxƮGV눐gƥ1b?/Z';} ~"'ؿ3C?s?8GiFX\]LvWX~Kc_" DܥkWθ}gq/ą[ݏn U {Hk扜bWg!%oֱ =S4 }<!=r:d= ݟ ?5klns*_zӇگό]9O~Rz*,rNʷ:7uigt_*|u]q/>wcW< ucwtV)/ C8~Zg]?WAſUE@s;r}!MCgh{? =PUg9 2p"L Kzq;aGޠ-] !~oTqeW`f!u5yǻrK'H#bχOp ??|a^O+밼qL?4vȝcċT_nE;tw˩?^Fvx.7;}ЙOl?kGB} |v_t"G> [G_c b~fO Pwط@_J%/ }ڡ7㚧wQ'9GB/c߰Pz~\W!^?ou/pZ?hDž| Ӕd>_O?k$Y' =[cpWr:DWf/y3B@3>\1G|2 rރ~,3\7zv~ܰ{~|o*NÞy3 9"~dSl0tNx?=\o`\ȓ?nd+]_=v?%_?]޼??cz>?Om5mrqx$Z݊7(f[{s`~<Ss˞cNm1ŽvPGA/y2n=<oپO\K}'ǎ\490O]!|qbNA*6G?y7;Fw/ϣGqE<~Cgɗ`gr~e?-LS+oɥޏOӇL\ }*|۠z'ϡg_&aLJW8N__3p57/ /mfK]Ϛ|qV9gG?4֮Wq;|ij>e]蕧}g zc |_<g;qě6?`.`?_^JoSBW1~T#A`/ml~#?> G?/~WӟnE/"U0^pr8G7d|_u"?E \iU1uI5GQu7xqTvqY>sȧ/M/O;IVC{=c_%>Ǐ5qwȉƫon21]SʞB?/VW>ۿ-[a|!O~7zhm+%On LʎQ=ouݒ֭ԺI5te<Ձkվʉ]@mǪD<WJ+;zI|:Sr՟k?s,v|oWV8<"oa+ } #Eവ,;n`ΑWr'.X^;]Gn@/ !%t~]7rv v9B;qu=Ck<}>+'_J>obO7@9a5~/O+~ _e~Eᇩ I"}ӸCxEմ>!~7|D~?I~>~ȟ߅<:U8Um E.mVOg-]3y}U[s]nڼO%:Uob^؅}f\ȑS蹎StkƁ_ܠp>rfFtquv839cp q \omC_ÏDc{7/W?Cy`Cg{ 6+\8KGϸ5:/F?U^?'V8E_'x}CT|LQ~S{x?f*NOk*v|itVvOQy![WIkG~/Syhp$z81K[lyƍ}{T>z(xSm񙱷J?_c _m9*`:4 2.@ N̏8sAvKw@??vKl?'s֏BI:o*`刾eB>=sG}Xվ<ț }-5D=O b_sy3^g=șkT=ygz ԉt?$"o(?L{}fFly/tz?C"O*}z=Oui;65~yyt^g+'lRb<_ g2z~~<?6ϧK[P ';[Y Kɳ\>Ie]Qek(<#脊9wg^>uwth? n!<8s\G ;>)Afioy5# :7=G^TQvĻycM>࿼U^$9ϱOco=5yE~m}v wԳ,6!>c?x8W{oޯ2KTnC65gO^!}໔>okm|Gm[ȓ[LR8[[􌼫>vͼbgo6uSb"^ð#VooRq[~>ušn/OsC><{>C- ag~<,þz=g!F^w]?no4w^S}jP*Z{u_o[W<Z샎#n3Pw`|wSt!uiOcpݮ[4xY(e>Cz'{s'}X<~Dzk⛥ʿ ;?Ʈ58RE}Z/~F7"/\O~z}>q*t~/w#" }3E"߼|^O^9T>s+n[u}@2%Q$_ .yv#/B׀&y~H!_H2`OK_yFkEρO?%!=Tt ~Y~z/~n9o> }CB?bGԾ6n'[3v9e^~gx[_Zy?7/|=ȃGWkv61,*yf}v73_at\n>NzЇJO-_ì߱7O7;?8}G{CoRGz/tF.{^F?0G*Z533~?ymƁ?z칽?/t u!|u{?vHLc3xO^o ݑ_X[Ʊ'U{#c ;éo{:{á68 b|+9Gu{ޯʞwc*> RfmNu^C_@nB\G?wK3 f]W1x>NO&B}j+ue섊+!.#_ܢt\ʎ7}J#O1>;F۷i ;ƃA_я}^Q8Η}C fffco v?DGpT2~V-uZygPu>Pt?{~s/e?g#@Vrɸ ^?Xi;]_@ޖ*?;F]o!hdoWO>qVAw<6_𭭫]|O't_jy7Z;~`䙑o=\O]~2_<`5[f\!GvE&̺cn`ǐ ~oכ{>kgڏ2\ĝ6e䏾+S>bߡx/tWZ.mP5c  G~97 zϋ{ $dBK9ǸV*\Z祰qCG_j|c'y{|>>}!R+=K7:;|.z]xG|A<پc鋶!O/wkoZ_ װ߹AI5i-dUuG7[9,`%?_?7\ץ󇎺?=*}<\q} p]?*/> Qp5~]jWt<\~'?`JY]Zyワj?U}ڏ<=/D:~HYשVq(z';ACQ93W+ fp}bgc6䧱syiƁ_3xD5re~?]oW"wNvLޮHKAu=9Ot<'l+:k~"o>S~8ߑoO&Yq=O~[ tn/PgUQ#O^F>]kٿ|XĎ^#C3G ],ޣ҇s2Йyh|&o8Ց/7:oK>gtXu_ǙwjyH t }rj?d0~7'i/ȃO:Ocu?s7y)_%I3mTcR260n  @T#sxw_c]G=0८6>"ĭ<G}Σ~f\yaotG?.'gUgNSslCA<5Sɥ{ o۰ScZ^pc?]"玂WہTE rt!vCj;6OFiow_/_l~C=vNWpHYW~;T~C#X)1Fmwul=`b_誗~ob]Ez5}gG'QE]OMcT|g&|~ǓW}4Q/q͵Nd19AϝGMwO%țϲ8 ;A/pK>VI.-w=_~O^n >A=vXq Tߕ9/T >_]l~:Zn!g=ȍ#ݦ<6}c0jJ*>y/#7y|)}:~:N^|o#>`vAM?ez*W `Ӑ6u}GO1N<OJZGi6 ]SMmV;];< c}U@Jpne^gN:aA6r%Eȱ'Q?grk5r?+cK/y]3E?}*u:]wo1>߇}zaϱT'ck@p';ʼ|~~d}職'Bxv;\!{_'fw~V##rE:nyNڏ;}0nR1m=97y`w5: ^>y@ݷ ;)?@>둖>Oެ+7vG}BQ}R/.U&3Y#_Zm߇uX-3k}0<5{ȻOgaP |#:OQĩ;|D8z?]]@ȯ:[r?=RՎc/O}9='ؾW}σ^ZF?y\ ?}e\VٗFׁ OW~.AsYN[ANu.p]Wj}\/BueL~{ufgej;dyf}F>?qy"ƏmS}>}Cj\k;d8|Q߳?ot7 GE+3|C9ЋY|'})oЋ~Xz?>/௵`/z*~DC~[oЙ~c.?@yfIHFw?m8/?{_ǰ+~ף_'/8 tT\_K=j?3ty=סu뙉Ol}81?>3CCw'1z7M3s񐯢/F.ݷ[U|-_x>Dzj/e'd2U{S ]/F+d\ |`'s3P:unvG8s\10__hp Hƃ~DЁyx_-&~W9JROS~}%{/s}AOa{m@菄y3,v\XߛsY9gu?0ۗ۵m_(.#!O]Bz]'$#'e @>BD! 䛉*99'j},;_I󰟳Oq^d`^_ϡq4t/c~sY/@>&1,¾;U܂??gRu*5O3.TRg>{Gh>} !=q~2y u_+N*H{k#m{>w@ w\vޱ=μt7H;`?}̏sp/9~ngM?7BϸuUuy|o]Nuk܇\s`ES~;uuw@^|AO[@O~_!gzۗԯzH#_y`t͗0%.#jW7~~zo%<7f}\?T<}]>y#U\8~BbUeot;e }[|Nb{ ?lЌ惰&$z~4U n,}>%iʏ\𖊳A)Ag{V91~z3#j =`#uI蓭;ߨ %r@Ӯ_c*g?|^3rAN^ a?xϣ9ZqgdrC9"? ް~?jƣ9&?vJ#:5Coal<=}N0UDvOO oGvu .<[~#ơg1ƪož_y/=G;APaC/Sy#9<{U}'v<-_/!^zO5}c#c }+u=7S~ /+vWܰ>;4I]/->ѫI WϥԏyzE9r]Kp;j}togſpn *ooojP^T]xvu#-8Sܮ'tf,/>_/>_7~Yov+Dx^7ϵFoc ?#5=/:Qw}%;]^+f@nw~N%{K`gΫr^)!fn_".Ǐj=_g'<m4<ڮnXz!FN=țݗܯ/߼A WI?|R zC\>yh9v ߝA7k-=d_쓶UkP0ca? nI}P[Bg:1C/_!?ykG nTFC?w+7q!u }ހ LcJ*τ_gٿAg:Fy3ߡO?k<'w!ە&n0up΍O}Rȉ^ _'[+ywo'pȱ^ %!bm*o]DoCW,Ş?I8מku%s ?꿴ylSuYN<>kוS$}5ѐ#{fUx]|og=b덜u:}^?{)~TO13v$KW\-~& E7OQ϶}g~7KK!+U|} U)]Zϲ~Wa#^*:"v>uN?՞ec"v #w|7~Aƥ/gG?G:㰣 ~ C>c߈~>eK{'xw>: }!v]kkk]\gЃt_-$Ǟcg^0.qy>,o듬K7jw}=QkeQ7(?}"F~Ou7Rqӳ?:NPqv7Q#@>Bs8Ϊy\埈LNcO3/Wd\ť<S6I n59+h |vƾxo ܢ9a+8/+[/~)dcȷ;r]cc~b=ϵ~:_=cپ'Ud^ڢ:#Qu<y{?I/#Iھg =Gi%6ڇ_諊uyyl;ۼڏZgA\ks_-qWu%ve}8%|5aj?;ރ>|()QMpvu}A[w#ѓ5^^~f^џWc#dn/}Ľ]>?cgq̾6ߣx\`Nd ÎXM^v=`v|n3X}U=ꍟ4co:ovC!8_a[4zB' }^:튃{_aO:_?=ԗ? z@^9^RsJ:K܏7C ?Ď6tƮ#1_݇@~i}*L~S6? }~;OUWY'&d?CG;`~ܫ$ȋwsz#O'gF\`|kObp >|5y7 Vƨ|q |DNYA^z~eK}NE"|<_(?p;t:q/rt=懟>f߫Rl]gǂouL?.qz_u #gU?h1z1<_Pgp%q~ȁS>: @T_ݵzhvz !'>ۼ/^aO8;?<{| ~R `gf>7Xou8$tR=Qq}8[S- RF9o}}m=v_gUv=b'7 >~`/:~S'f!zp#^hp|%og?\jy>*7>=?1?D^7v?za+zқ "'̛㲸 ΍~̼'G7K,owKяF PA᫉٬~7ﶿX׍1E-=G!3l}?u{΋s]]"7ȓOQ~ź bN-0O7OT_ZPqL1^ݗM;a< h}>˲+wGчH n}:*u۹vSy> %"^uѶTG3$$[~2hz7Kp'~aWSgƏ@n3z_7Y/?~Տ|3~yz]OaO{N;T>Nqڼ5Zs'u00S`;'Ժ>k%m'f]!U&_ E=Ǡm_|g >zAW-t_ x?Aπ#cz=u_s7=䷰G‹9z7b1Ca'ucoSЁπG<{F7rG d.ޏ> z<1#;J+`/Ϩs"ty'.~{ݚd)zz A7ƍܑ.Зh9x|qrNe7-Tq vU?G_QwU4[2r"A&oJQȵ~>P[p>qrF~?+vX5_}!Ƈ\8JN_ɯ`6c u윷`'o "7=O[_ Ǜ~Cw[7_A>@&/>2$ߴ_kʸ^ވ|ͣyG=؏L'c֣bWu%&>>"OEՏaZ՟n/ďK_3.E^9=ul]7u#7z};^{8;x/!_u@ǵ_f9Ro7:hG{#Й Hd#`T}HU9ny Qck947)OĐNY?hCyƣ`cJIyE"6NC}[:Nhf<::_;&OC|^/g'_S/b7ݬs]H=C' ?ԃS/$^T䍑?D'1u^0y! \BǞ0.#_A3@oG]]XƯ_C 'Cz1r:M+*5̸~n&OǮb_~Awޏ~66j+e\PBOS>n*EbM1oao숩,WF7D⇱K}sޯ`i!n;z]e섕+7;`gvGod?/)sгjfݗx/wb k/-*Ob+gӿmC?7v N~/ap9<>VYU]y13>; 9G_O*`?-fsCBq=,m_khEK>?:OKH3us>mϟ3NUן W6g8z?N~sryf~ ܠ%{orP. l7xSoG||ۥ=za}B݇ε~7rw]}1EV{L\־Re::N&j_49'q u)W #TZı%5^ ^1?/zQiB/|#Rux{?l5}LYyaw/-z?hYzKGO5ޫu<ty"G+rJ^>I|E7c_e״_az{v㐇U:yC2VܯR}&9#G脝Bn/['Cuǿ)Y>tTY]_{+~As}t 1.얧}{%!ߧWIϟu!FO̾=z3]a RZ{D }ԙCqzO);z:p y2a^%^W| bG7:oe1D;D;:u6l?wx=WKc|Ɖîq3.XV;{d#O;yAOaȯA'گͼG#{>xoO QS{=ߌN}tӾ:}.z} ܠVg -w7>S?tUV㹎糯_Jߑ+ ~ ܇[]kcB/#N#[{WVO>YyI>' {BWOjȕ3@opvO tˌsv|ĭЕAOljyK_xuj}$}a^a#GCM e?p&rpze> u |@W쌲C:Oڪ73뜵<#g|z%s֫o25g?IOq3~]C'>7QxD Uރ1xK1~ \]#N&.'0ijNo{>۲/:=[g~_[Wfc27F'6f:x>p޷~dY&?>uAfq5tipWa9Y/2bGu>}9q ,w?=n_[1 =~^Õ=Sst<ӧ? 0Sj?b~#O(놷(Kޮ4kpr7t3C'm+5^i\x?ޣQK0}\>zq{ ;`=&n_џxIgeYπ`Л*OBo/x#prM+=헿C籏]-#'~v̏~>W2ɃZc#֏Gs(낍i8u$Wn oȟ`w* L䍼:yw}q7d_S%oωAovt7R~`k|v?Y >b=?Pq#]o#~ASYċLp^=8~8އ*<솙ow#Yo̾VaX߆}_"w`?X]Թz>R>uLF.kxF?p/r~"?9tV/P8≶ʯ7>?#o1v>V8 o{PC~Eh׍C7ܤj>s}\#50?~7ظU?vl:m8ߪ: 2~\k:u&N~=?p?Əbn8~o·^X>jao{EKˈl# ~=&ޑu1׻h D>p=~pr{R[yG5}u/U {FR׬~| y}.Ic\a뺟{S9S<{—)K{DEF➶^{~A0#!9CaT:yǠ{?:v;K\[$ ]~y<ߺ~zF_[Or< 5\GVa0o_4sp9uPc)`ޮ/47 . ߄?cn ._w8UU /ҟ_X?<Ǟ` z`}݌_}q᷉4}} }}˜S綯-'y@~{?o)Uܢp@W?/p}=wHL~@1.cV>̋x/u&>=u}B@GƋ_ z;s*W:#\35oc~z>\iCG g~&?y ⤢#I_S>=~K=h̿|>_ =/=~ʏ@_kZbmw}4?w_~=}]u|gf{=tސ` U}B]BvI?r =o!vz7K>B?8k7|Пq2nDUხaOk ~} pveg-|\D܈g6ooC _i=񢭷<2}ȉ3ױ5[x 9 A_mg#"o~'Αumϥl|]߁ '| ^I>ʞWZsƙ>~ z<ԉ_~&{haֿ: ;p>yzR#~{}291n;z}l=ĵ9^]h.~}46fvuE`v?'뱫)&B{O]4LNQ=*n _ l7 Pc\:_楮Cp,>'4t%TZGbOm/\x_ׯs~&BfG\<"?B>lTxz~#s''?=Rwhz_^km!G'Q7#iw2ۣp,rtXD;Aѕ7ֺk]/`p6q r (?:|ҿW V-:޺ǘ]~HsH?|;y*?8eGOa߂|3:n 6DJ h #tgu&~y]i 茝^чA; 7<ݯ}-Gf!.x+@#/ 8@y?K!oCٌ_%u! kusS/~*qqo ?X{!/ϵS~oy5*=y䐾2J~Tx#脝!96̹j_+ >rG _A; z7,#ȩ‘%ԣ y.4gqOzjopxvuDkqO}>T&|G)p^K@Gfk_}5rvHk3>{;&2vDx:;_Bo'c}߀-^祑oNwO9ujz<_3{;JS_7~Mcp2r8v; ;F/?UMwgs~Ol Ngµ=GkH^BjPg-uSͼ{Xa@ɒ[IKI$ʽ4'K,}ߔd3m]vi|Lߣc;kE|Jվ[Sӫ]>Ю[Gٯo~:W_u֑e2/ѧcGSߤۥ;OOv:tw.>ԯ~+e@)xaݙZk?hNmcmc/vignettes/demo.Rnw0000644000175100001440000005247213045741600014645 0ustar hornikusers \documentclass{article} \usepackage{natbib} \usepackage{graphics} \usepackage{amsmath} \usepackage{indentfirst} \usepackage[utf8]{inputenc} \DeclareMathOperator{\var}{var} \DeclareMathOperator{\cov}{cov} % \VignetteIndexEntry{MCMC Example} \begin{document} <>= options(keep.source = TRUE, width = 60) foo <- packageDescription("mcmc") @ \title{MCMC Package Example (Version \Sexpr{foo$Version})} \author{Charles J. Geyer} \maketitle \section{The Problem} This is an example of using the \verb@mcmc@ package in R. The problem comes from a take-home question on a (take-home) PhD qualifying exam (School of Statistics, University of Minnesota). Simulated data for the problem are in the dataset \verb@logit@. There are five variables in the data set, the response \verb@y@ and four predictors, \verb@x1@, \verb@x2@, \verb@x3@, and \verb@x4@. A frequentist analysis for the problem is done by the following R statements <>= library(mcmc) data(logit) out <- glm(y ~ x1 + x2 + x3 + x4, data = logit, family = binomial(), x = TRUE) summary(out) @ But this problem isn't about that frequentist analysis, we want a Bayesian analysis. For our Bayesian analysis we assume the same data model as the frequentist, and we assume the prior distribution of the five parameters (the regression coefficients) makes them independent and identically normally distributed with mean 0 and standard deviation 2. The log unnormalized posterior (log likelihood plus log prior) density for this model is calculated by the following R function (given the preceding data definitions) <>= x <- out$x y <- out$y lupost <- function(beta, x, y) { eta <- as.numeric(x %*% beta) logp <- ifelse(eta < 0, eta - log1p(exp(eta)), - log1p(exp(- eta))) logq <- ifelse(eta < 0, - log1p(exp(eta)), - eta - log1p(exp(- eta))) logl <- sum(logp[y == 1]) + sum(logq[y == 0]) return(logl - sum(beta^2) / 8) } @ The tricky calculation of the log likelihood avoids overflow and catastrophic cancellation in calculation of $\log(p)$ and $\log(q)$ where \begin{align*} p & = \frac{\exp(\eta)}{1 + \exp(\eta)} = \frac{1}{1 + \exp(- \eta)} \\ q & = \frac{1}{1 + \exp(\eta)} = \frac{\exp(- \eta)}{1 + \exp(- \eta)} \end{align*} so taking logs gives \begin{align*} \log(p) & = \eta - \log(1 + \exp(\eta)) = - \log(1 + \exp(- \eta)) \\ \log(q) & = - \log(1 + \exp(\eta)) = - \eta - \log(1 + \exp(- \eta)) \end{align*} To avoid overflow, we always chose the case where the argument of $\exp$ is negative. We have also avoided catastrophic cancellation when $\lvert\eta\rvert$ is large. If $\eta$ is large and positive, then \begin{align*} p & \approx 1 \\ q & \approx 0 \\ \log(p) & \approx - \exp(- \eta) \\ \log(q) & \approx - \eta - \exp(- \eta) \end{align*} and our use of the R function \texttt{log1p}, which calculates the function $x \mapsto \log(1 + x)$ correctly for small $x$ avoids all problems. The case where $\eta$ is large and negative is similar. \section{Beginning MCMC} With those definitions in place, the following code runs the Metropolis algorithm to simulate the posterior. <>= set.seed(42) # to get reproducible results beta.init <- as.numeric(coefficients(out)) out <- metrop(lupost, beta.init, 1e3, x = x, y = y) names(out) out$accept @ The arguments to the \verb@metrop@ function used here (there are others we don't use) are \begin{itemize} \item an R function (here \verb@lupost@) that evaluates the log unnormalized density of the desired stationary distribution of the Markov chain (here a posterior distribution). Note that (although this example does not exhibit the phenomenon) that the unnormalized density may be zero, in which case the log unnormalized density is \verb@-Inf@. \item an initial state (here \verb@beta.init@) of the Markov chain. \item a number of batches (here \verb@1e3@) for the Markov chain. This combines with batch length and spacing (both 1 by default) to determine the number of iterations done. \item additional arguments (here \verb@x@ and \verb@y@) supplied to provided functions (here \verb@lupost@). \item there is no ``burn-in'' argument, although burn-in is easily accomplished, if desired (more on this below). \end{itemize} The output is in the component \verb@out$batch@ returned by the \verb@metrop@ function. We'll look at it presently, but first we need to adjust the proposal to get a higher acceptance rate (\verb@out$accept@). It is generally accepted \citep*{grg} that an acceptance rate of about 20\% is right, although this recommendation is based on the asymptotic analysis of a toy problem (simulating a multivariate normal distribution) for which one would never use MCMC and is very unrepresentative of difficult MCMC applications. \citet{geyer-temp} came to a similar conclusion, that a 20\% acceptance rate is about right, in a very different situation. But they also warned that a 20\% acceptance rate could be very wrong and produced an example where a 20\% acceptance rate was impossible and attempting to reduce the acceptance rate below 70\% would keep the sampler from ever visiting part of the state space. So the 20\% magic number must be considered like other rules of thumb we teach in intro courses (like $n > 30$ means means normal approximation is valid). We know these rules of thumb can fail. There are examples in the literature where they do fail. We keep repeating them because we want something simple to tell beginners, and they are all right for some problems. Be that as it may, we try for 20\%. <>= out <- metrop(out, scale = 0.1, x = x, y = y) out$accept out <- metrop(out, scale = 0.3, x = x, y = y) out$accept out <- metrop(out, scale = 0.5, x = x, y = y) out$accept out <- metrop(out, scale = 0.4, x = x, y = y) out$accept @ Here the first argument to each instance of the \verb@metrop@ function is the output of a previous invocation. The Markov chain continues where the previous run stopped, doing just what it would have done if it had kept going, the initial state and random seed being the final state and random seed of the previous invocation. Everything stays the same except for the arguments supplied (here \verb@scale@). \begin{itemize} \item The argument \verb@scale@ controls the size of the Metropolis ``normal random walk'' proposal. The default is \verb@scale = 1@. Big steps give lower acceptance rates. Small steps give higher. We want something about 20\%. It is also possible to make \verb@scale@ a vector or a matrix. See \verb@help(metrop)@. \end{itemize} Because each run starts where the last one stopped (when the first argument to \verb@metrop@ is the output of the previous invocation), each run serves as ``burn-in'' for its successor (assuming that any part of that run was worth anything at all). \section{Diagnostics} O.~K. That does it for the acceptance rate. So let's do a longer run and look at the results. <>= out <- metrop(out, nbatch = 1e4, x = x, y = y) out$accept out$time @ Figure~\ref{fig:fig1} (page~\pageref{fig:fig1}) shows the time series plot made by the R statement <>= plot(ts(out$batch)) @ \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Time series plot of MCMC output.} \label{fig:fig1} \end{figure} Another way to look at the output is an autocorrelation plot. Figure~\ref{fig:fig2} (page~\pageref{fig:fig2}) shows the time series plot made by the R statement <>= acf(out$batch) @ \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Autocorrelation plot of MCMC output.} \label{fig:fig2} \end{figure} As with any multiplot plot, these are a bit hard to read. Readers are invited to make the separate plots to get a better picture. As with all ``diagnostic'' plots in MCMC, these don't ``diagnose'' subtle problems. As \begin{verbatim} http://www.stat.umn.edu/~charlie/mcmc/diag.html \end{verbatim} says \begin{quotation} The purpose of regression diagnostics is to find obvious, gross, embarrassing problems that jump out of simple plots. \end{quotation} The time series plots will show \emph{obvious} nonstationarity. They will not show \emph{nonobvious} nonstationarity. They provide no guarantee whatsoever that your Markov chain is sampling anything remotely resembling the correct stationary distribution (with log unnormalized density \verb@lupost@). In this very easy problem, we do not expect any convergence difficulties and so believe what the diagnostics seem to show, but one is a fool to trust such diagnostics in difficult problems. The autocorrelation plots seem to show that the the autocorrelations are negligible after about lag 25. This diagnostic inference is reliable if the sampler is actually working (has nearly reached equilibrium) and worthless otherwise. Thus batches of length 25 should be sufficient, but let's use length 100 to be safe. \section{Monte Carlo Estimates and Standard Errors} <>= out <- metrop(out, nbatch = 1e2, blen = 100, outfun = function(z, ...) c(z, z^2), x = x, y = y) out$accept out$time @ We have added an argument \verb@outfun@ that gives the ``functional'' of the state we want to average. For this problem we are interested in both posterior mean and variance. Mean is easy, just average the variables in question. But variance is a little tricky. We need to use the identity $$ \var(X) = E(X^2) - E(X)^2 $$ to write variance as a function of two things that can be estimated by simple averages. Hence we want to average the state itself and the squares of each component. Hence our \verb@outfun@ returns \verb@c(z, z^2)@ for an argument (the state vector) \verb@z@. The \verb@...@ argument to \verb@outfun@ is required, since the function is also passed the other arguments (here \verb@x@ and \verb@y@) to \verb@metrop@. \subsection{Simple Means} The grand means (means of batch means) are <>= apply(out$batch, 2, mean) @ The first 5 numbers are the Monte Carlo estimates of the posterior means. The second 5 numbers are the Monte Carlo estimates of the posterior ordinary second moments. We get the posterior variances by <>= foo <- apply(out$batch, 2, mean) mu <- foo[1:5] sigmasq <- foo[6:10] - mu^2 mu sigmasq @ Monte Carlo standard errors (MCSE) are calculated from the batch means. This is simplest for the means. <>= mu.mcse <- apply(out$batch[ , 1:5], 2, sd) / sqrt(out$nbatch) mu.mcse @ The extra factor \verb@sqrt(out$nbatch)@ arises because the batch means have variance $\sigma^2 / b$ where $b$ is the batch length, which is \verb@out$blen@, whereas the overall means \verb@mu@ have variance $\sigma^2 / n$ where $n$ is the total number of iterations, which is \verb@out$blen * out$nbatch@. \subsection{Functions of Means} To get the MCSE for the posterior variances we apply the delta method. Let $u_i$ denote the sequence of batch means of the first kind for one parameter and $\bar{u}$ the grand mean (the estimate of the posterior mean of that parameter), let $v_i$ denote the sequence of batch means of the second kind for the same parameter and $\bar{v}$ the grand mean (the estimate of the posterior second absolute moment of that parameter), and let $\mu = E(\bar{u})$ and $\nu = E(\bar{v})$. Then the delta method linearizes the nonlinear function $$ g(\mu, \nu) = \nu - \mu^2 $$ as $$ \Delta g(\mu, \nu) = \Delta \nu - 2 \mu \Delta \mu $$ saying that $$ g(\bar{u}, \bar{v}) - g(\mu, \nu) $$ has the same asymptotic normal distribution as $$ (\bar{v} - \nu) - 2 \mu (\bar{u} - \mu) $$ which, of course, has variance \verb@1 / nbatch@ times that of $$ (v_i - \nu) - 2 \mu (u_i - \mu) $$ and this variance is estimated by $$ \frac{1}{n_{\text{batch}}} \sum_{i = 1}^{n_{\text{batch}}} \bigl[ (v_i - \bar{v}) - 2 \bar{u} (u_i - \bar{u}) \bigr]^2 $$ So <>= u <- out$batch[ , 1:5] v <- out$batch[ , 6:10] ubar <- apply(u, 2, mean) vbar <- apply(v, 2, mean) deltau <- sweep(u, 2, ubar) deltav <- sweep(v, 2, vbar) foo <- sweep(deltau, 2, ubar, "*") sigmasq.mcse <- sqrt(apply((deltav - 2 * foo)^2, 2, mean) / out$nbatch) sigmasq.mcse @ does the MCSE for the posterior variance. Let's just check that this complicated \verb@sweep@ and \verb@apply@ stuff does do the right thing. <>= sqrt(mean(((v[ , 2] - vbar[2]) - 2 * ubar[2] * (u[ , 2] - ubar[2]))^2) / out$nbatch) @ \paragraph{Comment} Through version 0.5 of this vignette it contained an incorrect procedure for calculating this MCSE, justified by a handwave (which was incorrect). Essentially, it said to use the standard deviation of the batch means called \verb@v@ here, which appears to be very conservative. \subsection{Functions of Functions of Means} If we are also interested in the posterior standard deviation (a natural question, although not asked on the exam problem), the delta method gives its standard error in terms of that for the variance <>= sigma <- sqrt(sigmasq) sigma.mcse <- sigmasq.mcse / (2 * sigma) sigma sigma.mcse @ \section{A Final Run} So that's it. The only thing left to do is a little more precision (the exam problem directed ``use a long enough run of your Markov chain sampler so that the MCSE are less than 0.01'') <>= out <- metrop(out, nbatch = 5e2, blen = 400, x = x, y = y) out$accept out$time <> <> <> <> @ and some nicer output, which is presented in three tables constructed from the R variables defined above using the R \verb@xtable@ command in the \verb@xtable@ library. First the posterior means, \begin{table}[ht] \caption{Posterior Means} \label{tab:mu} \begin{center} <>= foo <- rbind(mu, mu.mcse) dimnames(foo) <- list(c("estimate", "MCSE"), c("constant", paste("$x_", 1:4, "$", sep = ""))) library(xtable) print(xtable(foo, digits = rep(4, 6), align = c("l", rep("c", 5))), floating = FALSE, caption.placement = "top", sanitize.colnames.function = function(x) return(x)) @ \end{center} \end{table} then the posterior variances (table on page~\pageref{tab:sigmasq}), \begin{table}[ht] \caption{Posterior Variances} \label{tab:sigmasq} \begin{center} <>= foo <- rbind(sigmasq, sigmasq.mcse) dimnames(foo) <- list(c("estimate", "MCSE"), c("constant", paste("$x_", 1:4, "$", sep = ""))) library(xtable) print(xtable(foo, digits = rep(4, 6), align = c("l", rep("c", 5))), floating = FALSE, caption.placement = "top", sanitize.colnames.function = function(x) return(x)) @ \end{center} \end{table} and finally the posterior standard deviations (table on page~\pageref{tab:sigma}). \begin{table}[ht] \caption{Posterior Standard Deviations} \label{tab:sigma} \begin{center} <>= foo <- rbind(sigma, sigma.mcse) dimnames(foo) <- list(c("estimate", "MCSE"), c("constant", paste("$x_", 1:4, "$", sep = ""))) library(xtable) print(xtable(foo, digits = rep(4, 6), align = c("l", rep("c", 5))), floating = FALSE, caption.placement = "top", sanitize.colnames.function = function(x) return(x)) @ \end{center} \end{table} Note for the record that the all the results presented in the tables are from ``one long run'' where long here took only <>= cat(out$time[1], "\n") @ seconds (on whatever computer it was run on). \section{New Variance Estimation Functions} A new function \texttt{initseq} estimates variances in the Markov chain central limit theorem (CLT) following the methodology introduced by \citet[Section~3.3]{practical}. These methods only apply to scalar-valued functionals of reversible Markov chains, but the Markov chains produced by the \texttt{metrop} function satisfy this condition, even, as we shall see below, when batching is used. Rather than redo the Markov chains in the preceding material, we just look at a toy problem, an AR(1) time series, which can be simulated in one line of R. This is the example on the help page for \texttt{initseq}. <>= n <- 2e4 rho <- 0.99 x <- arima.sim(model = list(ar = rho), n = n) @ The time series \texttt{x} is a reversible Markov chain and trivially a scalar-valued functional of a Markov chain. Define \begin{equation} \label{eq:little} \gamma_k = \cov(X_i, X_{i + k}) \end{equation} where the covariances refer to the stationary Markov chain having the same transition probabilities as \texttt{x}. Then the variance in the CLT is $$ \sigma^2 = \gamma_0 + 2 \sum_{k = 1}^\infty \gamma_k $$ \citep[Theorem~2.1]{practical}, that is, $$ \bar{x}_n \approx \text{Normal}\left(\mu, \frac{\sigma^2}{n}\right), $$ where $\mu = E(X_i)$ is the quantity being estimated by MCMC (in this toy problem we know $\mu = 0$). Naive estimates of $\sigma^2$ obtained by plugging in empirical estimates of the gammas do not provide consistent estimation \citep[Section~3.1]{practical}. Thus the scheme implemented by the R function \texttt{initseq}. Define \begin{equation} \label{eq:big} \Gamma_k = \gamma_{2 k} + \gamma_{2 k + 1} \end{equation} \citet[Theorem~3.1]{practical} says that $\Gamma_k$ considered as a function of $k$ is strictly positive, strictly decreasing, and strictly convex (provided we are, as stated above, working with a reversible Markov chain). Thus it makes sense to use estimators that use these properties. The estimators implemented by the R function \texttt{initseq} and described by \citet[Section~3.3]{practical} are conservative-consistent in the sense of Theorem~3.2 of that section. Figure~\ref{fig:gamma} (page~\pageref{fig:gamma}) shows the time series plot made by the R statement <>= out <- initseq(x) plot(seq(along = out$Gamma.pos) - 1, out$Gamma.pos, xlab = "k", ylab = expression(Gamma[k]), type = "l") lines(seq(along = out$Gamma.dec) - 1, out$Gamma.dec, lty = "dotted") lines(seq(along = out$Gamma.con) - 1, out$Gamma.con, lty = "dashed") @ \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Plot ``Big Gamma'' defined by \eqref{eq:little} and \eqref{eq:big}. Solid line, initial positive sequence estimator. Dotted line, initial monotone sequence estimator. Dashed line, initial convex sequence estimator.} \label{fig:gamma} \end{figure} One can use whichever curve one chooses, but now that the \texttt{initseq} function makes the computation trivial, it makes sense to use the initial convex sequence. Of course, one is not interested in Figure~\ref{fig:gamma}, except perhaps when explaining the methodology. What is actually important is the estimate of $\sigma^2$, which is given by <>= out$var.con (1 + rho) / (1 - rho) * 1 / (1 - rho^2) @ where for comparison we have given the exact theoretical value of $\sigma^2$, which, of course, is never available in a non-toy problem. These initial sequence estimators seem, at first sight to be a competitor for the method of batch means. However, appearances can be deceiving. The two methods are complementary. The sequence of batch means is itself a scalar-valued functional of a reversible Markov chain. Hence the initial sequence estimators can be applied to it. <>= blen <- 5 x.batch <- apply(matrix(x, nrow = blen), 2, mean) bout <- initseq(x.batch) @ Because the batch length is too short, the variance of the batch means does not estimate $\sigma^2$. We must account for the autocorrelation of the batches, shown in Figure~\ref{fig:gambat}. <>= plot(seq(along = bout$Gamma.con) - 1, bout$Gamma.con, xlab = "k", ylab = expression(Gamma[k]), type = "l") @ \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Plot ``Big Gamma'' defined by \eqref{eq:little} and \eqref{eq:big} for the sequence of batch means (batch length \Sexpr{blen}). Only initial convex sequence estimator is shown.} \label{fig:gambat} \end{figure} Because the the variance is proportional to one over the batch length, we need to multiply by the batch length to estimate the $\sigma^2$ for the original series. <>= out$var.con bout$var.con * blen @ Another way to look at this is that the MCMC estimator of $\mu$ is either \texttt{mean(x)} or \texttt{mean(x.batch)}. And the variance must be divided by the sample size to give standard errors. So either <>= mean(x) + c(-1, 1) * qnorm(0.975) * sqrt(out$var.con / length(x)) mean(x.batch) + c(-1, 1) * qnorm(0.975) * sqrt(bout$var.con / length(x.batch)) @ is an asymptotic 95\% confidence interval for $\mu$. Just divide by the relevant sample size. \begin{thebibliography}{} \bibitem[Gelman et al.(1996)Gelman, Roberts, and Gilks]{grg} Gelman, A., G.~O. Roberts, and W.~R. Gilks (1996). \newblock Efficient Metropolis jumping rules. \newblock In \emph{Bayesian Statistics, 5 (Alicante, 1994)}, pp.~599--607. Oxford University Press. \bibitem[Geyer(1992)]{practical} Geyer, C.~J. (1992). \newblock Practical Markov chain Monte Carlo (with discussion). \newblock \emph{Statistical Science}, 7, 473--511. \bibitem[Geyer and Thompson(1995)]{geyer-temp} Geyer, C.~J. and E.~A. Thompson (1995). \newblock Annealing Markov chain Monte Carlo with applications to ancestral inference. \newblock \emph{Journal of the American Statistical Association}, 90, 909--920. \end{thebibliography} \end{document} mcmc/vignettes/bfst.Rnw0000644000175100001440000007725213045741600014662 0ustar hornikusers \documentclass[11pt]{article} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{indentfirst} \usepackage{natbib} \usepackage{url} \usepackage[utf8]{inputenc} \newcommand{\real}{\mathbb{R}} \DeclareMathOperator{\prior}{pri} \DeclareMathOperator{\posterior}{post} \DeclareMathOperator{\indicator}{ind} \newcommand{\fatdot}{\,\cdot\,} % \VignetteIndexEntry{Bayes Factors via Serial Tempering} \begin{document} \title{Bayes Factors via Serial Tempering} \author{Charles J. Geyer} \maketitle <>= options(keep.source = TRUE, width = 65) @ \section{Introduction} \subsection{Bayes Factors} \label{sec:bayes-factors} Let $\mathcal{M}$ be a finite or countable set of models (here we only deal with finite $\mathcal{M}$ but Bayes factors make sense for countable $\mathcal{M}$). For each model $m \in \mathcal{M}$ we have the prior probability of the model $\prior(m)$. It does not matter if this prior on models is unnormalized. Each model $m$ has a parameter space $\Theta_m$ and a prior $$ g(\theta \mid m), \qquad \theta \in \Theta_m $$ The spaces $\Theta_m$ can and usually do have different dimensions. That's the point. These within model priors must be normalized proper priors. The calculations to follow make no sense if these priors are unnormalized or improper. Each model $m$ has a data distribution $$ f(y \mid \theta, m) $$ and the observed data $y$ may be either discrete or continuous (it makes no difference to the Bayesian who treats $y$ as fixed after it is observed and treats only $\theta$ and $m$ as random). The unnormalized posterior for everything (for models and parameters within models) is $$ f(y \mid \theta, m) g(\theta \mid m) \prior(m) $$ To obtain the conditional distribution of $y$ given $m$, we must integrate out the nuisance parameter $\theta$ \begin{align*} q(y \mid m) & = \int_{\Theta_m} f(y \mid \theta, m) g(\theta \mid m) \prior(m) \, d \theta \\ & = \prior(m) \int_{\Theta_m} f(y \mid \theta, m) g(\theta \mid m) \, d \theta \end{align*} These are the unnormalized posterior probabilities of the models. The normalized posterior probabilities are $$ \posterior(m \mid y) = \frac{ q(y \mid m) }{ \sum_{m \in \mathcal{M}} q(y \mid m) } $$ It is considered useful to define $$ b(y \mid m) = \int_{\Theta_m} f(y \mid \theta, m) g(\theta \mid m) \, d \theta $$ so $$ q(y \mid m) = b(y \mid m) \prior(m) $$ Then the ratio of posterior probabilities of models $m_1$ and $m_2$ is $$ \frac{\posterior(m_1 \mid y)}{\posterior(m_2 \mid y)} = \frac{q(y \mid m_1)}{q(y \mid m_2)} = \frac{b(y \mid m_1)}{b(y \mid m_2)} \cdot \frac{\prior(m_1)}{\prior(m_2)} $$ This ratio is called the \emph{posterior odds} of the models (a ratio of probabilities is called an \emph{odds}) of these models. The \emph{prior odds} is $$ \frac{\prior(m_1)}{\prior(m_2)} $$ The term we have not yet named in $$ \frac{\posterior(m_1 \mid y)}{\posterior(m_2 \mid y)} = \frac{b(y \mid m_1)}{b(y \mid m_2)} \cdot \frac{\prior(m_1)}{\prior(m_2)} $$ is called the \emph{Bayes factor} \begin{equation} \label{eq:factor} \frac{b(y \mid m_1)}{b(y \mid m_2)} \end{equation} the ratio of posterior odds to prior odds. The prior odds tells how the prior compares the probability of the models. The Bayes factor tells us how the data shifts that comparison going from prior to posterior via Bayes rule. Bayes factors are the primary tool Bayesians use for model comparison, the competitor for frequentist $P$-values in frequentist hypothesis tests of model comparison. Note that our clumsy multiple letter notation for priors and posteriors $\prior(m)$ and $\posterior(m \mid y)$ does not matter because neither is involved in the actual calculation of Bayes factors \eqref{eq:factor}. Priors and posteriors are involved in motivating Bayes factors but not in calculating them. \subsection{Tempering} \label{sec:temper} Simulated tempering \citep{marinari-parisi,geyer-thompson} is a method of Markov chain Monte Carlo (MCMC) simulation of many distributions at once. It was originally invented with the primary aim of speeding up MCMC convergence, but was also recognized to be useful for sampling multiple distributions \citep{geyer-thompson}. In the latter role it is sometimes referred to as ``umbrella sampling'' which is a term coined by \citet{torrie-valleau} for sampling multiple distributions via MCMC. We have a finite set of unnormalized distributions we want to sample, all related in some way. The R function \texttt{temper} in the CRAN package \texttt{mcmc} requires all to have continuous distributions for random vectors of the same dimension (all distributions have the same domain $\real^p$). Let $h_i$, $i \in \mathcal{I}$ denote the unnormalized densities of these distributions. Simulated tempering (called ``serial tempering'' by the \texttt{temper} function to distinguish from a related scheme not used in this document called ``parallel tempering'' and in either case abbreviated ST) runs a Markov chain whose state is a pair $(i, x)$ where $i \in \mathcal{I}$ and $x \in \real^p$. The unnormalized density of stationary distribution of the ST chain is \begin{equation} \label{eq:st-joint} h(i, x) = h_i(x) c_i \end{equation} where the $c_i$ are arbitrary constants chosen by the user (more on this later). The equilibrium distribution of the ST state $(I, X)$ --- both bits random --- is such that conditional distribution of $X$ given $I = i$ is the distribution with unnormalized density $h_i$. This is obvious from $h(i, x)$ being the unnormalized conditional density --- the same function thought of as a function of both variables is the unnormalized joint density and thought of as a function of just one of the variables is an unnormalized conditional density --- and $h(i, x)$ thought of as a function of $x$ for fixed $i$ being proportional to $h_i$. The equilibrium unnormalized marginal distribution of $I$ is \begin{equation} \label{eq:margin} \int h(i, x) \, d x = c_i \int h_i(x) \, d x = c_i d_i \end{equation} where $$ d_i = \int h_i(x) \, d x $$ is the normalizing constant for $h_i$, that is, $h_i / d_i$ is a normalized distribution. It is clear from \eqref{eq:margin} being the unnormalized marginal distribution that in order for the marginal distribution to be uniform we must choose the tuning constants $c_i$ to be proportional to $1 / d_i$. It is not important that the marginal distribution be exactly uniform, but unless it is approximately uniform, the sampler will not visit each distribution frequently. Thus we do need to have the $c_i$ to be approximately proportional to $1 / d_i$. This is accomplished by trial and error (one example is done in this document) and is easy for easy problems and hard for hard problems \citep[have much to say about adjusting the $c_i$]{geyer-thompson}. For the rest of this section we will assume the tuning constants $c_i$ have been so adjusted: we do not have the $c_i$ exactly proportional to $1 / d_i$ but do have them approximately proportional to $1 / d_i$. \subsection{Tempering and Bayes Factors} Bayes factors are very important in Bayesian inference and many methods have been invented to calculate them. No method except the one described here using ST is anywhere near as accurate and straightforward. Thus no competitors will be discussed. In using ST for Bayes factors we identify the index set $\mathcal{I}$ with the model set $\mathcal{M}$ and use the integers 1, $\ldots$, $k$ for both. We would like to identify the within model parameter vector $\theta$ with the vector $x$ that is the continuous part of the state of the ST Markov chain, but cannot because the dimension of $\theta$ depends on $m$ and this is not allowed. Thus we have to do something a bit more complicated. We ``pad'' $\theta$ so that it always has the same dimension, doing so in a way that does not interfere with the Bayes factor calculation. Write $\theta = (\theta_{\text{actual}}, \theta_{\text{pad}})$, the dimension of both parts depending on the model $m$. Then we insist on the following conditions: $$ f(y \mid \theta, m) = f(y \mid \theta_{\text{actual}}, m) $$ so the data distribution does not depend on the ``padding'' and $$ g(\theta \mid m) = g_{\text{actual}}(\theta_{\text{actual}} \mid m) \cdot g_{\text{pad}}(\theta_{\text{pad}} \mid m) $$ so the two parts are \emph{a priori} independent and both parts of the prior are normalized proper priors. This assures that \begin{equation} \label{eq:unnormalized-bayes-factors} \begin{split} b(y \mid m) & = \int_{\Theta_m} f(y \mid \theta, m) g(\theta \mid m) \, d \theta \\ & = \iint f(y \mid \theta_{\text{actual}}, m) g_{\text{actual}}(\theta_{\text{actual}} \mid m) g_{\text{pad}}(\theta_{\text{pad}} \mid m) \, d \theta_{\text{actual}} \, d \theta_{\text{pad}} \\ & = \int_{\Theta_m} f(y \mid \theta_{\text{actual}}, m) g_{\text{actual}}(\theta_{\text{actual}} \mid m) \, d \theta_{\text{actual}} \end{split} \end{equation} so the calculation of the unnormalized Bayes factors is the same whether or not we ``pad'' $\theta$, and we may then take \begin{align*} h_m(\theta) & = f(y \mid \theta, m) g(\theta \mid m) \\ & = f(y \mid \theta_{\text{actual}}, m) g_{\text{actual}}(\theta_{\text{actual}} \mid m) g_{\text{pad}}(\theta_{\text{pad}} \mid m) \end{align*} to be the unnormalized densities for the component distributions of the ST chain, in which case the unnormalized Bayes factors are proportional to the normalizing constants $d_i$ in Section~\ref{sec:temper}. \subsection{Tempering and Normalizing Constants} Let $d$ be the normalizing constant for the joint equilibrium distribution of the ST chain \eqref{eq:st-joint}. When we are running the ST chain we know neither $d$ nor the $d_i$ but we do know the $c_i$, which are constants we have chosen based on the results of previous runs but are fixed known numbers for the current run. Let $(I_t, X_t)$, $t = 1$, 2, $\ldots$ be the sample path of the ST chain. Recall that (somewhat annoyingly) we are using the notation $(i, x)$ for the state vector of a general ST chain and the notation $(m, \theta)$ for ST chains used to calculate Bayes factors, identifying $i = m$ and $x = \theta$. Let $\indicator(\fatdot)$ denote the function that maps logical values to numerical values, false to zero and true to one. Normalizing constants are estimated by averaging the time spent in each model \begin{equation} \label{eq:st-estimates} \hat{\delta}_n(m) = \frac{1}{n} \sum_{t = 1}^n \indicator(I_t = m) \end{equation} For the purposes of approximating Bayes factors the $X_t$ are ignored. The $X_t$ may be useful for other purposes, such as Bayesian model averaging \citep*{bma}, but this is not discussed here. The Monte Carlo approximations \eqref{eq:st-estimates} converge to their expected values under the equilibrium distribution \begin{equation} \label{eq:st-expectations} E\{ \indicator(I_t = m) \} = \int \frac{h(m, x)}{d} \, d x = \frac{c_m d_m}{d} = \delta(m) \end{equation} We want to estimate the unnormalized Bayes factors \eqref{eq:unnormalized-bayes-factors}, which are in this context proportional to the $d_m$. The $c_m$ are known, $d$ is unknown but does not matter since we only need to estimate the $d_m = b(m \mid y)$ up to an overall unknown constant of proportionality, which cancels out of Bayes factors \eqref{eq:factor}. Note that our discussion here applies unchanged to the general problem of estimating normalizing constants up to an unknown constant of proportionality, which has applications other than Bayes factors, for example, missing data maximum likelihood \citep{thompson-guo,geyer,sung-geyer}. The ST method approximates normalizing constants up to an overall constant of proportionality with high accuracy regardless of how large or small they are (whether they are $10^{100}$ or $10^{-100}$), and no other method that does not use essentially the same idea can do this. The key is what seems at first sight to be a weakness of ST, the need to adjust the tuning constants $c_i$ by trial and error. In this context the weakness is actually a strength: the adjusted $c_i$ contain most of the information about the size of the normalizing constants $d_i$ and the Monte Carlo averages \eqref{eq:st-estimates} add only the finishing touch. Thus multiple runs of the ST chain with different choices of the $c_i$ used in each run are needed (the ``trial and error''), but the information from all are incorporated in the final run used for final approximation of the normalizing constants (Bayes factors). It is perhaps surprising that the Monte Carlo error approximation is trivial. In the context of the last run of the ST chain the $c_i$ are known constants and contribute no error. The Monte Carlo error of the averages \eqref{eq:st-estimates} is straightforwardly estimated by batch means or competing methods. \citet{geyer-thompson} note that the $c_i$ enter formally like a prior: one can think of $h_i(x) c_i$ as likelihood times prior. But one should not think of the $c_i$ as representing prior information, informative, non-informative, or in between. The $c_i$ are adjusted to make the ST distribution sample all the models $h_i$, and that is the only criterion for the adjustment. For this reason \citet{geyer-thompson} call the $c_i$ the \emph{pseudoprior}. This is a special case of a general principle of MCMC. When doing MCMC one should forget the statistical motivation (in this case Bayes factors). One should set up a Markov chain that does a good job of simulating the required equilibrium distribution, whatever it is. Thinking about the statistical motivation of the equilibrium does not help and can hurt (if one thinks of the pseudoprior as an actual prior, one may be tempted to adjust it to represent prior information). \section{R Package MCMC} We use the R statistical computing environment \citep{rcore} in our analysis. It is free software and can be obtained from \url{http://cran.r-project.org}. Precompiled binaries are available for Windows, Macintosh, and popular Linux distributions. We use the contributed package \verb@mcmc@ \citep{mcmc-R-package} If R has been installed, but this package has not yet been installed, do \begin{verbatim} install.packages("mcmc") \end{verbatim} from the R command line (or do the equivalent using the GUI menus if on Apple Macintosh or Microsoft Windows). This may require root or administrator privileges. Assuming the \verb@mcmc@ package has been installed, we load it <>= library(mcmc) @ <>= baz <- library(help = "mcmc") baz <- baz$info[[1]] baz <- baz[grep("Version", baz)] baz <- sub("^Version: *", "", baz) bazzer <- paste(R.version$major, R.version$minor, sep = ".") @ The version of the package used to make this document is \Sexpr{baz} (which is available on CRAN). The version of R used to make this document is \Sexpr{bazzer}. We also set the random number generator seed so that the results are reproducible. <>= set.seed(42) @ To get different results, change the setting or don't set the seed at all. \section{Logistic Regression Example} We use the same logistic regression example used in the \texttt{mcmc} package vignette for the \texttt{metrop} function (file \texttt{demo.pdf}. Simulated data for the problem are in the data set \verb@logit@. There are five variables in the data set, the response \verb@y@ and four predictors, \verb@x1@, \verb@x2@, \verb@x3@, and \verb@x4@. A frequentist analysis for the problem is done by the following R statements <>= data(logit) out <- glm(y ~ x1 + x2 + x3 + x4, data = logit, family = binomial, x = TRUE) summary(out) @ But this example isn't about frequentist analysis, we want a Bayesian analysis. For our Bayesian analysis we assume the same data model as the frequentist, and we assume the prior distribution of the five parameters (the regression coefficients) makes them independent and identically normally distributed with mean 0 and standard deviation 2. Moreover, we wish to calculate Bayes factors for the $16 = 2^4$ possible submodels that include or exclude each of the predictors, \verb@x1@, \verb@x2@, \verb@x3@, and \verb@x4@. \subsection{Setup} We set up a matrix that indicates these models. <>= varnam <- names(coefficients(out)) varnam <- varnam[varnam != "(Intercept)"] nvar <- length(varnam) models <- NULL foo <- seq(0, 2^nvar - 1) for (i in 1:nvar) { bar <- foo %/% 2^(i - 1) bar <- bar %% 2 models <- cbind(bar, models, deparse.level = 0) } colnames(models) <- varnam models @ In each row, 1 indicates the predictor is in the model and 0 indicates it is out. The function \texttt{temper} in the \text{mcmc} package that does tempering requires a notion of neighbors among models. It attempts jumps only between neighboring models. Here we choose models to be neighbors if they differ only by one predictor. <>= neighbors <- matrix(FALSE, nrow(models), nrow(models)) for (i in 1:nrow(neighbors)) { for (j in 1:ncol(neighbors)) { foo <- models[i, ] bar <- models[j, ] if (sum(foo != bar) == 1) neighbors[i, j] <- TRUE } } @ Now we specify the equilibrium distribution of the ST chain. Its state vector is $(i, x)$ or $(m, \theta)$ in our alternative notations, where $i$ is an integer between $1$ and \verb@nrow(models)@ = \Sexpr{nrow(models)} and $\theta$ is the parameter vector ``padded'' to always be the same length, so we take it to be the length of the parameter vector of the full model which is \verb@length(out$coefficients)@ or \verb@ncol(models) + 1@ which makes the length of the state of the ST chain \verb@ncol(models) + 2@. We take the within model priors for the ``padded'' components of the parameter vector to be the same as those for the ``actual'' components, normal with mean 0 and standard deviation 2 for all cases. As is seen in \eqref{eq:unnormalized-bayes-factors} the priors for the ``padded'' components (parameters not in the model for the current state) do not matter because they drop out of the Bayes factor calculation. The choice does not matter much for this toy example. See the discussion section for more on this issue. It is important that we use normalized log priors, the term \verb@dnorm(beta, 0, 2, log = TRUE)@ in the function, unlike when we are simulating only one model as in the \texttt{mcmc} package vignette where it would be o.~k.\ to use unnormalized log priors \verb@- beta^2 / 8@. The \texttt{temper} function wants the log unnormalized density of the equilibrium distribution. We include an additional argument \texttt{log.pseudo.prior}, which is $\log(c_i)$ in our mathematical development, because this changes from run to run as we adjust it by trial and error. Other ``arguments'' are the model matrix of the full model \texttt{modmat}, the matrix \texttt{models} relating integer indices (the first component of the state vector of the ST chain) to which predictors are in or out of the model, and the data vector \texttt{y}, but these are not passed as arguments to our function and instead are found in the R global environment. <>= modmat <- out$x y <- logit$y ludfun <- function(state, log.pseudo.prior) { stopifnot(is.numeric(state)) stopifnot(length(state) == ncol(models) + 2) icomp <- state[1] stopifnot(icomp == as.integer(icomp)) stopifnot(1 <= icomp && icomp <= nrow(models)) stopifnot(is.numeric(log.pseudo.prior)) stopifnot(length(log.pseudo.prior) == nrow(models)) beta <- state[-1] inies <- c(TRUE, as.logical(models[icomp, ])) beta.logl <- beta beta.logl[! inies] <- 0 eta <- as.numeric(modmat %*% beta.logl) logp <- ifelse(eta < 0, eta - log1p(exp(eta)), - log1p(exp(- eta))) logq <- ifelse(eta < 0, - log1p(exp(eta)), - eta - log1p(exp(- eta))) logl <- sum(logp[y == 1]) + sum(logq[y == 0]) logl + sum(dnorm(beta, 0, 2, log = TRUE)) + log.pseudo.prior[icomp] } @ \subsection{Trial and Error} Now we are ready to try it out. We start in the full model at its MLE, and we initialize \texttt{log.pseudo.prior} at all zeros, having no idea \emph{a priori} what it should be. <>= state.initial <- c(nrow(models), out$coefficients) qux <- rep(0, nrow(models)) out <- temper(ludfun, initial = state.initial, neighbors = neighbors, nbatch = 1000, blen = 100, log.pseudo.prior = qux) names(out) out$time @ So what happened? <>= ibar <- colMeans(out$ibatch) ibar @ The ST chain did not mix well, several models not being visited even once. So we adjust the pseudo priors to get uniform distribution. <>= qux <- qux + pmin(log(max(ibar) / ibar), 10) qux <- qux - min(qux) qux @ The new pseudoprior should be proportional to \verb@1 / ibar@ if \texttt{ibar} is an accurate estimate of \eqref{eq:st-expectations}, but this makes no sense when the estimates are bad, in particular, when the are exactly zero. Thus we put an upper bound, chosen arbitrarily (here 10) on the maximum increase of the log pseudoprior. The statement \begin{verbatim} qux <- qux - min(qux) \end{verbatim} is unnecessary. An overall arbitrary constant can be added to the log pseudoprior without changing the equilibrium distribution of the ST chain. We do this only to make \texttt{qux} more comparable from run to run. Now we repeat this until the log pseudoprior ``converges'' roughly. Because this loop takes longer than CRAN vingettes are supposed to take, we save the results to a file and load the results from this file if it already exists. <>= lout <- suppressWarnings(try(load("bfst1.rda"), silent = TRUE)) if (inherits(lout, "try-error")) { qux.save <- qux time.save <- out$time repeat{ out <- temper(out, log.pseudo.prior = qux) ibar <- colMeans(out$ibatch) qux <- qux + pmin(log(max(ibar) / ibar), 10) qux <- qux - min(qux) qux.save <- rbind(qux.save, qux, deparse.level = 0) time.save <- rbind(time.save, out$time, deparse.level = 0) if (max(ibar) / min(ibar) < 2) break } save(out, qux, qux.save, time.save, file = "bfst1.rda") } else { .Random.seed <- out$final.seed } print(qux.save, digits = 3) print(qux, digits = 3) apply(time.save, 2, sum) @ Now that the pseudoprior is adjusted well enough, we need to perhaps make other adjustments to get acceptance rates near 20\%. <>= print(out$accepti, digits = 3) print(out$acceptx, digits = 3) @ The acceptance rates for swaps seem o. k. <>= min(as.vector(out$accepti), na.rm = TRUE) @ and there is nothing simple we can do to adjust them (adjustment is possible, see the discussion section for more on this issue). We adjust the acceptance rates for within model moves by adjusting the scaling. <>= out <- temper(out, scale = 0.5, log.pseudo.prior = qux) time.save <- rbind(time.save, out$time, deparse.level = 0) print(out$acceptx, digits = 3) @ Looks o.~k.\ now. Inspection of autocorrelation functions for components of \verb@out$ibatch@ (not shown) says batch length needs to be at least 4 times longer. We make it 10 times longer for safety. Because this run takes longer than CRAN vingettes are supposed to take, we save the results to a file and load the results from this file if it already exists. <>= lout <- suppressWarnings(try(load("bfst2.rda"), silent = TRUE)) if (inherits(lout, "try-error")) { out <- temper(out, blen = 10 * out$blen, log.pseudo.prior = qux) save(out, file = "bfst2.rda") } else { .Random.seed <- out$final.seed } time.save <- rbind(time.save, out$time, deparse.level = 0) foo <- apply(time.save, 2, sum) foo.min <- floor(foo[1] / 60) foo.sec <- foo[1] - 60 * foo.min c(foo.min, foo.sec) @ The total time for all runs of the temper function was \Sexpr{foo.min} minutes and \Sexpr{round(foo.sec, 1)} seconds. \subsection{Bayes Factor Calculations} Now we calculate log 10 Bayes factors relative to the model with the highest unnormalized Bayes factor. <>= log.10.unnorm.bayes <- (qux - log(colMeans(out$ibatch))) / log(10) k <- seq(along = log.10.unnorm.bayes)[log.10.unnorm.bayes == min(log.10.unnorm.bayes)] models[k, ] log.10.bayes <- log.10.unnorm.bayes - log.10.unnorm.bayes[k] log.10.bayes @ These are base 10 logarithms of the Bayes factors against the $k$-th model where $k = \Sexpr{k}$. For example, the Bayes factor for the $k$-th model divided by the Bayes factor for the first model is $10^{\Sexpr{round(log.10.bayes[1], 3)}}$. Now we calculate Monte Carlo standard errors two different ways. One is the way the delta method is usually taught. To simplify notation, denote the Bayes factors $$ b_m = b(y \mid m) $$ and their Monte Carlo approximations $\hat{b}_m$. Then the log Bayes factors are $$ g_i(b) = \log_{10} b_i - \log_{10} b_k $$ hence we need to apply the delta method with the function $g_i$, which has derivatives \begin{align*} \frac{\partial g_i(b)}{\partial b_i} & = \frac{1}{b_i \log_e(10)} \\ \frac{\partial g_i(b)}{\partial b_k} & = - \frac{1}{b_k \log_e(10)} \\ \frac{\partial g_i(b)}{\partial b_j} & = 0, \qquad \text{$j \neq i$ and $j \neq k$} \end{align*} <>= fred <- var(out$ibatch) / out$nbatch sally <- colMeans(out$ibatch) mcse.log.10.bayes <- (1 / log(10)) * sqrt(diag(fred) / sally^2 - 2 * fred[ , k] / (sally * sally[k]) + fred[k, k] / sally[k]^2) mcse.log.10.bayes foompter <- cbind(models, log.10.bayes, mcse.log.10.bayes) round(foompter, 5) @ An alternative calculation of the MCSE replaces the actual function of the raw Bayes factors with its best linear approximation $$ \frac{1}{\log_e(10)} \left(\frac{\hat{b}_i - b_i}{b_i} - \frac{\hat{b}_k - b_k}{b_k} \right) $$ and calculates the standard deviation of this quantity by batch means <>= ibar <- colMeans(out$ibatch) herman <- sweep(out$ibatch, 2, ibar, "/") herman <- sweep(herman, 1, herman[ , k], "-") mcse.log.10.bayes.too <- (1 / log(10)) * apply(herman, 2, sd) /sqrt(out$nbatch) all.equal(mcse.log.10.bayes, mcse.log.10.bayes.too) @ \section{Discussion} We hope readers are impressed with the power of this method. The key to the method is pseudopriors adjusted by trial and error. The method could have been invented by any Bayesian who realized that the priors on models, $\prior(m)$ in our notation in Section~\ref{sec:bayes-factors}, do not affect the Bayes factors and hence are irrelevant to calculating Bayes factors. Thus the priors (or pseudopriors in our terminology) should be chosen for reasons of computational convenience, as we have done, rather than to incorporate prior information. The rest of the details of the method are unimportant. The \texttt{temper} function in R is convenient to use for this purpose, but there is no reason to believe that it provides optimal sampling. Samplers carefully designed for each particular application would undoubtedly do better. Our notion of ``padding'' so that the within model parameters have the same dimension for all models follows \citet{carlin-chib} but ``reversible jump'' samplers \citep{green} would undoubtedly do better. Unfortunately, there seems to be no way to code up a function like \texttt{temper} that uses ``reversible jump'' and requires no theoretical work from users that if messed up destroys the algorithm. The \texttt{temper} function is foolproof in the sense that if the log unnormalized density function written by the user (like our \texttt{ludfun}) is correct, then the ST Markov chain has the equilibrium distribution is supposed to have. There is nothing the user can mess up except this user written function. No analog of this for ``reversible jump'' chains is apparent (to your humble author). Two issues remain where the text above said ``see the discussion section for more on this issue.'' The first was about within model priors for the ``padding'' components of within model parameter vectors $g_{\text{pad}}(\theta_{\text{pad}} \mid m)$ in the notation in \eqref{eq:unnormalized-bayes-factors}. Rather than choose these so that they do not depend on the data (as we did), it would be better (if more trouble) to choose them differently for each ``padding'' component, centering $g_{\text{pad}}(\theta_{\text{pad}} \mid m)$ so the distribution of a component of $\theta_{\text{pad}}$ is near to the marginal distribution of the same component in neighboring models (according to the \texttt{neighbors} argument of the \texttt{temper} function). The other remaining issue is adjusting acceptance rates for jumps. There is no way to adjust this other than by changing the number of models and their definitions. But the models we have cannot be changed; if we are to calculate Bayes factors for them, then we must sample them as they are. But we can insert new models between old models. For example, if the acceptance for swaps between model $i$ and model $j$ is too low, then we can insert distribution $k$ between them that has unnormalized density $$ h_k(x) = \sqrt{h_i(x) h_j(x)}. $$ This idea is inherited from simulated tempering; \citep{geyer-thompson} have much discussion of how to insert additional distributions into a tempering network. It is another key issue in using tempering to speed up sampling. It is less obvious in the Bayes factor context, but still an available technique if needed. \begin{thebibliography}{} \bibitem[Carlin and Chib(1995)]{carlin-chib} Carlin, B.~P. and Chib, S. (1995). \newblock Bayesian model choice via Markov chain Monte Carlo methods. \newblock \emph{Journal of the Royal Statistical Society, Series B}, \textbf{57}, 473--484. \bibitem[Geyer(1994)]{geyer} Geyer, C.~J. (1994). \newblock On the convergence of Monte Carlo maximum likelihood calculations. \newblock \emph{Journal of the Royal Statistical Society, Series B}, \textbf{56} 261--274. \bibitem[Geyer., 2009]{mcmc-R-package} Geyer., C.~J. (2009). \newblock \emph{mcmc: Markov Chain Monte Carlo}. \newblock R package version 0.7-2, available from CRAN. \bibitem[Geyer and Thompson(1995)]{geyer-thompson} Geyer, C.~J., and Thompson, E.~A. (1995). \newblock Annealing Markov chain Monte Carlo with applications to ancestral inference. \newblock \emph{Journal of the American Statistical Association}, \textbf{90}, 909--920. \bibitem[Green(1995)]{green} Green, P.~J. (1995). \newblock Reversible jump {M}arkov chain {M}onte {C}arlo computation and {B}ayesian model determination. \newblock \emph{Biometrika}, \textbf{82}, 711--732. \bibitem[Hoeting et al.(1999)Hoeting, Madigan, Raftery, and Volinsky]{bma} Hoeting, J.~A., Madigan, D., Raftery, A.~E. and Volinsky, C.~T. (1999). \newblock Bayesian model averaging: A tutorial (with discussion). \newblock \emph{Statical Science}, \textbf{19}, 382--417. \newblock The version printed in the journal had the equations messed up in the production process; a corrected version is available at \url{http://www.stat.washington.edu/www/research/online/1999/hoeting.pdf}. \bibitem[Marinari and Parisi(1992)]{marinari-parisi} Marinari, E., and Parisi G. (1992). \newblock Simulated tempering: A new Monte Carlo Scheme. \newblock \emph{Europhysics Letters}, \textbf{19}, 451--458. \bibitem[R Development Core Team(2010)]{rcore} R Development Core Team (2010). \newblock R: A language and environment for statistical computing. \newblock R Foundation for Statistical Computing, Vienna, Austria. \newblock \url{http://www.R-project.org}. \bibitem[Sung and Geyer(2007)]{sung-geyer} Sung, Y.~J. and Geyer, C.~J. (2007). \newblock Monte Carlo likelihood inference for missing data models. \newblock \emph{Annals of Statistics}, \textbf{35}, 990--1011. \bibitem[Thompson and Guo(1991)]{thompson-guo} Thompson, E. A. and Guo, S. W. (1991). \newblock Evaluation of likelihood ratios for complex genetic models. \newblock \emph{IMA J. Math. Appl. Med. Biol.}, \textbf{8}, 149--169. \bibitem[Torrie and Valleau(1977)]{torrie-valleau} Torrie, G.~M., and Valleau, J.~P. (1977). \newblock Nonphysical sampling distributions in Monte Carlo free-energy estimation: Umbrella sampling. \newblock \emph{Journal of Computational Physics}, \textbf{23}, 187--199. \end{thebibliography} \end{document} mcmc/vignettes/morph.Rnw0000644000175100001440000006124413045741600015043 0ustar hornikusers\documentclass{article} \usepackage{natbib} \usepackage{graphics} \usepackage{amsmath,amssymb} \usepackage{indentfirst} \usepackage[utf8]{inputenc} \usepackage[tableposition=top]{caption} \usepackage{url} \DeclareMathOperator{\var}{var} \DeclareMathOperator{\cov}{cov} \DeclareMathOperator{\E}{E} \newcommand{\inner}[1]{\langle #1 \rangle} % \VignetteIndexEntry{MCMC Morph Example} \begin{document} <>= options(keep.source = TRUE, width = 60) foo <- packageDescription("mcmc") @ \title{Morphometric MCMC (mcmc Package Ver.~\Sexpr{foo$Version})} % $ (Just to make emacs syntax highlighting work properly) \author{Leif T. Johnson \and Charles J. Geyer} \maketitle \section{Overview} This is an example how to use morphometric Markov chains as implemented in the \verb@mcmc@ package in R. Let $X$ be an $\mathbb{R}^k$ valued random variable with probability density function, $f_X$. Let $g$ be a diffeomorphism, and $Y=g(X)$. Then the probability density function of $Y$, $f_Y$ is given by \begin{equation}\label{eq:def-fy} f_Y(y) = f_X\bigl(g^{-1}(y)\bigr) \det\bigl( \nabla g^{-1}(y) \bigr). \end{equation} Since $g$ is a diffeomorphism, we can draw inference about $X$ from information about $Y$ (and vice versa). It is not unusual for $f_X$ to either be known only up to a normalizing constant, or to be analytically intractable in other ways --- such as being high dimensional. A common solution to this problem is to use Markov chain Monte Carlo (MCMC) methods to learn about $f_X$. When using MCMC, a primary concern of the practitioner should be the question ``Does the Markov chain converge fast enough to be useful?'' One very useful convergence rate is called \emph{geometrically ergodic} \citep[Chapter~1]{johnson-thesis}. The \texttt{mcmc} package implements the Metropolis random-walk algorithm for arbitrary log unnormalized probability densities. But the Metropolis random-walk algorithm does not always perform well. As is demonstrated in \citet{johnson-geyer}, for $f_X$ and $f_Y$ related by diffeomorphism as in \eqref{eq:def-fy}, a Metropolis random-walk for $f_Y$ can be geometrically ergodic even though a Metropolis random-walk for $f_X$ is not. Since the transformation is one-to-one, inference about $f_X$ can be drawn from the Markov chain for $f_Y$. The \texttt{morph.metrop} and \texttt{morph} functions in the \texttt{mcmc} package provide this functionality, and this vignette gives a demonstration on how to use them. \section{T Distribution} \label{sec:toy} We start with a univariate example, which is a Student $t$ distribution with three degrees of freedom. Of course, one doesn't need MCMC to simulate this distribution (the R function \texttt{rt} does that), so this is just a toy problem. But it does illustrate some aspects of using variable transformation. A necessary condition for geometric ergodicity of a random-walk Metropolis algorithm is that the target density $\pi$ have a moment generating function \citep{jarner-tweedie}. For a univariate target density, which we have in this section, a sufficient condition for geometric ergodicity of a random-walk Metropolis algorithm is that the target density $\pi$ be exponentially light \citet{mengersen-tweedie}. Thus if we do not use variable transformation, the Markov chain simulated by the \texttt{metrop} function will not be geometrically ergodic. \citet[Example 4.2]{johnson-geyer} show that a $t$ distribution is sub-exponentially light. Hence using the transformations described in their Corollaries~1 and~2 will induce a target density $\pi_\gamma$ for which a Metropolis random-walk will be geometrically ergodic. using the transformation described as $h_2$ in \citet[Corollary~2]{johnson-geyer} will induce a target density for which a Metropolis random-walk will be geometrically ergodic. Passing a positive value for \texttt{b} to \texttt{morph} function will create the aforementioned transformation, $h_2$. It's as simple as <<>>= library(mcmc) h2 <- morph(b=1) @ We can now see the induced density. Note that \texttt{morph} works for log unnormalized densities, so we need exponentiate the induced density to plot it on the usual scale. <<>>= lud <- function(x) dt(x, df=3, log=TRUE) lud.induced <- h2$lud(lud) @ We can plot the two densities, <>= curve(exp(Vectorize(lud.induced)(x)), from = -3, to = 3, lty = 2, xlab = "t", ylab = "density") curve(exp(lud(x)), add = TRUE) legend("topright", c("t density", "induced density"), lty=1:2) @ The \texttt{Vectorize} in this example is necessary because the function \texttt{lud.induced} is not vectorized. Instead, it treats any vector passed as a single input, which is rescaled (using the specified diffeomorphism) and passed to \texttt{lud}. Compare the behavior of \texttt{lud} and \texttt{lud.induced} in the following example. <<>>= lud(1:4) lud(1) foo <- try(lud.induced(1:4)) class(foo) cat(foo, "\n") lud.induced(1) @ Because the function \texttt{dt} is vectorized, the function \texttt{lud} is also vectorized, mapping vectors to vectors, whereas the function \texttt{lud.induced} is not vectorized, mapping vectors to scalars. Before we start using random numbers, we set the seed of the random number generator so this document always produces the same results. <>= set.seed(42) @ To change the results, change the seed or delete the \texttt{set.seed} statement. Running a Markov chain for the induced density is done with \texttt{morph.metrop}. <<>>= out <- morph.metrop(lud, 0, blen=100, nbatch=100, morph=morph(b=1)) @ The content of \texttt{out\$batch} is on the scale of used by \texttt{lud}. Once the transformation has been set, no adjustment is needed (unless you want to change transformations). We start by adjusting the scale. <<>>= # adjust scale to find a roughly 20% acceptance rate out$accept @ An acceptance rate of \Sexpr{round(100 * out$accept, 1)}\% %$ to fix emacs highlighting is probably too high. By increasing the scale of the proposal distribution we can bring it down towards 20\%. <<>>= out <- morph.metrop(out, scale=4) out$accept @ We now use this Markov chain to estimate the expectation of the target distribution. But first we need to check whether our batch length is good. The following code <>= acf(out$batch) @ makes the autocorrelation plot (Figure~\ref{fig:fig0}). \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Autocorrelation plot for the sequence of batch means.} \label{fig:fig0} \end{figure} It looks like there is no significant autocorrelation among the batches so the following produces a valid confidence interval for the true unknown mean of the target distribution (since this is a toy problem we actually know the true ``unknown'' mean is zero, but we pretend we don't know that for the purposes of the toy problem) <<>>= t.test(out$batch) @ If we want a point estimate and a Monte Carlo standard error, those are <<>>= colMeans(out$batch) apply(out$batch, 2, sd) / sqrt(out$nbatch) @ If a shorter confidence interval is desired, the Markov chain can be run longer (increase either the number of batches or the batch length, or both). Note that when calculating our estimate and the Monte Carlo standard error we are not concerned with what was happening on the transformed scale. The \texttt{morph.metrop} function seamlessly does this for us. \subsection{Comparison of Morphed and Unmorphed} To show the utility of the transformation, we will study the behavior of the Markov chain with and without the transformation for the same problem as in the preceding section. We will consider two different estimation methods. \begin{enumerate} \item \label{enum:rw} Estimate the mean of the target distribution using a random-walk Metropolis algorithm implemented by the \texttt{metrop} function. \citet{jarner-roberts} demonstrate that a central limit theorem does not hold for these estimates. \item \label{enum:rw-induced} Estimate the mean of the target distribution using a random-walk Metropolis algorithm implemented by the \texttt{morph.metrop} function with argument \texttt{morph = morph(b=1)}. \citet{johnson-geyer} demonstrate that a central limit theorem does hold for these estimates. \end{enumerate} For the former, we need to adjust the scale. <>= out.unmorph <- metrop(lud, 0, blen=1000, nbatch=1) out.unmorph$accept out.unmorph <- metrop(out.unmorph, scale=4) out.unmorph$accept out.unmorph <- metrop(out.unmorph, scale=6) out.unmorph$accept @ A scale of 6 appears to be about right. Now we do a long run for this sampler. Because this run takes longer than CRAN vingettes are supposed to take, we save the results to a file and load the results from this file if it already exists. <>= lout <- suppressWarnings(try(load("morph1.rda"), silent = TRUE)) if (inherits(lout, "try-error")) { out.unmorph <- metrop(out.unmorph, blen = 1e5, nbatch = 1e3) save(out.unmorph, file = "morph1.rda") } else { .Random.seed <- out.unmorph$final.seed } out.unmorph$accept @ Let's look at the distribution of batch means. The following code <>= foo <- as.vector(out.unmorph$batch) qqnorm(foo) qqline(foo) @ makes a Q-Q plot of the batch means (Figure~\ref{fig:fig4}). \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Q-Q plot of batch means (batch length \Sexpr{out.unmorph$blen}) for the unmorphed chain.} \label{fig:fig4} \end{figure} We see bad behavior of the unmorphed chain. These batch means (or at least some batch means for sufficiently long batch length) should look normally distributed, and these don't. Not even close. We do a formal test just to check our interpretation of the plot <>= shapiro.test(foo) @ Now for comparison, we check the morphed chain. <>= lout <- suppressWarnings(try(load("morph2.rda"), silent = TRUE)) if (inherits(lout, "try-error")) { out.morph <- morph.metrop(out, blen = 1e5, nbatch = 1e3) save(out.morph, file = "morph2.rda") } else { .Random.seed <- out.morph$final.seed } out.morph$accept @ The following code <>= foo <- as.vector(out.morph$batch) qqnorm(foo) qqline(foo) @ makes a Q-Q plot of the batch means (Figure~\ref{fig:fig5}). \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Q-Q plot of batch means (batch length \Sexpr{out.unmorph$blen}) for the morphed chain.} \label{fig:fig5} \end{figure} We see good behavior of the morphed chain. These batch means do look normally distributed. We do a formal test just to check our interpretation of the plot <>= shapiro.test(foo) @ \section{Binomial Distribution with a Conjugate Prior} We demonstrate a morphometric Markov chain using the \texttt{UCBAdmisions} data set included in \texttt{R}, (use \texttt{help(UCBAdmissions)} to see details of this data set). We will model the probability of a student being admitted or rejected, using the sex of the student and the department that the student applied to as predictor variables. For our prior, we naively assume that 30\% of all students are admitted, independent of sex or department. As this is a naive prior, we will only add 5 students to each gender-department combination. This will not give the prior much weight, most of the information in the posterior distribution will be from the data. If we have $L$ observations from a multinomial distribution, then using a multinomial logit-link, with model matrices $M^1,\dots,M^L$, regression parameter $\beta$, observed counts $Y^1,\dots,Y^N$ with observed sample sizes $N^1,\dots,N^L$ and prior probabilities $\xi^1, \dots, \xi^L$ and prior ``sample sizes'' $\nu^1,\dots,\nu^L$ then the posterior distribution of $\beta$ is given by \citep[Sec. 5.1.2]{johnson-thesis} \begin{equation}\label{eq:mult-post-conj-complicated} \pi(\beta|y,n,\xi,\nu) \propto \exp\biggl\{ \sum_{l=1}^L \inner{y^l + \xi^l \nu^l, M^l \beta} - (n^l + \nu^l) \log\bigl( \sum_j e^{M_{j\cdot} \beta} \bigr) \biggr\} \end{equation} where $\inner{a, b}$ denotes the usual inner product between vectors $a$ and $b$. For our application, we can simplify this in two ways. First, we use the posterior counts instead of the sum of the prior and data counts, i.e. use $y^{*l} = y^l + \xi^l \nu^l$ and $n^{*l} = n^l + \nu^l$. Second, to avoid having a direction of recession in $\pi(\beta|\cdot)$, we need to fix the elements of $\beta$ that correspond with one of the response categories. Since we are going to fitting a binomial response, if we set these elements of $\beta$ to be $0$, we may then replace the sequence of model matrices with a single model matrix; $M$ instead of $M^1,\dots,M^L$. The $l$-th row of $M$ will correspond to $M^l$. Label the two response categories $A$ and $B$. Without loss of generality, we will fix the elements of $\beta$ corresponding to category $B$ to 0. Let $x_1,\dots,x_L$ represent the posterior counts of category $A$, and $\beta^*$ represent the corresponding elements of $\beta$ --- these are the elements of $\beta$ we did not fix as 0. The meaning of $n^{*1},\dots,n^{*L}$ is unchanged. Then our simplified unnormalized posterior density is \begin{equation}\label{eq:simplified-posterior} \pi(\beta|x,n^*) \propto \exp\biggl\{ \inner{x, M \beta^*} - \sum_{l=1}^L n^{*l} \log\bigl(1 + e^{(M \beta^*)_l}\bigr) \biggr\}. \end{equation} This can be computed with a very simple \texttt{R} function, we implement it in log form. <>= lud.binom <- function(beta, M, x, n) { MB <- M %*% beta sum(x * MB) - sum(n * log(1 + exp(MB))) } @ Now that we have a function to calculate a log-unnormalized posterior density, we can run the Markov chain. To that, we need the model matrix. First we convert the \texttt{UCAdmissions} data to a \texttt{data.frame}. <>= dat <- as.data.frame(UCBAdmissions) dat.split <- split(dat, dat$Admit) dat.split <- lapply(dat.split, function(d) { val <- as.character(d$Admit[1]) d["Admit"] <- NULL names(d)[names(d) == "Freq"] <- val d }) dat <- merge(dat.split[[1]], dat.split[[2]]) @ Next we build the model matrix. Our model specification allows for an interaction between gender and department, even though our prior assumes that they are independent. <>= formula <- cbind(Admitted, Rejected) ~ (Gender + Dept)^2 mf <- model.frame(formula, dat) M <- model.matrix(formula, mf) @ As stated above, we will take $\nu = 5$ and $\xi=0.30$. That is, we will add 5 students to each gender-department combination, where each combination has a 30\% acceptance rate. <<>>= xi <- 0.30 nu <- 5 @ <>= lud.berkeley <- function(B) lud.binom(B, M, dat$Admitted + xi * nu, dat$Admitted + dat$Rejected + nu) @ This function is suitable for passing to \texttt{metrop} or \texttt{morph.metrop}. We know that using \texttt{morph.metrop} with \texttt{morph=morph(p=3)} will run a geometrically ergodic Markov chain \citep{johnson-geyer}. <<>>= berkeley.out <- morph.metrop(lud.berkeley, rep(0, ncol(M)), blen=1000, nbatch=1, scale=0.1, morph=morph(p=3)) berkeley.out$accept berkeley.out <- morph.metrop(berkeley.out, scale=0.05) berkeley.out$accept berkeley.out <- morph.metrop(berkeley.out, scale=0.02) berkeley.out$accept berkeley.out <- morph.metrop(berkeley.out, blen=10000) berkeley.out$accept @ <<>>= berkeley.out <- morph.metrop(berkeley.out, blen=1, nbatch=100000) @ Estimate the posterior mean acceptance probabilities for each gender-department combination. <<>>= beta <- setNames(colMeans(berkeley.out$batch), colnames(M)) MB <- M %*% beta dat$p <- dat$Admitted / (dat$Admitted + dat$Rejected) dat$p.post <- exp(MB) / (1 + exp(MB)) dat @ The small difference between the data and posterior probabilities is expected, our prior was given very little weight. Using \texttt{morph.metrop} with the setting \texttt{morph=morph(p=3)} in this setting is an efficient way of sampling from the posterior distribution. We can also compare the posterior distribution of admittance probability for each gender-department combination. Table~\ref{tab:post-quant} gives the 5\% and 95\% quantiles for the posterior distribution of the admittance probabilities for each gender-department combination. Figure~\ref{fig:posterior-probs} gives the same quantiles, plus the mean posterior-probability for each gender-department combination. From these we can see that for each department, there is considerable overlap of the distributions of probabilities for males and females. <>= posterior.probabilities <- t(apply(berkeley.out$batch, 1, function(r) { eMB <- exp(M %*% r) eMB / (1 + eMB) })) quants <- apply(posterior.probabilities, 2, quantile, prob=c(0.05, 0.95)) quants.str <- matrix(apply(quants, 2, function(r) sprintf("[%0.2f, %0.2f]", r[1], r[2])), nrow=2, byrow=TRUE) @ \begin{table}[ht] \caption{5\% and 95\% posterior quantiles for admittance probability for each gender-department combination} \begin{center} \begin{tabular}{|l|c|c|c|c|c|c|} \hline Gender & Dept. A & Dept. B & Dept. C & Dept. D & Dept. E. & Dept. F \\ \hline Female & \Sexpr{paste(quants.str[1, 1:6], collapse=" & ")} \\ Male & \Sexpr{paste(quants.str[2, 1:6], collapse=" & ")} \\ \hline \end{tabular} \label{tab:post-quant} \end{center} \end{table} \begin{figure} \begin{center} <>= x <- (0:5) * 2 + 1 plot(x[c(1, 6)] + 0.5 * c(-1, 1), 0:1, xlab="Department", ylab="Probability", xaxt="n", type="n") axis(1, x, LETTERS[1:6]) for(i in 1:6) { lines((x[i]-0.25)*c(1, 1), quants[1:2, i], lwd=2, col="gray") lines((x[i] + 0.25) * c(1, 1), quants[1:2, i + 6], lwd=2, col="gray") points(x[i] + 0.25 * c(-1, 1), dat$p.post[i + c(0, 6)], pch=c("F", "M")) } @ \end{center} \caption{Posterior 5\% and 95\% quantiles and mean, by department and gender.} \label{fig:posterior-probs} \end{figure} \section{Cauchy Location-Scale Model} We are going to do a Cauchy location-scale family objective Bayesianly. \subsection{Data} First we generate some data. <>= n <- 15 mu0 <- 50 sigma0 <- 10 x <- rcauchy(n, mu0, sigma0) round(sort(x), 1) @ \texttt{mu0} and \texttt{sigma0} are the true unknown parameter values (since the data are simulated we actually know these ``unknown'' parameter values, but we must pretend we don't know them and estimate them). \subsection{Prior} The standard objective prior distribution for this situation (insofar as any prior distribution can be said to be an objective standard) is the improper prior $$ g(\mu, \sigma) = \frac{1}{\sigma} $$ which is right Haar measure for the location-scale group, and is the standard prior that comes from the group invariance argument \citep[Section~3.2]{kass-wasserman}. \subsection{Log Unnormalized Posterior} We need a function whose argument is a two-vector <>= lup <- function(theta) { if (any(is.na(theta))) stop("NA or NaN in input to log unnormalized density function") mu <- theta[1] sigma <- theta[2] if (sigma <= 0) return(-Inf) if (any(! is.finite(theta))) return(-Inf) result <- sum(dcauchy(x, mu, sigma, log = TRUE)) - log(sigma) if (! is.finite(result)) { warning(paste("Oops! mu = ", mu, "and sigma =", sigma)) } return(result) } @ \subsection{Laplace Approximation} To have some idea what we are doing, we first maximize the log unnormalized posterior. To do it helps to have good starting points for the optimization. Robust estimators of location and scale are <>= mu.twiddle <- median(x) sigma.twiddle <- IQR(x) c(mu.twiddle, sigma.twiddle) @ The posterior mode is <>= oout <- optim(c(mu.twiddle, sigma.twiddle), lup, control = list(fnscale = -1), hessian = TRUE) stopifnot(oout$convergence == 0) mu.hat <- oout$par[1] sigma.hat <- oout$par[2] c(mu.hat, sigma.hat) @ and the hessian evaluated at the posterior mode (calculated by \texttt{optim} using finite differences) is <>= oout$hessian @ The hessian is nearly diagonal and one can check that theoretically is exactly diagonal. Thus approximate (asymptotic) posterior standard deviations are <>= sqrt(- 1 / diag(oout$hessian)) @ \subsection{Theory} To use the theory in \citet{johnson-geyer} we must verify that the target distribution (the unnormalized posterior) is everywhere positive, and it isn't (it is zero for $\sigma \le 0$). We tried making $\log(\sigma)$ the parameter but this didn't work either because $\log(\sigma)$ goes to infinity so slowly that this stretches out the tails so much that the transformations introduced by \citet{johnson-geyer} can't pull them back in again. We do know \citep[Example~3.4]{johnson-geyer} that if we fix $\sigma$ this is a sub-exponentially light target distribution. Letting $\sigma$ vary can only make this worse. Thus, if we don't do anything and just use the \texttt{metrop} function, then performance will be very bad. So we are going to use the transformations and the \texttt{morph.metrop} function, even though the theory that motivates them does not hold. \subsection{Morph} We want to center the transformation at the posterior mode, and use a radius $r$ that doesn't transform until several approximate standard deviations <>= moo <- morph(b = 0.5, r = 7, center = c(mu.hat, sigma.hat)) mout <- morph.metrop(lup, c(mu.hat, sigma.hat), 1e4, scale = 3, morph = moo) mout$accept mout <- morph.metrop(mout) @ Good enough. An attempt to increase the scale led to error when the transformation functions overflowed. Can't take steps too big with this stuff. The following code <>= acf(mout$batch) @ makes an autocorrelation plot (Figure~\ref{fig:cfig1}). \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Autocorrelation plot. First component is $\mu$, second is $\sigma$.} \label{fig:cfig1} \end{figure} It looks like lag 10 to 15 is enough to get near independence. Now we want to make marginal density plots. If we just feed our MCMC output to the R function \texttt{density} it undersmooths because it expects independent and identically distributed data rather than autocorrelated data. Thus we feed it subsampled, nearly uncorrelated data to select the bandwidth and then use that bandwidth on the full data. Here's how that works. The following code <>= mu <- mout$batch[ , 1] i <- seq(1, mout$nbatch, by = 15) out.sub <- density(mu[i]) out <- density(mu, bw = out.sub$bw) plot(out) @ makes the density plot (Figure~\ref{fig:cfig2}). \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Density plot for the marginal posterior for $\mu$.} \label{fig:cfig2} \end{figure} And a similar plot for $\sigma$ (Figure~\ref{fig:cfig3}) \begin{figure} \begin{center} <>= sigma <- mout$batch[ , 2] out.sub <- density(sigma[i]) out <- density(sigma, bw = out.sub$bw) plot(out) @ \end{center} \caption{Density plot for the marginal posterior for $\sigma$.} \label{fig:cfig3} \end{figure} \begin{thebibliography}{} \bibitem[Jarner and Roberts(2007)]{jarner-roberts} Jarner, S.F., and G.O. Roberts (2007). \newblock Convergence of heavy-tailed Monte Carlo Markov chain algorithms. \newblock \emph{Scandinavian Journal of Statistics}, 34, 781--815. \bibitem[Jarner and Tweedie(2003)]{jarner-tweedie} Jarner, S.~F., and Tweedie, R.~L. (2003). \newblock Necessary conditions for geometric and polynomial ergodicity of random-walk-type Markov chains. \newblock \emph{Bernoulli}, 9, 559--578. \bibitem[Johnson(2011)]{johnson-thesis} Johnson, L.~T. (2011). \newblock Geometric Ergodicity of a Random-Walk Metropolis Algorithm via Variable Transformation and Computer Aided Reasoning in Statistics. \newblock Ph.~D. thesis. University of Minesota. \url{http://purl.umn.edu/113140} \bibitem[Johnson and Geyer(submitted)]{johnson-geyer} Johnson, L.~T., and C.~J. Geyer (submitted). \newblock Variable Transformation to Obtain Geometric Ergodicity in the Random-walk Metropolis Algorithm. \newblock Revised and resubmitted to \emph{Annals of Statistics}. \bibitem[Kass and Wasserman(1996)]{kass-wasserman} Kass, R.~E., and Wasserman, L. (1996). \newblock Formal rules for selecting prior distributions: A review and annotated bibliography. \newblock \emph{Journal of the American Statistical Association}, 435, 1343--1370. \bibitem[Mengersen and Tweedie(1996)]{mengersen-tweedie} Mengersen, K.L., ad R. L. Tweedie (1996). \newblock Rates of convergence of the Hastings and Metropolis algorithms. \newblock \emph{Annals of Statistics}, 24, 101--121. \end{thebibliography} \end{document} mcmc/MD50000644000175100001440000001266213074643067011540 0ustar hornikusers138382003fae18121d80493a77c746b0 *ChangeLog 7528d4ed73466557515a2a18e83349eb *DESCRIPTION 66e0aaa6082a6fa8bd0f666e544a98b0 *LICENSE c81060b27aff47c1bd4ce68b2c23ec6d *NAMESPACE 155b2ace5476c068fb4814b8425a47ce *R/initseq.R 71e5a5334d09404178307b3b050e162c *R/metrop.R f403046228ade5ac29a4f8f0bb91aabf *R/morph.R 4b899785af3a35a3a773946c6f13b4ca *R/morph.metrop.R 32904f94f9bb3c753c588bf823fe5736 *R/olbm.R 8b7c70bee3c0a14385f00819329efa01 *R/temper.R 7e147cf7b06b190e5aef3a22e9b4d4f0 *build/vignette.rds c13cfd5bf58c446f5aa035cb7611c3ed *data/foo.txt.gz fd9bd39298983c002e96c9e7373200a8 *data/logit.txt.gz e9a42dd6281a9fafded00cf37ece0474 *inst/designDoc/Makefile bb2ba2d13ff2fc81e79f0af3f9ba8ce1 *inst/designDoc/metrop.tex 177420ab597fd25ca27435d726117a89 *inst/designDoc/temper.tex 80b096a40b8dc0ba718641000bab7114 *inst/doc/bfst.R 756267219c99d98813a8154e4b7b46f4 *inst/doc/bfst.Rnw 8f5d2cb8fdad3a7b73e267de092bb857 *inst/doc/bfst.pdf 85f1c6719e9b9dcf3b56c6eb016935ee *inst/doc/debug.R c5d145108c9efcff74744153fc68bfe0 *inst/doc/debug.Rnw 9bd8b4c0426d0637cab5201dcdd0c6c9 *inst/doc/debug.pdf 63f74f8a150711d3ba8065b174636ecb *inst/doc/demo.R 53007c6969b412aed8ca356ff9347e5a *inst/doc/demo.Rnw 84be0228cc6646f9694faf98744abf60 *inst/doc/demo.pdf eee3eab8bad54767874ff95db49780c7 *inst/doc/metrop.pdf a52b909d82f36678ee7921fd12d80595 *inst/doc/morph.R 018df3c12cabc9de877013fe309d7447 *inst/doc/morph.Rnw b55989c80ddec56647c8803aaaadff6e *inst/doc/morph.pdf bddbd4104ab4dd35d879d8966e43172d *inst/doc/temper.pdf fede69d8e361ef6548637fe54060f709 *man/foo.Rd f77daf0c3cd0922e649a4a6c03a362fd *man/initseq.Rd 828a4296b11b5041ca9ab38eb74c8b2b *man/logit.Rd 3f701bc767ea7a47c7fd16458cc0071a *man/metrop.Rd 7f8ec860609476a448d615d70ff074e2 *man/morph.Rd 656dc31b07400ce3202b0719692b6fba *man/morph.metrop.Rd 7c7a9b03f5b124f4e7b8199c1df65e0b *man/olbm.Rd bdfc90719ce178e29799d71292e50c5d *man/temper.Rd a84ff979fcebdfd681f7bacc511a9dc3 *src/Makevars 7af348c402a68bcf2bcedd2c87ce4aa2 *src/getListElement.c 6fecff8a940cfa809b45ebb1523c0d87 *src/getScalarInteger.c e1c4052ef70efd7ece2693cdda8eb27e *src/getScalarLogical.c ca127a858f1408883f270c294e48d442 *src/init.c ed445c70ff467c056b2243fdc2ade515 *src/initseq.c 9df5ac56584e97897a7ba7c10e391ec5 *src/isAllFinite.c 94f2888f854ec400c97c16127e7e5991 *src/mcmc.h a51ff07fbc322a8d506033e199b82d74 *src/metrop.c be70313e2880a45c4ff804b31a18aa2a *src/myutil.h f67bdf45f0c4f15f6d0479720f8a265a *src/olbm.c 2df8112d1e652db998b434ca5dcc6ec8 *src/temper.c 772ede8af6bc2b8753e998f5cf39edc3 *tests/accept-batch.R 38d56fcfbd5127790b8002affff4ca58 *tests/accept-batch.Rout.save 30579f6813cad807b8c301897da45de6 *tests/circle.R b1d6d5e55c62aaa9f331659161fceba1 *tests/circle.Rout.save e7781d93db17c14e65dd9afee5af1dad *tests/initseq.R 086ea1cdd4092988cfb7f8c43f24a596 *tests/initseq.Rout.save 01f734e085fc75dc37615d76381f9568 *tests/isotropic.R 7b1a10898e9abe34fab48f6c43aa51a3 *tests/isotropic.Rout.save ced46ef84ed611b440a653bae2b25805 *tests/logit.R fbed3c07f389f3d184457e82098b4057 *tests/logit.Rout.save 0fde60fa5097a775ee157fff16d2a59e *tests/logitbat.R e8a16c5b726f225061edc5757e6595c1 *tests/logitbat.Rout.save 0a1fc457e1b2ab0216488c9666be211e *tests/logitfun.R cbf893997832a1b30d6d3694ebdd6937 *tests/logitfun.Rout.save 5db180c421281a11a8f1cd46043b4fa0 *tests/logitfunarg.R 2b5aa1b25cf19934a83d6b32641217fe *tests/logitfunarg.Rout.save 2576700457eafee888139309ee8b95fa *tests/logitidx.R 950a2753391a7e8c81fff604cba087a2 *tests/logitidx.Rout.save 7a2c271c18d53312291dee40418e12bc *tests/logitlogidx.R 3b4b09c246712b9397deed8c89dd0f86 *tests/logitlogidx.Rout.save 6b721b8a80f8f732bda17972d95c3fa3 *tests/logitmat.R b92f632b513b4af1e57843e7547aeacb *tests/logitmat.Rout.save 11e13ee697c0cb513728b89580c1a22f *tests/logitnegidx.R 7bc0f8e352a432dfc574f54505e2e624 *tests/logitnegidx.Rout.save c6f8f05fa12d1f9ad774438181c4cb5d *tests/logitsub.R 35c123712c42df695c80d553bc08db47 *tests/logitsub.Rout.save 7432d0f64ce00cc031e9b5b09178506b *tests/logitsubbat.R 555fb26065eb2213b0fad8baa7226f01 *tests/logitsubbat.Rout.save dcbc8752e05665f204812c82515c6320 *tests/logitvec.R a9884c4e3994725d60f279b2a139a42d *tests/logitvec.Rout.save 850d625fead9ff993eb8daedb9701742 *tests/morph.R f71816a66c639975e79cf40410c22037 *tests/morph.Rout.save 22f5e0b4adc734ec63ffc8491500b244 *tests/morph.metrop.R 803417a95108119bccb2c448216ee59b *tests/morph.metrop.Rout.save 984594df82bfcbac4479d524237123f4 *tests/morphtoo.R dbc222dd8db7af358381261431ee0f7c *tests/morphtoo.Rout.save 81c5b299d1b20a8168a25b6c9d209f2e *tests/saveseed.R 1d84beebb0113a970da2a3f337c57ff3 *tests/saveseed.Rout.save eb13e0e12345cdaa38d2625f813b5ac9 *tests/saveseedmorph.R 48d749cc35ad957b44a12cf2d141273e *tests/saveseedmorph.Rout.save 5b83e074fcecbc7154205d007e49ff00 *tests/temp-par-witch.R a3794f2948a37ac905ae40116cdf9307 *tests/temp-par.R 9250646eaf3dc450d59e1cb6353ce00d *tests/temp-par.Rout.save e0cdab5f26ba0548eacfaac87368b5d5 *tests/temp-ser-witch.R bebac06312e39a1df0e94f7f0fdf585f *tests/temp-ser-witch.Rout.save 3348850e6103ab402de362dcdf2b717b *tests/temp-ser.R 40b5272b2e05b56db8e4eb4b03703935 *tests/temp-ser.Rout.save 756267219c99d98813a8154e4b7b46f4 *vignettes/bfst.Rnw 9020ac34c43c9a166b7e6529f3dcedeb *vignettes/bfst1.rda 16bf2cf64bb79d5d3c7d69cd596fbebf *vignettes/bfst2.rda c5d145108c9efcff74744153fc68bfe0 *vignettes/debug.Rnw 53007c6969b412aed8ca356ff9347e5a *vignettes/demo.Rnw 018df3c12cabc9de877013fe309d7447 *vignettes/morph.Rnw 584ffd92ffbf78907b1f5f826d0f8196 *vignettes/morph1.rda 747e3888d39cbdc4a283e69686e0bc20 *vignettes/morph2.rda mcmc/build/0000755000175100001440000000000013074514644012316 5ustar hornikusersmcmc/build/vignette.rds0000644000175100001440000000044513074514644014660 0ustar hornikusersRN0R&#y1$F MFE09\NEyc< .ށ \ rDukK16 9ORXV'nHJԆ and Leif T. Johnson Maintainer: Charles J. Geyer Depends: R (>= 3.0.2) Imports: stats, compiler Suggests: xtable, Iso ByteCompile: TRUE Description: Simulates continuous distributions of random vectors using Markov chain Monte Carlo (MCMC). Users specify the distribution by an R function that evaluates the log unnormalized density. Algorithms are random walk Metropolis algorithm (function metrop), simulated tempering (function temper), and morphometric random walk Metropolis (Johnson and Geyer, 2012, , function morph.metrop), which achieves geometric ergodicity by change of variable. License: MIT + file LICENSE URL: http://www.stat.umn.edu/geyer/mcmc/, https://github.com/cjgeyer/mcmc NeedsCompilation: yes Packaged: 2017-04-15 22:07:33 UTC; geyer Repository: CRAN Date/Publication: 2017-04-16 10:23:50 UTC mcmc/ChangeLog0000644000175100001440000000630013074505364012767 0ustar hornikusers 0.4.1 fixed documentation for metrop 0.5 changed licence to X11 (was AFL, which apparently sucks) changed to NAMESPACE cleaned up latex in inst/doc, added Makefile removed src/Makevars had to get rid of R_IsNaNorNA in src/metrop.c generally, lots of changes to get ready for CRAN all of the tests/*.Rout.save redone because the digits in numerical printing seem to have changed -- cannot get bit for bit identical with earlier R (even before code changes). changed first arg of metrop from "o" to "obj" 0.5-1 changed package vignette to fix bogus MCSE calculation (bogosity still admitted and explained in appendix). 0.6 added initseq function 0.7 added temper function -- not tested yet 0.7-1 fix bug && to || much confusion about whether my_i and my_j were 0-origin or 1-origin forgot to allocate debug_acceptd confusion about dimension of state (nx + 1 vector if serial, ncomp x nx matrix if parallel) and <= nx versus < nx in loop bounds bug where my_swapped_proposal_log_dens was used twice when one should have been my_swapped_coproposal_log_dens bug in dimension of debug_state when parallel (last dim nx not nx + 1) accepted swap didn't actually swap, fixed all the accept decisions when log_hastings_ratio < 0 were backwards batch means accumulation has = instead of += batch means divided by nbatch rather than blen accepti entries stored in wrong places in output structure ripped out old system for caching lud values, put in new that caches all (more efficient, but real reason was old was broken somehow) of course, its first implementation had 0-origin vs 1-origin confuse yet another instance 0-origin vs 1-origin confusion (my_i should be my_i - 1 length of output structure (len_result) determined incorrectly, fixed caching of current lud value broken in serial case (stored in i not j) after all that, everything now checked even with --use-valgrind and --use-gct 0.7-3 add bugs section to initseq.Rd fix example in temper.Rd to actually be for temper rather than metrop fix comment in temper.c add inst/doc/debug.Rnw a vignette about debugging and debug output 0.7-4 some changes to /inst/doc/demo.Rnw 0.7-5 add inst/doc/bfst.Rnw a vignette about Bayes factors and serial tempering 0.8 earlier versions calculated the Hastings ratio wrong in doing serial tempering, ignoring the number of neighbors each component had, hence computing wrong answers when components differed in number of neighbors 0.9 morph, morph.metrop functions and morph.pdf vignette bumped required R version to 2.10.0 (required by xtable) 0.9-1 added PACKAGE = "mcmc" where missing to .C and .Call 0.9-3 move vignettes to vignettes directory changed LICENCE file yet again as per CRAN requirements 0.9-4 cleaned up some tests import from stats, as required by R-3.3.0 0.9-5 use registration of native routines described in Sections 5.4 and 6.15 of Writing R Extensions add calls to cmpfun inside metrop and temper mcmc/man/0000755000175100001440000000000013063023671011763 5ustar hornikusersmcmc/man/metrop.Rd0000644000175100001440000002757113063023671013574 0ustar hornikusers\name{metrop} \alias{metrop} \alias{metrop.function} \alias{metrop.metropolis} \title{Metropolis Algorithm} \description{ Markov chain Monte Carlo for continuous random vector using a Metropolis algorithm. } \usage{ metrop(obj, initial, nbatch, blen = 1, nspac = 1, scale = 1, outfun, debug = FALSE, ...) \method{metrop}{function}(obj, initial, nbatch, blen = 1, nspac = 1, scale = 1, outfun, debug = FALSE, ...) \method{metrop}{metropolis}(obj, initial, nbatch, blen = 1, nspac = 1, scale = 1, outfun, debug = FALSE, ...) } \arguments{ \item{obj}{Either an \R function or an object of class \code{"metropolis"} from a previous invocation of this function. If a function, it evaluates the log unnormalized probability density of the desired equilibrium distribution of the Markov chain. Its first argument is the state vector of the Markov chain. Other arguments arbitrary and taken from the \code{...} arguments of this function. It should return \code{-Inf} for points of the state space having probability zero under the desired equilibrium distribution. See also Details and Warning. If an object of class \code{"metropolis"}, any missing arguments (including the log unnormalized density function) are taken from this object. Also \code{initial} is ignored and the initial state of the Markov chain is the final state from the run recorded in \code{obj}. } \item{initial}{a real vector, the initial state of the Markov chain. Must be feasible, see Details. Ignored if \code{obj} is of class \code{"metropolis"}.} \item{nbatch}{the number of batches.} \item{blen}{the length of batches.} \item{nspac}{the spacing of iterations that contribute to batches.} \item{scale}{controls the proposal step size. If scalar or vector, the proposal is \code{x + scale * z} where \code{x} is the current state and \code{z} is a standard normal random vector. If matrix, the proposal is \code{x + scale \%*\% z}.} \item{outfun}{controls the output. If a function, then the batch means of \code{outfun(state, ...)} are returned. If a numeric or logical vector, then the batch means of \code{state[outfun]} (if this makes sense). If missing, the the batch means of \code{state} are returned.} \item{debug}{if \code{TRUE} extra output useful for testing.} \item{...}{additional arguments for \code{obj} or \code{outfun}.} } \details{ Runs a \dQuote{random-walk} Metropolis algorithm, terminology introduced by Tierney (1994), with multivariate normal proposal producing a Markov chain with equilibrium distribution having a specified unnormalized density. Distribution must be continuous. Support of the distribution is the support of the density specified by argument \code{obj}. The initial state must satisfy \code{obj(state, ...) > -Inf}. Description of a complete MCMC analysis (Bayesian logistic regression) using this function can be found in the vignette \code{vignette("demo", "mcmc")}. Suppose the function coded by the log unnormalized function (either \code{obj} or \code{obj$lud}) is actually a log unnormalized density, that is, if \eqn{w} denotes that function, then \eqn{e^w}{exp(w)} integrates to some value strictly between zero and infinity. Then the \code{metrop} function always simulates a reversible, Harris ergodic Markov chain having the equilibrium distribution with this log unnormalized density. The chain is not guaranteed to be geometrically ergodic. In fact it cannot be geometrically ergodic if the tails of the log unnormalized density are sufficiently heavy. The \code{\link{morph.metrop}} function deals with this situation. } \value{ an object of class \code{"mcmc"}, subclass \code{"metropolis"}, which is a list containing at least the following components: \item{accept}{fraction of Metropolis proposals accepted.} \item{batch}{\code{nbatch} by \code{p} matrix, the batch means, where \code{p} is the dimension of the result of \code{outfun} if \code{outfun} is a function, otherwise the dimension of \code{state[outfun]} if that makes sense, and the dimension of \code{state} when \code{outfun} is missing.} \item{accept.batch}{a vector of length \code{nbatch}, the batch means of the acceptances.} \item{initial}{value of argument \code{initial}.} \item{final}{final state of Markov chain.} \item{initial.seed}{value of \code{.Random.seed} before the run.} \item{final.seed}{value of \code{.Random.seed} after the run.} \item{time}{running time of Markov chain from \code{system.time()}.} \item{lud}{the function used to calculate log unnormalized density, either \code{obj} or \code{obj$lud} from a previous run.} \item{nbatch}{the argument \code{nbatch} or \code{obj$nbatch}.} \item{blen}{the argument \code{blen} or \code{obj$blen}.} \item{nspac}{the argument \code{nspac} or \code{obj$nspac}.} \item{outfun}{the argument \code{outfun} or \code{obj$outfun}.} Description of additional output when \code{debug = TRUE} can be found in the vignette \code{debug} (\url{../doc/debug.pdf}). } \section{Warning}{ If \code{outfun} is missing or not a function, then the log unnormalized density can be defined without a \ldots argument and that works fine. One can define it starting \code{ludfun <- function(state)} and that works or \code{ludfun <- function(state, foo, bar)}, where \code{foo} and \code{bar} are supplied as additional arguments to \code{metrop}. If \code{outfun} is a function, then both it and the log unnormalized density function can be defined without \ldots arguments \emph{if they have exactly the same arguments list} and that works fine. Otherwise it doesn't work. Define these functions by \preformatted{ ludfun <- function(state, foo) outfun <- function(state, bar) } and you get an error about unused arguments. Instead define these functions by \preformatted{ ludfun <- function(state, foo, \ldots) outfun <- function(state, bar, \ldots) } and supply \code{foo} and \code{bar} as additional arguments to \code{metrop}, and that works fine. In short, the log unnormalized density function and \code{outfun} need to have \ldots in their arguments list to be safe. Sometimes it works when \ldots is left out and sometimes it doesn't. Of course, one can avoid this whole issue by always defining the log unnormalized density function and \code{outfun} to have only one argument \code{state} and use global variables (objects in the \R global environment) to specify any other information these functions need to use. That too follows the \R way. But some people consider that bad programming practice. } \section{Philosophy of MCMC}{ This function follows the philosophy of MCMC explained the introductory chapter of the \emph{Handbook of Markov Chain Monte Carlo} (Geyer, 2011). This function automatically does batch means in order to reduce the size of output and to enable easy calculation of Monte Carlo standard errors (MCSE), which measure error due to the Monte Carlo sampling (not error due to statistical sampling --- MCSE gets smaller when you run the computer longer, but statistical sampling variability only gets smaller when you get a larger data set). All of this is explained in the package vignette \code{vignette("demo", "mcmc")} and in Section 1.10 of Geyer (2011). This function does not apparently do \dQuote{burn-in} because this concept does not actually help with MCMC (Geyer, 2011, Section 1.11.4) but the re-entrant property of this function does allow one to do \dQuote{burn-in} if one wants. Assuming \code{ludfun}, \code{start.value}, \code{scale} have been already defined and are, respectively, an \R function coding the log unnormalized density of the target distribution, a valid state of the Markov chain, and a useful scale factor, \preformatted{ out <- metrop(ludfun, start.value, nbatch = 1, blen = 1e5, scale = scale) out <- metrop(out, nbatch = 100, blen = 1000) } throws away a run of 100 thousand iterations before doing another run of 100 thousand iterations that is actually useful for analysis, for example, \preformatted{ apply(out$batch, 2, mean) apply(out$batch, 2, sd) / sqrt(out$nbatch) } give estimates of posterior means and their MCSE assuming the batch length (here 1000) was long enough to contain almost all of the signifcant autocorrelation (see Geyer, 2011, Section 1.10, for more on MCSE). The re-entrant property of this function (the second run starts where the first one stops) assures that this is really \dQuote{burn-in}. The re-entrant property allows one to do very long runs without having to do them in one invocation of this function. \preformatted{ out2 <- metrop(out) out3 <- metrop(out2) batch <- rbind(out$batch, out2$batch, out3$batch) } produces a result as if the first run had been three times as long. } \section{Tuning}{ The \code{scale} argument must be adjusted so that the acceptance rate is not too low or too high to get reasonable performance. The rule of thumb is that the acceptance rate should be about 25\%. But this recommendation (Gelman, et al., 1996) is justified by analysis of a toy problem (simulating a spherical multivariate normal distribution) for which MCMC is unnecessary. There is no reason to believe this is optimal for all problems (if it were optimal, a stronger theorem could be proved). Nevertheless, it is clear that at very low acceptance rates the chain makes little progress (because in most iterations it does not move) and that at very high acceptance rates the chain also makes little progress (because unless the log unnormalized density is nearly constant, very high acceptance rates can only be achieved by very small values of \code{scale} so the steps the chain takes are also very small. Even in the Gelman, et al. (1996) result, the optimal rate for spherical multivariate normal depends on dimension. It is 44\% for \eqn{d = 1} and 23\% for \eqn{d = \infty}{d = infinity}. Geyer and Thompson (1995) have an example, admittedly for simulated tempering (see \code{\link{temper}}) rather than random-walk Metropolis, in which no acceptance rate less than 70\% produces an ergodic Markov chain. Thus 25\% is merely a rule of thumb. We only know we don't want too high or too low. Probably 1\% or 99\% is very inefficient. } \references{ Gelman, A., Roberts, G. O., and Gilks, W. R. (1996) Efficient Metropolis jumping rules. In \emph{Bayesian Statistics 5: Proceedings of the Fifth Valencia International Meeting}. Edited by J. M. Bernardo, J. O. Berger, A. P. Dawid, and A. F. M. Smith. Oxford University Press, Oxford, pp. 599--607. Geyer, C. J. (2011) Introduction to MCMC. In \emph{Handbook of Markov Chain Monte Carlo}. Edited by S. P. Brooks, A. E. Gelman, G. L. Jones, and X. L. Meng. Chapman & Hall/CRC, Boca Raton, FL, pp. 3--48. Geyer, C. J. and Thompson, E. A. (1995). Annealing Markov chain Monte Carlo with applications to ancestral inference. \emph{Journal of the American Statistical Association} \bold{90} 909--920. Tierney, L. (1994) Markov chains for exploring posterior distributions (with discussion). \emph{Annals of Statistics} \bold{22} 1701--1762. } \seealso{ \code{\link{morph.metrop}} and \code{\link{temper}} } \examples{ h <- function(x) if (all(x >= 0) && sum(x) <= 1) return(1) else return(-Inf) out <- metrop(h, rep(0, 5), 1000) out$accept # acceptance rate too low out <- metrop(out, scale = 0.1) out$accept t.test(out$accept.batch)$conf.int # acceptance rate o. k. (about 25 percent) plot(out$batch[ , 1]) # but run length too short (few excursions from end to end of range) out <- metrop(out, nbatch = 1e4) out$accept plot(out$batch[ , 1]) hist(out$batch[ , 1]) acf(out$batch[ , 1], lag.max = 250) # looks like batch length of 250 is perhaps OK out <- metrop(out, blen = 250, nbatch = 100) apply(out$batch, 2, mean) # Monte Carlo estimates of means apply(out$batch, 2, sd) / sqrt(out$nbatch) # Monte Carlo standard errors t.test(out$accept.batch)$conf.int acf(out$batch[ , 1]) # appears that blen is long enough } \keyword{misc} mcmc/man/olbm.Rd0000644000175100001440000000233213063023671013203 0ustar hornikusers\name{olbm} \alias{olbm} \title{Overlapping Batch Means} \description{ Variance of sample mean of time series calculated using overlapping batch means. } \usage{ olbm(x, batch.length, demean = TRUE) } \arguments{ \item{x}{a matrix or time series object. Each column of \code{x} is treated as a scalar time series.} \item{batch.length}{length of batches.} \item{demean}{when \code{demean = TRUE} (the default) the sample mean is subtracted from each batch mean when estimating the variance. Using \code{demean = FALSE} would essentially assume the true mean is known to be zero, which might be useful in a toy problem where the answer is known.} } \value{ The estimated variance of the sample mean. } \seealso{ \code{\link{ts}} } \examples{ h <- function(x) if (all(x >= 0) && sum(x) <= 1) return(1) else return(-Inf) out <- metrop(h, rep(0, 5), 1000) out <- metrop(out, scale = 0.1) out <- metrop(out, nbatch = 1e4) foo <- olbm(out$batch, 150) # monte carlo estimates (true means are same by symmetry) apply(out$batch, 2, mean) # monte carlo standard errors (true s. d. are same by symmetry) sqrt(diag(foo)) # check that batch length is reasonable acf(out$batch, lag.max = 200) } \keyword{ts} mcmc/man/logit.Rd0000644000175100001440000000101413045741240013363 0ustar hornikusers\name{logit} \docType{data} \alias{logit} \title{Simulated logistic regression data.} \description{ Like it says } \usage{data(logit)} \format{ A data frame with variables \describe{ \item{x1}{quantitative predictor.} \item{x2}{quantitative predictor.} \item{x3}{quantitative predictor.} \item{x4}{quantitative predictor.} \item{y}{Bernoulli response.} } } \examples{ library(mcmc) data(logit) out <- glm(y ~ x1 + x2 + x3 + x4, family = binomial, data = logit) summary(out) } \keyword{datasets} mcmc/man/morph.Rd0000644000175100001440000001255113045741600013402 0ustar hornikusers\name{morph} \encoding{UTF-8} \alias{morph} \alias{morph.identity} \title{Variable Transformation} \description{ Utility functions for variable transformation. } \usage{ morph(b, r, p, center) morph.identity() } \arguments{ \item{b}{Positive real number. May be missing.} \item{r}{Non-negative real number. May be missing. If \code{p} is specified, \code{r} defaults to 0.} \item{p}{Real number strictly greater than 2. May be missing. If \code{r} is specified, \code{p} defaults to 3.} \item{center}{Real scalar or vector. May be missing. If \code{center} is a vector it should be the same length of the state of the Markov chain, \code{center} defaults to 0} } \section{Warning}{ The equations for the returned \code{transform} function (see below) do not have a general analytical solution when \code{p} is not equal to 3. This implementation uses numerical approximation to calculate \code{transform} when \code{p} is not equal to 3. If computation speed is a factor, it is advisable to use \code{p=3}. This is not a factor when using \code{\link{morph.metrop}}, as \code{transform} is only called once during setup, and not at all while running the Markov chain. } \details{ The \code{morph} function facilitates using variable transformations by providing functions to (using \eqn{X} for the original random variable with the pdf \eqn{f_X}{f.X}, and \eqn{Y} for the transformed random variable with the pdf \eqn{f_Y}{f.Y}): \itemize{ \item Calculate the log unnormalized probability density for \eqn{Y} induced by the transformation. \item Transform an arbitrary function of \eqn{X} to a function of \eqn{Y}. \item Transform values of \eqn{X} to values of \eqn{Y}. \item Transform values of \eqn{Y} to values of \eqn{X} (the inverse transformation). } for a select few transformations. \code{morph.identity} implements the identity transformation, \eqn{Y=X}. The parameters \code{r}, \code{p}, \code{b} and \code{center} specify the transformation function. In all cases, \code{center} gives the center of the transformation, which is the value \eqn{c} in the equation \deqn{Y = f(X - c).} If no parameters are specified, the identity transformation, \eqn{Y=X}, is used. The parameters \code{r}, \code{p} and \code{b} specify a function \eqn{g}, which is a monotonically increasing bijection from the non-negative reals to the non-negative reals. Then \deqn{f(X) = g\bigl(|X|\bigr) \frac{X}{|X|}}{f(X) = g(|X|) * X / |X|} where \eqn{|X|} represents the Euclidean norm of the vector \eqn{X}. The inverse function is given by \deqn{f^{-1}(Y) = g^{-1}\bigl(|Y|\bigr) \frac{Y}{|Y|}.}{f^{-1}(Y) = g^{-1}(|Y|) * Y / |Y|.} The parameters \code{r} and \code{p} are used to define the function \deqn{g_1(x) = x + (x-r)^p I(x > r)}{g1(x) = x + (x-r)^p * I(x > r)} where \eqn{I( \cdot )}{I(•)} is the indicator function. We require that \code{r} is non-negative and \code{p} is strictly greater than 2. The parameter \code{b} is used to define the function \deqn{g_2(x) = \bigl(e^{bx} - e / 3\bigr) I(x > \frac{1}{b}) + \bigl(x^3 b^3 e / 6 + x b e / 2\bigr) I(x \leq \frac{1}{b})}{ g2(x) = (exp(b * x) - exp(1) / 3) * I(x > 1 / b) + (x^3 * b^3 exp(1) / 6 + x * b * exp(1) / 2) * I(x <= 1 / b).} We require that \eqn{b} is positive. The parameters \code{r}, \code{p} and \code{b} specify \eqn{f^{-1}} in the following manner: \itemize{ \item If one or both of \code{r} and \code{p} is specified, and \code{b} is not specified, then \deqn{f^{-1}(X) = g_1(|X|) \frac{X}{|X|}.}{f^{-1}(X) = g1(|X|) * X / |X|.} If only \code{r} is specified, \code{p = 3} is used. If only \code{p} is specified, \code{r = 0} is used. \item If only \code{b} is specified, then \deqn{f^{-1}(X) = g_2(|X|) \frac{X}{|X|}.}{f^{-1}(X) = g2(|X|) * X / |X|.} \item If one or both of \code{r} and \code{p} is specified, and \code{b} is also specified, then \deqn{f^{-1}(X) = g_2(g_1(|X|)) \frac{X}{|X|}.}{f^{-1}(X) = g2(g1(|X|)) * X / |X|.} } } \value{ a list containing the functions \itemize{ \item \code{outfun(f)}, a function that operates on functions. \code{outfun(f)} returns the function \code{function(state, ...) f(inverse(state), ...)}. \item \code{inverse}, the inverse transformation function. \item \code{transform}, the transformation function. \item \code{lud}, a function that operates on functions. As input, \code{lud} takes a function that calculates a log unnormalized probability density, and returns a function that calculates the log unnormalized density by transforming a random variable using the \code{transform} function. \code{lud(f) = function(state, ...) f(inverse(state), ...) + log.jacobian(state)}, where \code{log.jacobian} represents the function that calculate the log Jacobian of the transformation. \code{log.jacobian} is not returned. } } \examples{ # use an exponential transformation, centered at 100. b1 <- morph(b=1, center=100) # original log unnormalized density is from a t distribution with 3 # degrees of freedom, centered at 100. lud.transformed <- b1$lud(function(x) dt(x - 100, df=3, log=TRUE)) d.transformed <- Vectorize(function(x) exp(lud.transformed(x))) \dontrun{ curve(d.transformed, from=-3, to=3, ylab="Induced Density") } } \seealso{ \code{\link{morph.metrop}} } \keyword{misc} mcmc/man/morph.metrop.Rd0000644000175100001440000001527413045741600014714 0ustar hornikusers\name{morph.metrop} \alias{morph.metrop} \alias{morph.metrop.function} \alias{morph.metrop.morph.metropolis} \title{Morphometric Metropolis Algorithm} \description{ Markov chain Monte Carlo for continuous random vector using a Metropolis algorithm for an induced density. } \usage{ morph.metrop(obj, initial, nbatch, blen = 1, nspac = 1, scale = 1, outfun, debug = FALSE, morph, ...) } \arguments{ \item{obj}{see \code{\link{metrop}}.} \item{initial}{see \code{\link{metrop}}.} \item{nbatch}{see \code{\link{metrop}}.} \item{blen}{see \code{\link{metrop}}.} \item{nspac}{see \code{\link{metrop}}.} \item{scale}{see \code{\link{metrop}}.} \item{outfun}{unlike for \code{\link{metrop}} must be a function or missing; if missing the identity function, \code{function(x) x}, is used.} \item{debug}{see \code{\link{metrop}}.} \item{morph}{morph object used for transformations. See \code{\link{morph}}.} \item{...}{see \code{\link{metrop}}.} } \details{ \code{morph.metrop} implements morphometric methods for Markov chains. The caller specifies a log unnormalized probability density and a transformation. The transformation specified by the \code{morph} parameter is used to induce a new log unnormalized probability density, a Metropolis algorithm is run for the induced density. The Markov chain is transformed back to the original scale. Running the Metropolis algorithm for the induced density, instead of the original density, can result in a Markov chain with better convergence properties. For more details see Johnson and Geyer (submitted). Except for \code{morph}, all parameters are passed to \code{\link{metrop}}, transformed when necessary. The \code{scale} parameter is \emph{not} transformed. If \eqn{X} is a real vector valued continuous random variable, and \eqn{Y = f(X)} where \eqn{f} is a diffeomorphism, then the pdf of \eqn{Y} is given by \deqn{f_Y(y) = f_X(f^{-1}(y)) | \nabla f^{-1}(y) |}{ fY(y) = fX(f^{-1}(y)) | del f^{-1}(y) |} where \eqn{f_X}{fX} is the pdf of \eqn{X} and \eqn{\nabla f^{-1}}{del f^{-1}} is the Jacobian of \eqn{f^{-1}}. Because \eqn{f} is a diffeomorphism, a Markov chain for \eqn{f_Y}{fY} may be transformed into a Markov chain for \eqn{f_X}{fX}. Furthermore, these Markov chains are isomorphic (Johnson and Geyer, submitted) and have the same convergence rate. The \code{\link{morph}} variable provides a diffeomorphism, \code{morph.metrop} uses this diffeomorphism to induce the log unnormalized density, \eqn{\log f_Y}{log fY} based on the user supplied log unnormalized density, \eqn{\log f_X}{log fX}. \code{morph.metrop} runs a Metropolis algorithm for \eqn{\log f_Y}{log fY} and transforms the resulting Markov chain into a Markov chain for \eqn{f_X}{fX}. The user accessible output components are the same as those that come from \code{\link{metrop}}, see the documentation for \code{\link{metrop}} for details. Subsequent calls of \code{morph.metrop} may change to the transformation by specifying a new value for \code{morph}. Any of the other parameters to \code{morph.metrop} may also be modified in subsequent calls. See \code{\link{metrop}} for more details. The general idea is that a random-walk Metropolis sampler (what \code{\link{metrop}} does) will not be geometrically ergodic unless the tails of the unnormalized density decrease superexponentially fast (so the tails of the log unnormalized density decrease faster than linearly). It may not be geometrically ergodic even then (see Johnson and Geyer, submitted, for the complete theory). The transformations used by this function (provided by \code{\link{morph}}) can produce geometrically ergodic chains when the tails of the log unnormalized density are too light for \code{\link{metrop}} to do so. When the tails of the unnormalized density are exponentially light but not superexponentially light (so the tails of the log unnormalized density are asymptotically linear, as in the case of exponential family models when conjugate priors are used, for example logistic regression, Poisson regression with log link, or log-linear models for categorical data), one should use \code{\link{morph}} with \code{b = 0} (the default), which produces a transformation of the form \eqn{g_1}{g1} in the notation used in the details section of the help for \code{\link{morph}}. This will produce a geometrically ergodic sampler if other features of the log unnormalized density are well behaved. For example it will do so for the exponential family examples mentioned above. (See Johnson and Geyer, submitted, for the complete theory.) The transformation \eqn{g_1}{g1} behaves like a shift transformation on a ball of radius \code{r} centered at \code{center}, so these arguments to \code{\link{morph}} should be chosen so that a sizable proportion of the probability under the original (untransformed) unnormalized density is contained in this ball. This function will work when \code{r = 0} and \code{center = 0} (the defaults) are used, but may not work as well as when \code{r} and \code{center} are well chosen. When the tails of the unnormalized density are not exponentially light (so the tails of the log unnormalized density decrease sublinearly, as in the case of univariate and multivariate \eqn{t} distributions), one should use \code{\link{morph}} with \code{r > 0} and \code{p = 3}, which produces a transformation of the form \eqn{g_2}{g2} composed with \eqn{g_1}{g1} in the notation used in the details section of the help for \code{\link{morph}}. This will produce a geometrically ergodic sampler if other features of the log unnormalized density are well behaved. For example it will do so for the \eqn{t} examples mentioned above. (See Johnson and Geyer, submitted, for the complete theory.) } \value{ an object of class \code{mcmc}, subclass \code{morph.metropolis}. This object is a list containing all of the elements from an object returned by \code{\link{metrop}}, plus at least the following components: \item{morph}{the morph object used for the transformations.} \item{morph.final}{the final state of the Markov chain on the transformed scale.} } \examples{ out <- morph.metrop(function(x) dt(x, df=3, log=TRUE), 0, blen=100, nbatch=100, morph=morph(b=1)) # change the transformation. out <- morph.metrop(out, morph=morph(b=2)) out$accept # accept rate is high, increase the scale. out <- morph.metrop(out, scale=4) # close to 0.20 is about right. out$accept } \references{ Johnson, L. T. and Geyer, C. J. (submitted) Variable Transformation to Obtain Geometric Ergodicity in the Random-walk Metropolis Algorithm. } \seealso{ \code{\link{metrop}}, \code{\link{morph}}. } \keyword{misc} mcmc/man/initseq.Rd0000644000175100001440000001060113045741600013723 0ustar hornikusers\name{initseq} \alias{initseq} \title{Initial Sequence Estimators} \description{ Variance of sample mean of functional of reversible Markov chain using methods of Geyer (1992). } \usage{ initseq(x) } \arguments{ \item{x}{a numeric vector that is a scalar-valued functional of a reversible Markov chain.} } \details{ Let \deqn{\gamma_k = \textrm{cov}(X_i, X_{i + k})}{gamma[k] = cov(x[i], x[i + k])} considered as a function of the lag \eqn{k} be the autocovariance function of the input time series. Define \deqn{\Gamma_k = \gamma_{2 k} + \gamma_{2 k + 1}}{Gamma[k] = gamma[2 k] + gamma[2 k + 1]} the sum of consecutive pairs of autocovariances. Then Theorem 3.1 in Geyer (1992) says that \eqn{\Gamma_k}{Gamma[k]} considered as a function of \eqn{k} is strictly positive, strictly decreasing, and strictly convex, assuming the input time series is a scalar-valued functional of a reversible Markov chain. All of the MCMC done by this package is reversible. This \R function estimates the \dQuote{big gamma} function, \eqn{\Gamma_k}{Gamma[k]} considered as a function of \eqn{k}, subject to three different constraints, (1) nonnegative, (2) nonnegative and nonincreasing, and (3) nonnegative, nonincreasing, and convex. It also estimates the variance in the Markov chain central limit theorem (CLT) \deqn{\gamma_0 + 2 \sum_{k = 1}^\infty \gamma_k = - \gamma_0 + 2 \sum_{k = 0}^\infty \Gamma_k}{- gamma0 + 2 * sum(gamma) = - gamma0 + 2 * sum(Gamma)} \strong{Note:} The batch means provided by \code{\link{metrop}} are also scalar functionals of a reversible Markov chain. Thus these initial sequence estimators applied to the batch means give valid standard errors for the mean of the match means even when the batch length is too short to provide a valid estimate of asymptotic variance. One does, of course, have to multiply the asymptotic variance of the batch means by the batch length to get the asymptotic variance for the unbatched chain. } \value{ a list containing the following components: \item{gamma0}{the scalar \eqn{\gamma_0}{gamma[0]}, the marginal variance of \code{x}.} \item{Gamma.pos}{the vector \eqn{\Gamma}{Gamma}, estimated so as to be nonnegative, where, as always, \R uses one-origin indexing so \code{Gamma.pos[1]} is \eqn{\Gamma_0}{Gamma[0]}.} \item{Gamma.dec}{the vector \eqn{\Gamma}{Gamma}, estimated so as to be nonnegative and nonincreasing, where, as always, \R uses one-origin indexing so \code{Gamma.dec[1]} is \eqn{\Gamma_0}{Gamma[0]}.} \item{Gamma.con}{the vector \eqn{\Gamma}{Gamma}, estimated so as to be nonnegative and nonincreasing and convex, where, as always, \R uses one-origin indexing so \code{Gamma.con[1]} is \eqn{\Gamma_0}{Gamma[0]}.} \item{var.pos}{the scalar \code{- gamma0 + 2 * sum(Gamma.pos)}, which is the asymptotic variance in the Markov chain CLT. Divide by \code{length(x)} to get the approximate variance of the sample mean of \code{x}.} \item{var.dec}{the scalar \code{- gamma0 + 2 * sum(Gamma.dec)}, which is the asymptotic variance in the Markov chain CLT. Divide by \code{length(x)} to get the approximate variance of the sample mean of \code{x}.} \item{var.con}{the scalar \code{- gamma0 + 2 * sum(Gamma.con)}, which is the asymptotic variance in the Markov chain CLT. Divide by \code{length(x)} to get the approximate variance of the sample mean of \code{x}.} } \section{Bugs}{ Not precisely a bug, but \code{var.pos}, \code{var.dec}, and \code{var.con} can be negative. This happens only when the chain is way too short to estimate the variance, and even then rarely. But it does happen. } \references{ Geyer, C. J. (1992) Practical Markov Chain Monte Carlo. \emph{Statistical Science} \bold{7} 473--483. } \seealso{ \code{\link{metrop}} } \examples{ n <- 2e4 rho <- 0.99 x <- arima.sim(model = list(ar = rho), n = n) out <- initseq(x) \dontrun{ plot(seq(along = out$Gamma.pos) - 1, out$Gamma.pos, xlab = "k", ylab = expression(Gamma[k]), type = "l") lines(seq(along = out$Gamma.dec) - 1, out$Gamma.dec, col = "red") lines(seq(along = out$Gamma.con) - 1, out$Gamma.con, col = "blue") } # asymptotic 95\% confidence interval for mean of x mean(x) + c(-1, 1) * qnorm(0.975) * sqrt(out$var.con / length(x)) # estimated asymptotic variance out$var.con # theoretical asymptotic variance (1 + rho) / (1 - rho) * 1 / (1 - rho^2) # illustrating use with batch means bm <- apply(matrix(x, nrow = 5), 2, mean) initseq(bm)$var.con * 5 } \keyword{ts} mcmc/man/foo.Rd0000644000175100001440000000072613045741240013041 0ustar hornikusers\name{foo} \docType{data} \alias{foo} \title{Simulated logistic regression data.} \description{ Like it says } \usage{data(foo)} \format{ A data frame with variables \describe{ \item{x1}{quantitative predictor.} \item{x2}{quantitative predictor.} \item{x3}{quantitative predictor.} \item{y}{Bernoulli response.} } } \examples{ library(mcmc) data(foo) out <- glm(y ~ x1 + x2 + x3, family = binomial, data = foo) summary(out) } \keyword{datasets} mcmc/man/temper.Rd0000644000175100001440000003052013063023671013546 0ustar hornikusers\name{temper} \alias{temper} \alias{temper.function} \alias{temper.tempering} \title{Simulated Tempering and Umbrella Sampling} \description{ Markov chain Monte Carlo (MCMC) for continuous random vectors using parallel or serial tempering, the latter also called umbrella sampling and simulated tempering. The chain simulates \eqn{k} different distributions on the same state space. In parallel tempering, all the distributions are simulated in each iteration. In serial tempering, only one of the distributions is simulated (a random one). In parallel tempering, the state is a \eqn{k \times p}{k by p} matrix, each row of which is the state for one of the distributions. In serial tempering the state of the Markov chain is a pair \eqn{(i, x)}, where \eqn{i} is an integer between 1 and \eqn{k} and \eqn{x} is a vector of length \eqn{p}. This pair is represented as a single real vector \code{c(i, x)}. The variable \eqn{i} says which distribution \eqn{x} is a simulation for. } \usage{ temper(obj, initial, neighbors, nbatch, blen = 1, nspac = 1, scale = 1, outfun, debug = FALSE, parallel = FALSE, \dots) \method{temper}{function}(obj, initial, neighbors, nbatch, blen = 1, nspac = 1, scale = 1, outfun, debug = FALSE, parallel = FALSE, \dots) \method{temper}{tempering}(obj, initial, neighbors, nbatch, blen = 1, nspac = 1, scale = 1, outfun, debug = FALSE, parallel = FALSE, \dots) } \arguments{ \item{obj}{either an \R function or an object of class \code{"tempering"} from a previous run. If a function, it should evaluate the log unnormalized density \eqn{\log h(i, x)}{log h(i, x)} of the desired equilibrium distribution of the Markov chain for serial tempering (the same function is used for both serial and parallel tempering, see Details below for further explanation). If an object of class \code{"tempering"}, the log unnormalized density function is \code{obj$lud}, and missing arguments of \code{temper} are obtained from the corresponding elements of \code{obj}. The first argument of the log unnormalized density function is the is an \R vector \code{c(i, x)}, where \code{i} says which distribution \code{x} is supposed to be a simulation for. Other arguments are arbitrary and taken from the \code{\dots} arguments of \code{temper}. The log unnormalized density function should return \code{-Inf} in regions of the state space having probability zero.} \item{initial}{for serial tempering, a real vector \code{c(i, x)} as described above. For parallel tempering, a real \eqn{k \times p}{k by p} matrix as described above. In either case, the initial state of the Markov chain. Ignored if \code{obj} has class \code{"tempering"}.} \item{neighbors}{a logical symmetric matrix of dimension \code{k} by \code{k}. Elements that are \code{TRUE} indicate jumps or swaps attempted by the Markov chain. Ignored if \code{obj} has class \code{"tempering"}.} \item{nbatch}{the number of batches.} \item{blen}{the length of batches.} \item{nspac}{the spacing of iterations that contribute to batches.} \item{scale}{controls the proposal step size for real elements of the state vector. For serial tempering, proposing a new value for the \eqn{x} part of the state \eqn{(i, x)}. For parallel tempering, proposing a new value for the \eqn{x_i}{x[i]} part of the state \eqn{(x_1, \ldots, x_k)}{(x[1], \ldots, x[k])}. In either case, the proposal is a real vector of length \eqn{p}. If scalar or vector, the proposal is \code{x + scale * z} where \code{x} is the part \eqn{x} or \eqn{x_i}{x[i]} of the state the proposal may replace. If matrix, the proposal is \code{x + scale \%*\% z}. If list, the length must be \code{k}, and each element must be scalar, vector, or matrix, and operate as described above. The \eqn{i}-th component of the list is used to update \eqn{x} when the state is \eqn{(i, x)} or \eqn{x_i}{x[i]} otherwise.} \item{outfun}{controls the output. If a function, then the batch means of \code{outfun(state, \dots)} are returned. The argument \code{state} is like the argument \code{initial} of this function. If missing, the batch means of the real part of the state vector or matrix are returned, and for serial tempering the batch means of a multivariate Bernoulli indicating the current component are returned.} \item{debug}{if \code{TRUE} extra output useful for testing.} \item{parallel}{if \code{TRUE} does parallel tempering, if \code{FALSE} does serial tempering. Ignored if \code{obj} has class \code{"tempering"}.} \item{...}{additional arguments for \code{obj} or \code{outfun}.} } \details{ Serial tempering simulates a mixture of distributions of a continuous random vector. The number of components of the mixture is \code{k}, and the dimension of the random vector is \code{p}. Denote the state \eqn{(i, x)}, where \eqn{i} is a positive integer between 1 and \eqn{k}, and let \eqn{h(i, x)} denote the unnormalized joint density of their equilibrium distribution. The logarithm of this function is what \code{obj} or \code{obj$lud} calculates. The mixture distribution is the marginal for \eqn{x} derived from the equilibrium distribution \eqn{h(i, x)}, that is, \deqn{h(x) = \sum_{i = 1}^k h(i, x)}{h(x) = sum[i = 1 to k] h(i, x)} Parallel tempering simulates a product of distributions of a continuous random vector. Denote the state \eqn{(x_1, \ldots, x_k)}{(x[1], \ldots, x[k])}, then the unnormalized joint density of the equilibrium distribution is \deqn{h(x_1, \ldots, x_k) = \prod_{i = 1}^k h(i, x_i)}{h(x[1], \dots, x[k]) = prod[i = 1 to k] h(i, x[i])} The update mechanism of the Markov chain combines two kinds of elementary updates: jump/swap updates (jump for serial tempering, swap for parallel tempering) and within-component updates. Each iteration of the Markov chain one of these elementary updates is done. With probability 1/2 a jump/swap update is done, and with probability 1/2 a with-component update is done. Within-component updates are the same for both serial and parallel tempering. They are \dQuote{random-walk} Metropolis updates with multivariate normal proposal, the proposal distribution being determined by the argument \code{scale}. In serial tempering, the \eqn{x} part of the current state \eqn{(i, x)} is updated preserving \eqn{h(i, x)}. In parallel tempering, an index \eqn{i} is chosen at random and the part of the state \eqn{x_i}{x[i]} representing that component is updated, again preserving \eqn{h(i, x)}. Jump updates choose uniformly at random a neighbor of the current component: if \eqn{i} indexes the current component, then it chooses uniformly at random a \eqn{j} such that \code{neighbors[i, j] == TRUE}. It then does does a Metropolis-Hastings update for changing the current state from \eqn{(i, x)} to \eqn{(j, x)}. Swap updates choose a component uniformly at random and a neighbor of that component uniformly at random: first an index \eqn{i} is chosen uniformly at random between 1 and \eqn{k}, then an index \eqn{j} is chosen uniformly at random such that \code{neighbors[i, j] == TRUE}. It then does does a Metropolis-Hastings update for swapping the states of the two components: interchanging \eqn{x_i}{x[i, ]} and \eqn{x_j}{x[j, ]} while preserving \eqn{h(x_1, \ldots, x_k)}{h(x[1], \dots, x[k])}. The initial state must satisfy \code{lud(initial, ...) > - Inf} for serial tempering or must satisfy \code{lud(initial[i, ], ...) > - Inf} for each \code{i} for parallel tempering, where \code{lud} is either \code{obj} or \code{obj$lud}. That is, the initial state must have positive probability. } \value{ an object of class \code{"mcmc"}, subclass \code{"tempering"}, which is a list containing at least the following components: \item{batch}{the batch means of the continuous part of the state. If \code{outfun} is missing, an \code{nbatch} by \code{k} by \code{p} array. Otherwise, an \code{nbatch} by \code{m} matrix, where \code{m} is the length of the result of \code{outfun}.} \item{ibatch}{(returned for serial tempering only) an \code{nbatch} by \code{k} matrix giving batch means for the multivariate Bernoulli random vector that is all zeros except for a 1 in the \code{i}-th place when the current state is \eqn{(i, x)}.} \item{acceptx}{fraction of Metropolis within-component proposals accepted. A vector of length \code{k} giving the acceptance rate for each component.} \item{accepti}{fraction of Metropolis jump/swap proposals accepted. A \code{k} by \code{k} matrix giving the acceptance rate for each allowed jump or swap component. \code{NA} for elements such that the corresponding elements of \code{neighbors} is \code{FALSE}.} \item{initial}{value of argument \code{initial}.} \item{final}{final state of Markov chain.} \item{initial.seed}{value of \code{.Random.seed} before the run.} \item{final.seed}{value of \code{.Random.seed} after the run.} \item{time}{running time of Markov chain from \code{system.time()}.} \item{lud}{the function used to calculate log unnormalized density, either \code{obj} or \code{obj$lud} from a previous run.} \item{nbatch}{the argument \code{nbatch} or \code{obj$nbatch}.} \item{blen}{the argument \code{blen} or \code{obj$blen}.} \item{nspac}{the argument \code{nspac} or \code{obj$nspac}.} \item{outfun}{the argument \code{outfun} or \code{obj$outfun}.} Description of additional output when \code{debug = TRUE} can be found in the vignette \code{debug} (\url{../doc/debug.pdf}). } \section{Warning}{ If \code{outfun} is missing, then the log unnormalized density function can be defined without a \ldots argument and that works fine. One can define it starting \code{ludfun <- function(state)} and that works or \code{ludfun <- function(state, foo, bar)}, where \code{foo} and \code{bar} are supplied as additional arguments to \code{temper} and that works too. If \code{outfun} is a function, then both it and the log unnormalized density function can be defined without \ldots arguments \emph{if they have exactly the same arguments list} and that works fine. Otherwise it doesn't work. Define these functions by \preformatted{ ludfun <- function(state, foo) outfun <- function(state, bar) } and you get an error about unused arguments. Instead define these functions by \preformatted{ ludfun <- function(state, foo, \ldots) outfun <- function(state, bar, \ldots) } and supply \code{foo} and \code{bar} as additional arguments to \code{metrop}, and that works fine. In short, the log unnormalized density function and \code{outfun} need to have \ldots in their arguments list to be safe. Sometimes it works when \ldots is left out and sometimes it doesn't. Of course, one can avoid this whole issue by always defining the log unnormalized density function and \code{outfun} to have only one argument \code{state} and use global variables (objects in the \R global environment) to specify any other information these functions need to use. That too follows the \R way. But some people consider that bad programming practice. } \examples{ d <- 9 witch.which <- c(0.1, 0.3, 0.5, 0.7, 1.0) ncomp <- length(witch.which) neighbors <- matrix(FALSE, ncomp, ncomp) neighbors[row(neighbors) == col(neighbors) + 1] <- TRUE neighbors[row(neighbors) == col(neighbors) - 1] <- TRUE ludfun <- function(state, log.pseudo.prior = rep(0, ncomp)) { stopifnot(is.numeric(state)) stopifnot(length(state) == d + 1) icomp <- state[1] stopifnot(icomp == as.integer(icomp)) stopifnot(1 <= icomp && icomp <= ncomp) stopifnot(is.numeric(log.pseudo.prior)) stopifnot(length(log.pseudo.prior) == ncomp) theta <- state[-1] if (any(theta > 1.0)) return(-Inf) bnd <- witch.which[icomp] lpp <- log.pseudo.prior[icomp] if (any(theta > bnd)) return(lpp) return(- d * log(bnd) + lpp) } # parallel tempering thetas <- matrix(0.5, ncomp, d) out <- temper(ludfun, initial = thetas, neighbors = neighbors, nbatch = 20, blen = 10, nspac = 5, scale = 0.56789, parallel = TRUE, debug = TRUE) # serial tempering theta.initial <- c(1, rep(0.5, d)) # log pseudo prior found by trial and error qux <- c(0, 9.179, 13.73, 16.71, 20.56) out <- temper(ludfun, initial = theta.initial, neighbors = neighbors, nbatch = 50, blen = 30, nspac = 2, scale = 0.56789, parallel = FALSE, debug = FALSE, log.pseudo.prior = qux) } \keyword{misc} mcmc/.Rinstignore0000644000175100001440000000002313063023671013507 0ustar hornikusersdesignDoc/Makefile mcmc/LICENSE0000644000175100001440000000012413045741600012211 0ustar hornikusersYEAR: 2005, 2009, 2010, 2012 COPYRIGHT HOLDER: Charles J. Geyer and Leif T. Johnson