[Rsiena-commits] r185 - in pkg: RSiena RSiena/R RSiena/inst/doc RSiena/man RSiena/src RSiena/src/model RSiena/src/model/ml RSiena/src/model/tables RSienaTest RSienaTest/R RSienaTest/doc RSienaTest/inst/doc RSienaTest/inst/examples RSienaTest/man RSienaTest/src RSienaTest/src/model RSienaTest/src/model/ml RSienaTest/src/model/tables

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Sun Nov 27 17:23:02 CET 2011


Author: ripleyrm
Date: 2011-11-27 17:23:01 +0100 (Sun, 27 Nov 2011)
New Revision: 185

Modified:
   pkg/RSiena/DESCRIPTION
   pkg/RSiena/R/bayes.r
   pkg/RSiena/R/robmon.r
   pkg/RSiena/changeLog
   pkg/RSiena/inst/doc/RSiena_Manual.pdf
   pkg/RSiena/man/RSiena-package.Rd
   pkg/RSiena/src/model/Model.cpp
   pkg/RSiena/src/model/Model.h
   pkg/RSiena/src/model/ml/Chain.cpp
   pkg/RSiena/src/model/ml/Chain.h
   pkg/RSiena/src/model/ml/MLSimulation.cpp
   pkg/RSiena/src/model/ml/MLSimulation.h
   pkg/RSiena/src/model/tables/Cache.cpp
   pkg/RSiena/src/model/tables/Cache.h
   pkg/RSiena/src/siena07models.cpp
   pkg/RSiena/src/siena07setup.cpp
   pkg/RSiena/src/siena07utilities.cpp
   pkg/RSienaTest/DESCRIPTION
   pkg/RSienaTest/R/bayes.r
   pkg/RSienaTest/R/robmon.r
   pkg/RSienaTest/changeLog
   pkg/RSienaTest/doc/RSiena_Manual.tex
   pkg/RSienaTest/inst/doc/RSiena_Manual.pdf
   pkg/RSienaTest/inst/examples/algorithms.r
   pkg/RSienaTest/inst/examples/runalg.r
   pkg/RSienaTest/man/RSiena-package.Rd
   pkg/RSienaTest/src/model/Model.cpp
   pkg/RSienaTest/src/model/Model.h
   pkg/RSienaTest/src/model/ml/Chain.cpp
   pkg/RSienaTest/src/model/ml/Chain.h
   pkg/RSienaTest/src/model/ml/MLSimulation.cpp
   pkg/RSienaTest/src/model/ml/MLSimulation.h
   pkg/RSienaTest/src/model/tables/Cache.cpp
   pkg/RSienaTest/src/model/tables/Cache.h
   pkg/RSienaTest/src/siena07models.cpp
   pkg/RSienaTest/src/siena07setup.cpp
   pkg/RSienaTest/src/siena07utilities.cpp
Log:
Memory leaks in ML, minor changes to ML and Bayes.

Modified: pkg/RSiena/DESCRIPTION
===================================================================
--- pkg/RSiena/DESCRIPTION	2011-11-14 18:30:31 UTC (rev 184)
+++ pkg/RSiena/DESCRIPTION	2011-11-27 16:23:01 UTC (rev 185)
@@ -1,8 +1,8 @@
 Package: RSiena
 Type: Package
 Title: Siena - Simulation Investigation for Empirical Network Analysis
-Version: 1.0.12.184
-Date: 2011-11-14
+Version: 1.0.12.185
+Date: 2011-11-27
 Author: Various
 Depends: R (>= 2.10.0)
 Imports: Matrix

Modified: pkg/RSiena/R/bayes.r
===================================================================
--- pkg/RSiena/R/bayes.r	2011-11-14 18:30:31 UTC (rev 184)
+++ pkg/RSiena/R/bayes.r	2011-11-27 16:23:01 UTC (rev 185)
@@ -5,7 +5,8 @@
 ## *
 ## * File: bayes.r
 ## *
-## * Description: This file contains the code to run Bayesian simulation
+## * Description: This file contains the code to run Bayesian simulation.
+## * Many functions are defined within others to reduce copying of objects.
 ## *
 ## ****************************************************************************/
 ##@bayes Bayesian fit a Bayesian model
@@ -14,21 +15,20 @@
                   priorSigma=NULL, prevAns=NULL, getDocumentation=FALSE)
 {
     ##@createStores internal bayes Bayesian set up stores
-    createStores <- function(z)
+    createStores <- function()
     {
         npar <- length(z$theta)
         numberRows <- nmain * nrunMHBatches
-        z$posteriorTot <- matrix(0, nrow=z$nGroup, ncol=npar)
-        z$posteriorMII <- array(0, dim=c(z$nGroup, npar, npar))
-        z$candidates <- array(NA, dim=c(numberRows, z$nGroup, npar))
-        z$acceptances <- matrix(NA, nrow=z$nGroup, ncol=numberRows)
-        z$MHacceptances <- array(NA, dim=c(numberRows, z$nGroup,
+        z$posteriorTot <<- matrix(0, nrow=z$nGroup, ncol=npar)
+        z$posteriorMII <<- array(0, dim=c(z$nGroup, npar, npar))
+        z$candidates <<- array(NA, dim=c(numberRows, z$nGroup, npar))
+        z$acceptances <<- matrix(NA, nrow=z$nGroup, ncol=numberRows)
+        z$MHacceptances <<- array(NA, dim=c(numberRows, z$nGroup,
 									 z$nDependentVariables, 9))
-        z$MHrejections <- array(NA, dim=c(numberRows, z$nGroup,
+        z$MHrejections <<- array(NA, dim=c(numberRows, z$nGroup,
 									 z$nDependentVariables, 9))
-        z$MHproportions <- array(NA, dim=c(numberRows, z$nGroup,
+        z$MHproportions <<- array(NA, dim=c(numberRows, z$nGroup,
 									 z$nDependentVariables, 9))
-        z
     }
     ##@storeData internal bayes Bayesian put data in stores
     storeData <- function()
@@ -37,26 +37,26 @@
         nrun <- nrow(z$parameters)
         npar <- length(z$theta)
         end <- start + nrun - 1
-        z$acceptances[, start:end] <- z$accepts
-        z$candidates[start:end,, ] <- z$parameters
-        z$posteriorTot <- z$posteriorTot + colSums(z$parameters)
+        z$acceptances[, start:end] <<- z$accepts
+        z$candidates[start:end,, ] <<- z$parameters
+        z$posteriorTot <<- z$posteriorTot + colSums(z$parameters)
         for (group in 1:z$nGroup)
         {
             for (i in npar)
             {
-                z$posteriorMII[group, , ] <- z$posteriorMII[group, ,] +
+                z$posteriorMII[group, , ] <<- z$posteriorMII[group, ,] +
                     outer(z$parameters[i, group, ], z$parameters[i, group,])
             }
         }
-        z$MHacceptances[start:end, , , ] <- z$MHaccepts
-        z$MHrejections[start:end, , , ] <- z$MHrejects
-        z$MHproportions[start:end, , , ] <- z$MHaccepts /
+        z$MHacceptances[start:end, , , ] <<- z$MHaccepts
+        z$MHrejections[start:end, , , ] <<- z$MHrejects
+        z$MHproportions[start:end, , , ] <<- z$MHaccepts /
             (z$MHaccepts + z$MHrejects)
-        z$sub <- z$sub + nrun
-        z
+        z$sub <<- z$sub + nrun
+
     }
 	##@improveMH internal bayes Bayesian find scale factors
-    improveMH <- function(z, x, tiny=1.0e-15, desired=40, maxiter=100,
+    improveMH <- function(tiny=1.0e-15, desired=40, maxiter=100,
                           tolerance=15, getDocumentation=FALSE)
     {
 		##@rescaleCGD internal improveMH Bayesian
@@ -81,11 +81,11 @@
         repeat
         {
             iter <- iter + 1
-            z <- MCMCcycle(z, nrunMH=1, nrunMHBatches=100, change=FALSE)
+            MCMCcycle(nrunMH=1, nrunMHBatches=100, change=FALSE)
             actual <- z$BayesAcceptances ## acceptances
             ans <- rescaleCGD(100)
             update <- number < 3
-            z$scaleFactors[update] <- z$scaleFactors[update] * ans[update]
+            z$scaleFactors[update] <<- z$scaleFactors[update] * ans[update]
             cat(actual, ans, z$scaleFactors, '\n')
             if (all(success) | iter == maxiter)
             {
@@ -99,8 +99,116 @@
         }
         cat('fine tuning took ', iter, ' iterations. Scalefactor:',
             z$scaleFactors, '\n')
-        z
+
     }
+	##@MCMCcycle algorithms do some loops of (MH steps and sample parameters)
+	MCMCcycle <- function(nrunMH, nrunMHBatches, change=TRUE)
+	{
+		z$accepts <<- matrix(NA, nrow=z$nGroup, nrunMHBatches)
+		z$parameters <<- array(NA, dim=c(nrunMHBatches, z$nGroup, z$pp))
+		z$MHaccepts <<- array(NA, dim=c(nrunMHBatches, z$nGroup,
+								  z$nDependentVariables, 9))
+		z$MHrejects <<- array(NA, dim=c(nrunMHBatches, z$nGroup,
+								  z$nDependentVariables, 9))
+		z$MHaborts <<- array(NA, dim=c(nrunMHBatches, z$nGroup,
+								 z$nDependentVariables, 9))
+		storeNrunMH <- z$nrunMH
+		z$nrunMH <<- nrunMH
+		for (i in 1:nrunMHBatches)
+		{
+										#	c1 <- proc.time()[1]
+			ans <- z$FRAN(z, returnChains=TRUE, byGroup=TRUE)
+										#	c2 <- proc.time()[1]
+										#	cat ('fran',c2-c1,'\n')
+			z$chain <<- ans$chain
+										#	c1 <- proc.time()[1]
+			sampleParameters(change)
+										#	c2 <- proc.time()[1]
+										#	cat ('sam',c2-c1,'\n')
+			z$accepts[, i] <<- z$accept
+			z$parameters[i, , ] <<- z$thetaMat
+			z$MHaccepts[i, , , ] <<-
+				t(do.call(cbind,
+						  tapply(ans$accepts, factor(z$callGrid[, 1]),
+								 function(x)Reduce("+", x))))
+			z$MHrejects[i, , , ] <<-
+				t(do.call(cbind, tapply(ans$rejects, factor(z$callGrid[, 1]),
+										function(x)Reduce("+", x))))
+			z$MHaborts[i, , , ] <<- t(do.call(cbind,
+											  tapply(ans$aborts,
+													 factor(z$callGrid[, 1]),
+													 function(x)Reduce("+", x))))
+		}
+		z$BayesAcceptances <<- rowSums(z$accepts)
+		z$nrunMH <<- storeNrunMH
+
+	}
+	##@sampleParameters algorithms propose new parameters and accept them or not
+	sampleParameters <- function(change=TRUE)
+	{
+		## get a multivariate normal with covariance matrix dfra multiplied by a
+		## scale factor which varies between groups
+		require(MASS)
+		thetaChanges <- t(sapply(1:z$nGroup, function(i)
+							 {
+								 tmp <- z$thetaMat[i, ]
+								 use <- !is.na(z$thetaMat[i, ])
+								 tmp[use] <-
+									 mvrnorm(1, mu=rep(0, sum(use)),
+											 Sigma=z$scaleFactors[i] *
+											 z$dfra[use, use])
+								 tmp
+							 }
+								 ))
+
+		thetaOld <- z$thetaMat
+		thetaOld[, z$basicRate] <- log(thetaOld[, z$basicRate])
+		thetaNew <- thetaOld + thetaChanges
+
+		priorOld <- sapply(1:z$nGroup, function(i)
+					   {
+						   tmp <- thetaOld[i, ]
+						   use <- !is.na(tmp)
+						   dmvnorm(tmp[use],  mean=rep(0, sum(use)),
+								   sigma=z$priorSigma[use, use])
+					   }
+						   )
+		priorNew <- sapply(1:z$nGroup, function(i)
+					   {
+						   tmp <- thetaNew[i, ]
+						   use <- !is.na(tmp)
+						   dmvnorm(tmp[use],  mean=rep(0, sum(use)),
+								   sigma=z$priorSigma[use, use])
+					   }
+						   )
+		logpOld <- getProbs(z, z$chain)
+
+		storeNrunMH <- z$nrunMH
+		z$nrunMH <<- 0
+		thetaNew[, z$basicRate] <- exp(thetaNew[, z$basicRate])
+		z$thetaMat <<- thetaNew
+		resp <- z$FRAN(z, returnChains=TRUE, byGroup=TRUE)
+		logpNew <- getProbs(z, resp$chain)
+
+		proposalProbability <- priorNew - priorOld + logpNew - logpOld
+
+		z$accept <<- log(runif(length(proposalProbability))) < proposalProbability
+		thetaOld[, z$basicRate] <- exp(thetaOld[, z$basicRate])
+		if (!change)
+		{
+			z$thetaMat <<- thetaOld
+		}
+		else
+		{
+			##print(z$thetaMat)
+			z$thetaMat[!z$accept, ] <<- thetaOld[!z$accept, ]
+		}
+		z$nrunMH <<- storeNrunMH
+		## cat(thetaNew, priorNew, priorOld, logpNew, logpOld,
+		##  exp(proposalProbability),
+		## z$accept,'\n')
+
+    }
     ## ################################
     ## start of function proper
     ## ################################
@@ -123,10 +231,11 @@
 			return(do.call(getDocumentation[1], targs))
 		}
 	}
+	ctime <- proc.time()[1]
 
     z <- initializeBayes(data, effects, model, nbrNodes, priorSigma,
                          prevAns=prevAns)
-    z <- createStores(z)
+    createStores()
 
     z$sub <- 0
 
@@ -147,14 +256,17 @@
         diag(z$dfra)[z$basicRate] <- lambda *
             diag(dfra)[z$basicRate] + lambda * lambda *
                 colMeans(z$sf)[z$basicRate]
-        print(z$dfra)
+										#    print(z$dfra)
         z$dfra <- solve(z$dfra)
-        print(z$dfra)
+										#   print(z$dfra)
+    }
+	ctime1 <- proc.time()[1]
+	cat(ctime1-ctime,'\n')
+	improveMH()
+	ctime2<- proc.time()[1]
 
+	cat('improvMh', ctime2-ctime1,'\n')
 
-    }
-    z <- improveMH(z)
-
     if (plotit)
     {
         require(lattice)
@@ -170,14 +282,20 @@
 
     for (ii in 1:nwarm)
     {
-        z <- MCMCcycle(z, nrunMH=4, nrunMHBatches=20)
+        MCMCcycle(nrunMH=4, nrunMHBatches=20)
     }
 
+	print('endof warm')
+	ctime3<- proc.time()[1]
+
+ 	cat('warm', ctime3-ctime2,'\n')
     for (ii in 1:nmain)
     {
-        z <- MCMCcycle(z, nrunMH=z$nrunMH, nrunMHBatches=nrunMHBatches)
-        z <- storeData()
-
+		MCMCcycle(nrunMH=z$nrunMH, nrunMHBatches=nrunMHBatches)
+		storeData()
+		ctime4<- proc.time()[1]
+		cat('main', ii, ctime4-ctime3,'\n')
+		ctime3 <- ctime4
         if (ii %% 10 == 0 && plotit) ## do some plots
         {
             cat('main after ii', ii, '\n')
@@ -259,109 +377,7 @@
     z$FRAN <- NULL
     z
 }
-##@MCMCcycle algorithms do some loops of (MH steps and sample parameters)
-MCMCcycle <- function(z, nrunMH, nrunMHBatches, change=TRUE)
-{
-    z$accepts <- matrix(NA, nrow=z$nGroup, nrunMHBatches)
-    z$parameters <- array(NA, dim=c(nrunMHBatches, z$nGroup, z$pp))
-    z$MHaccepts <- array(NA, dim=c(nrunMHBatches, z$nGroup,
-		z$nDependentVariables, 9))
-    z$MHrejects <- array(NA, dim=c(nrunMHBatches, z$nGroup,
-							 z$nDependentVariables, 9))
-    z$MHaborts <- array(NA, dim=c(nrunMHBatches, z$nGroup,
-							z$nDependentVariables, 9))
-    storeNrunMH <- z$nrunMH
-    z$nrunMH <- nrunMH
-    for (i in 1:nrunMHBatches)
-    {
-        ans <- z$FRAN(z, returnChains=TRUE, byGroup=TRUE)
-        z$chain <- ans$chain
-        z <- sampleParameters(z, change)
-        z$accepts[, i] <- z$accept
-        z$parameters[i, , ] <- z$thetaMat
-        z$MHaccepts[i, , , ] <-
-            t(do.call(cbind,
-                      tapply(ans$accepts, factor(z$callGrid[, 1]),
-                             function(x)Reduce("+", x))))
-        z$MHrejects[i, , , ] <-
-            t(do.call(cbind, tapply(ans$rejects, factor(z$callGrid[, 1]),
-                                    function(x)Reduce("+", x))))
-        z$MHaborts[i, , , ] <- t(do.call(cbind,
-                                       tapply(ans$aborts,
-                                              factor(z$callGrid[, 1]),
-                                              function(x)Reduce("+", x))))
-    }
-    z$BayesAcceptances <- rowSums(z$accepts)
-    z$nrunMH <- storeNrunMH
-    z
-}
-##@sampleParameters algorithms propose new parameters and accept them or not
-sampleParameters <- function(z, change=TRUE)
-{
-    ## get a multivariate normal with covariance matrix dfra multiplied by a
-    ## scale factor which varies between groups
-    require(MASS)
-    thetaChanges <- t(sapply(1:z$nGroup, function(i)
-                         {
-                             tmp <- z$thetaMat[i, ]
-                             use <- !is.na(z$thetaMat[i, ])
-                             tmp[use] <-
-                                 mvrnorm(1, mu=rep(0, sum(use)),
-                                         Sigma=z$scaleFactors[i] *
-                                         z$dfra[use, use])
-                             tmp
-                         }
-                             ))
 
-    thetaOld <- z$thetaMat
-    thetaOld[, z$basicRate] <- log(thetaOld[, z$basicRate])
-    thetaNew <- thetaOld + thetaChanges
-
-    priorOld <- sapply(1:z$nGroup, function(i)
-                   {
-                       tmp <- thetaOld[i, ]
-                       use <- !is.na(tmp)
-                       dmvnorm(tmp[use],  mean=rep(0, sum(use)),
-                               sigma=z$priorSigma[use, use])
-                   }
-                       )
-    priorNew <- sapply(1:z$nGroup, function(i)
-                   {
-                       tmp <- thetaNew[i, ]
-                       use <- !is.na(tmp)
-                       dmvnorm(tmp[use],  mean=rep(0, sum(use)),
-                               sigma=z$priorSigma[use, use])
-                   }
-                       )
-    logpOld <- getProbs(z, z$chain)
-
-    storeNrunMH <- z$nrunMH
-    z$nrunMH <- 0
-    thetaNew[, z$basicRate] <- exp(thetaNew[, z$basicRate])
-    z$thetaMat <- thetaNew
-    resp <- z$FRAN(z, returnChains=TRUE, byGroup=TRUE)
-    logpNew <- getProbs(z, resp$chain)
-
-    proposalProbability <- priorNew - priorOld + logpNew - logpOld
-
-    z$accept <- log(runif(length(proposalProbability))) < proposalProbability
-    thetaOld[, z$basicRate] <- exp(thetaOld[, z$basicRate])
-    if (!change)
-    {
-        z$thetaMat <- thetaOld
-    }
-    else
-    {
-        ##print(z$thetaMat)
-        z$thetaMat[!z$accept, ] <- thetaOld[!z$accept, ]
-    }
-    z$nrunMH <- storeNrunMH
-    ## cat(thetaNew, priorNew, priorOld, logpNew, logpOld,
-    ##    exp(proposalProbability),
-    ##    z$accept,'\n')
-    z
-}
-
 ##@initializeBayes algorithms do set up for Bayesian model
 initializeBayes <- function(data, effects, model, nbrNodes, priorSigma,
                             prevAns)
@@ -394,8 +410,7 @@
 		set.seed(newseed)  ## get R to create a random number seed for me.
 		##seed <- NULL
 	}
-   z$FRAN <- getFromNamespace(model$FRANname, pos=grep("RSiena",
-                                               search())[1])
+   	z$FRAN <- getFromNamespace(model$FRANname, pkgname)
     z <- z$FRAN(z, model, INIT=TRUE, data=data, effects=effects,
                 prevAns=prevAns)
     is.batch(TRUE)
@@ -404,18 +419,17 @@
 
     if (nbrNodes > 1)
     {
-        require(snow)
-        require(rlecuyer)
+        require(parallel)
         clusterString <- rep("localhost", nbrNodes)
-        z$cl <- makeCluster(clusterString, type = "SOCK",
+        z$cl <- makeCluster(clusterString, type = "PSOCK",
                             outfile = "cluster.out")
         clusterCall(z$cl, library, pkgname, character.only = TRUE)
         clusterCall(z$cl, storeinFRANstore,  FRANstore())
         clusterCall(z$cl, FRANstore)
         clusterCall(z$cl, initializeFRAN, z, model,
                     initC = TRUE, profileData=FALSE, returnDeps=FALSE)
-        clusterSetupRNG(z$cl,
-                        seed = as.integer(runif(6, max=.Machine$integer.max)))
+        clusterSetRNGStream(z$cl,
+                        iseed = as.integer(runif(1, max=.Machine$integer.max)))
     }
 
     z$scaleFactors <- rep(1, z$nGroup)

Modified: pkg/RSiena/R/robmon.r
===================================================================
--- pkg/RSiena/R/robmon.r	2011-11-14 18:30:31 UTC (rev 184)
+++ pkg/RSiena/R/robmon.r	2011-11-27 16:23:01 UTC (rev 185)
@@ -37,7 +37,7 @@
     #######################################################
     if (!is.function(x$FRAN))
     {
-        x$FRAN <- getFromNamespace(x$FRANname, pos=grep("RSiena", search())[1])
+        x$FRAN <- getFromNamespace(x$FRANname, pkgname)
     }
     z <- x$FRAN(z, x, INIT=TRUE, initC=FALSE, ...)
 	if (z$maxlike && !is.batch())

Modified: pkg/RSiena/changeLog
===================================================================
--- pkg/RSiena/changeLog	2011-11-14 18:30:31 UTC (rev 184)
+++ pkg/RSiena/changeLog	2011-11-27 16:23:01 UTC (rev 185)
@@ -1,3 +1,21 @@
+2011-11-27 R-forge revision 185.
+
+	* R/robmon.r, inst/examples/algorithms.r, inst/examples/runalg.r:
+	minor changes to paths. Added parallel package to algorithm code
+	(RSienaTest only for the algorithm code)
+	* R/bayes.r: made functions internal to reduce copying. Replaced snow
+	and Rlecuyer by parallel (non optionally)
+	* src/model/ml/Chain.cpp, src/model/ml/MLSimulation.cpp,
+	src/model/model.cpp: remove memory leaks.
+	* src/siena07models.cpp: Ensure end state is on stored chain. Fix
+	protection imbalance.
+	* src/siena07utilities.cpp: correct copy of initial state to sub
+	processes.
+	* src/siena07setup.cpp: remove print of probabilities at start.
+	* src/model/ml/Chain.h, src/model/MLSimulation.h,
+	src/model/Model.h, src/model/tables/Cache.cpp,
+	src/model/tables/Cache.h: altered comments only
+
 2011-11-14 R-forge revision 184.
 
 	* src/model/StatisticCalculator.cpp: fix memory leaks in network and

Modified: pkg/RSiena/inst/doc/RSiena_Manual.pdf
===================================================================
--- pkg/RSiena/inst/doc/RSiena_Manual.pdf	2011-11-14 18:30:31 UTC (rev 184)
+++ pkg/RSiena/inst/doc/RSiena_Manual.pdf	2011-11-27 16:23:01 UTC (rev 185)
@@ -44,15 +44,15 @@
 /Filter /FlateDecode
 >>
 stream
-xÚ­VMsÛ6½ëWðΘ ‚$ØžœÄIÓ»©¥ž’ 	–PóC%);ú÷Ý@E”ÕɸÓñŒ…ÅÃÛÅÛ]²h±èãŒýà÷íböæ/"!i¡
--"ÁrÊ$òœQ-ÖÑr«›Xäd¯«8I™ mÿ¹øNªÓ“œç4‡%æOÝÏ­i´7”,â’¦2h˜ä%ÍEM9æûaðpÏ-Åß‚ÜÛ]e%Šfx@ÀX-b%H[{Ûkú–úÓóÆþµ6]ïÎIªøÙ±Ï1˜ë}e›;ð¹3+«×íw¦œ–Yæ™r˜H©€ª¢y–yˆ?û„(p‹ppðHíƒÿýíDhýSœÈ4#ïÍNwCm4N
-2ô`cNú8á°Ç‰]õ?û­»ýWÆsS­ý‰wmU™qNqe™ƒW%ÍÒÒSºkÞ³ªc¡È2NCÆå•ÇŒsy¡„›ÅŒÃ ¼x‘Ñœ(JP SѪžý=KݦÿïFë°ðæCÍ£÷íìwø;ÇM“99v½•à“ȝ‡BiI*áùœƒ×Ë~èôj¸H Ä	@Âóàá®(WA`óO7w×þ‘Õ‰q
-Ìø(Ú¯,cGyO at yIˆ"ØÍm½¯àñÚâ*sò©y2ý`7Ç¥²ß¡óû7õÎvvå2¦wÆéæ-¼Ù£ß¸ntuèmÿ’§ ¢¥8áÉý	°u×i?]µõn?˜pí®kŸ@B	š)*ԝ{”M§1TN†­üh¥»ÎUi÷øoü GÉ‚§ÞX@·ëÑm<òà×ë¨ÈTmPÞ•×9š`€§¨æÉE¢Ú8!GÀ¸o’!E+ç	.„\l0’*D²{„D–½ZAÚfã§C~ñ>‘I²>4º¶«Ñxh»¤¯DÌÚ¯˜Êρ‘e%¹ð_ʨÛD/Öî?΢/îªÓzt¬ÛËœÚ^‰	Ìø¹z=±²s ”ÕëÁ
-æ¼L.½s=I‹Œ”R‘]ÑóXàöŒEqÙ'!ݬ_ë29¾˜£ëigÿ/mÎô%Þв‚“ÅÖ†˜Ù@Â'
-,ÔÚiÔ·bظ\«RÎ(‡ë.tâIIQ´àÇ’‚ö¼…¼€+¶¾n¤ÐøÔ‹É£ê
-³2-ðAÛƒŸ,]¾?Q™õr
-z€*…ô_«²‚Û‚‘«Øm]q plgPà]ÑûZŸ¹]î]úââN;?ã”°	¬†ÀÛÓz†‡~€ú’7D  DuŠû—Üs*Ócìñ«DJxR¼O¦þ‹ð€0÷å[’¥îqú’Ž°`tWY_ÒåT0¿¬ ÁMՏƒšºd at N¯|Á4ráÙa4\Û¦ý%ÉÁ³NúËä] }e)yîì0˜æûǤ„ÄÒ©‹0_Ž«[íZ%¬þ²·=X"I¦È-ª¶ [mÂGê<¨Ø7ø²Íø]„nnLN†*q^¸Þm;Ô…Fši
-ŸjfS…̘Œ)ä[ÉJÿŒò=€”<bZ±á[ë	`Ôx
+xÚ­VMsÛ6½ëWðΘ ‚$ØžœÄIÓ»©¥ž’ 	–PóC%);ú÷]`AE”ÕɸÓÑŒˆÅÃÛÅÛX´‰XôqÆ~ð}»˜½ùÀ‹HHZ¨‚G‹‡H°œ2É£<gTF‹uô…Üê&9Ùë*NR&ÈCÛÅ.~…•êt%ç9Íaˆáªû¹5FCÉ".i*sá“¼¤¹(" £)çÁ|?lö¹¥î[{»«ÌÁD‰¢™[ `¬±¤­Ñöš¾¥¸zÞØ¿Ö¦ëý:I?[ö9s½¯,pó>wfeõºýΔÓ2ː)‡Ž”
+¨*šgBüÑØ'‡»ØÁ5ˆÔ>à÷·o¡õOq"ÓŒ¼7;Ý
+µiœápjXù sÒÇ	‡9Nìªÿ§îö_ÏMµÆïÚª2ãâÊ2¯Jš¥%Rºk<²ªc¡È2N<CDÅâƹy¡„›ÅŒC¼x‘Ñœ(JP SѪžý=Ký$þûÑ:¼ùPóè};û~çØ£i2"''Ð^‚ ·|¹W`òPNZ’J8>ïàõ²:½.’ qð<x؇+ÊUØüÓÍÝ5²:1Ná€Eû•eì(ï	(/© Q»¹­÷^Û@\eN>5O¦ìæ8T@–¸sèpþ¦ÞÙή|A÷ÎxÝ<;4{ĉëFW‡Þö/y
+ ZŠžW€­ßNcwÕÖ»ý`¶»®M0„4+R§hPwŽ(›N»üQ9¶zÀÖJw5T¤Ýã¼ÁFï$ž¢+0àÜ®G·Ý’¯[P "kPµqò®PçÎÄxŠjž|$ªýˆrŒûÖ+R´òž°àBÈÅÆER…Hv°ƒÈ2¢W+È@Ûl°;´áëö™$ëC£k»‡¶KZðºq(ƒYãø聩°Œ¼ø(+¡È…)£n½»ÿ8‹¾ø­NëÑQ°~.ój{%&d0ãgXäêõÄ2”9Y½¬`ÞËäÒùxד´ÈˆqR*r¢+z7ýcQ\vÁKH7ë×úâ˜OÌÓEÚÙÿK›3}‰7\aYÁÉbkCÌl ‰µöÅ«&.ת”3Êa»7ñ¤¤(ZðcI	A{ÞB^À[¬)\|
+êÅäPuå²2-ðq¶ì,}¾ì@¨Ìú9w€*…ô_«²‚Ý‚‘¯î¶õÅÀ%…ï‹žÛ«ÅÌíìrïÓ×
+î´÷ã1Î@	›Àj¼1 Ð˜Ö37pè¸B_ò†4ƒ¨NBqÿ’{NezŒ½{•H	Gêö“)`úX¾%YêÞ‡&^ iàFw•Å’.§
+€þe.hª~dÐÔå rz…—ˆK#?ŽZcÀµmúp¿d 98ÖÉý29Àu¾²”<wvLóý1éá
+béÔEè/GÕ­öW%Œþ²·=X:’L‘[§Ú‚lµ	ÔyP1^ð²Íø.rnnLV†*q^¸Þm;§íh¦)<Õ̦
+™1-.¦o%+ñì.ZÈ÷Ròˆiņ·Ö?/¡Ô|
 endstream
 endobj
 449 0 obj <<
@@ -406,21 +406,21 @@
 /Filter /FlateDecode
 >>
 stream
-xÚ•XYoG~ׯ˜7±Ý×\~Þ],¼¶°Ap‹l’
-
-g˜9¬hýVuõ‡tKJ @ÓwýÕWÕäÉ>áÉÏ7<|¸»yû^«DVe™LîvIY1Îˤàš	•'wÛä·T2¹Z!³ôCÓ¦®ÍàÚfµ–¹JM³Å†L»±i\³§Ñá`©±ïÌéà6¦¦îØÛŽZ®Y)™¶Û™MX;6Ûiö×lÛ•éc¿úýî³Âoß—‰à¬â•@e…bJ©d-9Ë*MÊ
-v±#ùmq>)ŽS`±\¢&u	‹ýöO´äRg²RÓŠ/<ãǶ@ÓªL;»±ÍJ–ièöízp,eÖìüw;Xš&¬t;ü0âz©­Ù†æÐÒ×ø³Ÿhå©kïk{KÚŽ¾Œ¶Çûèocցx–s‘¬ÁW™®^4²ªªÉȃ)Êß/~ejÿlÓ;2¦j‡NÀÉvG#_wuÈõMšþa%‹Ôn©;«û†ú ­ô°©Û಍M°Ý´t¢qMPjb`‹¯‚%`)ïÌ‚¶>Áj¥ÒzJ)
-ÇÁ)íè†^¸äó`º!æ@Y<^BGÁ¸Î§·¨ N75ZS¦ÔýãÀËçq¹Ù<øÏÞöA:cºœaè‡Xn‰‹É!|ù,g
-¿õ´ˆ°î=d‹¯ÓÙ,`©,ýuU‚Ô‘{tt¬Jï˜%A{<
-pûþ¢d©/ËKß#ØU!ÒÞÖv3PÛà‡§GD‡ƒ«î:‹0³›À 汩[³E…²"½#_ÀÆ7Îçqb$Ü6ÓÍdÙÂÑ×w.YQŠÉÚ?qqŠ,˜âê|÷‘£
-&Š™\;x•=íÝCäT…÷¬ÿú©X9>ïÄŽÓ¬*^<m­*ÍJ Ћ[éòoÌnÉ´\hˆ×êóeÎòb†ß§ÏÎ6&¦¥`Z/àç{¦…í:‹'`gÆv !ùÌÍÿ¹Ó‰¦¶4° dPHV5E	q\ˆ×õÔLóÙõ^£oJ®ö ñ2I|Ç •¿q{O1 ¸d\TWÞvƒ} ܯ‡B;˜%n1™pL¢QDÉJ¡¾tܽô9Îifá‰-‘Ö˜rŠÔçjœOÒÄ.te$QÈŒKòÓ²"fÂ@O¢×76Q~Í9SWð`(ú{ik•q¦óKšGsÝp ª§(ª7€ öÔ9L~ì	¸Úg•ñˆxïm·!Q¸æâ8\@“9ZJí‘4ò3a–O©;EjÁ8:ö¾BÂ&U8_=
-ü²©	ë=µÃØÞÔðY¾6Ð ,jƒ¤­mœ
-ëò»£ëƒ•0øHœ­¡{Bùµ	rÕr D`ûÌš9±&Ü'^·æhjáMÅæÅŽWw›®	U(w°u¿XÚ¹ýÏÖsêô®¢Q¼+­Y‘‹7Ár1×4ëb *DTÎÔU6¢,DWÿõÓØLõ4b¶G×Àmufh»7Wå&…L*Ï@¹P?GKR_4‰³ÿ°ã‰ÂL%VB>9Âa<(aY*01Ñ¡GP~Ez8'=)+&ý÷ÈÙ—8å$²±%™4‚Ò.@š5¹p©ñuî½
-EÎYQèØ5Dµ®XžUÏN ÀÛÏç,Ég­ §t–‚¤Âõñ×9ÛÇK¡¡
-(ªË‚Žx^3à§báÎõŽ$ìcµƒRLœó2f<-¦ú^Zs$¢Dr ÔäÀb†8êšàG@³æW‰eæ°¦íŽÈíe‚Å”pÏ`
- ¬¢¦¢y­¡9ž¢×dž½¢c¦!ñP¯a£ŸdˆôH/‹‘&ñ;Ó´1lÛñ)š¸¤˜¸˜pè¡í†Ít÷´°”9À›åÞtäUpjê©(‡^
-¸ÚÓœžáÚ¨£~üá‰jebÁò;e>5κ«éý}ñä˜w|ýù/d„Pþ†v,øžVô¾ƒí¸÷`š½½‡þ§ÛM‚=‹ôK¥l„*HG^ÄÀ‹W·4¶Çg#dWÏ£YÈ®ù„Ì<ýp„m×¼¡¦\[ca¯3™þh<µ…ñÚ#:áÍ­ó›:½5]xM†ðß’èðÌ/tˆäCÒynUŠB±ÙØëÚÀ…|paòëÈ¢ø<bÎEG¼N™|ª!fÏåöá’€oÎ\UKs`ùó
-~ù» ðùLTj§gÓs?ˬ%ðžÈ.³`µûÎGo€iTþsçZlçâçÑaúZö%m"¹ˆêr~΂s ÌÆ:\Io§²2ô7µµ£Ÿ7&—šaÞOÏÓ6$‘3äCüÿ,{ÿD-pã{·;ûWW‹Wò«ý®¿?ÝÝ ÿ‚Ó§ÿDÁá[%›ãÍ7Pr—2×~Ųí'Ë’¶ÒÏc~ð퇣L~loþ“ˆéüu°^Hð¿A^¾.á!“ón^ÝKº±à²ùfË,¥ðC?¨ô'*žº'òûgºªåm_“’C¤(UQ‡€‹-à£ÿ]vA”
+xÚ•Xmo7þî_±ß²,†oû–E›"w‡C.1®(š¡%J"¼ÚU÷%®ï×ß‡»Z)´Ý€—¯3Ãá3ÏÅ“}“Ÿoxøþpwóö½V‰¬Ê2™Üí’²bœ—IÁ5*Oî¶Éo©drµBf釦L]›ÁµÍj-s•šf‹
+™vcÓ¸fO£ÃÁRcß™ÓÁmLMݱ·µ\³R2l·3›°vl¶Óì/®Ù¶+%ÒÇ~õûÝ?fƒß¾/ÁYÅ+Æ
+Å”RÉZr–UšŒìbGòÛ:ã|2§àÄr)DLêûíŸhÉ¥Îd¥¦_xƏm?€¥U™vvc›•,ÓÐÿ†mÛõà XƬ5œóßí`i~8˜°Òíð[Àˆëi¤¶fšCK_ãe?ÑÊS×Þ×ö–´}ÿm÷ÑßÆNêYÎE²_eºzñUUM‡<ТüýâW¦öÏÁ6½£ãÑTíÐ	8Ùîhä뮳`ù£~¢IÓ?¬d‘Ú-ugsßPÿ •V"u\v Ñ£	çF±›–$×£¶ ¶ð*œGÆûCfá¶>Áj¥ÒzJ)
+â@J;z€ÀA/\òy0Ýs ,/¡£`\çÓ‚[4P§›OS¦ÔûãÀËçq¹Ù<øÏÞöE:cºœaè…C¬·ÄÕä¾|Ö3‚ßzZ(DX÷²ŒE”WŠélV°ÎT–þº*AëH‰Ué= 3 D#h§nß_”,5ãeyé{»*DÚÛÚnjüðôˆèppÕ]çofvSÔ<6uk¶hPV¤wäØØãÆY'FÂ]pfº™,[8úúÎ%+J1öÏÁ@ÜEœ"¦¸:ß}DTÁD1“Kco²Ç!¢½{ˆHUxÏú¯Kíà”ãñNLœfUñ¢´µª4+@/n¥oÈ¿±sK¦åÂB¼VȘ/s–3ü>}v¶11+Óz/ï™n´Cê,œ€c؁„ä34ÿçN'šÚÒÀ‚q@!YEÌ%Äq!^·S3Íg×{‹¾y(¹ÚƒÄë$UðƒUþÆí=Å€â’qQ]yÛ
+ö€8p¿RdUì`–¸ÅdÂ1‰FO JV
+õ] ãîE ÏqN3;Ol‰´Æ”S¤>Wãx’&¾p¡ë(#‰B at f\’Ÿ–1J ;!kˆ^ßØDù5çL]Áƒ¡êïµ­UÆ™Î/ióè†Q=E9P½ i´§Îa’ðcHÀÕ>«ŒGÄ{v…k.Ä©àšlÌÑRj¤‘˜	³|J5Ø)RƒÆѱ÷6©ÂÁøêi࿐MMXï©Æöv †ÏÂðµaQ4mmãlXß]N	ƒÄ‰Ðº'Ô1› W- 'ràAt ¶Ï¬™kÂ}âukŽG-üQQÀ£ØñæãnÓµ#¢
+å¶îK;·? œa=§Nï*ÚŻҚ¹x±p,sMã°ŽðU!¢r¦®²e!º(¸ú¯ŸÆ&`ª§³=ºn«3CÛ½¹*7Q2©>ãBý-I}Ñ$ÎþÃŽ'
+3”X	ùä3„ð „d=ªÀÄD‡Aùéá|œô¤¬˜,ôß#g_┓FÈÆ–tBÐJ» !hÖäÂ¥Å×¹÷6:gE¡c×µºbyV=[8o?Oœ³$Ÿµ‚œÒY
+’×Ç_çl/y„†* ¨..ñ¼eÀOŝëiØÇj¥˜8çeÌxZLõ¼´æHDä@©ÉÅ2qÔ5Á€fͯËÌaMÛ‘ÛÊ3Š?(ážÁ0"<@XE!LEóZCs<E¯É<{%D!ÇL+B6â¡^ÃF?éé‘^#M âw¦hc6ض#$â5R4qI1q	,0Aè¡í†Íl÷´°Ô9À›åÞtäUpjꩨ‡^
+¸ÚÓœžáÚ¨£~üá‰jebÁò;e>5ζ«éý}ñä˜w|ýù/d„Pþ†v,øžVô¾ƒí¸÷`š½½V‡þ§ÛMÂyé—JÙ.(UŽ¼ˆ=®nilÏFÈ®žG³]ó	™yú5àÛ®yC
+L¹¶ÆÂ^g2ýÑxjãµG>t›Zç7tzkºðšá¿%Õá)˜_Øɇ¨¤óܪ…b³±×µùàâȯC ‹Bà_ðˆ9ñ:Idòuª†˜=—ÛW„K
+¾9sU-́ååüòw(àó™¨>ÕNϦç~–YK.à=‘]fÁ<zî;½¦Qýg̝ke8;?ãÐײ/YÉÈEÔ–ósœa6ÖáJz;••¡¿é¬
+8¨ý¼1¹Ôó~zžÎ°!œ!âÿ‡dÙû'Zß»ýØÙ¿ºZ¼º_ýèwýýéîùœ>ýø'
+ß*Ùoþ¸·¨Ìµ_°hú©²¤ôã˜|ûá(“Û›ÿÀߤ`’¾â×ùþÈË·%<cržÃ½k¸qI÷|B'~‡¹2K)üÐÄ*ý‰J§î‰¼þ™.jy××ߤäP©
+U´!àãbxèÿé±A4
 endstream
 endobj
 667 0 obj <<
@@ -589,7 +589,7 @@
 endstream
 endobj
 724 0 obj <<
-/Length 1358      
+/Length 1357      
 /Filter /FlateDecode
 >>
 stream
@@ -602,13 +602,13 @@
 `‡xA`°
 AUšžÆÔx¨r‘
 ˆŽÖÄÔPy¸~ØT\Víª*/pÕTà IÔÚÁKKsnã™(	 Ïãs>áq<ò³‚†' £ ŠïãTvõ®i)¤¬àä-whÓTmÕ˜¡Ì1趵cBg œyòøÐ3TŠŸ:‘Ý€zHðÿ]r¼úËÁ‚;xU­w}¬ ×/
-€‡¸+E–‹×\ÙÑTõ€—ìn#Jï_qô2L ìÏmmªÖw©Âþ5¤ŽCŒW][AÕg¸x§ç¿—Ë™«"–ðcy¢´ ò£lf?fŒª\¤ÊKÓ~3Ïñ¨(dd^|ldò¾›ý
-ÑDÔ¿G&š{›i–@^Ñ4Ó7\ ƒ«ÄoÎßš\þ4.‹NÝÚ绐`+ä¾7£Aê2àä#Ê]c,¦5ïµÈ%4©"nîûª¿—s¸ ãš‘¯»¶õU#slÊ@(r9ŒûûnãÎ'&Ï= [rCl‹à >ÙîÞÕwSE­ kjkóív[?NYê)pmšñãö™Aû¬ëÐœ<ºZdÃÔl½‡5#ƒ9ï«AW”ùU5“åÚÕLû¤cg®Ðwõ*Ðöÿ;ñBkªT~ŠŸB#°µ‹sJ>ûÆ;…`§‚í½t¨ÍômÒW£M“õUÒšÈ_…-ü˜ã,EPI¡aclüR“¶‘¿1Û-î´oâ™ø@ìñ@ D SÛ_D×à•Ìöh‘°h±§ZàBø¡4¢…z-Ž,<EcŽ„¨CeÒ"{
-2€…Oˆ,&„
-“XÀèáy óÜ
-Åp¡hìMÎ~*8OÁ`øèñ{‡ùŸÅá8ˆ@„/܇/Œl¸é¿#ØQÅĘKw±tíFÅôAiÀ…Á>çé½öéT ïpå
-E9w’ëÐÄ*7¶týãáóÄW¢Y‚£úð•r³÷ÝÙ+
-À»‚ï.mŸÈŒF ÏŽgg¹›hžçÙ‰¤ãmË
+€‡¸+E–‹×\ÙÑTõ€—ìn#Jï_qô2L ìÏmmªÖw©Âþ5¤ŽCŒW][AÕg¸x§ç¿—Ë™«"–ðcy¢´ ò£lf?fTå"U^àˆô[yŽE!#óâc#“÷Ýìoø‹¢öEP¿8Ò?ÑÚ3ØL³²Š¦™¨áÂ%~sÞÖäò§q9têäÐ<ß…ôZ!÷½
+R—%Qî#1å¨~|¯E.¡E	ôrßUý½œ»À׌|ݵ­¯™cKB‘Ëa„ÌGÐw_pr81yî	Èâp"[ðÉf÷®F¸›*i=SëX™o·Ûúq
+ÆRo,HkÓŒ7Ïšg]‡Öä±Õ"F fë=|è«ÌyW
+ºú Ì¯ú;¨˜,×®bÚ'ý:se¾«W¶ÿ߇ZS¥òSìøÚ€­]œSòÙ·Ý)üÊ8lï¥Ce¦§X“¾kÒ˜¬¯’ÖDþ*Ðhá‡g)BJ
+ícã—š´ÝˆüÙnq§}ÏÄb‡%:€ü›Úþ"V¸ö®d±"+€F¬Ø“+p!ü@±B½ˆGúŸb…€GBÌ¡.i‘=…
+ Â§CÓA…),àóð<€yîb¸‡P4ö%Hf?Da§`0xôø­ÀÃìÏâ`Ä ÂWîÃ×
+F	6Üä‰ßì¨^â̤¿»‚Xºvã…bú 4HàÂ`óô^ûô‡*€÷?¸b…’œ;Éuh`•YºþñðiâëÐC,ÂÀÑø|øB¹ÙûÎìØ]Á7—¶COdF#€‹gøÆ3‡²ÜÍE4Ïó ‚ìD’ñ?Ym
 endstream
 endobj
 717 0 obj <<
@@ -1515,23 +1515,22 @@
 ™¶¦X6ÃbTØÝÏáþ:G‡¸N[96ê­Gh38/×U]Ûµðy[‰\ø€dâ×KžBHyEcÛ§x*êÌòôý2ñÕpIÍÇîlqàQ^ÿ@èÉ¡¶àM€÷ß[uí¡t{MàMƹ¶ƒ[‡+]…Žïãُˆn•9ÅÁ$KâÁÒ“+H†ÌÔPIÔА$¨$|Š@;ìâå{š‰÷UFäùóCþ™<¢Ž°¬­­m	š;?@ÿ}À1öý“½ª‚à3ñ*D$Â>â\x÷éõ̹ÚU¡;Ì>ã‰qY‰qž€Ùë<ã†âaô€Ò¨:ž²¢â#Ø"rd”ZndIÅ€ª´2¨ùþª-G¢4'ÔS
 ­Á›°—`ÀÔÅŒ™HsήLŸÛø˜ØGÃtÜvoÙ…èKÊÉ>ãê*¡!2e|´y¸O–Wý¶ùÀ4fÂQQGfµ­
 I @¬Gת@Ç|ÄUè> ¡ ûH"çªk1"ÅÆù¨t]æ¿mlÝÈôf	)ƁóZ½é—qo?“x7•ÀFÒ®ÈËè
- â» Ó8Œc`/»*vJ´ä!âÍ’ªËŒŸQz㯟*ö‘¸i¿âïjþìÔR/$œ0~`2e|ç§/€Éæ;@2
-”ùpkÛ»NØL&ÿ¼XúÞBði{
->ŽÑ×-øNÈÖÍŸXZŸ:ð¨¡-6,Å· <›Y5gŽžÖ*
-âÞÒvm{øîòòþþ^A^Ô6Šˆþ¢Òµêî.)«¼œ1×Ö±ïMUR‚Û´É×<ä(½?Eƒº ¿¤LÚò:HqPÚrèTõ7eº²y¶Ò]ž³ª¿r•› }òk̢Ώ`WäMý0tôÔÓ≨Ï<ÔÁõNÎr8½À«úù8ÆOà˜¼Ç`G%…V¨Mç
-UCY6ömê5	Ê$Ëã±pp­ˆår]‰Qí8!Éù¨)
-YOUt’+À—”ñsXˆÛ¶•Ã
-õ8ÂF/åi4+÷O„ï¹4@!pÝÚ¬È9{\„è0Þ,Æ{!ž;¯+(i©1˜àcò"­0î8áV
-#…4ÞHîˆn¶É±ÚÂm–‹
-,Hö”Ñ‹¤áÓóí¯ù±jîò’òAdsúT ç
-é7>ùãݝøf1}µûôK¾G®t{©Hr.Ÿ‹|7”|hJüUŠÃ!|Žè‰h13oúÅê“ž÷-s®å#æW”ÅœTÜš¦RÁK s-vÃÎtëÍ[ÊÁ8:e¶>e^øB6œ‰ˆDÊ.Ý. žb5ÄÈ'‡A\œM¢ì—6š¾‡‡ÜkÏûòtw`õ÷|Odó31ÙÉ(ýŒ$×pè ;ksøù¥6w{†ÇžÍÈ:-Ö]!¿»àd>å&­U[×UÝð—ÙôK,×u>J϶éKZ‡*Êâ "6£…s©§£¹Â$W ÛÒ¦1r† J‰a§”¿üæpŽÜ¾Ã.E•ÙÒö©¥äâú¬Ûƒ‹ß¾ˆ"ÿ3‰Ô
-ç®ûN„]ƒ€&ßP#F¼T
--ém<ÛçïUsÈ˪©ÆþHÏû#óM
-ñ¼;z-u ®|T ½€¼9oû­©soÏ’÷¸	 äN› Iß°m;t¤ã£ûœê:Aíy%êS}#}±-ꔋÑ>¦²ÜGr¼%»3„¤¼JÎeXÝ•å™V‚g¥ý¡KpuåÉ\3ÁC{	~w6E+Ãûj›nø2lMvØHE0× ¿üm'ÝÉF–V¼²±rd¾ŠJ6Eö½Q¨¢0š8ŠÒeD°GœF¯àkf€ÊªE´Áž´aKcË
-Çä	!vŸæ…œWñ§šj¶ú׊ÄFÕ+p…P
-Ö+à3”¥ó80¹ƒj/ØÊ‘¦’.ïŒû 6V(!KC2(JR
-@é ·U=+<7Pû”ÑÑøEÏ¿¢ˆÈq3#g‰m p¤ÿ"GÚñÕ¥%§ÊÛBÃ;NRþ†=å|'¯…RåQyFÒl†‹™{"Pxš“%Ú-Ç9zŠ øžüÛÁârÊŽØW¡ÿUš¬“ã;7|x¨¦×µSpʏ$”~D¸ídM¯¡¸¯”wŒuÿöÁ*†#R­†ÇD¡l?Ô¶‘ÅÆ%£g”$'ÝqyÑ‘æ\ͳ=¶Ä3{Á/q½‚c¿§µôö`7‘!÷»c¹à¾Q¨Ej@–{^.gNvE§}ŸðŒDtèwñ™Ìˆ#R®	FŽ…ž«(ROp%Žè0V @Oµ ´9ƒŠIƯtO™Š
-­ÕÁ×RŒ©-_@}YRÎ™‰;:æ!ðÿ{gk~:Š!uc{¨¨—÷­AÛú™{+Ûç	óazÁWuƒÃ1£ñDéï‰'æÎ;¥#"‰A•bJWh/îÄ~ý V^ŸdÃUÿ†cMÐÜ~éºýéí§w73¸Ã2íê~ÝåÜI‰ÂÁó¤‹æ(I VˆÍÉã\áMt+ÑSùèu%*¿ÝAb§}çŽÅý€c6Ë_º`6¨f¬ÏHÐóÁÐÝø1ö#T&d€Ëô@í÷ 2ò+:ñ¥Ú¿M ÀWü–Ç'VëOV!>Yñã/‚Éwáàø“mÕ±]bGA²ªØn*Ètð•%8­:^!‘;奎”jÊÒ9­WØqú‹eæ3}ˆ½¼ºüK9Æá?ùæÏ&ôžâ”@.–èÑã<ÖtÔâ×nèLÔø<ÒÈÿF2UÍÕ zÛ·›ñãä!,Ò@±Oy PcôdÉ»›Wÿõà¢ö
+ â» Ó8Œc`/»*vJ´ä!âÍ’ªËŒŸQz㯟*ö‘¸i¿âïjþìG¨¥^H8aüÀdÊøÎO_ “Íw€d:ÿ(óáÖ¶w°™Lþy±ô½…àÓö0,|£¯[ð#¬›?±´>uàQC[lXŠoAx6³jÎ=­UĽ¥íÚöðÝååýý½‚¼¨mýE¥kÕÝ]RVy9c®+¬?bß›ª$*>¤·i“¯yÈQz~Šu?@I™´åu$<â ´-
+äÑ©ê;nÊtdól?¤»<gUå*7úäטE-Á®È›úa2è詧ÅQ/žy&¨ƒëœåpz'VõóqŒŸÀ1y)ŽÁŽJ
+­P%:šÏª†²lìÛ4Ôk”#H–Çcáà"ZË5亣ÚqB’óQ!$+R²žªè$W€/);ãç°·
+,$,l+‡êq„^ÊÓhVî3žÞsi€BີY‘sö¸$Ña¼Y:Œ÷B:<w^7VPÒR1b0ÁÇä%DZaÜq¬F
+i¼‘ÜÝl“cµ…Û,Xì)£IççÛ3^ócÕÜå%åƒÈæô© Î:Óo*|òÇ)º;ñÍb,új÷é—|\éöR‘ä\>ùn(ùДø«‡Cù3Ð3ÐbfÞô‹Õ'=ï[æ\ËG̯(‹9©¸4M¥‚—8 <æZ솝è ×›·”ƒqtÊl}ʼð…l8ˆ”]»]@<Äjˆ‘+N=‚¸8›(DÙ/m„5}¹×ž÷å-èîÀêïùžÈæ)fb²“QúI®áÐ;@vÖæðóKmîö14<›uZ¬»B~!vÁÈ|ÊMZª¶®«ºá/³é—X®ë|”žmÓ—´?T”ÅADl FçROGs…I® ¶¥M#bä"A”ÃN)ùÌá¹}‡]Š*³¥íSKÉÅõY·1¾}Eþg©5Î…]÷	»;M¾¡F*Œ.x©ZÒÛx¶;2Î߫搗USý‘ž÷Gæ›âywôZê@\ù¨@zysÞö[SçÞž%ïq@ȝ6’¾	`ÛvèHÇF÷9Õu0‚ÚóJÔ§úFúb[Ô)£}Le¹%ŽäxKvgIy•œË°º+Ë3­ÏJûC—àêË“¹f‚‡:öüî(lŠV†÷Õ6ÝðeØšì°‘Š`®= :)~ùÛNº“,­xecåÈ|+•lŠì{£PEa4q-¤Ëˆ`8^Á×Ì6 •U‹hƒ=hÖƖþŽÉBì>Í9¯âO5Õl+<ô¯‰ªWà
+¡¬WÀg(Kç7p(
+`rÕ^°•#M%]Þ÷Am¬PB–†dP”$¤€Ò n«zVxn ÷+„(££ñ‹žE‘ãfFÎÛ àHÿEŽ´ã«KKN-”·…0:†wœ¤ü
+{Ê
+øN^¥Ê£ò>Œ¤Ù3÷D ð4'-J´[ŽsôAñ<ù-¶ƒÄ1ä”±¯Bÿ«4Y'Çw$
+nøðPM¯k§à”%H(üˆpÛÉš^Cq_)ïëþíƒUG¤Z
+‰BÙ~¨m#Š?ŒKFÏ(7HNºãò¢#͹šg{l‰gö‚_âzÇ~Okéí!Án"CîwÇrÀ}ÿ£PÿŠÔ<€,÷¼\ÎœìŠNû>á‰èÐïâ
+2™G¤\Œ=WQ¤žàJÑa¬@žjAis“Œ_éž27Z«ƒ¯¥S[¾€ú²"¤03wtÌCàÿ÷ÎÖütCêÆöPQ/;î[ƒ08¶õ.2÷V¶ÏæÃ8ô‚¯ê‡cFã‰ÒßO̝wJGDƒ*Å”®Ð*^܉ýúA¬¼ >Ɇ«þ
+Ç› 3¸0üÒuûÓÛOïnfp‡eÚÕýºË¹“…ƒçIÍQ’@¬›“Ç
+¸Â›6è V¢§òÑëJT~»ƒÄNû΋ûÇl–1¾tÁlPÍXŸ‘ çƒ¡»ñcìG¨LÈ —èÚïAdäWtâK´›„A¯ø-O¬Öž¬B|²âÇ_“ïÂÁñ9
+&Ûªc»ÄŽ‚dU±ÜTéà+KpZu
+¼B"wÊK)ÿÔ”¥sZ¯°/âô!ËÌgú{yuù—rŒÃòÍŸMè=Å)?€\,Ñ£Çy¬é¨Å¯ÝЙ6¨ñy¤‘ÿ8dªš)ªô¶o7ãÇÉCX¤bŸò@¡ÆèÉ’w7¯þQl¢ú
 endstream
 endobj
 964 0 obj <<
@@ -5025,324 +5024,337 @@
 endstream
 endobj
 2060 0 obj <<
-/Length 1888      
+/Length 1828      
 /Filter /FlateDecode
 >>
 stream
-xÚ½Y]Ûº}ϯpß$ ÖŠ’lIèC’Þ-Plr‹ÄEôö+Ñ6±ú0Hi7{ûç;Ãʲ³ÍÝm゘"©!gxæÌ¡6^ìñâÏobþ}¿ysu¥‘Ei¶N›í¢(£8.yœE"]/6õâŸÁûp)D²
->ìe·S6\¦ù*¨úö ªéièéWIÓheèá>LE ŒÕ}gÃmþru],D•q)p©x±L’(_´Êf¯Ñt·á2)µÓwÈÁVWSÇ/ÕÐó,C=I—oÃe¯égõ]óH­Z
-R7–¬T!¼7¹£{M}4.Eªª‡½¢Æh¡!Š 
-—k±~Wñ_M¿DßÐ!¢rµ"ovF¶-øï¦i`÷ýØà®Ò×Ù±h€¬C6ã¦ÀúέsÓïhv“5<«ïè÷ÃçwŸÈZo¨Gw'³àórÛ›¿gÔÁE«·zèÍcXdA»¸ó	
-W×peT®“5XGEšƒWyT¦)y{ÉÏÞ9y%Ž2 ML““Xˆ%þËh³e°£{À !Qd?ÁáeYp­¿Ò„Vµ¸S7Ü(yg©ÛûYɦ9L&ú-»*^Â0l]Ùè{~.y×?ÀQñGÓŸÎìfbn8‰
-A/£,ÉÉü¿¿·I¿^ÜŽ;ƒþp Lén7Åp0(cÆÃ1x>ª‡½´Š#ÍÎP6A#¥n½Õ]5!«Rd’Ñ=%×ø:quÉ{_ŠUTf/uõÃ^¹¥îhÙ‡½äs.Ô[#©µ5}K­VbR}…P4úsÍg¿ÓõÃd‰ƒ1ZŽÄNñ‘Ø…Qš1ŒfGw9%„2Î9<B>Þ\½—øGüÏcŨa4Ý.YUê0H É7©÷!ð½mZ­:¹Ñ­šRâA{†?0°¦Çéǃ={Ô˜3X5ÊhÇË4$¡ö0h¬bÐXý›z:ŠÿñsØT86]¹båª	ï鱫}N¸¼]8°˜æTLÁÜà˜Jç‰Ü>½¦¼ÈP ²iü"
-'‹äÌ\A-Þ©oò?Ç%†­þ~\ò’ã‚Ð	‘Ü,FÏ‘ÁÂÝÑG˜hzÀ³ýsþAÅüÉŸáO~U\Hï±®è½zÁ³½Wë@-¹@¹–ƒñ©¶õù¡XIYO­G£{‰È» cIç	Ø%8(Ì‹1È»ºvtG§°±:G/’Gn¯ê6cǤ—±†ÎÛ)m D#/À¥ú>SGìŽAJfy|òË÷¾*Ã²èŒœHL–å3”b…:(iÃÎ׶nùw
-yŽ=0Õ@<…ö’}¼0Ìjñ·(^±¤ëZ1ÿÜ ý_È/·Ã¿ÉÕ q›¯\¬ Ð_uËé:œn€ƒmôžBÝ;άiTÐlŠYeyðé=Û£k
-LѼÌlê»Ú±*ôÖŠ2¡é-*ª<ÞâÅ#wEé‰ÆñN1S/ÌãôÀà;-~ÚéÜ–ÑåÓ3ÛkØœ}Ëuäû
-È7/ÙÆ®܍ñ„w^
-ñÒÍNŠa)ç—!uÚß-j'”Q¨qæJ2>B½¸¡fG7/.ÙÅ!ýL!ÊÀº¨ß»óÆç«45Š›Št
-R°åüÅ SÍÚsô4}Á_öŵÙY8ܯì$B“
-=Ý\ûÑ@;dûsÓo¢×Û±»ž&å
--:¸…ØP½M õŽL…3D¾¦n¼ë^÷ 8t׋
-^¬tp~~p— ÷²Ø`ÙŠ34&4Ç•¦Â‰©ƒæl@}¹#‚A[ùïú0ا¨Áë˜V’Ä“
-KW¾NëahÔëȘxý³zÍ+ñÉE pƒÿ¾bÛV©8Õ@	Œloî.Y*ot«_;;©©„.éæ5ñv®ËùÁï3?ª'é½³'®Ù
-µÁÙP7³†^¿J°•qh>ñô[-æˆØ%²õ	SOévá;a^⨆v_N˜B‚C†¥¯y¼…Á»›/?ã`é&5=È"ÃfŒ´{ª!@~ÛsÛ«8 oYQ£ç7ú–3~=ß,ó)üÃW`ٍԮyÛ¨ˆ>½½0°— ã¸Ï ŒdºÇá–‘	D<ß|F߀E@<ŒšsíüƒaJdî™÷5¾‚»ñs®yâÒü˜$̏ÐpÅ#áO(q‘Lkr0…©N¾6¤'áy~߃GÒN8?ijA6SFV|Á	ŽX¡°Ñ‰X\Y5`DÕ—îìâ_ðþªýwm«o›Çs±’Üëµ±mµ²@\Å)š"çhŠ5~NôÕZÑÐÁèéƒ)<òµZpzp¡‘–(2î]¾tŒ•;èrg!rWÛÝÀN?ZZ½ÖîyùGêpÌ
-Óèϸhe°b<Ù½djæ‹e5ƒgr‹Ù_tÄ*…KmlD©ÿë‘X''ïü¼y󯠏Ì
+xÚ½YÛnÛF}ÏW¨o$Ñ\^D2@œ´.P8I‘¨h¦kr%-Ì‹@R¾´?ß™YR”
+Gn"¿Xä.9œÙ=sæÌÚŸ­gþì—W>ÿ¾]¾:»ˆÂ™ˆ¼0Z³åj–fžï§³Ä<.fËbö—ó֝Äλ¬×ªsça;ySme«
+ºëúU²-µjéæÆ
+…£ÚN7uçþ½üõì"	ßËüLà§üÙ<¼$Né+ˍFÓ™ï\¹ó uÔZ×< {ü[uAó¾á§Z	|?{íÎ#?v¤}ª©Ë{º*T/uÙ‘•Ü…÷†P`öv£iŒæå_„*ïi²ß(ºØup!œÖŽçÎbá|ñcÿ·¶™cl^Çͺ•U±Ã»aèt›fW¢WaWw»²§	²à@‚NõµùÎe³¦ð&*ù©¦¦ßwŸÎ?µ¦¥]OFΧùªi×ü^«¶fµšN÷M{撚ã÷=Ðpv[‘yÙ"Xàöˆ…—†	D•x‹  ¨À—äàÉ+¾h|z8ð…€5™	9±çQÝhM‰4>0‰}»—
+t%óüëÿ>å‡ðDZ?ÞJÜÜ{ücv¾NËrÝ´ºßT¼Y¦‚¬|é–æ`ÿùí-l’leYª’¤Áϵ/	>Êœ}›‹–5{n,úN±ë•ªp+¥’×Ýï/iJu½®dK
+¨¢È¹TÇсßZ©B?íyø\Ç?0ª•®	µÑA*"|šxKÌÜÂöØ»Nל7n©^î웘ŒjÉ[¢k$¨Rõêk8Ÿ‡‘A-¡kñ
+@Ñ@Þà6ÄÎD¨ïè™q+Ãq+£a+sYæ»Òì!ÓÀŠÓZöü•®‡i?ï¼'ceÇ¿=©…8"ÖðÍé²ú‚/t®vk»ÍS“!bÖàÕ«¶ÝmÇų«ºÝÈ!£9˜B6˜$
+,š+2yˆÞG0ö=³þÝF1ÁPFlÔ˜MŪ•tµj¦±
+ˆ¼ƒµ(õ5[>øºéKµe·!³¶°çT±Ë™äÔ8
+ŽÇÑâ¹k‹åõI#‡ž=R<ZÕïÚzX.™çjÛK@ɃÜûŽüù”›Vµ\êJ
+9±Ç™¸ý 74Ý®Ûf·í&hœ“EÂFµÚˆ.” ´4bÐtúÕ½£úÇ0ª`FEef¤{ŠüX6'LâîÌr rLH9‚¹Þl0é#ιêmz
+yUk¾ýHÉÉ2”þKÿ‹°¯®~}]’Œ×¡^s­aôŒ<®ÇáÁ–Dà¹ûÊ>¿xŽˆIr–ž°žPs3U!¹Ñ7FÖµZr!€z-ûÖ¦ÚÊæ‡â¶¡³Ô:60»‘ˆ¼w÷/–€M‚ƒ¶;]9/
+£AÖ
+E-`ã ¾4K!™ÙAåÂp»«™õ"nø`ðjȉÌàZcŸh ð ÉôQ‚&©óÁ~¾±už ‹ÆȤ¡bþ؃)–¨	F©ªmq«çhH|£Ý™ë¶ ŸÀBõŠþ?ezOÉÚjüDZí5¶Z1à ÿŸ‘ÊOWE~'š+ at 7¢›)9ÒwºbŠ4F9ÀΖzCkÝÖ,hvì*€dâ(q>¼e{ÔÅÃ#š¿`E9íêÂð*ŒŠr¡l¶ŠªÄé_cŸ˜²ôHC=¶Ð{ú…™œn}Óò7¶†-½H0Ln+À»î5—’qñ— à¬jÛÕyoNH&Ôsj$šaé¦!nç›!ÕÚ¶…‘ªU¨röµä¤S›´ËT^NÈgjbƒ$s:³è7f¿ñždpº@ç¤h‚‚W&^¼ `j"ú^[–žÇXð—c1×,ìm€'T5$F“%Ý]
+Ìõ-‚<dûû¦ß_z/!©|Ó¤ÙJ-¸‚µ¡Š@êL…OˆdAÃØAèVù <”x±Äs$|
+OÛLd^62/X¸âš
+švã—†Ò‰™âƒê,A™-‚É.·ÇnzÛwQƒU2•$‘'ù€3¬Ô}_ª—2þâ!¿dW<iRÓ
+líqbw_U
[TRUNCATED]

To get the complete diff run:
    svnlook diff /svnroot/rsiena -r 185


More information about the Rsiena-commits mailing list