diagram/0000755000176200001440000000000013735030642011661 5ustar liggesusersdiagram/NAMESPACE0000644000176200001440000000117313727671363013116 0ustar liggesusersimport(shape) importFrom("graphics", "arrows", "lines", "mtext", "par", "plot", "points", "polygon", "rect", "segments", "strheight", "strwidth", "text") importFrom("stats", "cycle", "dist") export(bentarrow, coordinates, curvedarrow, openplotmat, plotmat, plotweb, segmentarrow, selfarrow, shadowbox, splitarrow, straightarrow, textdiamond, textparallel, textellipse, textempty, texthexa, textmulti, textplain, textrect, textround, treearrow) export(en.Resistor, en.Capacitator, en.Node, en.Capacitator, en.Amplifier, en.Signal, en.Ground, en.Transistor) export(enResistor) diagram/demo/0000755000176200001440000000000013734555447012623 5ustar liggesusersdiagram/demo/flowchart.r0000644000176200001440000001515710743140772014774 0ustar liggesusers ## Flowchart examples par(ask=TRUE) ## MODELLING DIAGRAM mar <- par(mar=c(1,1,1,1)) openplotmat(main="from Soetaert and herman, book in prep",cex.main=1) elpos<-coordinates (c(1,1,1,1,1,1,1,1),mx=-0.1) segmentarrow(elpos[7,],elpos[2,],arr.pos=0.15,dd=0.3,arr.side=3,endhead=TRUE) segmentarrow(elpos[7,],elpos[3,],arr.pos=0.15,dd=0.3,arr.side=3,endhead=TRUE) segmentarrow(elpos[7,],elpos[4,],arr.pos=0.15,dd=0.3,arr.side=3,endhead=TRUE) pin <- par ("pin") # size of plotting region, inches xx <- 0.2 yy <- xx*pin[1]/pin[2]*0.15 # used to make circles round sx <- rep(xx,8) sx[7] <- 0.05 sy <- rep(yy,8) sy[6] <-yy*1.5 sy[7] <- sx[7]*pin[1]/pin[2] for (i in c(1:7)) straightarrow (to=elpos[i+1,],from=elpos[i,],lwd=2,arr.pos=0.6,endhead=TRUE) lab <- c("Problem","Conceptual model","Mathematical model","Parameterisation", "Mathematical solution","","OK?","Prediction, Analysis") for (i in c(1:5,8)) textround(elpos[i,],sx[i],sy[i],lab=lab[i]) textround(elpos[6,],xx,yy*1.5,lab=c("Calibration,sensitivity","Verification,validation")) textdiamond(elpos[7,],sx[7],sy[7],lab=lab[7]) textplain(c(0.7,elpos[2,2]),yy*2,lab=c("main components","relationships"),font=3,adj=c(0,0.5)) textplain(c(0.7,elpos[3,2]),yy ,"general theory",adj=c(0,0.5),font=3) textplain(c(0.7,elpos[4,2]),yy*2,lab=c("literature","measurements"),font=3,adj=c(0,0.5)) textplain(c(0.7,elpos[6,2]),yy*2,lab=c("field data","lab measurements"),font=3,adj=c(0,0.5)) ##### ## DIAGRAM par(mar=c(1,1,1,1)) openplotmat() elpos<-coordinates (c(1,1,2,4)) fromto <- matrix(ncol=2,byrow=TRUE,data=c(1,2,2,3,2,4,4,7,4,8)) nr <-nrow(fromto) arrpos <- matrix(ncol=2,nrow=nr) for (i in 1:nr) arrpos[i,]<- straightarrow (to=elpos[fromto[i,2],],from=elpos[fromto[i,1],] ,lwd=2,arr.pos=0.6,arr.length=0.5) textellipse(elpos[1,],0.1,lab="start",box.col="green",shadow.col="darkgreen",shadow.size=0.005,cex=1.5) textrect (elpos[2,],0.15,0.05,lab="found term?",box.col="blue",shadow.col="darkblue",shadow.size=0.005,cex=1.5) textrect (elpos[4,],0.15,0.05,lab="related?",box.col="blue",shadow.col="darkblue",shadow.size=0.005,cex=1.5) textellipse(elpos[3,],0.1,0.1,lab=c("other","term"),box.col="orange",shadow.col="red",shadow.size=0.005,cex=1.5) textellipse(elpos[3,],0.1,0.1,lab=c("other","term"),box.col="orange",shadow.col="red",shadow.size=0.005,cex=1.5) textellipse(elpos[7,],0.1,0.1,lab=c("make","a link"),box.col="orange",shadow.col="red",shadow.size=0.005,cex=1.5) textellipse(elpos[8,],0.1,0.1,lab=c("new","article"),box.col="orange",shadow.col="red",shadow.size=0.005,cex=1.5) dd <- c(0.0,0.025) text(arrpos[2,1]+0.05,arrpos[2,2],"yes") text(arrpos[3,1]-0.05,arrpos[3,2],"no") text(arrpos[4,1]+0.05,arrpos[4,2]+0.05,"yes") text(arrpos[5,1]-0.05,arrpos[5,2]+0.05,"no") ##### par(mfrow=c(2,2)) par(mar=c(0,0,0,0)) openplotmat() elpos<-coordinates (c(2,3)) treearrow(from=elpos[1:2,],to=elpos[3:5,],arr.side=2,path="H") for ( i in 1:5) textrect (elpos[i,],0.15,0.05,lab=i,cex=1.5) openplotmat() elpos<-coordinates (c(3,2),hor=FALSE) treearrow(from=elpos[1:3,],to=elpos[4:5,],arr.side=2,arr.pos=0.2,path="V") for ( i in 1:5) textrect (elpos[i,],0.15,0.05,lab=i,cex=1.5) openplotmat() elpos<-coordinates (c(1,4)) treearrow(from=elpos[1,],to=elpos[2:5,],arr.side=2,arr.pos=0.7,path="H") for ( i in 1:5) textrect (elpos[i,],0.05,0.05,lab=i,cex=1.5) openplotmat() elpos<-coordinates (c(2,1,2,3)) elpos[1,1]<-0.3;elpos[2,1]<-0.7 treearrow(from=elpos[1:3,],to=elpos[4:8,],arr.side=2,path="H") for ( i in 1:8) bentarrow(from=elpos[i,],to=elpos[i,]+c(0.1,-0.05), arr.pos=1,arr.type="circle",arr.col="white",arr.length=0.2) for ( i in 1:8) textrect (elpos[i,],0.05,0.05,lab=i,cex=1.5) mtext(side=3,outer=TRUE,line=-2,"treearrow",cex=1.5) par(mfrow=c(1,1)) par(mar=c(0,0,0,0)) openplotmat() elpos<-coordinates (c(1,1,2,1)) straightarrow (to=elpos[2,],from=elpos[1,]) treearrow(from=elpos[2,],to=elpos[3:4,],arr.side=2,path="H") treearrow(from=elpos[3:4,],to=elpos[5,],arr.side=2,path="H") segmentarrow(from=elpos[5,],to=elpos[2,],dd=0.4) curvedarrow(from= elpos[5,],to=elpos[2,],curve=0.8) col <- femmecol(5) texthexa (mid=elpos[1,],radx=0.1,angle=20,shadow.size=0.01,rady=0.05,lab=1,box.col=col[1]) textrect (mid=elpos[2,],radx=0.1,shadow.size=0.01,rady=0.05,lab=2,box.col=col[2]) textround (mid=elpos[3,],radx=0.05,shadow.size=0.01,rady=0.05,lab=3,box.col=col[3]) textellipse (mid=elpos[4,],radx=0.05,shadow.size=0.01,rady=0.05,lab=4,box.col=col[4]) textellipse (mid=elpos[5,],radx=0.05,shadow.size=0.01,rady=0.08,angle=45,lab=5,box.col=col[5]) par(mar=c(1,1,1,1)) openplotmat(main="Arrowtypes") elpos<-coordinates (c(1,2,1),mx=0.1,my=-0.1) curvedarrow(from=elpos[1,],to=elpos[2,],curve=-0.5,lty=2,lcol=2) straightarrow(from=elpos[1,],to=elpos[2,],lty=3,lcol=3) segmentarrow(from=elpos[1,],to=elpos[2,],lty=1,lcol=1) treearrow(from=elpos[2:3,],to=elpos[4,],lty=4,lcol=4) bentarrow(from=elpos[3,],to=elpos[3,]-c(0.1,0.1),arr.pos=1,lty=5,lcol=5) bentarrow(from=elpos[1,],to=elpos[3,],lty=5,lcol=5) selfarrow(pos=elpos[3,],path="R",lty=6,curve=0.075,lcol=6) splitarrow(from=elpos[1,],to=elpos[2:3,],lty=1,lwd=1,dd=0.7,arr.side=1:2,lcol=7) for ( i in 1:4) textrect (elpos[i,],0.05,0.05,lab=i,cex=1.5) legend("topright",lty=1:7,legend=c("segmentarrow","curvedarrow","straightarrow", "treearrow","bentarrow","selfarrow","splitarrow"),lwd=c(rep(2,6),1),col=1:7) openplotmat(main="textbox shapes") rx <- 0.1 ry <- 0.05 pos <- coordinates(c(1,1,1,1,1,1,1),mx=-0.2) textdiamond(mid=pos[1,],radx=rx,rady=ry,lab=LETTERS[1],cex=2,shadow.col="lightblue") textellipse(mid=pos[2,],radx=rx,rady=ry,lab=LETTERS[2],cex=2,shadow.col="blue") texthexa(mid=pos[3,],radx=rx,rady=ry,lab=LETTERS[3],cex=2,shadow.col="darkblue") textmulti(mid=pos[4,],nr=7,radx=rx,rady=ry,lab=LETTERS[4],cex=2,shadow.col="red") textrect(mid=pos[5,],radx=rx,rady=ry,lab=LETTERS[5],cex=2,shadow.col="darkred") textround(mid=pos[6,],radx=rx,rady=ry,lab=LETTERS[6],cex=2,shadow.col="black") textempty(mid=pos[7,],lab=LETTERS[7],cex=2,box.col="yellow") pos[,1] <- pos[,1] + 0.5 text(pos[,1],pos[,2],c("textdiamond","textellipse","texthexa","textmulti","textrect","textround","textempty")) mf<-par(mfrow=c(2,2)) example(bentarrow) example(coordinates) par(mfrow=c(2,2)) example(curvedarrow) example(segmentarrow) example(selfarrow) example(straightarrow) par(mfrow=c(2,2)) example(treearrow) par(mfrow=c(2,2)) example(splitarrow) par(mfrow=c(2,2)) example(textdiamond) example(textellipse) example(textempty) example(texthexa) example(textmulti) example(textplain) example(textrect) example(textround) par(mfrow=mf)diagram/demo/plotmat.r0000644000176200001440000001550111211417753014451 0ustar liggesusers### DEMONSTRATION FOR PLOTMAT ## plots diagram based on a matrix ## SIMPLE PLOTMAT example par(ask=TRUE) par(mar=c(1,1,1,1),mfrow=c(2,2)) names <- c("A","B","C","D") M <- matrix(nrow=4,ncol=4,byrow=TRUE,data=0) pp<-plotmat(M,pos=c(1,2,1),name=names,lwd=1,box.lwd=2,cex.txt=0.8, box.size=0.1,box.type="square",box.prop=0.5) M[2,1]<-M[3,1]<-M[4,2]<-M[4,3] <- "flow" pp<-plotmat(M,pos=c(1,2,1),curve=0,name=names,lwd=1,box.lwd=2,cex.txt=0.8, box.type="circle",box.prop=1.0) diag(M) <- "self" pp<-plotmat(M,pos=c(2,2),curve=0,name=names,lwd=1,box.lwd=2,cex.txt=0.8, self.cex=0.5,self.shiftx=c(-0.1,0.1,-0.1,0.1), box.type="diamond",box.prop=0.5) M <- matrix(nrow=4,ncol=4,data=0) M[2,1]<-1 ;M[4,2]<-2;M[3,4]<-3;M[1,3]<-4 pp<-plotmat(M,pos=c(1,2,1),curve=0.2,name=names,lwd=1,box.lwd=2,cex.txt=0.8, arr.type="triangle",box.size=0.1,box.type="hexa",box.prop=0.5) mtext(outer=TRUE,side=3,line=-1.5,cex=1.5,"plotmat") ##PLOTMAT example 2 names <- c("A","B","C","D") M <- matrix(nrow=4,ncol=4,byrow=TRUE,data=0) M[2,1]<-M[3,2]<-M[4,3]<-1 par(mfrow=c(1,2)) pp<-plotmat(M,pos=c(1,1,1,1),curve=0,name=names,lwd=1,box.lwd=2,cex.txt=0., box.size=0.2,box.type="square",box.prop=0.5,arr.type="triangle", arr.pos=0.6) p2 <-plotmat(M[1:2,1:2],pos=pp$comp[c(1,4),],curve=0,name=names[c(1,4)],lwd=1,box.lwd=2, cex.txt=0.,box.size=0.2,box.type="square",box.prop=0.5, arr.type="triangle",arr.pos=0.6) text(p2$arr$ArrowX+0.1,p2$arr$ArrowY,font=3,adj=0,"one flow") par(mfrow=c(1,1)) mtext(outer=TRUE,side=3,line=-1.5,cex=1.5,"plotmat") # Plotmat example NPZZDD model names <- c("PHYTO","NH3","ZOO","DETRITUS","BotDET","FISH") M <- matrix(nrow=6,ncol=6,byrow=TRUE,data=c( # p n z d b f 0,1,0, 0, 0, 0, #p 0,0,4, 10,11,0, #n 2,0,0, 0, 0, 0, #z 8,0,13,0, 0, 12,#d 9,0,0, 7, 0, 0, #b 0,0,5, 0, 0, 0 #f )) pp<-plotmat(M,pos=c(1,2,1,2),curve=0,name=names,lwd=1,box.lwd=2,cex.txt=0.8, box.type="square",box.prop=0.5,arr.type="triangle", arr.pos=0.4,shadow.size=0.01,prefix="f", main="NPZZDD model, from Soetaert and herman, 2009, Springer") # extra arrows: flow 5 to Detritus and flow 2 to detritus phyto <-pp$comp[names=="PHYTO"] zoo <-pp$comp[names=="ZOO"] nh3 <-pp$comp[names=="NH3"] detritus<-pp$comp[names=="DETRITUS"] fish <-pp$comp[names=="FISH"] # flow5->detritus m2 <- 0.5*(zoo+fish) m1 <- detritus m1[1]<-m1[1]+ pp$radii[4,1] mid<-straightarrow (to=m1,from=m2,arr.type="triangle",arr.pos=0.4,lwd=1) text(mid[1],mid[2]+0.03,"f6",cex=0.8) # flow2->detritus m2 <- 0.5*(zoo+phyto) m1 <- detritus m1[1] <-m1[1]+ pp$radii[3,1]*0.2 m1[2]<-m1[2] + pp$radii[3,2] mid<-straightarrow (to=m1,from=m2,arr.type="triangle",arr.pos=0.3,lwd=1) text(mid[1]-0.01,mid[2]+0.03,"f3",cex=0.8) # TRANSITION MATRIX par(mfrow=c(2,1)) #labels as formulae Numgenerations <- 6 # Original Population matrix DiffMat <- matrix(data=0,nrow=Numgenerations,ncol=Numgenerations) # declare it AA <- as.data.frame(DiffMat) AA[[1,4]]<- "f[3]" AA[[1,5]]<- "f[4]" AA[[1,6]]<- "f[5]" AA[[2,1]]<- "s[list(0,1)]" AA[[3,2]]<- "s[list(1,2)]" AA[[4,3]]<- "s[list(2,3)]" AA[[5,4]]<- "s[list(3,4)]" AA[[6,5]]<- "s[list(4,5)]" name <- c("Age0","Age1","Age2","Age3","Age4","Age5") PP <- plotmat(A=AA,pos=6,curve=0.7,name=name,lwd=2,arr.len=0.6,arr.width=0.25,my=-0.2, box.size=0.05,arr.type="triangle",dtext= 0.95,cex.txt=0, main="Age-structured population model 1") for (i in 1:nrow(PP$arr)) text(as.double(PP$arr[i,"TextX"]),as.double(PP$arr[i,"TextY"]), parse(text=as.character(PP$arr[i,"Value"]))) # reduced population matrix Numgenerations <- Numgenerations-1 DiffMat <- DiffMat[-1,-1] AA <- as.data.frame(DiffMat) AA[[1,3]]<- "f[3]*s[list(0,1)]" AA[[1,4]]<- "f[4]*s[list(0,1)]" AA[[1,5]]<- "f[5]*s[list(0,1)]" AA[[2,1]]<- "s[list(0,2)]" AA[[3,2]]<- "s[list(2,3)]" AA[[4,3]]<- "s[list(3,4)]" AA[[5,4]]<- "s[list(4,5)]" name <- c("Age0","Age2","Age3","Age4","Age5") pos <- PP$comp[-1,] PP <- plotmat(AA,pos=pos,curve=0.7,name=name,lwd=2,arr.len=0.6,arr.width=0.25,my=-0.1, box.size=0.05,arr.type="triangle",dtext= 0.95,cex.txt=0,main="Age-structured population model 2") for (i in 1:nrow(PP$arr)) text(as.double(PP$arr[i,"TextX"]),as.double(PP$arr[i,"TextY"]), parse(text=as.character(PP$arr[i,"Value"]))) par(mfrow=c(1,1),mar=c(2,2,2,2)) #################3 par(mfrow=c(1,1)) par(mar=c(4,4,4,4)) par(xaxs="r",yaxs="r") # Fecundity and Survival for each generation NumClass <- 10 Fecundity <- c(0, 0.00102,0.08515,0.30574,0.40002, 0.28061,0.1526 ,0.0642 ,0.01483,0.00089) Survival <- c(0.9967 ,0.99837,0.9978 ,0.99672,0.99607, 0.99472,0.99240,0.98867,0.98274,NA) # survival from i to i+1 cbind(Fecundity,Survival) # Population matrix M DiffMatrix <- matrix(data=0,nrow=NumClass,ncol=NumClass) # declare it DiffMatrix[1,] <- Fecundity # first row: fecundity for (i in 1:(NumClass-1)) DiffMatrix[i+1,i] <- Survival[i] DiffMatrix # print the matrix to screen names <- c("0-5yr","5-10yr","10-15yr","15-20yr","20-25yr","25-30yr","30-35yr","35-40yr","40-45yr","45-50yr") # first generation will be positioned in middle; other generations on a circle pos <- coordinates(NULL,N=NumClass-1) pos <- rbind(c(0.5,0.5),pos) curves <- DiffMatrix curves[] <- -0.4 curves[1, ] <- 0 curves[2,1] <- -0.125 curves[1,2] <- -0.125 plotmat(main="US population, life cycle, 1966",DiffMatrix,pos=pos,name=names,curve=curves,lcol="darkblue",arr.col="lightblue", box.size=0.07,arr.type="triangle",cex.txt=0.8,box.col="lightyellow",box.prop =1) ##### A <- matrix(nrow=7,ncol=7,NA) A[,1] <- 1 ; A[1,1]<-0 pos <- coordinates(NULL,N=6,relsize=0.8) # 6 boxes in circle pos <- rbind(c(0.5,0.5),pos) # one in middle plotmat(A,pos=pos,lwd=1,curve=0,box.lwd=2,cex.txt=0.8,box.col=2:8, box.cex=0.8,box.size=0.125,arr.length=0.5,box.type=c("multi","rect","ellipse"), shadow.size = 0.01,nr=5,main="plotmat") # TRANSITION MATRIX EXAMPLE # dataset Teasel curves <- matrix(nrow=ncol(Teasel),ncol=ncol(Teasel),0) curves[3,1]<- curves[1,6]<- -0.35 curves[4,6]<-curves[6,4]<-curves[5,6]<-curves[6,5]<-0.08 curves[3,6]<- 0.35 plotmat(Teasel,pos=c(3,2,1),curve=curves,name=colnames(Teasel),lwd=1,box.lwd=2,cex.txt=0.8, box.cex=0.8,box.size=0.08,arr.length=0.5,box.type="circle",box.prop=1, shadow.size = 0.01,self.cex=0.6,my=-0.075, mx=-0.01,relsize=0.9, self.shiftx=c(0,0,0.125,-0.12,0.125,0),self.shifty=0,main="Teasel population model") diagram/demo/plotweb.r0000644000176200001440000000111710732164525014446 0ustar liggesusers # PLOTWEB examples par(ask=TRUE) # plotweb examples feed <- matrix(nrow=20,ncol=20,1) plotweb(feed,legend=FALSE,length=0,main="plotweb") feed <- matrix(nrow=20,ncol=20,1) diag(feed)<-0 plotweb(feed,legend=FALSE,main="plotweb") feed <- diag(nrow=20,ncol=20,1) plotweb(feed,legend=FALSE,main="plotweb") plotweb(Rigaweb,main="Gulf of Riga food web",sub="mgC/m3/d",val=TRUE) plotweb(Takapotoweb,main="Takapoto atoll planktonic food web",leg.title="mgC/m2/day",lab.size=1) plotweb(Takapotoweb,main="Takapoto atoll planktonic food web",sub="mgC/m2/day",lab.size=1,log=TRUE) diagram/demo/00Index0000644000176200001440000000032510756576216013753 0ustar liggesusersflowchart Demonstrates the capabilities of drawingflow charts plotmat Demonstrates the capabilities of drawing graphs based on a (transition) matrix plotweb Demonstrates the capabilities of plotting (food)webs diagram/data/0000755000176200001440000000000013734555447012610 5ustar liggesusersdiagram/data/Teasel.rda0000644000176200001440000000042210732166030014470 0ustar liggesusers r0b```b`b@& `d`l!ũ9@)> O ߽6NlYaҾ!ǕpDqc?F/.ٓU6A}@?P^)QMp4>nw(Q&=M宾v܎7!| (ǜ x@ LFQTZ d C @Ղ#%Xg)&@A )ĢTMn5iZRdiagram/data/takapotoweb.rda0000644000176200001440000000067010732165726015613 0ustar liggesusers r0b```b`b@& `d`!ى%I@y>P s\ dl,}!Ғ#~ Nu!^|&KxW}xlH\mJ. 83_w uaq-/Uma8_zL&CB:Io /ؒ8h}l{iz?FBN1}[)њAƙcGu"U6/owAOJ8mNޫr؜$@B)@ E PI^bnj1- U'U Ȩ,/I.σ r8%&e&E|Z f&}SseC.08\ tkj^IbI&\+{QbUf^u?B: diagram/data/rigaweb.rda0000644000176200001440000000053610732165637014715 0ustar liggesusers r0b```b`b@& `d`AI@9> 7L`Xz0 x[h#[AЫP q'RxJ׉T=!|b霂6gtZ=T}j ^QzzָCgg!?y_zq s/\FMlXLʞ!o9h HQM֋{vc4(}˶`1LS2s/(%30pB0b [N)2`"Q0 s?L'op*оԼĒ } \examples{ plotweb(Takapotoweb, main = "Takapoto atoll planktonic food web", sub = "mgC/m2/day", lab.size = 1) } \references{ Niquil, N., Jackson, G.A., Legendre, L., Delesalle, B., 1998. Inverse model analysis of the planktonic food web of Takapoto Atoll (French Polynesia). Marine Ecology Progress Series 165, pp. 17 29. } \seealso{ \code{\link{Rigaweb}} } \keyword{datasets} diagram/man/coordinates.Rd0000644000176200001440000000506011702565453015243 0ustar liggesusers\name{coordinates} \alias{coordinates} \title{ coordinates of elements on a plot } \description{ estimates coordinates of elements, neatly arranged on a plot. } \usage{ coordinates(pos = NULL, mx = 0.0, my = 0.0, N = length(pos), hor = TRUE, relsize = 1) } \arguments{ \item{pos }{vector specifying the number of elements in each row, or 2-columned matrix with element position, or \code{NULL}. } \item{mx }{horizontal shift (x). } \item{my }{vertical shift (y). } \item{N }{total number of elements to be positioned - only if pos=\code{NULL}. } \item{hor }{only if \code{pos} is a 2-columned matrix. In this case, when \code{hor = TRUE}, \code{pos} specifies number of elements per row; when \code{FALSE} per column. } \item{relsize }{scaling factor as a function of graph size. } } \value{ 2-columned matrix, with coordinates (x,y) of each of the elements } \author{ Karline Soetaert } \examples{ openplotmat(main = "coordinates") text(coordinates(N = 6), lab = LETTERS[1:6], cex = 2) text(coordinates(N = 8, relsize = 0.5), lab = letters[1:8], cex = 2) openplotmat(main = "coordinates") text(coordinates(pos = c(2, 4, 2)), lab = letters[1:8], cex = 2) plot(0, type = "n", xlim = c(0, 5), ylim = c(2, 8), main = "coordinates") text(coordinates(pos = c(2, 4, 3), hor = FALSE), lab = 1:9, cex = 2) } \details{the position of the elements are specified with \code{pos}, which is either \code{NULL}, or a vector specifying the number of elements on a row, or a 2-columned matrix specifying the (x,y) position of each element. \itemize{ \item when \code{pos} is \code{NULL}, the elements will be arranged on a circle; in this case, the number of elements to be positioned must be specified with \code{N}. \item when \code{pos} is a vector, it specifies the number of elements in each row (if \code{hor =TRUE}) or in each column (if \code{hor = FALSE}). For instance, with \code{hor=TRUE} and \code{pos = c(3,2,1)} the elements will be arranged in 3 rows (length of vector); on the top row 3 elements; on the second row 2; and on the third row 1 element will be positioned. All elements within a row are equally distributed horizontally; all rows are equally distributed vertically; \item when \code{pos} is a matrix, it specifies the x(1st column) and y(2nd column) position of each element and is returned as such. } The offset from the x-axis and from the y-axis can be changed with \code{mx} and \code{my}. } \keyword{manip} diagram/man/Teasel.Rd0000644000176200001440000000361011702565457014151 0ustar liggesusers\name{Teasel} \docType{data} \alias{Teasel} \title{ Population dynamics model transition matrix of teasel } \description{ Transition matrix of the population dynamics model of teasel (Dipsacus sylvestris), a European perennial weed, as discussed in Caswell (2001), and in Soetaert and Herman, (2009) The life cycle of teasel can be described by six stages: \itemize{ \item dormant seeds < 1yr (DS 1yr) \item dormant seeds 1-2yr (DS 2yr) \item small rosettes <2.5cm (R small) \item medium rosettes 2.5-18.9 cm (R medium) \item large rosettes >19 cm (R large) \item flowering plants (F) } The matrix contains the transition probabilities from one compartment (column) to another (row). } \usage{Teasel} \format{ matrix with transition probabilities, where element ij denotes transition from compartment j to i rownames and columnames are the component names } \author{ Karline Soetaert } \examples{ curves <- matrix(nrow = ncol(Teasel), ncol = ncol(Teasel), 0) curves[3,1] <- curves[1,6] <- -0.35 curves[4,6] <- curves[6,4] <- curves[5,6] <- curves[6,5] <- 0.08 curves[3,6] <- 0.35 plotmat(Teasel, pos = c(3, 2, 1), curve = curves, lwd = 1, box.lwd = 2, cex.txt = 0.8, box.cex = 0.8, box.size = 0.08, arr.length = 0.5, box.type = "circle", box.prop = 1, shadow.size = 0.01, self.cex = 0.6, my = -0.075, mx = -0.01, relsize = 0.9, self.shifty = 0, self.shiftx = c(0, 0, 0.125, -0.12, 0.125, 0), main = "Dispsacus sylvestris") } \references{ Caswell, H. 2001. Matrix population models: construction, analysis, and interpretation. Second edition. Sinauer, Sunderland, Mass. Karline Soetaert and Peter Herman. 2009. A practical guide to ecological modelling. Using R as a simulation platform. Springer. } \seealso{ \code{\link{Rigaweb}}, \code{\link{Takapotoweb}} } \keyword{datasets} diagram/man/segmentarrow.Rd0000644000176200001440000001002713432464142015440 0ustar liggesusers\name{segmentarrow} \alias{segmentarrow} \title{ adds 3-segmented arrow between two points. } \description{ Connects two points with 3 segments (default = left-vertical-right) and adds an arrowhead on one of the segments at a certain distance } \usage{ segmentarrow(from, to, lwd = 2, lty = 1, lcol = "black", arr.col = lcol, arr.side = 2, arr.pos = 0.5, path = "LVR", dd = 0.5, ...) } \arguments{ \item{from }{coordinates (x,y) of point *from* which to draw arrow. } \item{to }{coordinates (x,y) of point *to* which to draw arrow. } \item{lwd }{line width. } \item{lty }{line type. } \item{lcol }{line color. } \item{arr.col }{arrow color. } \item{arr.side }{segment number on which arrowhead is drawn (1,2,3). } \item{arr.pos }{relative position of arrowhead on segment on which arrowhead is drawn. } \item{path }{outline of the 3 segments, default: left, vertical, right. } \item{dd }{length of segment arm, directed away from endpoints. } \item{... }{arguments passed to function \link{straightarrow}. } } \value{ coordinates (x,y) where arrowhead is drawn } \author{ Karline Soetaert } \examples{ openplotmat(main="segmentarrow") pos <-cbind(A <- seq(0.2, 0.8, by = 0.2), rev(A)) text(pos, LETTERS[1:4], cex = 2) segmentarrow(from = pos[1, ] + c(0, 0.05), to = pos[2, ] + c(0, 0.05), arr.pos = 1, arr.adj = 1, dd = 0.1, path = "UHD", lcol = "darkred") segmentarrow(from = pos[2, ] + c(-0.05, 0), to = pos[3, ] + c(-0.05, 0.01), arr.pos = 1, arr.adj = 1, dd = 0.1, lcol = "black", arr.type = "triangle") segmentarrow(from = pos[2, ] + c(0.05, 0), to = pos[3, ] + c(0.05, 0.01), arr.pos = 0.5, dd = 0.3, path = "RVL", arr.side = 1, lcol = "lightblue", arr.type = "simple") segmentarrow(from = pos[3, ] + c(0.05, 0), to = pos[4, ] + c(-0.05, 0.01), arr.pos = 0.5, dd = 0.05, path = "RVL", lcol = "darkblue", arr.type = "ellipse") segmentarrow(from = pos[3, ] + c(0, -0.05), to = pos[4, ] + c(0, 0.05), arr.pos = 0.5, arr.side = 3, dd = 0.05, path = "DHU", lcol = "darkgreen") segmentarrow(from = pos[3,] + c(-0.05, -0.05), to = pos[4, ] + c(0, -0.05), arr.pos = 0.5, arr.side = 1:3, dd = 0.3, path = "DHU", lcol = "green") } \details{ one segmented arrow is drawn between two points '(\code{from}, \code{to})' how the segments are drawn is set with \code{path} which can take on the values: \itemize{ \item "LVR": first left then vertical then right. \item "RVL": first right then vertical then left. \item "UHD": first up then horizontal then down. \item "DHU": first down then horizontal then up. } The segment(s) on which the arrow head is drawn is set with \code{arr.side}, which is one or more values in (1, 2, 3). The position of the arrowhead, on the segment on which it is drawn, is set with \code{arr.pos}, a value between 0(start of segment) and 1 (end of segment) The type of the arrowhead is set with \code{arr.type} which can take the values: \itemize{ \item "none" : skips the drawing of arrows. \item "simple" : uses comparable \R function \link{arrows}. \item "triangle": uses filled triangle. \item "curved" : draws arrowhead with curved edges. \item "circle" : draws circular head. \item "ellipse" : draws ellepsoid head. \item "T" : draws T-shaped (blunt) head. } The size of the arrow head can be specified with the arguments \code{arr.length} and \code{arr.width}. See \code{\link[shape]{Arrowhead}} from package shape for details on arrow head. } \seealso{ \code{\link{straightarrow}}, \code{\link{bentarrow}}, \code{\link{curvedarrow}}, \code{\link{selfarrow}}, \code{\link{treearrow}}, \code{\link{splitarrow}}, \code{\link{arrows}}: the comparable R function, \code{\link[shape]{Arrows}}: more complicated arrow function from package shape try: demo(plotweb) } \keyword{aplot} diagram/man/textdiamond.Rd0000644000176200001440000000307611702565457015262 0ustar liggesusers\name{textdiamond} \alias{textdiamond} \title{ adds lines of text in a diamand-shaped box to a plot } \description{ adds one or more lines of text, in a diamond-shaped box. } \usage{ textdiamond(mid, radx, rady = NULL, lwd = 1, shadow.size = 0.01, adj = c(0.5,0.5), lab = "", box.col = "white", lcol = "black", shadow.col = "grey", angle = 0, ...) } \arguments{ \item{mid }{midpoint (x,y) of the box. } \item{radx }{horizontal radius of the box. } \item{rady }{vertical radius of the box. } \item{lwd }{line width of line surrounding the box. } \item{shadow.size }{relative size of shadow. } \item{adj }{text adjustment. } \item{lab }{one label or a vector string of labels to be added in box. } \item{box.col }{fill color of the box. } \item{lcol }{line color surrounding box. } \item{shadow.col }{color of shadow. } \item{angle }{rotation angle, degrees. } \item{... }{other arguments passed to function \link{textplain}. } } \author{ Karline Soetaert } \examples{ openplotmat(xlim = c(-0.1, 1.1), main = "textdiamond") for (i in 1:10) textdiamond(mid = runif(2), col = i, radx = 0.1, rady = 0.05, lab = LETTERS[i], cex = 2, angle = runif(1)*360) } \details{ see \code{\link{shadowbox}} for specifications of the diamond-shaped box and its shadow. } \seealso{ \code{\link{textellipse}}, \code{\link{textempty}},\code{\link{texthexa}}, \code{\link{textmulti}}, \code{\link{textplain}}, \code{\link{textrect}}, \code{\link{textround}} } \keyword{aplot} diagram/man/texthexa.Rd0000644000176200001440000000316511702565460014565 0ustar liggesusers\name{texthexa} \alias{texthexa} \title{ adds lines of text in an hexagonal box to a plot } \description{ adds one or more lines of text, centered around "mid" in an hexagonal box. } \usage{ texthexa(mid, radx, rady = radx*length(lab), lwd = 1, shadow.size = 0.01, adj = c(0.5,0.5), lab = "", box.col = "white", lcol = "black", shadow.col = "grey", angle = 0, ...) } \arguments{ \item{mid }{midpoint (x,y) of the box. } \item{radx }{horizontal radius of the box. } \item{rady }{vertical radius of the box. } \item{lwd }{line width of line surrounding the box. } \item{shadow.size }{relative size of shadow. } \item{adj }{text adjustment. } \item{lab }{one label or a vector string of labels to be added in box. } \item{box.col }{fill color of the box. } \item{lcol }{line color surrounding box. } \item{shadow.col }{color of shadow. } \item{angle }{rotation angle, degrees. } \item{... }{other arguments passed to function \link{textplain}. } } \author{ Karline Soetaert } \examples{ openplotmat(xlim = c(-0.1, 1.1), main = "texthexa") for (i in 1:20) texthexa(mid = runif(2), angle = runif(1)*360, col = i, box.col = grey(0.95), radx = 0.1, rady = 0.05, lab = LETTERS[i], cex = 2) } \details{ see \code{\link{shadowbox}} for specifications of the hexangular box and its shadow } \seealso{ \code{\link{textdiamond}}, \code{\link{textellipse}}, \code{\link{textempty}}, \code{\link{textmulti}}, \code{\link{textplain}}, \code{\link{textrect}}, \code{\link{textround}} } \keyword{aplot} diagram/man/Rigaweb.Rd0000644000176200001440000000263611702565455014321 0ustar liggesusers\name{Rigaweb} \docType{data} \alias{Rigaweb} \title{ Gulf of Riga autumn planktonic food web } \description{ Carbon flux matrix of the Gulf of Riga planktonic food web in autumn as reconstructed by inverse modelling by Donali et al. (1999). The Gulf of Riga is a highly eutrophic system in the Baltic Sea. The foodweb comprises 7 functional compartments: \itemize{ \item picoautotrophs (P1) \item non-picoautotrophs (P2) \item bacteria (B) \item heterotrophic nanoflagellates (N) \item zooplankton (Z) \item detritus, including virus (D) \item dissolved organic carbon (DOC) } and two external compartments: \itemize{ \item CO2 \item Sedimentation } These compartments are connected with 26 flows. Units of the flows are mg C/m3/day. } \usage{Rigaweb} \format{ matrix with flow values, where element ij denotes flow from compartment i to j rownames and columnames are the components. } \author{ Karline Soetaert } \examples{ plotweb(Rigaweb, main = "Gulf of Riga planktonic food web", sub = "mgC/m3/day") } \references{ Donali, E., Olli, K., Heiskanen, A.S., Andersen, T., 1999. Carbon flow patterns in the planktonic food web of the Gulf of Riga, the Baltic Sea: a reconstruction by the inverse method. Journal of Marine Systems 23, pp. 251 268. } \seealso{ \code{\link{Takapotoweb}} } \keyword{datasets} diagram/man/textempty.Rd0000644000176200001440000000216211702565457015000 0ustar liggesusers\name{textempty} \alias{textempty} \title{ adds lines of text, on a colored background to a plot } \description{ adds one or more lines of text, with a colored background, no box } \usage{ textempty(mid, lab = "", adj = c(0.5, 0.5), box.col = "white", cex = 1, ...) } \arguments{ \item{mid }{midpoint (x,y) of the text. } \item{lab }{one label or a vector string of labels to be added in box. } \item{adj }{text adjustment. } \item{box.col }{background color. } \item{cex }{relative size of text. } \item{... }{other arguments passed to function \link{textplain}. } } \author{ Karline Soetaert } \examples{ openplotmat(xlim = c(-0.1, 1.1), col = "lightgrey", main = "textempty") for (i in 1:10) textempty(mid = runif(2), box.col = i, lab = LETTERS[i], cex = 2) textempty(mid = c(0.5, 0.5), adj = c(0, 0), lab = "textempty", box.col = "white") } \seealso{ \code{\link{textdiamond}}, \code{\link{textellipse}}, \code{\link{texthexa}}, \code{\link{textmulti}}, \code{\link{textplain}}, \code{\link{textrect}}, \code{\link{textround}} } \keyword{aplot} diagram/man/textplain.Rd0000644000176200001440000000232011702565460014733 0ustar liggesusers\name{textplain} \alias{textplain} \title{ adds lines of text to a plot } \description{ adds one or more lines of text, centered around "mid" } \usage{ textplain(mid, height = 0.1, lab = "", adj = c(0.5, 0.5), ...) } \arguments{ \item{mid }{central coordinates where to write the text. } \item{height }{height of text. } \item{lab }{one or more character strings or expressions specifying the *text* to be written. } \item{adj }{label adjustments. } \item{... }{other arguments passed to R-function \link{text}. } } \author{ Karline Soetaert } \examples{ openplotmat(main = "textplain") textplain(mid = c(0.5, 0.5), lab = c("this text is", "centered", "4 strings", "on 4 lines")) textplain(mid = c(0.5, 0.2), adj = c(0, 0.5), font = 2, height = 0.05, lab = c("this text is","left alligned")) textplain(mid = c(0.5, 0.8), adj = c(1, 0.5), font = 3, height = 0.05, lab = c("this text is","right alligned")) } \seealso{ \code{\link{textdiamond}}, \code{\link{textellipse}}, \code{\link{textempty}}, \code{\link{texthexa}}, \code{\link{textmulti}}, \code{\link{textrect}}, \code{\link{textround}} } \keyword{aplot} diagram/man/splitarrow.Rd0000644000176200001440000000732513432464070015140 0ustar liggesusers\name{splitarrow} \alias{splitarrow} \title{adds a branched arrow between several points} \description{ connects two sets of points with a star-like structure, adds an arrowhead at a certain distance } \usage{ splitarrow(from, to, lwd = 2, lty = 1, lcol = "black", arr.col = lcol, arr.side = 2, arr.pos = 0.5, centre = NULL, dd = 0.5, ...) } \arguments{ \item{from }{matrix of coordinates (x,y) of points *from* which to draw arrow. } \item{to }{matrix of coordinates (x,y) of points *to* which to draw arrow. } \item{lwd }{line width. } \item{lty }{line type. } \item{lcol }{line color. } \item{arr.col }{arrow color. } \item{arr.side }{segment number on which arrowhead is drawn (1,2). } \item{arr.pos }{relative position of arrowhead on segment on which arrowhead is drawn. } \item{centre }{coordinates (x,y) of central point. } \item{dd }{relative position of central point, only when \code{centre=NULL}. } \item{... }{other arguments passed to function \link{straightarrow}. } } \value{ coordinates (x,y) where arrowheads are drawn } \author{ Karline Soetaert } \examples{ openplotmat(main = "splitarrow") pos <- coordinates(c(1, 2, 2, 4, 1)) splitarrow(from = pos[1, ], to = pos[2:10, ], arr.side = 1, centre = c(0.5, 0.625)) for (i in 1:10) textrect(pos[i, ], lab = i, cex = 2, radx = 0.05) openplotmat(main = "splitarrow") pos <- coordinates(c(1, 3)) splitarrow(from = pos[1,], to = pos[2:4, ], arr.side = 1) splitarrow(from = pos[1,], to = pos[2:4, ], arr.side = 2) for (i in 1:4) textrect(pos[i, ], lab = i, cex = 2, radx = 0.05) openplotmat(main = "splitarrow") pos <- coordinates(N = 6) pos <- rbind(c(0.5, 0.5), pos) splitarrow(from = pos[1, ], to = pos[2:7, ], arr.side = 2) for (i in 1:7) textrect(pos[i, ], lab = i, cex = 2, radx = 0.05) } \details{ a branched arrow is drawn between points '(\code{from}, \code{to})', where both \code{from} and \code{to} can be several points. The arrow segments radiate into a central point. Either the (x,y) coordinates of this central point are set with \code{centre} or it is estimated at a certain distance (\code{dd} >0,<1) between the centroid of the *\code{from}* points and the centroid of the *\code{to}* points. The segment(s) on which the arrow head is drawn is set with \code{arr.side}, which is one or more values in (1, 2) \itemize{ \item \code{arr.side=1} sets the arrow head on the segment *from* -> central point \item \code{arr.side=2} sets the arrow head on the segment central point -> *to* } The position of the arrowhead on the segment on which it is drawn, is set with \code{arr.pos}, a value between 0(start of segment) and 1(end of segment) The type of the arrowhead is set with \code{arr.type} which can take the values: \itemize{ \item "none" : skips the drawing of arrows. \item "simple" : uses comparable R function \code{arrows}. \item "triangle": uses filled triangle. \item "curved" : draws arrowhead with curved edges. \item "circle" : draws circular head. \item "ellipse" : draws ellepsoid head. \item "T" : draws T-shaped (blunt) head. } The size of the arrow head can be specified with the arguments \code{arr.length} and \code{arr.width}. See \code{\link[shape]{Arrowhead}} from package shape for details on arrow head. } \seealso{ \code{\link{straightarrow}}, \code{\link{segmentarrow}}, \code{\link{curvedarrow}}, \code{\link{selfarrow}}, \code{\link{bentarrow}}, \code{\link{treearrow}}, \code{\link{arrows}}: the comparable R function, \code{\link[shape]{Arrows}}: more complicated arrow function from package shape. } \keyword{aplot} diagram/man/plotweb.Rd0000644000176200001440000001106411702565455014410 0ustar liggesusers\name{plotweb} \alias{plotweb} \title{ plots a web } \description{ plots a web, based on a flow matrix } \usage{ plotweb(flowmat, names = NULL, lab.size = 1.5, add = FALSE, fig.size = 1.3, main = "", sub = "", sub2 = "", log = FALSE, mar = c(2, 2, 2, 2), nullflow = NULL, minflow = NULL, maxflow = NULL, legend = TRUE, leg.digit = 5, leg.title = NULL, lcol = "black", arr.col = "black", val = FALSE, val.digit = 5, val.size = 0.6, val.col = "red", val.title = NULL, val.ncol = 1, budget = FALSE, bud.digit = 5, bud.size = 0.6, bud.title = "budget", bud.ncol = 1, maxarrow = 10, minarrow = 1, length = 0.1, dcirc = 1.2, bty = "o", ...) } \arguments{ \item{flowmat }{flow matrix, rows=flow *from*, columns=flow *to*. } \item{names }{string vector with the names of components. } \item{lab.size }{relative size of name label text. } \item{add }{start a new plot (\code{FALSE}), or add to current (\code{TRUE}). } \item{fig.size }{if \code{add = FALSE}: relative size of figure. } \item{main }{if \code{add = FALSE}: main title. } \item{sub }{if \code{add = FALSE}: sub title. } \item{sub2 }{if\code{add = FALSE}: title in bottom. } \item{log }{logical indicating whether to scale the flow values logarithmically. } \item{mar }{the figure margins. } \item{nullflow }{either one value or a two-valued vector; if flow < nullflow[1] or flow > nullflow[2] (if two values): flow is assumed = 0 and the arrow is not drawn. } \item{minflow }{flowvalue corresponding to minimum arrow thickness. } \item{maxflow }{flowvalue corresponding to maximum arrow thickness. } \item{legend }{logical indicating whether to add a legend with arrow thickness. } \item{leg.digit }{nr of digits for writing legend - only if \code{legend} = TRUE. } \item{leg.title }{title for arrow legend, e.g to give units - only if \code{legend} =TRUE. } \item{lcol }{line color of arrow - not used. } \item{arr.col }{arrow color. One value or a matrix, with same dimensions as flowmat; if a matrix, each arrow can have a different color. } \item{val }{logical indicating whether to write flow values as a legend. } \item{val.digit }{nr of digits for writing values - only if \code{val =TRUE}. } \item{val.size }{relative size for writing values - only if \code{val =TRUE}. } \item{val.col }{color for writing values - only if \code{val =TRUE}. } \item{val.title }{title for values legend - only if \code{val =TRUE}. } \item{val.ncol }{number of columns for writing values - only if \code{val =TRUE}. } \item{budget }{logical indicating whether to calculate budget (sum of flows in - sum of flows out) per component. } \item{bud.digit }{nr of digits for writing budget - only if \code{budget =TRUE}. } \item{bud.size }{relative size for writing budget - only if \code{budget =TRUE}. } \item{bud.title }{title for budget legend - only if \code{budget =TRUE}. } \item{bud.ncol }{number of columns for writing budget - only if \code{budget =TRUE}. } \item{maxarrow }{maximal thickness of arrow. } \item{minarrow }{minimal thickness of arrow. } \item{length }{length of the edges of the arrow head (in inches). } \item{dcirc }{if cannibalism (flow from i to i), offset of circular 'arrow' - if \code{dcirc} = 0:no circle drawn. } \item{bty }{the type of box to be drawn around the legends (\code{legend}, \code{val}, \code{budget}). The allowed values are "o" (the default) and "n". } \item{... }{extra arguments passed to R-function \link{arrows}. } } \author{ Karline Soetaert } \examples{ plotweb(Rigaweb, main = "Gulf of Riga food web", sub = "mgC/m3/d", val = TRUE) ArrCol <- Rigaweb ArrCol[] <- "black" ArrCol[,"Sedimentation"] <- "green" plotweb(Rigaweb, main = "Gulf of Riga food web", sub = "mgC/m3/d", val = FALSE, arr.col = ArrCol) plotweb(diag(20), main = "plotweb") } \details{ This function is less flexible than function \code{\link{plotmat}} It is meant for visualisation of food web flows, that are inputted as a flow matrix. It displays the elements on a circle, and, where there is a mass flow, two elements are connected, the magnitude of the web flows is reflected by the thickness of the arrow Note that the input matrices from function \code{plotmat} and \code{plotweb} are transposed. } \seealso{ \code{\link{plotmat}}, \code{\link{Rigaweb}}, \code{\link{Takapotoweb}} try: demo(plotweb) } \keyword{aplot} diagram/man/diagram.Rd0000644000176200001440000000444611570425035014336 0ustar liggesusers\name{diagram-package} \alias{diagram-package} \alias{diagram} \docType{package} \title{ Functions for visualising simple graphs (networks), plotting flow diagrams } \description{ Visualises simple graphs (networks) based on a transition matrix, utilities to plot flow diagrams, visualising webs,... Support for the book "A practical guide to ecological modelling - using R as a simulation platform" by Karline Soetaert and Peter M.J. Herman (2009). Springer. and for the book "Solving Differential Equations in R" by Karline Soetaert, Jeff R. Cash and Francesca Mazzia (in press). Springer. } \details{ \tabular{ll}{ Package: \tab diagram\cr Type: \tab Package\cr Version: \tab 1.6\cr Date: \tab 2011-06-01\cr License: \tab GNU Public License 2 or above\cr } This package is used in R-package ecolMod, which includes many more examples. } \author{ Karline Soetaert (Maintainer) } \seealso{ \code{\link{plotmat}}, \code{\link{plotweb}}, \code{\link{coordinates}}, \code{\link{openplotmat}}, arrows: \code{\link{bentarrow}}, \code{\link{curvedarrow}}, \code{\link{segmentarrow}}, \code{\link{selfarrow}}, \code{\link{splitarrow}}, \code{\link{straightarrow}}, \code{\link{treearrow}}, boxes and text: \code{\link{shadowbox}}, \code{\link{textdiamond}}, \code{\link{textellipse}}, \code{\link{textempty}}, \code{\link{texthexa}}, \code{\link{textdiamond}}, \code{\link{textplain}}, \code{\link{textrect}}, \code{\link{textround}}. electrical networks: \code{\link{en.Resistor}},\code{\link{en.Capacitator}},\code{\link{en.Node}}, \code{\link{en.Amplifier}},\code{\link{en.Signal}} \code{\link{en.Ground}}. } \examples{ \dontrun{ ## show examples (see respective help pages for details) example(plotmat) example(plotweb) ## run demos demo("flowchart") # creating flow charts demo("plotmat") # plotting diagrams inputted as a matrix demo("plotweb") # plotting webs inputted as a matrix ## open the directory with source code of demos browseURL(paste(system.file(package="diagram"), "/demo", sep="")) ## show package vignette vignette("diagram") edit(vignette("diagram")) browseURL(paste(system.file(package="diagram"), "/doc", sep="")) } } \keyword{ package } diagram/man/textmulti.Rd0000644000176200001440000000321111702565460014762 0ustar liggesusers\name{textmulti} \alias{textmulti} \title{ adds lines of text in an multigonal box to a plot } \description{ adds one or more lines of text, centered around "mid" in an multigonal box } \usage{ textmulti(mid, radx, rady = radx*length(lab), lwd = 1, shadow.size = 0.01, adj = c(0.5, 0.5), lab = "", box.col = "white", lcol = "black", shadow.col = "grey", angle = 0, nr = 6, ...) } \arguments{ \item{mid }{midpoint (x,y) of the box. } \item{radx }{horizontal radius of the box. } \item{rady }{vertical radius of the box. } \item{lwd }{line width of line surrounding the box. } \item{shadow.size }{relative size of shadow. } \item{adj }{text adjustment. } \item{lab }{one label or a vector string of labels to be added in box. } \item{box.col }{fill color of the box. } \item{lcol }{line color surrounding box. } \item{shadow.col }{color of shadow. } \item{angle }{rotation angle, degrees. } \item{nr }{the number of angles.} \item{... }{other arguments passed to function \link{textplain}. } } \author{ Karline Soetaert } \examples{ openplotmat(xlim = c(-0.1, 1.1), main = "textmulti") for (i in 1:10) textmulti(mid = runif(2), col = i, radx = 0.1, rady = 0.1, lab = LETTERS[i], cex = 2, nr = trunc(i/1.5)+3) } \details{ see \code{\link{shadowbox}} for specifications of the multigonal box and its shadow. } \seealso{ \code{\link{textdiamond}}, \code{\link{textellipse}}, \code{\link{textempty}}, \code{\link{texthexa}}, \code{\link{textplain}}, \code{\link{textrect}}, \code{\link{textround}}. } \keyword{aplot} diagram/man/treearrow.Rd0000644000176200001440000000655613432464027014753 0ustar liggesusers\name{treearrow} \alias{treearrow} \title{ adds a dendrogram-like branched arrow between several points } \description{ connects two sets of points with a dendrogram-like structure, adds an arrowhead at a certain distance. } \usage{ treearrow(from, to, lwd = 2, lty = 1, lcol = "black", arr.col = lcol, arr.side = 2, arr.pos = 0.5, line.pos = 0.5, path = "H", ...) } \arguments{ \item{from }{matrix of coordinates (x,y) of points *from* which to draw arrow. } \item{to }{matrix of coordinates (x,y) of points *to* which to draw arrow. } \item{lwd }{line width. } \item{lty }{line type. } \item{lcol }{line color. } \item{arr.col }{arrow color. } \item{arr.side }{segment number on which arrowhead is drawn (1,2). } \item{arr.pos }{relative position of arrowhead on segment on which arrowhead is drawn. } \item{line.pos }{relative position of (horizontal/vertical) line. } \item{path }{Vertical, Horizontal. } \item{... }{other arguments passed to function \link{straightarrow}. } } \value{ coordinates (x,y) where arrowhead is drawn } \author{ Karline Soetaert } \examples{ openplotmat(main = "treearrow") pos <- coordinates(c(3, 2, 4, 1)) treearrow(from = pos[1:5, ], to = pos[6:10, ]) for (i in 1:10) textrect(pos[i, ], lab = i, cex = 2, radx = 0.05) openplotmat(main = "treearrow") pos <- coordinates(c(2, 4), hor = FALSE) treearrow(from = pos[1:2, ], to = pos[3:6, ], arr.side = 1:2, path = "V") for (i in 1:6) textrect(pos[i, ], lab = i, cex = 2, radx = 0.05) openplotmat(main = "treearrow") pos <- coordinates(c(3, 5, 7, 7, 5, 3)) treearrow(from = pos[1:15, ], to = pos[15:30, ], arr.side = 0) for (i in 1:30) textrect(pos[i, ], lab = i, cex = 1.2, radx = 0.025) } \details{ a tree-shaped arrow is drawn between points '(\code{from}, \code{to})', where both \code{from} and \code{to} can be several points. How the segments are drawn is set with \code{path} which can take on the values: \itemize{ \item "H": (horizontal): first left or right. \item "V": (vertical): first down- or upward. } The segment(s) on which the arrow head is drawn is set with \code{arr.side}, which is one or more values in (1, 2) The position of the arrowhead on the segment on which it is drawn, is set with \code{arr.pos}, a value between 0(start of segment) and 1(end of segment) The type of the arrowhead is set with \code{arr.type} which can take the values: \itemize{ \item "none" : skips the drawing of arrows. \item "simple" : uses comparable \R function \link{arrows}. \item "triangle": uses filled triangle. \item "curved" : draws arrowhead with curved edges. \item "circle" : draws circular head. \item "ellipse" : draws ellepsoid head. \item "T" : draws T-shaped (blunt) head. } The size of the arrow head can be specified with the arguments \code{arr.length} and \code{arr.width}. See \code{\link[shape]{Arrowhead}} from package \code{shape} for details on arrow head. } \seealso{ \code{\link{straightarrow}}, \code{\link{segmentarrow}}, \code{\link{curvedarrow}}, \code{\link{selfarrow}}, \code{\link{bentarrow}}, \code{\link{splitarrow}}, \code{\link{arrows}}: the comparable R function, \code{\link[shape]{Arrows}}: more complicated arrow function from package shape. } \keyword{aplot} diagram/man/openplotmat.Rd0000644000176200001440000000076311702565454015301 0ustar liggesusers\name{openplotmat} \alias{openplotmat} \title{ Creates an empty plot used for diagram plotting. } \description{ Creates a plotting region, bounded by [0,1] without axes, labels, titles } \usage{ openplotmat (asp = NA, ...) } \arguments{ \item{asp }{the y/x aspect ratio. } \item{... }{arguments passed to \code{emptyplot} from package \code{shape}. } } \author{ Karline Soetaert } \seealso{ \code{emptyplot} from package \code{shape}. } \keyword{hplot} diagram/man/electricalnetwork.Rd0000644000176200001440000002103313727671511016452 0ustar liggesusers\name{electrical} \alias{en.Resistor} \alias{en.Capacitator} \alias{en.Transistor} \alias{en.Node} \alias{en.Capacitator} \alias{en.Amplifier} \alias{en.Signal} \alias{en.Ground} \alias{enResistor} \title{ electric network symbols } \description{ Adds a resistor, capacitator, node, amplifier, ... to a diagrom } \usage{ en.Resistor (mid, width = 0.05, length = 0.1, lab = NULL, pos = 0, dtext = 0., vert = TRUE, ...) en.Capacitator (mid, width = 0.025, length = 0.1, lab = NULL, pos = 2.5, dtext = 0.04, vert = TRUE, ...) en.Transistor (mid, gate, drain, source, r = 0.05, lab = NULL, pos = 0, dtext = 0, ...) en.Node(mid, cex = 1, lab = NULL, pos = 2.5, dtext = 0.025, ...) en.Amplifier(mid, r = 0.05, lab = NULL, pos = 0, dtext = 0, ...) en.Signal(mid, r = 0.03, lab = NULL, pos = 0, dtext = 0.025, ...) en.Ground(mid, width = 0.075, length = 0.1, n = 4, dx = 0.2, ...) enResistor(...) } \arguments{ \item{mid }{midpoint (x,y) of the symbol. } \item{width }{width of the symbol. } \item{length }{length of the symbol. } \item{lab }{one label to be added in the symbol. } \item{pos }{position of the label in the symbol; 1 = below; 2 = left; 3 = upper, 4 = right; 1.5 = below-left, ... } \item{dtext }{shift in x- and/or y-direction for the text } \item{vert }{if \code{TRUE } then vertically arranged } \item{gate }{position (x,y) of the gate terminal of the \code{en.Transistor}. } \item{drain }{position (x,y) of the drain terminal of the \code{en.Transistor}. } \item{source }{position (x,y) of the source terminal of the \code{en.Transistor}. } \item{r }{radius of \code{en.Signal} and \code{en.Amplifier} } \item{cex }{size of node pch (\code{en.Node}) } \item{n }{number of horizontal lines in (\code{en.Ground}) } \item{dx }{size reduction of horizontal lines in (\code{en.Ground}) } \item{... }{other arguments passed to functions. } } \author{ Karline Soetaert . } \note{ enResistor is synonymous for en.Resistor (to trick the builder in adding this help file to the package) } \examples{ ## ============================================================================= ## en.Capacitator ## ============================================================================= emptyplot(main = "en.Capacitator") straightarrow(c(0.5, 0.9), c(0.5, 0.1), arr.pos = 0.3, arr.length = 0.25, arr.type = "triangle") en.Capacitator(c(0.5, 0.5), width = 0.075, length = 0.5, vert = TRUE) text(0.4, 0.65, "i", font = 3, cex = 2) straightarrow(c(0.8, 0.3), c(0.8, 0.77), arr.pos = 1, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.925, 0.65, "v", font = 3, cex = 2) text(0.15, 0.5, "C", font = 3, cex = 2) box(col = "grey") ## ============================================================================= ## en.Resistor ## ============================================================================= emptyplot(main = "en.Resistor") straightarrow(c(0.5, 0.9), c(0.5, 0.1), arr.pos = 0.2, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.4, 0.85, "i", font = 3, cex = 2) en.Resistor(c(0.5, 0.5), width = 0.25, length = 0.35 ) straightarrow(c(0.8, 0.3), c(0.8, 0.77), arr.pos = 1, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.925, 0.65, "v", font = 3, cex = 2) text(0.5, 0.5, "R", font = 3, cex = 2) box(col = "grey") ## ============================================================================= ## en.Signal ## ============================================================================= emptyplot(main = "voltage source, en.Signal") lines(c(0.5, 0.5), c(0.1, 0.9)) en.Signal(c(0.5, 0.5), r = 0.15) straightarrow(c(0.8, 0.3), c(0.8, 0.77), arr.pos = 1, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.925, 0.65, "v", font = 3, cex = 2) box(col = "grey") ## ============================================================================= ## en.Ground ## ============================================================================= emptyplot(main = "en.Ground") straightarrow(c(0.5, 0.7), c(0.5, 0.25), arr.pos = 1.0, arr.length = 0.25, arr.type = "triangle", lwd = 1) en.Ground(c(0.5, 0.65), width = 0.25, length = 0.35 ) box(col = "grey") ## ============================================================================= ## en.Node ## ============================================================================= emptyplot(main = "en.Node") rect(0.2, 0.2, 0.8, 0.8) en.Node(c(0.2, 0.2), lab = "N1" , pos = 1.5) en.Node(c(0.2, 0.8), lab = "N2" , pos = 2.5) en.Node(c(0.8, 0.8), lab = "N3" , pos = 3.5) en.Node(c(0.8, 0.2), lab = "N2" , pos = 4.5) box(col = "grey") ## ============================================================================= ## en.Amplifier example ## ============================================================================= emptyplot(main = "en.Amplifier") en.Amplifier(c(0.5, 0.5), r = 0.15) box(col = "grey") ## ============================================================================= ## en.Transistor example ## ============================================================================= emptyplot(main = "enTransistor") gate <- c(0.1, 0.5) mid <- c(0.5, 0.5) drain <- c(0.9, 0.9) source <- c(0.9, 0.1) en.Transistor(mid = mid, gate = gate, drain = drain, source = source, r = 0.15) text(0.2, 0.4, "Gate", font = 3) text(0.8, 0.9, "Drain", font = 3, adj = 1) text(0.8, 0.1, "Source", font = 3, adj = 1) box(col = "grey") ## ============================================================================= ## position of text examples ## ============================================================================= mf <- par (mfrow = c(2, 2)) openplotmat(main = "pos") segments(0, 0.5, 1, 0.5) for (i in 4:0) en.Resistor( mid = c(0.5, 0.5), width = 0.25, length = 0.25, lab = i, pos = i, dtext = 0.2) openplotmat(main = "pos") segments(0, 0.5, 1, 0.5) for (i in 1:4) en.Resistor( mid = c(0.5, 0.5), width = 0.25, length = 0.25, lab = i+0.5, pos = i+0.5, dtext = 0.25) openplotmat(main = "vert = TRUE") segments(0.5, 0, 0.5, 1) for (i in 1:4) en.Resistor( mid = c(0.5, i/5), width = 0.075, length = 0.125, lab = substitute(R[i], list(i = i) )) openplotmat(main = "vert = FALSE") segments(0, 0.5, 1, 0.5) for (i in 1:4) en.Resistor( mid = c(i/5, 0.5), width = 0.075, length = 0.125, lab = substitute(R[i], list(i = i) ), vert = FALSE) par(mfrow = mf) ## ============================================================================= ## A small transistor example ## ============================================================================= par(lwd = 1.5) par(mar = c(0, 0, 2, 0)) emptyplot(main = "transistor Amplifier", ylim = c(-0.1, 1), xlim = c(-0.1, 1.1), asp = FALSE) x1 <- 0; x2 <- 0.2; x3 <- 0.4; x4 <- 0.6; x5 <- 0.8; x6 <- 1; y1 <- 0.05; y2 <- 0.4; y3 <- 0.5; y4 <- 0.6; y5 <- 0.95 x23 <- (x2 + x3)/2 x56 <- (x5 + x6)/2 lines(c(x2, x6, x6, x2, x2, x1, x1, x23, x3, x3), c(y1, y1, y5, y5, y1, y1, y3, y3, y4, y5)) lines(c(x3, x3), c(y2, y1)) lines(c(x3, x4, x4), c(y2, y2, y1)) lines(c(x3, x5, x5), c(y4, y4, y1)) en.Transistor(mid = c(x23, y3), gate = c(x2, y3), drain = c(x3,y4), source = c(x3,y2), r = 0.035) en.Signal(c(x1, 0.2), lab = expression("U"["in"])) en.Signal(c(x6, y2), lab = expression("U"["b"])) straightarrow(c(x1 - 0.05, 0.23), c(x1 - 0.05, 0.17), arr.pos =1, arr.type = "triangle", lwd = 1) straightarrow(c(x6 + 0.05, y2 + 0.03), c(x6 + 0.05, y2 - 0.03), arr.pos = 1, arr.type = "triangle", lwd = 1) en.Node(c(x1, y3), lab = "u1") en.Node(c(x2, y3), lab = "u2") en.Node(c(x3, y2), lab = "u3", pos = 1.5) en.Node(c(x3, y4), lab = "u4", pos = 2.5) en.Node(c(x5, y4), lab = "u5") en.Capacitator(c(0.5*(x1 + x2),y3), lab = "C1", vert = FALSE) en.Capacitator(c(x4, y4), lab = "C3", vert = FALSE) en.Capacitator(c(x4, 0.5*(y1+y2)), lab = "C2", vert = TRUE) en.Resistor(c(x1, y2), lab = "R0") en.Resistor(c(x2, 0.5*(y1+y2)), lab = "R1") en.Resistor(c(x2, 0.5*(y4+y5)), lab = "R2") en.Resistor(c(x3, 0.5*(y4+y5)), lab = "R4") en.Resistor(c(x3, 0.5*(y1+y2)), lab = "R3") en.Resistor(c(x5, 0.5*(y1+y2)), lab = "R5") en.Ground(c(1.0, 0.05)) } \details{ Created for drawing the electrical network in the book Soetaert Karline, Jeff Cash and Francesca Mazzia. Solving differential equations in R. Springer. } \seealso{ \code{\link{textdiamond}}, \code{\link{textellipse}}, \code{\link{textempty}}, \code{\link{texthexa}}, \code{\link{textmulti}}, \code{\link{textplain}}, \code{\link{textround}} } \keyword{aplot} diagram/man/straightarrow.Rd0000644000176200001440000000524013432464046015627 0ustar liggesusers\name{straightarrow} \alias{straightarrow} \title{adds straight arrow between two points} \description{ Plots straight line between two points adds an arrowhead at a certain distance. } \usage{ straightarrow(from, to, lwd = 2, lty = 1, lcol = "black", arr.col = lcol, arr.pos = 0.5, endhead = FALSE, segment = c(0,1), ...) } \arguments{ \item{from }{coordinates (x,y) of the point *from* which to draw arrow. } \item{to }{coordinates (x,y) of the point *to* which to draw arrow. } \item{lwd }{line width. } \item{lty }{line type. } \item{lcol }{line color. } \item{arr.col }{arrow color. } \item{arr.pos }{relative position of arrowhead.} \item{endhead }{if \code{TRUE}: the arrow line stops at the arrowhead; default = \code{FALSE}. } \item{segment }{if not \code{c(0,1)}: then the arrow line will cover only part of the requested path, e.g. if segment = c(0.2,0.8), it will start 0.2 from \code{from} and till 0.8. } \item{... }{arguments passed to function \link[shape]{Arrows}. } } \value{ coordinates (x,y) where arrowhead is drawn } \author{Karline Soetaert } \examples{ openplotmat(main = "straightarrow") pos <- coordinates(c(2, 3, 1)) for (i in 1:5) straightarrow(from = pos[i, ], to = pos[i+1, ], arr.pos = 0.5) straightarrow(from = pos[6, ], to = pos[6, ] + c(0.3, 0.), arr.type = "T", arr.pos = 1, arr.lwd = 3) for (i in 1:6) textrect(pos[i, ], lab = LETTERS[i], radx = 0.05) } \details{a straight arrow is drawn between the points '(\code{from}, \code{to})' The position of the arrowhead, is set with \code{arr.pos}, a value between 0(start point) and 1(endpoint) The type of the arrowhead is set with \code{arr.type} which can take the values: \itemize{ \item "none" : skips the drawing of arrows. \item "simple" : uses comparable \R function \link{arrows}. \item "triangle": uses filled triangle. \item "curved" : draws arrowhead with curved edges. \item "circle" : draws circular head. \item "ellipse" : draws ellepsoid head. \item "T" : draws T-shaped (blunt) head. } The size of the arrow head can be specified with the arguments \code{arr.length} and \code{arr.width}. See \code{\link[shape]{Arrowhead}} from package shape for details on arrow head. } \seealso{ \code{\link{bentarrow}}, \code{\link{segmentarrow}}, \code{\link{curvedarrow}} \code{\link{selfarrow}}, \code{\link{splitarrow}}, \code{\link{treearrow}}, \code{\link{arrows}}: the comparable R function, \code{\link[shape]{Arrows}}: more complicated arrow function from package shape. } \keyword{aplot} diagram/man/textrect.Rd0000644000176200001440000000521111702565460014567 0ustar liggesusers\name{textrect} \alias{textrect} \alias{textparallel} \title{ adds lines of text in a rectangular-shaped box or in a parallelogram to a plot } \description{ Adds one or more lines of text, centered around "mid" in a rectangular box, or in a paralellogram } \usage{ textrect(mid, radx, rady = radx*length(lab), lwd = 1, shadow.size = 0.01, adj = c(0.5, 0.5), lab = "", box.col = "white", lcol = "black", shadow.col = "grey", angle = 0, ...) textparallel (mid, radx, rady = radx*length(lab), lwd = 1, shadow.size = 0.01, adj = c(0.5, 0.5), lab = "", box.col = "white", lcol = "black", shadow.col = "grey", angle = 0, theta = 90, ...) } \arguments{ \item{mid }{midpoint (x,y) of the box. } \item{radx }{horizontal radius of the box. } \item{rady }{vertical radius of the box. } \item{lwd }{line width of line surrounding the box. } \item{shadow.size }{relative size of shadow. } \item{adj }{text adjustment. } \item{lab }{one label or a vector string of labels to be added in box. } \item{box.col }{fill color of the box. } \item{lcol }{line color surrounding box. } \item{shadow.col }{color of shadow. } \item{angle }{rotation angle, degrees. } \item{theta }{angle of the bottom, left corner of the parallelogram, in degrees. } \item{... }{other arguments passed to function textplain. } } \author{ Karline Soetaert Thanks to Michael Folkes for the code of the parallelogram. } \examples{ openplotmat(xlim = c(-0.1, 1.1), main = "textrect") for (i in 1:10) textrect(mid = runif(2), col = i, radx = 0.1, rady = 0.1, lab = LETTERS[i], cex = 2) openplotmat(xlim = c(-0.1, 1.1), main = "textparallel") elpos <-coordinates (c(1, 1, 1, 1, 1)) textparallel(mid = elpos[1,], col = 1, radx = 0.2, rady = 0.1, lab = "theta=20", theta = 20) textparallel(mid = elpos[2,], col = 1, radx = 0.2, rady = 0.1, lab = "theta=60", theta = 60) textparallel(mid = elpos[3,], col = 1, radx = 0.2, rady = 0.1, lab = "theta=100", theta = 100) textparallel(mid = elpos[4,], col = 1, radx = 0.2, rady = 0.1, lab = "theta=140", theta = 140) textparallel(mid = elpos[5,], col = 1, radx = 0.2, rady = 0.1, lab = "theta=170", theta = 170) } \details{ see \code{\link{shadowbox}} for specifications of the rectangular box and its shadow. } \seealso{ \code{\link{textdiamond}}, \code{\link{textellipse}}, \code{\link{textempty}}, \code{\link{texthexa}}, \code{\link{textmulti}}, \code{\link{textplain}}, \code{\link{textround}} } \keyword{aplot} diagram/man/bentarrow.Rd0000644000176200001440000000652113432464160014732 0ustar liggesusers\name{bentarrow} \alias{bentarrow} \title{ adds 2-segmented arrow between two points } \description{ Connects two points with 2 segments (default = horizontal-vertical) and adds an arrowhead on (one of) the segments and at a certain distance. } \usage{ bentarrow(from, to, lwd = 2, lty = 1, lcol = "black", arr.col = lcol, arr.side = 2, arr.pos = 0.5, path = "H", ...) } \arguments{ \item{from }{coordinates (x,y) of the point *from* which to draw arrow. } \item{to }{coordinates (x,y) of the point *to* which to draw arrow. } \item{lwd }{line width. } \item{lty }{line type. } \item{lcol }{line color. } \item{arr.col }{arrowhead color. } \item{arr.side }{segment number on which arrowhead is drawn (1,2). } \item{arr.pos }{relative position of arrowhead on segment on which arrowhead is drawn. } \item{path }{first segment to be drawn (V=Vertical, H=Horizontal). } \item{... }{other arguments passed to function straightarrow. } } \value{ coordinates (x,y) where arrowhead is drawn } \author{Karline Soetaert } \examples{ openplotmat(main = "bentarrow") pos <- cbind( A <- seq(0.1, 0.9, by = 0.2), rev(A)) text(pos, LETTERS[1:5], cex = 2) for (i in 1:4) bentarrow(from = pos[i,] + c(0.05, 0), to = pos[i+1,] + c(0, 0.05), arr.pos = 1, arr.adj = 1) for (i in 1:2) bentarrow(from = pos[i,] + c(0.05, 0), to = pos[i+1, ] + c(0, 0.05), arr.pos = 0.5, path = "V", lcol = "lightblue", arr.type = "triangle") bentarrow(from = pos[3, ] + c(0.05, 0), to = pos[4, ] + c(0, 0.05), arr.pos = 0.7, arr.side = 1, path = "V", lcol = "darkblue") bentarrow(from = pos[4, ] + c(0.05, 0), to = pos[5, ] + c(0, 0.05), arr.pos = 0.7, arr.side = 1:2, path = "V", lcol = "blue") } \details{ a two-segmented arrow is drawn between two points '(from, to)' how the segments are drawn is set with \code{path} which can take on the values: \itemize{ \item H: (horizontal): first left or right, then vertical. \item V: (vertical) : first down- or upward, then horizontal. } The segment(s) on which the arrow head is drawn is set with \code{arr.side}, which is one or more values in (1, 2) The position of the arrowhead on the segment on which it is drawn, is set with \code{arr.pos}, a value between 0(start of segment) and 1 (end of segment). The type of the arrowhead is set with \code{arr.type} which can take the values: \itemize{ \item "none" : skips the drawing of arrows. \item "simple" : uses comparable R function arrows. \item "triangle": uses filled triangle. \item "curved" : draws arrowhead with curved edges. \item "circle" : draws circular head. \item "ellipse" : draws ellepsoid head. \item "T" : draws T-shaped (blunt) head. } The size of the arrow head can be specified with the arguments \code{arr.length} and \code{arr.width}. See \code{\link[shape]{Arrowhead}} from package shape for details on arrow head. } \seealso{ \code{\link{straightarrow}}, \code{\link{segmentarrow}}, \code{\link{curvedarrow}}, \code{\link{selfarrow}}, \code{\link{treearrow}}, \code{\link{splitarrow}}, \code{\link[graphics]{arrows}}: the comparable R function, \code{\link[shape]{Arrows}}: more complicated arrow function from package shape. } \keyword{aplot} diagram/man/shadowbox.Rd0000644000176200001440000000575711702565456014747 0ustar liggesusers\name{shadowbox} \alias{shadowbox} \title{ adds a box with a shadow to a plot } \description{ adds a box, with shadow on a plot; used for writing text } \usage{ shadowbox(box.type = "rect", mid, radx, rady = radx, shadow.size = 0.01, shadow.col = "grey", box.col = "white", lcol = "black", lwd = 1, dr = 0.01, angle = 0, len = 1, nr = 5, rx = rady, theta = 90, ...) } \arguments{ \item{box.type }{shape of the box. } \item{mid }{midpoint (x,y) of the box. } \item{radx }{horizontal radius of the box. } \item{rady }{vertical radius of the box. } \item{shadow.size }{relative size of shadow. } \item{shadow.col }{color of shadow. } \item{box.col }{fill color of the box. } \item{lcol }{line color surrounding box. } \item{lwd }{line width of line surrounding the box. } \item{dr }{if box is curved: size of segments, in radians, to draw ellipse (decrease for smoother). } \item{angle }{rotation angle, degrees. } \item{len }{if \code{box.type}="cylinder": length of the cylinder. } \item{nr }{if \code{box.type}="multi": the number of angles. } \item{rx }{if \code{box.type}="round", the radius of the rounded part. } \item{theta }{if \code{box.type}="parallel", angle of the bottom, left corner of the parallelogram, in degrees. } \item{... }{other arguments. } } \author{ Karline Soetaert } \examples{ openplotmat(main="shadowbox") shadowbox(box.type = "rect", mid = c(0.1, 0.5), rady = 0.1, radx = 0.05, angle = 25) shadowbox(box.type = "round", mid = c(0.3, 0.5), rady = 0.05, radx = 0.025, angle = 90, shadow.col = "darkred") shadowbox(box.type = "ellipse", mid = c(0.5, 0.5), rady = 0.05, radx = 0.075, box.col = "blue") shadowbox(box.type = "multi", mid = c(0.8, 0.5), rady = 0.05, radx = 0.05, box.col = "darkblue", nr = 5) } \details{ one box is drawn, centered aroung point \code{mid} and with horizontal and vertical radiusses \code{radx}, \code{rady}. By default, a shadow is drawn, in the right-lower corner of the box. The shadow color and relative size is specified with \code{shadow.col} and \code{shadow.size} respectively. \code{shadow.size = 0} toggles off the drawing of the shadow. the type of the box is set with \code{box.type} which can take on the values: \itemize{ \item "rect": a rectangle. \item "ellipse": an ellipse. \item "diamond": a diamond. \item "round": a rectangle with rounded sides. \item "hexa": a hexagonal shape. \item "multi": a multigonal shape; also input "nr", the number of angles. \item "cylinder": a cylindrical shape; also input "len", the length of the cylinder. \item "parallel": a parallelogram; ``theta'' is the angle of the bottom left corner. } the fill-color of the box is specified with \code{box.col}; the line width and color of the box are specified with \code{lwd} and \code{lcol} } \keyword{aplot} diagram/man/selfarrow.Rd0000644000176200001440000000521313432464120014724 0ustar liggesusers\name{selfarrow} \alias{selfarrow} \title{ adds a circular, self-pointing arrow to a plot } \description{ adds a circular arrow, from and to the same point } \usage{ selfarrow(pos, lwd = 2, lty = 1, lcol = "black", arr.pos = 0.5, path = "L", curve = c(0.1, 0.1), dr = 0.01, code = 1, ...) } \arguments{ \item{pos }{2-valued vector with coordinates (x,y) of points *from and to* which to draw arrow. } \item{lwd }{line width. } \item{lty }{line type. } \item{lcol }{line color. } \item{arr.pos }{relative position of arrowhead. } \item{path }{position of circle: R, L, U, D for right, left, up and down respectively. } \item{curve }{relative size of curve (fraction of arrow length). } \item{dr }{size of segments, in radians, to draw ellipse (decrease for smoother). } \item{code }{how to put the arrowhead. } \item{... }{arguments passed to function Arrows. } } \value{ coordinates (x,y) where arrowhead is drawn } \author{Karline Soetaert } \examples{ openplotmat(main = "selfarrow") pos <- coordinates(3, mx = 0.05) text(pos, LETTERS[1:3], cex = 2) for (i in 1:3) selfarrow(pos = pos[i, ], path = "R", arr.pos = 0.2, curve = c(0.05, 0.1), lcol = "darkred") for (i in 1:3) selfarrow(pos = pos[i, ], path = "L", arr.pos = 0.7, lcol = "darkblue", curve = c(0.05, 0.05)) for (i in 1:3) selfarrow(pos = pos[i, ], path = "L", arr.pos = 0.5, lcol = "darkgreen", code = i, arr.type = "triangle") } \details{ draws a circular arrow from and to one point The position of the arrowhead on the circle is set with \code{arr.pos}, a value between 0 (at start) and 1(at end of circle) The type of the arrowhead is set with \code{arr.type} which can take the values: \itemize{ \item "none" : skips the drawing of arrows. \item "simple" : uses comparable \R function \link{arrows}. \item "triangle": uses filled triangle. \item "curved" : draws arrowhead with curved edges. \item "circle" : draws circular head. \item "ellipse" : draws ellepsoid head. \item "T" : draws T-shaped (blunt) head. } The size of the arrow head can be specified with the arguments \code{arr.length} and \code{arr.width}. See \code{\link[shape]{Arrowhead}} for details on arrow head. } \seealso{ \code{\link{straightarrow}}, \code{\link{segmentarrow}}, \code{\link{curvedarrow}}, \code{\link{bentarrow}},\code{\link{treearrow}}, \code{\link{splitarrow}}, \code{\link{arrows}}: the comparable \R function, \code{\link[shape]{Arrows}}: more complicated arrow function from package shape. } \keyword{aplot} diagram/man/textround.Rd0000644000176200001440000000317511702565461014771 0ustar liggesusers\name{textround} \alias{textround} \title{ adds lines of text in a rounded box to a plot } \description{ adds one or more lines of text, centered around "mid" in an a rectangular box with rounded sides } \usage{ textround(mid, radx, rady = radx*length(lab), lwd = 1, shadow.size = 0.01, adj = c(0.5, 0.5), lab = "", box.col = "white", lcol = "black", shadow.col = "grey", angle = 0, rx = rady, ...) } \arguments{ \item{mid }{midpoint (x,y) of the box. } \item{radx }{horizontal radius of the box. } \item{rady }{vertical radius of the box. } \item{lwd }{line width of line surrounding the box. } \item{shadow.size }{relative size of shadow. } \item{adj }{text adjustment. } \item{lab }{one label or a vector string of labels to be added in box. } \item{box.col }{fill color of the box. } \item{lcol }{line color surrounding box. } \item{shadow.col }{color of shadow. } \item{angle }{rotation angle, degrees. } \item{rx }{the radius of the rounded part. } \item{... }{other arguments passed to function \link{textplain}. } } \author{ Karline Soetaert } \examples{ openplotmat(xlim = c(-0.1, 1.1), main = "textround") for (i in 1:10) textround(mid = runif(2), col = i, radx = 0.03, rady = 0.075, lab = LETTERS[i], cex = 2) } \details{ see \code{\link{shadowbox}} for specifications of the box and its shadow } \seealso{ \code{\link{textdiamond}}, \code{\link{textellipse}}, \code{\link{textempty}}, \code{\link{texthexa}}, \code{\link{textmulti}}, \code{\link{textplain}}, \code{\link{textrect}}. } \keyword{aplot} diagram/man/textellipse.Rd0000644000176200001440000000336311702565457015303 0ustar liggesusers\name{textellipse} \alias{textellipse} \title{ adds lines of text in an ellipsoid box to a plot } \description{ adds one or more lines of text, centered around "mid" in an ellipsoid box } \usage{ textellipse(mid, radx, rady = radx*length(lab), lwd = 1, shadow.size = 0.01, adj = c(0.5, 0.5), lab = "", box.col = "white", lcol = "black", shadow.col = "grey", angle = 0, dr = 0.01, ...) } \arguments{ \item{mid }{midpoint (x,y) of the box. } \item{radx }{horizontal radius of the box. } \item{rady }{vertical radius of the box. } \item{lwd }{line width of line surrounding the box. } \item{shadow.size }{relative size of shadow. } \item{adj }{text adjustment. } \item{lab }{one label or a vector string of labels to be added in box. } \item{box.col }{fill color of the box. } \item{lcol }{line color surrounding box. } \item{shadow.col }{color of shadow. } \item{angle }{rotation angle, degrees. } \item{dr }{size of segments, in radians, to draw ellipse (decrease for smoother). } \item{... }{other arguments passed to function \link{textplain}. } } \author{ Karline Soetaert } \examples{ openplotmat(xlim = c(-0.1, 1.1), main = "textellipse") for (i in 1:10) textellipse(mid = runif(2), col = i, box.col = grey(0.95), radx = 0.1, rady = 0.05, lab = LETTERS[i], cex = 2, angle = runif(1)*360) } \details{ see \code{\link{shadowbox}} for specifications of the ellipsoid-shaped box and its shadow } \seealso{ \code{\link{textdiamond}}, \code{\link{textempty}}, \code{\link{texthexa}}, \code{\link{textmulti}}, \code{\link{textplain}}, \code{\link{textrect}}, \code{\link{textround}} } \keyword{aplot} diagram/man/curvedarrow.Rd0000644000176200001440000000631413432464201015266 0ustar liggesusers\name{curvedarrow} \alias{curvedarrow} \title{ adds curved arrow between two points } \description{ Connects two points with an ellipsoid line and adds an arrowhead at a certain distance } \usage{ curvedarrow(from, to, lwd = 2, lty = 1, lcol = "black", arr.col = lcol, arr.pos = 0.5, curve = 1, dr = 0.01, endhead = FALSE, segment = c(0, 1), ...) } \arguments{ \item{from }{coordinates (x,y) of the point *from* which to draw arrow. } \item{to }{coordinates (x,y) of the point *to* which to draw arrow. } \item{lwd }{line width. } \item{lty }{line type. } \item{lcol }{line color. } \item{arr.col }{arrowhead color. } \item{arr.pos }{relative position of arrowhead. } \item{curve }{relative size of curve (fraction of points distance) - see details. } \item{dr }{size of segments, in radians, to draw ellipse (decrease for smoother). } \item{endhead }{if \code{TRUE}: the arrow line stops at the arrowhead; default = \code{FALSE}. } \item{segment }{if not \code{c(0,1)}: then the arrow line will cover only part of the requested path, e.g. if segment = c(0.2,0.8), it will start 0.2 from \code{from} and till 0.8. } \item{... }{arguments passed to function \code{\link[shape]{Arrows}}. } } \value{ \item{default }{coordinates (x,y) where arrowhead is drawn. } } \author{Karline Soetaert } \examples{ openplotmat(main = "curvedarrow") pos <- coordinates(pos = 4, my = 0.2) text(pos, LETTERS[1:4], cex = 2) for (i in 1:3) curvedarrow(from = pos[1, ] + c(0,-0.05), to = pos[i+1, ] + c(0,-0.05), curve = 0.5, arr.pos = 1) for (i in 1:3) curvedarrow(from = pos[1, ] + c(0, 0.05), to = pos[i+1, ] + c(0, 0.05), curve = -0.25, arr.adj = 1, arr.pos = 0.5, arr.type = "triangle", arr.col = "blue") } \details{ A curved arrow is drawn between two points '(from, to)' The position of the arrowhead, is set with \code{arr.pos}, a value between 0(start point) and 1(endpoint) The line curvature is set with \code{curve} which expresses the ellipse radius as a fraction of the distance between the two points. For instance, \code{curve=0.5} will draw an ellepse with small radius half of a circle. The type of the arrowhead is set with \code{arr.type} which can take the values: \itemize{ \item "none" : skips the drawing of arrows. \item "simple" : uses comparable R function arrows. \item "triangle": uses filled triangle. \item "curved" : draws arrowhead with curved edges. \item "circle" : draws circular head. \item "ellipse" : draws ellepsoid head. \item "T" : draws T-shaped (blunt) head. } The size of the arrow head can be specified with the arguments \code{arr.length} and \code{arr.width}. See \code{\link[shape]{Arrowhead}} from package shape for details on arrow head } \seealso{ \code{\link{straightarrow}}, \code{\link{segmentarrow}}, \code{\link{bentarrow}}, \code{\link{selfarrow}}, \code{\link{treearrow}}, \code{\link{splitarrow}}, \code{\link{arrows}}: the comparable R function, \code{\link[shape]{Arrows}}: more complicated arrow function from package shape. } \keyword{aplot} diagram/man/plotmat.Rd0000644000176200001440000004043213727665315014422 0ustar liggesusers\name{plotmat} \alias{plotmat} \title{ plots a graph (network), based on a transition matrix } \description{ visualises a transition matrix as a number of (labeled) boxes connected by (labeled) arrows. } \usage{ plotmat(A, pos = NULL, curve = NULL, name = NULL, absent = 0, relsize = 1, lwd = 2, lcol = "black", box.size = 0.1, box.type = "circle", box.prop = 1, box.col = "white", box.lcol = lcol, box.lwd = lwd, shadow.size = 0.01, shadow.col = "grey", dr = 0.01, dtext = 0.3, self.lwd = 1, self.cex = 1, self.shiftx = box.size, self.shifty = NULL, self.arrpos = NULL, arr.lwd = lwd, arr.lcol = lcol, arr.tcol = lcol, arr.col = "black", arr.type = "curved", arr.pos = 0.5, arr.length = 0.4, arr.width = arr.length/2, endhead = FALSE, mx = 0.0, my = 0.0, box.cex = 1, txt.col = "black", txt.xadj = 0.5, txt.yadj = 0.5, txt.font = 1, prefix = "", cex = 1, cex.txt = cex, add = FALSE, main = "", cex.main = cex, segment.from = 0, segment.to = 1, latex = FALSE, ...) } \arguments{ \item{A }{square coefficient matrix, specifying the links (rows=to, cols=from). } \item{pos }{vector, specifying the number of elements in each graph row, or a 2-column matrix with element position, or NULL. If a 2-column matrix, the values should be withing 0 and 1. } \item{curve }{one value, or a matrix, same dimensions as \code{A}, specifying the arrow curvature; 0 for straight; NA for default curvature. } \item{name }{string vector, specifying the names of elements, dimension = number of rows (columns) of \code{A}. } \item{absent }{all elements in \code{A} different from this value are connected. } \item{relsize }{scaling factor for size of the graph. } \item{lwd }{default line width of arrow and box. } \item{lcol }{default color of arrow line and box line. } \item{box.size }{size of label box, one value or a vector with dimension = number of rows of \code{A}. } \item{box.type }{shape of label box (rect, ellipse, diamond, round, hexa, multi), one value or a vector with dimension=number of rows of \code{A}. } \item{box.prop }{length/width ratio of label box, one value or a vector with dimension=number of rows of \code{A}. } \item{box.col }{fill color of label box, one value or a vector with dimension=number of rows of \code{A}. } \item{box.lcol }{line color of label box, one value or a vector with dimension=number of rows of \code{A}. } \item{box.lwd }{line width of the box, one value or a vector with dimension = number of rows of \code{A}. } \item{shadow.size }{relative size of shadow of label box, one value or a vector with dimension=number of rows of \code{A}. } \item{shadow.col }{color of shadow of label box, one value or a vector with dimension=number of rows of \code{A}. } \item{dr }{size of segments, in radians, to draw ellipse (decrease for smoother ellipses). } \item{dtext }{controls the position of arrow text relative to arrowhead. } \item{self.lwd }{line width of self-arrow, (arrow from i to i), one value or a vector with dimension=number of rows of \code{A}. } \item{self.cex }{relative size of self-arrow, relative to box, one value or a vector with dimension=number of rows of \code{A}. } \item{self.shiftx }{relative shift of self-arrow, in x-direction, one value or a vector with dimension=number of rows of \code{A}. } \item{self.shifty }{relative shift of self-arrow, in y-direction, one value or a vector with dimension=number of rows of \code{A}. } \item{self.arrpos }{position of the self-arrow, angle in radians relative to x-direction, one value or a vector with dimension=number of rows of \code{A}. } \item{arr.lwd }{line width of arrow, connecting two different points, one value, or a matrix with same dimensions as \code{A}. } \item{arr.lcol }{color of arrow line, one value, or a matrix with same dimensions as \code{A}. } \item{arr.tcol }{color of arrow text, one value, or a matrix with same dimensions as \code{A}. } \item{arr.col }{color of arrowhead, one value, or a matrix with same dimensions as \code{A}. } \item{arr.type }{type of arrowhead, one of ("curved", "triangle", "circle", "ellipse", "T", "simple", "none"), one value, or a matrix with same dimensions as \code{A}. } \item{arr.pos }{relative position of arrowhead on arrow segment/curve, one value, or a matrix with same dimensions as \code{A}. } \item{arr.length }{arrow length, one value, or a matrix with same dimensions as \code{A}. } \item{arr.width }{arrow width, one value, or a matrix with same dimensions as \code{A}. } \item{endhead }{if TRUE: the arrow line stops at the arrowhead; default = \code{FALSE} and arrow line continues beyond the arrow head. } \item{mx }{horizontal shift of the boxes. } \item{my }{vertical shift of the boxes. } \item{box.cex }{relative size of text in boxes, one value or a vector with dimension=number of rows of \code{A}. } \item{txt.col }{color of text in boxes, one value or a vector with dimension=number of rows of \code{A}. } \item{txt.xadj, txt.yadj }{ the x and y adjustment of the labels in the boxes, one value or a vector with dimension=number of rows of \code{A} values usually within [0,1], although on most devices values outside that interval will also work. } \item{txt.font }{ the font to be used for the text in boxes, one value or a vector with dimension=number of rows of \code{A}. } \item{prefix }{to be added in front of non-zero arrow labels. } \item{cex }{relative size of text. } \item{cex.txt }{relative size of arrow text, one value, or a matrix with same dimensions as \code{A}. } \item{add }{start a new plot (\code{FALSE}), or add to current plot (\code{TRUE}). } \item{main }{main title. Only effective if \code{add = FALSE}. } \item{cex.main }{relative size of main title. } \item{segment.from }{if not \code{0} then the arrow line will not start at the position as given in \code{A}, but with an offset. one value, or a matrix with same dimensions as \code{A} } \item{segment.to }{if not \code{1} then the arrow line will not end at the position as given in \code{A}, but with an offset. one value, or a matrix with same dimensions as \code{A} } \item{latex }{if \code{FALSE} then expressions will be interpreted before print, if \code{TRUE} they will be printed literally to the plot. Set to \code{TRUE} if LaTeX code is to be printed. } \item{... }{other arguments passed to function \code{shadowbox}. } } \value{ a list containing: \item{arr }{ a data.frame with arrow information: \itemize{ \item nonzero: the elements between which an arrow is drawn. \item Angle: the angle of the arrow. \item Value: the value written next to the arrow head. \item rad: the radius of the arrow (if 0: straight line). \item ArrowX: the x-position of arrowhead. \item ArrowY: the y-position of arrowhead. \item TextX: the x-position of arrowtext. \item TextY: the y-position of arrowtext. }. } \item{comp }{a matrix with the element position (centre of the boxes). } \item{radii }{the radiusses in x- and y-direction of the boxes. } \item{rect }{the "xleft","ybot","xright",and "ytop" of the boxes - redundant. } } \author{ Karline Soetaert } \examples{ M <- matrix(nrow = 4, ncol = 4, byrow = TRUE, data = 0) pp <- plotmat(M, pos = c(1, 2, 1), name = c("A", "B", "C", "D"), lwd = 1, box.lwd = 2, cex.txt = 0.8, box.size = 0.1, box.type = "square", box.prop = 0.5, main = "plotmat") pp # when explicitly given, pos should should be inbetween 0, 1 pos <- cbind (c(0.2, 0.4, 0.6, 0.8), c(0.8, 0.6, 0.4, 0.2)) pp <- plotmat(M, pos = pos, name = c("A", "B", "C", "D"), lwd = 1, box.lwd = 2, cex.txt = 0.8, box.size = 0.1, box.type = "square", box.prop = 0.5, main = "plotmat") # includes arrows between boxes pm <- par(mfrow = c(2, 2)) M <- matrix(nrow = 4, ncol = 4, byrow = TRUE, data = 0) M[2, 1] <- M[3, 1] <- M[4, 2] <- M[4, 3] <- "f1" col <- M col[] <- "red" col[2, 1] <- col[3, 1] <- "blue" pp <- plotmat(M, pos = c(1, 2, 1), curve = 0, name = 1:4, lwd = 1, box.lwd = 2, box.cex = 1:4, cex.txt = 0.8, arr.lcol = col, arr.tcol = col, arr.col = col, box.type = "circle", box.prop = 1.0, main = "plotmat") pp <- plotmat(M, pos = c(1, 2, 1), curve = 0, name = 1:4, lwd = 1, box.lwd = 2, box.cex = 1:4, cex.txt = 0.8, arr.lcol = col, arr.tcol = col, arr.col = col, box.type = "circle", box.prop = 1.0, arr.len = 0.3, segment.from = 0.35, segment.to = 0.65) M[1, 2] <- M[1, 3] <- M[2, 4] <- M[3, 4] <- "f2" pp <- plotmat(M, pos = c(1, 2, 1), curve = 0.1, name = 1:4, lwd = 1, box.lwd = 2, box.cex = 1:4, cex.txt = 0.8, arr.lcol = col, arr.tcol = col, arr.col = col, box.type = "none", box.prop = 1.0, main = "plotmat", arr.len = 0.2, segment.from = 0.3, segment.to = 0.7) pp <- plotmat(M, pos = c(1, 2, 1), curve = 0.1, name = 1:4, box.lwd = 2, box.cex = 1:4, cex.txt = 0.8, arr.lcol = col, arr.tcol = "green", arr.col = col, arr.pos = 0.7, arr.type = "simple", lwd = 2, box.type = "none", box.prop = 1.0, main = "plotmat", arr.len = 0.2, segment.from = 0.3, segment.to = 0.7) par(mfrow=pm) # self arrows diag(M) <- "self" pp <- plotmat(M, pos = c(2, 2), curve = 0, name = LETTERS[1:4], lwd = 1, box.lwd = 2, cex.txt = 0.8, self.cex = 0.5, self.shiftx = c(-0.1, 0.1, -0.1, 0.1), box.type = "diamond", box.prop = 0.5, main = "plotmat") # different arrows M <- matrix(nrow = 4, ncol = 4, data = 0) M[2, 1]<- 1 ; M[4, 2] <- 2 ; M[3, 4] <- 3; M[1, 3] <- 4 pp <- plotmat(M, pos = c(1, 2, 1), curve = 0.2, name = letters[1:4], lwd = 1, box.lwd = 2, cex.txt = 0.8, arr.type = "triangle", box.size = 0.1, box.type = "hexa", box.prop = 0.5, main = "plotmat") arrlwd <- M*2 arr.length <- M*0.4 cextxt <- M*0.8 plotmat(M, pos = c(1, 2, 1), curve = 0.2, name = letters[1:4], lwd = 1, box.lwd = 2, arr.type = "triangle", box.size = 0.1, box.type = "hexa", box.prop = 0.5, main = "plotmat", arr.lwd = arrlwd, arr.length = arr.length, cex.txt = cextxt, txt.font = 1:4, txt.xadj = seq(-3, 3, length.out = 4), txt.yadj = 1) M <- matrix(nrow = 4, ncol = 4, byrow = TRUE, data = 0) M <- as.data.frame(M) M[[2,1]]<- "k[si]" M[[3,1]]<- "k[N]" M[[4,2]]<- "sqrt(frac(2,3))" names <- c(expression(lambda[12]), "?", expression(lambda[13]),expression(lambda[23])) plotmat(M, pos = c(1, 2, 1), name = names, lwd = 1, box.lwd = 2, curve = 0, cex.txt = 0.8, box.size = 0.1, box.type = "square", box.prop = 0.5, main = "plotmat") plotmat(M, name = letters[1:4], curve = 0, box.cex = 1:4, box.lwd = 4:1, box.size = 0.075, arr.pos = 0.7, box.col = c("lightblue", "green", "yellow", "orange")) # No arrows, just lines with different colors M <- matrix(nrow = 4, ncol = 4, data = 0) M[2, 1]<- 1 ; M[4, 2] <- 2 ; M[3, 4] <- 3; M[1, 3] <- 4 pp <- plotmat(M, pos = c(1, 2, 1), curve = 0.2, name = letters[1:4], lwd = 1, box.lwd = 2, cex.txt = 0.8, arr.type = "none", arr.lcol = M, box.size = 0.1, box.type = "hexa", box.prop = 0.5, main = "plotmat") pp <- plotmat(M, pos = c(1, 2, 1), curve = 0.4, name = "", arr.type = "none", arr.lcol = M, box.type = "none", cex.txt = 0, main = "plotmat") } \details{ The square transition matrix \code{A} determines the number of elements of \code{A} (rows of \code{A}) and which elements are connected (all values in \code{A} different from \code{absent}). \code{A} also provides the values of arrowlabels. The position of the elements are specified with \code{pos}, which is either \code{NULL}, or a vector specifying the number of elements on a row, or a 2-columned matrix specifying the (x,y) position of each element. The ordering of elements is according to the row number of \code{A} \itemize{ \item when \code{pos} is \code{NULL}, the elements will be arranged on a circle \item when \code{pos} is a vector, it specifies the number of elements in each row. For instance, with \code{pos = c(3,2,1)} the elements will be arranged in 3 rows (length of vector); on top row, 3 elements; on second row 2, and on third row 1 element will be positioned. All elements within a row are equally distributed horizontally, all rows are equally distributed vertically. \item when \code{pos} is a matrix, it specifies the x (1st column) and y (2nd column) position of each element. } The offset from x-axis and from y-axis can be changed with \code{mx} and \code{my}. The name of each element is given by vector \code{name}; this name is written in its respective box. The relative size of this text can be changed by \code{box.cex}. By default, a shadow is drawn, in the right-lower corner of the box. The shadow color and relative size is specified with \code{shadow.col} and \code{shadow.size} respectively. both can be one value (equal shadows) or a vector, specifying one value for each box shadow. \code{shadow.size = 0} toggles off the drawing of the shadow. The type of the box is set with "box.type" which can take on the values: \itemize{ \item "rect": a rectangle, \item "ellipse": an ellipse, \item "diamond": a diamond, \item "round": a rectangle with rounded left and right edges, \item "hexa": a hexagonal shape, \item "multi": a multigonal shape. \item "none" if no box is to be drawn. } The length of the box is set with \code{box.size}, the proportionality (length/width) ratio with \code{box.prop}. The fill-color of the box is specified with \code{box.col}; the line width of the box with \code{box.lwd} and the line color with \code{box.lcol}; All box properties can be either one value (equal boxes) or a vector, specifying one value for each box. For all values A[i,j] of \code{A} which are not equal to \code{absent}, one arrow is drawn *from* column-element j *to* the row-element i of \code{A}. The curvature of this arrow is specified with matrix element curve[i,j], where 'curve' is either NULL, one value, or has the same dimension as \code{A}. A straight arrow has curvature 0, \code{NA} (the default) chooses a default curvature, Positive or negative values of \code{curve} draws curved arrows. If the arrow is curved, then \code{dr} is the increment used to draw the ellipse; set to a lower value for smoother lines. The type of the arrowhead is set with \code{arr.type} which can take the values: \itemize{ \item "simple" : uses comparable R function arrows \item "triangle": uses filled triangle \item "curved" : draws arrowhead with curved edges \item "circle" : draws circular head \item "ellipse" : draws ellepsoid head \item "T" : draws T-shaped (blunt) head \item "none" : no arrow head is drawn } The line color and width of the arrow line is set with \code{arr.lcol} and \code{arr.lwd} The size of the arrow head is specified with \code{arr.length} and \code{arr.width}, the position of the arrow head is specified with \code{arr.pos} (value between [0,1]). see \code{\link[shape]{Arrowhead}} for details on arrow head } \seealso{ \code{\link{shadowbox}}, \code{\link[shape]{Arrowhead}} from package shape try: demo(plotmat) } \keyword{aplot} diagram/DESCRIPTION0000644000176200001440000000171213735030642013370 0ustar liggesusersPackage: diagram Version: 1.6.5 Title: Functions for Visualising Simple Graphs (Networks), Plotting Flow Diagrams Author: Karline Soetaert Maintainer: Karline Soetaert Depends: R (>= 2.01), shape Imports: stats, graphics Description: Visualises simple graphs (networks) based on a transition matrix, utilities to plot flow diagrams, visualising webs, electrical networks, etc. Support for the book "A practical guide to ecological modelling - using R as a simulation platform" by Karline Soetaert and Peter M.J. Herman (2009), Springer. and the book "Solving Differential Equations in R" by Karline Soetaert, Jeff Cash and Francesca Mazzia (2012), Springer. Includes demo(flowchart), demo(plotmat), demo(plotweb). License: GPL (>= 2) LazyData: yes NeedsCompilation: no Packaged: 2020-09-29 06:59:04 UTC; karlines Repository: CRAN Date/Publication: 2020-09-30 07:20:02 UTC diagram/build/0000755000176200001440000000000013734555470012772 5ustar liggesusersdiagram/build/vignette.rds0000644000176200001440000000037513734555470015336 0ustar liggesusersuQA lmӫgŋ1Bě/WF1n;3,,NaƘ#!SAA񠩃f \e-A> )DeGP& )1l)Դ-OE;Įf;'s'O箒R/b*ժ}qlj\7M/2\zyCWLw E{oQF0=diagram/vignettes/0000755000176200001440000000000013734555470013703 5ustar liggesusersdiagram/vignettes/diagram.Rnw0000644000176200001440000005341111702564474016000 0ustar liggesusers\documentclass[article,nojss]{jss} \DeclareGraphicsExtensions{.pdf,.eps} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Add-on packages and fonts \usepackage{amsmath} \usepackage{xspace} \usepackage{verbatim} \usepackage[english]{babel} %\usepackage{mathptmx} %\usepackage{helvet} \usepackage[T1]{fontenc} \usepackage[latin1]{inputenc} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands. \newcommand{\di}{\textbf{\textsf{diagram}}\xspace} \title{\proglang{R} Package \pkg{diagram}: visualising simple graphs, flowcharts, and webs} \Plaintitle{R Package diagram: visualising simple graphs, flowcharts, and webs} \Keywords{diagram, food web, flow chart, arrows, \proglang{R}} \Plainkeywords{diagram, food web, flow chart, arrows, R} \author{Karline Soetaert\\ Royal Netherlands Institute of Sea Research (NIOZ)\\ Yerseke, The Netherlands } \Plainauthor{Karline Soetaert} \Abstract{This document describes how to use the \pkg{diagram} package \citep{diagram} for plotting small networks, flow charts, and (food) webs. Together with R-package \pkg{shape} \citep{shape} this package has been written to produce the figures of the book \citep{Soetaertbook}. The electrical network symbols were added to produce a figure of the book \citep{Soetaertbook2} } %% The address of (at least) one author should be given %% in the following format: \Address{ Karline Soetaert\\ Royal Netherlands Institute of Sea Research (NIOZ)\\ 4401 NT Yerseke, Netherlands E-mail: \email{karline.soetaert@nioz.nl}\\ URL: \url{http://www.nioz.nl}\\ } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% R/Sweave specific LaTeX commands. %% need no \usepackage{Sweave} %\VignetteIndexEntry{diagram: visualising simple graphs, flowcharts and webs} %\VignetteKeywords{diagram, web, flow chart, arrows} %\VignettePackage{diagram} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Begin of the document \begin{document} \SweaveOpts{engine=R,eps=FALSE} \SweaveOpts{keep.source=TRUE} <>= library("diagram") options(prompt = "> ") options(width=90) @ \maketitle \section{Introduction} There are three ways in which package \pkg{diagram} can be used: \begin{itemize} \item function \code{plotmat} takes as input a matrix with transition coefficients or interaction strengths. It plots the corresponding network consisting of (labeled) boxes (the components) connected by arrows. Each arrow is labeled with the value of the coefficients. \item function \code{plotweb} takes as input a matrix with (flow) values, and plots a web. Here the components are connected by arrows whose thickness is determined by the value of the coefficients. \item Flowcharts can be made by adding separate objects (textboxes) to the figure and connecting these with arrows. \end{itemize} Three datasets have been included: \begin{itemize} \item \code{Rigaweb}, the planktonic food web of the Gulf of Riga \citep{Donali99}. \item \code{Takapotoweb}, the Takapoto atoll planktonic food web \citep{Niquil98}. \item \code{Teasel}, the transition matrix describing the population dynamics of Teasel, a European perennial weed (\citep{Caswell01, Soetaertbook}. \end{itemize} The food webs were generated using \proglang{R} packages \pkg{LIM} and \pkg{limSolve} \citep{limSolve, LIM} which contain functions to read and solve food web problems respectively. \section{plotmat - plotting networks based on matrix input} This is the quickest method of plotting a network. The network is specified in a matrix, which gives the magnitudes of the links (from columns to rows). The position of the elements (boxes) is specified by argument \code{pos}. Thus, setting \code{pos=c(1,2,1)} indicates that the 4 elements will be arranged in three equidistant rows; on the first row one element, on the second row two elements and on the third row one element. \subsection{Simple examples} Below are some simple examples of the use of \code{plotmat}. In the first graph - four simple boxes are put; no arrows drawn The second graph contains round boxes with arrows, labeled "flow" The third graph has diamond-shaped boxes including self-arrows. The fourth graph has hexagonal-shaped boxes, with curved arrows. The arrows are enlarged and the arrowhead pointing from box 2 to 4 is colored red. <>= par(mar = c(1, 1, 1, 1), mfrow = c(2, 2)) # # names <- c("A", "B", "C", "D") M <- matrix(nrow = 4, ncol = 4, byrow = TRUE, data = 0) plotmat(M, pos = c(1, 2, 1), name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, box.size = 0.1, box.type = "square", box.prop = 0.5) # M[2, 1] <- M[3, 1] <- M[4, 2] <- M[4, 3] <- "flow" plotmat(M, pos = c(1, 2, 1), curve = 0, name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, box.type = "circle", box.prop = 1.0) # # diag(M) <- "self" plotmat(M, pos = c(2, 2), curve = 0, name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, self.cex = 0.5, self.shiftx = c(-0.1, 0.1, -0.1, 0.1), box.type = "diamond", box.prop = 0.5) M <- matrix(nrow = 4, ncol = 4, data = 0) M[2, 1] <- 1 ; M[4, 2] <- 2 ; M[3, 4] <- 3 ; M[1, 3] <- 4 Col <- M Col[] <- "black" Col[4, 2] <- "darkred" pp <- plotmat(M, pos = c(1, 2, 1), curve = 0.2, name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, arr.type = "triangle", box.size = 0.1, box.type = "hexa", box.prop = 0.25, arr.col = Col, arr.len = 1) mtext(outer = TRUE, side = 3, line = -1.5, cex = 1.5, "plotmat") # par(mfrow = c(1, 1)) @ The contents of \code{pp} shows the position of the various items. <<>>= pp @ \setkeys{Gin}{width=0.6\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Four simple examples of \code{plotmat}} \label{fig:one} \end{figure} \subsection{a schematic representation of an ecosystem model} In the example below, first the main components and arrows are drawn (\code{plotmat}), and the output of this function written in list pp. This contains, a.o. the positions of the components (boxes), arrows, etc.. It is used to draw an arrow from the middle of the arrow connecting fish and zooplankton ("ZOO") to detritus. Function \code{straightarrow} (see below) is used to draw this arrow. <>= names <- c("PHYTO", "NH3", "ZOO", "DETRITUS", "BotDET", "FISH") M <- matrix(nrow = 6, ncol = 6, byrow = TRUE, data = c( # p n z d b f 0, 1, 0, 0, 0, 0, #p 0, 0, 4, 10, 11, 0, #n 2, 0, 0, 0, 0, 0, #z 8, 0, 13, 0, 0, 12, #d 9, 0, 0, 7, 0, 0, #b 0, 0, 5, 0, 0, 0 #f )) # pp <- plotmat(M, pos = c(1, 2, 1, 2), curve = 0, name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, box.type = "square", box.prop = 0.5, arr.type = "triangle", arr.pos = 0.4, shadow.size = 0.01, prefix = "f", main = "NPZZDD model") # phyto <- pp$comp[names=="PHYTO"] zoo <- pp$comp[names=="ZOO"] nh3 <- pp$comp[names=="NH3"] detritus <- pp$comp[names=="DETRITUS"] fish <- pp$comp[names=="FISH"] # # flow5->detritus # m2 <- 0.5*(zoo+fish) m1 <- detritus m1[1] <- m1[1] + pp$radii[4,1] mid <- straightarrow (to = m1, from = m2, arr.type = "triangle", arr.pos = 0.4, lwd = 1) text(mid[1], mid[2]+0.03, "f6", cex = 0.8) # # flow2->detritus # m2 <- 0.5*(zoo+phyto) m1 <- detritus m1[1] <-m1[1] + pp$radii[3,1]*0.2 m1[2] <-m1[2] + pp$radii[3,2] mid <- straightarrow (to = m1, from = m2, arr.type = "triangle", arr.pos = 0.3, lwd = 1) text(mid[1]-0.01, mid[2]+0.03, "f3", cex = 0.8) @ \setkeys{Gin}{width=0.6\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{An NPZZDD model} \label{fig:two} \end{figure} \subsection{Plotting a transition matrix} The next example uses formulae to label the arrows \footnote{This is now possible thanks to Yvonnick Noel, Univ. Rennes, France}. This is done by passing a data.frame rather than a matrix to function \code{plotmat} <>= # Create population matrix # Numgenerations <- 6 DiffMat <- matrix(data = 0, nrow = Numgenerations, ncol = Numgenerations) AA <- as.data.frame(DiffMat) AA[[1,4]] <- "f[3]" AA[[1,5]] <- "f[4]" AA[[1,6]] <- "f[5]" # AA[[2,1]] <- "s[list(0,1)]" AA[[3,2]] <- "s[list(1,2)]" AA[[4,3]] <- "s[list(2,3)]" AA[[5,4]] <- "s[list(3,4)]" AA[[6,5]] <- "s[list(4,5)]" # name <- c(expression(Age[0]), expression(Age[1]), expression(Age[2]), expression(Age[3]), expression(Age[4]), expression(Age[5])) # plotmat(A = AA, pos = 6, curve = 0.7, name = name, lwd = 2, arr.len = 0.6, arr.width = 0.25, my = -0.2, box.size = 0.05, arr.type = "triangle", dtext = 0.95, main = "Age-structured population model 1") @ \setkeys{Gin}{width=0.6\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{A transition matrix} \label{fig:three} \end{figure} \subsection{Another transition matrix} The data set \code{Teasel} contains the transition matrix of the population dynamics model of teasel (Dipsacus sylvestris), a European perennial weed, \citep{Caswell01, Soetaertbook} <>= Teasel @ This dataset is plotted using curved arrows; we specify the curvature in a matrix called \code{curves}. <>= curves <- matrix(nrow = ncol(Teasel), ncol = ncol(Teasel), 0) curves[3, 1] <- curves[1, 6] <- -0.35 curves[4, 6] <- curves[6, 4] <- curves[5, 6] <- curves[6, 5] <- 0.08 curves[3, 6] <- 0.35 plotmat(Teasel, pos = c(3, 2, 1), curve = curves, name = colnames(Teasel), lwd = 1, box.lwd = 2, cex.txt = 0.8, box.cex = 0.8, box.size = 0.08, arr.length = 0.5, box.type = "circle", box.prop = 1, shadow.size = 0.01, self.cex = 0.6, my = -0.075, mx = -0.01, relsize = 0.9, self.shiftx = c(0, 0, 0.125, -0.12, 0.125, 0), self.shifty = 0, main = "Teasel population model") @ \setkeys{Gin}{width=1.0\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{The Teasel data set} \label{fig:four} \end{figure} \section{plotweb - plotting webs based on matrix input} Given a matrix containing flow values (from rows to columns), function \code{plotweb} will plot a web. The elements are positioned on a circle, and connected by arrows; the magnitude of web flows determines the thickness of the arrow. This function is less flexible than \code{plotmat}, although it does allow to color the arrows differently. <>= BB <- matrix(nrow = 20, ncol = 20, 1:20) diag(BB) <- 0 Col <- BB Col[] <- "black" Col[BB<10]<- "red" plotweb(BB, legend = TRUE, maxarrow = 3, arr.col = Col) par(mfrow = c(1, 1)) @ \setkeys{Gin}{width=0.8\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Plotweb} \label{fig:five} \end{figure} \subsection{Foodwebs} Dataset \code{Rigaweb} (\citep{Donali99} contains flow values for the food web of the Gulf of Riga planktonic system. <<>>= Rigaweb @ <>= plotweb(Rigaweb, main = "Gulf of Riga food web", sub = "mgC/m3/d", val = TRUE) @ \setkeys{Gin}{width=0.8\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{The Gulf of Riga data set} \label{fig:six} \end{figure} \section{functions to create flow charts} The various functions are given in table (1) \footnote{textparallel was implemented by Michael Folkes, Canada}. \begin{table*}[t] \caption{Summary of flowchart functions}\label{tb:arr} \centering \begin{tabular}{p{.15\textwidth}p{.75\textwidth}}\\ Function & Description\\ \hline openplotmat & creates an empty plot\\ coordinates & calculates coordinates of elements, neatly arranged in rows/columns\\ bentarrow & adds 2-segmented arrow between two points\\ curvedarrow & adds curved arrow between two points\\ segmentarrow & adds 3-segmented arrow between two points\\ selfarrow & adds a circular self-pointing arrow \\ splitarrow & adds a branched arrow between several points\\ straightarrow & adds straight arrow between two points\\ treearrow & adds dendrogram-like branched arrow between several points\\ shadowbox & adds a box with a shadow to a plot\\ textdiamond & adds lines of text in a diamond-shaped box to a plot\\ textellipse & adds lines of text in a ellipse-shaped box to a plot\\ textempty & adds lines of text on a colored background to a plot\\ texthexa & adds lines of text in a hexagonal box to a plot\\ textmulti & adds lines of text in a multigonal box to a plot\\ textparallel & adds lines of text in a parallelogram to a plot\\ textplain & adds lines of text to a plot\\ textrect & adds lines of text in a rectangular-shaped box to a plot\\ textround & adds lines of text in a rounded box to a plot\\ \hline \end{tabular} \end{table*} The code below generates a flow chart <>= par(mar = c(1, 1, 1, 1)) openplotmat() elpos <- coordinates (c(1, 1, 2, 4)) fromto <- matrix(ncol = 2, byrow = TRUE, data = c(1, 2, 2, 3, 2, 4, 4, 7, 4, 8)) nr <- nrow(fromto) arrpos <- matrix(ncol = 2, nrow = nr) for (i in 1:nr) arrpos[i, ] <- straightarrow (to = elpos[fromto[i, 2], ], from = elpos[fromto[i, 1], ], lwd = 2, arr.pos = 0.6, arr.length = 0.5) textellipse(elpos[1,], 0.1, lab = "start", box.col = "green", shadow.col = "darkgreen", shadow.size = 0.005, cex = 1.5) textrect (elpos[2,], 0.15, 0.05,lab = "found term?", box.col = "blue", shadow.col = "darkblue", shadow.size = 0.005, cex = 1.5) textrect (elpos[4,], 0.15, 0.05,lab = "related?", box.col = "blue", shadow.col = "darkblue", shadow.size = 0.005, cex = 1.5) textellipse(elpos[3,], 0.1, 0.1, lab = c("other","term"), box.col = "orange", shadow.col = "red", shadow.size = 0.005, cex = 1.5) textellipse(elpos[3,], 0.1, 0.1, lab = c("other","term"), box.col = "orange", shadow.col = "red", shadow.size = 0.005, cex = 1.5) textellipse(elpos[7,], 0.1, 0.1, lab = c("make","a link"),box.col = "orange", shadow.col = "red", shadow.size = 0.005, cex = 1.5) textellipse(elpos[8,], 0.1, 0.1, lab = c("new","article"),box.col = "orange", shadow.col = "red", shadow.size = 0.005, cex = 1.5) # dd <- c(0.0, 0.025) text(arrpos[2, 1] + 0.05, arrpos[2, 2], "yes") text(arrpos[3, 1] - 0.05, arrpos[3, 2], "no") text(arrpos[4, 1] + 0.05, arrpos[4, 2] + 0.05, "yes") text(arrpos[5, 1] - 0.05, arrpos[5, 2] + 0.05, "no") # @ \setkeys{Gin}{width=0.8\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{A flow chart} \label{fig:seven} \end{figure} The different types of text boxes are generated with the following code: <>= openplotmat(main = "textbox shapes") rx <- 0.1 ry <- 0.05 pos <- coordinates(c(1, 1, 1, 1, 1, 1, 1,1 ), mx = -0.2) textdiamond(mid = pos[1,], radx = rx, rady = ry, lab = LETTERS[1], cex = 2, shadow.col = "lightblue") textellipse(mid = pos[2,], radx = rx, rady = ry, lab = LETTERS[2], cex = 2, shadow.col = "blue") texthexa(mid = pos[3,], radx = rx, rady = ry, lab = LETTERS[3], cex = 2, shadow.col = "darkblue") textmulti(mid = pos[4,], nr = 7, radx = rx, rady = ry, lab = LETTERS[4], cex = 2, shadow.col = "red") textrect(mid = pos[5,], radx = rx, rady = ry, lab = LETTERS[5], cex = 2, shadow.col = "darkred") textround(mid = pos[6,], radx = rx, rady = ry, lab = LETTERS[6], cex = 2, shadow.col = "black") textparallel(mid = pos[7,], radx = rx, rady = ry, lab = LETTERS[7], cex = 2, theta = 40, shadow.col = "black") textempty(mid = pos[8,], lab = LETTERS[8], cex = 2, box.col = "yellow") pos[ ,1] <- pos[ ,1] + 0.5 text(pos[ ,1],pos[ ,2], c("textdiamond", "textellipse", "texthexa", "textmulti", "textrect", "textround", "textparallel", "textempty")) @ \setkeys{Gin}{width=0.8\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{The text boxes} \label{fig:eight} \end{figure} The different types of arrows are generated with the following code: <>= par(mar = c(1, 1, 1, 1)) openplotmat(main = "Arrowtypes") elpos <- coordinates (c(1, 2, 1), mx = 0.1, my = -0.1) curvedarrow(from = elpos[1, ], to = elpos[2, ], curve = -0.5, lty = 2, lcol = 2) straightarrow(from = elpos[1, ], to = elpos[2, ], lty = 3, lcol = 3) segmentarrow (from = elpos[1, ], to = elpos[2, ], lty = 1, lcol = 1) treearrow (from = elpos[2:3, ], to = elpos[4, ], lty = 4, lcol = 4) bentarrow (from = elpos[3, ], to = elpos[3, ]-c(0.1, 0.1), arr.pos = 1, lty = 5, lcol = 5) bentarrow(from = elpos[1, ], to = elpos[3, ], lty = 5, lcol = 5) selfarrow(pos = elpos[3, ], path = "R",lty = 6, curve = 0.075, lcol = 6) splitarrow(from = elpos[1, ], to = elpos[2:3, ], lty = 1, lwd = 1, dd = 0.7, arr.side = 1:2, lcol = 7) for ( i in 1:4) textrect (elpos[i, ], 0.05, 0.05, lab = i, cex = 1.5) legend("topright", lty = 1:7, legend = c("segmentarrow", "curvedarrow", "straightarrow", "treearrow", "bentarrow", "selfarrow", "splitarrow"), lwd = c(rep(2, 6), 1), col = 1:7) @ \setkeys{Gin}{width=0.8\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{The arrow types} \label{fig:nine} \end{figure} \section{functions to draw electrical networks} Since version 1.6, it is possible to use \code{diagram} to draw electrical networks. Below I give an example of a small transistor circuit. <>= layoutmat <- matrix(data = c(rep(1, 12), 2, 3, 4, 5), nrow = 4, ncol = 4, byrow = TRUE) nf <- layout(layoutmat, respect = FALSE) par(lwd = 1.5) par(mar = c(0, 0, 2, 0)) emptyplot(main = "transistor Amplifier", asp = FALSE, ylim = c(-0.1, 1), xlim = c(-0.1, 1.1)) x1 <- 0; x2 <- 0.2; x3 <- 0.4; x4 <- 0.6; x5 <- 0.8; x6 <- 1 y1 <- 0.05; y2 <- 0.4; y3 <- 0.5; y4 <- 0.6; y5 <- 0.95 x23 <- (x2 + x3)/2 x56 <- (x5 + x6)/2 lines(c(x2, x6, x6, x2, x2, x1, x1, x23, x3, x3), c(y1, y1, y5, y5, y1, y1, y3, y3, y4, y5)) lines(c(x23, x3, x3), c(y3, y2, y1)) lines(c(x3, x4, x4), c(y2, y2, y1)) lines(c(x3, x5, x5), c(y4, y4, y1)) en.Amplifier(c(x23, y3), r = 0.035) en.Signal(c(x1, 0.2), lab = expression("U"["in"])) en.Signal(c(x6, y2), lab = expression("U"["b"])) straightarrow(c(x1 - 0.05, 0.23), c(x1 - 0.05, 0.17), arr.pos =1, arr.type = "triangle", lwd = 1) straightarrow(c(x6 + 0.05, y2 + 0.03), c(x6 + 0.05, y2 - 0.03), arr.pos = 1, arr.type = "triangle", lwd = 1) en.Node(c(x1, y3), lab = "u1") en.Node(c(x2, y3), lab = "u2") en.Node(c(x3, y2), lab = "u3", pos = 1.5) en.Node(c(x3, y4), lab = "u4", pos = 2.5) en.Node(c(x5, y4), lab = "u5") en.Capacitator(c(0.5*(x1 + x2),y3), lab = "C1", vert = FALSE) en.Capacitator(c(x4, y4), lab = "C3", vert = FALSE) en.Capacitator(c(x4, 0.5*(y1+y2)), lab = "C2", vert = TRUE) en.Resistor(c(x1, y2), lab = "R0") en.Resistor(c(x2, 0.5*(y1+y2)), lab = "R1") en.Resistor(c(x2, 0.5*(y4+y5)), lab = "R2") en.Resistor(c(x3, 0.5*(y4+y5)), lab = "R4") en.Resistor(c(x3, 0.5*(y1+y2)), lab = "R3") en.Resistor(c(x5, 0.5*(y1+y2)), lab = "R5") en.Ground(c(1.0, 0.05)) par(mar=c(2, 2, 2, 2)) emptyplot(main = "transistor") lines(c(0.1, 0.5,0.9), c(0.5, 0.5, 0.9)) lines(c(0.5, 0.9), c(0.5, 0.1)) lines(c(0.5, 0.5), c(0.4, 0.6)) text(0.2, 0.4, "Gate", font = 3) text(0.8, 0.9, "Drain", font = 3,adj = 1) text(0.8, 0.1, "Source", font = 3,adj = 1) en.Amplifier(c(0.5, 0.5), r = 0.15) box(col = "grey") emptyplot(main = "capacitator") straightarrow(c(0.5, 0.9), c(0.5, 0.1), arr.pos = 0.3, arr.length = 0.25, arr.type = "triangle") en.Capacitator(c(0.5, 0.5), width = 0.075, length = 0.5, vert = TRUE) text(0.4, 0.65, "i", font = 3, cex = 2) straightarrow(c(0.8, 0.3), c(0.8, 0.77), arr.pos = 1, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.925, 0.65, "v", font = 3, cex = 2) text(0.15, 0.5, "C", font = 3, cex = 2) box(col = "grey") emptyplot(main = "resistor") straightarrow(c(0.5, 0.9), c(0.5, 0.1), arr.pos = 0.2, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.4, 0.85, "i", font = 3, cex = 2) en.Resistor(c(0.5, 0.5), width = 0.25, length = 0.35 ) straightarrow(c(0.8, 0.3), c(0.8, 0.77), arr.pos = 1, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.925, 0.65, "v", font = 3, cex = 2) text(0.5, 0.5, "R", font = 3, cex = 2) box(col = "grey") emptyplot(main = "voltage source") lines(c(0.5, 0.5), c(0.1, 0.9)) en.Signal(c(0.5, 0.5), r = 0.15) straightarrow(c(0.8, 0.3), c(0.8, 0.77), arr.pos = 1, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.925, 0.65, "v", font = 3, cex = 2) box(col = "grey") @ \setkeys{Gin}{width=0.8\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Drawing an electrical network with package diagram} \label{fig:enet} \end{figure} This vignette was created using Sweave \citep{Leisch02}. The package is on CRAN, the R-archive website (\citep{R2008}) More examples can be found in the demo's of package \pkg{ecolMod} \citep{ecolMod} \bibliography{vignettes} \end{document} diagram/vignettes/vignettes.bib0000644000176200001440000000620411570405040016352 0ustar liggesusers@ARTICLE{Niquil98, author = {Niquil, N and Jackson, GA and Legendre, L and Delesalle, B}, title = {Inverse model analysis of the planktonic food web of Takapoto Atoll (French Polynesia).}, journal = {Marine Ecology Progress Series}, year = {1998}, volume = {165}, pages = {17--29}, } @ARTICLE{Donali99, author = {Donali, E. and Olli, K. and Heiskanen, A.-S. and Andersen, T.}, title = {Carbon flow patterns in the planktonic food web of the Gulf of Riga, the Baltic Sea: a reconstruction by the inverse method}, journal = {Journal of Marine Systems}, volume={23}, pages={251-268}, year = {1999} } @BOOK{Soetaertbook, title = {A Practical Guide to Ecological Modelling. Using R as a Simulation Platform}, publisher = {Springer}, year = {2009}, author = {Soetaert, K and Herman, P M J}, pages = {372}, note = {ISBN 978-1-4020-8623-6}, } @BOOK{Soetaertbook2, title = {Solving Differential Equations in R}, publisher = {Springer}, year = {2012}, author = {Soetaert, Karline and Cash, Jeff R and Mazzia, Francesca}, pages = {}, note = {in press}, } @BOOK{Caswell01, author = {Caswell, H}, year={2001}, title={Matrix population models: construction, analysis, and interpretation}, edition={Second edition}, publisher={Sinauer, Sunderland} } @MANUAL{R2008, title = {\proglang{R}: A Language and Environment for Statistical Computing}, author = {{R Development Core Team}}, organization = {R Foundation for Statistical Computing}, address = {Vienna, Austria}, year = {2008}, note = {{ISBN} 3-900051-07-0}, url = {http://www.R-project.org} } @inproceedings{Leisch02, author = {Friedrich Leisch}, title = {Sweave: Dynamic Generation of Statistical Reports Using Literate Data Analysis}, booktitle = {Compstat 2002 --- Proceedings in Computational Statistics}, pages = {575--580}, year = 2002, editor = {Wolfgang H{\"a}rdle and Bernd R{\"o}nz}, publisher = {Physica Verlag, Heidelberg}, note = {ISBN 3-7908-1517-9}, url = {http://www.stat.uni-muenchen.de/~leisch/Sweave} } @Manual{limSolve, title = {limSolve: Solving linear inverse models}, author = {Karline Soetaert and Van den Meersche, Karel and Dick van Oevelen}, year = {2009}, note = {R package version 1.5}, } @Manual{LIM, title = {LIM: Linear Inverse Model examples and solution methods}, author = {Karline Soetaert and Dick van Oevelen}, year = {2009}, note = {R package version 1.4}, } @Manual{diagram, title = {diagram: Functions for visualising simple graphs (networks), plotting flow diagrams}, author = {Karline Soetaert}, year = {2009}, note = {R package version 1.5}, } @Manual{ecolMod, title = {ecolMod: "A practical guide to ecological modelling - using R as a simulation platform"}, author = {Karline Soetaert and Peter MJ Herman}, year = {2009}, note = {R package version 1.3}, } @Manual{shape, title = {shape: Functions for plotting graphical shapes, colors}, author = {Karline Soetaert}, year = {2009}, note = {R package version 1.2.2}, } diagram/R/0000755000176200001440000000000013734555447012100 5ustar liggesusersdiagram/R/textmulti.R0000644000176200001440000000124411156212561014242 0ustar liggesusers ##============================================================================== # textmulti: One or several lines of text, in a multi-angular box ##============================================================================== textmulti <- function (mid, radx, rady=radx*length(lab), lwd=1, shadow.size=0.01, adj=c(0.5, 0.5), lab="", box.col="white", lcol="black", shadow.col="grey", angle=0, nr=6, ...) { shadowbox("multi", mid=mid, radx=radx, rady=rady, shadow.size=shadow.size, shadow.col=shadow.col, box.col=box.col, lcol=lcol, lwd=lwd, nr=nr, angle=angle) textplain(mid=mid, height=rady, lab=lab, adj=adj, ...) } diagram/R/coordinates.R0000644000176200001440000000331711514013704014514 0ustar liggesusers ##============================================================================== # coordinates: coordinates of components, based on number of elements per row ##============================================================================== coordinates <- function(pos=NULL, mx=0.0, my=0.0, N=length(pos), hor=TRUE, relsize=1) { if (is.null(pos)) { # positioned on a circle alpha0 <- pi/2 alpha <- alpha0 - (1:N) * 2 * pi/N xl <- cos(alpha)*0.4 + 0.5 yl <- sin(alpha)*0.4 + 0.5 elpos <- cbind(xl, yl) } else { # row- or column wise specification or fully specified nr <- length(pos) if (length(pos) != N*2) { # row- or columnwise specification dx <- 1/(max(pos)) dy <- 1/(nr) dr <- min(dx, dy) elpos <-NULL ypos <- rev(seq(dy*0.5, nr*dy, dy)) for ( i in 1:nr) { dx <- 1/(pos[i]) xpos <- dx*0.5+ seq(0, pos[i]*dx, dx) for (j in 1:pos[i]) elpos<-rbind(elpos, c(xpos[j], ypos[i])) } if (!hor) elpos <- rotatexy(elpos, angle=90, mid=c(0.5, 0.5)) } else { # full specification elpos<-pos } } usr <- par("usr") if (relsize != 1) { dx <- (usr[2]-usr[1])*(1-relsize)/2 usr[1]<- usr[1]+dx usr[2]<-usr[2]-dx dy <- (usr[4]-usr[3])*(1-relsize)/2 usr[3]<-usr[3]+dy usr[4]<-usr[4]-dy } elpos[,1] <-usr[1]+elpos[,1]*(usr[2]-usr[1]) elpos[,2] <-usr[3]+elpos[,2]*(usr[4]-usr[3]) coordinates<-elpos + matrix(nrow = nrow(elpos), ncol = 2, byrow=TRUE, data=c(mx, my)) # 2-columned matrix with coordinates (x, y) of each element } diagram/R/bentarrow.R0000644000176200001440000000206611323033767014216 0ustar liggesusers ##============================================================================== # bentarrorw: 2- segmented arrow between two points ##============================================================================== bentarrow <- function(from, to, lwd=2, lty=1, lcol="black", arr.col=lcol, arr.side=2, arr.pos=0.5, path = "H", ...) { sarr <- function(p1,p2,drawarr) { if (drawarr) m1<<-rbind(m1, straightarrow (from=p1, to=p2, arr.pos=arr.pos, lwd=lwd, lty=lty, lcol=lcol, arr.col=arr.col, ...)) else segments(p1[1], p1[2], p2[1], p2[2], lwd=lwd, lty=lty, col=lcol) } m1 <- NULL if (path == "H") { # horizontal sarr( from, c(to[1], from[2] ), 1 %in% arr.side) sarr(c(to[1], from[2] ), to , 2 %in% arr.side) } else { sarr( from, c(from[1], to[2] ), 1 %in% arr.side) sarr(c(from[1], to[2] ), to , 2 %in% arr.side) } bentarrow <- m1 # coordinates (x,y) where arrowhead is drawn } diagram/R/textellipse.R0000644000176200001440000000124611156212435014547 0ustar liggesusers ##============================================================================== # textellipse: One or several lines of text, in an ellipse ##============================================================================== textellipse <- function (mid, radx, rady=radx*length(lab), lwd=1, shadow.size=0.01, adj=c(0.5, 0.5), lab="", box.col="white", lcol="black", shadow.col="grey", angle=0, dr=0.01, ...) { shadowbox("ellipse", mid=mid, radx=radx, rady=rady, shadow.size=shadow.size, shadow.col=shadow.col, box.col=box.col, lcol=lcol, lwd=lwd, dr=dr, angle=angle) textplain(mid=mid, height=rady, lab=lab, adj=adj, ...) } diagram/R/textdiamond.R0000644000176200001440000000133111156212520014513 0ustar liggesusers ##============================================================================== # textdiamond: One or several lines of text, in a diamond ##============================================================================== textdiamond <- function (mid, radx, rady=NULL, lwd=1, shadow.size=0.01, adj=c(0.5, 0.5),lab="", box.col="white", lcol="black", shadow.col="grey", angle=0, ...) { if (is.null(rady)) { pin <- par("pin") rady <- radx*pin[1]/pin[2]* length(lab) } shadowbox("diamond", mid=mid, radx=radx, rady=rady, shadow.size=shadow.size, shadow.col=shadow.col, box.col=box.col, lcol=lcol, lwd=lwd, angle=angle) textplain(mid, rady, lab, adj, ...) } diagram/R/curvedarrow.R0000644000176200001440000000315413725650231014554 0ustar liggesusers ##============================================================================== # curvedarrow: Plot curved arrow at certain distance between two points ##============================================================================== curvedarrow <- function(from, to, lwd=2, lty=1, lcol="black", arr.col=lcol, arr.pos=0.5, curve=1, dr=0.01, endhead=FALSE, segment = c(0,1), ...) { dpos <- to-from angle <- atan(dpos[2]/dpos[1])*180/pi # angle between both if (is.nan(angle)) return() mid <- 0.5*(to+from) # midpoint of ellipsoid arrow dst <- dist(rbind(to, from)) # distance from-to ry <- curve*dst # small radius of ellepsoid aFrom<-0 # angle to and from aTo<-pi if ( from[1] <= to[1]) { aFrom <- pi aTo <- 2*pi } if (segment [1] != 0) From <- segment[1] * aTo + (1-segment[1]) * aFrom else From <- aFrom if (segment [2] != 1) To <- segment[2] * aTo + (1-segment[2]) * aFrom else To <- aTo meanpi <- arr.pos * aTo + (1-arr.pos) * aFrom if (endhead) To <- meanpi plotellipse(rx=dst/2, ry=ry, mid=mid, angle=angle, from = From, to = To, lwd=lwd, lty=lty, lcol=lcol) ell <- getellipse(rx=dst/2, ry=ry, mid=mid, angle=angle, from=1.001*meanpi, to=0.999*meanpi, dr= 0.002) #Changed from -0.002 Arrows(ell[1,1], ell[1,2], ell[nrow(ell),1], ell[nrow(ell),2], code=1, lcol=lcol, arr.col=arr.col, ...) curvedarrow <- c(ell[nrow(ell),1], ell[nrow(ell),2]) } diagram/R/textround.R0000644000176200001440000000123711156212454014242 0ustar liggesusers ##============================================================================== # textround: One or several lines of text, in a rectangle with rounded sides ##============================================================================== textround <- function (mid, radx, rady=radx*length(lab), lwd=1, shadow.size=0.01, adj=c(0.5, 0.5), lab="", box.col="white", lcol="black", shadow.col="grey", angle=0, rx=rady, ...) { shadowbox("round", mid=mid, radx=radx, rady=rady, shadow.size=shadow.size, shadow.col=shadow.col, box.col=box.col, lcol=lcol, lwd=lwd, rx=rx, angle=angle) textplain(mid, rady, lab, adj, ...) } diagram/R/plotweb.R0000644000176200001440000001470613725650226013676 0ustar liggesusers ##============================================================================== ## plotweb : plots a web ###============================================================================== plotweb <- function (flowmat, names=NULL, lab.size = 1.5, add = FALSE, fig.size = 1.3, main = "", sub = "", sub2 = "", log = FALSE, mar=c(2,2,2,2), nullflow = NULL, minflow = NULL, maxflow = NULL, legend=TRUE, leg.digit=5, leg.title=NULL, lcol= "black", arr.col= "black", val=FALSE, val.digit=5, val.size=0.6, val.col="red", val.title=NULL, val.ncol=1, budget = FALSE, bud.digit=5, bud.size=0.6, bud.title="budget", bud.ncol=1, maxarrow = 10, minarrow = 1, length=0.1, dcirc=1.2, bty = "o", ...) { ##----------------------------------------------------------------- ## constructing the names, flow matrix nm <- par("mar") if (ncol(flowmat) != nrow(flowmat)) stop("flowmat has to be square") components <- names if (is.null(components)) components <- colnames(flowmat ) if (is.null(components)) components <- rownames(flowmat ) if (is.null(components)) components <- as.character(1:ncol(flowmat)) numcomp <- length(components) ## number of food web components if (ncol(flowmat) != numcomp) stop("flowmat and names not compatible") if (length(arr.col) ==1) arr.col <- matrix(nrow=numcomp, ncol=numcomp, arr.col) flowmatrix <- flowmat if (!is.null(nullflow )) { flowmatrix[flowmatrixnullflow[2] ] <- 0 } zero <- 0 if (log) { flowmatrix <- log10(flowmatrix +1e-20) flowmatrix[flowmatrix==-20]<-0 } if (is.null(maxflow)) maxflow <- max(flowmatrix) else if (log) maxflow <- log10(maxflow) if (is.null(minflow)) minflow <- min(flowmatrix[flowmatrix != zero]) else if (log) minflow <- log10(minflow) ##----------------------------------------------------------------- ## new empty plot if (! add) { figlim <- c(-fig.size, fig.size) marg <- par("mar") # if values written:shift left if (val) mar <- mar + c(0,-2,0,2) mar <- pmax(mar,0) # was: ifelse(val, mar <- c(1, 0, 1, 2), mar<-c(1, 1, 1, 1)) par(mar=mar) plot(c(0, 0), type = "n", ylab = "", asp = 1, xaxt = "n", yaxt = "n", frame.plot = FALSE, xlim = figlim, ylim = figlim, main=main, xlab="") mtext(side=3, line=-1, sub) mtext(side=1, adj=0.5, text=sub2) } ##----------------------------------------------------------------- ## component labels positioned on a circle alpha0 <- pi/2 alpha <- alpha0 - (1:numcomp) * 2 * pi/numcomp # all angles xl <- cos(alpha) # all x-positions yl <- sin(alpha) # all y-positions # adjust depending on for (i in 1:numcomp) { # write labels if ( xl[i] > 0 ) adjustx = 0 # text adjustments if ( xl[i] < 0 ) adjustx = 1 if (abs(xl[i]) < 0.0001) adjustx = 0.5 if ( yl[i] > 0 ) adjusty = 0 if ( yl[i] < 0 ) adjusty = 1 if (abs(yl[i]) < 0.0001) adjusty = 0.5 text(xl[i], yl[i], components[i], adj =c(adjustx, adjusty), cex = par("cex") * lab.size) } ##----------------------------------------------------------------- ## arrows representing the flows circle <- function (i, lwd, col) { # circular arrow cx <- xl[i]*dcirc cy <- yl[i]*dcirc r <- 0.1 # radius x <-c(seq(-pi, pi, by=0.01), pi) # adding the last element ensures circle is closed lines(cx+r*sin(x), cy+r*cos(x), lwd=lwd, col=col) } par(lend=1) darrow <- (maxarrow-minarrow)/(maxflow-minflow) dr <- 0.02 xi <- xl-dr* cos(alpha) # arrow positions: shifted relative to labels yi <- yl-dr* sin(alpha) iflow <- 1 offset <- 1 ltext <- NULL for (i in 1:numcomp) { x2 <- xi[i] y2 <- yi[i] for (j in 1:i) { if (flowmatrix[i, j] >zero | flowmatrix[j, i] >zero) { Arr.col <- arr.col[i,j] x1 <- xi[j] y1 <- yi[j] dx <- x2-x1 dy <- y2-y1 ifelse (i == j, fsize<-flowmatrix[i, j], fsize<-flowmatrix[i, j]-flowmatrix[j, i]) if (fsize>0) { code <- 1 } else { code<-2 Arr.col <- arr.col[j,i] } size <- minarrow + darrow * (abs(fsize)-minflow) # arrow thickness if (i != j) arrows (x1+dr*dx, y1+dr*dy, x2-dr*dx, y2-dr*dy, length=length, code=code, lwd=size, col=Arr.col, ...) if (i == j) circle (i, lwd=size, col=Arr.col) if (val) { text(x=(x1+x2)*0.5, y=(y1+y2)*0.5, labels=iflow, offset=offset, col=val.col) ltext<- c(ltext, paste(iflow, ":", format.pval(abs(fsize), val.digit))) } iflow <- iflow+1 } # end flowmatrix>zero } # end j } # end i ##----------------------------------------------------------------- ## legends if (legend) { sizeleg = par("cex") * lab.size ## size of largest and smallest arrows if (!log) { tmax <- maxflow tmin <- minflow title=leg.title } else { tmax <- 10^maxflow tmin <- 10^minflow title=paste("logarithmic scale", leg.title) } legend("bottomright", legend=c(format.pval(tmax, leg.digit), format.pval(tmin, leg.digit)), cex=sizeleg, title=title, lwd=c(maxarrow, minarrow), bty=bty) } if (!val & !budget) return() if (! add) { par(mar=c(0, 0, 0, 0)) par(new=TRUE) plot(c(0, 0), type = "n", ylab = "", xaxt = "n", yaxt = "n", frame.plot = FALSE, main="", xlab="") } if (val) legend("topright", legend=ltext, cex=val.size, title=val.title, ncol=val.ncol, bty=bty) if (budget) { rate <- NULL # sum all flows in - sum of flow out for (i in 1:numcomp) rate <- c(rate, paste(components[i], ":", format.pval(sum(flowmat[, i])-sum(flowmat[i, ]), bud.digit))) legend("topleft", legend=rate, cex=bud.size, title=bud.title, ncol=bud.ncol, bty=bty) } par("mar"=nm) } diagram/R/selfarrow.R0000644000176200001440000000227511156212220014204 0ustar liggesusers ##============================================================================== # selfarrow: Plot circular arrow pointing at one point ##============================================================================== selfarrow <- function(pos, lwd=2, lty=1, lcol="black", arr.pos=0.5, path="L", curve=c(0.1,0.1), dr=0.01, code=1, ...) { if (length(curve)==1) curve <- c(curve, curve) mid <- pos if (path == "L") mid[1] <- mid[1] -curve[1] # left shift if (path == "R") mid[1] <- mid[1] +curve[1] # right shift if (path == "U") mid[2] <- mid[2] +curve[2] # up shift if (path == "D") mid[2] <- mid[2] -curve[2] # down shift aFrom <- 0 aTo <- 2*pi # angle to and from meanpi <- arr.pos * aTo + (1-arr.pos) * aFrom # pos of arrow plotellipse(rx=curve[1], ry=curve[2], mid=mid, from=aFrom, to=aTo, lwd=lwd, lty=lty, lcol=lcol) ell <- getellipse(rx=curve[1], ry=curve[2], mid=mid, from=1.001*meanpi, to=0.999*meanpi, dr=-0.002) Arrows(ell[1,1], ell[1,2], ell[nrow(ell),1], ell[nrow(ell),2], code=code, lcol=lcol, ...) selfarrow <- c(ell[nrow(ell),1], ell[nrow(ell),2]) } diagram/R/openplotmat.R0000644000176200001440000000046611156212121014542 0ustar liggesusers ##============================================================================== # openplotmat: opens a plot, ready to plot diagrams or transition matrices ##============================================================================== openplotmat <- function(asp=NA,...) emptyplot(asp=asp, ...) diagram/R/segmentarrow.R0000644000176200001440000000314111323034032014705 0ustar liggesusers ##============================================================================== # segmentarrorw: 3 segmented arrow between two points (left-vertical-right) ##============================================================================== segmentarrow <- function(from, to, lwd=2, lty=1, lcol="black", arr.col=lcol, arr.side=2, arr.pos=0.5, path = "LVR", dd=0.5, ...) { sarr <- function(p1, p2, drawarr) { if (drawarr) m1<<-rbind(m1, straightarrow (from=p1, to=p2, arr.pos=arr.pos, lwd=lwd, lty=lty, lcol=lcol, arr.col=arr.col,...)) else segments(p1[1], p1[2], p2[1], p2[2], lwd=lwd, lty=lty, col=lcol) } m1 <- NULL if (is.null(path)) path <- ifelse (from[1]==to[1], "LVR", "UHD") if (path == "LVR") {dx <- -dd; dy <- 0} # left vertical right if (path == "RVL") {dx <- dd; dy <- 0} # right vertical left if (path == "UHD") {dx <- 0 ; dy <- dd} # up horizontal down if (path == "DHU") {dx <- 0 ; dy <- -dd} # down horizontal up if (path %in% c("LVR", "RVL")) { sarr( from, c(from[1]+dx, from[2] ), 1 %in% arr.side) sarr(c(from[1]+dx, from[2] ), c(from[1]+dx, to[2]+dy) , 2 %in% arr.side) sarr(c(from[1]+dx, to[2]+dy) , to , 3 %in% arr.side) } else { sarr( from, c(from[1] , from[2]+dy), 1 %in% arr.side) sarr(c(from[1] , from[2]+dy),c(to[1] , from[2]+dy), 2 %in% arr.side) sarr(c(to[1] , from[2]+dy), to , 3 %in% arr.side) } segmentarrow <- m1 # coordinates (x,y) where arrowhead is drawn } diagram/R/textrect.R0000644000176200001440000000206211532734206014047 0ustar liggesusers ##============================================================================== # textrect: One or several lines of text, in a rectangle ##============================================================================== textrect <- function (mid, radx, rady=radx*length(lab), lwd=1, shadow.size=0.01, adj=c(0.5, 0.5), lab="", box.col="white", lcol="black", shadow.col="grey", angle=0, ...) { shadowbox("rect", mid=mid, radx=radx, rady=rady, shadow.size=shadow.size, shadow.col=shadow.col, box.col=box.col, lcol=lcol, lwd=lwd, angle=angle) textplain(mid, rady, lab, adj, ...) } textparallel <- function (mid, radx, rady=radx*length(lab), lwd=1, shadow.size=0.01, adj=c(0.5, 0.5), lab="", box.col="white", lcol="black", shadow.col="grey", angle=0, theta = 90, ...) { shadowbox("parallel", mid=mid, radx=radx, rady=rady, shadow.size=shadow.size, shadow.col=shadow.col, box.col=box.col, lcol=lcol, lwd=lwd, angle=angle, theta = theta) textplain(mid, rady, lab, adj, ...) } diagram/R/straightarrow.R0000644000176200001440000000177611323032711015106 0ustar liggesusers ##============================================================================== # straightarrow: Plot straight arrow at certain distance between two points ##============================================================================== straightarrow <- function(from, to, lwd=2, lty=1, lcol="black", arr.col=lcol, arr.pos=0.5, endhead=FALSE, segment = c(0,1), ...) { if (segment [1] != 0) From <- segment[1] * to + (1-segment[1]) * from else From <- from if (segment [2] != 1) To <- segment[2] * to + (1-segment[2]) * from else To <- to meanpi <- arr.pos*To+(1-arr.pos)*From if (endhead) To <- meanpi segments(From[1], From[2], To[1], To[2], lwd=lwd, lty=lty, col=lcol) mid2 <- c((arr.pos-0.01)*to+(1-arr.pos+0.01)*from) mid1 <- c((arr.pos )*to+(1-arr.pos )*from) Arrows(mid2[1], mid2[2], mid1[1], mid1[2], lcol=lcol, arr.col=arr.col, ...) straightarrow <- mid1 # coordinates (x,y) where arrowhead is drawn } diagram/R/shadowbox.R0000644000176200001440000000766311544571014014216 0ustar liggesusers ##============================================================================== # shadowbox: Boxes with shadow ##============================================================================== shadowbox <- function (box.type = "rect", mid, radx, rady=radx, shadow.size=0.01, shadow.col="grey", box.col="white", lcol="black", lwd=1, dr=0.01, angle=0, len=1, nr=5, rx=rady, theta = 90, ...) { pin <- par ("pin") # size of plotting region, inches dd <- c(shadow.size, -shadow.size*pin[1]/pin[2]) # scaled size of shadow if (box.type %in% c("rect", "square")) { xy <- cbind(c(mid[1]-radx, mid[1]-radx, mid[1]+radx, mid[1]+radx), c(mid[2]-rady, mid[2]+rady, mid[2]+rady, mid[2]-rady)) xyshad <- xy + matrix(nrow = 4, ncol = 2, byrow=TRUE, data=c(dd[1], dd[2])) if (angle != 0) { xy <- rotatexy (xy, angle) xyshad <-rotatexy(xyshad, angle) } if (shadow.size>0) polygon(xyshad[, 1], xyshad[, 2], border=NA, col=shadow.col) polygon(xy[, 1], xy[, 2], lwd=lwd, col=box.col, border=lcol, ...) } else if (box.type %in% c("ellipse", "circle")) { if (shadow.size>0) filledellipse(mid=mid+dd, rx1=radx, ry1=rady, col=shadow.col, dr=dr, angle=angle) filledellipse(mid=mid, rx1=radx, ry1=rady, col=box.col, dr=dr, lwd=lwd, lcol=lcol, angle=angle, ...) } else if (box.type == "round") { if (shadow.size>0) roundrect(mid+dd, radx, rady, col=shadow.col, lcol=NA, dr=dr, rx=rx, angle=angle) roundrect(mid, radx, rady, lwd=lwd, col=box.col, lcol=lcol, rx=rx, angle=angle, ...) } else if (box.type =="diamond") { xx <- c(mid[1]-radx, mid[1], mid[1]+radx, mid[1]) yy <- c(mid[2], mid[2]+rady, mid[2], mid[2]-rady) xy <- cbind(xx, yy) xyshad <- cbind(xx+dd[1], yy+dd[2]) if (angle != 0) { xy <- rotatexy (xy, angle) xyshad <-rotatexy(xyshad, angle) } if (shadow.size>0) polygon(xyshad[, 1], xyshad[, 2], border=NA, col=shadow.col) polygon(xy[, 1], xy[, 2], lwd=lwd, col=box.col, border=lcol, ...) } else if (box.type == "cylinder") { if (shadow.size>0) filledcylinder(mid=mid+dd, rx=radx, ry=rady, len=len, col=shadow.col, dr=dr, angle=angle) filledcylinder(mid=mid, rx=radx, ry=rady, len=len, col=box.col, dr=dr, lcol=lcol, lwd=lwd, angle=angle, ...) } else if (box.type== "hexa") { if (shadow.size>0) filledmultigonal(mid=mid+dd, rx=radx, ry=rady, col=shadow.col, nr=6, angle=angle) filledmultigonal(mid=mid, rx=radx, ry=rady, col=box.col, lwd=lwd, nr=6, lcol=lcol, angle=angle, ...) } else if (box.type== "multi") { if (shadow.size>0) filledmultigonal(mid=mid+dd, rx=radx, ry=rady, col=shadow.col, nr=nr, angle=angle) filledmultigonal(mid=mid, rx=radx, ry=rady, col=box.col, lwd=lwd, nr=nr, lcol=lcol, angle=angle, ...) } else if (box.type == "parallel") { # center box object shift <- 0.5*2*rady/tan(theta*pi/180) xy <- cbind(c(mid[1] - radx - shift, mid[1] - radx - shift + 2*rady/tan(theta*pi/180), mid[1] + radx - shift + 2*rady/tan(theta*pi/180), mid[1] + radx - shift), c(mid[2] - rady, mid[2] + rady, mid[2] + rady, mid[2] - rady)) xyshad <- xy + matrix(nrow = 4, ncol = 2, byrow = TRUE, data = c(dd[1], dd[2])) if (angle != 0) { xy <- rotatexy(xy, angle) xyshad <- rotatexy(xyshad, angle) } if (shadow.size > 0) polygon(xyshad[, 1], xyshad[, 2], border = NA, col = shadow.col) polygon(xy[, 1], xy[, 2], lwd = lwd, col = box.col, border = lcol, ...) } #else box.type=="none" } diagram/R/circuitplot.r0000644000176200001440000001357613727671373014637 0ustar liggesusers## ============================================================================= ## Functions for drawing circuit elements ## ============================================================================= tpos <- function(mid, pos, dtext = 0.2) { pp <- mid dtext.x <- dtext.y <- dtext # change for nonsymmetric plots adj <- c(0.5, 0.5) if (pos == 0) { pp <- mid adj <- c(0.5, 0.5) } else if (pos == 1) { pp <- mid - c(0, dtext) adj <- c(0.5, 0) } else if (pos == 1.5) { pp <- mid - c(dtext, dtext/2) adj <- c(0, 1) } else if (pos == 2) { pp <- mid - c(dtext.x, 0) adj <- c(0, 0.5) }else if (pos == 2.5) { pp <- mid + c(-dtext.x, dtext.y/2) adj <- c(0, 0) } else if (pos == 3) { pp <- mid + c(0, dtext.y) adj <- c(0.5, 1) }else if (pos == 3.5) { pp <- mid + c(dtext.x, dtext.y/2) adj <- c(1, 0) } else if (pos == 4) { pp <- mid + c(dtext.x, 0) adj <- c(1, 0.5) }else if (pos == 4.5) { pp <- mid + c(dtext.x, -dtext.y/2) adj <- c(1, 1) } list (x = pp[1], y = pp[2], adj = adj) } # end of tpos ## ----------------------------------------------------------------------------- en.Resistor <- function (mid, width = 0.05, # the width of the resistor length = 0.1, # the length of the resistor lab = NULL, # the label pos = 0, # relative position (shift) dtext = 0., # shift in x-y- coordinates for text vert = TRUE, ...) { if ( vert) rect(mid[1] - width/2, mid[2] - length/2, mid[1] + width/2, mid[2] + length/2, col = "white") else rect(mid[1] - length/2, mid[2] - width/2, mid[1] + length/2, mid[2] + width/2, col = "white") if (! is.null(lab)) { pp <- tpos(mid, pos, dtext = dtext) text(pp$x, pp$y, lab = lab, adj = pp$adj, ...) } } ## ----------------------------------------------------------------------------- en.Capacitator <- function (mid, width = 0.025, length = 0.1, lab = NULL, pos = 2.5, dtext = 0.04, vert = TRUE, ...) { if (! vert) { rect(mid[1] - width/2, mid[2] - length/2, mid[1] + width/2, mid[2] + length/2, col = "white", border = NA) segments(mid[1] - width/2, mid[2] - length/2, mid[1] - width/2, mid[2] + length/2, lwd = 2) segments(mid[1] + width/2, mid[2] - length/2, mid[1] + width/2, mid[2] + length/2, lwd = 2) } else { rect(mid[1] - length/2, mid[2] - width/2, mid[1] + length/2, mid[2] + width/2, col = "white", border = NA) segments(mid[1] - length/2, mid[2] - width/2, mid[1] + length/2, mid[2] - width/2, lwd = 2) segments(mid[1] - length/2, mid[2] + width/2, mid[1] + length/2, mid[2] + width/2, lwd = 2) } if (! is.null(lab)) { pp <- tpos(mid, pos, dtext = dtext) text(pp$x, pp$y, lab = lab, adj = pp$adj, ...) } } ## ----------------------------------------------------------------------------- en.Node <- function (mid, cex = 1, lab = NULL, pos = 2.5, dtext = 0.025, ...) { points(mid[1], mid[2], cex = cex, pch = 16, ...) if (! is.null(lab)) { pp <- tpos(mid, pos, dtext = dtext) text(pp$x, pp$y, lab = lab, adj = pp$adj, ...) } } ## ----------------------------------------------------------------------------- en.Amplifier <- function (mid, r = 0.05, lab = NULL, pos = 0, dtext = 0, ...) { plotcircle(mid = mid, r = r) segments(mid[1], mid[2] - r/2, mid[1], mid[2] + r/2) if (! is.null(lab)) { pp <- tpos(mid, pos, dtext = dtext) text(pp$x, pp$y, lab, cex = pp$adj, ...) } } ## ----------------------------------------------------------------------------- en.Transistor <- function (mid, gate, drain, source, r = 0.05, lab = NULL, pos = 0, dtext = 0, ...) { segments(gate[1], gate[2], mid[1], mid[2]) segments(drain[1], drain[2], mid[1], mid[2]) segments(source[1], source[2], mid[1], mid[2]) en.Amplifier(mid=mid, r = r, lab = lab, pos = pos, dtext = dtext) } ## ----------------------------------------------------------------------------- en.Signal <- function (mid, r = 0.03, lab = NULL, pos = 0, dtext = 0.025, ...) { user <- par("usr") pin <- par("pin") sy <- user[4] - user[3] sx <- user[2] - user[1] ry <- r * sy/sx * pin[1]/pin[2] textellipse (mid=mid, radx = r, rady = ry, lab = "") if (! is.null(lab)) { pp <- tpos(mid, pos, dtext = dtext) text(pp$x, pp$y,lab, adj = pp$adj...) } } ## ----------------------------------------------------------------------------- en.Ground <- function (mid, width = 0.075, length = 0.1, n = 4, dx = 0.2, ...) { pp <- mid[2] - length/(n+1) segments(mid[1], mid[2], mid[1], pp) for (i in 1:n) { ww <- width/2 * (1-(i-1) * dx) segments(mid[1] - ww, pp, mid[1] + ww, pp) pp <- pp - length/(n+1) } } enResistor <- function (...) en.Resistor(...) diagram/R/textempty.R0000644000176200001440000000130611156212414014242 0ustar liggesusers ##============================================================================== # textempty: One or several lines of text, background colored, no box ##============================================================================== textempty <- function (mid, lab="", adj=c(0.5, 0.5), box.col="white", cex=1, ...) { text.width <- max(strwidth(lab, units = "user", cex = cex)) text.height <- strheight(lab, units = "user", cex = cex) rect(mid[1]-text.width*adj[1], mid[2]-text.height*adj[2], mid[1]+text.width*(1-adj[1]), mid[2]+text.height*(1-adj[2]), col=box.col, border=NA) textplain(mid=mid, height=text.height, lab=lab, adj=adj, cex=cex, ...) } diagram/R/textplain.R0000644000176200001440000000103511156212347014213 0ustar liggesusers ##============================================================================== # textplain: One or several lines of text, no box ##============================================================================== textplain <- function (mid, height=0.1, lab="", adj=c(0.5, 0.5), ...) { if (length (lab) == 1) text(mid[1], mid[2], lab, adj=adj, ...) else { y1 <- mid[2]+height ddy <- 2*height/(length(lab)+1) for (i in 1:length(lab)) text(mid[1], y1-ddy*i, lab[i], adj=adj, ...) } } diagram/R/splitarrow.R0000644000176200001440000000202111323033670014401 0ustar liggesusers ##============================================================================== # splitarrow: segmented arrow between several points ##============================================================================== splitarrow <- function(from, to, lwd=2, lty=1, lcol="black", arr.col=lcol, arr.side=2, arr.pos=0.5, centre=NULL, dd=0.5, ...) { sarr <- function(p1, p2, drawarr) { if (drawarr) m1<<-rbind(m1, straightarrow (from=p1, to=p2, arr.pos=arr.pos, lwd=lwd, lty=lty, lcol=lcol, arr.col=arr.col, ...)) else segments(p1[1], p1[2], p2[1], p2[2], lwd=lwd, lty=lty, col=lcol) } m1 <- NULL From <- matrix(ncol=2, data=from) To <- matrix(ncol=2, data=to ) meanFrom <- colMeans(From) meanTo <- colMeans(To) if (is.null(centre)) centre <- meanFrom+ dd*(meanTo-meanFrom) for (i in 1:nrow(From)) sarr(From[i, ], centre, 1 %in% arr.side) for (i in 1:nrow(To)) sarr(centre, To[i, ] , 2 %in% arr.side) splitarrow <- m1 } diagram/R/treearrow.R0000644000176200001440000000330011323033631014203 0ustar liggesusers ##============================================================================== # treearrow: segmented arrow between several points ##============================================================================== treearrow <- function(from, to, lwd=2, lty=1, lcol="black", arr.col=lcol, arr.side=2, arr.pos=0.5, line.pos=0.5, path = "H", ...) { sarr <- function(p1, p2, drawarr) { if (drawarr) m1<<-rbind(m1, straightarrow (from=p1, to=p2, arr.pos=arr.pos, lwd=lwd, lty=lty, lcol=lcol, arr.col=arr.col, ...)) else segments(p1[1], p1[2], p2[1], p2[2], lwd=lwd, lty=lty, col=lcol) } From <- matrix(ncol=2, data=from) To <- matrix(ncol=2, data=to ) m1 <- NULL ifelse (path == "H", ii <- 2, ii<-1) rF <- range(From[, ii]) rT <- range(To[, ii]) ifelse (abs(min(rF)-max(rT)) <= abs(max(rF)-min(rT)), m2 <- min(rF) + line.pos * (max(rT) - min(rF)), m2 <- max(rF) + line.pos * (max(rF) - min(rT)) ) if (path == "H") { # horizontal Line <- range(c(From[, 1], To[, 1])) segments(Line[1], m2, Line[2], m2, lwd=lwd, lty=lty, col=lcol) for (i in 1:nrow(From)) sarr(From[i,], c(From[i,1], m2), 1 %in% arr.side) for (i in 1:nrow(To) ) sarr(c(To [i,1], m2), To[i,] , 2 %in% arr.side) } else { # vertical Line <- range(c(From[,2], To[,2])) segments(m2, Line[1], m2, Line[2], lwd=lwd, lty=lty, col=lcol) for (i in 1:nrow(From)) sarr(From[i,], c(m2,From[i,2]), 1 %in% arr.side) for (i in 1:nrow(To) ) sarr(c(m2, To [i,2]), To[i,] , 2 %in% arr.side) } treearrow <- m1 # coordinates (x,y) where arrowhead is drawn } diagram/R/texthexa.R0000644000176200001440000000121711156212537014040 0ustar liggesusers ##============================================================================== # texthexa: One or several lines of text, in a hexa thingie ##============================================================================== texthexa <- function (mid, radx, rady=radx*length(lab), lwd=1, shadow.size=0.01, adj=c(0.5, 0.5), lab="", box.col="white", lcol="black", shadow.col="grey", angle=0, ...) { shadowbox("hexa", mid=mid, radx=radx, rady=rady, shadow.size=shadow.size, shadow.col=shadow.col, box.col=box.col, lcol=lcol, lwd=lwd, angle=angle) textplain(mid=mid, height=rady, lab=lab, adj=adj, ...) } diagram/R/plotmat.R0000644000176200001440000002635013725652540013701 0ustar liggesusers ##============================================================================== # plotmat: plots transition matrices ##============================================================================== plotmat <- function(A, pos=NULL, curve=NULL, name=NULL, absent=0, relsize=1, lwd=2, lcol="black", box.size=0.1, box.type ="circle", box.prop =1, box.col="white", box.lcol=lcol, box.lwd=lwd, shadow.size = 0.01, shadow.col="grey", dr=0.01, dtext= 0.3, self.lwd=1, self.cex=1, self.shiftx=box.size, self.shifty=NULL, self.arrpos=NULL, arr.lwd=lwd, arr.lcol=lcol, arr.tcol = lcol, arr.col="black", arr.type="curved", arr.pos=0.5, arr.length=0.4, arr.width=arr.length/2, endhead=FALSE, mx=0.0, my=0.0, box.cex=1, txt.col = "black",txt.xadj=0.5,txt.yadj=0.5, txt.font=1, prefix="", cex = 1, cex.txt=cex, add = FALSE, main="", cex.main = cex, segment.from = 0, segment.to = 1, latex = FALSE, ...) { Parse <- function(x, ...) if (! latex) parse(text = x, ...) else x Rep <- function (x, ...) if (is.null(x)) x else rep(x, ...) ncomp <- nrow(A) if (is.null(name)) name <- rownames(A) if (is.null(name)) name <- colnames(A) if (is.null(name)) name <- 1:max(dim(A)) # remove column names and row names if (is.matrix(A)) A <- matrix(nrow=nrow(A), ncol=ncol(A), data=A) if (length (box.size) < ncomp) box.size <- Rep(box.size, length.out=ncomp) if (length (box.prop) < ncomp) box.prop <- Rep(box.prop, length.out=ncomp) if (length (box.type) < ncomp) box.type <- Rep(box.type, length.out=ncomp) if (length (box.col) < ncomp) box.col <- Rep(box.col , length.out=ncomp) if (length (box.lcol) < ncomp) box.lcol <- Rep(box.lcol, length.out=ncomp) if (length (box.cex) < ncomp) box.cex <- Rep(box.cex , length.out=ncomp) if (length (box.lwd) < ncomp) box.lwd <- Rep(box.lwd , length.out=ncomp) if (length (txt.col) < ncomp) txt.col <- Rep(txt.col , length.out=ncomp) if (length (txt.xadj) < ncomp) txt.xadj <- Rep(txt.xadj, length.out=ncomp) if (length (txt.yadj) < ncomp) txt.yadj <- Rep(txt.yadj, length.out=ncomp) if (length (txt.font) < ncomp) txt.font <- Rep(txt.font, length.out=ncomp) if (length (shadow.size) < ncomp) shadow.size <- Rep(shadow.size, length.out=ncomp) if (length (shadow.col) < ncomp) shadow.col <- Rep(shadow.col , length.out=ncomp) selflwd <- self.lwd selfcex <- self.cex selfarrpos <- self.arrpos if (length (selfarrpos) < ncomp) selfarrpos<- Rep(selfarrpos, length.out=ncomp) if (length (selflwd) < ncomp) selflwd<- Rep(selflwd, length.out=ncomp) if (length (selfcex) < ncomp) selfcex<- Rep(selfcex, length.out=ncomp) if (length (self.shiftx) < ncomp) self.shiftx<- Rep(self.shiftx, length.out=ncomp) if (is.null(self.shifty)) self.shifty <- self.shiftx*box.prop if (length(self.shifty) < ncomp) self.shifty<- Rep(self.shifty, length.out=ncomp) if (is.null(curve)) curve <- NA if (length(curve)==1) curve <- matrix(nrow=ncomp, ncol=ncomp, curve) if (length(arr.pos)==1) arr.pos <- matrix(nrow=ncomp, ncol=ncomp, arr.pos) arrwidth <- arr.width # can be a matrix... arrlength <- arr.length arrlwd <- arr.lwd arrlcol <- arr.lcol arrtcol <- arr.tcol arrcol <- arr.col arrtype <- arr.type cextxt <- cex.txt if (length(arrwidth) ==1) arrwidth <- matrix(nrow=ncomp, ncol=ncomp, arrwidth) if (length(arrlength)==1) arrlength <- matrix(nrow=ncomp, ncol=ncomp, arrlength) if (length(arrlwd) ==1) arrlwd <- matrix(nrow=ncomp, ncol=ncomp, arrlwd) if (length(arrlcol) ==1) arrlcol <- matrix(nrow=ncomp, ncol=ncomp, arrlcol) if (length(arrtcol) ==1) arrtcol <- matrix(nrow=ncomp, ncol=ncomp, arrtcol) if (length(arrcol) ==1) arrcol <- matrix(nrow=ncomp, ncol=ncomp, arrcol) if (length(arrtype) ==1) arrtype <- matrix(nrow=ncomp, ncol=ncomp, arrtype) if (length(cextxt) ==1) cextxt <- matrix(nrow=ncomp, ncol=ncomp, cextxt) if (length(segment.from ) ==1) seg.from <- matrix(nrow=ncomp, ncol=ncomp, segment.from) if (length(segment.to ) ==1) seg.to <- matrix(nrow=ncomp, ncol=ncomp, segment.to) xlim <- c(0, 1) if (relsize != 1) { xx <- 1/relsize - 1 xlim <- c(-xx, 1+xx) } if (!add) openplotmat(main=main, xlim=xlim, ylim=xlim, cex.main=cex.main) # coordinates of boxes elpos <- coordinates(pos, mx, my, ncomp, relsize=relsize) if (nrow(elpos) != ncomp) stop ("element position and coefficient matrix not compatible") pin <- par ("pin") # size of plotting region, inches # maximal radius of box (circle, rectangele, ...) rad <- max(box.size) # relative size of circle drad <- rad*dtext rad2 <- rad*pin[1]/pin[2] # rad2 to make circles round AA<-NULL RR<-NULL DD<-NULL GG<-NULL TT<-NULL # output matrices ## ARROWS between boxes: all elements in A not equal to 'absent' nonzero <- which (A != absent, arr.ind=TRUE) if (length(nonzero)>0) { for (i in 1:nrow(nonzero)) { ii <- nonzero[i, ] arrpos <- arr.pos[ii[1], ii[2]] arr.width <- arrwidth[ii[1], ii[2]] arr.length <- arrlength[ii[1], ii[2]] arr.lwd <- arrlwd[ii[1], ii[2]] arr.lcol <- arrlcol[ii[1], ii[2]] arr.col <- arrcol[ii[1], ii[2]] arr.tcol <- arrtcol[ii[1], ii[2]] arr.type <- arrtype[ii[1], ii[2]] cex.txt <- cextxt[ii[1], ii[2]] segment <- c(seg.from[ii[1], ii[2]],seg.to[ii[1], ii[2]]) pos1 <- elpos[ii[1], ] # pos to pos2 <- elpos[ii[2], ] # pos from dpos <- pos1-pos2 angle <- atan(dpos[2]/dpos[1])*180/pi # angle between both txt <- paste(prefix, A[ii[1], ii[2]], sep="") # text to write AA <- c(AA, angle) mid <- 0.5*(pos1+pos2) # midpoint of ellipsoid arrow if (is.nan(angle)) { # pos1=pos2: self arrow rx <- rad*self.cex ry <- rad2*self.cex shiftx <- self.shiftx[ii[1]] shifty <- self.shifty[ii[1]]*pin[1]/pin[2] self.lwd <- selflwd[ii[1]] self.cex <- selfcex[ii[1]] self.arrpos <- selfarrpos[ii[1]] mid <- mid+c(shiftx, shifty) if (is.null(self.arrpos)) { ifelse (shiftx < 0, meanpi <-3*pi/2, meanpi <-pi/2) } else meanpi <- self.arrpos plotellipse(rx=rx, ry=ry, mid=mid, from=0, to=2*pi, lwd=self.lwd, dr=dr, lcol=arr.lcol) ell <- getellipse(rx=ry, ry=ry, mid=mid, from=1.01*meanpi, to=0.99*meanpi, dr=-0.002) Arrows(ell[1,1], ell[1,2], ell[nrow(ell),1], ell[nrow(ell),2], arr.col=arr.col, lcol=arr.lcol, arr.length=arr.length*0.5, arr.width=arr.width, lwd=arr.lwd, arr.type=arr.type) DD <- rbind(DD, c(ell[nrow(ell), 1], ell[nrow(ell), 2])) if(cex.txt>0 && txt!= "") text(mid[1], mid[2], Parse(txt), adj=c(0.5, 0.5), cex=cex.txt, col=arr.tcol) TT <- rbind(TT, c(mid[1], mid[2], 0.5, 0.5)) cycle } else { # arrow between different components dst <- dist(rbind(pos1, pos2)) ry <- curve[ii[1], ii[2]]*dst if (is.na(ry)) ry<-rad*dst ifelse (angle<0, xadj <- 0, xadj <-1) ifelse (angle<0, yadj <- 0, yadj <-0.5) if (angle == 0) { xadj= 0.5 yadj=0 } adj <- c(xadj, yadj) if (ry==0) { # straight line mid1<-straightarrow (from=pos2, to=pos1, lwd=arr.lwd, arr.type=arr.type, arr.length=arr.length, arr.pos=arrpos, arr.width=arr.width, arr.col=arr.col, lcol=arr.lcol, endhead=endhead, segment = segment) DD <- rbind(DD, mid1) if (angle>0) adj=c(0, 1) mpos <- mid1- (adj-0.5)* drad if(cex.txt>0&& txt!= "") text(mpos[1], mpos[2], Parse(txt), adj=adj, cex=cex.txt, col=arr.tcol) TT <- rbind(TT, c(mpos[1], mpos[2], adj)) } else { # curved line from <- 0 to <- pi if (pos2[1]==pos1[1] & pos2[2]>pos1[2]) adj <- c(1 , 1) if (pos2[1]==pos1[1] & pos2[2]=0) adj <- c(0 , 1) if (pos2[1] < pos1[1] & angle<0) adj <- c(1 , 0) if (segment [1] != 0) From <- segment[1] * to + (1-segment[1]) * from else From <- from if (segment [2] != 1) To <- segment[2] * to + (1-segment[2]) * from else To <- to meanpi <- arrpos * to+ (1-arrpos) * from if (endhead) To<-meanpi plotellipse(rx=dst/2, ry=ry, mid=mid, angle=angle, from=From, to=To, lwd=arr.lwd, dr=dr, lcol=arr.lcol) ell <- getellipse(rx=dst/2, ry=ry, mid=mid, angle=angle, from=1.001*meanpi, to=0.999*meanpi, dr=-0.002) Arrows(ell[1,1], ell[1,2], ell[nrow(ell),1], ell[nrow(ell),2], arr.col=arr.col,lcol=arr.lcol, code=1, arr.length=arr.length, arr.width=arr.width, lwd=arr.lwd, arr.type=arr.type) DD <- rbind(DD, c(ell[nrow(ell),1], ell[nrow(ell),2])) ell <- getellipse(rx=dst/2, ry=ry+drad, mid=mid, angle=angle, from=meanpi, to=meanpi) if(cex.txt>0 && txt!= "") text(ell[1,1], ell[1,2], Parse(txt), adj=adj, cex=cex.txt, col=arr.tcol) TT <- rbind(TT, c(ell[1, 1], ell[1, 2], adj)) } } # end i GG <- c (GG, txt) RR <- c (RR, ry)} } # end length (nonzero) ## BOXES radii <- NULL for (i in 1:nrow(A)) { p <- elpos[i, ] # radius of box (circle) rad <- box.size[i] # relative size of circle rad2 <- rad*pin[1]/pin[2]*box.prop[i] # used to make circles round radii <- rbind(radii, c(rad, rad2)) shadowbox(box.type=box.type[i], mid=p, radx=rad, rady=rad2, lcol=box.lcol[i], lwd=box.lwd[i], shadow.size=shadow.size[i], shadow.col=shadow.col[i], box.col=box.col[i], dr=dr, ...) textplain(mid=p, height=rad2, lab=name[i], cex=box.cex[i], col=txt.col[i], adj = c(txt.xadj[i], txt.yadj[i]), font = txt.font[i]) } # end i rect <- cbind(elpos-radii, elpos+radii) colnames(elpos) <- colnames(radii) <- c("x", "y") colnames(rect) <- c("xleft", "ybot", "xright", "ytop") plotmat <-list (arr=data.frame(nonzero, Angle=AA, Value=GG, rad=RR, ArrowX=DD[,1], ArrowY=DD[,2], TextX=TT[,1], TextY=TT[,2]), comp=elpos, radii=radii, rect=rect) } # end function PLOTMAT diagram/MD50000644000176200001440000000601413735030642012172 0ustar liggesusersfebef10b12e6f7ad34e746ae27358c11 *DESCRIPTION 190bfd529e416ddeaa04a8d0e7c882e3 *NAMESPACE 5809d6437afb1ff7f694a61dc1175023 *R/bentarrow.R 7a434ea4e562751a9e3e1b3fa7eecff9 *R/circuitplot.r db06f563e8eda73b7c1879bc576aba3e *R/coordinates.R b5704f878d1dd3f5628c1b04677fb845 *R/curvedarrow.R fa14440148fc259427c0913cc3913028 *R/openplotmat.R ed5c7c4f27b003469e22e5785f2b2fce *R/plotmat.R 4370e2648b818e680c90f50b0464a8fb *R/plotweb.R 73234c9a9055978e073ca6ad3117c2c7 *R/segmentarrow.R 830c4ec83cdd89dca79513150a0649b0 *R/selfarrow.R 9de5533a2ccfc1f1cb1f3df979ab8b05 *R/shadowbox.R 4f4849bbf36e4edfca4e524c0289f504 *R/splitarrow.R c1446e5c5f363dc0e23d9c81a59b5409 *R/straightarrow.R 7c535542e60aa19f2080a79f295f4349 *R/textdiamond.R f9fccbc96387ee637e5e7b49abdb8031 *R/textellipse.R a7cf3f093359abe80fa10d6c6b8b0502 *R/textempty.R 9858bb0c04abc847de98543fbea65d8e *R/texthexa.R bc210b65f3327600cfb351d881009232 *R/textmulti.R 16a205e4cc724609465d6cadf090f484 *R/textplain.R c797cbae00bf79c019f54abbb33dc7e3 *R/textrect.R 2febe3a67e6cacfccfc5f7fc874183d9 *R/textround.R 7466405aa3f7f00876497071d01bd0c5 *R/treearrow.R ab29d1cb2ec2b423c043c6693316c1f6 *build/vignette.rds c33c58965832ed2f197479d2fb470960 *data/Teasel.rda e80ca7e92b2edd8e6a4e563a2c69868e *data/rigaweb.rda a499e42c238dd7d238619fd747cfbb10 *data/takapotoweb.rda 0e57e03cfb3bcfaf901ae557a86a5e55 *demo/00Index 76e998092560b73d91a9d888092ca811 *demo/flowchart.r 8ada45e1fdafd8e3875594106a0e9034 *demo/plotmat.r 2b248577b19594d857d67d4e41508bd2 *demo/plotweb.r 44adbc66fa34eace66671cd714b85318 *inst/doc/diagram.R d67d9be1198e4054fea1bda0e31827f4 *inst/doc/diagram.Rnw 38543a4eb078e8f7efce4b00e34ea0c6 *inst/doc/diagram.pdf 116c01f55c958ac6d1358a4039af19b4 *man/Rigaweb.Rd 7690cb46d443549428401145d782acaa *man/Takapotoweb.Rd fd0a5b8f31864d291e2eff922ff1fb02 *man/Teasel.Rd 785abcaf5c10c0b003b163f3a1121733 *man/bentarrow.Rd 8910759377a29ed37836ec7cc52f0fe9 *man/coordinates.Rd 44383419c3f64c67f03b24199a7c7ec8 *man/curvedarrow.Rd f7ab2466912f550934d192373df21f5d *man/diagram.Rd 06e1e2033a06c96bc4c33396303478c8 *man/electricalnetwork.Rd e6578fbcf87b426274af7633d11276d9 *man/openplotmat.Rd 041a41994f60c1f2ecdd58c4e7391b57 *man/plotmat.Rd b80c19c67050fbe787bf65a4c40f36c9 *man/plotweb.Rd efd527f21e01d00acd9712369fdea54f *man/segmentarrow.Rd f83dc1eb0c41535b76573cab1e6bed42 *man/selfarrow.Rd ffa69a5ff9c3ef788f66dc4ae4c1b2b1 *man/shadowbox.Rd a833c557070c25b2d3dccc05c42a843c *man/splitarrow.Rd 74d577c65e742837fb80ae30e6efbf2c *man/straightarrow.Rd 59810bcf213a4030150d1cbcb8164d9e *man/textdiamond.Rd 401462d0b5d8f16f2d7d7bd14117eef4 *man/textellipse.Rd cca71100c718e34fddce638d412b5633 *man/textempty.Rd 37f85fa185ea40b05caf870388f2f15c *man/texthexa.Rd ba4cdc230d349a40458d616f32fa4eae *man/textmulti.Rd 9e1c2742e2c5d54b7baaf88d18aa625d *man/textplain.Rd 69e37b14eb0d0a35895526e775fd202d *man/textrect.Rd 8e9e0aa60c1c0c6ee161a69d106ae994 *man/textround.Rd 38f3b3798e305578ee4ce05ce138c0f1 *man/treearrow.Rd d67d9be1198e4054fea1bda0e31827f4 *vignettes/diagram.Rnw e336a4078f65b5f7bf16caddf06d38a0 *vignettes/vignettes.bib diagram/inst/0000755000176200001440000000000013734555447012654 5ustar liggesusersdiagram/inst/doc/0000755000176200001440000000000013734555470013415 5ustar liggesusersdiagram/inst/doc/diagram.R0000644000176200001440000006375713734555470015166 0ustar liggesusers### R code from vignette source 'diagram.Rnw' ################################################### ### code chunk number 1: preliminaries ################################################### library("diagram") options(prompt = "> ") options(width=90) ################################################### ### code chunk number 2: plotmat1 ################################################### par(mar = c(1, 1, 1, 1), mfrow = c(2, 2)) # # names <- c("A", "B", "C", "D") M <- matrix(nrow = 4, ncol = 4, byrow = TRUE, data = 0) plotmat(M, pos = c(1, 2, 1), name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, box.size = 0.1, box.type = "square", box.prop = 0.5) # M[2, 1] <- M[3, 1] <- M[4, 2] <- M[4, 3] <- "flow" plotmat(M, pos = c(1, 2, 1), curve = 0, name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, box.type = "circle", box.prop = 1.0) # # diag(M) <- "self" plotmat(M, pos = c(2, 2), curve = 0, name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, self.cex = 0.5, self.shiftx = c(-0.1, 0.1, -0.1, 0.1), box.type = "diamond", box.prop = 0.5) M <- matrix(nrow = 4, ncol = 4, data = 0) M[2, 1] <- 1 ; M[4, 2] <- 2 ; M[3, 4] <- 3 ; M[1, 3] <- 4 Col <- M Col[] <- "black" Col[4, 2] <- "darkred" pp <- plotmat(M, pos = c(1, 2, 1), curve = 0.2, name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, arr.type = "triangle", box.size = 0.1, box.type = "hexa", box.prop = 0.25, arr.col = Col, arr.len = 1) mtext(outer = TRUE, side = 3, line = -1.5, cex = 1.5, "plotmat") # par(mfrow = c(1, 1)) ################################################### ### code chunk number 3: diagram.Rnw:160-161 ################################################### pp ################################################### ### code chunk number 4: fig1 ################################################### par(mar = c(1, 1, 1, 1), mfrow = c(2, 2)) # # names <- c("A", "B", "C", "D") M <- matrix(nrow = 4, ncol = 4, byrow = TRUE, data = 0) plotmat(M, pos = c(1, 2, 1), name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, box.size = 0.1, box.type = "square", box.prop = 0.5) # M[2, 1] <- M[3, 1] <- M[4, 2] <- M[4, 3] <- "flow" plotmat(M, pos = c(1, 2, 1), curve = 0, name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, box.type = "circle", box.prop = 1.0) # # diag(M) <- "self" plotmat(M, pos = c(2, 2), curve = 0, name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, self.cex = 0.5, self.shiftx = c(-0.1, 0.1, -0.1, 0.1), box.type = "diamond", box.prop = 0.5) M <- matrix(nrow = 4, ncol = 4, data = 0) M[2, 1] <- 1 ; M[4, 2] <- 2 ; M[3, 4] <- 3 ; M[1, 3] <- 4 Col <- M Col[] <- "black" Col[4, 2] <- "darkred" pp <- plotmat(M, pos = c(1, 2, 1), curve = 0.2, name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, arr.type = "triangle", box.size = 0.1, box.type = "hexa", box.prop = 0.25, arr.col = Col, arr.len = 1) mtext(outer = TRUE, side = 3, line = -1.5, cex = 1.5, "plotmat") # par(mfrow = c(1, 1)) ################################################### ### code chunk number 5: plotmat2 ################################################### names <- c("PHYTO", "NH3", "ZOO", "DETRITUS", "BotDET", "FISH") M <- matrix(nrow = 6, ncol = 6, byrow = TRUE, data = c( # p n z d b f 0, 1, 0, 0, 0, 0, #p 0, 0, 4, 10, 11, 0, #n 2, 0, 0, 0, 0, 0, #z 8, 0, 13, 0, 0, 12, #d 9, 0, 0, 7, 0, 0, #b 0, 0, 5, 0, 0, 0 #f )) # pp <- plotmat(M, pos = c(1, 2, 1, 2), curve = 0, name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, box.type = "square", box.prop = 0.5, arr.type = "triangle", arr.pos = 0.4, shadow.size = 0.01, prefix = "f", main = "NPZZDD model") # phyto <- pp$comp[names=="PHYTO"] zoo <- pp$comp[names=="ZOO"] nh3 <- pp$comp[names=="NH3"] detritus <- pp$comp[names=="DETRITUS"] fish <- pp$comp[names=="FISH"] # # flow5->detritus # m2 <- 0.5*(zoo+fish) m1 <- detritus m1[1] <- m1[1] + pp$radii[4,1] mid <- straightarrow (to = m1, from = m2, arr.type = "triangle", arr.pos = 0.4, lwd = 1) text(mid[1], mid[2]+0.03, "f6", cex = 0.8) # # flow2->detritus # m2 <- 0.5*(zoo+phyto) m1 <- detritus m1[1] <-m1[1] + pp$radii[3,1]*0.2 m1[2] <-m1[2] + pp$radii[3,2] mid <- straightarrow (to = m1, from = m2, arr.type = "triangle", arr.pos = 0.3, lwd = 1) text(mid[1]-0.01, mid[2]+0.03, "f3", cex = 0.8) ################################################### ### code chunk number 6: fig2 ################################################### names <- c("PHYTO", "NH3", "ZOO", "DETRITUS", "BotDET", "FISH") M <- matrix(nrow = 6, ncol = 6, byrow = TRUE, data = c( # p n z d b f 0, 1, 0, 0, 0, 0, #p 0, 0, 4, 10, 11, 0, #n 2, 0, 0, 0, 0, 0, #z 8, 0, 13, 0, 0, 12, #d 9, 0, 0, 7, 0, 0, #b 0, 0, 5, 0, 0, 0 #f )) # pp <- plotmat(M, pos = c(1, 2, 1, 2), curve = 0, name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, box.type = "square", box.prop = 0.5, arr.type = "triangle", arr.pos = 0.4, shadow.size = 0.01, prefix = "f", main = "NPZZDD model") # phyto <- pp$comp[names=="PHYTO"] zoo <- pp$comp[names=="ZOO"] nh3 <- pp$comp[names=="NH3"] detritus <- pp$comp[names=="DETRITUS"] fish <- pp$comp[names=="FISH"] # # flow5->detritus # m2 <- 0.5*(zoo+fish) m1 <- detritus m1[1] <- m1[1] + pp$radii[4,1] mid <- straightarrow (to = m1, from = m2, arr.type = "triangle", arr.pos = 0.4, lwd = 1) text(mid[1], mid[2]+0.03, "f6", cex = 0.8) # # flow2->detritus # m2 <- 0.5*(zoo+phyto) m1 <- detritus m1[1] <-m1[1] + pp$radii[3,1]*0.2 m1[2] <-m1[2] + pp$radii[3,2] mid <- straightarrow (to = m1, from = m2, arr.type = "triangle", arr.pos = 0.3, lwd = 1) text(mid[1]-0.01, mid[2]+0.03, "f3", cex = 0.8) ################################################### ### code chunk number 7: plotmat3 ################################################### # Create population matrix # Numgenerations <- 6 DiffMat <- matrix(data = 0, nrow = Numgenerations, ncol = Numgenerations) AA <- as.data.frame(DiffMat) AA[[1,4]] <- "f[3]" AA[[1,5]] <- "f[4]" AA[[1,6]] <- "f[5]" # AA[[2,1]] <- "s[list(0,1)]" AA[[3,2]] <- "s[list(1,2)]" AA[[4,3]] <- "s[list(2,3)]" AA[[5,4]] <- "s[list(3,4)]" AA[[6,5]] <- "s[list(4,5)]" # name <- c(expression(Age[0]), expression(Age[1]), expression(Age[2]), expression(Age[3]), expression(Age[4]), expression(Age[5])) # plotmat(A = AA, pos = 6, curve = 0.7, name = name, lwd = 2, arr.len = 0.6, arr.width = 0.25, my = -0.2, box.size = 0.05, arr.type = "triangle", dtext = 0.95, main = "Age-structured population model 1") ################################################### ### code chunk number 8: fig3 ################################################### # Create population matrix # Numgenerations <- 6 DiffMat <- matrix(data = 0, nrow = Numgenerations, ncol = Numgenerations) AA <- as.data.frame(DiffMat) AA[[1,4]] <- "f[3]" AA[[1,5]] <- "f[4]" AA[[1,6]] <- "f[5]" # AA[[2,1]] <- "s[list(0,1)]" AA[[3,2]] <- "s[list(1,2)]" AA[[4,3]] <- "s[list(2,3)]" AA[[5,4]] <- "s[list(3,4)]" AA[[6,5]] <- "s[list(4,5)]" # name <- c(expression(Age[0]), expression(Age[1]), expression(Age[2]), expression(Age[3]), expression(Age[4]), expression(Age[5])) # plotmat(A = AA, pos = 6, curve = 0.7, name = name, lwd = 2, arr.len = 0.6, arr.width = 0.25, my = -0.2, box.size = 0.05, arr.type = "triangle", dtext = 0.95, main = "Age-structured population model 1") ################################################### ### code chunk number 9: teasel ################################################### Teasel ################################################### ### code chunk number 10: plotmat4 ################################################### curves <- matrix(nrow = ncol(Teasel), ncol = ncol(Teasel), 0) curves[3, 1] <- curves[1, 6] <- -0.35 curves[4, 6] <- curves[6, 4] <- curves[5, 6] <- curves[6, 5] <- 0.08 curves[3, 6] <- 0.35 plotmat(Teasel, pos = c(3, 2, 1), curve = curves, name = colnames(Teasel), lwd = 1, box.lwd = 2, cex.txt = 0.8, box.cex = 0.8, box.size = 0.08, arr.length = 0.5, box.type = "circle", box.prop = 1, shadow.size = 0.01, self.cex = 0.6, my = -0.075, mx = -0.01, relsize = 0.9, self.shiftx = c(0, 0, 0.125, -0.12, 0.125, 0), self.shifty = 0, main = "Teasel population model") ################################################### ### code chunk number 11: fig4 ################################################### curves <- matrix(nrow = ncol(Teasel), ncol = ncol(Teasel), 0) curves[3, 1] <- curves[1, 6] <- -0.35 curves[4, 6] <- curves[6, 4] <- curves[5, 6] <- curves[6, 5] <- 0.08 curves[3, 6] <- 0.35 plotmat(Teasel, pos = c(3, 2, 1), curve = curves, name = colnames(Teasel), lwd = 1, box.lwd = 2, cex.txt = 0.8, box.cex = 0.8, box.size = 0.08, arr.length = 0.5, box.type = "circle", box.prop = 1, shadow.size = 0.01, self.cex = 0.6, my = -0.075, mx = -0.01, relsize = 0.9, self.shiftx = c(0, 0, 0.125, -0.12, 0.125, 0), self.shifty = 0, main = "Teasel population model") ################################################### ### code chunk number 12: plotweb1 ################################################### BB <- matrix(nrow = 20, ncol = 20, 1:20) diag(BB) <- 0 Col <- BB Col[] <- "black" Col[BB<10]<- "red" plotweb(BB, legend = TRUE, maxarrow = 3, arr.col = Col) par(mfrow = c(1, 1)) ################################################### ### code chunk number 13: fig5 ################################################### BB <- matrix(nrow = 20, ncol = 20, 1:20) diag(BB) <- 0 Col <- BB Col[] <- "black" Col[BB<10]<- "red" plotweb(BB, legend = TRUE, maxarrow = 3, arr.col = Col) par(mfrow = c(1, 1)) ################################################### ### code chunk number 14: diagram.Rnw:337-338 ################################################### Rigaweb ################################################### ### code chunk number 15: foodweb1 ################################################### plotweb(Rigaweb, main = "Gulf of Riga food web", sub = "mgC/m3/d", val = TRUE) ################################################### ### code chunk number 16: fig6 ################################################### plotweb(Rigaweb, main = "Gulf of Riga food web", sub = "mgC/m3/d", val = TRUE) ################################################### ### code chunk number 17: chart1 ################################################### par(mar = c(1, 1, 1, 1)) openplotmat() elpos <- coordinates (c(1, 1, 2, 4)) fromto <- matrix(ncol = 2, byrow = TRUE, data = c(1, 2, 2, 3, 2, 4, 4, 7, 4, 8)) nr <- nrow(fromto) arrpos <- matrix(ncol = 2, nrow = nr) for (i in 1:nr) arrpos[i, ] <- straightarrow (to = elpos[fromto[i, 2], ], from = elpos[fromto[i, 1], ], lwd = 2, arr.pos = 0.6, arr.length = 0.5) textellipse(elpos[1,], 0.1, lab = "start", box.col = "green", shadow.col = "darkgreen", shadow.size = 0.005, cex = 1.5) textrect (elpos[2,], 0.15, 0.05,lab = "found term?", box.col = "blue", shadow.col = "darkblue", shadow.size = 0.005, cex = 1.5) textrect (elpos[4,], 0.15, 0.05,lab = "related?", box.col = "blue", shadow.col = "darkblue", shadow.size = 0.005, cex = 1.5) textellipse(elpos[3,], 0.1, 0.1, lab = c("other","term"), box.col = "orange", shadow.col = "red", shadow.size = 0.005, cex = 1.5) textellipse(elpos[3,], 0.1, 0.1, lab = c("other","term"), box.col = "orange", shadow.col = "red", shadow.size = 0.005, cex = 1.5) textellipse(elpos[7,], 0.1, 0.1, lab = c("make","a link"),box.col = "orange", shadow.col = "red", shadow.size = 0.005, cex = 1.5) textellipse(elpos[8,], 0.1, 0.1, lab = c("new","article"),box.col = "orange", shadow.col = "red", shadow.size = 0.005, cex = 1.5) # dd <- c(0.0, 0.025) text(arrpos[2, 1] + 0.05, arrpos[2, 2], "yes") text(arrpos[3, 1] - 0.05, arrpos[3, 2], "no") text(arrpos[4, 1] + 0.05, arrpos[4, 2] + 0.05, "yes") text(arrpos[5, 1] - 0.05, arrpos[5, 2] + 0.05, "no") # ################################################### ### code chunk number 18: fig7 ################################################### par(mar = c(1, 1, 1, 1)) openplotmat() elpos <- coordinates (c(1, 1, 2, 4)) fromto <- matrix(ncol = 2, byrow = TRUE, data = c(1, 2, 2, 3, 2, 4, 4, 7, 4, 8)) nr <- nrow(fromto) arrpos <- matrix(ncol = 2, nrow = nr) for (i in 1:nr) arrpos[i, ] <- straightarrow (to = elpos[fromto[i, 2], ], from = elpos[fromto[i, 1], ], lwd = 2, arr.pos = 0.6, arr.length = 0.5) textellipse(elpos[1,], 0.1, lab = "start", box.col = "green", shadow.col = "darkgreen", shadow.size = 0.005, cex = 1.5) textrect (elpos[2,], 0.15, 0.05,lab = "found term?", box.col = "blue", shadow.col = "darkblue", shadow.size = 0.005, cex = 1.5) textrect (elpos[4,], 0.15, 0.05,lab = "related?", box.col = "blue", shadow.col = "darkblue", shadow.size = 0.005, cex = 1.5) textellipse(elpos[3,], 0.1, 0.1, lab = c("other","term"), box.col = "orange", shadow.col = "red", shadow.size = 0.005, cex = 1.5) textellipse(elpos[3,], 0.1, 0.1, lab = c("other","term"), box.col = "orange", shadow.col = "red", shadow.size = 0.005, cex = 1.5) textellipse(elpos[7,], 0.1, 0.1, lab = c("make","a link"),box.col = "orange", shadow.col = "red", shadow.size = 0.005, cex = 1.5) textellipse(elpos[8,], 0.1, 0.1, lab = c("new","article"),box.col = "orange", shadow.col = "red", shadow.size = 0.005, cex = 1.5) # dd <- c(0.0, 0.025) text(arrpos[2, 1] + 0.05, arrpos[2, 2], "yes") text(arrpos[3, 1] - 0.05, arrpos[3, 2], "no") text(arrpos[4, 1] + 0.05, arrpos[4, 2] + 0.05, "yes") text(arrpos[5, 1] - 0.05, arrpos[5, 2] + 0.05, "no") # ################################################### ### code chunk number 19: chart2 ################################################### openplotmat(main = "textbox shapes") rx <- 0.1 ry <- 0.05 pos <- coordinates(c(1, 1, 1, 1, 1, 1, 1,1 ), mx = -0.2) textdiamond(mid = pos[1,], radx = rx, rady = ry, lab = LETTERS[1], cex = 2, shadow.col = "lightblue") textellipse(mid = pos[2,], radx = rx, rady = ry, lab = LETTERS[2], cex = 2, shadow.col = "blue") texthexa(mid = pos[3,], radx = rx, rady = ry, lab = LETTERS[3], cex = 2, shadow.col = "darkblue") textmulti(mid = pos[4,], nr = 7, radx = rx, rady = ry, lab = LETTERS[4], cex = 2, shadow.col = "red") textrect(mid = pos[5,], radx = rx, rady = ry, lab = LETTERS[5], cex = 2, shadow.col = "darkred") textround(mid = pos[6,], radx = rx, rady = ry, lab = LETTERS[6], cex = 2, shadow.col = "black") textparallel(mid = pos[7,], radx = rx, rady = ry, lab = LETTERS[7], cex = 2, theta = 40, shadow.col = "black") textempty(mid = pos[8,], lab = LETTERS[8], cex = 2, box.col = "yellow") pos[ ,1] <- pos[ ,1] + 0.5 text(pos[ ,1],pos[ ,2], c("textdiamond", "textellipse", "texthexa", "textmulti", "textrect", "textround", "textparallel", "textempty")) ################################################### ### code chunk number 20: fig8 ################################################### openplotmat(main = "textbox shapes") rx <- 0.1 ry <- 0.05 pos <- coordinates(c(1, 1, 1, 1, 1, 1, 1,1 ), mx = -0.2) textdiamond(mid = pos[1,], radx = rx, rady = ry, lab = LETTERS[1], cex = 2, shadow.col = "lightblue") textellipse(mid = pos[2,], radx = rx, rady = ry, lab = LETTERS[2], cex = 2, shadow.col = "blue") texthexa(mid = pos[3,], radx = rx, rady = ry, lab = LETTERS[3], cex = 2, shadow.col = "darkblue") textmulti(mid = pos[4,], nr = 7, radx = rx, rady = ry, lab = LETTERS[4], cex = 2, shadow.col = "red") textrect(mid = pos[5,], radx = rx, rady = ry, lab = LETTERS[5], cex = 2, shadow.col = "darkred") textround(mid = pos[6,], radx = rx, rady = ry, lab = LETTERS[6], cex = 2, shadow.col = "black") textparallel(mid = pos[7,], radx = rx, rady = ry, lab = LETTERS[7], cex = 2, theta = 40, shadow.col = "black") textempty(mid = pos[8,], lab = LETTERS[8], cex = 2, box.col = "yellow") pos[ ,1] <- pos[ ,1] + 0.5 text(pos[ ,1],pos[ ,2], c("textdiamond", "textellipse", "texthexa", "textmulti", "textrect", "textround", "textparallel", "textempty")) ################################################### ### code chunk number 21: chart3 ################################################### par(mar = c(1, 1, 1, 1)) openplotmat(main = "Arrowtypes") elpos <- coordinates (c(1, 2, 1), mx = 0.1, my = -0.1) curvedarrow(from = elpos[1, ], to = elpos[2, ], curve = -0.5, lty = 2, lcol = 2) straightarrow(from = elpos[1, ], to = elpos[2, ], lty = 3, lcol = 3) segmentarrow (from = elpos[1, ], to = elpos[2, ], lty = 1, lcol = 1) treearrow (from = elpos[2:3, ], to = elpos[4, ], lty = 4, lcol = 4) bentarrow (from = elpos[3, ], to = elpos[3, ]-c(0.1, 0.1), arr.pos = 1, lty = 5, lcol = 5) bentarrow(from = elpos[1, ], to = elpos[3, ], lty = 5, lcol = 5) selfarrow(pos = elpos[3, ], path = "R",lty = 6, curve = 0.075, lcol = 6) splitarrow(from = elpos[1, ], to = elpos[2:3, ], lty = 1, lwd = 1, dd = 0.7, arr.side = 1:2, lcol = 7) for ( i in 1:4) textrect (elpos[i, ], 0.05, 0.05, lab = i, cex = 1.5) legend("topright", lty = 1:7, legend = c("segmentarrow", "curvedarrow", "straightarrow", "treearrow", "bentarrow", "selfarrow", "splitarrow"), lwd = c(rep(2, 6), 1), col = 1:7) ################################################### ### code chunk number 22: fig9 ################################################### par(mar = c(1, 1, 1, 1)) openplotmat(main = "Arrowtypes") elpos <- coordinates (c(1, 2, 1), mx = 0.1, my = -0.1) curvedarrow(from = elpos[1, ], to = elpos[2, ], curve = -0.5, lty = 2, lcol = 2) straightarrow(from = elpos[1, ], to = elpos[2, ], lty = 3, lcol = 3) segmentarrow (from = elpos[1, ], to = elpos[2, ], lty = 1, lcol = 1) treearrow (from = elpos[2:3, ], to = elpos[4, ], lty = 4, lcol = 4) bentarrow (from = elpos[3, ], to = elpos[3, ]-c(0.1, 0.1), arr.pos = 1, lty = 5, lcol = 5) bentarrow(from = elpos[1, ], to = elpos[3, ], lty = 5, lcol = 5) selfarrow(pos = elpos[3, ], path = "R",lty = 6, curve = 0.075, lcol = 6) splitarrow(from = elpos[1, ], to = elpos[2:3, ], lty = 1, lwd = 1, dd = 0.7, arr.side = 1:2, lcol = 7) for ( i in 1:4) textrect (elpos[i, ], 0.05, 0.05, lab = i, cex = 1.5) legend("topright", lty = 1:7, legend = c("segmentarrow", "curvedarrow", "straightarrow", "treearrow", "bentarrow", "selfarrow", "splitarrow"), lwd = c(rep(2, 6), 1), col = 1:7) ################################################### ### code chunk number 23: enet ################################################### layoutmat <- matrix(data = c(rep(1, 12), 2, 3, 4, 5), nrow = 4, ncol = 4, byrow = TRUE) nf <- layout(layoutmat, respect = FALSE) par(lwd = 1.5) par(mar = c(0, 0, 2, 0)) emptyplot(main = "transistor Amplifier", asp = FALSE, ylim = c(-0.1, 1), xlim = c(-0.1, 1.1)) x1 <- 0; x2 <- 0.2; x3 <- 0.4; x4 <- 0.6; x5 <- 0.8; x6 <- 1 y1 <- 0.05; y2 <- 0.4; y3 <- 0.5; y4 <- 0.6; y5 <- 0.95 x23 <- (x2 + x3)/2 x56 <- (x5 + x6)/2 lines(c(x2, x6, x6, x2, x2, x1, x1, x23, x3, x3), c(y1, y1, y5, y5, y1, y1, y3, y3, y4, y5)) lines(c(x23, x3, x3), c(y3, y2, y1)) lines(c(x3, x4, x4), c(y2, y2, y1)) lines(c(x3, x5, x5), c(y4, y4, y1)) en.Amplifier(c(x23, y3), r = 0.035) en.Signal(c(x1, 0.2), lab = expression("U"["in"])) en.Signal(c(x6, y2), lab = expression("U"["b"])) straightarrow(c(x1 - 0.05, 0.23), c(x1 - 0.05, 0.17), arr.pos =1, arr.type = "triangle", lwd = 1) straightarrow(c(x6 + 0.05, y2 + 0.03), c(x6 + 0.05, y2 - 0.03), arr.pos = 1, arr.type = "triangle", lwd = 1) en.Node(c(x1, y3), lab = "u1") en.Node(c(x2, y3), lab = "u2") en.Node(c(x3, y2), lab = "u3", pos = 1.5) en.Node(c(x3, y4), lab = "u4", pos = 2.5) en.Node(c(x5, y4), lab = "u5") en.Capacitator(c(0.5*(x1 + x2),y3), lab = "C1", vert = FALSE) en.Capacitator(c(x4, y4), lab = "C3", vert = FALSE) en.Capacitator(c(x4, 0.5*(y1+y2)), lab = "C2", vert = TRUE) en.Resistor(c(x1, y2), lab = "R0") en.Resistor(c(x2, 0.5*(y1+y2)), lab = "R1") en.Resistor(c(x2, 0.5*(y4+y5)), lab = "R2") en.Resistor(c(x3, 0.5*(y4+y5)), lab = "R4") en.Resistor(c(x3, 0.5*(y1+y2)), lab = "R3") en.Resistor(c(x5, 0.5*(y1+y2)), lab = "R5") en.Ground(c(1.0, 0.05)) par(mar=c(2, 2, 2, 2)) emptyplot(main = "transistor") lines(c(0.1, 0.5,0.9), c(0.5, 0.5, 0.9)) lines(c(0.5, 0.9), c(0.5, 0.1)) lines(c(0.5, 0.5), c(0.4, 0.6)) text(0.2, 0.4, "Gate", font = 3) text(0.8, 0.9, "Drain", font = 3,adj = 1) text(0.8, 0.1, "Source", font = 3,adj = 1) en.Amplifier(c(0.5, 0.5), r = 0.15) box(col = "grey") emptyplot(main = "capacitator") straightarrow(c(0.5, 0.9), c(0.5, 0.1), arr.pos = 0.3, arr.length = 0.25, arr.type = "triangle") en.Capacitator(c(0.5, 0.5), width = 0.075, length = 0.5, vert = TRUE) text(0.4, 0.65, "i", font = 3, cex = 2) straightarrow(c(0.8, 0.3), c(0.8, 0.77), arr.pos = 1, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.925, 0.65, "v", font = 3, cex = 2) text(0.15, 0.5, "C", font = 3, cex = 2) box(col = "grey") emptyplot(main = "resistor") straightarrow(c(0.5, 0.9), c(0.5, 0.1), arr.pos = 0.2, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.4, 0.85, "i", font = 3, cex = 2) en.Resistor(c(0.5, 0.5), width = 0.25, length = 0.35 ) straightarrow(c(0.8, 0.3), c(0.8, 0.77), arr.pos = 1, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.925, 0.65, "v", font = 3, cex = 2) text(0.5, 0.5, "R", font = 3, cex = 2) box(col = "grey") emptyplot(main = "voltage source") lines(c(0.5, 0.5), c(0.1, 0.9)) en.Signal(c(0.5, 0.5), r = 0.15) straightarrow(c(0.8, 0.3), c(0.8, 0.77), arr.pos = 1, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.925, 0.65, "v", font = 3, cex = 2) box(col = "grey") ################################################### ### code chunk number 24: enet ################################################### layoutmat <- matrix(data = c(rep(1, 12), 2, 3, 4, 5), nrow = 4, ncol = 4, byrow = TRUE) nf <- layout(layoutmat, respect = FALSE) par(lwd = 1.5) par(mar = c(0, 0, 2, 0)) emptyplot(main = "transistor Amplifier", asp = FALSE, ylim = c(-0.1, 1), xlim = c(-0.1, 1.1)) x1 <- 0; x2 <- 0.2; x3 <- 0.4; x4 <- 0.6; x5 <- 0.8; x6 <- 1 y1 <- 0.05; y2 <- 0.4; y3 <- 0.5; y4 <- 0.6; y5 <- 0.95 x23 <- (x2 + x3)/2 x56 <- (x5 + x6)/2 lines(c(x2, x6, x6, x2, x2, x1, x1, x23, x3, x3), c(y1, y1, y5, y5, y1, y1, y3, y3, y4, y5)) lines(c(x23, x3, x3), c(y3, y2, y1)) lines(c(x3, x4, x4), c(y2, y2, y1)) lines(c(x3, x5, x5), c(y4, y4, y1)) en.Amplifier(c(x23, y3), r = 0.035) en.Signal(c(x1, 0.2), lab = expression("U"["in"])) en.Signal(c(x6, y2), lab = expression("U"["b"])) straightarrow(c(x1 - 0.05, 0.23), c(x1 - 0.05, 0.17), arr.pos =1, arr.type = "triangle", lwd = 1) straightarrow(c(x6 + 0.05, y2 + 0.03), c(x6 + 0.05, y2 - 0.03), arr.pos = 1, arr.type = "triangle", lwd = 1) en.Node(c(x1, y3), lab = "u1") en.Node(c(x2, y3), lab = "u2") en.Node(c(x3, y2), lab = "u3", pos = 1.5) en.Node(c(x3, y4), lab = "u4", pos = 2.5) en.Node(c(x5, y4), lab = "u5") en.Capacitator(c(0.5*(x1 + x2),y3), lab = "C1", vert = FALSE) en.Capacitator(c(x4, y4), lab = "C3", vert = FALSE) en.Capacitator(c(x4, 0.5*(y1+y2)), lab = "C2", vert = TRUE) en.Resistor(c(x1, y2), lab = "R0") en.Resistor(c(x2, 0.5*(y1+y2)), lab = "R1") en.Resistor(c(x2, 0.5*(y4+y5)), lab = "R2") en.Resistor(c(x3, 0.5*(y4+y5)), lab = "R4") en.Resistor(c(x3, 0.5*(y1+y2)), lab = "R3") en.Resistor(c(x5, 0.5*(y1+y2)), lab = "R5") en.Ground(c(1.0, 0.05)) par(mar=c(2, 2, 2, 2)) emptyplot(main = "transistor") lines(c(0.1, 0.5,0.9), c(0.5, 0.5, 0.9)) lines(c(0.5, 0.9), c(0.5, 0.1)) lines(c(0.5, 0.5), c(0.4, 0.6)) text(0.2, 0.4, "Gate", font = 3) text(0.8, 0.9, "Drain", font = 3,adj = 1) text(0.8, 0.1, "Source", font = 3,adj = 1) en.Amplifier(c(0.5, 0.5), r = 0.15) box(col = "grey") emptyplot(main = "capacitator") straightarrow(c(0.5, 0.9), c(0.5, 0.1), arr.pos = 0.3, arr.length = 0.25, arr.type = "triangle") en.Capacitator(c(0.5, 0.5), width = 0.075, length = 0.5, vert = TRUE) text(0.4, 0.65, "i", font = 3, cex = 2) straightarrow(c(0.8, 0.3), c(0.8, 0.77), arr.pos = 1, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.925, 0.65, "v", font = 3, cex = 2) text(0.15, 0.5, "C", font = 3, cex = 2) box(col = "grey") emptyplot(main = "resistor") straightarrow(c(0.5, 0.9), c(0.5, 0.1), arr.pos = 0.2, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.4, 0.85, "i", font = 3, cex = 2) en.Resistor(c(0.5, 0.5), width = 0.25, length = 0.35 ) straightarrow(c(0.8, 0.3), c(0.8, 0.77), arr.pos = 1, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.925, 0.65, "v", font = 3, cex = 2) text(0.5, 0.5, "R", font = 3, cex = 2) box(col = "grey") emptyplot(main = "voltage source") lines(c(0.5, 0.5), c(0.1, 0.9)) en.Signal(c(0.5, 0.5), r = 0.15) straightarrow(c(0.8, 0.3), c(0.8, 0.77), arr.pos = 1, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.925, 0.65, "v", font = 3, cex = 2) box(col = "grey") diagram/inst/doc/diagram.Rnw0000644000176200001440000005341111702564474015512 0ustar liggesusers\documentclass[article,nojss]{jss} \DeclareGraphicsExtensions{.pdf,.eps} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Add-on packages and fonts \usepackage{amsmath} \usepackage{xspace} \usepackage{verbatim} \usepackage[english]{babel} %\usepackage{mathptmx} %\usepackage{helvet} \usepackage[T1]{fontenc} \usepackage[latin1]{inputenc} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands. \newcommand{\di}{\textbf{\textsf{diagram}}\xspace} \title{\proglang{R} Package \pkg{diagram}: visualising simple graphs, flowcharts, and webs} \Plaintitle{R Package diagram: visualising simple graphs, flowcharts, and webs} \Keywords{diagram, food web, flow chart, arrows, \proglang{R}} \Plainkeywords{diagram, food web, flow chart, arrows, R} \author{Karline Soetaert\\ Royal Netherlands Institute of Sea Research (NIOZ)\\ Yerseke, The Netherlands } \Plainauthor{Karline Soetaert} \Abstract{This document describes how to use the \pkg{diagram} package \citep{diagram} for plotting small networks, flow charts, and (food) webs. Together with R-package \pkg{shape} \citep{shape} this package has been written to produce the figures of the book \citep{Soetaertbook}. The electrical network symbols were added to produce a figure of the book \citep{Soetaertbook2} } %% The address of (at least) one author should be given %% in the following format: \Address{ Karline Soetaert\\ Royal Netherlands Institute of Sea Research (NIOZ)\\ 4401 NT Yerseke, Netherlands E-mail: \email{karline.soetaert@nioz.nl}\\ URL: \url{http://www.nioz.nl}\\ } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% R/Sweave specific LaTeX commands. %% need no \usepackage{Sweave} %\VignetteIndexEntry{diagram: visualising simple graphs, flowcharts and webs} %\VignetteKeywords{diagram, web, flow chart, arrows} %\VignettePackage{diagram} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Begin of the document \begin{document} \SweaveOpts{engine=R,eps=FALSE} \SweaveOpts{keep.source=TRUE} <>= library("diagram") options(prompt = "> ") options(width=90) @ \maketitle \section{Introduction} There are three ways in which package \pkg{diagram} can be used: \begin{itemize} \item function \code{plotmat} takes as input a matrix with transition coefficients or interaction strengths. It plots the corresponding network consisting of (labeled) boxes (the components) connected by arrows. Each arrow is labeled with the value of the coefficients. \item function \code{plotweb} takes as input a matrix with (flow) values, and plots a web. Here the components are connected by arrows whose thickness is determined by the value of the coefficients. \item Flowcharts can be made by adding separate objects (textboxes) to the figure and connecting these with arrows. \end{itemize} Three datasets have been included: \begin{itemize} \item \code{Rigaweb}, the planktonic food web of the Gulf of Riga \citep{Donali99}. \item \code{Takapotoweb}, the Takapoto atoll planktonic food web \citep{Niquil98}. \item \code{Teasel}, the transition matrix describing the population dynamics of Teasel, a European perennial weed (\citep{Caswell01, Soetaertbook}. \end{itemize} The food webs were generated using \proglang{R} packages \pkg{LIM} and \pkg{limSolve} \citep{limSolve, LIM} which contain functions to read and solve food web problems respectively. \section{plotmat - plotting networks based on matrix input} This is the quickest method of plotting a network. The network is specified in a matrix, which gives the magnitudes of the links (from columns to rows). The position of the elements (boxes) is specified by argument \code{pos}. Thus, setting \code{pos=c(1,2,1)} indicates that the 4 elements will be arranged in three equidistant rows; on the first row one element, on the second row two elements and on the third row one element. \subsection{Simple examples} Below are some simple examples of the use of \code{plotmat}. In the first graph - four simple boxes are put; no arrows drawn The second graph contains round boxes with arrows, labeled "flow" The third graph has diamond-shaped boxes including self-arrows. The fourth graph has hexagonal-shaped boxes, with curved arrows. The arrows are enlarged and the arrowhead pointing from box 2 to 4 is colored red. <>= par(mar = c(1, 1, 1, 1), mfrow = c(2, 2)) # # names <- c("A", "B", "C", "D") M <- matrix(nrow = 4, ncol = 4, byrow = TRUE, data = 0) plotmat(M, pos = c(1, 2, 1), name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, box.size = 0.1, box.type = "square", box.prop = 0.5) # M[2, 1] <- M[3, 1] <- M[4, 2] <- M[4, 3] <- "flow" plotmat(M, pos = c(1, 2, 1), curve = 0, name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, box.type = "circle", box.prop = 1.0) # # diag(M) <- "self" plotmat(M, pos = c(2, 2), curve = 0, name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, self.cex = 0.5, self.shiftx = c(-0.1, 0.1, -0.1, 0.1), box.type = "diamond", box.prop = 0.5) M <- matrix(nrow = 4, ncol = 4, data = 0) M[2, 1] <- 1 ; M[4, 2] <- 2 ; M[3, 4] <- 3 ; M[1, 3] <- 4 Col <- M Col[] <- "black" Col[4, 2] <- "darkred" pp <- plotmat(M, pos = c(1, 2, 1), curve = 0.2, name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, arr.type = "triangle", box.size = 0.1, box.type = "hexa", box.prop = 0.25, arr.col = Col, arr.len = 1) mtext(outer = TRUE, side = 3, line = -1.5, cex = 1.5, "plotmat") # par(mfrow = c(1, 1)) @ The contents of \code{pp} shows the position of the various items. <<>>= pp @ \setkeys{Gin}{width=0.6\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Four simple examples of \code{plotmat}} \label{fig:one} \end{figure} \subsection{a schematic representation of an ecosystem model} In the example below, first the main components and arrows are drawn (\code{plotmat}), and the output of this function written in list pp. This contains, a.o. the positions of the components (boxes), arrows, etc.. It is used to draw an arrow from the middle of the arrow connecting fish and zooplankton ("ZOO") to detritus. Function \code{straightarrow} (see below) is used to draw this arrow. <>= names <- c("PHYTO", "NH3", "ZOO", "DETRITUS", "BotDET", "FISH") M <- matrix(nrow = 6, ncol = 6, byrow = TRUE, data = c( # p n z d b f 0, 1, 0, 0, 0, 0, #p 0, 0, 4, 10, 11, 0, #n 2, 0, 0, 0, 0, 0, #z 8, 0, 13, 0, 0, 12, #d 9, 0, 0, 7, 0, 0, #b 0, 0, 5, 0, 0, 0 #f )) # pp <- plotmat(M, pos = c(1, 2, 1, 2), curve = 0, name = names, lwd = 1, box.lwd = 2, cex.txt = 0.8, box.type = "square", box.prop = 0.5, arr.type = "triangle", arr.pos = 0.4, shadow.size = 0.01, prefix = "f", main = "NPZZDD model") # phyto <- pp$comp[names=="PHYTO"] zoo <- pp$comp[names=="ZOO"] nh3 <- pp$comp[names=="NH3"] detritus <- pp$comp[names=="DETRITUS"] fish <- pp$comp[names=="FISH"] # # flow5->detritus # m2 <- 0.5*(zoo+fish) m1 <- detritus m1[1] <- m1[1] + pp$radii[4,1] mid <- straightarrow (to = m1, from = m2, arr.type = "triangle", arr.pos = 0.4, lwd = 1) text(mid[1], mid[2]+0.03, "f6", cex = 0.8) # # flow2->detritus # m2 <- 0.5*(zoo+phyto) m1 <- detritus m1[1] <-m1[1] + pp$radii[3,1]*0.2 m1[2] <-m1[2] + pp$radii[3,2] mid <- straightarrow (to = m1, from = m2, arr.type = "triangle", arr.pos = 0.3, lwd = 1) text(mid[1]-0.01, mid[2]+0.03, "f3", cex = 0.8) @ \setkeys{Gin}{width=0.6\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{An NPZZDD model} \label{fig:two} \end{figure} \subsection{Plotting a transition matrix} The next example uses formulae to label the arrows \footnote{This is now possible thanks to Yvonnick Noel, Univ. Rennes, France}. This is done by passing a data.frame rather than a matrix to function \code{plotmat} <>= # Create population matrix # Numgenerations <- 6 DiffMat <- matrix(data = 0, nrow = Numgenerations, ncol = Numgenerations) AA <- as.data.frame(DiffMat) AA[[1,4]] <- "f[3]" AA[[1,5]] <- "f[4]" AA[[1,6]] <- "f[5]" # AA[[2,1]] <- "s[list(0,1)]" AA[[3,2]] <- "s[list(1,2)]" AA[[4,3]] <- "s[list(2,3)]" AA[[5,4]] <- "s[list(3,4)]" AA[[6,5]] <- "s[list(4,5)]" # name <- c(expression(Age[0]), expression(Age[1]), expression(Age[2]), expression(Age[3]), expression(Age[4]), expression(Age[5])) # plotmat(A = AA, pos = 6, curve = 0.7, name = name, lwd = 2, arr.len = 0.6, arr.width = 0.25, my = -0.2, box.size = 0.05, arr.type = "triangle", dtext = 0.95, main = "Age-structured population model 1") @ \setkeys{Gin}{width=0.6\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{A transition matrix} \label{fig:three} \end{figure} \subsection{Another transition matrix} The data set \code{Teasel} contains the transition matrix of the population dynamics model of teasel (Dipsacus sylvestris), a European perennial weed, \citep{Caswell01, Soetaertbook} <>= Teasel @ This dataset is plotted using curved arrows; we specify the curvature in a matrix called \code{curves}. <>= curves <- matrix(nrow = ncol(Teasel), ncol = ncol(Teasel), 0) curves[3, 1] <- curves[1, 6] <- -0.35 curves[4, 6] <- curves[6, 4] <- curves[5, 6] <- curves[6, 5] <- 0.08 curves[3, 6] <- 0.35 plotmat(Teasel, pos = c(3, 2, 1), curve = curves, name = colnames(Teasel), lwd = 1, box.lwd = 2, cex.txt = 0.8, box.cex = 0.8, box.size = 0.08, arr.length = 0.5, box.type = "circle", box.prop = 1, shadow.size = 0.01, self.cex = 0.6, my = -0.075, mx = -0.01, relsize = 0.9, self.shiftx = c(0, 0, 0.125, -0.12, 0.125, 0), self.shifty = 0, main = "Teasel population model") @ \setkeys{Gin}{width=1.0\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{The Teasel data set} \label{fig:four} \end{figure} \section{plotweb - plotting webs based on matrix input} Given a matrix containing flow values (from rows to columns), function \code{plotweb} will plot a web. The elements are positioned on a circle, and connected by arrows; the magnitude of web flows determines the thickness of the arrow. This function is less flexible than \code{plotmat}, although it does allow to color the arrows differently. <>= BB <- matrix(nrow = 20, ncol = 20, 1:20) diag(BB) <- 0 Col <- BB Col[] <- "black" Col[BB<10]<- "red" plotweb(BB, legend = TRUE, maxarrow = 3, arr.col = Col) par(mfrow = c(1, 1)) @ \setkeys{Gin}{width=0.8\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Plotweb} \label{fig:five} \end{figure} \subsection{Foodwebs} Dataset \code{Rigaweb} (\citep{Donali99} contains flow values for the food web of the Gulf of Riga planktonic system. <<>>= Rigaweb @ <>= plotweb(Rigaweb, main = "Gulf of Riga food web", sub = "mgC/m3/d", val = TRUE) @ \setkeys{Gin}{width=0.8\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{The Gulf of Riga data set} \label{fig:six} \end{figure} \section{functions to create flow charts} The various functions are given in table (1) \footnote{textparallel was implemented by Michael Folkes, Canada}. \begin{table*}[t] \caption{Summary of flowchart functions}\label{tb:arr} \centering \begin{tabular}{p{.15\textwidth}p{.75\textwidth}}\\ Function & Description\\ \hline openplotmat & creates an empty plot\\ coordinates & calculates coordinates of elements, neatly arranged in rows/columns\\ bentarrow & adds 2-segmented arrow between two points\\ curvedarrow & adds curved arrow between two points\\ segmentarrow & adds 3-segmented arrow between two points\\ selfarrow & adds a circular self-pointing arrow \\ splitarrow & adds a branched arrow between several points\\ straightarrow & adds straight arrow between two points\\ treearrow & adds dendrogram-like branched arrow between several points\\ shadowbox & adds a box with a shadow to a plot\\ textdiamond & adds lines of text in a diamond-shaped box to a plot\\ textellipse & adds lines of text in a ellipse-shaped box to a plot\\ textempty & adds lines of text on a colored background to a plot\\ texthexa & adds lines of text in a hexagonal box to a plot\\ textmulti & adds lines of text in a multigonal box to a plot\\ textparallel & adds lines of text in a parallelogram to a plot\\ textplain & adds lines of text to a plot\\ textrect & adds lines of text in a rectangular-shaped box to a plot\\ textround & adds lines of text in a rounded box to a plot\\ \hline \end{tabular} \end{table*} The code below generates a flow chart <>= par(mar = c(1, 1, 1, 1)) openplotmat() elpos <- coordinates (c(1, 1, 2, 4)) fromto <- matrix(ncol = 2, byrow = TRUE, data = c(1, 2, 2, 3, 2, 4, 4, 7, 4, 8)) nr <- nrow(fromto) arrpos <- matrix(ncol = 2, nrow = nr) for (i in 1:nr) arrpos[i, ] <- straightarrow (to = elpos[fromto[i, 2], ], from = elpos[fromto[i, 1], ], lwd = 2, arr.pos = 0.6, arr.length = 0.5) textellipse(elpos[1,], 0.1, lab = "start", box.col = "green", shadow.col = "darkgreen", shadow.size = 0.005, cex = 1.5) textrect (elpos[2,], 0.15, 0.05,lab = "found term?", box.col = "blue", shadow.col = "darkblue", shadow.size = 0.005, cex = 1.5) textrect (elpos[4,], 0.15, 0.05,lab = "related?", box.col = "blue", shadow.col = "darkblue", shadow.size = 0.005, cex = 1.5) textellipse(elpos[3,], 0.1, 0.1, lab = c("other","term"), box.col = "orange", shadow.col = "red", shadow.size = 0.005, cex = 1.5) textellipse(elpos[3,], 0.1, 0.1, lab = c("other","term"), box.col = "orange", shadow.col = "red", shadow.size = 0.005, cex = 1.5) textellipse(elpos[7,], 0.1, 0.1, lab = c("make","a link"),box.col = "orange", shadow.col = "red", shadow.size = 0.005, cex = 1.5) textellipse(elpos[8,], 0.1, 0.1, lab = c("new","article"),box.col = "orange", shadow.col = "red", shadow.size = 0.005, cex = 1.5) # dd <- c(0.0, 0.025) text(arrpos[2, 1] + 0.05, arrpos[2, 2], "yes") text(arrpos[3, 1] - 0.05, arrpos[3, 2], "no") text(arrpos[4, 1] + 0.05, arrpos[4, 2] + 0.05, "yes") text(arrpos[5, 1] - 0.05, arrpos[5, 2] + 0.05, "no") # @ \setkeys{Gin}{width=0.8\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{A flow chart} \label{fig:seven} \end{figure} The different types of text boxes are generated with the following code: <>= openplotmat(main = "textbox shapes") rx <- 0.1 ry <- 0.05 pos <- coordinates(c(1, 1, 1, 1, 1, 1, 1,1 ), mx = -0.2) textdiamond(mid = pos[1,], radx = rx, rady = ry, lab = LETTERS[1], cex = 2, shadow.col = "lightblue") textellipse(mid = pos[2,], radx = rx, rady = ry, lab = LETTERS[2], cex = 2, shadow.col = "blue") texthexa(mid = pos[3,], radx = rx, rady = ry, lab = LETTERS[3], cex = 2, shadow.col = "darkblue") textmulti(mid = pos[4,], nr = 7, radx = rx, rady = ry, lab = LETTERS[4], cex = 2, shadow.col = "red") textrect(mid = pos[5,], radx = rx, rady = ry, lab = LETTERS[5], cex = 2, shadow.col = "darkred") textround(mid = pos[6,], radx = rx, rady = ry, lab = LETTERS[6], cex = 2, shadow.col = "black") textparallel(mid = pos[7,], radx = rx, rady = ry, lab = LETTERS[7], cex = 2, theta = 40, shadow.col = "black") textempty(mid = pos[8,], lab = LETTERS[8], cex = 2, box.col = "yellow") pos[ ,1] <- pos[ ,1] + 0.5 text(pos[ ,1],pos[ ,2], c("textdiamond", "textellipse", "texthexa", "textmulti", "textrect", "textround", "textparallel", "textempty")) @ \setkeys{Gin}{width=0.8\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{The text boxes} \label{fig:eight} \end{figure} The different types of arrows are generated with the following code: <>= par(mar = c(1, 1, 1, 1)) openplotmat(main = "Arrowtypes") elpos <- coordinates (c(1, 2, 1), mx = 0.1, my = -0.1) curvedarrow(from = elpos[1, ], to = elpos[2, ], curve = -0.5, lty = 2, lcol = 2) straightarrow(from = elpos[1, ], to = elpos[2, ], lty = 3, lcol = 3) segmentarrow (from = elpos[1, ], to = elpos[2, ], lty = 1, lcol = 1) treearrow (from = elpos[2:3, ], to = elpos[4, ], lty = 4, lcol = 4) bentarrow (from = elpos[3, ], to = elpos[3, ]-c(0.1, 0.1), arr.pos = 1, lty = 5, lcol = 5) bentarrow(from = elpos[1, ], to = elpos[3, ], lty = 5, lcol = 5) selfarrow(pos = elpos[3, ], path = "R",lty = 6, curve = 0.075, lcol = 6) splitarrow(from = elpos[1, ], to = elpos[2:3, ], lty = 1, lwd = 1, dd = 0.7, arr.side = 1:2, lcol = 7) for ( i in 1:4) textrect (elpos[i, ], 0.05, 0.05, lab = i, cex = 1.5) legend("topright", lty = 1:7, legend = c("segmentarrow", "curvedarrow", "straightarrow", "treearrow", "bentarrow", "selfarrow", "splitarrow"), lwd = c(rep(2, 6), 1), col = 1:7) @ \setkeys{Gin}{width=0.8\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{The arrow types} \label{fig:nine} \end{figure} \section{functions to draw electrical networks} Since version 1.6, it is possible to use \code{diagram} to draw electrical networks. Below I give an example of a small transistor circuit. <>= layoutmat <- matrix(data = c(rep(1, 12), 2, 3, 4, 5), nrow = 4, ncol = 4, byrow = TRUE) nf <- layout(layoutmat, respect = FALSE) par(lwd = 1.5) par(mar = c(0, 0, 2, 0)) emptyplot(main = "transistor Amplifier", asp = FALSE, ylim = c(-0.1, 1), xlim = c(-0.1, 1.1)) x1 <- 0; x2 <- 0.2; x3 <- 0.4; x4 <- 0.6; x5 <- 0.8; x6 <- 1 y1 <- 0.05; y2 <- 0.4; y3 <- 0.5; y4 <- 0.6; y5 <- 0.95 x23 <- (x2 + x3)/2 x56 <- (x5 + x6)/2 lines(c(x2, x6, x6, x2, x2, x1, x1, x23, x3, x3), c(y1, y1, y5, y5, y1, y1, y3, y3, y4, y5)) lines(c(x23, x3, x3), c(y3, y2, y1)) lines(c(x3, x4, x4), c(y2, y2, y1)) lines(c(x3, x5, x5), c(y4, y4, y1)) en.Amplifier(c(x23, y3), r = 0.035) en.Signal(c(x1, 0.2), lab = expression("U"["in"])) en.Signal(c(x6, y2), lab = expression("U"["b"])) straightarrow(c(x1 - 0.05, 0.23), c(x1 - 0.05, 0.17), arr.pos =1, arr.type = "triangle", lwd = 1) straightarrow(c(x6 + 0.05, y2 + 0.03), c(x6 + 0.05, y2 - 0.03), arr.pos = 1, arr.type = "triangle", lwd = 1) en.Node(c(x1, y3), lab = "u1") en.Node(c(x2, y3), lab = "u2") en.Node(c(x3, y2), lab = "u3", pos = 1.5) en.Node(c(x3, y4), lab = "u4", pos = 2.5) en.Node(c(x5, y4), lab = "u5") en.Capacitator(c(0.5*(x1 + x2),y3), lab = "C1", vert = FALSE) en.Capacitator(c(x4, y4), lab = "C3", vert = FALSE) en.Capacitator(c(x4, 0.5*(y1+y2)), lab = "C2", vert = TRUE) en.Resistor(c(x1, y2), lab = "R0") en.Resistor(c(x2, 0.5*(y1+y2)), lab = "R1") en.Resistor(c(x2, 0.5*(y4+y5)), lab = "R2") en.Resistor(c(x3, 0.5*(y4+y5)), lab = "R4") en.Resistor(c(x3, 0.5*(y1+y2)), lab = "R3") en.Resistor(c(x5, 0.5*(y1+y2)), lab = "R5") en.Ground(c(1.0, 0.05)) par(mar=c(2, 2, 2, 2)) emptyplot(main = "transistor") lines(c(0.1, 0.5,0.9), c(0.5, 0.5, 0.9)) lines(c(0.5, 0.9), c(0.5, 0.1)) lines(c(0.5, 0.5), c(0.4, 0.6)) text(0.2, 0.4, "Gate", font = 3) text(0.8, 0.9, "Drain", font = 3,adj = 1) text(0.8, 0.1, "Source", font = 3,adj = 1) en.Amplifier(c(0.5, 0.5), r = 0.15) box(col = "grey") emptyplot(main = "capacitator") straightarrow(c(0.5, 0.9), c(0.5, 0.1), arr.pos = 0.3, arr.length = 0.25, arr.type = "triangle") en.Capacitator(c(0.5, 0.5), width = 0.075, length = 0.5, vert = TRUE) text(0.4, 0.65, "i", font = 3, cex = 2) straightarrow(c(0.8, 0.3), c(0.8, 0.77), arr.pos = 1, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.925, 0.65, "v", font = 3, cex = 2) text(0.15, 0.5, "C", font = 3, cex = 2) box(col = "grey") emptyplot(main = "resistor") straightarrow(c(0.5, 0.9), c(0.5, 0.1), arr.pos = 0.2, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.4, 0.85, "i", font = 3, cex = 2) en.Resistor(c(0.5, 0.5), width = 0.25, length = 0.35 ) straightarrow(c(0.8, 0.3), c(0.8, 0.77), arr.pos = 1, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.925, 0.65, "v", font = 3, cex = 2) text(0.5, 0.5, "R", font = 3, cex = 2) box(col = "grey") emptyplot(main = "voltage source") lines(c(0.5, 0.5), c(0.1, 0.9)) en.Signal(c(0.5, 0.5), r = 0.15) straightarrow(c(0.8, 0.3), c(0.8, 0.77), arr.pos = 1, arr.length = 0.25, arr.type = "triangle", lwd = 1) text(0.925, 0.65, "v", font = 3, cex = 2) box(col = "grey") @ \setkeys{Gin}{width=0.8\textwidth} \begin{figure} \begin{center} <>= <> @ \end{center} \caption{Drawing an electrical network with package diagram} \label{fig:enet} \end{figure} This vignette was created using Sweave \citep{Leisch02}. The package is on CRAN, the R-archive website (\citep{R2008}) More examples can be found in the demo's of package \pkg{ecolMod} \citep{ecolMod} \bibliography{vignettes} \end{document} diagram/inst/doc/diagram.pdf0000644000176200001440000203754413734555467015541 0ustar liggesusers%PDF-1.5 % 1 0 obj << /S /GoTo /D (Section.0.Introduction.1) >> endobj 4 0 obj (Introduction) endobj 5 0 obj << /S /GoTo /D (Section.1.plotmat\040-\040plotting\040networks\040based\040on\040matrix\040input.1) >> endobj 8 0 obj (plotmat - plotting networks based on matrix input) endobj 9 0 obj << /S /GoTo /D (Subsection.2.0.Simple\040examples.2) >> endobj 12 0 obj (Simple examples) endobj 13 0 obj << /S /GoTo /D (Subsection.2.1.a\040schematic\040representation\040of\040an\040ecosystem\040model.2) >> endobj 16 0 obj (a schematic representation of an ecosystem model) endobj 17 0 obj << /S /GoTo /D (Subsection.2.2.Plotting\040a\040transition\040matrix.2) >> endobj 20 0 obj (Plotting a transition matrix) endobj 21 0 obj << /S /GoTo /D (Subsection.2.3.Another\040transition\040matrix.2) >> endobj 24 0 obj (Another transition matrix) endobj 25 0 obj << /S /GoTo /D (Section.2.plotweb\040-\040plotting\040webs\040based\040on\040matrix\040input.1) >> endobj 28 0 obj (plotweb - plotting webs based on matrix input) endobj 29 0 obj << /S /GoTo /D (Subsection.3.0.Foodwebs.2) >> endobj 32 0 obj (Foodwebs) endobj 33 0 obj << /S /GoTo /D (Section.3.functions\040to\040create\040flow\040charts.1) >> endobj 36 0 obj (functions to create flow charts) endobj 37 0 obj << /S /GoTo /D (Section.4.functions\040to\040draw\040electrical\040networks.1) >> endobj 40 0 obj (functions to draw electrical networks) endobj 41 0 obj << /S /GoTo /D [42 0 R /Fit] >> endobj 64 0 obj << /Length 2320 /Filter /FlateDecode >> stream xYIϯt9'Ǒe)xqd@" _ufƮR* ^^{[36A_5&PyUjŇ@e+ZEq:x~YheK+5KTXT—,Kkkޜ*sDYkX]u:+SQ_,Ï; n=i6y4ӁؠA-ο ZsTsv"\[؝Lǚ5_q}`jQp2:p&|8>l3T)(*R!yEQڙ3](KoӪfMr|n, E5/h?0w5DcuO_478h8HTgiV9JQt޿ ޫ_Í5;Ce5ZN $? ڳ kPhuI F"e#s}JLd(jأ^X7Pg"^">sWA,CBHLD[FIJ2Q q|݌]"gZW[ MV &JA/5sOPC#P2J]{&-iA1۪g,E.0r#ZCZ͝n:*#UX։%$ >H8t4 bHz_zhzPr˂C;=B}q˔%? Q+6a}Wg*e0 8mgEt Tkk͖SGFZy{\0 6F?WL L "~MVϵfTzҍdz|ThiT E rBXL$@*C rQz Y+ K)}&B.:VM]ֹ2D+}T EPuOGqd4Y,@g,F$/]Q ecJjvyk*LꌊlɲQe$s{c7D{D.TQn{v7DqOGexCIG)Ff]W#tҠL%ilE^XƆ3dl~De(doRI hL`4yAᒞqXG|%U{Wp% |/Cqw5EˮdՍyQBTQSf؃Ą1ٸye8vFGKBqN(4t2,BP?DzyQzڇrm\f埧#"՘֭]'fnpzܿS1n K}k,';Ny7>oqpdQ(6I&  p4%T5 x"G4FDC~w9`SvtRcdٖ}xܘ:l4FU2EK&!M1Vqu.`Ofu6@/5\Xy 8,XkH87#]ƩYE"or^&(~,TQ _CeW!q PeDzDd i]-(B.C}DR)4c݋6R< LbB2rrr{B۰ DU K8"?<;E^H ~ %u2eFDG05+f¯)4Suճǫ,';QHy  ^'/UO$QQxH̸'7*Vd,PkDZd~h׏3+思&=LI}R*aea[+ Za t#@˸:3Smm4}qbIg ;Q?ܲ{Qg`HB@uNK:뭞g00Zs4<R(w\V/#1Q8Wm 1P诏?9M ?q僟t^. >' endstream endobj 42 0 obj << /Type /Page /Contents 64 0 R /Resources 63 0 R /MediaBox [0 0 595.276 841.89] /Parent 80 0 R /Annots [ 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 72 0 R 50 0 R 51 0 R 78 0 R 52 0 R 53 0 R 79 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R ] >> endobj 43 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [374.508 559.274 412.734 571.134] /A << /S /GoTo /D (cite.diagram) >> >> endobj 44 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [413.418 559.274 440.317 571.134] /A << /S /GoTo /D (cite.diagram) >> >> endobj 45 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [271.336 535.363 309.562 547.224] /A << /S /GoTo /D (cite.shape) >> >> endobj 46 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [312.144 535.363 339.591 547.224] /A << /S /GoTo /D (cite.shape) >> >> endobj 47 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [250.846 523.408 346.347 535.268] /A << /S /GoTo /D (cite.Soetaertbook) >> >> endobj 48 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [347.672 523.408 375.119 535.268] /A << /S /GoTo /D (cite.Soetaertbook) >> >> endobj 49 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [454.738 511.453 495.723 523.313] /A << /S /GoTo /D (cite.Soetaertbook2) >> >> endobj 72 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [107.277 499.498 187.027 511.358] /A << /S /GoTo /D (cite.Soetaertbook2) >> >> endobj 50 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [188.352 499.498 210.269 511.358] /A << /S /GoTo /D (cite.Soetaertbook2) >> >> endobj 51 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [382.474 183.55 522.996 196.348] /A << /S /GoTo /D (cite.Donali99) >> >> endobj 78 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [107.277 170.001 153.865 182.799] /A << /S /GoTo /D (cite.Donali99) >> >> endobj 52 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [155.505 170.001 179.316 182.799] /A << /S /GoTo /D (cite.Donali99) >> >> endobj 53 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [373.712 146.091 522.996 158.889] /A << /S /GoTo /D (cite.Niquil98) >> >> endobj 79 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [107.277 132.542 150.941 145.339] /A << /S /GoTo /D (cite.Niquil98) >> >> endobj 54 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [152.581 132.542 176.392 145.339] /A << /S /GoTo /D (cite.Niquil98) >> >> endobj 55 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [190.239 95.083 228.329 107.88] /A << /S /GoTo /D (cite.Caswell01) >> >> endobj 56 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [229.969 95.083 253.78 107.88] /A << /S /GoTo /D (cite.Caswell01) >> >> endobj 57 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [258.442 95.083 362.826 107.88] /A << /S /GoTo /D (cite.Soetaertbook) >> >> endobj 58 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [364.466 95.083 394.331 107.88] /A << /S /GoTo /D (cite.Soetaertbook) >> >> endobj 65 0 obj << /D [42 0 R /XYZ 80 770.89 null] >> endobj 66 0 obj << /D [42 0 R /XYZ 81 733.028 null] >> endobj 2 0 obj << /D [42 0 R /XYZ 81 427.861 null] >> endobj 75 0 obj << /D [42 0 R /XYZ 81 427.861 null] >> endobj 63 0 obj << /Font << /F44 67 0 R /F48 68 0 R /F51 69 0 R /F15 70 0 R /F59 71 0 R /F67 73 0 R /F69 74 0 R /F42 76 0 R /F79 77 0 R >> /ProcSet [ /PDF /Text ] >> endobj 90 0 obj << /Length 2126 /Filter /FlateDecode >> stream xY[D~_ /r uKmIڰ@AJ^[cƖN=n.L`7ح9;vf;z~}ٷTQf׷LRylf@o'Z0 L|X.%yXu2(6(`Ri=Wga$ M|H8x-|=.ŏ 6E|(ysCo2Tocl $>hACt%<ߴU$z{L&dzElld3J[:zPK97˸ 6%C;Y Tqhދ[j4ƶ5,\[W?-35T1%Y'2_Z"0)`c|xڿSғ8\c~L$5#^jZKtaQژcU:bԒ"p-+v \Q &YTZY#I%9;:(1.z8GNVQu.;eݳ_iՄX)v+&mysUWxljNcq⋺c% 0^n}QlvGSRs @璎_Ŷ7| ǟ@K8Yjs R,יj`ZC!J @G8V=h]rw+:rޱ]u:NeªPE~q:ݒKA7HP(- Rٺv}߶(IJ/b B@j3Sұ╨ %)SebT!Ag~CZ7;y3ρ,6NG_&-q {utT>XSnUcOxBvbjPAd24w?1wqukwOlsAܗ(JTa;@.(k#llHyF m$ܧ m:lč5h'Mtp>=؞?9U~WV%e=HRia#6;y.RVXw9oi')<5vR6.|'Vڈđh7x< DJgdSY;ڧi*)&Klq5W |7V[(;0P?Qbe@ǥaa(xsҡٔE;? \sK*b(`Wt {gvׅT·JmOYG9pBl﫱C0–n/^3`h_-K[pqL:h Uz FP4^F5)G;ե0M÷6ۅi[+M˛6[[X|u]^ )?6u%3̕6[㓇LMIrma=0!,Yv˷Vų,Z\gԩ]\on(t`vk@ӹ"-k֦誾c1:맼ߋ J} ppL{NX)TTrj- ܱOݕm>o~OYiGʛ˺ #O<;wrR`(C=3M*x/)h$c >EO>wi>f%m藈)H_e\? 5\PB׺ Nz0Q& ۊI{?dX/!2Na ,\z[ə,aLl== q~Jm|,sAJ<{6'ټ6Lœl^\{1\tQTH(CѢ^wfF~$2>?дf&ӆ cW0:W\_g endstream endobj 89 0 obj << /Type /Page /Contents 90 0 R /Resources 88 0 R /MediaBox [0 0 595.276 841.89] /Parent 80 0 R /Annots [ 59 0 R 95 0 R 60 0 R 61 0 R 62 0 R ] >> endobj 59 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [404.587 718.346 522.996 731.143] /A << /S /GoTo /D (cite.limSolve) >> >> endobj 95 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [80.004 704.796 186.866 717.594] /A << /S /GoTo /D (cite.limSolve) >> >> endobj 60 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [188.308 704.796 212.119 717.594] /A << /S /GoTo /D (cite.limSolve) >> >> endobj 61 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [216.583 704.796 340.314 717.594] /A << /S /GoTo /D (cite.LIM) >> >> endobj 62 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [341.756 704.796 365.567 717.594] /A << /S /GoTo /D (cite.LIM) >> >> endobj 91 0 obj << /D [89 0 R /XYZ 80 770.89 null] >> endobj 6 0 obj << /D [89 0 R /XYZ 81 668.466 null] >> endobj 96 0 obj << /D [89 0 R /XYZ 81 668.466 null] >> endobj 10 0 obj << /D [89 0 R /XYZ 81 561.032 null] >> endobj 97 0 obj << /D [89 0 R /XYZ 81 561.032 null] >> endobj 88 0 obj << /Font << /F15 70 0 R /F84 92 0 R /F68 93 0 R /F85 94 0 R /F69 74 0 R /F51 69 0 R /F48 68 0 R /F79 77 0 R /F87 98 0 R >> /ProcSet [ /PDF /Text ] >> endobj 104 0 obj << /Length 1548 /Filter /FlateDecode >> stream xڭr6и=Pӊ&^yhgNI{Lv9Вi*R|} p9`]`7e/~\^\]Ōeil\V:--׳9K<;x406">ɦ30x/WLxUj.,b"#> /dPiBLn KHa0 O-O;N7?8N6_g-tqDQ.8 @nyDd WmZ}~gqO7F3b,|oAjҊ[2"y-K 0^ 9'О ЂUX%fOk2gG&=5, iPA~9Cj78xi^ K"}Cv駵;R>Jf(e,Wݢ\s#&ڼ#kL 3]X\6 =a9Y6\CRقi!&F9kx'1c"0Ȍ^Չw}=G'g]4+!Y<<*Ղڃ[j)*rӟ,y2 u AͧR nl~&fid}Y'v+ =wvY19zΚ.rX>2hЌcD jU𱞇B.+B]F#Md1j#a.sxsM~ҊlUѭ} `M#J6-FzާU|Ӎȼ 8gDFru- s.th|,Zb SOԮ@ۭ̚sħ4;All>75 >Rm[o_"#54Xs3NA}3{k#fVNy FjΆb Վ؇9~BM_W_0,/Az:wbw$hAϹ(y!gD’+HK=. Eh pE+?\341ixδj$tPn[mp z~:]-I@-Aؽ_,/b endstream endobj 103 0 obj << /Type /Page /Contents 104 0 R /Resources 102 0 R /MediaBox [0 0 595.276 841.89] /Parent 80 0 R >> endobj 105 0 obj << /D [103 0 R /XYZ 80 770.89 null] >> endobj 14 0 obj << /D [103 0 R /XYZ 81 190.05 null] >> endobj 106 0 obj << /D [103 0 R /XYZ 81 190.05 null] >> endobj 102 0 obj << /Font << /F68 93 0 R /F15 70 0 R /F87 98 0 R /F79 77 0 R /F48 68 0 R >> /ProcSet [ /PDF /Text ] >> endobj 109 0 obj << /Length 959 /Filter /FlateDecode >> stream xڭWYS0~ϯ@)6S@Z: ;%$__Zٲ-;idZ{~Ү[ui~ȊЋ :ΦNQ](@^)7\I E8tpd'}/v2݂sRJ?1>qJ&7z|p\J,Ni)3Nc%?PNS?br"콏_ģ/$Bx%LrNIQ|n䵴l.@')er;ۺowrKN;0wY#S! D[S51tۇQ$6['].3GՆ,>yXat mw7 " endstream endobj 108 0 obj << /Type /Page /Contents 109 0 R /Resources 107 0 R /MediaBox [0 0 595.276 841.89] /Parent 80 0 R >> endobj 101 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./diagram-fig1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 112 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 113 0 R>> /ExtGState << >>/ColorSpace << /sRGB 114 0 R >>>> /Length 49142 /Filter /FlateDecode >> stream xɮ.ɒ7ϧCirnUj MH(ZVH܃<'ƚ׿_??/ϯAl_گo?׿_{̯k?Iku}H~kO?OfOoW?~_߿3k]ίBQk,e5s,o7w wzsZ5ް_Snu>9W&q?RO)Z\j?8stkFgٻ>x^Zw_N^?iK@{q¨4?8{6/_l_s?54_~zݰ< F>{݈ۈk~>/_7o-*G_qĽM,xu>5OyF0?_ۧn9e_p/߫cy\oqnyvEG_xu]>/`Y)Rp-::6h5Vg<]|_yx8Szj3;ʿ|~?k~󽊧>7oU_O/?u_|gw{t+oz??]O S<׫FEgu_5UjLO3=>z=5>gOj1nE>U!}e_[]C5ǫ .U?:ߗZyB>:W-裯ZXj_T? _[?_Կ5s?AC %IcC6|'{< ˞.nGQ\#3χh#?}][}M}^a}GS6JpyQԏu_NkשOj0{Ъ_58:U5OCSԸ3l=52P?g=5>FjeS/x}ѿOԀ?5$4kԝԬQ~1j`lQ[cH5S}=5<]O n-؂wU }Ϩ`S>u_NOgwN~?=z {3]ҞڇH;vI]+瑾]:\ŏƗ[WeTRzjSycp,Tأ|+88.uT>5;t}>wSoC{Zz>M3~__ӧw$mJM׏oTLxusRO]?}aO#'u8uXh~/2h:ޡ# ]_qu Mfhf} ÚhԿj=Z}|4㏎Cgyѳt{;bBu>O 3}|oџ|4GG ?6ghgپ>z53h:Җ m:>l0 t|>GE ܳc uxO='uo~:xhSg}K z|}Gx6_}4D{l/?:5 ˦[cEE OV~.볾/]c߈v#|t?t|Ǩc|[G~>z~'G=~|x=֡>O, )-~hx=-Ь7nZGY[f\C6~?"2Sgy q}ԟqmgٟn=oZ=q?q?ԷڟYks?,Aο(ˎbtL炞BKGCwiuOOK:/=z+3&پJyʿQv?x߃Zd6';;h?W~(i9רߍG~ps?쯏xޭ7;f41.G?:BuA=>+?x_id/x0FSC=;e3f?~_?zxp4{ӑO0>]iMzaE}ˆ3׆h|x[3,w^z_-e c?׏go-'si{lyx}sy?t?uWvUW}@1;*9q}G3;5>j3?)*}R6!^LLڛ#)?k҈?hOYw=|˻ lw|xҀxdo]dRxa.42GOhD~\~DyS?8O8~~d"@TSЕS'^*O=3۟Ot{=?U|ad(t^Wa#5쫁xUr?G_;u~OU<'Oտ_M {ͽCղ\ůFz`%OBC{-#hK:>˻hx]Ci5>?{3>gߍ !4ǟͻ9e7Ӯ,){"Ta|$쓕{~ߣx` e8g{j ~ {j42Kax~y6g_ON|.ӑFIMBo;?:{7u=^'>}>7dwKM5O_Xe?p.ϣ7ڥ?/24GfCOS/Soi+."/~mz3z;5gxMhg-3МZ#/g}wȿqh~ {+4/oƯ~ ZG+o>OGyzVԊOl\oQ~v~푈ԌWSo7Il'+͡qA}|tgevO矊! gjūօVj6hŧ1Ovܩ/v&9<ߵAgbR+>P~؃ #u^|?Eya?[[?(oW~(^Y?ߝFyu|G{?_[eWŗY?ZӲjC{} ~b S1k x@j6o(q?nJxFG{oWg{ӏ[Ng/OSDS挧ogٿyއ+_?.uSWo 3ߵ>q}Sygt|9IO.=8^6jx֥;ʟMχ:ǟN犇uo+8`oT>p>vѿu/G$>WL'a?M=lɇnOU|C{-yxjoq+|qk :?Wa;x.>'j;WͅD|g1 t|>6]m|DD)o֧NS_OhOD gL'ů^z53ŷ-ů?AS_A1zћ4ţzhҤFγ8Z^鉧mOۥt-Zp+ZѽMҌh(hhVWXkJY_03s~_(z1ܤ\*3;Ǧthclߧv=F~?~.Zn"E-D_}td Z!Pt#0u-蠶DZ_>o ٌj[oe?HknEsIcJѕ#ޏz;gHh/RI 7Q}m*BOF aя٪Ơ[эjGٲ4}hECMM57de{fzߋ3i7fS_}fSM5_ŰV}ul&?X;[шlF54ъRmeWcvvgN.+{;d=6,ks!/~fǢ ߳g> 7բhEz# ze/3[.}0Gz#eg6$YDv҄]t hE]i=#;b/oe>5ӳ& n;h)oq>]cwzp7Z}~l^â y=?tx}wӐ4~@q^pzT4V_цz~A˨k3ED$,e,E ڋƱ.:y]z?E#-e-8Dc^EH n3<0(:e9AV4k6:,QSyk҂/}-Uz~7EH ѠϋlD_.ЗI -Xo~6E[Y?~lOF{g񇴯;뫢.m>~VSt Ym_F֫hk?#&:q+p;Ԥ0:iWSv`lB6M8߆ο881̽ݲԿe;D)[*@ar: 3S6+qlggKfҎHOg>4>7iϽhBeo>1(S3#hc5mz+{va/`<OFЄ:^qe'액ʆ[.t.=꘍$E'r|;+[#SԷPM{O߃lІ-u|f.{5^{LuNÖp_lЕon}}wg=gG96ю ז?t ]@M4Cl/`CͶD78#Zqnh=_GG?89OgH;,E;%:ÿ.1lhH.zdEG_I&+'g#6Y_ o3~Q4 JjMϓͦ$myCklE^q[8yM@0tݳߴ#>Q#:S[iħh>E9?록ynCa9=iҧun2o|{GIk}hפCce1^72͖z==^*oE^D~^nU?٪}u>-snEs!jk#g^?4i5ߧGg;Mla1lSEvko- yٯ\έׅܖh|ޥ]by/f[{]3 +M?wu}f]ЮWF6PA6A5.l76H=){/zl _s/Zl>隭d?LpGE2'_҃WΚ/]׿DȿE︡Dw1C2zl5N叒A__&t_xK߿h킞S Sh/Eyh V|K'=?8~Z]hb;xmwlZwm>ٛ̎_mYj6&i7j,ixUmk6&i7?jv&i7ODmHm}^z@M3uo"鵾wл/<:5[y{C(W|h7V|ߊN)~ԊvV(S*ye:ގoG_fd~~noDDZ~:ʏj:qEWqtKIEߠq_ߠV?VآV'ߎh6+kuM0oS瓞-t iZMvڢgTZ7q@C^hY~l'E /h)HCN#]i :K;3ᠫ]s3ϰD) ߟ@WNV'DP~O앭"UIЅShE+za?=PІ-{6Ao_S}xjo}/-GD><Zf`Ū3fk 4aݯZ=fl~*? T~|>6~ zՉ/jB ®?tPaή)zkA/ݢ :-IM!^{_4ZmKjl%Own fMQƀ?ZqTRt,Hϛl\A/WmWeI8aM҃mX<-D _OdOOd {K'JZ?nGa続ЀCgkZiīZl_Clz~:( ~( /CPx?CAPx_?CQPx?CPxPx?CPx?GC}Px?GC}Px?GCPxPx*6s/ū-omȲϓĦ⟲m qbn\[puTꟺ&eٱxhOszީsK}Rgw:^džОόJ*o;{q~Sy:vc2[tcJԶytnY:ʳ>,t9v?N%u5t1Yz~KϏ-:+u{uoe+w_Wr+r#\ܙ~ IЎM2:«KU?~>~7Ls,jOwU?1㛳<[Rþ9Rq;x^b^ ũ7߇Y^ٿcM::|>/p%Cq|{+.ߩ/''ҜO+8 zOa_Z>{t}/?4gWG T߀[7KBs|xt絨'{_д7ޮ 6>Ԇ}/PobX{?[69q y?.:WnlC}7@Q/F}9sv9^^iȡ׫~oz_z [s7;J?@A>_!.7P[0vsC?a^,=1YbUw `+ר ƻyugz=ퟋs}>?̰bSwsF ]З—sؙJ _] >u|~wSqXB~o_6+pzU}>za {d|ɥ~YS3OfGaKcS5ʷ>nyeeKsk멟a?zg'ao=?~?eR=Q}Z~vԟL_+/+/ާk_#d5o?qjizzy^_c }Q:Y_NlB#xes:b_Wgy~7h_^,8GRPKLm^?^~/,{#>Կ式^驇~=pԠʌp>pu疕i.QW?|>iT4b_W {Cq tg ׫}g8A[z;*s{o'({}w>}AP:~|?DC\-};OIÚ_N!g9=##Wǣ_Hl+s:j8r87jRGcG};B}47'٤;u[Gީ1Cg@M0}ePy:ƻ1tl{|t!{Nr7uݣ%>zS? ϯ|I*:?E{N+Nwt1rG5U/'kםZ;=빾kx4SOyW?mL{-7#yWt+~j|6)^{PަxbP|w=\ŃxOƻ)^xF,fD߈ MF}?: `{: E{/ۻSo\g߫?QISW7ob,E=пm' /S_asAOp>Y.i'S7נ}U/W|&?Ϙ9׎m=_{Qyi(6_Yʷʷ~?bYk\+|o'A Hi(8`}⅋R #zӓ*:i_O]h?/G0>- %ʿ:0=.wcYʏoϷ^/޷?󴿔?X/+X寯8WS&Xšo-Mכ Iy?<р_<*o>zx"C*GxED~ek>Ld;'OTޢWq@߭;@W&muwE6Z{>ѺEo&=Ƌm9ީ#۲9(:+Q]C > FFV64f4:;۵}lhĬ/E^,k7YGXܪ.z`n]eG}}DvPWGF-.8~)o7Md[oYoȮYцhBfoi8Wiud߯wtDh 5=]N햵luc\z ~ ,dOy#ڳO{y#I+lշZaD6)zH[p2bz;8i=Xvъmv5ŷ}kjzsE;,DWR{D3hK=H7.$`>h.f;:â zXUkB#[4$o =p}F Mt iIQ\O]ؤ)NRtn~lҗE y1c7FzGHWљ4YbɀI :$6Ph(8'&R<I7E=>ڢzk,>kRGtپJnѢ|>҂h~Hzt[}L3yMh*G D?WUUt`G D_4O/Z^~сF:YKp%#mOCH1'&5i/1~_̔*۰п8!Md/oE˔8(Ua|j$-`+p&M6m4*[6,6`}xF&Ԏ߽B>[mV;X]eh쥁6kN:fՊN\ц5䀦5;צllg6]].gt/{e9ۧCدW55>w}Nz~54q'[}/teIa>ФSCcvTьv\ЕKW:7պh^&Z hAhiF.zՆ/hȦ%Z/5_hE7_N8h"{ѐD8Qt$f.$ѕJC0ۡf3^,ZmِwV0"mi5hA/ߺE<Qy.i7ѓI'ɿ$c] vZѝh7CŇDcCMD?vxnEڭ*oڍVS|c^h_Ot:Vehl{Юh`_ mN|kzhtD~fl>/g۸]?]0>wC{:i2]p@C 4Õ0Ǜ[Of+i\.M)eI;iW/tCkn+~(z?- >с=4wCftg迆{o(|@?Gʿk*C'=&~ƚ>O?al\l=i7\h`9[ ?5_[_v`l,=d`k =pilx+< Ś'bW#Cl[n)Mh7H?j/i7GMh6o[in/w=zzxV>Adf/{{f3'57߿⧓_SGmײ~^kY?owY?:~oh7V|*P_f%ϻ''!So}?5q?;6k5']|'I;ZuVju= =;u~Y4ǰP~}mԯG,WE+h)hm EK.^):rMYZ cDžF+nk>;I S {@| ~U\lk?z_ʏo{'Dt Z򡗴 Zm=`q6s6D7Zh Z&4zV슩 Y]h゙Ճ.ZC R~|>E>.T`ZB&/lR4h=hvMaЭЂ/]U4(zl8ۨh+FzT5[Ï,{&^#ۇ=X9ѭheG].{Ӄ샹5k9M6&>fmo]o{8xq^&5{nnЉ%~!~Qne[Px?CPx?C}Px?GC}Px?GCPx?CC~( £~( ~~( (Rx-ps]D>?-%>-;@ρ%cDW[F8;zϡ-mCp,MnJ#<9ܥO94*'\{Ǝ[I=j cpMp| }Nmy-pCs[逮7غ7uL-=?[7g[>H,]"2tН)}j Йb'3=dt|S[q7WS\'N^rtw7tGߏ&݁LϹIpL{5u}hp,kjZ GujN _N mƦ&Pp/g}-pCB- d{8ڲwvjn)[[>>|e)[0`.= oϏ,tOĩm}rūkKanzRud)t< vm[[b|2I[؆>KO/-ug_ቷ>]n]R7.[|7mھ}E`k Ьh?{~`x?[[ʚ疺h{~OnQnXԬ64QaiKa7Bm Otix♰ ڢG-tnhn <߈t o׵ŰcSc50#|3ǔ=1>^9}-\qCx|Nszpsw35>Am/=4絨'{_[>GBF2th[vh  tu`KEmLw wtn-p%J{5e?oW]mځ+b<F_W;q!Ψ/C_nh~2bM[?_  ݡQo?{~mY[ 1s9mY[দG[aܮN7nGyeBU[N[Gch \N-pSOtn'<1t75Ĭ/#pi \'^-p[j =cr vm-k~75K[Oo/l~h_7-pS_aWym=?czM=j 뫶Mxu74{~O1x-p_E:T[#zw}?|վX~\߱.щj \疝׉si \'-p~׉{i \7?fOCx~}-Bn^[V 7ڇ#^-q 7]#o~O_.?2|sxOT6q>ۅ7?'.㫶uni-p]Ʒ/7 O靦)//l!mO?}-pswC!XEM[9-ps|?_nCm~鹣3}/{}-T LG.myi|s-ͺ챃'0][}ѿ--nڏHvٟO⌋z!`wm-pG~?:׉i ܰ>j<-pC/F8i#^WB{C?-p[j Owt>'?uO;(oSv~(;N\Xs XƻoOŗQ|y =P_E pNq߹eܲn|x<~z]M7xÿY x; u+?AmN\Mna>?9 J5Ů+--oG8tW\է <AWYtc8P z x+-qqK≸%n1}x"nDOL[O1x"N,7'-pSp_[UU[_n[F_RKx) %͍Ҝn[Ufjߥwk?hﺏO^j>-JW(i XV4e&:Ǵ['k\|/5&Ca4TM6cm4-ބѿUF4ˬ+{ۊB\6N.?@&؏ L\l~iIb{ z~F˻wA4~L]">T{7ΎZS-XǰVkpdЁMڰZB6Z{>;^њ7yAL{zzG-Teo uMt٧H(я*цlVэl\ʖ-ш4!Ţ 1j}Ij' xe==o]%-·7=1٧sܢ %kq54qZZ\EFx.szCvZ4Єmp&4zqA'vY4b5ۘ=mh^Yuz"[d.>D/2;ݲ;.kA/ I#Xl=iZt,F4!=p7My}^zS@oQ%oԵxڋvXϴ^҃863{]&.fI?6yaфMw=zx![t  +o-р\̎^z#MhNJ6 (.p0ַL )A+I_-mƐi8EoH#]Eg6h x{b4.Ѡ-b~ۚ;-A}H)z@oу:(b~[tI w=l_](KZk1IZ*:nтMt g Izoj1I[u 4IMz=b~zтP~CtNR/o.yʎLO]׫lKԔ1]Vt!iyWvgQK8I;#=A]iE(k0씣?dڢ Mx+{v\CtK^f` eg[VJZ|/᮲ڬ);a:~V+:qF:~Ȗ^YXYـbqz.Zqvnk_z]95*LMv}>'mɝZ|/ݰ+[}/teIa>Ku[wsvTьD;.^[:пw趃him^ыGCj5]7ʞ:-?9[m tя9o>![X_^8~N8~~4-Vb{&zd>[I&+^{+Z|/5~*?ۛۺAy!];Ye|ExK,?#3ѓ\\o-OnXh7d+ڭcq;.tQ{nX0<[= w}[V)91Y=jU調i)-֢]XQ;账wn*|KX|+_t犯쪟TN6@ n0lʎ{ۖ썥^Ym~&͐5{bc8l{i!mxߘ}>$;hi?+޼fs`Y-e@ y1F ڠ^'mf'}fi2]pAS qZDGuV2%&A{ cHOn/Z`6GؕwifES3Eŧ\Hۈh񽜭Q.rq?}\|h6Mt_s&m`1㍋kŵh7,e7?x]C;?v1;X%0o+~<7X+\,fo:_5;E]fS_.'ZmW_SGy⧆P?⵬W]Ov-4\eT|BL%D~rV$͵T?@O߁5^j҃}6+fߺނ?Lq1≸_D'Bbb|Cb|lDFZPMX}s_\xٙK1[ӊgC}ה6K][<_CPx?CPxPx?CPx?GCPx?CCPx?CPx?CPx?CPx?CPxSx-p_-p-p93p?i-Rcz4xPn|7J_q^wx8ZnhSq-z!=SoS8wFykTe>4op%ݶ|0oG ^6Nj-Z6dcvdS阖{gսħBoo͝u婻n%wmػ*4?p?se:ɦ‹B{{2͵<-46s-B/yhq0oZrB#!se824_Kphc:~BWoh#lh?ݯ 'w6djO74p{p N.4wo(̣]߸~F޼~#_hzBcH.61B~n9 ?8tz Cٽn:>߿`9F}3἞yh~?\ϛWrx>mQӼro@}S8db.+isO*|CY}i +O|/zrl!]ǣ?'lD?8ozV|pb8UyVpdO?$4_rY6Oc:{Ԇa^KjK~Vh7IK>Lg[-qZg:*ӽr?{v;|hFI-yo7ZR+q?vzF}q?-Q2bNǼ:'3lvT?gD80^~xןuwx_r kgpr ۗS7;ӳL}77_~/ώ>K^^ih@w >b;s㰷>Sd c|uoZb >пʝwR3bo'u;3L\+9:/?G?14Ӡ["xǢ?{y^P߄Fń=I0\ӿK`8 ,ÞT}8x72cGΟG]/S/[8oS[zU7h1_/ 8G/_auwc#eB[O=OS pBO?91o.2~da>ϟWL}x1r^MMCh߉#ih g4i榽<&Eco-ֿ?ϻ<վX^zm9Wxz? _WcS8- #avo'8U?qZ[G]3gd~~Y@ߝTWyS?]ρ߫~>YC?FmȪ*<m~x$R[WWKH)Un6rտ_^b-WFN m:?앥-տ[MůU5]cʯ-Fnaő[:~@_= T5^B:哿@-#]s7x٪ %<{C x_[(:B~ﻕG`öihϖ͖ 4t$lkJ8?%>kUOrѿz⡡v=϶Ѵ o-/l}co~Bm;7Otа<絆 þ̛t G>dL7m{}yʓB]^baW~ 9_#קzkValGH{r/ukTv}yl?G_r'ǎ/7ԇ:쭭#n Kg%_Z}E{vh~MB/'6D~wo+~qxP-uؖc( xt//@JMO<'p~;߱{Kϯ- -<yԊW?%=J:-4yN?()^()wwyݾikÞ}{)?`o, |-SOoԃ[SCym^)^ye:xcG!xFd-o۲ - >dm-OblM7Cw!֓Iݨ7X_e 4'$l W4s`<{nku_>z|Wd|;ѿ_j|!# A8Fd7pn8ap>ahzTD1`?mSv;s:7촇; @}tG$;ޗxaT|;SX'@)J] y?7#:Ro[~ @Zoq+|q|WwM{O?4sG龝㥦?ye}TZQ/z?]zw{()_UCR{*Ј4눿@o'-{x> zjC/.+~#왥7x4ݯ?G^GO~t|?:u~%)>'Շnc.#>¿^c20'm˃mifWכߖ}\M6tDaO.xO7^<*G|uҟO!Rȶ޲ސ]ݲ;hU S#C֡hò6W/~ofF'Z8]No*lC z^][~}h%(K4,7, P0\$~+cF]qLڍ:Xs1cVݾ&${1vmxboO ;3ۺŮc)؂?k;ػÒ9=lm5g1كb Tq0O18 /fɶ^a[Z~bwN~{=1OO\;[j8;پnOy$TfO+{cg-m ]lU3 )kL.]~;)'O{1~,k|V['lAl{(vXU@3kvd4+_abߛQ'mkw-ކڛ85~-n6`{x7.7;Pe%efj~$Œ7lKzB勽;kx{X{MfƕU6.dɛӹ4{gykY;Ƿ*$ovx_~ wIlyUw_=A^='EV֛ahft7ٚ]gD؛M?w5x7.g3fU߷.>/{V+'z~z:ֹ2Fz:?]x~޸-7Z )fA~׺trvOf ,; l4[lEG?yͿGDvJ ]jXy||nH!;-Rl7Gp7<BD6d~Q)Eahch--lE6[7q,v3'V.Jmmei)؝ol7.ۭۭ.. ۍe~n'_[`Odў;V GW-e6gv.`EZ\i nnxe![Db`_-Zu|Ӛl.Z׫=oZ^y_6j%G^oߙOB`px_?F 6/6[5nFnk;N՚`Yܰezىi6c;ߋV{xq lmǺ%6[=^ȞlDc {Q&nOZo_yv>/z#@lhx];^kb~6}== #4!;>^魍V3$ocld#mlg&.nzs?+fMêkyΗu~^/ h'lmFvB\lfVdt?6.V';E6ya=bl6[8Q}^[FOoJe4u%;bљbmݶ?bEnl?ݼ3 v 7Zm=Xs|X&O//Wۗ5>5>lߣ~"U__5-~jgOf5~oBvy 66ί~ֻy*V7(ߺbMLǺٮ%C۳k~ M$ڶfU qWf{XWĮ,Ci)Y-C6bkw7gZ{W q?+^.b[1s> 5$g{],d+V^llumhO odv/d/Vׯbfl؀j6f< gFkT ل%g} 6Zwϫ_M)SfK:/- x~8A/l`Jj8قԤƾ찤h`c)(ԬƦrO̩E^>Q"{Sm`8 _k'1_KlA7Sf=6m{q3 w%_,/ bXx_,/ Ob}Xx_,/ b}~Xx_,/ ㋅b >Xx_,/ '-9;/o>#CY?|?ЭQgۿ{)v_I-3?23l~{@ N7s6|I[`̆Xz`5̀&.u>p@l:VṯR&;PG^1vd3= ]Y.H]:z#[]a  Q )S6bf5lv Κ ԏ~Iy;l8nhd,*#ס.w%zh83gԌ x`W3^fAx{FNpҍ ouBvq:0FW0jQ͉Wqo8gR ߐ@pN^rFܪ ]'сPU UUˀgv@b~Vٞ3z8mfUCMŁ8Xk 5V8}e䇛TDl\|^mcC3CpUμѫ^ lRv>oM>G5x@;7bg0|"Ql UUπYUJDclvp"2M7J/i":٪٪5/]̉͜7:,:30B $ o5~8r6ȪjdUa5Ip#y1nB$O=ILTf¤f`UU۝b஠"Evন97%;?gtvaVzZ%jlUVUNUjfU4!uNAu"x_2 ޺9וֹ*N(Bg`5/q s@.љ䈄Z*XX.8_9QTER".RqcBv} -v})R6aˆ&|f:,`&rĪ,@y+ފmO6];lory+UUUQْU2P\sqfp*.X|AzgFPIhsHxԒ=i*`; >éhnl\u=هG`GӀ g*&fͤ*Q<p5W9na0綣4gGD`+p*W<ӂ]n 4hMiX3Mv:g,ᤍB(4D!,L y."D *ӑDfmteU1ﰽCw`io5j6wGx@^W^Փ^ϑ;o!RGюcʣ6o?\@4gy̴}u0;&L#7:  0]bԝ >/ƨ;{08YmB=oaTV ܜEO*v2= n+ȳ7pȳ!Kc&M9Lp{992='@8V]|[8o8p1?]5w^mZD:*'F mWVy<.>~Q3Ͽl$}bˍ:wY"+ۜ6g;ۜ[d}ՓIg%?s#LYP&X&*(^*t(&x&!rYzLp BEMUONT*!-cq uw2%v݅= #x ;,*nMqW#?5GO6BAln<\G ˼/:e^m]e삲@z9UG]#Ipf~V48W:1P$Ϫ距Qx;*NAف?m>B:i*;M67V# 4G77f!`3I:}{rVEgS k@L8x_ns @T}媈_ c"V]]Ztus=rhxlrhlrxʪ\3U fJڝU;I } u;is<⋶ɯLZ n0}ƝLϸFvug OjKX,͚iɟtp!hmQՒōzq)ؙ'C=ˋĵa ع5og~;x#gްʌ!V<8xle8bdhn2+ȫMī]īgwWuG`b_9[>z,Mt0WXdP2yͣH|ǮênYU׍z;x.[y) mofh 7̰Cn:Z՘Iq>TDk%|9=;)m \}sřx:9zƼ>\+G G ۷]O3pv}O5u΋5pC/ߟeJY;[}c p\,4'`}8gkCX^-vz>bdg~Y<1Ef}7~$}<_|Ƽ|0w 9[Ҩ>>{#ysVYM_oza}3[YcIĔctlM̈́ v6?~)2hSMOL>ݞ5l~"Sx=߹8|)rp(.؞1]aM0F[l?f>ix%}n =Ƈh!"|֋)-'fs':e<9_L@mrpng=b\}sslE¾?o~gŠ1?G' \>ag]k9|>_z/ny}?3&*O?_4>kOחs|yy? STb,W\׫ozO i+E0Lg_^l_XoGyH]7``}<߿</O>'<>ݞ8<ݾxskx,܏X0S1[ρ{·!VBHy`/4>:Ɓi_˘!Z0+܏F 1YOcx>bЦ"3E,2`=i?IiOA{R ?p L{Sk~ '<>O G'dz '@_1> ?1~c|?7yQ9Q:z>),_<1|'F텽0v^c~M鬯=5g_%!u~Uؐ&<7ק߼>&^^wכ׿>^u3ύ޴ }H~C9go,wl<aiWe5F\}_Uz_^%|qϷ2ȯm1ZqyY|^I`!I~g%;ԧSe W"7q"3yNRmY_5_l_u)| \|yg_?Xrfϟ'yևϙ Let=/og<؞"{}/l_}->z?[}%o/!b{҄]SXaϙaf/lt I-ȪY`pz)g{0Tlݟ'x l/3zlL nfÄmloǧs3ao̶'-iǧO'9??gI[T^[ߣl|>E}f$| |zK[_+[-??|v}Z_-28fr} zMvVDdR2믾^X}]ᆴ׿ad}[i}^i} j@7?j@7k}u} goOC'PynǦYǶETЕgn~ ?yo7fY7㼗4D6_@l@y|󂞧<\QDy}}7my+~փUiQ-0wo0m~X [dַgy9ϒygj>Ka'Wyn_}FCШX ~A,{gS ַo[OE{NzWўSMړZ`ړO5iOƋ'-?I;p}V;/[?͟AFyT50:cj-Ӝ2$0{p|Ÿۦj} QçHƈ3 }@gqxf0AX#O8P֏/>AnP& _ez~{]Ons? ;>8&)?XvMY[b|53L-̓V}L.,n09X[bqy,n}~ŭ\Q~}${ƃn__R_\U fMAME Ys)"Èr("oTX=zȯ)a9\YU =k9 n ם,}Kuf~Q~týpJ2(KRF-Ct-jKUfk1k٠VVX"s)Fkka71wtVbE=sW[j6&Rl٦j-w9V)l3(B)lumrT:xAe6QcنdJ,,AnMl ܔ"B |BUINael?erb3lrAT+ y׶gf ŔVZ}B-VhK D[(ge Q: :CQuZ;t۹%\|jgX)`'wm ܭsX̓cظvQBܕ̑NJ5^<jp@["X;k]"l+Z6Jԉ29ԑ)MdzJ-}FOE ^>àݾ&w)<{3~tIxswvKeUrC nJ$,A^\zdTPٷ-\/>xFTB\Ew}Fd'U %m%Kq,-ݏci~{m>AJXR{i9,m̱D54HK|O;6`䱿?*]ۤqR̓)*ɖUdˊdˊJejYl-se=Qs]UKZj 6R.i7+7괚1S۸_A׸VYɘlƵZx XXk2jrZF-NZ0;Nˤ5J.9dj$7Stn)+H1ҁÞAɹPKXJ&,(gP R|R{]4/oM>fIfp]-ÍvS]UIc/.+5b$8SBة)>rԡņt$5ITv\"*{Pw'7mpcT81˚" 7'ޢg3;$B/PuS@.zՉCAu?NRVIʢg.N.ORJ.P5̢(iMӁDbѲ[v-;=_e T6S-VxNU;Ω8Z䷢bZ,[Q~+j/OJ&/OVo.Xܷ s"X,/]`&r69?P}Ͱ]Xh!R%ýDސ{!Μ(]P~P%6'S7藶Cg+%}vab,uݶc5gS[{z;mݱ:zꭶjXjŽmXz|geh3khN68~2PY|5'JZydȔJ^Z~+mD6J>6'-En JV!pe:méd UY߬&C53z6Y{_z\Sj32CL!O?q휸תNX^nszuDTdV^)Gkž9 8vWXܡje+lC-^aj '6xee˲ΛlE} ~WNK6ӊL,wϒ'lW+:U-GPKq*?+e JSy)y;Ng%Iq*D, Y`Ł0OyzySJL>P#%E 7Tʽ;Fr[͵'^{Z2|[ {VRc/Yl)'XRCz\"}0밸o`m_ `UƯC,W9dW\:nšN'+h˱eM%ٲ&[,[eae{-vrD3¸ߔU:~PNj!z>TYVYkU%n)^xIm7k+6\aX9"AmU]PUy {-3ۂ=- wsbJ2PrD[JN\Bɥvn΍U*aJ؟9hL3M8F+jqƽ~ױ_MI»͹&aEIB#Snۭ>, mPq9#8MV: v[m.]>̂k~Q춷moyV)Fdm88ony%'աn4we~畩MW ~`+-ŭ`mu0~ߦ w-KzUG-ƪ~Sn3#8YYY+N hAtL!G #㜎%q>7~[#Fhb;9 y>;02 UgEU!YP/s>$>QU(|N{.zٺgR]7XLiQ0g +'&$\qQT.W1`uCxDn@3n/ ͈݊UѪ mhtFqhdz+CԳ͡Y'2a ZzWFOB׽oy'P}`DWb>qa0b.0Fۣn'ltկ9>L[Wp78ǣUo<`'*x|ܾb= gkxGokh_.Jب+%4B5x 'fohY>$_YĪ᳚m͏/ryZg*7rHV#Kl本F6LB$?f3B\g¬,*,4j&̈́c~F0 wwn hΫy|krEWK+U6Eyp󡩉$ Jv_*Z%UYԴVIS2ei 6'WŭvUV*6T՜i洦xH"q';DQ %ܨpCL(\\pq9P8 ͐ȗ3tݲ\U`"GxSa+Мݒإ'u:`[oփ-7ɕjT `g/3CʗҙKpl]1.B3jm\m-ۨ \Jf-3C]ɁPMT ZeNǂSq:TRWVY-8tgaÙzVBճU-8in? 8.7#H8F&K[p-4oS@Cqgv.Cq" *&', !09aILșd[pT0T瀩*KTB+ao0T )!9` A[; Lok~oyWp]!FBϾHZ;XǺ0QOnǼ5u|1FݘWs;PU6QƼ՞1$D1ɼW5ykT )p9ճ}&c\9׈ _]iȊc췑跑yl;=߲fBn118*fBxLx^w3yo7خⶫmqu捫WWArJf\Ujd?0W%:`9]_Q*yUr$mwX*QU'T_*w2_ hfp JVgxb(98'Ug)~)⁄CrV(WsFDN'qdobxm=QrUtmW=*R96 N#߭%4s8ehP2a)M9U,hUQVNPQgkՏT/b?(5xdA͡YQsHGrʑX5B8mv G!9Qմei Wpp wWp'e.v'q$lą>I ںjCrggT&n3K}qmO$La R GSrDz<:vV)ū:$Tɛ] GxaRx Prԛs[X.D,l;i3U5\vw\nUGӭy恫cy~,)qIu/>~|wgVC<ZP1]Pq<&TLȨjy3E!㤙`!LXP8X%<<MQ8i;ݪ[u¸lQ4yy6^^3{h'{@' AKyei(!CMDZd℩$3'L%!8i*/JUp`$'WzTatLo8] Dže(8.}Mu},lNylלsH#{C)q Ay{w*ۏ6~bG+ߚ_]MLrym`ӡ>(57~P/i2A ĕ),?p^f$dcyHd)}!_Mx? ?<7~#)BaF=~+`#yEQ`qGdJ}p7:Ͽg80GiIx@bwY'Eu^__?J[fʹ">Zo,G_o~op ??jQVH|{aj~O#̙M=3q)ۼ9~*sI$꜔ I/9e=xrnU]X9=)PsxRd̾>c%SϸZX@9P^T9j9RN*X9HپܘO29P)jP啃Z4g0`NMyVIוY#u+(E2s8΁څrOIXߗgebWY23Hhyf s:[0 K_;[Hp)zpgNU9C}=1'ҤF ppg}oi2%ktNN'UKv'\Óϧ"yު@29%>eUΪ`T%>q3O::\9py<>vLL!QhW%Pӭ*\0V`S"唫|puo U62R=87a>*~`aC-:*訃{>m+Lhs" . / : CH*0&Qx-2q VȘ=߳r(X,9r`d]O_yބOQ>_/08s}"AGlg߬/yL4=}4y)-o9 wg}xN e_=;@Q¿tbKL'WX:10֮W4vH܏s0w| ]}jW >m]v7:i'|;5wׂ'|vrc]emόyćim;´w!"5g.M48a].H y))z`L| ͘Wgٖ3<"mt5CЀU=m8lU<qYȈſ}m%V ʞpnG(J eٖG逹o ok𖞀mRA9u<n!;Ta)BH$FagDᅠѝ^3(eXX.Y]?~ /QxШ)dىx:G0~e LBً”"r&ZHf'LǕ-ֆlpGn[(ßrԋ|lo|*_0oj,74[ IxK6S.P͑lk P$xف铼J[B,$MҠ|n89ɰC5.; [hW0qu;*T9pRr 8EW3ێ ߓ)h7ҩ,GE9`,[?#'\]k|)9ڤA.\}&KTAt%w7r*Cʶ+# ʰ'c"č޴J%2~˔T!.,T%O'$3l w9vV}$x0v pe$(b7 GʑArPiNm,%MP8236 4fI]REfPԵ-qJZ$ل"$$qDAvP#6줃59RS$Bp͐,,|QUo83o雧k=I6<6\xAwO%k%3+Hs&hoQ&j<DCWX&3Ъ?[ r81QMTQИ 2ńmX|Wf̹=( |D&n(mS=?sϓn 4Fz^XJvי)7JV-Y6%oe Q!wuGN)bQW<ŝbBA|ORu#~ R X%o'J6Ctau0?֤O<4H•|eI{6rLmŦ:#7L$_cIaz4>}д\nôY'#UŦ$M3Kylцhz-…TVESd}4j{vc&694˕zfrtRf+z9' 2ew#W*wt7+cw ϮreeT<}O&";.˦MRj>T`{.1]#0s0rUʳs9OEtGtd︞k'$giVD>;ս?Y3q^}!Mw=xS,gQ{3Q~?rusVߢH\8VD)]UW+Ϯx4g|r/}>~JULMk5g_]8 >8SO~G_ex~V2acq.9͟E9=\IrF\ya5S'*e:J|?P+/D$S IxT*-J}C|-t(5RM坈tu# 7^}%5D7`d3 #Q`'#IMI‡ W-_<.OjjJX/[^TY *UwsTj{eg:'O(wR3[u k.stp?[]ɭ?GAWΑ4Lj1`n!Ga{* RNhPp'Վ'ȏ9`Mܜ"ӿ]ƬJU`:yI;,rzȓv'ի;[Hho&{{pW^WKIvR}J|o׶`;DƝTOK:8#}=:c89ON**+;ȱܡ#Wsx: *(9ǏJԗ=:CcQ}!>Gl%=Jm#TϤ&jq0ɲ,jڛHMv<&͖4v6*k!+3=R];|? lJ;x? lJUg7_L{ur}J*E8 ,؈ $HH`6lIF#+ϣ*lCvj\Eă>г>!4滦<-J\ tnD:P…Mex2Tk_Tԋ A+4TE<j_!Г$P5aӹ+ =RYsBWLPZƒ8uҒ<8БT!U7+/yEO!%cbeP>LФ"X^CtJ~VE-B|Waq?#_er7􋩙ohSi[S FYMS^oZ%:BjbhR m}n]ٮOxޥVb`=xvh_|yGI7о2)ϯ # +Pwa dK~Kwp(QHSZtoe"{*1Kqp4ߏO4Z]b:*+DQU'1< \f.o\c vm ŧYFF<.3Ow* 2?ު~C) 06Ćugf{-"JW>WەAR}ܝr{Ek#2ˢ<tccVIQ3FNr׮?ez;__Dz ۼN QOU"2afT\ZE$CŒ EԬDܖT^<3Wየ }/2oՉFcZvVe>-^m=֪Ԥ<:L++l(m+LϪEY[n8ȡ92\\pK&HMz`EPegVGyVf_^)Tk!pG7+dۧ3M'o: X)0`Ԇष1Ն)t{38p2':h)~cz4ri6(GN)4j.ܭoI  av2\]8P}8Y3 }^Hwwce=ܳ6J rY] Ju('6 3o!D/:ml0vvmڽ3iaԫnDy+߁ tXؕMgn|NȰٽm6*]s*O`+:IHx$`\tԺoY.mc1TmXu>c64C hPIP 3 .m);tsaʡxLM#*;2aR +-LW~ݔ&\eCqZ0FNxisK"C" P;ce )Hm-Hqaoa&ZkGCҁJZ:0 oCUR W:<֢0susw3m]ݙe NEaoK[^JŦN/̅, odRa 2fQ8b{:5[^J:YWL̕áwe@^fM>V7Izp״矈_`Lpz۫}m 'ܹM0 eE wN(i6@]8%ZnryݧѲ}pI2a)Uam;qYEv:vbh~c+l ^/)gds$pFR" Bz0$=LvWOnp&(D6F3vo4]D0Gx'H#"j$"FIx_/ewVm+Ź]}cTj`T:FӱqGiӦeZ O[Vs!ׯ);$S yv> endobj 113 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 115 0 R >> endobj 114 0 obj [/ICCBased 116 0 R] endobj 115 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus] >> endobj 116 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 110 0 obj << /D [108 0 R /XYZ 80 770.89 null] >> endobj 111 0 obj << /D [108 0 R /XYZ 245.859 446.496 null] >> endobj 107 0 obj << /Font << /F15 70 0 R /F84 92 0 R /F68 93 0 R /F85 94 0 R /F79 77 0 R /F87 98 0 R >> /XObject << /Im1 101 0 R >> /ProcSet [ /PDF /Text ] >> endobj 121 0 obj << /Length 605 /Filter /FlateDecode >> stream xVn@}WRlxb*J !yjC\qU3_(>xs9sv:j,d7#? B ьH ,6Ha ?S,FL&2'͂чL#ID,uBvnB D@0 ͮVOD r*~%ٍ /bZp'M%(:Xd~VZoŪmb%[vz~z` p񍐯cpp#/3aq8ۗJ"6f堄е;Ӹu|er?G| =E,3A|` r[T Z/"?`q/k)XLlkI׶ rvUK?*upWeu гk{'p!עF!1+bSK=⭱djIo`99 endstream endobj 120 0 obj << /Type /Page /Contents 121 0 R /Resources 119 0 R /MediaBox [0 0 595.276 841.89] /Parent 80 0 R >> endobj 117 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./diagram-fig2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 124 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 125 0 R/F3 126 0 R>> /ExtGState << >>/ColorSpace << /sRGB 127 0 R >>>> /Length 1348 /Filter /FlateDecode >> stream xXMOGϯ#\]W F f(X6JW132z]U:SnGm7~9R_1jysu{P?M)hIST;upXPmnwyY)XGV~W?F^>˷oeԷ~n*{u`k3Z/+)KA8U+ka#"g`%k^asmt6ς 7|SHXw1[Y< G)yCcDGW:Eʼn1"$%?Vo+r1ښ$G7 NOKIS*PrZΒ؄;+V{x:ފ•ؐػ'|P:_܃[~kl")HCA9#5S=ByK'MN`RIۀI`X!e|EKp6`<.k3DpRi3$u=zvl/Xx|מC y{*G+XAG"Qq y85Q =lU|QerD2VbL+,<>Vg鎮y:CcX} ;1ϗeGø`YvU`%v#C;r:"dHD쌐وh${Oub'kX5aLv; }mBUa 3ET;Ch`v0T Yp -Gy`&D"qIT=C?_I0B7՝~8#hC#^a$b'<'% GaBn2; ^/qj)SpMjF[qfǮ_z2c?4WVZM=|d:oտ]qD\2VBR?>9T/jslhGtݱ^xp`xL RARmun9?(v i[ 1C{֗c ՗!bbY,jE%ǎ]VCkZmLEeZemWnq҆'lU`+ 'G?Qhu< ޶z֍Q(03 fG^*6vv!SAn.sgQT/n_RqWNmJW{&.׮XnkVj^(rElb2KsoM.ɗ\q%?N endstream endobj 124 0 obj << /CreationDate (D:20200929085854) /ModDate (D:20200929085854) /Title (R Graphics Output) /Producer (R 4.0.0) /Creator (R) >> endobj 125 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 128 0 R >> endobj 126 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 128 0 R >> endobj 127 0 obj [/ICCBased 129 0 R] endobj 128 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus] >> endobj 129 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 122 0 obj << /D [120 0 R /XYZ 80 770.89 null] >> endobj 123 0 obj << /D [120 0 R /XYZ 277.435 446.496 null] >> endobj 119 0 obj << /Font << /F68 93 0 R /F15 70 0 R /F87 98 0 R >> /XObject << /Im2 117 0 R >> /ProcSet [ /PDF /Text ] >> endobj 137 0 obj << /Length 1888 /Filter /FlateDecode >> stream xڵYo6BHhňǺ fÀ[}|Pl%1Gf9;%J]7m`Ȓ$8 d,U 3(M0]vtk("WXɉ%IsӴp$TO#u|;µA d8-W90q#Qu>UQ$}RT` ~c[%1*sS"Y Kd?cQlc (Q?& JԪ`Ho8%Cy鰴5^Ԭ 3iւ]Ab>a{h.P5@#97 drDIsT)K&]jV^"^{Bɮ+kmg< ІM TEŤ2y$`ª"{Efo:SSVgj6Y.Z>EڙjX1u)v2>ݤ"A"fD‰]GЏx@ U,N,r.^r7AS6Fn0#bX?B$|eoYaDĮ[&`d} K:VM!&4=^.}disZ,W( d=JН]qGw'B xd vx+J?mw'joIUMrاpتY$MF[k 9e$Cm<!$)asvs/ }Kf,$?mMn< k!S@R=L j\;LF]^ٶP>?{ cNvɹ] >L[OE5\d;y(h>{mA+v M^oSz њ3}B9fGer՜D [IݞH$f vvyyڽV-˴^̥ēlEhK U.vCd XELbJ$0Rxyi)QdYDhHnq"i@o<.6>*~@,]ՋXG S͟nW}\t-,m1k#_4i>-(O9%r#;8= endstream endobj 136 0 obj << /Type /Page /Contents 137 0 R /Resources 135 0 R /MediaBox [0 0 595.276 841.89] /Parent 80 0 R /Annots [ 118 0 R 131 0 R 132 0 R 133 0 R 134 0 R ] >> endobj 118 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [331.891 698.193 338.614 711.329] /A << /S /GoTo /D (Hfootnote.1) >> >> endobj 131 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [352.247 301.59 390.337 314.388] /A << /S /GoTo /D (cite.Caswell01) >> >> endobj 132 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [391.518 301.59 415.329 314.388] /A << /S /GoTo /D (cite.Caswell01) >> >> endobj 133 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [419.531 301.59 522.996 314.388] /A << /S /GoTo /D (cite.Soetaertbook) >> >> endobj 134 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [80.004 288.041 109.869 300.839] /A << /S /GoTo /D (cite.Soetaertbook) >> >> endobj 138 0 obj << /D [136 0 R /XYZ 80 770.89 null] >> endobj 18 0 obj << /D [136 0 R /XYZ 81 733.028 null] >> endobj 139 0 obj << /D [136 0 R /XYZ 81 733.028 null] >> endobj 22 0 obj << /D [136 0 R /XYZ 81 353.971 null] >> endobj 141 0 obj << /D [136 0 R /XYZ 81 353.971 null] >> endobj 143 0 obj << /D [136 0 R /XYZ 97.575 109.765 null] >> endobj 135 0 obj << /Font << /F15 70 0 R /F84 92 0 R /F68 93 0 R /F85 94 0 R /F48 68 0 R /F21 140 0 R /F79 77 0 R /F87 98 0 R /F22 142 0 R /F90 144 0 R >> /ProcSet [ /PDF /Text ] >> endobj 148 0 obj << /Length 1269 /Filter /FlateDecode >> stream xڭXKo6W9Ih/= Y=d[qZkq_r(Q' Is8o&^}N'7wI8y{'TG+yӓb=?FF[;g?/ ?s%)0*^džLٞ`"Wt9s%lG<{ E{ņNqw*:5Vq7ǴoD;em5\Zs)5qy_[W7KBF\Ӈcz8)+m3jS /n$22؋=F"Fa U[}4tz@}‹ K(ZY>r_ҟ- jt^ԢV<9x(>3?̓t0Qa1o *ho1Sڐ h`*Pf{]Y*k9樦6}Ki p>Gn k!>FW?Q,qEk؅NP@IK]+5^H*vg^Ma7g}C[rf9Hܘn7Z N#" B7˥ᨊAwXt2V^SJKh?;ԕƺ7OLWj؇"!!XԢJ4*"r7ݓ7V> ޴Ұi4h2xٸZձĊ #3HF3h oVtۼ&ĵw*V?b앮 eӽN1яR91=yj=lZϱ'- L>55OXe endstream endobj 147 0 obj << /Type /Page /Contents 148 0 R /Resources 146 0 R /MediaBox [0 0 595.276 841.89] /Parent 152 0 R >> endobj 130 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./diagram-fig3.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 153 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 154 0 R/F3 155 0 R/F6 156 0 R>> /ExtGState << >>/ColorSpace << /sRGB 157 0 R >>>> /Length 53496 /Filter /FlateDecode >> stream xKfIr_q$ K 0f-.dIj$縛ǹ=.*+-an^?~??~SVJxۿo}\VG?[_??Ϳ˿ݿۿ??7ko}o>?6W6m_G_=O5i۷z};{7l:X΀MGp򨵀+|z}WB 8xgG$p4=O5`߄8ՏoV-`,y99>g9!<+`gS[jŻyO6'?UPx޷{~:Z~xw~xGCc> hqtŐ| BS1mpƻċ5c?лw_s=w:75S@|'>q=?>g탟wJ-ipјcX\ojy@ q|gr>ɱ05b>8ޚkwq}vXqXB}axyCs?Q}0='_ rs'a zr-+߃W!8Ϸb|p_7<:اap?7`Io~c8-Ӊ4܎}Wk_ǍY|mo lh/:BBx߭O`CGkj?ߣ??xGxc?`~ıο-_ec,> ,c0ȮmzSٿ_0}x^xz|~nb>b_q~+ҋ~q}+s#w|`;ϸ_:AӰsfa6 WaI<`*cr~fwXintIe얰LO&oD$~ Do8x{pxz^x}|qlh1Ux,m`otȭ}ױaVzvc7jkൈ;u}'~zpiO {cz11~1_>Is>l%[㛅 U!؍?bo۱Fl؏~b3cËu`S,{p9}>zQ{N;<Ҧ 70xQ!Fܰxa8;?}=8ۏ|_#`a0c{DqV |?(9b=zI1_cݢK5x):> p TEa*\?T?hxyY_ {'y;ϋ}*,8Zϋ>~hF߂%&3L_ut3&%>ۯ|oo7h?-~W?Ͼ^~U?~QoK <>.x] 4]4$cfł .\"4~RN˅ /w Cˇ2/!\F4ȱy)QǾZ leh\V4zic6ZfXbFe*h}X첣K:1/AD 5/E8X6%ImM8V_LfDb7U8r_=D_4 rqnKHmZ=ci辜/i/k긍KƋ87u<%Nz2bZOXE˝P.y.{xK:vS\;Bˠ0/89H풨D;41;Fu9y43Iu7RR}`}(4CNuS} z 0KeT99U{]R'/C/%VÌٗYK:/n5j5Ů>]/v'B{dW'ؖdW}b=/v͞bW*vsk7smi/vu^pVџWnִ/DŮ> U9/v}]]`]uibWdWW u/khyp`Exأ-LȄ}>KvuEGmeWؘdWlŮ.{{dx&ǃzk=6k=]ؼ?lWK6o~d0~,:e-:eW-՗]0d?Z`Xzm6/vF>[|xjK|~^-]gU 沫fbGMw}(UbWmj[(oy6{['7Ů _G{wD؋]-OŮnbWw)vPbs!6~;hˮ>g؟ɮ>xa&3^^]+o7Cy0v`[z:q\_޸Ս(U2؋].rbW7dW]c^쪫 ֋]uyT$ZbW],`/vTbW]^*5ɮ`oDŌsO{/v}Ů#v}bWآdWOv 'v}ŮՃp>ŮɮxÒ]?Ճ4j*"ճ]},/vŮɮxӒ]=]=X]=ɮbWA!{UŮU]}po/vl/Ů!vll?[l*9bSޝ\6W9bS97]}/v Ů>xzb#j+bWsUĮ:Ǻ9/©<ߗ粫~θj+0eW{JvqdWˮ:-v5]vqȮˮ:jy粫Wju粫%q] l] |.xˮn] /3ˮ&&bW]Y_uȮFcE>k;?mNvyny|]4isSǧ^4piuҧ4 gҧOK:ҧץOOOK: ySǣ^4]q(.?OuSD:(4]Q%SѧI:nҧϥO}S.}xڥO9[!m-zގY~uJqo>uLk.joK:c_DStN9K9}xK:uS4'+Sǭ\q_>u˅S.}Xu˥OrSV/}KZý"q>u拊V/}*ŗOvSܩO[x>ҧ{.}|:$F]m]1Ũl3ѧ)FrbzSc^1}s;Ws;mz+ѧϸic~Ft)g]Ս'}xإO[iNisݺ.}ΥO[+/п[}`xVD_*NLq֚-LzȄ%{lD:ҧm>mm=І!=>-֦A?ľOyےmIיquZu_[u|`0~C&xK:>ҧ]x7EKgcwlD*1H<_o|Ku=bѧy=L4I:ҧI~1>m(>ulv֗O>uOsL.}xK:vַ|!K:ҧf$/Sǫ_)>m.FK:ҧ^1ڠ{ڨkގc[>maA>3Ss\.>m.Z>uO OVOҧCXIcI:{LQy=6ĨܐK:ҧ)F]g_^QN K:ҧ vS}\\>m>m>uOӝCșS{^`]qҧ]K:vFS.}ꘁLO|3/}xK 1Sǭ^(>mt>ulҧOis~/}xK:^ҧCA>m2ѧ YҧGi>ulҧC!{s"8G.}(}xK:ҧ^>u|ҧx.r9A>.}xK:&]̄).>ur7OO'kҧlI>OҧEN>xiWYoWYѧ'I>(w}:A'}:a$}:PdӉ. <ɸZѧO'mE΍!tbJE:/t"/SENÒ>a^xѧ^ҧ<^ӋIE7Sq_Ş#lZҧ&e=)_/Od>8P>|iѧa|iOqy?5{,-?NvKЫvP wtg+܎M6X} |kܾا8m>lӡM><0tA|kx[Lhy+vy;njC l [N׎g*⁽Dd=G9p>脂y|`e><3X]ωj̝ǜ QNo^19Nskx[? gvoBz}ľ>X.qc& `{v w{tjK-0}FvspzGB"N<Y`_sj5OٰMnF"Wǯgjv,v[Koё|W|ƿays{M u/ޛ-]{{?#v(sWKtAD`It|&Ob]!s;!?n&:jha'"1}`~j1t]w{Љ>}a~3z51n=~!:;Iacާ5̇| A/ިi׏}{XW LwOLlTb x-a67p~N):s W`z*3wOΓS*k;ܨc[=ؤxymou7B= j.` .5MSjkP)5KtMz]410/^ _S=!CcapwFlڞx? ~9ZeG"&&~8+85.x_&c[Cm]p uaXR֋~dT{[L܎xjC?0o^^>ZuzRޏԼq=ċÞ g%u6)uqV)~=J]>¥~POpEA4AНѿ{k)zbMvͰ%;ߐ:)h(z 9>K蜊hx?j63+e+Ųv`FV7bX^?bŃg;.;b>eetXOkNV{Ī{g.X/;b+W Cb}`"Orup,S`s0S Ԗ~C}n/##-{撨1^K~`}kc,37 \,3M 7zIVO'Ff$rthn\+w7o$R >x0 (n&v)&^aU +%8? i7(ZF/PW\Hql\[ȿ̾6~qKrć 3O|=mEB}^]'\EFx#UӰ[g p'N73TV~бfʌ5ccd!7U u"!CO^0C73;a 2;$ 5ͩCDG)m'6⃹MN^\nЈΣi].S2!oK7Գ[Qn`7ɂdžjL箸ݱzڿIt "r+#d[ftoM01ݬq 0 GPFab1ۢ5 ܈F}ɦnC=i̘d sRQNPJT93I.?演iɹtGfAhձY*ݠP-85~[ķJ*(w}%\5(!E e.Ĥ(sOQHUZyHJLKe.CŌPe.xR(s2LIe.dTLQ6 ^e\p13rAbY)ʴ( DXALXz/QUŰ/_Lag{(Ӛb[S ;GkH{{2Kg)fJi65)ʴc~٠?ېH,16qezy2ᾺL(Vt65^L?EfEIe&Q$B-Qσ m@1XWiG-Lљ +6~+2wALD"e2w ~w Fe&!#G@2w^ǝ"@ߝ"@qq+1E_w)SY^E/Q^ȸ*/^쏍I}Ťmm^b{4{h&>%'S;|*E/QA ^2ObRy*2nJyD`tRy0(DAT)/Ubƾ2Ry$Eg DA#)<ٔ̃ )2{1E_KXWx+tLfW^QӮ(Wdx(qW+t̢M2{(MQc+W\Qcm㯫M?!(qW阢K>/TLe:2rE^e:^2+t| Ee>Wx+ lW+ ܯ(32{]ೊ'DeWx]Qf`y|_Qfb2_XLVIQ6IiP( 2kend%8Qe痈2lQf~:ϟ9]/]L)Lyg/V5]خX}aܮiYA7uosM0?DCӉC"JM?~M&]^.01[mT=bj1=]G3AQ$7Mc'NmnZNw8C g(lN%蜆:i>5+\iSH]OB[% x;%6wĬ^Aw#̏ Iywbv Cۥ~<\r'soo~K!"v$x w W4;AϜXZ}'b}v"@ `v,tQt 5Dr'!D~p722PV("<3F jvͽm;D~LJlÜr%naK"A шMa]3 ra{AzDKIOn$J0ED )5%} 2kaN8Iz+9JķAl(H䧁1ltqm -DUFnXI{[a&E~gךHPgry|C~v"u8́])k-:g=ݴ*EL[R6x#Ưa.y }QvQP',Ep={<=Rhefg)Fy;sQ tܰSDʃvb_1.8#OsZ<p1eb<4?K`^D9ѧe^/c?b·dI(~G*!~C/UC})D3E+1jḺdؔvଡ଼" 1*De*s9l 8su` 8RM`d7וp=D< kLAy)pLV<+`|#+D! l:R}mm`1͎]CTR2MHqc>d)62.{*Uu 50Df2!H;D(%])`+G [`0޸E^"dJ)aqRNM3WכH<St Q0}ND ?a5=>2tHzCJtG)+L"$" eVx-rsfDӑ50bbe JToU 0l 95&jY DJ#nxpg:sJl,GgۖŘCvř>\ʼLǑZኌg:fϣ .tϒ % CVLtVvv8W zJqS8|5b:_*.OL֯8)W2J04V8W8řϾ(Vḯ+ OG)3;9zř]s)(qf;LǶ8w8%tLqwGa|!qoJҧQ?}*CD}J ;־Lma0^eFNg:3~řod81g%>LT>ćbK W X):R )2R 3vIS8;[q81c7œ} ]w ]ˏ)oVgv,)tl3غ@.3rř)8 g:3[C$ř)=!8W'2(k7x+tg:>3XLdz^qfg=3)3rř]qf\)p8W+sJ ob)ř}ęQ݈3;#W9MޏgNxhfKqCL4{L*/q&+ΜG2q`8se2d,{)\E2 I*g2X)ř  R2~k?3 8JTL8+\38suX>^*PP9ř̅){~ř bg2x(ř jgOք%q~8ř NSW K8s!8#řPTT3 Jɂ|)\`g.fX0Ułg.)\)\J 3 u8G)\,#qBga~{Hi}ڿ[ˊĘX 'S鱾%|0Ř]gZE%3 Ri(LCgZUަgZl8P&řgBpřVYADLk Q3BF2dNq5/ K3=LL%4V8Ӱޥ8 Mqbę{3D$δ!qaJquU\}xę)δ>KLIqF3 nSiRy$8b%%,`ř(Wkr`c,sȰ3/g ?}SXj ęaH_&Μw~:>9~ϩ@oxfČv^bLvOkܮ3t!B{7 'kHҠ5di`F.Pt KBBwC:̈5`Wx@Tdrv+2ǰE]rn|#cRBuN:1_wCb`wWD&!Jb\뺟!wؖ95eȜ*9>\9bC#눝ob0?6Y!0C,yܑQY)sšCt z=3vXgm#_yq3of: `ȓ=gA==3L9.X5lh> .d肹.Hibl#dݠYiҚ! 諨7ڔ6qHQ!SgZ>~"tJ4'{r z6 v1 bs : B(eÁ,cG b.r^*7B$.^ZWdu}^ֈςc^0;RgEv1Wp 1t ie|g788Oob$Wد{s[j bޠ\,5ļOJK^{a1+R ve30s@<ػĽ)ٕ#2lC=c;B}q#.̰|ZapW9fFT$\"KlC!vڑZ$ޅ8 D,3ĭo*I1 C %&?HXg*8tL`d o!$o5jXhzi[vyktEj^~v(L?K"k&ֻ{ N(#+Bjb>ʌe2؆31% a@z^W옸CTnY?;b{GNCA^ ~GO'(] ӎ\=.𢡽 |ڛğt# :Bz0ߡ~Ehoܾ{7> #Ĩo4\۔R}pE,c,8`=[PۄJGގux> lAFȪħ>~a#},8J_ #GIa sI{*ReƲ qgK".ql~/~/bGTIqjYNjʈ<bN1.3Z¾an@'تC;xg̗]I]p2)A$ < b{O\+ Z8u+#*{}[=Ţ!ša rqhiJDs"x,$š@ <zdQd-2C6ڐWM8w_bPU!.X=2rndUFՂ=io:ұ Du5!fߍu :0_GF7gKCFx$]m侈M̌0q{w0_*M$55lrE2ǧ |e'`2 e(59DZ-w1=QM{ԃ=wI$M'oC jܟ+.u.w~b'adLqVύtkFM!hyM9ևjz8+m$$܌ȇR\+_`sf`r -\.-K_&C#!wrJ3#4Rtiȵ 2 Qoa^Bsbx)4)4**BMY ~"G^a!ifO M;LL7Q̟u "Ev!$oNl̰k<LR9cSb6&f٘wC4ސ`r "j2rVlKl)cJX1k(b9E; %&¶}`|'le ddU[1Hz4$C2:0f!0K & ]VajlCJɓA!81Dg4JX.\om;Y0{g'ls;b `rqÒ7 !'vPב^EC۱'4$v {Hg;p(A:h '.QS n^(!yú?^7nElЍ9$Ƀ8i)-C6sըƁ K_Fbwj3O_R8=簶.cB -0 ;2~dDMjeXDg$[Ʈj* bp{F zЃ1Aeyt3P91$j3+:Rk~6 EM)$ φzi`:|?.!M U<_XI5TjOcARP(ea%'35 slI^ -o57ˬTRa<- :UBH_ z5<W قMA瓷gX/H:P[~ρ)OY8 U!fX3`KoVn*,MzH0CWRV['HO')~.UcN*,u+`g=G&@xjG}׸BKdO|/š4C%g3F$|w]d:q|p|w]s~Fr"=+cرT |2//]v+r]ok?tEnGŰ)Q Qi^=j0ūz$*=pU'Ԭjx%+GIJ"j&aMof{B,{yRen1k7C]aئJ:`kO0k_QÚ7ZW [}k]\KbkC$H%U>In] 5,#Ԩ ȸIkz$*E[ngRCMr8}Q%i8ozף;(f=F2ݪdُ4fb=Ic%L_nָ;ۺ*B^7l5!j` *x_ׅ˸79$yQ32Q{{7-fw~}3Q'qWY1w趞W<œ+N\R˱K-Z_j9v{N"IDIDeΩQyo;F3jcOBI%fݦ 1EqU~%ц?c/~5b\$fA:<9Mn :͌ \1#Nt`;D8ܴ06bZBB zIxdhGc7LP0cQdzx(UhdzcJ1 FMC&vJ|. ,̷#0UM";FFɕ*,I"r]cc*fuP )k2SȱPP;R03YBjm8U+ZNUxv` .g ZiϖO-W&dH "ȧ`G`eGpHz1_F$o##t$j ^0oʥVF"a *>73_i`>~銯WW|1] ;wq z+{ ż"m9^1vyeT s0BtXV;kBm JAmaW fюI;Jia{ ݘ,nX5'ӌK3I&K` Hnt䊣g$lL@F!jO<~FUBL >3z 6(H "1f`rߢ4Y==xWIfڈ2:NJ 3hN|MŞ&bR-WxtQ`2iD=ptB;p3hpf8't3ԅ IMIiM8y4Q6(&Q zxx`*$444SZ.WљƠ\qW܁Pi]\hPgI,x>+ pN*|z*tHJўlɼ- d ǡqmLwtxǶ(p5NBtxptJ:#:C(qR-T=1ɦ!K.xXMU:lу&rh/ hxkkmTMДiUv<=l ˡ6Uc%A X5(8:S3/G$7WxIW†5,MΉ<R5DLJM C8!/,|*-{C:M{n{c TiEcm ڤ`Qίʖ 6RcSIZW`oteT(!s?rM؍RO2fzxI:WaZ\ ƏIZ7\J(-Ҥb%%scvoH ɐ=̈́+R1#\a7㓻_^5 ЕAu|c4u@RҖ+Gҽ0;u] ^u6-7]t< O.ib4I͸yI7vRBlKRxfxt8]C$t"l˵߸W 6]w q:P? 5( bJ0)EJ)$-"i>,p/]҅EE(E-bG@4(EJ3u3e>߸K+|~J=mzO)Ik!%J)Pjf3Qjx0RzH/j?&:tHRZ V?AMW!5^eಮWI)́(ן Q?U~J~@4RqWz>v2e^+3l]Rz{][)ޒsҠbtg73z ~da xK} R \COezO-'ZB(TAscĆøx[pTځI;pЫMPGM}kghgKwh.iN8MbBEY(p!Qpʲ)hTxTav 2,2$DߦA.@A1:ej3 mnFxH8)<(:d 72U|AMѩTܹ;8j0cj +rE&9n0K|=~a 7Xv1EŃv[}сl'c0 8[I)trdS:OI' H+ۧ+P7/=E猗CWI@|ME?X$*;8"]I¾79XTz20dXNEzŴQRNnIm*PF1%(A鸽4E[X8ݞpuTS%J,~.#J$npzH|-y*R:^ptISIoz+Gեd1,Lu D^qNNU$O0RAJ^"%*(֞*S/.#&'zU$/Z&M ? %wLt$,UxQ!4ͮtű9x(R2XqXq= b#+V:Tب.GɨOL Sjc^~~ jmQML8ht(u&VtqQT Y,SAZ&jX:|crCчQU|VCpAJc|Gqe阅P0YFݿX/Ydd '*; VUK,k/c=Cc@z0Řh #~>etYm.K+@Y,q}d#:^Y1&\TT\H,?a*O91^VIĬəxQ*Us.'œX9X91ksE91`!ʗЭ~ɢ,~*h?PN5af(yNWY3D8l*!ʝ,x"fSJaPZaHpfboKc}$;/9Y3 A\EZ ϚaHb>,j/*C4bET3 ]Ϙo&gƌjmaO!ΕɲCsA7 >+K%Ff(sH֤UE2Q"*9Q.dNVViwz-S#\u>Mb.L,oc>TL%,$8c_.i 1Ztbj!ԩH+a.FH&2"NwdḢK0ʢNE2}T$nLdE2QD+\]CV$6?MHE2Q\]E0X)>5H`)>By,&H&[$sAsE2~6d."#g3ㅳHu},","|,"4T$7dgL~, EY$sM?{QU:T$(oL8 A|_HB,RSИG?AypEg`\?n5TDt,u}8)>k4"]aTPE T\fLE2* "P" m\۲H46@k};pL{o"APyRXCE2qoL8E2Y$s,뱶OpH梊@E2L|"-I_z,if6_]VLL,H*rV.E3-7{,F? )>J+,yT4sX} 6B0\=0S1w:7mHܪC"pɜ(ZE2A!A/pL,p~ht ~r:쳹Trs@`PZ4$Xf#aP ?Pq0dSNhO!p~fHp" @U3c~w>fTb|K (t!M<~ ,}ϖ:ʑ!*[iU_ÿeK}% 79S i~j#~|Qh:XT26z!6* 1IK{c֔{e1@Ya21KL!yP>?=WXoX+Ǒ]ZKm6~rꥒ*9*.,MtK7h`fg@deMYu33Cr_=#:CAS"#, ?ac>W_1 t0NOez|Q'k q?~~_qz4?rzO__)R7O*X`w*߽Uz35[`}X›p<s@x)~P+R%:?IGNc/??.U,ߦTɟZ d?-,n]؃S]V=wvWl{Fp6hަ_ ?w["}P@S=O%֑?c?O q L_'ؿz ww冎7t&￁IUc|Pz )JR*|*Hot|S['j }TSz6U|z5HyaS+f`Q4 ^)x/|-svDtS83T!\Uxwh2GzFsly L)dFTJ"5RflDdޯL膷,W#VoIltK) G=5r56Wn5R~G-ɬtl~Қ0T_5lRsn'C#k;\5edۑ~B^jʑjJ&5a>n)g]XF'Ԕ[/Ւ&l"$%ba"Ykݵ;:I-pǫv̀T{a#uczsK9nRvC7ԙMuX촻K5BG$RمPeԁvՌWZvqG/ȧz%.m|ڑjQtBFdTEQlj==0j&G{#ٓL5sd."Ә5y̨6`$5򺅬j/#55W0_9ئz>_2[bV%Vb>/ٸ~>7j|?T3J=,5#1R.6jf~?Sj$}Czyg׆Z2%ʁg|ꦕjFNd&vs|iMf[0?fz;"6ik橣wH] M u nl/ԄOiRhTΧzޤN,b@ګi~;RC~>+z3 / ~0WꐷRޙcK#KRU0{w TU(!;tR;4A5eGe7$f,~'w&G-- k<y~|^랯mY L+MQ=6]6h̷ .Ґsu:L_j S~wl?ܢ*۷w)h-䷆+!7*Fx*–|H iu݀r7<^ S^zHW/i iy?oKٵ9UMMh6SohtYω|PNq>+/UR6pӿ|Vе4[o5AߕϻqkZ\CڈA>grsJlpjO-6p7D?D堛=h{z!7!72r{ѾjC-ϧh&bo'~۪m :J՞Py?Y~.zJSC%U п*ZqjUxYկx%Aj[|LeOq]3y]"׭Fo@>/>Uʢ:߿ZKbui~y23^KzMqUjd<X!9xfxfƪgӍݝ3O^/_6Uh\/~^ej1^,w&RJdER\b>#w!w&>j1_= uh0+X(!cud۳_lOZc3gXz.ϰ\";tD^3W~$ s3 >'.C$B2s"'T8 >/S!WU22?w[.bkElvZd?ZM}O4|^6-P2ؐ;l;;yjtEh2K,XBߡʕ;q5Nx_Cwz6Ow=o22Y|I>Lw=oc X5E_*|AMRO:~`Ɋ˴^>ui)gHmfA==h0;=]ۣS@Y5Ӟ%X3`MYK߿1h KGw,@kzږ\߭xP{W~o{i74u|\tsi4b'Q4)zrA+zFV9Lg֨j<8˴g=-tǐ_ Mw;ti }5-Qx7Mte;A) N]q>gCq~MORo' NQx((<((<((<((<QxQx? > > (}G}b =oL{ϰ;ۛ?.L++7;c]k: a7s<3x kᳫ12/RM9|{=|{ۻ\f %]K9y|{QۻQS,·w}DS5h5hEjHv}@|{V͇0uƭ/ƇH9eF%_'>5 aTX\C5EN_aoFnEq'8[9oV!|{wR͆6C7znoN|U -fNǖin·wk[:m÷w&[5`ڶjۻ35q}w94coXO-M.f̠q=_ î~'O_՘bk pTڛb6 !d&L|>Kf l30?Tg' P'>b]0[LB!&Os=t}fq_`ۻ=p1gS[9_N{w_mf֘2|{Ƥۻ~޽z/|h|l|n5b·wo= ScQ<e'>}{ؾC?8ks}ݱϴϘ߃'vSv|ڷ/Z0{(n&оO|@3%k:>s83}gslaYg8b G<7gX3Lptvla_ϰgxU׳;ϰIgS>^_{ا</}Uadc3COlR2}??-xݾO9zj>6~αlFؾO\t|پzt}sW=a&#U|}OO~&+'o/W~/gg Uu7m+ߎ>o}Jw\}qϱ}Qx7sWrxs;Dl:Bl1vއy>F;n_<`e՘axiUc?ñ}zrl^_o̐&c t5YM?_ ^_->w񘎇SkD*{HSkTcY5ub@}f]cz⮸ C̩b@}Kkt}Kh͈͟|Ѿ O\&Mow13?쎗~OŜ-z?[J+_^Of>q̇-Zso5ݴ(Fڮho()9쿕O'<8kg=h೛ٿ,X _{b^RA{b3x6WUL_|7o+Ʒ7Kr~#gp>ZS\9ɹg/]a?op=D?So/|{O\{by~|=o/oz?DƷ8·|/TIl/b8 ̈́V'Մ:߿.zobB߿%t5אi5UL/k~o~+kӞkrV\3(w z>3_TL1q͑[uf2vRc;c7nbl`o?7~iƛCZLg|f|[\CxI Sf"50+= 3}bK5 3}uݿn%.73Y ǻE8c+>}55ڷmf~wj}i;[Ya6;Q53?3L0k OupV{1Nf>$i0u̫/}"椰>?$3}b]LJ#`&M|NT·Wdbls샫S\D>Yp|`3< 1!f||x9J@E߸qnؾx}d7E3Gۧvo4/=;}ׯm`oe1"_/sqlf/_ˬ3e|fbyNZo7Q ޓDDOD|_ɗI[7/v"o&\އz}'W;{A9f Ҟ0jz}miz֌oЀoNKCGԗSOuIE?1Ckw[n5$Xx`}g4ff}3Ćo4LS+>OŷwW|| Ԣ'^D=>];]68-E]1rĚ(|{G|{GjD̟a_0>nϷ}lkMknϯoNbд^sCL]c{goN0sf x5{^ci~W5~_5#gDL]L^#MkpD1୔ωsAVEK+嗂*Z[vR eFKP \C FgT- eEאЎy!yM()Z5ޮ.bҊP \hD8bಂ KP \R 5u~M8* l+HF7kЌ'ߛ^nЉiЌ'E4u>ݾנޤt۟dݾA3-nv>qu~KA7"{m?ӄQ %~WfxhGmT?PۨXC7ZCCTKTsñ zSN]L<=.T[P <Ħ4'qx`Qa !&{b੦iSeY!S?QRTM^xV  :  5\~Musi|+:d`=m:G4wAgϠ]E1Е"lP> ]jKά}jC_Z=4jOvr5vjQT_hM1EkuWzЫStU<5^TE{q thu݀r7"`xV,ok~N|,hS; LG&W;]@ppYٵ暈`b|Fa|Fe|FEE)_?DEd:kLJ>%.R>Y/ѿmme7g]MѿV[4b+WoK="n#z?yП׫|K^rklFXZO-6p7E?D?=h{揠_oZ˜OS ڷ`ohC),_rٴU=TY\dZ,(U{2jD{5OVPAOIAa~谩jt]a-8^Us ?ږi[;]Mx7McIQOƠ/:9ROZqa<0a(VsAx(ތO.3٢*㙥tݝѓ/^;VV Z XZA1`g<8L0޴b5M+V8tV@C ƻtMX-4L+ErFZd36q6eLXhJE4:JdEM/>bmKVp,?Y)1+8j3+85i(V +HnB1m(O~ Amh&)nxR_˒?xjZ5V(l̯PءˬP8b"05>lV8c{+VSJalAYqϰ&aD> yz$գP <4Y&W1_U <4Y&kW1wU <4Y&W1U <}MVbOwW*,_ŽCwc*Q |[/b+El4YyO4VSbYC&K/Q|! 41_Q݊9VbV?[P Z{ ,kI>}$'ۇv+~v1+~^0PlfVt~K!5l(bdUe E~Vwi(&PdVS(۩l;=Cۣӵ@YQ6Ӟe34eto2} l7q@oUѲ=awlU+ 20}j(_iElztB{eӨoZ+U+HӤ4>q(AcmEO./Q`JC}tfƃc]әAK~ԁ\ =45)+xDZM4eSЕ_DOΠwLSB$-튭W(.+t4 e5ԇ+V/qK'H$xHgh|b34G1p Vdw6 ^QDK6xFYc~D?Zjx>(x+烂"o|P[j/&qѿ| ^MY5x5 ^MZ]7q > G}V ۻ|{c}{.ry=A[羽fbW9эnҕǷk"=FPNu|S:3W9ީط'V @92'.=j5>ӿƦ]ݢLbڿH;/X}t-.731W7}"^=7_rT͌`/E0J>Bƻ&'&|{x,uiMs>5.j*·o3r9?|'rH&s䕎oOh7]U7䓁o!S|{7դ}<ø=PA5!|{x)_[ڦ&k0gf |-:P>P _9an|z3f]A0`]}b5ǷpT[b6 !$!'6aXc3ea < 2s1%긨?0`}PY>aEf|Ko&rO5^u}ćQX9t~}#h'ڮ[T,'/cxطtk,QS[;o8Ϥr}C|nUb}|PI{՞r}ɾvd·O|?ۗs/|?&}Ѿ׮uEܾrBoEj_־׵;׵:HEoQg9١@Ҏ,&ac|{GgX +<2>gXL( Gla=3}#~5|c|ގ3k 3|8 a?>>ƣq s<_;s3 ϭcоc~h0&o_5F<28C9ffd%;꾞 !_[L24cgޡx?> foS,v3᫾iӟ)^3oO;;3JM;S5흅-b-f `g0_x1zwܵޗOxiT)|{gçi0gW s6|z}핁 4kdU2>02S-;;̬Ɵ*_^\)`Neu}{eu}{rv*|}{eu}{!ķI~+xwzM2h2J_'/T9aD5_f^o{Mۻlb<Y=?aw{z?o\0~ _^b>\̇Zss1޴=O}85? ޹`>|-|{S۫b·w*S5UN!÷WŮ;5^ ) ϩAέc{ٿTZź+X>=^㑹i=s'޹Y_S>kпfƓu1Wg泧^q8q}/|{ݿu÷>UN'|{sgObBwOw}{}x흪okI d]o Ƴ|lyӳ*Gx>Ǹ9?s;y?wq|%oB{w|pf&a>S+>q]iF)'|{߆oT-|{^p lϪ ub@T ^^^J^^ ^^^)2|{++ÿ˄Ψ%K S#)fab·W;#o4o oT+|{gFÆ>k۩Yϝ xs~V||}?U1@ Vאf1 1KԤc|ì+N3N3̿|÷pde|u+qUM1)bP;(z|Q1v߿ E7N ;mSaŷwl՘fޱUqoX0ޡ5̏^̇ڋp6O1LZ3?÷whc#[̠ٞJĤ4fb|}wfx; ?ȯ}N닱9?W']'fW1‘w>|{g|kg5o;j||uG0P7no\8w;&h(bnf|>|G+_Yۑގˬ_E_̔o*,_^-~}zƗyo/Z]k·k~}Ѿ}Ѿ5+r/w ۋηq`"/&_\އz}'7;{Au<_L7B}>^viz֌E/QNKSzR*y_?Ƿ%M}i<3sD=-y<ϻ}{K7Hq$=~pL>5 #LK׋>O-\oZDkwQO5#7`kF=>pW7qZƻzߵk5V#ש/1pzT\ř+Qo?g3ϧ>xFϊZcִwXL_|<93Cwۛ͟Ol?u#OVfv3qIk:xK (n/Swz×h#gDL]L^#]kp\J[ynV\*·[7oU_ *`R~6%+.A)nNm~M񌷱_%;o#ӓ5&~7-%U_?ӑ]UnBgZ!p5B`kl[!{+5^VƿВV :tiPӗw4gvL'c4&h:/4Q#ۤ}4e ҊCnMŊf)}E-]%'񶢒fji1qR}ѿ k0_ڞgf#VJ^p9}aXb]쯠י͙huh(١+&ЏuhvT<[T9lwkzzUO[m2۶ۄv4-#PTP(qF~#{7g#ًPm(U~o7%sʶ4Ӱq_/bdct3 +4fM[[Ao#a6 p!8ӿZA]{+*B3BC3a%ia qQ8l/Lbx)G((A7 YD?I_dݾohF_vl+%V3MؠJ!;$V vB1pt?SCվP nD1pthAN,z洢"c~~J~ӛr5#D6VmQ-hN}NbW("aTo߉x%Gozk!%džАV]Eu4V$Y[tV~osVTOT߆'9+.w˫W.Z!OF!@7BQMB`hzE)8b|8%5tW󘞼4Xbx hP Z5h4U EFt٠:}[dM[bbӡh2VkǛD{id(fMV^4l۫wj~] nZeX=4-xKocEcAQ>ӫ.ՋAwABAs|e] QL?(?Ϩ?ψhh:;VhhylЫtLJYω|Pq>+/UhtL2M͚ 2IݚLMVvMVi*xwb?qkZ\K%es}F?7gdW~_?SFOgK mbc;h诠VW{p6כiEVkb( FV >XYՑ̦łR'jD{5OVPAOIA4WTF1p6讠hU5UfVV[TmKWf{گjx8MbʢW1pzb]U&AVA{5__Uur}+7W?J&読0Xc0XmQ^YNMRvI4+`\HUgT^L{m&Z)h1W dz`Vl N7 XMۋVP ^4LA;tMX-4M+EƆFZd36q1j$74!P RD !?YVkbq(/YI3b(8=f f5 (zu[(P547=bv(Ө(=b!Wa*jT{ k+v2+X(l)|:2Z2)8* |7 +y> y\@ bNW1PU *jv5]@ bW1P˫U*iz~)_Vkolje+ElZd?ZMEcb`W#Gm}R+BFԊ EEH(BBY2z݊wuE˄B1c*򸊁'm=E1䷵6+?'v?Cm@`?;?;4?+~-RC >btɚ4~_EP g{Y4 {>.]eR4Mj1]'4fVU 5 A+nә swMg-4f(PxCטçƻ%f)d*zrcZ'+ǴՓ4A;YroP2CrDB14xKh / :$͟&|x'xlmx lի1h Q4L#Y|x"z÷)>b`lD(NbE?/3D3/3tӎX7ыۑ`u!!1-<SIZM{]qh?iWEO_|A=,*`[D#.x| ^MY5x5 ^MZb+ox{Qx((<((<((<((<((<ޯQxQx? QxQx? QxQx? QxQx(޷=e+8 ?5LⓃ>7>_>1]#I1̉/|{O,rS#o/|{O3=qWNп0ٷĪTLj 1v 3uokojsݚ/1oh߾:V%wMW1N+̜_\5W'.1-5ԉUݱ}y}+>Dw1uwzv|j@7_5'^-M̠}]N_+{RomW3r9O<^5'RjN_>q#)O\Sj>taܞx*OW_5|{59\g/^Aͼy|U ቫ &>>ħ/CD=3 '3 cgop. _t5 </߈+nj'qf'>LL:$_L3O|生0a)?wlO<]ߋlF:Ol_S9G:Oܴ}]r<}О}oϾ&O|"ܿ}}?u?eڷW[;UǷݾ׬5OAi9.ꏾy}>11 _ؾz>}QćQ*b}ڗ%&LWggxv>S Gla=y3}#^pb|c|>_2>ú>+aJ}{>$ڷKyEѸ?}ʹJVW Zs3}>+[}J}?J}=?žJ}=E|{o,绨oo-ʑWj>vԞWS?>q7G>g>Y8uꉋ޿~37Uߎ>o7}Jw<},g:ϱ}Qj/&O|}[>?$b3י͌z\5}{0aԻ Y[UV՘}b?V{0}8O5ӫKͺyb3zk5 ӱLQQ}񦞯Zۂooyb@}9}bxj~oWQ鎽fEgFf@}f]czX5YU O5kۋPk|̜dٗቇ$})35Pêvb^*'.yׯ̇|xpT|xN>a '6E|5rOo*+M5C|{Odfbh|'??q۷n,X _{b^:i]勅oxr>^P>kпaƓ 15W\9ϞcW{}<|{^oǷZS\9ɹg/]_|{{?1_|{O5ѝe$&t~{ s_Xw/b@'?|{O\~{ģ}3>==O'ϧ}z6/nc·b<'.ocThϾ}^?Ix_j&Rϯp|{^|*߆o~p l ur='t5ޞ#FǫzmsM.^V\hԈ͔Ÿ53PMp0zjjkoԬ3cLÌdff5x,֌o}Ĭ1Mjms m5EMZ>|aVćq̟8Kj1?٪gbe[jLڙGq0ddE'>GQ2A{c~>q2|ri3Gxe,b2_:^̇a31njo,fZwzM71'lfPWDALJ#`&ק~'apZ9 Oo/g$c\JD>'A 0&FxG~L0y_ILR6・'3G,uKçv_4s}j7F3N:,_8|d/_>{O ۗYҋ|-ű)G·|'/W_1}o7增>\>W,7oL7ag1h7Wo$R1V]5 QњgO|CUI/Fԏ}P_ީ'u}\HbgYޝ?'^Cuq}{0~9?zxj<ǡI>?#بiy%iL]0-S~V -f䔏N5Gz}|dVCkwiĚhxY\g$Qߊ 8SoD̟\ "XF MMtcߕݍI GGYR,\ϥv\+E@"'ʆ+;h2FIA{m'1k4{B1M)Lkj!'D?[ f_w+0ZLY!)~ {hx*bw+rtZb/Uw4MV0\?UQ |⬸v)Kж}S_WT>R>#_͢[/ߢŢuA*ӡSp|U|Pq>(蕬R/AddЬY -JЭ4Yдo5WA_(]qn?qkZ\Kes}FO>zFvy#\UltujOr6_:)9Nh诠VW{yp6כF1ߢ2T ڷ`ohCM+C3-VUOOUud~(łR')+(x?j #))(L˪F' t-x?U:߮ ml/UbZq6s>V ;I$D|#h-ŋAweUgI ね8KqU-jd|X!?/] ZkKq1wj0H'U/^V Z+V~o8;mz/Z:AC TXMW0M)iX=_HHI36q5j$78IЫbiCu诮F-Y4c-h/o3_gcAY)VY)V%+DA{-+H1;tb|lEuM'?b AY1OɆ27)h|J᫰V{V{5V ՉV(eV(dY _I _4V8c{+R[t7 +䙎 _ͷff !9"x_ZxY/Et$ɚ?M':|6 5 ëm2ۧw^lͫ*1?d)Z-G1_+ .jhЅw~ƋY(x+A)RR{qhࡒY3x5zjgռz2x5Rjwo,8/s>oG}G}G}}G}}G}މ? ~QxGQxQx> > G}G}G)(G}GG/{&[ηoCmS>S:پoow뙾r27;5b0}9[7>sv3zrvՔ÷÷5!j]9޾Ƿ݌5G1j"]f  _?|MNe,.9$1W_]߄a&ޑT5Lq2#C8S78TLc f^ޑ` ܐgp}{A|]Fyn#7\82 f{7#·W03 C; 5_(|C÷w'#|{G!۫bso˸ ÷W׷wLP#|{G&1 qo0coXO?o0oz^Gç8CeFSh ^ՐT|p(硏}1'3 .=a|AL9!]o0cHMf1#긫?0`!&:_tυoo7׷wL9Sv}/%tX9E oP;|{Ŝe,1b·wl|AdYbo9׷w&|&5V1JN1;j3~ʙo~~=ķW;3qM; zgSTM<|{g}=S5흕JʁJe5|]~ __ؾz>}Qfbwv*'2,>ώϰVbv||3u|#p{?pb|c|/|}}>þ~ aܺs3Gs޹Ũ?SƇV+|{aeFeca%ce[xhe4 ޕKxjۻ# eF2#oR=|{}GZb·wU|u=|·w(|{W/ƒY*U|{rۻZM|atrpۻFtWW]'~;.|f5w!ƷwugZ9e3|{jۻ[>;?$b3י͌zOJlz\ QrMf=oK5`jLۻ>ς`#[ Axk0~waf|Q]AǷwm|z}|o0m8b·w'&ӝX3,|{rv{͊5/ձJ{[ƻkb@·wk|^SĀ}3+ keYkbb·wۻs Cvb^-;|{ޏۻ _S7xwÛ״w gۻ ̧[X#5 ޭ[n1xۻ ޭa #:ٿ*W3_lFϭAc{b< ||·wWAJ>H-_U>FYM3o <o\9ϞcW{{}u·^_÷w>9o ]})o?]m|{jۻ{__ۻ;h goh?)'OOv9>7w}{ww~ϻcx_ǨО}}+|IϭTn÷w,ȯn3n1>ۻŀo6|{mۻ35!Lhe{SM|Ą!όg{{j !b @o |{w _}5D{EqS#)f- %)|{צfؿ>ϩYۻ6>nj,||'7477&ƃfƃfI>w-||+Ӟ}|u?)f%)|{ׄQ݌okȌoPDX3j1>|f]A|G|{ǘɗ<|{s!uu|uݿn%73M jg>cEVGׯwGm(jZ0ݱ}os2˾⒏[*fUUq]o0|LĖ16YMweW_ox9|{WGAaT?l1)LON> o'}U ޹iofn?w|O䃦帋ޑ_2L~|6%3A䳖gMo|89J@9+o߸ֿq8|j7E3Gۧvo4/=;·Wp5|-ؾ?|)jL9?Xev><ڗY2k1+z=~QxÌ#aƱQ3ĆoX\ay%4]_|{GǷD=UOSE}VkY3rumԓ[Oz}b5DUk"F?).LkRϿ`}Lo;棬1Dϯob%Κ3|{Gkl?ɏ 3nFnL`{՚]Y/&x Q#^*qq}{4·w !F2|{ez}{G|7x6o3k4ezp0#q>Ɍ]@?d772c#$32S<Ȳ୦1[Mc.o5[)[ 囂/oՕ_ ުk rV]uu2oռͫoyqM_گ8|{too}֔:gl(blІ`F4 'Q[_[IÅbop({8^񊲕3ٿi_,eD.g`gh(щ8Om/m/m볥X[m_"ޒ]+2B1 'ޯzl&U 6yB1[ql)XՃ&b`" }Iю0ЫحPhQ譆0ӫؕ] se+Vb` &(vUC1K2^IW1z:]%;7=YkWaZ2ѪjY[uU&t_3+ BgKЕՊ5&Z2tT2=~8 aC+MY~W1pHq#/Mb!CS"vXa-F{nbW5zCOnєѷiI\[}yGvטh{^ڞcv9f#3{Նv7lqU*[\@IU\@-bW1гVbRC1pB10ÆAGPdٮۡG>df̶d6oZG JiU E ;}}flL(^ E6>g(UE+i>3o EWeWy/3 !+(hL6 q̿z+NUqc+FlÈU35Q8$g@7v+oEEhFahFw+H: 5h %&J^ _nA3jA훎?A+}g;lfok+i6w(jU X25 @I\zjЍ(5>t5ʊ(m-*ݨSV,+U3B1pejamЍVTcLwRu:B1p z3NK%Gozk%%WgI4XT<~ЌYCմ":+C?V շ9+vշ%I jaV}u B/ڳB`jƃ{LTƛ,͇C1p K1=4P \b-K+C1pymS!Ƿ`b|Fa|Fe|FEE)+-DhuУv|)8>ͪ|΂Vq>(A8JQ~B_1MF峂ɂQ~ѿlebw}(Ǎ[кzz8OF?7wdW~_?[FogNΆӿ,,!+A3'e;s6/(.+Q=\S&СkRm j|#h- ϠZѦ%1~؊{jTc'㓡x )%33I>8:FTdJ9(ҔI[$4X]{?jסiWtnV_hyo44F# 1 ٯ~^!!ߍfc`V~c E51nҨ2nl c0|5oX6X|x i(h(\`Z0|m^/;2h8pPW_?hc yEݡk\@`LQ?1E1p 66:@11)A4uc4u`4uuוߢ+e8/c29.c7ԽLc7Dѐ7}>4macA.c2B:_J#dMB**#h2!e EF*:,e \P=1pdc^Wh &;T\O|ߖ4~Nc4~Nihz]7h@l?lz06`cB5ASj[ eMw(;M=zt{9 emQQ{UOx>mxmŤgh Z #iFc+cUŅw_U#InY4Mk^|F2U$Mj[L`Qij Q4.qHsj}ҙ z0 U]Ey hP~Ҕ]4T~~n*'@S4zrk M)Z#6CvشSAϋ6c YeSx#+</^`+c 207+cSt c?mSkwy ü·K-9kLvuŠ'n<ͣ^^yi=+2O~4Of敂xkC? '-'!Q'х;1n> endobj 154 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 158 0 R >> endobj 155 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 158 0 R >> endobj 156 0 obj << /Type /Font /Subtype /Type1 /Name /F6 /BaseFont /Symbol >> endobj 157 0 obj [/ICCBased 159 0 R] endobj 158 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus] >> endobj 159 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 149 0 obj << /D [147 0 R /XYZ 80 770.89 null] >> endobj 150 0 obj << /D [147 0 R /XYZ 278.679 446.496 null] >> endobj 26 0 obj << /D [147 0 R /XYZ 81 229.636 null] >> endobj 151 0 obj << /D [147 0 R /XYZ 81 229.636 null] >> endobj 146 0 obj << /Font << /F68 93 0 R /F15 70 0 R /F87 98 0 R /F48 68 0 R /F79 77 0 R >> /XObject << /Im3 130 0 R >> /ProcSet [ /PDF /Text ] >> endobj 162 0 obj << /Length 320 /Filter /FlateDecode >> stream xڍQN !,ѓnkh];SdML3ax <4f%t~x9~+/K7%FM~( r%a%M)e^еIpHHOü1Ω\9sV|q/Tb ^1:YkD66q5>; 96tOJ+:xG#Έ@M䌸d_ѵ5zNAUU(m o  g3ooVҫFGɿn%Oމ6 hhHȞ 'f|o> endstream endobj 161 0 obj << /Type /Page /Contents 162 0 R /Resources 160 0 R /MediaBox [0 0 595.276 841.89] /Parent 152 0 R >> endobj 145 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./diagram-fig4.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 165 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 166 0 R/F3 167 0 R>> /ExtGState << >>/ColorSpace << /sRGB 168 0 R >>>> /Length 64771 /Filter /FlateDecode >> stream xˮmr֯Ms슰 ^ A uHٴȹvݺb5jY91"+}?_ʏR~GvX_5//_?8?JZG_~s~Ϻ۟?>__On%jsc_ύ _b18-s( 7=Kc~ o1 p3?߿_O{|y_N~|>WtPcoz,Ζ7kFؿy~^C| 6G-%8=ox#vG([8xZZ)?Z3>g D>@5>~ t_(Xן?|U8Oy}je儐x O.`omUx5ل.ޞWy]O_l~߯9EO㖸m zI?/<ZXn1uWxVؚZ?qOמN3OZ=Z\>Ǐ| }s5~4TqV|ϋkO7j}w?Ce,-bvvāYGy?l_%LJB$/px>烟xO<b ~1Ea%9 O=?y|?~FCo_`f#o=Maє'&Ļk >`toVda%z `Η=KxXG>h_on>{0u0<݆1!]8;~nk~s7o9efg.=x~0tON:p8h~ 0g?:σi2 |\0_Z5m<_›3\8cB+<پä\h>g~8xMY8q?3_cYq> #oB\=/*='6׋,t9x}˾Vpб7?~rJ> U0?,Hܰ=x}g|W<~b>H-7>f\azxB0y0k|qf>ֆ|<~s-?5'b@gݼgb7/ D~bأa?ad1q;;Jb3c֡E}& a^h?hьru`w1Ty]|>OY_?h7kq~&&?ބa 7g} 3ѱy'Qr}p>O ļ ڧYO0_=/zg}xLxyr߷۳4g볞O'YO CO ų,<ȁxwL|Xys~|0냏! Yorw\o60 ^7vĝwM37z $i=Qڃ]snӾ!Al &7(~Wګ9_Ɛ= 6|AσYbF077?Fi_>?]:>h'\Y=r#Ń|ztn+p~i_Ful?GOrY5%4~~IWI\pO>m~%q*{#gs?}'u ֓o?8~:.ܹȍf1 xq߈8T/:1s~|Hܚp'?phzT6t cF~b`0C8o]3JLt U>Zz }h=IV8$?Bʍoh`Zµ(̥`%z1^ l[x}#'بiLI~5(lڐcєƴ=mȿ}盲ty?GGnh369iLN6\-Qָo!~OXo]kSԞ|S{?BۊuҶ%_m6ye#~Wi>i+^J5 -@E|柠N1n 0aAkH loqr0Nw[1XĤʰ槅dӴg{Pjl9G0xSS/cɩ`zj~l~NyO[׺][{1;jtvCsrD >ӣ/+fG;oPb~3w0dy0w<,dF p^пy/`ӂ-c#} CÕÆt9C;j}6>"͏m]?~G_5;mO<̍ޯ﯒ػ8%6>aR߅/w'߽|/%l_n4|}xx8?}t|oo^e+MiLW}}߅ X#;Mnw5,_j>ʔ"Sy#Ќ+k[nAW/oJx+3=E[EWM̭)X}wmaqC7#\y>oą9| ]oN*ZYt%Jq=|tbےmSt=ֽOm0蘉<^RKnn_x~}_˝#'vP !1=~$q{y*#2H >w%"WRz*k|P%"=94ߤE@j߃u}c|ɵDv7R5'^o|xu2I{9'oP(wv#6/I%E Ws>زD _g[T-<yM ݢ&]eLͯ>`<վ }ֿZ_'w{ᅮʻ9}霟 1I4P"у;'jߕt%t_c ^dUF2qH}9SQx x|U\e{(tUX AW\_vWo| |f$^<ס9 S؜OBTt9*_hjxq:jU\/c??zs.UB z٫v=I^Ĝ.\vLJ>v_]8fL )~%J胇e^H_~|bSivhWחQLݘǯ2>oٲG%߰=~ 俓 '~z `-_=r5KGk,>?A>cJ. 36|? 'w[ď8's;^;K+|o!wo!w67z?ޟk|a%t;~ʾSU%>Nm<_><=oOWϧ=^O`'ޞOs~b(&#h}5/~ ޞ){?W/ z7_xCh8^~N\f鉷ߜtm~uχk?<ϵWC/&@;^s14p7^_{&wx~xw/oۇx^ZHy|~qy!+7?f?> >44Qyi%/p ?4'bOm^_[Tok:7?^߫}|EvD(0"r/|3]X{^栗ߴ;^i^WןyHx>>?~/L}"G;c~lޭPmjo>VU>s|rd=0Mvܷ?a}3yܟi'o_b/_h_B# _Ϳg_/|(oSx~9]SnW||>*in /۟u^ZkZp=dYH{i_eV-u)9|j֧~g=3O?Om">wnaϡ=x bA\/=+nh cb6/{9ן.{e/_z=~x7;wb"G\~7d9B g΍g~8>r?7>܏̿'w+sxX//u{e?k?|xBuo܏x~o*o 3Mj^'~tFō!|={+"~7__r E"oI7wUCow?_C>}#~|'_vWxxBqgןHxO̔w(׆dEM3AU1J\6pöM-T"/qŘj*s*~|=u6-E}}y>ƔN~͏:nX Ϝ՜Xo vj@o1b"K1L71ՍT獹 Llw;sucqcrcS^`~8'.1Н17F9nnu;F1.0xDŽ38DŽ3F|ovevKW@H;ΈdAYjHoT]ƛx"pGbs`rё?b0c~,~3&sxf\d]?oFF>oZP,ތ|?H[oFH&x3Fߌs'-*wUݢI-92 ~~b}˨sQY3yq0Ӂdn}۾wWX_<Ͽo ||$BhW. 8|x)!IӸcϳ0'R$m=s bMV&zI 4a5A܀k}ߏՏJ\sSrU.Q4i䅌^Wdp|B$6p;;Bc~?I q*:JbD%UEOa=g7`TEۄ4-1SEsDOft'KL}:ګ+w4/n:CN &#槊ݱdU;q5J5n50qIg|?N!mmobUx'7V!} F\/[x~$1bX Gq6~xă$fcnI)Ew? gQubw?q|yILJ>]c_ӘGbƴ`^Ki>A*$ʠX~G 1^^˜T $a{w>h Dh$nQj2U|ooxxM{|{~͏ѽ{1I$Ec~ ?|'D+}|?ꁾ߷s<Ϡat?O|rW S ?Q?F`o{=lEF0`^pG)J/O_iw~ dw]?G/7Qp~NCnq>‹'`1 [A~_ܟ wąB'YLExjkZO8C{JNčc+^o\}|=xxI䃖|V_fKrN>m_OA2mF|y{_w~~ |o״_cvuuR}롾OBQR=h/]x 眿J}3>y's^?EysZ|FI&lf۟O`Ƞb`f'Or=+E|7g?]:h=O' OO<}|?'=?#qFMyщ<<}?gOk^^އ!qK$P.^{7 x#o  xm? ,{ljxoe|W&0nf܈1WA< wwBMmuWbg~F6qַ.{I/$2{]00oA//Zs8^4ϗs񦠇jz `p W{{Qƿ( a/|߇?DsDO7ۅNjϨ>퇨~x?O"*W5P^ooc~Wa [Cxr|Iai$x|IM%Eb={>~}>jo>}|wOoR*V{^oy6ezf~X̗m}/Yon}`x_cx ?l`a>X+>p> ydo._vQ/;>'Bp?*6[j>k>·׿0y|`s>iOn?/\O/R ؟SycNX\0_uGY_,^OtlIzן6^?mo* #l_BTx?Ϗ|[=j>=b>Nah\+ OwUw!x<ؗƛ6zaQغ8O08[e/WcXr\{ן.{ןxO\"OiiZ7>5RxsM6m>z `V7ǓDt07k>dc_xy6c;܏pxO_~|8?|O૲]Ȱ,rY&>~p?~?uOYލp_6Gw~8^爿+z\ȷNKE vۓo7_-]'ܾz?*'t_?y U}^aΧ/iO>[<]a]o~~|-®,Y?lbm#j;W<_5scxwi}ֈzc pkl_ln^sο(t|[1)HaQXetBؕFTv3t&P:RA~Jշ+%VO:_s']OzazGX d:qߜJp*u|Ͽ\j>y_GG\Sݢ-ɞ^jCglk@e(0ջؚZ=;ג7xqneT;}j38:Z(C^_xw^ ٗݮ{˺Z7l=Fp%^&6{ wYn?+&;P7&l1%^vQXpʥjb;ջi,6m4>f>ͻk K%b~NުFdKiyk%U{&5X  ?qﹻr%VUAgƤ壔`İLVC[TG `p;'no 1h~&NQNgK%Gܽ%Ò"s8E=q!H;K`%@ 1ex>fb~ -p5r ,1盉XmQ4?Oh\\O(AJ 0ɶ,8ETiQuӗpl;$zlhmJȢhN6i:YPr"zfNLKo-X,PX\@AM,W+m/&DO>^έhdL{''vw8-0|MJ"1pĪ^ Z<_^O{h|ͪfjv}-1%3/s,4 *xJM{z~Zx(29_O{)` { I%NPag`&wp~Cp^f;:z.1/o5MwH vul?JaĹnvMm^؍# `:=lW G/mHp9t6=72PT dDNƖ~H7q/]آ%%~Usdn} ga5ĜoWLlgwvI/`U'=q_saM@0EЋ!B8>$sDse%?(>5h0d0%U8AlbUwFnVZ ~B&?#$:\hĜĘ_`;-C7[9ﷺ iTΚ9@Sb`W`naK U"\RݿӞj;/% )pWu=A m~RRq·Ռ }UwaHsqΟ[BJ2aE gUk" r\a{E7( Nn&Nk~aXխFGRNʛ_펤nUx4^*0ė`4Q-VFCϣ*eo`3[U5Zpq>K>% ](3qc[-cEo&3K W&eUYl/R.%Aq3Ga8[+j0`s WcCњjؕZlgt|}>ƋPkTxW-n8+:>Wh>'fl>ebdsMhӦ޴=ڰh1";/0(3/6+h:wp @Vxl|Ӱy|}s Fbr Yd3/ڈ3lLֵ cO䈁u'iQaO~{?StԭvZoS+ Rhtbrҋrpexw`G/^nd%jpAq3n{\%hMY" V*=W1_% I $Ś[ HJC}5JؠRruUvVBD(%{$ϯ+̤l?Tq<יqܻ8|$_e$4^Ux$W?rXx|0iV&A[ 4T$m+ X$!dN|I;Lڡr' ߟ$"_ID|R}XAaQ/E(Et(*"HYXAJŢ$QRas% %I[q'yU`EE,:EC,x3:BW$Iex*N0FRD9$+ąG|ZobN6$$_(-X"7|THBb%I6__ITI}$V$c_NN_Lbu%:W$!qUg&_"9)$$!N"L/ߒHB HthO#$4eY$!h<磮$5h]o>|+SmR}2l/ѩjĺ>uz9jvhL⦲fgE+y|JjlNY" % T- AK•zI!}ϝK䞸P%$x=UzX@U+HA|)())))))0)Hlcڹ")0;i>ߎE .Hm~|`7*gZ$!qoQ9߶7wJlmq<ۖ߿-gWk-?/W[~^6-rM>uT" ?׫6-2"#no/Dy4Xߦg6XIG" ?^E +_uB4.Q߇D{u}}=(כ&Q ύIIH<%ЄEiMW9so"3\,xz-X{zU4pjd!8^OPƕdDw\iI•CZXLHBb45^z"Ma&b&ZM,+J"Xc2E*-8u"Wo "HBSE/گxJx~Ɲ0r3l,{S=VbafѷjmQڧu[@En(sUeN 翺پ3~fzϸrE\Eo|QB/p|X{IH" >_~QcqOU+?v" A7I$ΑvH{BQA*[$IT" 4IH,=4N&yV&_|E |= \+uD-LGuZ`$z0|C"n?ȗ^"n/kK`m/Molnxp&_W$}]`cyO?|Y'v%ߴ;z¥}>~~W(!~ H}To|QF~I߷z`}^*"y"wogt{I/aQy3Mу瑈&YL'I&PR`إbDF}|OJZHB" LZ üLJ;?3x~V|}S`~6EGI7SagT>J4x=LJL=:/фX D]P K4aD&L MƕIat[$;ƃIa+Æ,(HBcRIhLڹaI9W$@m)ɮWVc%ŵ IXo,SuWbg-H$%$k/+I˃Ia{IM%rB &J$?J0,wy!?6ϕI vx< G ﯂+ޏcŰ"IQS~l7CozL~}rRc˭ѺE‹k/vm y<6]|~pRԾGD/TMl7iт-n>͗%_Dͷ4W[_\) m7j_ᣤ{ASU曔.>c;vOz^'y2=o3?X" O" ;x7b4iX>+`l#,>o/iKvՃ+HC7*=,Z OX`-y`g_3w~i>Y;}4]%±̇KC+Sn͟?Jk8-zbp>Ḻi%`@|bDgar>,"\ߏ2D+v%"ћד >-:s?;I%cD(S"@>XK%g?Oa7Rw_ei?ן6xO(ѱ"Im (AXC_+xڿXpq.S" ta" q}h~67>fݹ/0/R(w+*JA}:uQq7L]a60J vJ~V+7wL>[<*յ+_Q+ج=(D\IiQ{,p!jo]\<9>W|"{`IxQ <-~}xC}zmx^:fJW] W_羽?Z{ >EbVM'T%- w)X;nPk-fmee7$.iFXմrab]aA2DCY{˸n?hy/fYI&3>H竦{)M_y>%H#+Zq4C7KVcEt[ ࡛T_QEf~B:'LߙMrPą8˚ZEA:_^l2[PۼEӞƲ7x6~1.4#( ̎#l| ho0ml0oĝ+ZU$ O,ZZKfyp/J4s)ݵ%Zi3`/j)uۅ՞W{z}|6mcm*q'^Tn6;S3bWn:쿻^5T/PoA5f'mHd{0.2C]`+{e!jCQG0n0ăj|?=9vbvV6v]WieT- C-c,.%4v&|KCBJZ FYr W xF^#FYE 7ZC4VtCaਣL1/ %x쨵 5&\ofˍV2-D<>0{*36G2!3"{c! fK4ᜟmt F,5̹0ʴ>]iHP#h9޺XaqTv ﲗ+à{^IQg[jU8F7y$fv"]nIvsJ˩~kSA>c0' ql0,Oom|gF`m{sM`moN{9[ ?d5P#?Y6"P#¹4$ԚZP'Pa✏h977R=QCU+e25+1$CUhHbl+3:<$jN@~ è CTJ7]:WUD=\ D[Wj) `ا$s<֮0*7@mmaFP|r'nT'|]u^kHćX fgx2].QK{gK#j>ZA>o6tPm`jbk &M l ےD0snT`*,aUs,Jd~)ǻx[]FP?3T"S6 FW}, 4_F_~*/}fz߳Ӣ?sFISJ]&lxTshCچmͱS(y9NVl{{xP[ve׆=jRXŊe:?.!)}j)#m|8},+L,^O62͉L{s?(b{OMjDpfk[ͳHbV2 *WVPq28z^J Zɡ`"yT_eB0u^U͕gɢ)e0VXsH[2؞3XI&4bFq iH)j^I1KJ(H¤T(:|?": Pf|~i8A磞E5AFeC ,nEFe[+Wq'KQcEܩѮCt'1g=ƊJQY$?:4ܴJk OuoZҔ҄q얆MH?c5bBR q;FϘD]  +E &SXdzNŢhXQR29 @nQV;Lx54~.k QcRCV %Mm5HVlkDҊ4,fWѪ,YZ`j `Z^C[5N+ bXܮwjl5kWV~X]ArZJ&GbYŮ`j>iջE+gw4<5J;Y .HϬ\SsN\A5lM㵱R&cw)g`  ҍcM&mԜ2.?UqwbU讘T)]qyHfh8]1dP~sWoEx/1 E1|oPWjRvKWj^zaMoUh,YZ<,p@0`mJOU͆++ kFf׃` W_&ٴF4GźFR9[+ȬX^V ,[0\]DZtCqE@⊙԰[b) ˚Ӆ֭P] Zͺ6I " UXoy, ۅݹX}mfbOʇ?({ t`j8I~0ڋP[v+! 1W}8J"4 7 v 2vJdT6z3qNe tTaT3 \ "]vZ?b ( \:dńEX0Z}%O%3]Ø 3O {[jo&uoq{3PZqSaDZg]TY*fSl~*@XYcf&\ź)ԐD'j٘A͏_ѱMC:Mɛ}FA{ϹSF}ml ,W]盩O]˛ֽ6X3_( Dq2mMN t go8Bf dfC?460  / M,4XPjOC_J۽C{f<[0o &5}p_zE9 if$F6T9CQlqft6a<:hhMiQDŽ+Vj S7M 3=m9viѲ jnG=]-IjFE&#N`eptYi*[kyž].3\HCge -3b} f[x@;# Xft@DС}m*l3BCFٶ;~ݸ5c[.|N, wB7*MA *1xE :a'ᦛ}K>QȡSF081%"B8{a-s ["Q6,q!RN~[fR!r!w즓J &c8 ,Zp2G f}}ѰS )CPykJKl~c*/\h󻸚fu0@EC?~ l&q6v/#$mLa. ."uh[\HMIJFt c/ %PSSrRvTjc1K6ϹTjR[K*R>T9\/ڐPRJmr0Jm#TjcϥR.逼TjTZ/+5S_/;M3mJ=^*5i/Z)Tj.Tj.ZYGRRZN/Zi^*߮/T/(>L9{S`9uR@RоKfX/ژPsT$JmTj3_*ȘJmevK6 _*NSzM`S-@e*ZSJmwS-=eR[0:2jq0Tj1_*5i/*.jg2X^\ ԡJ.T螜JH{T]*Rq^*RЕJm (2*KBwTjS@TJmT*tR^*yRk_*R7?_*:R^_*U:JExTΗJnRm*yR]_*yR<_*yR# /RÝ/9Ү]]5q&ly/8̽6/8Y_˿X#o 륮o,, ۸<,D,pyXRxbK6l,WyX|%d?ȢE/'8E1+_Zl618FVi{rqlfҳgC.A8X&N]ES'Y5~bZ/M[O fjse6q_s|Zekg3])/_82~bʶqz9\L&NӬm_:1k8ǗY\M#γ7k 񲶮aV m,O|Y:m*lem 6R\ֶO-tS6V\:/em#3_V:5}Bg-tBQ}Y[$ExYFЍ/k ]xY[^]Zem/k!-tBz-tZ'ڬ-tB7-t⓵rHu8/(4X'2ߴ%o@)l$YL[K.au6IU6oqok {(>ТLcb0 ʘ>l>.է NA݂A?h[E޼%>"LmoF#`\vu";oC|Sߤ1U> y <~]>h S#pb1=>$yI1<蘢i&M:]{θk<m/W-WyoǵU4֘oH~~/Yܸ*dܼ4'Zhjq^g7/e0rjeW7O$iZ< uF(ϼڜ3]t8"oX2|ʪ7*`[5QUX+*7qcc'YAEvkg>Š"W<<]rxy69U9r}[}ql!iʪ-?)\uRU極'۠rќr˫¨r=qnH9*(  R9O?(TrFs^h  ը7Te\u{hJAP9/;gvDxdd] :@U!ܝwȺW5Cs=`ѝ<`zD`*4|wAyު-ua !T $n*ܾ&|ʨ@GOڴ8FzD[  s8]BRMx0t ˌFs =3oFLC^ U|? "m wbCyf!+tc.8W`n ڜ_tH,aF %QqH'gMlq.ebe 0k3~)g0qΈfC:vmn<d9t3oUPa\W AA]ݖ[ ^̀ZRcz_In-]i኿35a4u g8~?Iw}_"Ǹ8p'u l{G'mJV瘡( &L Ś**\Lf7MɌ96")zR ;6eFvVPmls'vNa{OJJ'P@N1FH1mi"qnkpu _ ms7i[ ʪy!^ eM[Vo]כdbIg|FR)dAf~|bʵ}FyA]U|bXNR>_SPiŠ^cJ*pIv0L2GMjy4#(t0ڒkc}ulq4?Y}~*#JVgK*GKuUa<6^͍71Zr'$;C4,3V]+>;7KFr2,'}!hlhBJ f ElRvVu\4 V?n5nfz 3߯ΆE~˅$/&M>UNdFZ8 +W,4dA0_o z zYx8o7ǟyr?l=_{4Akos@< hs__UX>\*_ƕ4}~Uk>WD@Z|?o:{r6./mX_{y(*?w*zUH'KJlژI)9\bQx84p ͹ŋ\Bc`➯ot\c5}dҞ{Ō>m%u~I/ .3Pњ7HƜ{\FqnS{.1H:TbJ(7g5mϿHYCmSX }ʂXZgaimcʌ{q ho>>\&4#Oj[ US6`AOJ -,4%[0tON){+ JK¡堌Ly-,JE9&L(=xE?$[CO`aѻ)x„m_\і|q |P$Y|?g+Ω e|L@ҍ)LkQGesG+SÝ $`‹ڸvyEZ~qE F4W J|p ;+:㯌Q)ik{{YvKQ!kjS!C s$Ckk-dmC]RVLI]HsK845<+ RғLU@߿Kb\a2I\ev(}SW/%;ƣ͚j?L@g)V,HOk0Wp5&p=\^2b~+-F23 >LOf?@wqDt+B]8CEE2pQ!r)&bo9j@> Дf*< Wd!HT)Ɓ\܂/dm?Xl?x~m?oQ 4ŦU>@ޯN~:o-c}z~@B>>ן?#G*ɺ?H&Y׻S?Ox<0q;G@;[84>;ĺlռ>VҬHid9*.v'3@3w8"?,s^aůs`2gFhz7D?t<w3MҺR€SzBo;i_MhWq ԿGp?W+ Csa78AilCccz~6W;J8 f:! Wأ6)Su?aHz/~G$%#DH&4P%[q0^DZ_:wa|0A';L$3dZ$ |?zL4dn$9_qaƷmhXN@_T4ok<3axs׏3d|zw^s&x?{OG]!ҐSڻ syNyNyδDL:*fS{uR ׬Nj0Q6#5K]/j=EX3ҩMf䋗N@dSHgͯ+䔺v =>,-=6oBH!m^ߩ~Ե{=_,o)T.w=z'z2+qK=j}>=x1:#ŒB|q^eG˹3~g,jc~<?|_4Dvssc=ZGWrx޶cr -{X_ /5?y?籗籗ߧ}̼9~g`j@vOJ?~nz5x(7^H_W36]|jyjyջ_}v$2Z!"ہ_Y+kw勺?h,W;T\yuqR vSZЛ:W&82Z ?R5}?* v&ם{޳~6'T`c|dH̏}Wo{h31?Tz]_zFO+'G<BOVx6[`G||x_0Ƈ [?;ڛ>)7!7g33@o/yByR5GD\:j|H?r~Q|`aa|)ӑ#Y mG)ל?+U]/Q֏#mЫ7а[<] Syy)^^280~rTc}|p*޶>+6>wo3Uk/3;%11}qXojgac#Ѷ^]΁Wwfw6_M=^=g[Yɿ;wzT|y\/~iQ%Jz_ ڤ'4k.Se(U1& -> O_*C%>͟ct$D>^]e<.4AFlo kќ m9 aY? qs4I~`tHK!`h PpT-wIy^@w sBUjwT3],UY{}5U{`mXsΫZCz}TAmdGt +;Fnꀷ|`nY4*ͮ ]4!ǛE*Bh4(sDN6<%MC^-@)Je4CzA ]DCFP+"4M`hC̆OQQљaѕڰfwDfFjuM -Zm&_Ek>մ7}pE.ц/G| En-Og4PWVC#2 yuF:JE Vt.kvD4jJ~EG"]c\Uљ%oC+β! dH/C6D{#Z=y;i ӧWQzA{ |mFi hXoD˧z*yEGcBwDfI@^hǁB\3g4>)z0i#I*A_-Y&iڭԤ!,^&li{4˻31ЛMOSM4!{_#~ƗӆCs_|>ʃ&VH[Eb3 r|hD-M:y|]Z=OڦԪԓ>lxCu^HQuzI9H\&paim nV+p@.@OEKDK ީh ֛&`})sEo: bCѠ ,aO-ڰ>nDy%a?Y([,(=5|=}(zyC!Ofԋ>}Vt~ /tRt/>4e;쯡D/fC[?i%3:[ h.h#k:1ݍ:`4U`4U뢃xeiffjgs$M0!3~uH6HcMf{G:鵫t]C?@CӤ/_70yf<4[W^o}C{JPۿIc>[fܟ|_{.CH/9=ݖt|%ILhN{NDiZҚSmh4z5i,D[[j&Ӯ~iѾ3ҙhi%SvufWD[hʗW}s<9꿃TtuS_gm}7-6F;G!kۢیWot4]=S:; ~y?_sC>/GGyGGw?赅g*00Tv?4?X|d&OCWҞEm-=t@ϊ@5lE5œ&i[eҼ_x_/UC+ +IK#o[Oh#+>N3CFz\3]&iTv/Eџx}_IQ|\;l>s{h Zq(fV_ا[%vkeE+%ڔmqZc+Prf^& M҉n슷/&9xd)x~&M!O*{'Q٣6CCJer҇lX4nS)Kd+{X\҅S6,jT<ՍӋjo6@GUO.$&{Z|6qqІ5>_x|>Ғ{}?ڟ_QxQxQxQxG}G}G}GQG}G}k> 4~G}GQޟ(£(?QxGQxQxG -w?ev|,|??ʷ.ڂup_:߁1HT`Pj:']C_mQup̏Fݒw-=a:}NJP& wXEq^օaܫu]B|NjKڛP{s>1=1`ܶw#Fm F]eƚ\up yXaq:W3UUܫYҬ4Yh 9&b Ǟ:p&U\SupvԱ=/dhB3tGv5~ &:C Lup/=ez AYT5b[uq5CwSq:W*g<Ԫ:uVVF:ϭ:Xl?x~m?]u_wՑSgjOګ9>Ѿz|?c2O~Q'`ky$;x8? 5`3d8^sWp=dW\CL^F`}dX5#>4>G|;gߧNcB]{5Nc>ӘuRi<_7&]oֽVܫ͢AP:n -?ckul18?@AfupvhO1`{5;zҠQ'Yup&#E=ȳnՇLh^oS/a{Xzl3֋pMx?UbqZ^b!b,mSž:Wo|b1?̋ɿuk{`THR\ Wܫ;N`y'Oz>83WC,7q5WרWLLy=Kd/Ϫ^`?:ƺ{铺s1 #{j#w֝T\cJ5!e\cM1vtIl}?g62=zK/zB_!4NiM ƫ #΄&z..í:yfmS/0M83gƙP>`:qF_q&e _m;ޗ3A{5%؟ Tj9=LF3q1^0쪃g,u_9O\V,VD/25> &g̩_=֬u6ź_aL3u}dF_OupSk<'ǤT3u=>OӟWOg|k|'zbG^G:G]]4>qQ'/|~sb112>w| LbSPXvh>Mfi>j`X7S@zͷ.=9^MutRvdLڠCNnנxB bs}CL7&NxuˆUFLups=f+Y^K.xuW` XY0ઃk`x^:h!uhOO_MuՎ ˾\DZ@v:peh?Tj2[:hҭ=/nh~y6I:?IV]6/̥w֩-1Mq2%,09/1*OBI~y.?Yu975r"EhL`T) ^dz\`Zs3_Y75ɌrdLu\>nOȿbbL(c]\Y__>κ=[cj_߷#߳:ꏡbv1SWN~?uqZuԬSV)6j)nN13aܫ<{<{<ÿa<޲q%3hTO'wy?gcqf@up?}.QO2;m}u}{ɐCvsuNLb̯^OLFt=]utM2h]ut+:Nn^I&sxMo_hƧ7':߮X7޲?[uogſ^b>Kuoo\:`mW{M6ֽ=RU:,~]|C/~5ŗs0u g&Tup3>3GC_޵?&U7'~O.)P70qï&ƍ39MkdNީ:zaV7fěkMXvK/O&!=_QȉG 쇷37ş~9ZupxfnI>up /b59:o8߰L0t!g`jdSL.^i:O5M:OM3OfP7uԵҟ/g^u uq? O?Pw[|k|ȯƇ|;LSiwWupMUwamjfG*|NÚygp3T>SafKAoe3U5f>Scf3UE!MLUqTu=ɪ@τޤV-Ѓ5>M?lXwA#v=xthfj]6b+FЩ3z oV~хVtT }f p鍌|]9p!-ЂC4R> }]:ilg'^ކiC6^ѠЦo0mZIrDF3iC^fwDfF:$3J~<EDGYo!G:!㇢0K+_ΈΙ?@#6}?ݢzC4^4#h| zdLd;e dD/}!+:ڙE'N҉Bvβ%}˻Je3M*ߋN<vBFYǠCgF>̌|E2#+>^gww wt.;WG+_~vGдAoH3^d{ݙ~4}8I7hwGZ#>4dQr7 bvf; _墷2,1 4Tm3hC'-=!}VtS'Eg3zpzE2= Hh?{D |SXkȇF>Eo}g&O4Dth{=ѿFE>2sf mG_~iĊ2coESoE73:S䔁/hj>tEKEU4g<@tXDٯNp7 *h~4e| T>^w< 1A\2e4Ib=R>c:  |ƌWg̘U3)1×2e~9޲@T>я;a8VthfoIN= /8MW~x/dF0{^o`;x}92ӓD92M}3#_k?eӞ k q|HkNEĭX9QџӬ31 vA1]}wfRiʨw:W[{UM1Z|'73_ق53$f#MoUD[!qncĭ(26t9%!MGzm4a|QM19Nsi|}~3߾~+<3p?󜏶M曊 fSON;ʎ 26?/& ǒ6Y|h3lϔb`g|ϻhOd | |֙AӕVE#?4Ko!ZD-ϊ1ީl !+>g̸x[?dIOZg-h3NE5M+9AWsn{=WΆy[ zh }C8.:MbakCs~<_]eگ]eگMvh/}k㴗Ct؂튷n슷&94f^fX[&ހ&`aRt}8'@F2W*T'}XYN&m@G |NoX/ j/3xGh#ͪDߴ!* V8͵ş00þ~ co+b~M߮;?=cPϔaQ5:=Әa_Tp*_jdk_%Iх( |XAR je3dt |)qZx*GE4az U1?|qƇƇ*j|ȿ>x5~G}G}G}GQxQxQxQx> ? > > G}G}G((Qx> > >  ߯욿up:9tL[up_: '{hI n>޴ARQ$YnnjsOuKbTup. &ϳ?VCVOuQUUti|:|Sr:L[1ﬓC:'#E\ܫ.W\&:̰?U7SupӘ@ uGݞY,jҨ4ucBb :isTupӸB 刁 X:LX]up`YRupYDŽU7KA.W4v\:aLgɋy1]upQH7~m43M͘*0brsQ{ 1^wyMNb6}<1gM_up\:Yd[?i}0{y덚LTvm&m?u-f7=B t=L}dW~ &:;b8?1#x:W.n`W.n(W..k2a<ŀ]ma^&Cb02:nF̕? L{|:WoA!ꏫf)=YQul:WbLu^/LW'JGQwe@z-:xoXԎ߮u7cP/9XvR~UMqU\ƐGYuDzSj5Q]SQ]S?vTה:|ު~YZuV5`=uԝRث:W?o= U٫9>X=_S{O۫zk02o{O8/y:⪃{9O:^FXup=`ʞ3s}|_^w?㸚KٍKK{đ_`|!=[uκӘc:W4?Nj֝ 2\m|u>?{h`\Yƒ9^Kunq+(b~S[;Ԏ 4Uܫ>Oa߆ac\:W//M@~#L]up^M(FVup27 Ā3-)擿?hq~gj|XڦvԵ=EJup_5yρb :):y?dT {i$:uOu2{}9x>އ3XFz_fh'XYUup>^Θ\ac|{uXG::묻(|4G:W;F;:κC::b`9$3lsAOi&IhԿ<1oӪbgLfbgL</25>gFk|&j z[n}ߞE]ka\cRořީ!5c5:&Czjjds8T bulڣϷƧg\#M t>kޯ8>^q>usfIz}? cj253QJp~r845GInΧi| Fѥu4NҖ6`t6Z_)Y Fsb@|Q'QLco!q5Ġ?kL#f@upu˫9>& U7wgCL~'(̇qz*24v}?0o)w~̎٭:i_!yACqT-dڔHyُ d}8s5ُjCvu~~];qκs<}ڗMսN͘κ]g[ڳCuo] ֽ /XG 0}P̞`~?3iNk?dСP#'X:W62 0G # #|5KTG9:_0K&:Wlڏ) ̑M ~T`]N/UsS70-'V]N _}<Ÿ ]Y듓qKŇuUɺAMƓgjP/ԁ W'uy,Fkl}z?;^wv~_[~~vVdn,/ޫ.QN:]O)5{gvp5gU7YWd{&S0?:{ z)^dưZ`>;+q^dк46inQ@/k֏)M C{/u+&1t#ȘՎS|'.f Puo1ZɬugYǓupnӬۊwé:ӖC|_{u2M[} {y{D`z]8sg+^uU783m`\=0y07ŗi/Co~x?CV||q~ j*9g+"??z.U{͉uq~.. 8NUcDXupsi#gxy߱ީnNl!gT7'2Խ)d`ҁ3yM1*V͑hSjzpk5舼!( |tSA#nײ|^& 0KMt?&~vd@Q> |iW/ S׷e-3#_Y7YʺgF>xkVF>^6[6lЮ݇4хMGvCjw M:IB~XW{&mLH&h mY6ADktIC^d/fsesWyly@ +_҅|0ޤ&qV9E2㞼3˻{b9xB&B7ENf[6}aF!zPQ7ф& iyw*_zMCѦV'Щ&c^q|LީʘޯCo3v4Wyv^勞7_zDyǯw!4˻0!oc<0_?A+_zG{?CU_?XNϟM=ey’Fz|Af/פE7Kt{a>wt2%]߃C. |II3n[} D2/?ʠW4"tS4@h]|;EK ީh ֗&q`}1Eg3*zs@=P4_SF%hō)zŌ|SXse^t]t>iYG{nNC蟢"@ .E~,EaN2 Ģ 4ߙ1XߠBȆWt^#=:W2 ̊vNڇjo~T{ a~ujg-e>KP42e/oщt!e~މ LtCldD+#CTesd |I3i8}fsfR>gƬ՘M̔/iG*4X6h+tZHVaڛ8Vt43 wDStf6+‘otnK4E4]9~5x㔁/5JǷha~+o.aƾ-tcёy?C[+ S?jA= %E)S l[ hM U&ΩR{2]@UxyD=YȸW٬0*_jy ]A~_[~QڠF}xho 'C@$V4.^'N`/DŽ@cw=AzM dO/z 2^~uz5^ '拖&ݶjE[mD#^y2|F׈t? Zm͍{h/DWtfsb ќ ڳj>E4i>]& ! E1CÖvD=mVujσ4#ce <׊wDV X|]tɡyF}6+!3Gx>kD6[E!zz~Me&:@4ese4:d˘d9!{l<_1A?A~\}2&T5c_ןth-|H˅/H?=f޴Wƽ0^tIv" )~ƌ{E󢫢+C^~tPqnqi!4֔%mE#:m#iJp2%d 2b赁X<- 3d>;Ȑ_ȧ@F#ΌTd:}Ȍ`ӆ&z\y}CB!گӓΌ|:20#赅hoɟbȧӛ q|HkN}K;WwD/O2#N?GZ0Q tG5fk3]r~PwdNߧ?>{i_쥯ڳq=ǫƌk!2ߗ2OJx4jfH<: ʐ(2$ [ř!2ϔ?y^<"6]53i?f̐9/esz]t:mD5_tfF>'&|`~:|gF>|2  ?83*>1z;[D #?Ms~-ZQ<̐!oIwf\U0Ch3ҤkM*to-*_f =5fcMCGF)ƌ{|s̸x3 hP|p6W|a?`?4e/i_ܰ_VeSAQt2Uy;>{([̨̆~4FPZU)8z:_4dSEc%-Wj CMЈx;Ʈx4) 4Muqh4b' M؟L|pZh|>|eê |ixOHOdlZK#KtijA}jGt?!MhClT*ǍMexoc:i32*/|٠ zp3T|0q:MZEgŁYқ.l4HV|OY?.T{@OeOQaxӋ t`] OJUi8mwmV,U_xD܏(((> > > ? G}GQG}G}?QxQxQxGQx> > > > G ߯jO?/[LTҹ(^s~4rRM DFչHM߿AFh. Otri4w I\]NˉQخxYj'd,߷$W t]=cQϞtsn޿C?nz=SXsSۡ7MQ]>$~iw<6!_<߇DuAW}\y~wj>ۺ-ݯ=;W/< 7~BnWG"^mA}߷M蛛d]}vEՎϻ|'>ߌ:=/i\w8xBwp?B;ɫ1?Dr[cu5Nsѻ7d&Dvuy@a.jz u@WcDq5և넄 ׋0\?!t@wF_yWo|4@Ov^_NW^жH1|;O./r}y?4>GF s_37aWH=]TGz}ާ4 ,m\7uCj}oןB_FԃoKe}XG㓅RgGjHݩd_,zPB?XFW0ߏ`GW~ <{N}ba ո_ھtb?}[Ή}y/F}} }/z{|3vW!>2Umvjy^,ݍבA}0q?g8޳a>"Tti|1O|Wv3w9 7 47,tji:tBi9K֋&=6@{r6/NИg`=4o`~bρ% c2iOڼ: _}>>k|&/*:{ߩ>c>i/щz~vXM jyY]1h~?&u>_S`OKS3'ކށ}=]-uQ~E@oNN~la?+Htߝ`c|VBdW[׷Vީ2<֣}_2XXBto~hJ_z^};+KGGvxoKo}twcO{ s􏅈:Nk77O`j?+_:;*NQ? ]}k-h竇~Koh?+ vA^ouWu z:'! Q{|mǠ?ҟuƋ S{Kʁ4Hy3}C ꠹MWoO_P\Rw 7^W֦tݯlߞIca?^x_ԕ6u:7WqY#Ro=Tx+J]N6\tPyOn!6\ ?)ݦW@m>s׶"yt[_yzh<N Ԟz}V9G Gr ?ppPJ4¸ױ,}i#U֛և8s5ɕ^ ϿSP㴚uq!=t@nP^ZOS!njnwiPqw8d]Zr\aOyuh}\[-6Cwx @iV.W/ ?n엕:\B ڹ:GOoyK-{8$~c.dۗ| Yߜ?'5-oˑġԾe!~i./i.y?G"Lƺ3i%?̉~sf6Jwɞ͉ΌA_ж2ִ?iM !Micj~hBC7g2WŸګ|41XW4ihϴTn<4˝: jL5vyY[~xLB[o}3B"W\u_C1|\}OcR7=6O!l#}u}A[|745%_<ݑB蘸<|^Yoͷc?򇏡п2?xF?.ww'7ک1>Xzz췾ѣ|\ s~^3$0B,DR_9nQO_@a<0E:nϲ?]^t}~9Flh>Fmx?~߿px5|?:}1o_h?ox_|c<%+p'ϊ*>gO| WK#>T%i;3BgW4!i3C_DfVz@~3oߌk$Ԙ}o7zI;4淀e]uo|@h<suԆF Ƀ5#5*5>3>հ4OfIi=k}V^$wZz*>QIz~tzhGSGkotIzŃ-azٷHVzj=im_ T~؇^_؏]߉_>/UZ~x O{Vz Ƴ?koz;vp};58~H~㛁az=tC+KXvh6&w⫧~BMڤ!CN~-=t_!G1؏w>/mjs=ϛ @+-^_[/$hK3 M$m/j&!iS|6ŧtKROu6S5/-wv='>L1?"3ӎBNg3Oq#~_ο{Bݐzǒ{4ıi6x4iCʼ&ǀH6WBd&awR5lbo1hOS\m>v}?&E )Tjw4t=WO[ ?ml|; 9LЂK{ cSF;l#2~-89/5ROj҆xp 7}@M]A`2,5f;LVw?хz{Cs6І!ݡM:GCG袎_Є!=FDGڋ&}-A]KdFk4[9!tbn{ p]iGhσhS/zxZwњVaniu\MlkjYfv\3ZִZw.,Z+Zhx0~k}4Y#I#ț k'iD蒵:ny]hہhDD^}^b%dMD~4|Y}&ftZV>A+ăilюMֻf p˚Omؠ }Gʦk!qRh^At[H|v{SdF5/яhy}i:(ڐ4 ݠiД&z4YbIWh7[޶pLuunyw sgJ»o }uч Z')B CP˜yǑ_ }b}09E:h)oKXoH h!zz[ фO{tw88(CoZa}Xz_MZIWF*o`!sH(zv6$K~hh zbzg>ly9>G@{Gnpwy<^|,ܘ] t 󥢋caPtAZwM8'}.EZ )q@C#NE+6̧5wUf}x' KхWzl(4YEw:h萃~ah#S)m>X^LƔW;giF|E6$vDFxc=ѷfdʽE역~9 y)7qA~!ڰ>St`x|~D^:_4iz;Mt?M4B =(K ᏪMe޹'oV7^ ~h_wcJIKm>҆k<}xgIz:~;rѿI .C>uv]ύ&*XGnj՟oFz Ѿvq+7AzMuxzIZV>}H][[ X ё@Mg*WWz߈VCt^Fj~E4̥Iq2U)r>>ҁV6f.ݡS[)ayݑc"lEfbI]0D 뿾4ˆa@mg[)_|2FL+D~ٌΖd F{tm&ZU;# td.=7A賤]h6K1:^!MFd&P豢_;>O5~ic/Oe/譲E^d{37^/+1-y/:c:hKBH /iE_ibEL'{LZIL1M AӅ&hJ~bZWz^񾛢w=Nݥ't~KkjZJhF6tZ)Q):iiטbj׾1E7od.M4MS9Q]78~/D5iɼS/9=hIW_riͅ/_Ђi)AU&y83Ù2ؖ+/)C1=7:i/e 0>F?~tҔ/W¼yW%4+W)ݯ]xtx`=eG [iUynkx_Hӑ^.00>Lٗڛ=]<<7_&~FڼUvЉ[\?8-U4㴓'i|;0=@/&sROe ЈQCWa?8jf.-!ʞ4_9 ]DA,E[ē h>iϡ==S|#دN'khC=h_~S;v,`%z<4s'Giw5]pOm:ANtBQxQxQx(((£(((|G}G}G}G((Pp(4+ynGVu7լ$ez" yz2rjE-<u}z>ߣ(Ԭ5+iM~W&yEq%Վ_iE_O(sP{5xz`%ܫI}Cp{fe^CpvDQz(\T>g r*^PYplqG$ev)[ni'ҩ7>! KQ,W8]J{|([OgR.֋3UI|J~(&U,U=ҬT4F{\dr4ob`%ܫ*K:QI;Ԫ4iԬ4w>n܅/s\|՝/zeoWoTL/@DWU½:{}R^oԬjUE{ʷԪY)9+6|ڂS 7p|*T%񃪄WNʷۨy*^ʷhT[fըUvSV[ʷAʷFʷQ+ _ʷʷWmʷUQQ-ǩʷZo*.jVZo=kUSmWWm㩄f|oVo*vj'ǫU*߶ELkN=~>x?xMx?";ޏ_fۜO>h=V橓@8*©U [ c֦Wpdkzr-g#HjVA1N=1+EƷ*^[CIohhpvpjQA=^NIUx<75֨')i&5靚ӫpwU%ܫSϘ:3£U 7(̫ƣ(CᬤJW/hEc~F8||CY j穃IQ%jՋ;^Qx>JJU jٯ+?{A%]>TU%ܫF^:)yں Jʬ{Opᆪ{||7ᒪ{ʹ|^U n VpvB)=piKTDr{Qi[p X|(ǫ Q@n ^pYyPJ(V%@Iʪ(YXpӾn/JWOD=쵎(璽['(7U½F(r?dJWدh׆syeRoAe|ިJi#)J~GT8텦}Xr~eگt/XU * CBE*`R{@{1{>TCh6hOʪJ(Rگwڤ?Ee';DM?0J݃ -+:T%\F*^Oho_!fҬۤϥ47UvI-gǻ)71?7mPk e%ܫ;+χZ*Nk:[S|ci?CM(a,'(`5Jt2U 쏦x©wQb T<DmU½zjۊvPlS׀}I[qJ/ް9]eگ>סW~p3 *)>N scJ?o>o8PGp3ST!`2'DDk~C9\ 3уפ9jwM̑s86dNh@CNх]&9H1Ɯ&[-VajDsvzC{EOIх*Ez=~6Ot9CGZt):Ó/prP/S\E+.Cjh6tC3pUߴ&g0oчmMѿ q#D?DhcEڥJ`c(jq*VkiO?8mC_h\sl-pC9]|}^cPNv;~;-n#8~s-ߠ͊d={٦Жf#ݥ#]9ҧ4i-;.ڑz SڑoWtgyȉ=1.9C ^?l5T>ѕ ?!&$@5(W5DW~j5ڧDLkӘC_iNH-k+Z9/5_4?t?9؟3AVԠ\]M3[iԮ=mD=& C=D[.@szTCS5xkc|35~2,R9V*_+:f+Gh{A =ڭwVy76uF}}ϋ[ȩ~Nj<3_gwHS[[ ?9l5߀VEsS3+јM DBr4)_Χ&@{hCÆ^ h/x0ix0ѯ%}GN3^=]ɷ^NDt@Gh@ zv|S=\S9|i z> gD~hΖrTo/#DNw>?!de6]D{6c4㫁~h?MZCten ٧{}>~~}<}6rc/O[e/SH"`H;j@RΠP4EVI/zŦr5b=ӧk:pE7mE!|ta؟@N&ԺޠMrL?e)l7_m15uo#ԪwٷEuO;sfnkAWF.`Ӄ]:-h0齦f]9 Gɩ|&sΜfs#mS\ͦ|Z9tt#O7N2Q+'Q'r|9_ɧӸ'zM9pON94p/WN>9VN>OD䓿9Lh5S9^lzҬrߪ|eE&?G^+zMr95s-g1ϙcrsw+'uڞW>礏/O}HK-C矢՘#T #0GP9B#l i(ѡh5̧}9*BHO-ݡCW6ңCf1(_'[T~(^An9Oȕ}ñ^vſs>#' w?0|Ǔ>-SH+h&ڼ);F܊W[W.y+~; 9̙EmЊטӶwD+ )`FuV|ŗiO%{<Ēn߰] { ЈK9N g7rN+_ xE_!'-4@#Nz񇎲Wv'op:Nm=C@G4N9|N/U{u _ aZWOȁ|ɷ>c.|45/yЅG|L\cr|Yt~9w?7LEa_tooh6j ,E 5'K'ЇSM,j|x*Є] ]בSxỐ ?T'ŗ.$6N_?8jT ]Oz06.k+~G}G}G}?> > > > > > ? > ~~G}GQޟ((((£D+:T ba5EpuRT WGbhDxWa5@ &heNkZbKK#oA"RԘ4ZVIMO.Tӟ$IRWnPM6u>o \'wI0NMզoР .-;W/_4PQj@=-+]S5q#KGF&H!׺ OzWG\in(L#_4DΖN>Lcv@JNfPzJ/oRAV 4}lM66Wt ur1WiX4ΡAj"G7gͶ 7p'ЙH_%zX+}Jv2b_+1eXFtG%nj~ ~Uv"J-=GI\ " ]}TG)"\x>*k?~k:*~kyQ[l#"͸ʷQ#ru:􉥱W¤ p`%A%x:Z˅/4/HT+v%AAN:5`׃ =,*rq?_4GQA LaU4S F|$oS]#%n'}X#71)SWp %[tlpq8JiDt4Vdz*xSěߡ;أ (4*Ƣg({')S`.W:߫.OWɦ0&:sΐl?CG"n[Y#͒W[*mIz̕bR\эMc`+JEWpf@e͠Ǖ vʓ(r[N}aV-G.o9ӍMF9\eWoXw#6eݫHHQבIH'yimr`$g Qȉ& gȽ1^9)̓!Cohb Q,"5ʝ-cڌt^ҳe" rab)d)DZ(0F:C܃% lHM\Е#%&!$Jʓ}ixK3}Xɑ$WJ<)Y8-nljH1Gg}z*? yϺG$qϝQ{]9s3lsTٽ%ʻʕ=WI,霠z.eyryxҕ]eϵKʀdy-\9=U8 d]y8*CҧΤГI?rI}'"=LW.fj]3,s6!}&ԗGZ}ly&Y4>O9w)v줌4z1m܎ֵk"-M%HrXJXyL+ wao414tn4tTAM} >pB:7nގqI\}/]dMJ\'N+U4mdPX-м_ 7H9Ci\]3i\O\Nj5{NWOw!}s9Ap4V4bt]|Z7?ZqK+H1r|vnsI #8+~e=zfPGEw@{U\:]&|W_Yq9M&U^vI2S&uN _yTme]&_Yzj:NN]BJș8wBȰՈN߄*Ꮷ^9^YqS6r5?]>#gi yrWxR0U rQya= ?[=~u{_Kx|Wx\s/*ʧ6jz~`:!+:*||Fx S ?|4}hs@#r8O[c|rvoOv`~ |$tj?dx O9_yCa =.2urcӅۘ.VV'GzB3ΔS/:_6wSlc~RJL!kqoOKwKcpjC/ -ʞcAz "e9W4OX}>.i10:bȾ(ҧW7E 쯊 쯩XChs>{zӷj9;,WO3QT؏h|M{]oF.~`eOPb*=Q e: 51'[fyx7DC1 Og]40ezÞ!!nYsٶ7̓difۋvI-}SYU|<6>6/MC @Q=$9)\^SNn`͑{|h|Zd7xrww\`P ~ȿ@WXBr܄8ˏGs  э?s72w\F,TcGѰHK=[=Hhn3vc3_CTnϸ &*@[XYɞ<C٘ Y|_{7rGyx >}\v{h褠 B#c$qQT)W^H$?W|@$B)\' p{Sߒ) [$ONݑ2;Cgt;㉩DʭH6zGH($ɼg`u¬)>:sғ1:<^@U$8b= M#(Td}a_I/PlEY"*d.$H/Pa%njOǥD\I;L~>i>0b`إ;r7λtE7Ə0Rw'q- 8[Ep-D6컇 ;T f:8Wcq;pO?CxT8((1S{^MQe[#UfzRnTORGϽV(+K6ޔ}hik>oYug{ o>u?w>1z%A/j]*,ru~nPbEnP_*(Z|3I$5w\|QaQ4{gP_M xɽޏ*Lsz?׼Ə+lB˫=zEVFԠrDjJFrG|^o?D]Q?pbw~D棻rwx]Qkzc) *ĵKWwOO{(7P\R_ZS|¶KF튯D\Krv(/jWo${E%GrR]jWutylS@w|7K@Mm-|>d Dyl5FU ?^GMRT@QY*K;_&H u?U1*Z&Jk_AGT(.- 3BB1 e!Y"/R[Q`E-Sn΋j jhzS@+t6(-ʋTё祜"?y(* )IfB(QB(Y{a. k/;LdxIP&ĒP@T|Qa{\دvQb|c3x0z| byNmCTA`[?:#IRK@-)8|)ȥS(!{"ƫ6#I,Q6b>HO]up}i>%gqx4(c c9~u_?O<^?jdBX^qu2xzQ`PN!>Np?]p?L7OirIJ?MXx#T?J(x^~: sGh1?r>zl(H9p`hpc  +M ݤ;֏#л"'X?SPv wQHƐD`]q;) ؆(z9EeBgŶH5V$c}PsWx+w9Iu >>>MG}tG}tG趏n6nmmmmtw >ފ]NpD endstream endobj 165 0 obj << /CreationDate (D:20200929085854) /ModDate (D:20200929085854) /Title (R Graphics Output) /Producer (R 4.0.0) /Creator (R) >> endobj 166 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 169 0 R >> endobj 167 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 169 0 R >> endobj 168 0 obj [/ICCBased 170 0 R] endobj 169 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus] >> endobj 170 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 163 0 obj << /D [161 0 R /XYZ 80 770.89 null] >> endobj 164 0 obj << /D [161 0 R /XYZ 278.515 192.279 null] >> endobj 160 0 obj << /Font << /F15 70 0 R /F84 92 0 R /F68 93 0 R /F85 94 0 R >> /XObject << /Im4 145 0 R >> /ProcSet [ /PDF /Text ] >> endobj 176 0 obj << /Length 715 /Filter /FlateDecode >> stream xڕUKs0Whzgò!B8=:IJ߳ZIy0dyOڵ`S&UeAU3 l4a\Zˬ)F:[@>^0{aR*eQJ77\㸕 :q{ JXpޣ(H<(4 HÅsLU<*4:KFܰeQR)v':ӮƥBuUzz"OJTiH붐ue7;`-9 9gEi_Iyhz}2,{ZF_ .jQQj?A`M K,v>aD`18/ }:w]8,m@F]E)!I5ڭ _Z>Q$RLd."iA k-DBipʷ%h3Jb uUgAhKJ}hJ1ޓ#޴檒4fOS(O|a)KUƮZ.3E7D^j9?8.f = Wo 1::|`T!՚,Wa!ĦFscm=4zYN;FW|F/B/{{SC:qTEl?J쑪 ?|G췛y"XyhSkrИi endstream endobj 175 0 obj << /Type /Page /Contents 176 0 R /Resources 174 0 R /MediaBox [0 0 595.276 841.89] /Parent 152 0 R /Annots [ 172 0 R 173 0 R ] >> endobj 171 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./diagram-fig5.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 180 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 181 0 R>> /ExtGState << >>/ColorSpace << /sRGB 182 0 R >>>> /Length 5802 /Filter /FlateDecode >> stream x\ˮ,KNWWLH-+1@2Z^ A9gשt^;?睮w>xO???'ۿO__[\X}U|ݯGl|sʟ4 SPa̗W';7'}xI8ب$L@6RGحrRaqXq~]'qKHc+@05&_4=uiHҔ _^ ~? ^oWx%8|FFYT.U&}L3?W:dԮ']{7gٖC>"#^=SPN%|k'~r.#0¸&}U9O6rs,jf!!# ʅJ p`EGoa9avٮ$VT_ OZ\y6By2,qtNq*W]*.E=s.mDJ;Swž>9,W k.;vid!suCϻhsL-.A,`J4MO/,.`]eU|R]JyuMmyu VD؋ad.9Rυ&JK7!pjwTp._'Mݓ}IC[uC zk2b_'tO~tm9 Ǩ&!$Gkp;jL'&'J7?'!}3ϡK9 X8¦kF%d**M{Cakē# w$B6uT՝[biL@5mTzһF zZO?iwA x]6R֓Woא 09xՇtSݼ[@P9 &Gq 3uuөgYA}ZȠe Ku^@Y"Qź% BWԽ" 9wSU ,-0^S Ut-ոHb4X$Y%"]7j)R,2qy;HSLf邘9.G,!n}OmF+F*\~n0d3 `{dIX, +f6\iN8`=}eH( b :D($"yU:#ѦQ34ۥYⶠXjlY،k6_1kD/۹")8㷢8s'c AD1]2+L뒣Ջn"h7nI ),Ky bmaY@!Ѩ<0 [R) "GOZ8w^e"E{^HR0w3{!ocҊ;h2/! Xg:Xl, bVa9^fp SH;{iGThPoNk_l?յiQD^e?AE儹ijTA{kq$P3VU)& S*JgN@W!`4WO |$a3)4W"Ehgo@\Ɠͤߩ c3`}]u,TlFG2ҸΉ45@EҎB>ЊchC!3b1Yx o#1:v$ ZDMu`j[ݱ-`I/ TkC[B@T|tӴι>P~t+@EɿZ4 ܾxĆ 6gVm <3.õP*ÓE}4 ܮejh۶P5+"|ۍDq,+ B_g qѲ+ qeC? mIJ"%CԲ@ oyR;C\_"+m$tRQKq]@!.:ĝC`5a5(?(xѻO/PyN:"n58?Cvy|ЬFe}YY ثc>n^X]|Ve@{gïWgvPVy-Lof2+@KLE6F=V !{gT3"Dū ekQncpCԊ¥!w3@mI$Bz4eQ4JAΌ =D NqO2XYщ-zCP֘=e!yW=qyV3oGAҚҦ?-hk;. )eN/TRJND=Q>$nVhMg&fb7;1Fa@aa>$ņpbk o>$nشN ƒ88ڨƒ!$q7QNZ1hư"PН^F*LӥQPp9,>Y*R?'}c/Tvb%H%`w (*Uyɩ03QZMĝ8 ] zؾ0p7Tʁz87& g=IDΞ$2Fo`~# g9"ىMZ.T>*r ,nuzswTɭj5=/Xm86d#sbҦAH_ ՄϽI#SVN }sןyo|CΆdtL!?5CPׇDx5Υ=ݕ >$n|l|Gs {Y/{}H^e/x51lɎ A,=Iܭ>-Z2#}z_s79˝o\[¡gϬ0z@Z9VMmt ԥ '{b8/gz%bX7T4E(p{ҏvr5A $/&_%㧧>&R=+P%hΞC}Xϳ?? 4a|ɠC,M v\@ִsnH+3y_И8 f g0c SBBP}AX]$as0!o3yy yqAӳ7wewCBpަ֥퇸y⽦hZg?Ldm[!N\ĴXbw7 "YjrE;uUƈ ExH;v -Vh=^`[5%:1=IܭQ88u5pб69ޗvxhB":Jd4.}KcfKQ$n)u~ѿ ެsɒ;ݩ ޫx}zT1y3kEo8\Zz#їgoٳ2l6}flo? ʰyHo%ۘTo3o:dѠC, -xVVoџyaAf GV7V_ٞ/F3c+a fZ^a_(+."OYC{!Ty֠:k3x>$t.n0oӰlևсr_.}]tԑZUDtކJJZ^(`$[[cLUK3EY!N3u~^'oDEɉnGR~CRv)CBwߺ I{jPl ׇ4t߯"}Gy۞w%/TLJ*ߝE"W;9 endstream endobj 180 0 obj << /CreationDate (D:20200929085855) /ModDate (D:20200929085855) /Title (R Graphics Output) /Producer (R 4.0.0) /Creator (R) >> endobj 181 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 183 0 R >> endobj 182 0 obj [/ICCBased 184 0 R] endobj 183 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus] >> endobj 184 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 172 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [174.017 133.057 236.563 145.855] /A << /S /GoTo /D (cite.Donali99) >> >> endobj 173 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [238.917 133.057 262.728 145.855] /A << /S /GoTo /D (cite.Donali99) >> >> endobj 177 0 obj << /D [175 0 R /XYZ 80 770.89 null] >> endobj 178 0 obj << /D [175 0 R /XYZ 306.196 338.675 null] >> endobj 30 0 obj << /D [175 0 R /XYZ 81 171.735 null] >> endobj 179 0 obj << /D [175 0 R /XYZ 81 171.735 null] >> endobj 174 0 obj << /Font << /F68 93 0 R /F15 70 0 R /F79 77 0 R /F87 98 0 R /F48 68 0 R /F67 73 0 R >> /XObject << /Im5 171 0 R >> /ProcSet [ /PDF /Text ] >> endobj 189 0 obj << /Length 1674 /Filter /FlateDecode >> stream xYYoF~ׯ D!֚{A9 @6Q_dYT%EJvAs*Q=Nx²$gmbb:)< >pl 23Cߜ:9y~S5\P[7Bc.r$B֎N9gndrֽ?:Y@k?RԘ,s\ g<~{-]K} ^е@ORf8%*2)qkǔmsZX-GyzZ-&;l>#$\n?-"2(I)UI2J"ŃI~ "/"E1)J [Io+#R5j _~z08ի{F|XY`W(0{װqbGKr:\ӆ뗮K^um%#iSz. 5+v^FrZٻsRhG- 8=IrkGdAr+Gt-i=.9;2i^c2$<㕇{ &= TSϗNgrt圸$gKp8WOMOW}/b}U̟)Pj!0"ËjqS덟q(%n=fR@= fn %^21qbw88 Y b2MƜ]7X1+aȮșhkfRdDa䁇r1&6 f}?@'('\ֿ tdfJȭk(XUþ fzVe4 "A$} qL\6 փʔ"A[&Q$'{RsaERZ@"*}j:a-HYjt)7(K ҶyY.kx;e[(h]GpӍ*EݪJq=Wk}JZb$CI-T6"yդx4]U+نiowBp#T3&)]BɶC>#AݞL)J]P~tH ӻuZ8B҇9Ev۶iUЪ|Fk{*kR@`ݗ }No65)̷.!?߳upT:0|FIjF@ PbveE&uהW_#bt|aw ;y1hxDcQ-"n \[XϣBD|k $ f,R|swOy6Wk.F߸{}S d}+Ob|'x^S+!xݫrd s^ endstream endobj 188 0 obj << /Type /Page /Contents 189 0 R /Resources 187 0 R /MediaBox [0 0 595.276 841.89] /Parent 152 0 R /Annots [ 186 0 R ] >> endobj 186 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [290.873 345.996 297.596 359.744] /A << /S /GoTo /D (Hfootnote.2) >> >> endobj 190 0 obj << /D [188 0 R /XYZ 80 770.89 null] >> endobj 34 0 obj << /D [188 0 R /XYZ 81 384.39 null] >> endobj 191 0 obj << /D [188 0 R /XYZ 81 384.39 null] >> endobj 192 0 obj << /D [188 0 R /XYZ 97.575 109.765 null] >> endobj 187 0 obj << /Font << /F15 70 0 R /F84 92 0 R /F68 93 0 R /F85 94 0 R /F79 77 0 R /F87 98 0 R /F48 68 0 R /F21 140 0 R /F22 142 0 R /F90 144 0 R >> /ProcSet [ /PDF /Text ] >> endobj 195 0 obj << /Length 245 /Filter /FlateDecode >> stream xڍPN0+hxױs p|C"J?Q x;0$׀FGȓ u6,vѩZ+UAAv8 zIwe:g"DMȍ$M,TkzB̸hr׽x൨/b..ij7f@M倈tmi'Wv싿REUYؚ!v\I>fv7mr|Mz wPd" endstream endobj 194 0 obj << /Type /Page /Contents 195 0 R /Resources 193 0 R /MediaBox [0 0 595.276 841.89] /Parent 152 0 R >> endobj 185 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./diagram-fig6.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 198 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 199 0 R/F3 200 0 R>> /ExtGState << >>/ColorSpace << /sRGB 201 0 R >>>> /Length 1577 /Filter /FlateDecode >> stream xX]oT7}ǞgZ$B!+U*⁒Z=3r/x̙qyal^sοy~a>|uΙo[O{+x1ּ={ݭy5o>}|onr|;y1Y|6lXmdT-_?1-p61U0 S&[a|P1~zlWcM+v;)/o&&J67\׳i#g+΍[^].ߝ:F g{l2Oۛ~zjlzMW/kqzrńtD)E=8Vcr,'ߙx;\  e@ul}J&(% z"cDRl),9ڌ`,GSM~Gٌ#}ÂmFܕlDww lrNy)8^2|c}ԏD \z#K ˂chK2>yIAAĀ lELMY\R1*4O@!KQ/ NJ aI -|惗m(NS1*ӎOr8K'Bh`n)t+-ZS!%YȨMSPl)Kv1?T%ĚO !7e <ƀ: OU0ZUe dI6͂n14PDgTVvвpg(wQhvS)Ef:G Lݓq!,rJָqqܓbY["Êm>KL[|x7ٖ{ %K`$I5!qhai({e!w|`ec$V ;ova>RT~I\2w|t+#:4|*[T z(*w*"p:%f:>QMŧ"구#9]xq e?!3#<׊k3DI.'ԭcqCq̎*eX+Z8 V/HTP@RW`^ 9qH);֊Ye9V^R 89K"]|'e'Z_Pg*뇂CxYj;(IrPPx!pl.c[m%AύZ\hFʱk@OG+&)A*:1v$$۴0=@ӓt .Q_ m(/6?RkSy˪6)h` bgڻuc>oCF$rk~1ŏy `BLZgDLP`tbRX)Hkj[Tg}4Q$Cz krd`m8y+i/ PGWsFܿnq7w0I!,xյ)˃6IesϽQ#ؠ[;סZq,F ,ݱBAŖZ($}a+jצ6,%yIzf endstream endobj 198 0 obj << /CreationDate (D:20200929085855) /ModDate (D:20200929085855) /Title (R Graphics Output) /Producer (R 4.0.0) /Creator (R) >> endobj 199 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 202 0 R >> endobj 200 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 202 0 R >> endobj 201 0 obj [/ICCBased 203 0 R] endobj 202 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus] >> endobj 203 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 196 0 obj << /D [194 0 R /XYZ 80 770.89 null] >> endobj 197 0 obj << /D [194 0 R /XYZ 263.749 236.382 null] >> endobj 193 0 obj << /Font << /F68 93 0 R /F15 70 0 R >> /XObject << /Im6 185 0 R >> /ProcSet [ /PDF /Text ] >> endobj 207 0 obj << /Length 1706 /Filter /FlateDecode >> stream xZKoFWʅB*fo}E9nI4IK%ѥ8ɯc]e[6Jzv曙owa,>u1yVF^&2,.T:IxY9Ji44T@H$NMǙcn^ĽE/+kYNL|>!3aE5z6 &zz>y$*j\h\QH-|*F9A}I}nA@ DpU@}^OYTo-nƜ\8F3":s?d4< Q*EEXYLH_8ɤ'؉dvpJw,unQr넾R8'7K< IXVBXm vf4l p(Uȑu(O (TQ+S[7Hr~GZ_P@6}4tB:SM2@;Wvci:ִD߿B,$XK 1:l=o:E(ܼ,;ޫ*yYAcqUŻ֚) `n8qGe6lčمႢp xսp1y4.)h2RMܓ`3Xe$B?ޭ:䕦GGqV8`㰯Y yfH}GIG,a'LduPrpJhm*q\ ˕0;[ك̜m,Z#F_UaS\IizIe( ò[h$P9[Mѕ%V~=TESBD]8=|ab.NZ %C^wq̻41u(*h'r, NcQ%(Ro\O`:#lAQ!^fDZ3ˀkNնGER_8p0;d'p``49* O\~!|^~mA.UT]76=h Qnp6yNpKH٬h8P\LV"AMjyb.\I|z<5kJl\ Xq[{nL?@и ŽKGұ F\c可ODx7!#3U =vLgZWÎJ&SbL]yEC7#=rCf1bY endstream endobj 206 0 obj << /Type /Page /Contents 207 0 R /Resources 205 0 R /MediaBox [0 0 595.276 841.89] /Parent 152 0 R >> endobj 208 0 obj << /D [206 0 R /XYZ 80 770.89 null] >> endobj 209 0 obj << /D [206 0 R /XYZ 247.086 729.044 null] >> endobj 205 0 obj << /Font << /F15 70 0 R /F84 92 0 R /F68 93 0 R /F85 94 0 R /F87 98 0 R >> /ProcSet [ /PDF /Text ] >> endobj 212 0 obj << /Length 234 /Filter /FlateDecode >> stream xڍPN0 +|LIci@8!r $m1P~yXYTmI6!-PCBICS(W=Wޝ94 #9V->@э$aO+/@)P4yDl8S;}U Em}&>yk:DdyG]}߾u||'بϹKu_֠\ endstream endobj 211 0 obj << /Type /Page /Contents 212 0 R /Resources 210 0 R /MediaBox [0 0 595.276 841.89] /Parent 215 0 R >> endobj 204 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./diagram-fig7.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 216 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 217 0 R>> /ExtGState << >>/ColorSpace << /sRGB 218 0 R >>>> /Length 28832 /Filter /FlateDecode >> stream xI.Iz_-yX ` `6BЂ[D|ުj6ĭrùo~1>É8믾?|O+o-[?-򷞾J_S?SJQ_ex(u~>okfߨ?-寚վ~~ \zpo/hx|ۨQ=mP^ҷ][f}[n 8o)p6u},>>_v~-Ͽr,%}~^?W~|FFWy{ԣZ|iϿ<]#+[_ x?oi~كOUKLܣg`th+"bgE D%4}}O<LO7R ?ѢQb9x='k .·r1#>z̊E9>[́k*sǫNUÿ5J2S4a}[0+j#-Zmx^=RƎ>=h9>x%#&گ;vG\1"uGv?hf-txFg={9:pg-,tXNOu33ogkxzgE}8|<킷灕?%;pτOs!<}?/څc8FwU}*(?K0ߟ)z-0?0߿k`=gf纻twm36es%l+uG6\- uڪ9u{ѝUw/ErKo+w8h:p ?~tmPl+vcƯ^MgW~p?W?>>xw㝀I] Vts}6}ƹgg3>x~{a4*o|p5~^TdoՁ[?xctgoKy*\&0Fw֌.xxDK!ij$jǖ l¹}Vb{%YCF$}σ.Uv.KD~X~읁 8Ϥ?8X|E o8wZ}p#n}4`}_E?dz~Uಁ1ӌ8 ;/k|?ߗ]3-=_nnX;шEsUw%,ᝄc}V&ZJ;5XOX>o+65bw[x6k9p} Z]<گF-xg͏|>knK~H6Ij1/Xaf=ߛ4^6Bdlk.oc}xpk±?=XK A2LZ+piL=fG.<֟>_0_ ,\bwrSEc+l0LL+N,ַc7zS `^ NSoA؅822f q_ '~`R_YU8 O ڧs} ܉?38>3LD<8;^Wy? O(~S6fi_8yCg76"??Qi-::px?Kj(8◱>b}/ƒ:Yl-> &||p5]}[V?8Q' 7&0c%E F6"\ip 1~@Z?>k![~Datkw;N#p#wwa}w9߁>Mt}<0g*K˃c~U '2=(4ٟM>[~s?!h_8P#XC۞{0#޿:>d?M.'OW03?9x2~c -wƃ"Bx6)x00ۃ[/ƿX6.\_V-{C^q̏1? < xj}<8/ q?Ϥߛ>>|_/Gy)fXg.3Opx4D۴6tT`Fe!^G \9oacVo08n_0޷'=<8%$Q{f9 K>/i]O0 mf3{x?Rz\?7ŁOGؓ-y`F"^ L/;/sӾ_^g`/,>2oVԷ9b`h&,>`{6G`_f-Ž L`E3]׵ 8;SA!pq wWRyPbX?%qX?[1Qp'?1&(F40}k*!ˆ_M 'a;U^1_k-p&V|~D?ls 'ڗ[,Ig`O,+Z|ד0٠k^Kg?\Fv~}g>E`?EKGtTxY_zy>5^hGSQ"8/W xw2pvaX#]X*?K}֣|\D1A wR, zӾ4Fu54לZo&9'~Capx0hbL &{M/؞GʈwLcԯj#~c=z0̓)6RL m3[8WryXD>i,Iij\b3~&_n/=_#G/.Vx3}pftzk?}s}V<1zyd-t}fGt+jk>Yo0\?#o/rD>[2n?XfADbDdM4'gNV^3;Wpe=4~ؐ$ݮ^g?쟉0S7}X{/_6`_~?̤fLN'hYm2( 6kleٙ&lbx5'x'O41-(of0>[7~d֙vvy7EVk~.ۯ>8wƚϾ[g[1T"du2Ÿml}W[?k(n[+dm6"dGp%O?u]k le&/FwlQ`mdف&+zokmlcVۚ^|Gp_Ȯk~a6)̖ F6~;OI 03FP[_aX;xwd b>VmfwaN!Xl*"PZW5Ȏs";ٍ3lS& <&3^dd{.dva5 f71%h 0Sx-E'j)Z^Z\qcv/a`c,vhqbLK{i: G_21c#[ѵ`WG{*1>>=2 c>/vWJ6iK6=]evAlKxO,v&;w/vߩ}bfsa(Wm*cKNF NWyl^).T׏ѣRfÖ63[sO_Ė;7i?ƓlϜobNw L/_؏2;a]q`lᶢ5q~ng?g}*߲dZvuF5BΆd>M%>]lMv5~TcHƒP"=;;T{CuQl7OOxx~o՞bw5gF{4{akѿ;6Jle+"~Toy ;=\ ;rɞ>칃{ÞSe6wsd_OW f{8Lp\3F8{C{J";8;'zFm>lhavFe>dqkl}Ϟ_EdWf[̶t˷ԙ/<}囍n-l~1mq~QZfǁ=k~#~֘zlY?& m{j3[Fcv%}6?zWm#h }:Ug#m6ڣΆ>|B﮲cdǙ /qd c dmsr؇j\'*_C*o<ipi6Ol;xl8Aibl;<~;lm6]&{Aa'`/ta=PɧW>ʹn`w\*ڏj'{l.+mӧ$Ϫkw`5+C2̎ۼlٿdmdeSl4퓭c`mo`1^;J>-'vsZPls:'h|mƃO }z액W_tnf-bGP{F6Ԑ\*P> U*Pb=WOcvag0?+%vAxPby'\^uIUT^=7V|iD쯘=7͆{n=&fM{`>pٟ87ylˏ冰E&qnČ'xZS1#|s\x Wyo̦+mŽ&u8\9>a+>ؿg=X̎t{b6ίsswuNϓxNOoy-ITȾ펯w> يN!흔.?L-W]f0>b.K6م8{Q)oF6c YfvTK'?4l!|trAs~.mb [柷ַf34=md.feqn4fG>0{]H{uxZb9VnWbM{8\{(Ȧ޶"{n; {vٟݷt[]ڗ6nηӒn?O.ٟElM, >}8=^n<"vQu{vpڋ/[HoyZ.?=q[Qf+dM@~v$n?=^͖m^|MR`/6hde H;ldɤ:W|%ič6_{: sk4|1{,o.N-CidN|tMW|I'_dӂba? ,N6x}6ln1~6}[Ф8ndxP>iә`>c-/ط>}m{;×K_˻{yw/ݽ;w^˻{yw/˻{yw/ݽw_˻{yw/}yw/ݽw^ޝ˻{yw/ݽ/Oͻ~z|?Wc'm|?׿yeLAk^x [?OkQ|𲎞T<׷ȀBQHE_4hҿ~ #m(Gݔ|_jg3[?\{['2JꐄZw?ݿ!"fN͙4̟? v]MO6l iM|_-j<)nM㉻%ɅV4A'\l=c.1\Գ`Z>fTvڃ)w@~ |TLp(eL? ^ -5sםZ\1)'>%Bۖ{F@rg'{fzb]aFkL‰e5 []BýIa">N&Xnr B@Vdh.ZnrqR~ 7tpsnyUJ.;YbZ-DƶJ l54Dw!X wr*r&JoTN3Ԟ##_d WPe>.mrU`|oUƹ*ԵlUd@UvJ1K@ ѵ"byu*I%B;5fU2\?D;Z &\«smzȿE 2[OxWUaag-n*g7~a~/$rT u7Ā0t;|M07&fRE`pLK6at;д1*MK <;0ȔUCfy”ˌCfu/ <ɿx>*IU3UIz<^aNdQfsn}&4aen<p3W$ҁ$L X"_}`Ōp'&bƹhc3LZ.Ō{uyt(f \Uj.3l'/ϝ)f ga<~}?N;c>dEL1c`|/Ōp;ntI2p3Ō 1 wa7ʣN1\L#gG(fфK4/rAdt<7+iE44W aMxsq|jUE7@1[+7VR0^`U8b b}I•屽j(,[N'U_Z;b`k['Ə//S4(qM?ڷ`}%'n4]}>UǟĒb~XJE[f`ٟI 3h?.zac}őw\ZՑ5_* K6$ZU4^[Q~,vi$@E[C>!W7hUy_E֚5IٟMFew}axkngщCaJUSÄx䓻dM[9cBz:|;Ħ2i|e$I+wV5ǎc*{% ϐa.gǰ: ~>r}5s;1~ |Z= /tc'Ruq~=; ECg?Y`\I]L_`?B=4ۻ9ⳋpG1Yx1$a=rxŔ^1Ef+X3$_O\~iJF^ J=nhxs6m2IW/+??TuBѵtgC4E Y3~5ͦ7`끷qffF_z?6 \e&׏q\?'3~xΔ.=x~"xz|F5px-HKduڋSLs!4phZ\hi{CQGn_ilXӸ\Jv8rH GtcF6q+ygѠuw[U^wU)^\S<4~_}oqW߫r%ǓoΜOOQ1?K~`~g// Mم+Թx6-KxW2y|vC{'npas|W9ÄXپO)q}Hg؛5VBw8@~hq/ٌ o:L؂&`R' 0m6m_Y~1UTf*n8=;Ăio')ʋB &&,+ Ne3EAi*2 զ9M^ nql6m0NwlCyL[8a-S鋹-o)i%N+m?Trj5"A0RT8 "{ck-FAD6o E@rAP*qJ~oXh39*qbWY %- H?G)y[XpjI `ST a_a2z`΀ *6CLɥh'zgbc22 S.:)Qɩi2I昀I8;a fudlI"Y] xr̗fA3)m ,e8[~aHUX$VK7wίaI:A&R$K?Sq~+=i.c]xp&%"mϩl߭[]PRH_|6Uĥ a\L7 OQTjX01 ONsW1s7l%i&DII$Y=dF8HX!9IISIdn~Hp[՞"='p6pA< S]$)IYjfcRْ9ILa$I̠f$툻xɻ]*DRlaO:(*Bw-R4}K}d;Iq4 -폭>,jfBUIW$Ix4v‰+i`ϓ ILZ5N7\z;IP-z&߿H2ͩn;$MV P}>$zW.np%^'߿&"}%Lb ]%H)ճId$A'tM@&m l &Չ4vH8WʼBx}I"ebIwI^F1 9Ƚ#'{cDg;eBpcp%&4F Cb֧IQ& קo},R__D91IG qM:9Qj0ݒ!5oCgiOYf4kڞZ-X$x&^>@64nb>[G6/6Jzl6ڣlTa1LDg`G4fI &i8_:Ic"q Cb3cC?z9MZoL杻d|~l E&_1K?Hb nk}*!&|s )Ma31Q7 RHd^+c{xqmfj W84OJH\:Iz2)qZOƅCK[$ ƺH]I8%S% [QC55CGX_6iT쯎OKM$+ aC1L$ISM94x HIK_=XX |ť| cw+x8^<69ė$ uG%IF$tĵȼ+Wv|+>HʻKxjʛ&ą܄0I`߻|hT#̇0L*>T~"}?^qG E$%܅!Mb9 +PW}'wR1'xw dIe-{Cj2HUlI[r~ @lF  sBߜO$P%!% LRju|=s!i^ {I){읔LLJ?l.&})z0bN/:aN2WXcb')$Dq ' :uģ%XJ$ʄNE'tn`Xݖ2U iϛޭKQ6zId܉t/n;a3K֕ÛG;%7x/T1|-5EtT/ C#&JVƀC&΢8AʲHQɃJ4Nj\dUƷœp[T&xpyfxD/[%k2ZZ'_d,}bE\`GE1&odⲒu-WN 7b)%ʼ]j3yp,9Svd5Q!)uA|E=f~-I((tA"v2P{ ==Y5"~ }haf4f!?^"KD{h_/%D^"KD^"KD{h/%D4㗈^"KD~h/%D%D^"KD{h/%DD|A.h?OPS_{%# Wp%|G_Wp}G_QWp!Wp}G_QWp}G_QWp}G_QWp}G_QWp}G_QWp}G_ѯWp:f{{{{Cz{y{y{y{y~y{y{y{y{y3{{{{{77Wp%DѾ^"KD{h/%}}h/%D^"KD{h/%D/%D^"KD~h/%DѾ^"KD{h(8Z n8']P &`2 ~ؿi+%,)ZNgIQeI%Eۗ%E-Y#,) _OQhha[Գ~zơ%E>1Yzs[ի !-REa:C &]iOg$`JARa$3ߺ66#hʦ>K7%8MbOְKg0FHX&Z8&GʂTj&di|&i/ AM^`gi2 dU6\('U(lu&G":x=aJVhgGg >P{X&;3SH{V>_TKFͬAP *aJY'񷺾5uEKPrbUegV-⅔ FU VyLb/ BV\..)R2 T*0Z0U(T dRS+ 1ɪ{>]YY Lت0om}WiJ_/#Ĵ5[ޡ9 V=2XngG -T*#Púq#!ٍ2]# y2]n-c#{00FZ:`'і Ξ Waec{poكLXG0SdhkЕ,[0|hHԼ)J hJnEAVJtXEv"c=_:fYpvs Snֽ,ċw+nEyɀU+@>@pr?7ZUEq86FSQUU(V[EnEIȿ`r)4y i|+}Kלf》8)(&./lCpq(om_├ME,ȢNϊ2F]WI[o5?A:l> om,aiygfZHYzXg 80CiʱA sKBHp1`ǚYh4ˏ^knc7+Yó/a .Wx3{M<` ~eFZw}Ayk,ɅPQ(`b`Trq@v2/`ïӐK=ʃ[M0BpaanEɨ{Y\e'ߔ|&z/U"8zUB=(Ax"D}\{,^ +(k7â{q~*"Z6 -*Z)PzljjFIZVC&XL0LJ]%ipruNPB>3zpm[v^b' ic:St76)'Z7Z ۭ*Ն|#$V9mӹH~U-qL5s|>eWIf&ib+T[٘J&Otf*CqQ O.B6 WZ0 Lu*M_jexm~xS%z4?T"5!xWi..)Ӷ DEpD .w^БhF$!uQ|>m؋si>{tVQM.:em 75'gUpG3dc='*.}Z=jk[p"t>"?aq[!m=y%_&V;lkt 3 nhvl_>(v_3-܉_|hZE(lZETmZ=͚W- |,) =֘ٱ Y܃ȏ,Ak܇%^w)ӡKχ[$0aj K0Wq'a{rf<,s @ ED>ٵB 'rKr6ml.U6-]ގAmD#TFj (̞-%uڴP@+Hڬ}0NLdSB~mwۓȭoY\܌F񰝋÷[԰ꟵȜQ)pA)wDQ S浥0WF?Bf|-2d^`n񶗂 gMt w< Ob kaBo K G/NLV  /sC\J=)]w3V gR3k;/֤3#uM1aN!xX£#&QQ Z3p}uN|SH˥RlD ^JS8םsLaGB*B!Lݧ ).o9c4#"hTNq UӁq͹ \~Y r?qqˣ}CpϠ^9#NU+Ln%bA^E t4QMUb *~klnO?g,8N:5~pxUdg}/q";9߆q)Y\ES!ڊl^O!I:3Tt%%njh w&w7F8Hd{玉֍fjox싎q9-ZL%[%ٴuI$VCy-ǶU`Fj*m36I0v> =]2{jz7Uõ63ԙ %UGfbNb_LذBQrw5ݎ$6Ld4Dv"g?eNaRuJ/[)^ NmǠNnE@"̝]V$H ;G FFvE, dNΉIkh\1.<*eAϿ$(&3Ufҁa; ;<,N_&[ !93[6NP:\#ƞP&È&cL ɽr8"U(2bvi@R+L3%#&00 [ѓiX[/s@OQaSg3700Utv?Y{-i>Sm!S,;\X2 7G?Sdel 4al\ ^51v0ela1-L} YFց,2xJZE`uZM8Oŷ.DC 7tX"O>72X\?*`DR$Rq7$Xga$)~&!ýN srgFW"Lijyd8ǜ_a 3ㅗYHyaB'αp5MW/+٦'mӬЖob)6R<'+mh f\^w@X@5R&f-y'(blMo9|z_$U@Bezy* |P3Ӳi5"/4?vOK@0ckRIgAUQBx:ڐUUΰ?: RC!>Wކo0nv찹~\զ\6Ξ׎Ha&m+Cd2V s!)_ [z7`'pI5Hx7H-aU{i 5lM5=Lᚂj& \1Ah1mnW$5L 5 a+)Z VGhj9SL36QMxE51p~u:qKIYY2Y[^Eyz# H(zd`2)ɍ~hK=†WBeX'>QR+_*w6 wy0\o(D?.7 nȷV}p0/7 FvQ \n^nl_(Mh{)-Fa_(,:rHn |/_w~طx)*B ݿ|Rz&lyYVx& ,A n6M16YW^61e#aĢu 4/9MB\k}@Z2gӹ a}Lq88z0:|L2TL%ٍ:V1V1 aUͨuzU>N<Ꙃ[,f.UCn QoYKbq Pa}Df$7 2T7k@ck݇&0 }#L:Ͼ?}*&+Am/غWɰO'CMl\ƳYHn!;iW'H\^p-#EmncTlG6 1y}N.vyAn-Cx޿ON?Hx,{0iS]#fjerHJA\6? ,[:D>O7Iaac)Rd8-ӧ l# @ &XO3x: X b y.}rr~%3:o38q(<.#B$)[!p9Ndx/Ds)nK:qLE ߷dgBPo>_`HWxqYx1{`,d {32jQe }ET"),\8Qỷ| )GR̐f嘄‡!5YU|KRŽ%bo 60*#*OPu3rh/~osdV BݒCCXAb-bV}_PN8.8u9߸t^#Cflę!{:$ ^ɰ,VCd1ء[M#üU#>'08\30gɇyNJ0scq|l8 lHvXC8f.}*q׽(}_ECb׷_#ExhqEA՚A`l&h^:ߏ .28o*x3(RCw &LAK9,f@rŠiOa_62Z%4/#gE6,mBE(`Kh=J cU}VeC"zN/-1wlb}U炟8<a\'WG) Wu:(SW,LP1̿Uhؔp8+-ӏ&x]_)Tv-󜂚棨g1W iҀwXm0:Ge^{ҽiտb˚pBk5M?{. }xCs^G^#OT-<554O t0w9}» ;aQ2Iغ|.Atg1e '*| bհ g/ov%[8rxvU:EDoNQ5-0lD.DV/q?0XOENTmEbsZ/Y67_L:X] WRYJ^C+uX!:RWr7KV,uxD-]K,u_ÀJVOg*:s_jZaYr ar+u],uXZ값 eÀJ Rl: Xav+uXO(&FkŎl*ꔬJWra}+[ar+up\*J68 ʇRmR;+uXI@2+`Rە: 8a}+KV,uXy+uX)ThÀJV,uXaRXJqȊR".aÀJVf-up_@a~+uXiZ0`Raa=,. : am z9_ÀJԭ+Ei,up^ںĔf`o[0RQ(Ogv+uXÜt =k;|-uXGKCj,PQ!`Rו:AR: aeĪJN=7]^JK֎H+up]1-up\ÀJ6+zKKÜJ\Wvp: 8a$-u]ÀJ־%:7 Ǖ: aIsL 0",uX!k-R:3m!r1C#f)y 9SW갊K*{3Z̐2ȔS6RN AEabu@Q\3bYp\:ti1CZGO=bG̐9#fe.abǕ:LKlW0RuNmR@&([W0Ru8a0-uX)JoiÀJ+uXyw|uA$RǕ: w[0`R: a~+uXz,up\úH5{dqqp^ú/JVauR: a]YRR*4::;[ +up_úR:+up_úMX2ihÀJ ORە:Ta6"R~WR:R":11KW0R0:aq MaRە: 8a(: Xa#R:ljar+up^ÀJRە:lbRR-W0`RTΚ EoJY1`ÀJ6',up^|O: Xav":l'a#R:c:ldX갑-cF+up_F4K,W0`RM ɍmR: a}[cÀJ6 3{: خa~e,uبgÀJ^ÀJ$a|arazav!:R:RWа7̿ʞPΒe^CJ^C+uxWJ^C4:R+uRW!ʕ:la-u(t9Ocm!:R)WJb]FOKWJbv_C+u0_CWIDqz2>:zu(yJ53-uJW갑&jF u;4-uH'aq+u\Fꄥd8a#R˕:l/: دaz+u(efCW0`R:}]\+u0_ð(֕: دa.n"BRsa%Rz: 8az+uؼRە: aX}JW0`RaO+uX]aȡ+uR: .'-Ly+u0]: XatÌW0`Rӥ0az+: 8ar+,uXIBRIKlW0`Ry+u^ÀJV9C2ezaC0p: guHRˇaxC0p: >ïRˇa8C0p: ?Ra>psaR!u~HFhcH+x"!C^)DB.C0p: ?=?Y~tarH)DJ!"LP:YO~߇"[pa5D ?[R4IVDx: \>BTH!*w#C0p:: ?gDYa!u!!uHRRa!u!u|HFz}HnRaa!uXu8cTܝxеQQb:TɨCRu paԡ/:Tɨ(ãaaTϣaԡJF*è(W-uèT[ri&Qr/v׭ޣg򙮙vBʥ'wa+eWY&| {&TBp\QIL\1e,_54W5WW'W7;38ƕApRukKW,.o&R$&t[MKw(.ݿ ;ѭa\9y1-p 8Lp ;׼R K/(|>g.#&&#K`ܓ .Ż 퇨 &&/+fKk.l < !zjyZ}lKy.. (KF\ZPBpi (\Q>\YV \1 ;n+. fW\ pAp)\\zJb{ j ; .ApKoS\Y^\&Ap= ++v.>-ߝ |{ ,/|>-) ,o|!J.OBpoK%~\*!J.!Ap2Ʈ x@pخ \c`]\cJ`4Zk$]\rBpͤ Q250"K\@pVL\N0ME !RKX.݁!tRK9_.!FLp+LpeyBpe9>_Pר꽞 y"SKi.ŝ R Kz4 5e@pi4eDj+E SM<:m+HW'WhrTMp)N'45q. A. KWi|4Lr6 Ka(,?e+ˀI2 :&<|yFpXK#ҡFpL#.Ep.鉌{7'"t\:+.%jN5KT#jW֣\QaEp+FpU#t\:.%T#jW.(^b\Q"^!AEtM\5ExiW4KBljǤL,̈́wR~G#VBj&WBFtU=ROzcZϬFpE#YFp)!.%&U#D׽R ;{#tbj4+O#t,\>z7K Fp)!.%T#ri6KuüYFp(p#Iauuܽ}u#H;%~5KgO#>ԍ\Q"\YG#4+-v\YG#K4+\HApEuWDlXz$K).RF K).هҁ~.+++{XW'Wb+J Ug([5W$\ EAp)%KW aK}F,{+BgK)(2ZxI'%K}U.\Bp)ؓfcWCp)>2W)L\9Ap)5W .u!7wy=<.j^P5+Mp)ESRKY%ޥ \> pdoLpEi^&mRk&Lp)35M \2n+ K .%= RJ+\+QxERLpRK.ef tkeHdKiIt&b K)  .\Q .\Q[\V+U?`V2Q+ߜ՛zsVoJ図zsVoY97gޜ՛zsVoY97gޜ՛zsVoY97g㛳zsVoY9+oY97gsV~a@6?פ~ǤC=᷿?z;?Jgk^w|&?>o?Ճ~_MĮo7N endstream endobj 216 0 obj << /CreationDate (D:20200929085855) /ModDate (D:20200929085855) /Title (R Graphics Output) /Producer (R 4.0.0) /Creator (R) >> endobj 217 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 219 0 R >> endobj 218 0 obj [/ICCBased 220 0 R] endobj 219 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus] >> endobj 220 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 213 0 obj << /D [211 0 R /XYZ 80 770.89 null] >> endobj 214 0 obj << /D [211 0 R /XYZ 295.805 236.382 null] >> endobj 210 0 obj << /Font << /F68 93 0 R /F15 70 0 R >> /XObject << /Im7 204 0 R >> /ProcSet [ /PDF /Text ] >> endobj 225 0 obj << /Length 1611 /Filter /FlateDecode >> stream xZK6|H)RE[EƷd/C(Kr6] သ<ϛ^ك!+ԚeW"KÈ!dH"g#;I84EF'5ªQ6E*Y={iB\NB|;ox`?OIo YL\eB+\!޶\grc >}&wҋy~[+ޕ)_XNEGC2!Bm. 9M^LMϝ3z6ǔ;1g=6Ãͭj3:5nrNWSRbaHg*ᒕ,sʆ'N2r!$4D\23sPU,,r5gyU/GyU˖w+*4Kqen!u]ҊǦiw,-irl'JMزܛ;-4.Nxa#|+9B2RXܔZ 0um6zzKؾz/U3c-:X{;h31dPA?.`+`G_V׍M:7c^  22'OŤީorg|šn{26t1?/ƣù`@̍3f!VtW]{^0tUԃ axU#'S".kf-Ut2dB2"(_I/a TuEH>wio9 -AV_upɐ)x[.a;-1,P; (cN %!p>j5CCu4{`®ҼC}bpī2$q}`qs}L-`7"X"Eq p6[JHCjgr"r1SA.o)ϼpqŘfQja/> endobj 226 0 obj << /D [224 0 R /XYZ 80 770.89 null] >> endobj 38 0 obj << /D [224 0 R /XYZ 81 146.325 null] >> endobj 227 0 obj << /D [224 0 R /XYZ 81 146.325 null] >> endobj 223 0 obj << /Font << /F15 70 0 R /F84 92 0 R /F68 93 0 R /F85 94 0 R /F87 98 0 R /F48 68 0 R /F79 77 0 R >> /ProcSet [ /PDF /Text ] >> endobj 230 0 obj << /Length 238 /Filter /FlateDecode >> stream xڍPN0+hxql pB8@$JE$>uҨ Yx< [YTmI6! PCBIC^ÃU(zNo9:s۽d7NǩcZ?t}2;*/$aU@n, ycSbhj'>؄q֎W#P]"\Y}Y[ڡFD&:6iy?J׵ ccgaٿv 1^ endstream endobj 229 0 obj << /Type /Page /Contents 230 0 R /Resources 228 0 R /MediaBox [0 0 595.276 841.89] /Parent 215 0 R >> endobj 221 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./diagram-fig8.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 233 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 234 0 R/F3 235 0 R>> /ExtGState << >>/ColorSpace << /sRGB 236 0 R >>>> /Length 14095 /Filter /FlateDecode >> stream x}KmIRo5dDVKiĠ vw!֊\eKԭnwFcen}/7RR>oY>}eQϾ7?~?⟿ǯ~Ovki~m6:W~z6luUڼţaVkگG7w_6]~t/|]/ˈ_/oOŠ/kh}]W3_*LW/ΜpL `뺦T?|<,o:On:dugz <3>7[ \%ߗLخqS{k$J%pSz] vүuxJ5pWpU,D~ī6!c֫+6w' >. l M^_w'}1pַg`WOcA_-0W2տkˏˉφPy,8/T^œ _<}N\~qe OW\/wh>:PaЧ챮}}r}^t7^xrlس8/.g9/qc_U9 sQ~~iI?{8XmA_ǿQԞ 8jϦDlp! /:ԔNPW?t:YT߲L?fKJLGy;;k{>O/WG_y^⠮h=_3J?oF'?b3ҏwuWwJ/=x/;]9Mi=jJOs_xkxM!v#,=_ ܴ x9[[.m-7>{b}/7?·]I%GǶ55#>Ñv0o`w;Kh^]|聛'\QsyE >u(4qX>=ORCQ ÿ{~䗻꯱]_7:SX),GG&ovS1?U뭄ȫ_L]!?mz_a,[+ W .x ~O~|_5.<쭃K?_J_?ڻ싰b}u j/.%bbKZX=￰^WCѿpSӅC_[\e-`އGxH;jxܐ/3^c?~4CQ &ˤpCg(}=Q]G#n] ~rX3_,BG 8^<;?`+?݅3r(4o?/wq0vꇾ<OAxΛEz z7+x>\<#vxCߐKv胾^8kw쨿߼P?;/|Ca\at\څ;6p'aЯ{8)?{B()_\/ݱ&系!Kw[C'h$9e(PmPij({IĈ?-C>PE~[L|`ŗ&0CP|hB ګm@_Xa]CW}muFݩ7꟝IN\{0a1MNM9ME?8o4q}5^l<y̛g/OU3:qwyxᐧ[8?ah~+g|c=*>\ ~|pf/M34&O?IR?g+cxt("*] Tn/%,|ofg%߬U[%/[t|Sz_okH' ݥn֧9ӛ־fiL+o<8fg}o ViwWoxJf4)ؐ%NO+^A 6d!$=*s5Dyʿ~l~ԔnHodCnIף]v؈>NMɖ|D{jE(ْ l4Y4&EނĎb=WGG8D_mD4ktNJ)VړlʉhԠΉI[j(߅Ƅlqkkh"Of4s VYsJ5a`sYc-.k2.@4*&FWtMD؋dTYG eQ[OC]|E>\6NP$[AlB6&}Wﻬ#zGd::?zzW-]6قyԛOLW~0C6P؂dk@!v``~eH6+؈ l7gc?ʺdkO شK8/xM+nOlUI{Wȃxg7x~` wMݢ=c~+vЀ>cLNy?N36 lEdžB^ĝEd8%V?&&l{.$[~Mh${U7/6`?!9ޑfrcb/%6 ? vBJ7xhl#fy\xhUގXvKTP|˱~Ymla3KV`kUE QmmNnHzZ=w zx{paas$ko ''ΛqGc;dB%T{?Ng}u-G{̛mXE.e:67󻾅#-٫`1>a.F۲=F67; l˛hۥrЛ'o]޺&g?6X{ )wfVßV}Y LlWl7?ր῁~PۀYldU18b?VM.n7 ĈWd=g}bG{zwuw==~=h]o=Xӆ?4ou_\}q<dx}3P;U]?l=&- o8VQ >1_6oi[&۶$trШ_&ڊ5b4k퐆_|s= }f躍w~qNiU_Q}&vk[mC]@yb}lںŎdQ.пm%/Sp6+lNءKM,ԗa10K4~:6wӡe|lSLQG_  @?pY*ۧl]Qi;U9^"wܦ(u%/t/]l f{zݩK&e%'o*<U)!(þSN*ؓ4ڛTسC|=dO?>t;"aO8o|t?u˷ؖM|vo q[l/@ַΔvs/7MdW+!7 /9'jvkdC*C>фHlFLTzguJۄG=Y>Qe: |3nnK&l|A;e_qt'|;{޼7ͻ{޼;7ͻ{޼;7ͻ{޼;7ͻ{޼;7ͻ{޼;7ͻ{޼;7ͻ{޼77ͻ{޼7ͻ{?|gngnAg4|_08/Kjke;}G>KزVCe'Z[}. <=d4w=>SǁM~.U P^fR߿w=.o'u\ԛ4ĵV{P^-T>yCSO*(?'|_qs_`'+0P1>v"ܗ8_~g<(X+B]7ݰ~'^ClĆqC!?x>_T񩘏!=1^z](HޏG6qG: x&[`Gz ҩWF+p!^i~ s5mO_Aix~Ź{#ؑ`<9!_{x !93aC4 F|dUPX}T?\h-ؽ[_!l`~E+8ևxxf<> S;cm w~_=p50!X =胨2#~_t3hq 5s~1>E!j>K=P kojoyh8ᑥo?< \hLCU̇e?2'Y|xd^Wؕ~hU >>O霯Ĝ/_y^}=ѪN? ex1~NW~(Ώ^?4{X""f}Qz"}c<{\3}ZOG Y.EG[z<<ԟKp^H򡯻c uw泯st<߮1S>'^ h*"0.pu LWG<-2+S_ /nYGZ׊"oyۭp'~_S.|wΗ -#Oz {4 ~~n|±%ܰ?[8 LxqiEG'ygLz#{MAw/11qKH=݃XO<kKo)hQ,{7mp&>㇏4cV`wKS\ E8;ʣ?m顟մXYmk|"Ǐ7ԟ&D~Sy!,?;Xq(_.:#.|½>q ,#{̟q y|+sv`b;5П{ 6mo(WQx+n7+^zb~';Y_.7{07w0717`o/?X_9O7F}GQ}q,p'縐`FU'{ܰ?K%|(O`ʿP~Cfa}w\ ܉)K1OStS K>po\Q;!qE9R2o~0W~?Uyp'qGbc/߂@ˆ~m',݉+Fq7'(Dy @_"/`GqpE-ܠa>>C' :Q2Bvc'`p>Csd|7ƯM71~F} C>^?o _wޓ»a57`u7a _#u{xToGY3a?ﰟǛʛLJʛ(o?}:o `!{Lj[" a>ďV}5q"Mf{ǃJ_txB?x0ퟸwOG+/Jw[g5Ǚ+.,'g[)2Z^q>>O_$5wxo4 xvW#0\ozC?b\SJ~aw\Q*Ce3^T埈y4h 4x18 u~;W~s9jJ|wۈ.ŔWgIG7IS,L_Q:// r}_#?_8Oa:ߣ#^>y8;}p~ ߑp<J|ey0f {ƑeSCD: ~jtNo "G`gհ7&{_1bg Jgh&f(]O{13K=3K o&ړM",x &p'nO{|W~|WUvi}9٢>p77ў& &ɿ_BKu쇂dC~_uȿo}|M<+_tij^7w^n4XOdHeGNhv2yC Hå[^7dkg/Gs02maݯ?3:S/Hv3.cdWt_`N{F?(we4ʪUOU4Fx"7&7wP^Qx^q)wx n9NۥW$N|r7c-HU>6]hyj΍AtFS mUl-H',C Vt|ۊF.=d)dS[ԇht-zVt&ǥ#3J%;u*NOEk{&صl*ln>+Z7&4nO6*3K`gMڣu2ukX#.=>LV;؞K j7Sl mΒMe`VWM أ\ vOZ~kf<.kFU*NhbwZE)dwfmzTcUc}}hoSMzEiM$[ӡVzuA5L0zE֊^}s\6+fzUө6fX/z ֪^W%ĦjZj#}f>CzW~,} GM wFy l3^f4f[m c͂h= 7jix*xon+Xw1cQzwgg:A+=L۲WK竽+Y~+?oH΍$țs|>E@ѫB{Go|-VdzN\ofz#z;}Tٰ~wUsUe`/&{ kPF%CX>_鹟+ҫM9k^g}lKzǧ𦏔_wQJ1yxU^x3m`wA<o3;ؕ-=~)=<ȾT~)D?ʟvG?MZb4%ٹwX}l`~׫pVML*Zl\u~O1N6l Rnz3vSdi.5DR;'i%bV7;؝7Uሖ0z R~ ^9Yo78أ6=h.>؞dkn2l=kl=i lz(mDL{!ЅhkS7MOeٙ-{;z\Hm)6)G^MŦll®ԫnXx0b[VWt۪*v[amV^^Xb?}M1e7YdGȾ';u?O01z'-IvEr ?7ݦcM_do6-n {$7X itFҿD.c4\IY"ҿm̉|7{]#ļ"p-G}'^hͼɶR䫶Y'zudO^Z/XW<W + y![[27W[;]T~wMےoo3O1gdי'̒.vQ~s|\&73TĎl`KؔO~F-_N$q[쪦otE'&FP^s|Ttٟ-EKϧ<-bc):nbK8*vd%;4x[CʅlٮM]=Yy[wN1E [sUȟ):gdeމZg]lO.:Ex?nDt}&l.6%eCpf-E/'͝QEv=}j%/o+]2n= з؝T"L_7`~ B}H*+Xb_?ЗszDa?>-7쩦h=EvanmLLvv=h)#L;G?`T{&ϛ@q_D#ط溍Ď0b)6-`MZq{Ғ]a'3K҇Y_Gz7>S}a׻ EQ}jH^Ulע𶬫l*6K%{!k[fn?nznp]c?%f[Jw3~MUZoGl3c㈾6EYĶrд'n(/- _ӑ^^Ԟ Sx9Y#^`?_)ɎG"s7lW<|e!^-7d]/C7o첝AE WxSU:HG7<:&OdvDgKoC+_zEwtJlpHzU5[4g_ d>?mSKO&l >b5*Xk?"څl!YAy3o B7xqꟈ7[d/ TG oP?y3o 6@%ܑK_{}G1P^'?B~lf))^7l!}6E&{J =EDڃTӎ+رߡ ||G>Ȕ}YoٟQ[4]dߒ?cb?#WzǕ^qNn|*v7'a? VƃW䟺MOj?T>ח^Kw1Kғ?g:1Qkk=k ߶]< {k}G?J]o~{޼>7{޼>7{޼}޼7x޼7x޼7x޼7O{޼79?o^ߛ'y}o^ߛGy}o^o!7Na OY~ڗAWEFՈELR0/ tv?|[_e?K ycOw> endobj 234 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 237 0 R >> endobj 235 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 237 0 R >> endobj 236 0 obj [/ICCBased 238 0 R] endobj 237 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus] >> endobj 238 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 231 0 obj << /D [229 0 R /XYZ 80 770.89 null] >> endobj 232 0 obj << /D [229 0 R /XYZ 289.604 236.382 null] >> endobj 228 0 obj << /Font << /F68 93 0 R /F15 70 0 R >> /XObject << /Im8 221 0 R >> /ProcSet [ /PDF /Text ] >> endobj 241 0 obj << /Length 326 /Filter /FlateDecode >> stream xڕRN0+|%ر9"(܀ChCZAh郊gIh"דg%;+dj7ZE /y0pr򱼞LC>fBAP#q:c ǁr#!j&/yQ5u=78\\UM+mNeV|˾zoXYkŖvu6ɇO:A]@eF#Q9~Jxk/JfpN9Yޙ cԦW\LWA}dv6'@ ]>f9&Kl%pG|".Q endstream endobj 240 0 obj << /Type /Page /Contents 241 0 R /Resources 239 0 R /MediaBox [0 0 595.276 841.89] /Parent 215 0 R >> endobj 222 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./diagram-fig9.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 244 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 245 0 R/F3 246 0 R>> /ExtGState << >>/ColorSpace << /sRGB 247 0 R >>>> /Length 7617 /Filter /FlateDecode >> stream xK-uW!9v/HHG2^V.pOawWWWZZW~_<~ӗL)=^?~TG|hy?||oÏ?~(??}~?~ٖ,?NO煵o;wo/y4c?H:×/䣂+yGM9:9 z|x={3IN㴗-H2fy'rz?gsnGŃ9M΋9ŧ#7ޟ]O|h ^Ϝȵ<M}g g{.@3c|?|6AgoW? xKpBjy 3TX#X|gig9uĺ w{߇e9e5QX!gKn ,_(ԈD@h=g<5p֊O=w?b~6ǣW%y1_?|mі']ySh=gSwi.Xv/_)O-Sp9;/Kփ_S3||OA1>z'seť gQߚ&4ߐnCKѾsY!R/2l {J9'aR 5&z,%CτhJI(<  ~3pe.=|,, ez%R>r)[tR< C/H/8 Ɍ?|[I~MW$'m_h6C?Aa"og ee{x=|-oIqc(|cwp.dcMGU4~;%*|?FWؓchRc3 Ôڅ\p '`rgGoĩ D{WO:!C,i1s[_C;Yԯy~T3/Cf ?zįA^| 58~ś}Pms P>&2O'd@Ϗzs ܨ_ 5x I$_0tjOyF?ö4>Iya`8><1BXL\/lIO=_}pɭ9K7 n!_3E{'2׋#>v37A팇:-aZgZ|q^{#k;(D||eb_f3'̈́u{ W:Ϥ' 8Xߐ''-EV*{% '&+2xzJ'̀ 9@V:r cm8I.p^rg'~ \0&7`wWK#;}S](#HKr};.x'0:~WFVN )'/J9hGcrf;r% 9 Qc"A L9DvDJ _˧LV>gHܶm0d79#b@/)71@d=Krz>"2O]c7x3rta^~ ._":mt1[G#&lÄơ-~+WGDູwS)s}DBjR97v:7XJt-yP*`wA)߽Z̽]}~gH[Yx3+|ZTص)?xth)Ѵ}|1Z~L ʧzNnݳݢcԇT_N6tOtumx^t}#of\7mEjWl|#Hq4$۰QǾȿ98~)!3LR$/I]o[ސ^aw_YxJ0: FgF[AZNҫ,/ ?>}!0p42f>n U[| {}û}4#Čjf};ˊ-ڇڼ']/Cp"t_F]3-Pm3J̼7[:笡_V髝۪Ig }ApOo⥽&vҬˋ3/vsUvÚ?^#d[OoWuC"u3 鍞? KsT(}S;Cynjɋ.狻W2Prb9#ƾŝ\Csr`[-qxi.3Jym7+p;E9Cgt}O3o}{>6x63}/iȃg\ǫ< =s߬3󈻆f k1_Ji_0E\$$ 0miinbb›ilFtOn>tvׇӿ4 -QKNL}d$MG/`4ԟil4!#yKZ{G.LޞKwJ3-_~~f><3u&)}ya:Q׀:aFp{X/qkK6#D]\7 IO9]K?%Ym+rk}O_5~`~o|ުIΛV B?*?="nYwТ?TQ=wG[G8ZOtr.ףC U)IQ>i8TaҏIsƳZͦ:pQ!C{).p,{ 1e?y~Ô,dg&AH]KnÒYUUOe]Xuհqu7;-c'6?,3m:")xC{y<~3jt/kWnOyFpֲ9?]WCaK":w.-P]]A xSD?x'kL>+^c)>'%IuKd#)]7"S(~qV|} eb_[LVv& =oW߮x2P+!3u /;?ͬLg参MbEOa=_~Iy\\17;svV_:8x_ yrZ/ Ygyef<0ō.wH:P%+9_řfL:l[SpC?U9{ {aCn{CCuc ,>J#3z u%v^/hjJ K]KuclO=r`xA`_ZOu`>M{S%P.rJ`h_umGS(/mGx"\7*ϩmg_o<#~NYp|6.(dܦラ 6mɝF?E9TKt|Xm5wFX(By\;Y=qܠ&邵}.N< h{sX9p7Ws27s䛺GizGk{4-r[sDh}ȷ{=ȷ/_Uɰ?fhRSpk,+^ԏ ܖsm~Yx6yyOYc*.{cg(H۱VBm"({b nA9me]b9[,l}O*@ϩL6 M7HL(O'3l*cug)<OTDnMw Gni_sob?c?za׳doDMǜ53M|?h$Y6sL=>ˊsX?Pu.)8'zNzCQ0u}E9~"Q[sE;o4Qzxo^G}V|Yv ''ѹ,M炴 w~Ewx6-{ԯ8Qs){FNѹ:<9}C1>d9:/%|~C^j둖O9֫]$4S̟YI맔+.9[A>IV>h7-7MWw _|տտsLbczSz8Ǖw^w]-Z|U^*.~F懨19a-w^y*포~ٝ=}Uuqq'\up vlsb9]qɼ`6j)^W~۾*.*.U\c7gBAj\3ž8_ڱo? \'U_w=;1v)/QTܟϹupHpV=?Xh~~B!j/@ĸٓtQufn^_C5w}*H۹Z݇Ҹ.?3-.~w&^=,~coKgK|v=s~qTU|#''Ĺ,+ڏ~ޯEAE#Si>F?_lV?VW\of?Z֩8`=f?K=K8=8mJTy)eݯQ=j{.ER?F?37Ysq-W?|d|??_ZS* \o3?ſ޸z#Ga~M3 NT%&x{㎞@3??4>{dmb//^i;E?j_ڤb㣫~~ۃPkx㣙G^BUe_/ .x٧~b)X, /_Ƿv@soݩS3a1c 3f;?hϽ3~~/&ĿXl< [~/zt{J9iH;-f̟h]VtrnEVۺܕwrG>:[??~1~={elwoU7/k{do_a;w ~_֘[,er~ /kRu/v_|/ endstream endobj 244 0 obj << /CreationDate (D:20200929085855) /ModDate (D:20200929085855) /Title (R Graphics Output) /Producer (R 4.0.0) /Creator (R) >> endobj 245 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 248 0 R >> endobj 246 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 248 0 R >> endobj 247 0 obj [/ICCBased 249 0 R] endobj 248 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus] >> endobj 249 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 242 0 obj << /D [240 0 R /XYZ 80 770.89 null] >> endobj 243 0 obj << /D [240 0 R /XYZ 286.233 236.382 null] >> endobj 239 0 obj << /Font << /F15 70 0 R /F84 92 0 R /F68 93 0 R /F85 94 0 R >> /XObject << /Im9 222 0 R >> /ProcSet [ /PDF /Text ] >> endobj 252 0 obj << /Length 1225 /Filter /FlateDecode >> stream xZ_s8ϧ`d_ =vk2sC>}p۽߾ q>V+wy4uHςqwO؉yw2^y-x&6Iz;:p/1eBlƑ)I@Χ184LgƧ `נqKnhi"ȥhD{_{#%mr%0|nbhD dUXY4`ީk|Ѹ'ocP*ڰ dh'K+ML PnJ*\\`3,JOy4xLBڃɲXׯSuzr+yiQW'LOI@>DȌJ # *aT#lR{oTr~hP%4± &eO `C(B=N,,#h5>keZxPh2̷4RZД8XX*Gsoe[1bua ySM:`Qc;i(et1`z=y[WQsмas|USkWfxęWY呯-"Z'ToP mpz "&׃> endobj 253 0 obj << /D [251 0 R /XYZ 80 770.89 null] >> endobj 250 0 obj << /Font << /F68 93 0 R /F15 70 0 R /F87 98 0 R >> /ProcSet [ /PDF /Text ] >> endobj 264 0 obj << /Length 2030 /Filter /FlateDecode >> stream x]o6=d,bDIǀ HҦkvv8ٰYx([Nm.hJx"udxwx*UGz"RwىU,@u[G&_OІb (5 ~dî;uUd6fѨ+I6첍L Uda8׸lmRϸA8x9wT6CW3\dD;5+ψ0pañ;+PHt@$6~3*yʃnCS i_ZL9hzD@ڕPa漑~2eM2eA{ȳs %#\WKQޅr ѮGlҚDf(5 cxoNҧ'TgdV:/rM6N`! h)d!$w5Oi =t//9P0|ED ϒ7Ε'MwMO/xk7v_Rsʳ}M s]<-l1觞꘾a>o.tr+>GB$cF:ٜK^ 5̺BؑվL|KgWF|Dž3ڿh/S*Z@"M؄rth=y|ΏLF::TQ#pit$4E{9N ]村 m_<ۂxg&Ȏ帠oءl,~^y'nu2<+yG9;@NgSzOI B3cC\i0r ۸ M+`taMT\."if >*\?RHX `T P(DѲ /B'q."`!|*[1 jD:;* %aw!E9._LWIlk>hW!d@O(k!ѸPVDzX%`y1]+3 <2V9Ɯ\$38_S^O*'!Wsq=RՌ̇-c롣> endobj 255 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [276.408 325.438 307.986 338.235] /A << /S /GoTo /D (cite.Leisch02) >> >> endobj 256 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [309.626 325.438 333.437 338.235] /A << /S /GoTo /D (cite.Leisch02) >> >> endobj 257 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [322.695 308.729 454.33 321.527] /A << /S /GoTo /D (cite.R2008) >> >> endobj 258 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [455.97 308.729 479.781 321.527] /A << /S /GoTo /D (cite.R2008) >> >> endobj 259 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [384.845 292.021 488.315 304.819] /A << /S /GoTo /D (cite.ecolMod) >> >> endobj 260 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[0 1 0] /Rect [489.498 292.021 518.764 304.819] /A << /S /GoTo /D (cite.ecolMod) >> >> endobj 261 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [480.989 108.937 522.996 120.922] /Subtype/Link/A<> >> endobj 267 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [90.913 96.173 316.341 107.373] /Subtype/Link/A<> >> endobj 265 0 obj << /D [263 0 R /XYZ 80 770.89 null] >> endobj 87 0 obj << /D [263 0 R /XYZ 53.727 237.626 null] >> endobj 85 0 obj << /D [263 0 R /XYZ 53.727 202.089 null] >> endobj 266 0 obj << /D [263 0 R /XYZ 53.727 153.003 null] >> endobj 262 0 obj << /Font << /F15 70 0 R /F84 92 0 R /F68 93 0 R /F85 94 0 R /F87 98 0 R /F51 69 0 R /F48 68 0 R /F67 73 0 R /F59 71 0 R /F79 77 0 R >> /ProcSet [ /PDF /Text ] >> endobj 272 0 obj << /Length 287 /Filter /FlateDecode >> stream xڍMO0 >&f4 G47ġJvPCl$Tնo@ m.644:{`xO ec[Z+_byV yY T1z7{tW.hO6vR0"\`, 9mBBV| ag⢜ZaТY> endobj 254 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./diagram-enet.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 276 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 277 0 R/F3 278 0 R/F4 279 0 R>> /ExtGState << >>/ColorSpace << /sRGB 280 0 R >>>> /Length 26187 /Filter /FlateDecode >> stream xɮmu%ֿ_qTOQMK l AJ1k_l8^+"VT1#GǏ_?#}GNrSK;?ǯՏoogrN_}\_^|\,>Z^c_?~_Wo~O߿_~_ǏlSj6Ai~~>Ǘ|Q4{b~{`:ӭ=ҿ捯~ݨoᄀVC~]O>lm8gxwqڟo<m<ߟ4Us1Yt&W:˯ROAgف1w ?:0|ܚuc.wa|83^L[~^x^ݚc $g".X?_c{as>Ƨ4[壿|j^"~H,\knew⼄ߟĚ4 y/z\}B>\;q7?ǃ]ju c|KFa2ۗړ0S<^G#v}/+ߍqeÿyxp,_9^mC>_4 ^3~™II?E++[< '~~T$s~19Eqԇn&K>“Us}k(ObXܯpey~Q}良zmw}3_]4>Q=}r?W3р|ѵ?#./W = =~~J>r=tU3ۿ0•f}ubΗ/a׿Y>ǿ_еS P6?(_xP+.GKBۏ"풟rw.f`+KO/ܥVA}O1<_,򿷣@,8S?X?SKo'r`j_=QeOpxa=0zo0oy/i_e?Nby=vί%`W/S[^_1S{m_~ٗ N}`ٯo~.|ǃvyrG~${;.oާ=1˛M8W w/Lyi_+WW诨.Ц1:&>ٸ?+nO&=5r#<{~ߗ?(?E]xS/~[п;Q~ρo^jo|o.Zc[^~wa|ǭ?n'[?_Y^GG^yG/91y{녧ۓے>spα'p-˓NWs='~!(α;o.1ǭ,8/L‘7,OjO!_O|<ʖ^83p|<֯ gf}8m̏e{ӟ9p.G~/ G͸nXް~t۲~|em}謇UBq?8[Ccu~^ ?W8XW_= ڈ˳W߅_w[3C%k-v/<>߱>}þ,ڗ?vاo~E S=Ǔ4k8m{;bydyo^xf{f{ ˣX^_L~yp#4g?R؞3ߗ`6R|_W~~u[~_6qO\zǣ?˯ԯ8W=5r}KUSxKsTTkf/bv]?X/k}?W?J ZwӇ֓lg 5j}T,⅗.<8~پGh?J3AY_\?W-uQ?#p>5/٬$_Q{nk=wSe/gK?i ΗZʏx)eZo_3GB\\&x^v|SKg.GIҏp~4l.R??~\~~ϡ9ߥR_ݎNƣS~T?|>Y~3Z3ߠWWVqV >u&8cXD3D`q}o@{h_iL a>A=͏ߗH~oT(#eǾ ~Ƥg~c_"2//}Yo"5&o(?^>Yynn=]~ߑ-{MCw߁piOw(/甾x07k}?_Ȱg#M7~qeuZd,* ~~_FT/)o?E_8~io Ko95_?#~>r4K%:"yvٯ#R ̀b*?wWDp%/ Sxdn$l;8 v}«l`m- Y䁧(͇:ǁ7az mKb0 l? SZ݁ps8 p7܀MWj8`ِE%yfNy`\ Э(Ѫ_* NN@,8FZU(N5_RaĎAk#LukfȊUPcV BUet#R4k!E#1B5uʊ-%[D`0f5{ no⚻Y%TK6k$^PE>7 сطI;=+,SD.oG'L~`ѻgȴc uf^4BU4O VK-~r1'\f{֏"lDZpSRk̂JrE@~ (pެzCpm6Be66rR9)f-_Я Ss'V_7!6 g#`#̄"NX3a#%`%YEMAVeVq R3vYv܈f}%T,GN :RpB4W3YSޏ 0$삝p J8Uّ_(jqʍX;G^9ʼn$)pRT z*O 6l3_E ~3ߠ%12Ub`Z{?iޠ)x]=F!clƷAӭs `Tļjc4TwN1¾ъǝ~]z 6z|ZqlU[m5Vw%̏*'J*`#삋pbn;!IXUDQ<㽮 +a~쓭y'7̵0%fhПUY8{#Sfzu~[mNcedf*6MMMƣm06Lo0 +Fj_(̡zޮcmM&XMmst?j3b8h ē?ī_xUbRrU*'J5[pvNW0<F!k! nHC[ IiȊ0z 酀'Sk@ !}W$=x! Y&?#`TJ:'xґtX~/:ppíOh7, wc$1BgHVD?_2ŝh Dr?.(>z`1 $ Nyl1'wc(]|;o;I9AxjXʴStW7|ث{d#Sv}vBb;NYw#_0vVUVVusg@w]b'mV0! kmCZ?JbP?:l**v Sņ'=ۦ%}A{a0Lf&ІI/6{rcl}n\ۂp nIXd-AYa* aF6Yˤ݂6ieҢ¾XW:Ab"6ұM{<]|x(JAyJT5_Uj5Q '%)$q)J>J+ucSixAa2;a kspVyfCI@o(V^$tlwä]fL.8h5CeU.+($K߲9U/U#TC>lF`> >l92ntd"Vɦ kΉeӻGf(ő.:Uhi.2OF1?ÿaB݄:R8oT3pH)td1p QI^8)k(  <闌p/w ^T#~}@2pұtO,ȧ !]6d aƴKlAΆey+LCP9!J'TΤO/j,*r,}QĚ]n5}`ݐ6}F4*:K'K'hiktəfFL><5)!ntAVA+x-X&tnLF2t1Mʸ P}\ cF+N*ge*t%Q+ Xӊ++~N(. Td09joǍQ%uLn]7YZjf z-ezƨK(6~*|F{^+;}l<;هn^c @ɨ( U+n21]oЃ=+'/ENfm1MN+20d=[PTٜIP~b`zx1U%+ U",@kE7'з@E|Jo ߔԯ IPhVpI_jOla3JҘ/,R%T$#ҿTUzXܪ$ Ze\cw.(e}"4n |byN˄STa*(gn#wRVܖܪf߮*Nh Zwn}ݽǙ_ SV?K^.#_{RŜ9d̵_|"=H:r/Hg/+Gg3w^0_/Vd6U=Kbej#IQB&+QE_*I'ǙViM(ہTlTlCe8CjwڼY.ݭ#noEᥪbUPɍ7p kemf+q vO˜~.EqDEgQObinLCVN\^0l5H N }@V#>ӓ2n֢b6E0Ia!ECY ]+ކ/C7wntTQe7CCfvh,;vN;gҡ1 eOl3 49(Y;Nh ( >aSĀ9 =Fs_)vK~|Q$$`NzK{t] ,קQ%&{z;}veȊ|٭g!4o>i&!9(bD׳/Ah|w{+uCtNjnبh;h Ȯ4BEP$nk^1NwT7,7$.NƢwzɤmFL1SD)&!pZ3\\HLao22$S4%3g!M|g >D%pU\q&pehLz*SQjSRVUlU$bAVɅ~T)6&f+Эذ!f!S,w3-ޭw1hqCwXgL}`}-p2XJY`o6/*aqr $l"Y`<0tr'+)gu|Jp_w&:9˞dx6x{q"(fI5Lf&IF /Z6ey -:Knzȧܗ*LYD,sPEae .IHw2ce6¦MZA=]I9l-(:I|R#7H9&hf^I=6d;ā`^`LA94N,ur쮜zl w\_aу(m[?}/`'lLOf5F-K{#6~<`!90n5O`vl63Fgk?aWc@ykJq6N:\Sj&)Wh1zﵛ4v9~Z>­i>w-SZ>Ů5 BX|\P^q͜,W|&yŇjU]'UQ!4Q& >T@ABd*ܰY&)CSRॕ@*"H$)Sb""A :EN*"ŠuK*(0jSaJA?]w(nn+jyI09`dXFpDmΊu)6Q74R3kɥwș EH27ݦȣMwbKJ`'q3+(E!nħt*TLᡒ (-UbO3\OE͢ŢV'u`HKp~Y|Ct&0q\Iu4F\fUFLE )Xy]6|˺zCf`C^fmCRhS!Ts0t!֤ > >\ I3CF92җ2ntTdtŐW#(ِľ$JC8ː Tķs\;Б)o3pdԉ#ü|ID:$I^)k ɭ Z?p&DMC}>P|(O>'O>' ~>P|(O>'%ɇC}~ɇC}|>P|O>'ɇC~>P|(O>'O>'/C:?ZW?/>~_ӏOyxkΛ_\~_`]TϙS'Xf|9pfÅ4_Y!\#?SY_)U_-&ӂ~p͡4&c/MFO9bjAmiV&89l/`lvpgWzz<wxr$a| qcLp3)i|L*9^ɔ+UN}uy~=k ^x.xWl LIq0o*TeR}st5ԙ9z؉{.?o'32y~nxdy_,/ڻX^F$`_r7fnM=F^~ݳyӪnlU>&DvLdΏ~*C=0W}vRO66[|p<>$w`]Y6,׆8 gϕcZibG5yr=WS@+{iV&^V'Sʩ^XԷ}w̗ؿkq'Yh|[ n$]'JLԦ/t\"<]]ڧh}r O;^/FeV}`?Tw^T) 8"83:Cu,q-{<~5uo볻Z?a8p|!"Gg>\`PTBW,}a4ͽJ7*0,Oi}3}77ܟtk<'Q493oN'}s}1ƞ瓙ZiѾGˢ=7,CG'1DV?(5{]\5-~;"{̟^V{kF\Þ+7^o$\l{v^nSx i{ mUaW]^f{$l{~ /aװo |RaU/ Lbo짽^E".w`>VWr^='\l 柏^¾f|W_i:A?-~i{[ojfS5|Yx '~ٔO;וw?/z|O%E9q~vFlfw<*1~WBb|jJw~va\5]ƯS`z?“ߟ?)7G\\m aO3 Ž'tau_N|gώ/'E|v|r C^b34WݞF6._E{eoK 1M5U9[`^1/?-H{40eiwG`ڻݸҞ6>U>"{>|Dq|+c1W|K;,{ A|'cFY^3kSǔ,?ߋ7~Wu-?|`GBZ7Z}Ո/_Moxoi߿:ɺ:GAOܾNۍҽ=4vctuuغnsV:]E`Tζ޻uOlnY^5Wseow20gwN9[cڌ'g[%0M;gg`z1Vc1X;z-Y78~gR`z;{W`zӧq?F[-YZKӃ-M Ҿloe>m6>:.dNE3ݞt^d^almF%n1Zl` 4;4ڠڛu"NffECftzwI+ o*q`[SXkK~cƃĊw[?j_5SkԾ`wN~oKobk3[̦¶> lM&lf'{78>E_dt =&x7:v4ǻmw%|c7ηnH|뗝ľE%…-l߱!ޔ1߱ %b,{wrz%Z Wl0[%f`kgLI6{|dKMGِ+toFs-_,2>)KrXd [70VFf#oス?{?T?፭nvnonjn$J<=oW'a(Nlק5؝)wɫd"=ٿK^^Ǖ?&6+ G[䯣+ퟎ}"vEcV-> Bi?/}y3ѩQwGtG fk-5mnnGu|i;zFJ.SO.PM>_\$)ڿtmߣfihNTlhTBR2*;+6SyS#-{+حɲFUeh;}hӂ~ٳ%ح?li4<7xyov2.9_d{ʸZzZNh^7w$ A度hfzキ;?Y4{amv''?V?&M=7Ni&lhz%Zz1Gy;~ ;~`_ y/`˪>E즘l`j]xce;Ou8f^`3mk&{)Ư ﯌xf}?(Zhb3V+0M?$E3+1:6b,/_ˍ4e'uFg_Hۍfbg4Gf-#֍D8b#{(KސWlf=W Kqe8}"KɖboBbڞfgȎ}FgfX6f};S_3z3[}vMo{?]=Mt*Ӫ{x7G5;[xOSx7̔l{ӗ~^]>oӣ[ '${~: j_Q>$e>/}^6߼l)l ˴?>+a{_ 4n7 =쨹_B}i+\qzb[=XXX̦o{=_/vU7s={-?Ǔi?i ?ySh_d+l/۟~'N?o\olq;h{l "0l('G-l(Ȇ5KԾȎ>5Mđ-#=xR|` |OvR=$f*_>:L;fJْξ$#[ myW|xkq<]e+7vlr.W>.|>>oL{c/Odt?`kX^3_`tC,i",vl'doBV'doKOTߛ§W,i`ٟƉ.]ݧuF`ڻ=ؤbO|)<0ٗ烿L/;uo,v6Wwjwi;t 1#O:fSey501wIl;4^Wi"S؞_W#.o5_|5;_O^bd}>>Yx,O' d »듅d}|>Yx,Yx,Yx,雬ׯ2/XdWBI?!@7/$`2oNL8yΣ̱_y@xTavxTuW=/6of4rdG{~z7Z7_uߏĻ(; SaoO*A'W_=roog]Yٕ9eqxrqOW?o~ӯݥBCلz߲߾_XR@ _~/,p1~կET泤YRW?S=7? ?.}̇׻ջ W?~J!tl|O~D'!H +WNƭ%qpPQ2quU=^;j3 ĸd uvP5B |#nW˺IkrK\(;h4^;@ rP8PQ;(کJ3[:iI 5=-gpOjK;=Z@a8MEmwj[ \жH.lUԌk 7ZoYh7ւFw{\||M.<5]x5g3yNDA.PcLⅽn[G`Gl { NZZ &N316E} Ha8,Rl6_ b8i` ܦP)rDnJE'BTS]a}_xgL ޡ즰m&%>``ہ2+q Mtl EЦ jTk3If bql$ebfu]0>K@i'8$Is|8[*1X _b7Sc09ׁ^rSة]:qg3k 贬i7_\XM(^c|;ֶfi95|$l Pu&QGpj&ΦU¾ڥCk3^#=Dz.8j-^ M p:[| q)MwU@g]ԉ2XO4Gh?7T-^n[pz5؆G/!2O5.b:?:N q^9&iޞK`:Z1Ans;tECᵢkezL5n$%Փm֓\u'zı,o_q5;nKnԉUGv e}ǝTX/8k_د;U}~k+d@luMJL Wmw0'Zg p3l8pӚ: Fo+g਋/8Olzۯuj2씷o̭''z?I'%d63d?B_F>Y7f@l"!)k0l ׃;;MT ʁkd/#(SdD_(I;tn3@ewb|դ]rf H>p5@STmQ#E:tSCc*cTϊziNPv,GQWS"`9>pkj#MM t_87?>4n4QMXKRzR|ЪKt䘯f&Fxҽ$ 8K62-E#Xl vN&D֧kkg=сD&Z|{@}]/Z`2I4 f@:5p&J߁ؗ茾 5`ط{|髨徘w,kqg@.v4<ސGEޑj!Fy2@ |[4[ M+hFD^'AݾM2Њ]cD?+ kWl:9὜Et &DEAMδAZa)]+/0t@0zW2c?ʌu{|,ޅJ1t<4}i%]>ՖzF+Ȁ8E`- =_AlŬ:l5p(+QŮ^hJ|H8?]P8ֆ\)>e/ -1t̹7ԭ#3$a;l &l]b?c$Ts w Z HnB:wd2Q':3Y^#ˉ&kI~WiCI:Z@ qTIQ}fC@==QKe+P=PZkq/zy,q|5N iHGgw` [ح~'MW8d_Q"j@YJ gr!Dz/Q?B_IҺ?vIۭ'W]r.=s[M%w;+H߆=ҾJ wI[ŽY#_~@I~+L@S GoQ7p_ e re)_&=C"uPCUCrG#(o@p:)qڙ#Ad-POE[&tᥡ#~dŖObx8|M^Q4⽬ thz/S{R}/}?A6ˡL0ZG7q| O6 n17hyEes$yMbjpc3oŏ A"4ܮxuhG;C;ڹ񛣝ԡ\=휰6Qo w 7M :K Ec;enwB z↴7&:3b1Fx(d6“Z`)NCzđex#8U39C0aњC0`]Cpƨ`b7`X Xռ Y`g#Ԑ>&EL&'Cq}nMOTP1'7Q闫7<qa"Hz҆!6$} r~)'ߑ$bwHOO~[2XOtKԪX}|Mk6I*/xB?ʙ͏I\=_0<o'm1~. -v~cgNI2ך_]Pg*O׋.?bHrߙ*qȋEmaj#K$ZP!:j#) g8K8s4 ,u+?X!}XX>5/ʣ[~A͋hj^qj yy&Լ4js[L8#\Q7gө8'ˠV}ljMBnv29#Yڑ4ȌGv\4G`^Z"ؑu/ʼnCuguś2"~myNH +&.k+FNq7`ԭG{]ĵgޭ%v<w-! Hw@i5^Gz u ߍ9ހW 9ކ$xwqXY$}>I&s,qXW92RL2ˀp;,$|_E3^Uy HęW7~zf0;g(2vʭ5 ~+j78ʏF{_%;7s"-'=:q[^ K{`B}Hhrprx_b^-9c]eXe Xe *[Uz\ɠzw3kSl0t*3(9Z@HV5b7bW0 *WEE_|Ke|f$s qcfK#[jlZj!.2< 5k9 qBdUb!BZYNwrZRw47fTCR݌HXI錢+"#`ZopV}<"9+\r$F3?)xAP?H0wQ"UA> mpUF U8R6CBE 37]n\$RYs`|eknRtwjXd$<.J%9B`Ypyx0F7,Yx0vHn` *si~B;R.|2sa]jbgpiȮ@8ao巒;, hw!SLxbן]{;vu<+#JO8Ω##|]p])ݕ][ހM~'=5%L\e^S2nA|ン5d搅as,\eUٞmNl:'Rk?ٳ=Hƶ]TΆ73A(:!;f#+EbSJ7`mp#TRk5=(ȈSTP9xR+doGjxl9Ryˑb@S@GN*AF)BQQ-j#KqTHި$x^ż^8x;x;:.9BI qq')r'$+clV%O\rAG s.4S%ӈ,"eXˡdZEer#L .:JՁ7Ts|&_kgEf`)oFGFao&FG.Ffc+yx2ތϜ7)#xfCz'`=27#3#`{#`=r3zR>XfE"9AfШ)!sFQ[R\B4<9Q#hغľGF7Y egF3 %E" rMx]!|GFm\%qnoKR*p9$uY(ɉQLзn*GMMfsw9^zÏ oFGN(e9:#ٛu|:BEVyfvz}S;BDz˗Lx;$ a? .nG7#,vys<"a/L0nG^7# f{w=ބov8X7#l˛WMf}Htum??^2=ě0oG7#LM w gM W GM 7 'M )G 13$#7ɡ\'6 vitr<#!=OH )W'\ϬrB=#/XO )>rCqvw=Cv;g?Cawy?3D젤+~&j?DyDAyE}y3E¹ySEusEzEO+=EV3a$U3e X;LiWXy#MI VGHoHxoHoHxoHoHxoIoIxo IoIxoIoɺ3$b7$ 7$7$M%XEHF2LRqL'I}P3$+7XݝӞ9%I%ȹY%i%y%obInfInjInnInrI]Ra-Dv-a,[?sL@'-2 xL"wL"wML:դ_tIll-_6,Vİ3$7$"Sk xO"}O*,!GJS?rP$; ^ۓa>P 80|k{3%MFx3%~Е3!%H xSR.⑔f4!_"#/%ML)3SVԔ77%MNiEv_gzJΜ&^Ժ)*oJpAnJSCLS)ڽrv=UL7Un=뙬҄qN*/ܗ(#瑴{~4yzg Wy|~3r=sWsnJBGJO`{GKϜR&"Kz$4g\R#}\#%~+=Y|"n9-w?ZbWi-E6u^Kl xS[a`AMo)[TL ؽoKR,^'Y./(gu19]Kbrd.ɹ]2SDk˜4ʘtҘژt")t1u$В@f]P6KZ"4b*i24q:xB4JR4ZƕN I[*IӪIK+IëI;,II+-II.II /II/p@;sx&L(3`h2Pd!~5kɉ<$sM.2dt4Hg2ϹAi2 ˵ M{}Yi2!j2κaj2 _rOUڵ Wߜ-eMy{|c5k2''%ɌQ_ &IM656|l2Udj*I\IgfǕ:g_q6m2Ud,,Xo&gMђ 3QLt. \ݬKgp_dޮ4^zY&|Ml7oA\? 9% '̞U8;t]dc">En7Ywv=dqɖG'"ANJENI,49;*',grd_6MR3Z9+;Tʧ,u>-k2^nP<䡪<&U&5y&5yCu9yCM6yCMjP&5y&5yCU9yCMSNjPrPy/"H?? |@dU=} y_@??xyX*>C<޾^ endstream endobj 276 0 obj << /CreationDate (D:20200929085855) /ModDate (D:20200929085855) /Title (R Graphics Output) /Producer (R 4.0.0) /Creator (R) >> endobj 277 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 281 0 R >> endobj 278 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 281 0 R >> endobj 279 0 obj << /Type /Font /Subtype /Type1 /Name /F4 /BaseFont /Helvetica-Oblique /Encoding 281 0 R >> endobj 280 0 obj [/ICCBased 282 0 R] endobj 281 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus] >> endobj 282 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 273 0 obj << /D [271 0 R /XYZ 80 770.89 null] >> endobj 274 0 obj << /D [271 0 R /XYZ 202.741 236.382 null] >> endobj 270 0 obj << /Font << /F68 93 0 R /F15 70 0 R >> /XObject << /Im10 254 0 R >> /ProcSet [ /PDF /Text ] >> endobj 288 0 obj << /Length 2054 /Filter /FlateDecode >> stream xڽXrF+X9Uxv:{dˊJ]9"$2" 2ͤTR9gz~ѓWʍ,jQ2Q7~Izɫv|&t$s">@"uc%7c V 8h:Vɼ eN6SkMrw[.?Ww=N1kCilcn(ZǿK<̬DNMr:)q)G- ~$ƇߡSP*Ɖ{>)nw<Ϝ6j[$v2y{-7Iu]@wxzVRQ: (r(*(qr|TP'wt`\`_h*\j IW܍U\^ )fc(/QAi0#-XOW.N >q3'$%q |Rxzv5k^sK$g,p:oUCT]`qօ]#" 1bnCuJ*0~l|74o=es5{x"ٽy\o'Kev0}t!Z HNrxj^/hرz88-:˄4ㄴ+?9A<Bs^G[@LruA$kZV;@!O&r]nQ.y׷^HK`4 [4@K6 Ncl2.afocyftIK>̣m Oq.y hCe6) )Tf6y~+G`V( zRuC,l`) C?_ 1[2.BT0.Ynh)$ƒLYF1@H5[FJn0G~*`xMx9-k0whMֲ D)DZ8B6^GӉ& G!W+ߓ; KMa6c3<4]W] lPm^ I}&6 ខ.`7 kA8;&gy^pc$#X7:VYϹrMbx@P`` GHIpЅaL&2 lt{@Ds߰K@LR(>/3.awZߕ-@ JՒBxe^&ƻa u࿩ƊC |PBj7up9ߛ1dRdm!D;i%tG\iI@!hsͩ.g8 F3ThQ)HܨR l8Tc>!&0pD5{3,c״2Ec 6^:S9E ))5,lxѦطM1Z?t [~_MD@q@h9$ K)Aޡ\=q_'"{;^CSthd8=۳or2K7Y$ t5]zD:BEaZB$%B1#RTahiIa&VqP@WRP57pF wD0Gi. r?n}W:YsX !{ȹLyrMU |D͡9PV BMbV=/@|7Y1EDgpPbnC[ZMV4[:xW: zu7ص? ˬ\^OFo f%|(>tхRJeۻ92p]Ǿ5xUp;:FzWG|SCƿ Pҕ;<Ux5Dx*-N*qyV+Á1tdXy D(c 8nk>vYC?<D܌9E{6ܥ㽯ֿ 9[|_{a#=ߟhȶssA|Ix؞ߗV{ endstream endobj 287 0 obj << /Type /Page /Contents 288 0 R /Resources 286 0 R /MediaBox [0 0 595.276 841.89] /Parent 275 0 R /Annots [ 283 0 R 290 0 R 284 0 R 285 0 R ] >> endobj 283 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [492.422 655.488 522.996 667.473] /Subtype/Link/A<> >> endobj 290 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [90.913 641.939 202.014 653.924] /Subtype/Link/A<> >> endobj 284 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [268.063 294.373 407.248 306.052] /Subtype/Link/A<> >> endobj 285 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [109.687 280.518 214.574 292.503] /Subtype/Link/A<> >> endobj 289 0 obj << /D [287 0 R /XYZ 80 770.89 null] >> endobj 86 0 obj << /D [287 0 R /XYZ 53.727 735.618 null] >> endobj 268 0 obj << /D [287 0 R /XYZ 53.727 686.004 null] >> endobj 81 0 obj << /D [287 0 R /XYZ 53.727 636.39 null] >> endobj 82 0 obj << /D [287 0 R /XYZ 53.727 600.326 null] >> endobj 84 0 obj << /D [287 0 R /XYZ 53.727 564.261 null] >> endobj 269 0 obj << /D [287 0 R /XYZ 53.727 528.196 null] >> endobj 83 0 obj << /D [287 0 R /XYZ 53.727 492.131 null] >> endobj 99 0 obj << /D [287 0 R /XYZ 53.727 456.067 null] >> endobj 100 0 obj << /D [287 0 R /XYZ 53.727 420.002 null] >> endobj 286 0 obj << /Font << /F15 70 0 R /F84 92 0 R /F68 93 0 R /F85 94 0 R /F67 73 0 R /F59 71 0 R /F79 77 0 R /F48 68 0 R >> /ProcSet [ /PDF /Text ] >> endobj 291 0 obj [285.5 342.6 285.5 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 285.5 285.5 285.5 799.4 485.3 485.3 799.4 770.7 727.9 742.3 785 699.4 670.8 806.5 770.7 371 528.1 799.2 642.3 942 770.7 799.4 699.4 799.4 756.5 571 742.3 770.7 770.7 1056.2 770.7 770.7 628.1 285.5 513.9 285.5 513.9 285.5 285.5 513.9 571 456.8 571 457.2 314 513.9 571 285.5 314 542.4 285.5 856.5 571 513.9 571 542.4 402 405.4 399.7 571 542.4 742.3 542.4 542.4] endobj 292 0 obj [611.1 611.1] endobj 293 0 obj [531.3 531.3] endobj 294 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] endobj 295 0 obj [559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.4 351.4 606.9 319.4 958.3 638.9 575 638.9 606.9 473.6] endobj 296 0 obj [555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 808.6 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2] endobj 297 0 obj [645.8] endobj 298 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] endobj 299 0 obj << /Length 155 /Filter /FlateDecode >> stream x313R0P0U0S01CB.cI$r9yr\`W4K)YKE!P E ?0? J!DH" @ l%r38 H.WO@.E endstream endobj 76 0 obj << /Type /Font /Subtype /Type3 /Name /F42 /FontMatrix [0.011 0 0 0.011 0 0] /FontBBox [ 5 6 40 40 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 136 /LastChar 136 /Widths 300 0 R /Encoding 301 0 R /CharProcs 302 0 R >> endobj 300 0 obj [45.2 ] endobj 301 0 obj << /Type /Encoding /Differences [136/a136] >> endobj 302 0 obj << /a136 299 0 R >> endobj 303 0 obj [645.8] endobj 304 0 obj [613.3 562.2 587.8 881.7 894.4 306.7 332.2 511.1 511.1 511.1 511.1 511.1 831.3 460 536.7 715.6 715.6 511.1 882.8 985 766.7 255.6 306.7 514.4 817.8 769.1 817.8 766.7 306.7 408.9 408.9 511.1 766.7 306.7 357.8 306.7 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 306.7 306.7 306.7 766.7 511.1 511.1 766.7 743.3 703.9 715.6 755 678.3 652.8 773.6 743.3 385.6 525 768.9 627.2 896.7 743.3 766.7 678.3 766.7 729.4 562.2 715.6 743.3 743.3 998.9 743.3 743.3 613.3 306.7 514.4 306.7 511.1 306.7 306.7 511.1 460 460 511.1 460 306.7 460 511.1 306.7 306.7 460 255.6 817.8 562.2 511.1 511.1 460 421.7 408.9 332.2 536.7 460 664.4 463.9 485.6 408.9 511.1 1022.2] endobj 305 0 obj [575 575 575 575 575 575 575 575 575 319.4 319.4 350 894.4 543.1 543.1 894.4 869.4 818.1 830.6 881.9 755.6 723.6 904.2 900 436.1 594.4 901.4 691.7 1091.7 900 863.9 786.1 863.9 862.5 638.9 800 884.7 869.4 1188.9 869.4 869.4 702.8 319.4 602.8 319.4 575 319.4 319.4 559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.4 351.4 606.9 319.4 958.3 638.9 575 638.9 606.9 473.6 453.6 447.2] endobj 306 0 obj [583.3 555.6 555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500 1000 500 500 500] endobj 307 0 obj [397.2 516.7 783.3 600 950 783.3 750 683.3 750 759.7 555.6 694.4 769.4 755.6 1033.3 755.6 755.6 611.1 280 544.4 280 500 277.8 277.8 486.1 555.6 444.4 555.6 466.7 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 427.8 394.4 390.3 555.6 527.8] endobj 308 0 obj [625 937.5 937.5 312.5 343.7 562.5 562.5 562.5 562.5 562.5 849.5 500 574.1 812.5 875 562.5 1018.5 1143.5 875 312.5 342.6 581 937.5 562.5 937.5 875 312.5 437.5 437.5 562.5 875 312.5 375 312.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 312.5 312.5 342.6 875 531.3 531.3 875 849.5 799.8 812.5 862.3 738.4 707.2 884.3 879.6 419 581 880.8 675.9 1067.1 879.6 844.9 768.5 844.9 839.1 625 782.4 864.6 849.5 1162 849.5 849.5 687.5 312.5 581 312.5 562.5 312.5 312.5 546.9 625 500 625 513.3 343.7 562.5 625 312.5 343.7 593.8 312.5 937.5 625 562.5 625 593.8 459.5 443.8 437.5 625 593.8 812.5 593.8 593.8] endobj 309 0 obj [702.8] endobj 310 0 obj << /Length1 1611 /Length2 8924 /Length3 0 /Length 9970 /Filter /FlateDecode >> stream xڍP\.!8i$8=5 4448Np Kp@CxdfUUW>ߒov5Mv KXgH)Krq89y8891 p(/3&sW3h6?)PO_)@@ b P(. R0GOg qA,.AA~?`gl?24a _"6panseaC6 l ]0@ge -˟vM x4@! c%8@SA v3X6_pqpMWo" ` @UY% ``;{7w3@-ع9@VB`X_幀!pw4]qۃ.' q d`+",]'W_!&l`8 v=@6Z?+v9B.n`o#L..%X!?Vwx 9Q^0?/P_CMUNϊIJ<|vn^N/MfkUpccpKZ0qr\R#OYo" ɺB_u?2q 7TJ S?5&B\d!`K5dVk1(sT\{,(?\ǹ%e@00wv6|Y my@ȿ|\(d _t|dv|dv|dvWCAΏ7a@-W웣6uXؽ[]opђY>d8_H$t=]\a>kC |sg1ٌmwpO*gZ[>N>:vHM NjW=r_T${vQ@4CEW2ZT8; c)jxVLh"o1_*]: Ȩ '%wRIgKV^fG$|}CNF9UR;!}G;(S02QDa(J(5z񻾧LCdm|ޱ Ļ<4y@˿ShQ$;fV~Ixy.C*mkFLУxi.(SpiOh&)6d&ji[Õ'oEf'BLtSEP;5{mndA?!cvMăb+O_`D.OpՅ-4op 8fJLfdڄ3RI.&$]D~.⋜Mkq䆒-Gwـ_ծr'by<72Tmp.QXqh4;H[(\_ 0<C@5?T6c\sm:1v3EGTCU~sOg~FS~+mf!⌘O93^QN/B$MuqIdE~W֥6[ 9o"vէP8K[Jڐi,4g$_]eGBuzƌ١Gs²~$x pKT{X]%_%yl)ͻ/k !|x'XȐ:>.5}LѨ5EV(~ .c10pJY?]ԭZUj_E1r!%t̤r^ 5h ; unto(#6%XM|d!Oٖ'lL3|.ΨCq)v1ԵX5Im}ղdt2gjtQ=#lmm(B̲ uX{TP}Pq9$ӆ?멉@6GU.r<zzS>i ٍꚁUkyЉ5!Ed-:Bzm~$O_|'Nl@$Emo'OP^1l,|luw=Yf@3\2$3z"OgU "YCd/j"5\S'PQg /S+r'?>4ti4o^猳wl'mKp Ff0$~&п_1~*nˏg j_;6eJT=(U>7%Kt9uvޥOy<~n[3Yui]Ќ(,&ayI*)!^XGB̓&bEtF7\@╱i"~_}nEISH>"YpKvK6 9 Z#rn^`r;yg%hWZY=I^美Oظ+ȩ#-'%jPv>ƧMSD[)řzhg@0$ɦsusVÎK:{0nh# c^^.T9*l#=+¿rx'pM}JrI]EA9Lt%~[Evntd7t5 31x.}fM'nfo0Ї&3-{s˔{kwT4 t{߹64T.h.8أz$S^b5Te^U]8OSJ_Vt/65YXtkr"7Rn*E5-߮:xQ-q10񴮬(]3;DC>ymz!D<]j07j!]ʢz;=ix#[2BP {[e EF8GMDWZ*OF3~ݍΑxS,vo] ~_cf{ T&WHAJ၍GLĩnv /pvz1E>QIiTK%F)^:aҔDbh&ƠE Q9J362+`cxjBH%-juE0&y RMǰϣOH])fwB|cEn0 9uI5W!/<Ƨ+@w\-ЯffVrESS/ QJ@IT!x8Z"%%~NjO"0^~I<߳?JAxJ50Y?YV| `-wxp'7q*y}bDFݓ̔.V -L?4"˧\`I&:񭸤 &hjA3\2C/jo@W%0g(^H'pO.O 3ġkl %3{5/RV>`m*L;ޣhZfU?xGCpPd{KEvw+OCGSREMΓdϞ,]6l|Oaj.{8t*zHe.3o I=Yi p8}2J \ڱhKz@6=JH(-x _KCMlhEyAsZ%K"Gw1̓ s!AManԬɷoP* ?3򤱜%hxRdZ? ~-o.}NοyA9 k4(97NVNmjNDlW(idO 52`=^ƟMEZ,$V_莙,=D1tspug"7^ZH-_>_a3v%6"QڱfiJlz85aT_^fjfdr#i Epmb7'}*r8m?mXWd̅=9g"1|kY>POFSdLMmO4ߙ?汉S' Gԗ5l_ttnMSnYnLnNtFs"7pd l{4yIRoXvbaRZ149D-MmX27O!rz&6Xe]0>3[ͨ_ $hŒ1f1NlnH}}DF!+˼nqOV@t|),p>AOJDuT {[ .a%ڱhNM-$ܒ20%9(V51<(Z/n*`gq["|o-+4#coG~acŅVP܋2cKY3b[ݙ}'ɪQ򫮸39vN fL-xAf wh8-%-7Yl1[f^Pկmx r}s ӭ|!#V&qr.( 9+砭؇),Zg{3VujCctlF/¼uM>6zNޅx4t\4К%O\f:-Y緰.dFH~]&4"I yr_Ӝ  $M7N=3ٱޜ^e!wv$8X[w >@&`b.S~lh6tcmMI1kpSԩRS+K F Ðu쮼P2|_$pZ笋vmR%O@c:"}87oU & )n]V }~{Q,U'Cx1}ECbTɭ:[B\>0t^p<t {6ȇQZ<&bIi"#KMP_gPE%aL_V)ɶ ج7O+!WLC A3.w5VmӚ泊4P݉okaxO.[ =u>4/kgRCowk 7'>9i+JQ 2N68=:BK BLK1\7]>M&2Y]ov|Xq-*3i>ePӮťLK&*@蠲;Wf PK{^?iTo0/*(tkbGGf»~>djIfqε Y=Q>hl|/PJ=̧,b0FVMCqgܧ(NvAc1^#:OIUɳ )} n (3gH)g鋲ƙ O9]YG)=T`t қئ-O?$SRE=b3h@txjwp葯rg}ڼ`x<Ǧ. ‹y#b{[ 0s߉ ^2{=!c]ƍ_L}(:.qRVf&<7ԇ:\HtC= Gb@@ "[Bv xy@Y7o񢝐 v1E^ L5_gՂP\3r 0]R txz}΂+P2o906o(ˢW~Z@]Kl<_See;-! Eļ@~*!+f0G&?@Y~@|HE"X$Փ5{N>?C]P5I$%*o%f[ӿwEo Z P~dg ['`=/2FI1:V SITwEOL×高8v.'W&&E}e:/Xlڋ~hH&A]clKWTݾ'5ú1{j ^8hO'rX,lMO1GJ+eicrjB! KXT-KBG@K,Ј%Ӡ^HsJCa$ڈ=UcvLvG(BW|)1K+E 4j- rt@5[ەop#N%gq/8`ىU-Z3Kp"b مJ NvS:P1 3Qj:b_JE{&4&gG㸗x&@Es Xʸn < 3^x~6} @cꙙnQwYDXEb@fZ/(2c9!jnǀ"6e|HQq6A~@T0\=]lϗyDsD %zu_0kTfMd,Y aLFV݁{mկ?:RsTSpb k$#|dp^rd#,W19D^Q@o8ϋp ۾Ďi*52b>HCI9(>8ƀ{H*0ӽJ,R]MX+4rnm-duJm e GtHFZ0W7h!uϷ/sE@Q 2+GΕF&(o6&0iR{GD"wb ,e7Vu^#Wqwa6ǣ7e&ՠƈ%"P+!]Q:"!G[U%GG\*R/,P!eٛB{mdFy2xUyG`7B\JWd;wkJۆ7Y}+ ܫ+:'ϱU]s/7U?L)Ŏ>t++ 4=-}^ N'`b?;I4HJuwyW+Ǔe p1AoD{_ӬtB,zC\qsf+0VO;:l<>q9R#LF 4jUg~ Yu=N^V8zڪ'%ʎ,jB}V룖{KnmeC :H &N8ˆ=Sglf-i 2-ғK+L m7 a[mi#iE)OJۃq!j`+egbA|JZpé%εF=^.m7ɡCkgy|L*Ay>nJs6>/ M򴱈wR +[^hєtB\Kr5HBSr譜9nPCu+oR.R/)wޝӕ*z6-Ȼmf3,7,8)ȯS>6qA<ۯf6_SMɶ.VrvAu:ʸsޜ ~zQA}S+^/$4aJhPz0>{9}$W7Rr&L^vHl uۥ%}WFnŁ(Q_KI跔!aqhvH,޶>EiRtu,帯g~Y2W ૙@$Jf<7nTǵ%1~ѣOss,w16gsl~Zk.G<4~[E }cڲJ.Eѣc(뙞(LGmPG|1Ä(vyP0!50$ 2̺߂h`.R0>je43b\ q VhRI (5 +@C4K,[OY|0viv M :E_Qa)_T!ͭ5k24 S.IO~hl)3D}g,F<D/^xF%e8QeJ.%-~^0I)W7'$3S4UcAjPٷ-kճ"39:$o$DߜSAGhxuߟqphm9lrX6/P9wHE&Ƽԟ!tWQMK>9>ΗhB:r&N뛪N> endobj 312 0 obj << /Length1 1539 /Length2 9490 /Length3 0 /Length 10512 /Filter /FlateDecode >> stream xڍP- w n!²w!] \$摿{ڪ3sz4Y$,f Y#] "`gbegDӲڃ .6`G𐂀g4v(8|NvvA4 P;\PN+k>/ >? 9Zw446 `BY.`(#3j n @_m\$4Pw x6ۘ]C\-@Me':0jtENdG0tqX؃odYPf#t͞8: +>WW}.' ~ynuA}>il]#odiha W'6mGgW_>&mV (r<̭~om~ |.kc zCvP+?F s( deog3O|8fv+fS֔QP{W`7 / {^w5_XGK0@>#߹T!;YwD :x_u>O yUJ-SgA6ڸx,lOAq]l~?-vឧpyyx{KGs)|a D}gxG *:!|`I6l?_$`3p,m~~6\ &]/ `Ks<#ktAj+ !xs@ 9 \(ض6Zԝe{Tdn[7{)**J"e{iSR|)%I$AcbuneXD]/9 ϣN݋fE@3=^|L@;X2f$\3Q.Σ&8"AQ+l?އ[D22B% ͂ꛗ#2.1Y?]ؾ u0\A'T7SK:=~o=`PI4m.9|Jj̬I(y\߯>B ;~gwDE6+9~\*~{} ҈A3dp7! ? ~&q-N7p0f6L-p!7_p'N܆* Sf+pՐ2G^vںUN08kP?W} ytN}DWW?KȾQ,"]`U;, ЙvFVV|m2l;U }z4_@d芜|+ 1Brp+lC2YyE +Y@F㭸]UǫCPj %J6;b3 y1Q겜لУw!p{4YY Iݭ;M ^BN#R#z-?H . H6QwM'JrW],A^lbrØԲ. \+~`; LMh}B2KAbG;j0d>( Q9pҴ:Ai}~Mh+#%'{eKqk,ZQ}p4c0w ڃښE٪7m_/Dlۺ珰a<͚]H?N$3Nu]:S%1[1( KN)4?[Q)NvR-[}1.- (t,,ס\)@iNg^Z"#jMMx<]r+pq3ԋJ}+IZ;&VeR.R |JٹX9bȣcy;)+wK4τ zjs~9?m~$%Jf%iHb=c&V".wt o؉%X|/W!zA(ŗI'ۢss'# ~NtۜaR`TGh⍻"D*n \{Fu!cҬb#303mUWz4X&^îkހ;+Kd.Mͣjk8҃SG=It3iF=ÖQ~3E|W)+_lV&4>`.#OĚG9.ߌ%2LHbe 5!8MeZZ 92Jt?4XzKs}ܧЮDL=;L:s*E,tR{P`U(`sl({1ᘂ\(4^zv馩WJR e[uX3͜ ,T&N˙<=8%_մS1Lgjn1b R;d|u9V%?j Q.  {O-g'~:y_78<;X7ERGf`KHWBXioH5X޾ N4-֠\!n~ 2<~2k$K,,LUS_cޏQ/h0۸]QP2+y! rDDz+.t.kh6) q8_DNN]<l>HhjÍFŁ.YRKD0s?5"jםayGR]a<2A61jc<`ԛ{-瓈oi1KX\:/fZ9L58~P-]VlV5kq:Q!(^L UG kxog~k{>Q[i7Ύ +XY??_GLJü4Kߦj?&cD zeI>E'8 Ű? k\Ľ)0(+O4A D.u419n_Ga|'~:\/K s`I (W%-YuLK UnkR4m@mS8QU rn*e0UH%zڧ qLBrCL/l;"e? =+౸Ypmn;xN4!|cIj׸xDw=se]weMޮ'Jdس zzBKbxoiv;/NkyLB;zҦ`C׭p=tRC!\[1L_̂h5k2S--*qWO1f†"_3 ;W,ҺA}-Ni#8KnF15 M}[)2iFZi&fV8!R5T|$W&U|n% cE+diVS E¥!Mdcm{%շZi7䥖ֶ==(;-i|4jL@i5xƧq4#|3Z/OYD6cro홵ޒLyKɶ9],id{efv~2HdFv0{?In6z9jq{M->(X.ӛ{bLDX֐&kBYbok H_FiܭzTi/ 9M1>Q8:yep2esxFpw/=tT`ץk&^\ZŰcq2a v? ?rBhE1*|QdH懏1#823_]U+W H)>j׷]݄JMoIHCbHT1~{%r^W_:/7_~ ƺ?xAXg+wGi_`-c1s;Z oR%,bxi`+9w}U9gHMZGp>U Eq-TgI5[k_VRKy`Ƅg>(#H2c-}xt(X1AnʃAj霰/b)vp>6E-gF[iZ]Mj)#RT M0ʊ Z9ȨG^nFSaWyˍ,*pOc ʧ f97`%F$[s}皨-ށ>4B]'kHxńY'ӵ6= $NYpC;&iWyAA!Jw,Hu{rVB!;_7h H?4wdz1l ЏC^[RzD3SpI>'nЗ,=A=>NZ5O\ ^gҠ#>Ԍ afhC KXebfOFGНDoS뵜@|:jO1؟fR Ǥz"('IDg%S-GV 'a#-3Yfe,9bZã+zy(6&,1\`xR ЙF>cw"!ցMC~'cwv]$YN=B=䭯KM @?xU10Yv(s~b$4GHmGB"[4}&ŴSO,'_O3|TyˎWЄ)qf-1e UJ0ưE,5REk嚎Nxsɍ.2ݥ !Ρb:/!qP 8"lK Wqpi 5^.ww,8Y PVhU{g= ~XhMfFǯH)f?CT2Go]M7_mR+gtb%@@F_?9OdG`6 svW؂O;؏S:xTcӦFOzBT8ц(,e% `?'ps04Vh9-dQ! 5t 5_}7\Ia*jt8RY3PuPmIo++47uw$de)`|Q= (/2a;5,Mߌ/>;IVJ. [B8Q=E {Kaj%߸Z+|G'Ҡ}]mEXf>j Fu*79L=hgK|RJU0B_Gԃ]F\6) Eaqk:fCYv!ޕX~PHCP2Μ;5}Zp?v}m!qBᛈd- DSS%AMX"T/ep g:i9g+pY;0lIaqZ#T{|XTt|D٢ω]-&\Bٿ z,VF{ O~Mڹ灖o{Ӱ]z1?J< u >S-ȾMfa4C8\Evzoh^i݌(:VôbG!㹵4]d5iN8<70Cɾ22bsK3D9"I!ݖ\e_~YY >Ket vUT"k@eŒ vT1-*{j|9DͽЙ+;~ΙcU {R \Tˀo?`hi endstream endobj 313 0 obj << /Type /FontDescriptor /FontName /IDSEIP+CMBX10 /Flags 4 /FontBBox [-56 -250 1164 750] /Ascent 694 /CapHeight 686 /Descent -194 /ItalicAngle 0 /StemV 114 /XHeight 444 /CharSet (/A/a/b/c/five/one/r/s/six/t/three/two) /FontFile 312 0 R >> endobj 314 0 obj << /Length1 1984 /Length2 13380 /Length3 0 /Length 14599 /Filter /FlateDecode >> stream xڍP[ 2t <w 4s9畜{kYݫe{?PkHX9Ydn,)I}N;;+;;' ?v$]X )& t{#8.  ;;]?D'A4 Pt\h]lٸO%C@p#l@o--'K[qssdcd::e`xں4A /U#Xh6rh9Yy]@7%ުj "0}8Vw_l--`o[;& "\@[ցY MZ::4o,rrt\Odvl~`'O-/Vl:` sLHl@nvvv>^=eiWmogNo|o2@~֠/$_W `zg F ~{.^#/ r;xTu -NII'// %aou`vݷsO/s:M.@gЍy-pCM_Y_v$_?ߌuw{]__+`} n]s1ںzm,m5.h`_W ޶p}ɿ]ߒ2`K'tqz#'m@^O1xvrA$2lMzc*1 N_$`A6?Hf_trx;X8:ج9lFpkk?/_N.FxOwo'blf|oM& 6?޸ooߚu}CoK?pG[17Пo7-oZ<9ߢ{ gz-]\y,,B} dٛNP9xF"ecuGZ|>5YÓY^4TD)" t[ ir߻cyy _دUB~*eՉ1*ɳȞ'sc!E`:B3JȄwUkw?VMHMhH@ }5>C+y[Z]lMj$ځ|]Kѵ,\>65F,H}g&/G!b+(PCʍ@3qv=`1ǏTZ_> dKZ`W@;~) S鈚#]ܪ NϔF"J0P>}&o^]1>ȮK.bRd]#N&T9l u!'T B%dhsc?Y{驞:aozxKOU^wLu$  vNB õL%\3Z˻tkbs\9nF}{8᫪MY|r^k\iAS39lw.K餏2"O= A6r O3^xiDX†y2y~eA~gy”cdp1L(X3b'Zǧ; ڒiY0%ShDmBHc*D?8ӯ\Bvcgke, WntHh!PQ}'"KgR~ȐAzcI|ٮ'jsdiJKM_#P.Q("cK'N&w1']iCԞ9T<mۢ:J `-walٮxfVr]Y|}cC6f'pm` `^CpӍj\y^QDഭ%Bݳԣ 8Kr`n]fUe.֢9bf6?²*Qإtt=vR~" ==&!(i0h?&ֺ?~\ Y(\\]{cd6KmJՀaT!a#HZj&48ӽ@L>wB]:<Qςp>w9l6E9TW2ś& 9<T꬧eqbAQf%/CRuCוڬ28 'ق(q:Vb4&t}) Gr ۨ|BP+~*֧H!{ڱLϯ|1$U`joI54ɕZL ȭ.Ƣ+@V/46EL./vX&O4ĶR~CMr99}VS k;N-qmfDOJ&:"ٖtjTLTbǧ!d ɂKC2Ԅo^'e;-rʁjE69ߝbfuC( +2;"M(>b-8 P©̥g{:6"~YRE?J,[+ 2]UqPUŖ$k vb0MH4۞S+N~}?PXwFz3jCDz {cj*|yCo]Y}R"`lMY*XALw,6kIyR`y'%Чmkjhߋ d$$\y)J)8fok}m5_zQ-k+8ChU15b]JLyx"Rv=p pvLI-U*D|@A+ꗴdS76=%﩮~Jf %_e 0=v+6'"Я,"PzE*gXJ.X4eru  p[נ|%%k5NM\NB K=% 'E;FOnwu`O ]HL8V׻ ?},]#a+=&cTUp[Qڞ*[_Zα!@r˜7NP䮢nKr3 6ς\ɖ]xtxP7(0|⡋37V s[\l,vVOO*'ӱ@ MYbGriCeŃMEgsrYaWe:=UԴj]4[zB|:;8u U]7f/:i$CVlb.~P,2o]G]:TJ[ϞAC4WpNJbL)7e\TYr+%lݲ:jAڍ唪#qXpT09*5 Y3Sq=ޤT9h~(J6!_y%th |^@MϧM?K"}Wy>/AY">I }]h 3<T9k7l dU@䎭 ֡povn-~袢!L`ۓ"^KC* GQ$i(Vm ].}Ӈmw~Vq!Z%SS=DyHqhME#85 ,ƅսŗHqQ$rjy$eĽ?"-yCn ~k\fln3O}"0!VLt+'-h5l@qGSQW$$Хޡ%x_rT>>E$58`[Ӿ&otV+ n-y0Ml ;vA:e nBw$wl-^] ۑY Mp0ϡa):ѺJ=oh\Rؼ4EDNO v eޝ3 &;BWzs_='NKrz=ԔX$l;w֓vJAI(Gse,EuoBp !e݄شdA2f4/[4n3rʄ5aЬ5ˠ7CRf[-dq Y.§wE9EѴ*~K?Jrmcs\ܭD7~ ڶHuF"9ɚdX_fEߑ<q83S~d$RS!֌@{6NF(Oh qCBۉ]ݲK̸7ECH ߿jE#pÅ7#Ρ2߻}+:onM*S^'CeQ%_ \ 8SsO_3ԮuONQcy_]~+B9^`5*0oJt!Qo{ 4/g2OԤەw3(nYObkpW o4\C&ѧMXR<|؜ӛ5]!KD9yتNV3!;@z>L!{?Mhkї|j3;qp(}u* JK x2~YV[׀3$X ̷͢G$I"YZۤ()~%Zޫ @\xbYRд&_{䚺dXWY cc/Lшk0em$[#hh#gm Wrb\Җ|h5a|~R3}B$!7o1f]_-ȧo KMQQZ _4~/u'FEYP&51gZV#o]0Z+/IF orţ9S`嬞ӹx_{er;zcpv# +dmcr6'ebU:9&d0a1 z@M>vcY_xu+}J[|OjdV[cԣbuprљn]?)F5Fkr*ěxm;(grLRKLiy39s܃G'uJO7E>7\7Sy< DnJ0D21\9?d<تSaPe^ShcJh qf; W9)ԭ͗NzMebN`l:Hj-V֟jZ1ڧr3r"^ńf,^1e>L ] ^e?_ 5b yad5yܑO@|7y+'/>E#n9nEU3pTZ6v%{Cq(gQ &riP'cd'Ln1XYx^7(ې8yB͗?kg,'J}a(:Q\BщGo Qj8:+r̛7\4Պhj&rN$~樦x`5Dy ͼ$VEdP3Lꢑۇ-+0dړ|SK2nռ:9="͌c}mGpM^x]\%8?9&n=6ňMYykZ)g[׽睾Ediַ-zA&VZ"1X23iMcΩ/,iœST;wBt/dlT;ՆfN&^Rvx0{dSP]?NOʅN1`!4>ǔu‘撍[KZŶ~8F]ZkޔsSGݘl-_SU]}\KqG;F]xs2)5]-u2wq'٣,+f_ $ՕRȾ)FvG #nj&ןR4M_o n<9 n~eg|ݯ 'zr yX=ad^X~{A z1D7%AkԮCNVZ1ECPEbvl0F B*\0p,ɚh -$%`ѝ]d WM)8|漇 TogI= wtOJh(]9ZL? Yr'ﺇ`)bIw–И7^E /sEF)4m}ׯF&-le;| ,O5SWzi2-|ЈGehqiSEEid,B?A.9̻:$]H!8<|Ry2ZTNSߵ ZTmۗ6OP% m&-˾Hy>oh!fޮ&Wj耬Q=fg jH;M8M <$R2-*t%L8ᏏN' R촂i85x~oda f#}`'IQSBU1sz%}L6^Ҭ2ZF~`w\/Ty WP|Er 3iTʻX7Ǥb Aό 3͂wIe[O6Yۨq&xV5cl3>EP ,+#PhkIj}Df`B[vM7^OJƒ!QϦ4ҞZQHG'x73kH#\ѩB/_'xSAjA\WJ2h&Y륍ð_^b`ʏi+T7JHspHD,;/&>)z6 ˈJ $ mzYn}zbJ #V偂T,a#Jnp޾tsppWe*7톨{`)f=0ok|IAD.~GXk "'&aߦEJ9A#X .^L4jZlzIdQ$퍖ާKO22)Ds5#D9f5 jwD?!:V1mC<0;D]:WL|Dd3AX 4"q&h9`w@ϹʥIl-ى.\g|%\h'lV[60K<,s)(_^;/Y|vL.!}KYr-)&5GA$+QL1Cb|~^& le0+FjhJ*{LkSnQ5x|3,ZCKȶfv}dSTYJ$b4WLAN2wtܞ/4VF2$>x9ch; Ni~"БFa?զ'킇9To{F1W;&j7lYL $O=kuF+iFeEi3na'Ϸ> ?[C DU95-0Hi96{Hө'ϵ$`d/y:2 +[-kse ʓJK hҠq2D\M|{<T3zd{ٰ>"Gk7(c 1.gãRySuyt%Aa#Cyѐ 9 u}X:rDit{שZW$\3.Nv;H-U39ͮ% n_UThdװqnfõa[:L)Œ[+:CP+dN <>1/!ӫ8b=3!l=2ҽ>z[\>0Q.c=ͽk_e_j -Sf q\wTM@i-+5Y:ߞ'kݞ̽Nz>r'jP-"> nzj' f̋G,ݛ\5rMFRE ){Ě/ŜTne:"'c`<*E'bqEq߃,[jQhgGг϶ `6h4Oʞؤm{̇!UuN+aF!!!T(B£yIMlq=J{Dn+/ '_j}G}-am^ }7, )ㆼSDL6;fȨ×QQ<*y7M{%?UIonѤ0XDb).!fr筑鷣?6}ig0ﻳ^V!`(1֒~aM=2W+=HI!]Nό1: g{"^0Y 1GO=WX/c&k:%8'XZ)A=7܃k✄|Nj}: x -` CS.:PY'њQs~DwqO[Im"s<cGv-!s/uY()siXH(|wc,@W[,m`Ft] Wx|7Tn؊@=MvS;޲MtWxt}cׅ!2W@%uȹWuT7< M3ݭO,YYT#,|x*hkw j,N]ĒYvёE`@-*w=)ej%P2;o@ O8RGjHyUL2N^Ց?f> /8!z$_YhvsKRC2f>~ԑ).'PcGQOf5NM 'fYpFeP:čBuvO1UՏ{Cb$7f,mJ|2Y#)H~5]B(*ML9F;nd:׼xFziM#aE4s}t6v>5CLW٤2i Pe7؎BE:@W] Qz" y +:@"&0OD9KC׉h$8 Rʆ:@ōNB(f_w,Pa W(zykP BZnXʊ&fS;P)r:J"_42=>Pi?X OR}IŒ3t={ ڬ9/٩`̖,4 ,cqj $NVFTx-3e1>(ЫC~5QcӎAݴkFGaݡOQ+8 ӭQ*Zj/^ȉ3NS1ء^Hnq\K赁/J| Bk_ou2;Y31ɤ2k"|6wHf}lZlťp xG>gЋ1:4'e{6'7 13sMELk~\,ц}Q!% ilo_iBL?leuD6aGt08%4F?_"/-c_9}]hIcl}l,K%-5Tɶzt ;!D܏.تt ׶`>(YW1][7ϪB>=h$я/Ai긌vK%EXMӸ@mLҾl~ I,/3/\JҠ>OMRp6*XyZl>*_&E#)ΐHa(~X`x_i_¿IuNyB*UG o8RHɯNBU6ʏwa+}_zGpH]]U^qB^/uFCO'hfp$wQ!(F Wi*54XHB> endobj 316 0 obj << /Length1 1464 /Length2 7064 /Length3 0 /Length 8040 /Filter /FlateDecode >> stream xڍTuX[%Ajnna`D[CD.n[.zwf޵Z{f4GAp''P *B[<@ 7#s-.CFBNw>T(9@<0H@pB"  PBX{w$n,,VHHHw:@Ap* jw#l F@`P'`rrruu9r"W@ E@ ljxns#pr#;- ;%9͡HmE=X;8A3W!w2Aك0%f ˩p:9p_@#.ق$5;9r:lMAͥvvP#֯d`H(ݹb8m[ٞKsp*sa:@u@ V\6ynriX܍Y@<.P-,`8̠08P?; anC A_+;#_4 y)+,%pxr8 @nJ`؟#WnIi?PXc07ፀ|@?=9F`;;;;Aq CX ak1E'*$w sA5`N?_lappi bs8ޱwz'o+ iF"Xw}go B6!So.ݵA!XHuUPy$+ 7/nzd.ҢGwtJD6&Nuba,UC #;ל6^\ɮellD]&tzm]#fo1m8)hMH&z&炏e7~)lp/Q#lc/?O==* WhSim)h:2H$irEj~KvʳL1YݬkDVl($euļ*4ѶF&iTOCBCBaÜP5ShkZ[$Xhʗe@i\(57;T~8V/?AOGK 5/Lf)R6vM4^dE c^zGF HE >{1gz Q?m(A3,OBIn9̠e,\*#L-Ynw!I6֢D0qNd3%C+tg%Fcⱛ*tj ^(^G U 12?%"5IN`AT}c!Ei_%:AT/4V*G#HFV!A@Bf,R#N(K_=ɛ1$|M%(cu/ZcH]*[ 'HEE밐́*J/8|9 UbO%<+Uzc6`2A;͛=l̮ o@Ks>밹Q0*jUzOP)vZ7rց{)_;%&tO Gguo󿨕] x1~FV$Ը+UN Z c_" u&t?Ć(2K:ݾ\>G.i*a9%nO G| rC66m9}\[^ڸ8&VPHnh]5eQ{H_Za>͓#LUI[:-=#nYU0A;b${}(Ϋ9^fE?s=Z/[57S n!9uFKE]Ȉven|'SE9βi4O(%nD5m3\:l=qݩ1b ,p0Sf֒Ĕԟ3,Ix+1qT;\_[$ڡi@>aIѹJQX|+=;AzhI9-C_ m5?Ge$Ry3H{{[ۯۥL`D`8ndi?tX+ɸZe؉N㎊"oҥ'o|lkp阖DoSU?y?kmj)8x4ůe&k~ɕ(/<8Zh兙Q{U^K0KJ^|ɖ|;7pޗBX+L/5R=欸% $) Ʃ73 PM w%i5\MJ {kQ!>u<иSR64|oݸ-UE{ƅhde]dž/sC@?5-q1g_M귴,n9JcTQ5k8kכݏqIJiɝLNׇHe ݒʽGoFqVoNt;]/u+% C4[<=&"4g:O&Suj/e?kf3~VtZm4J3<<#H9zkƬByy5мEr?ijXjŨujN2H#d_ *PN1wO ~<&K_mh9#gB%*#!]T)=}D[pŻkUSVk\{wrI0{*y1ngԔO8;2лӱ'uɳ3mdE}sƢ/6BULuOX(umcvLjU8R@پ Xh:6S_ȹ?0Vh۰z86J6մI$G31 5QZT|uH j-SKJ'A)+Cdϧgs.d]+1 ٤y;H yC{ M&p9  iX} u lbƚ%Ϡ%2e!K}Gj(K2Oij.))4:՘+mh)[1k> H^[/Qz4݉S?~ -%W/STГ W35DEP`'vft`wz9$9XS+ Ŭ丟KC0rXn$NY"4tPT󂿙ybA? AD]#O]>}R lȚ;|m@-eebJyi}yZ,C):)1y/MʶBV<USƥ,V#Ƞ'eq`EX IS[4O?ms?vQ}t"˙D7*DE͍`-=qOV; @y #bcX`3C/v"BC[7!hwG֏_H;BגO\]!R`qxo3w_H*<(Zݙ|{z Y5BU NþHI}[%PvkZ. }M<=믤ް&Gzt(a[Bc33>稔PY!?ط$i#r*TPC=֮vxqxAr 'dۊq;׈b*NlF1'^;Z=}T3eNOkGc13%&jf-2#J@}} u:U-y;,Y7vu*V.|tG%dd^[r sGLE?$;t9W4t [t MSX% Ggw$=9$WCoӮ[ι-uI9(7]mݟs;h]Xɽa8:"_ mVy+ΫY}Azj(܄gWMޢ0ؽZR#S;E)ݨVu[I5{}6|e9W\tb|a=eh&{@~Lg3*z L2>'D7IAfC{&ViewvCAi ,/nJJ¬퐖_ Ie7/D.bCra!<~~ !/jjG^罽T߮ g8ZH,F+?hB_w󣷒 rcădmT|K4. Q%UdMVu[ra0U !H֣BEF7*r?;w}ܑ:0=DR[2oHh5e{)өg_`eX>ђz,SװdzזS9І*_)MZyc6T[yO:Og:_N8_0`gJhUFӸO&2j8-7RkyAGrz zs9-թrj N} bA`e(29&|bC{ 8Ã<ԇeA|=Bԇ4@fv#eqf@ b( eY7ѥe]ԗ,)Sbf='SǾצ*f(O8 R٢b=g=?Fa 6/z^35N3f="-ѯM D7ꮦ0'zLv8 CNȗ6m7K6^!A&X[ץD7;ڄ jl{o&m[1Ae,2O,3ãi>'d\.ۡY{*%KQ2mo,x-! ܫ E1o~oT' +HߛG? IG]ܹEVk*kckj B %Yrh;rfU5,%tL{.?1s{jspӗӥgMpgs1bX})|VBo*e ,7C7fyLc`Ϛ!WT\NI$( *?~>T/NXw"FzɲD} 壅CJ}c;6HZexI endstream endobj 317 0 obj << /Type /FontDescriptor /FontName /JVKXGB+CMBXSL10 /Flags 4 /FontBBox [-75 -250 1278 750] /Ascent 694 /CapHeight 686 /Descent -194 /ItalicAngle -9 /StemV 120 /XHeight 444 /CharSet (/a/d/g/i/m/r) /FontFile 316 0 R >> endobj 318 0 obj << /Length1 2578 /Length2 22503 /Length3 0 /Length 23967 /Filter /FlateDecode >> stream xڌPڶ- N.!75Hp  X^gsOWWTA)ck5$* Bv@q;[gFf^2 3B3:Ζ"@#gM'gg vX8yYx<h 5r41lN"vΠ2@mB`+ dt419[m@M*v&@gQP[8;211819 ,-@'+{` (NU̜݌hp5:@*R{ #d#;{#[K[s5 .L05hdd7r562չ@\H `?98Z;;1:YZ7 hb"v66@[g'Z:M@k`dll,mM~abϤfkOȄftp033sozU{_Nf>^v3@K3 +`ji 0["afc;ZtAc0'=Ll=uLRRRtO_; `-2.(YJٚx?KZ u9M@XWDwM6OH.Π g;TZo"ٚ[wN@SEKg]-*9Y~V _>2=N InοKؙٚb#GG#!tMhk J9">QNo߈$qD n`/b0A,&?$ vE"z@A^A(AA_" P(俈3X[llV b7:@ оxA-?iA1rGh1f 7l럚, \Q ` ;h@Dl ? hVUZl@;J]Ail/7h?n=hg,:k젮Ao?HDb 45#ǿIxc,( hcoqc ''m_a ,EgrpC 9#:,@Pgn(DZ@L@ǿKU4qq_[  h0kg&)TVG$5[w[b7/^GMua? 'vDZ 0 z8xXA6KS8p(aܻH- (Vq >M2DEOSg83ѢNNgK!Gzi~y\ԁKCy>{?ЊYD,/@9@th0/&q?C{^?l03ksCwrx_|?o[FvC z 3nO9?/`3MCW*c:_f- 䘿#/dޙ x^ˑD}0_/sky[^.u`p^. v? %Lƌ)0z, ((X-|M)HIf?n8pCgΤIw\%۾rۖUY$s`u]oѐDh™EmPa$_(c(3VQ HV1B/ԈHI;Qv{qrV#wwJ'\E2ϙs$Ƹ]{W) "N$ba.K{o>9kxX8_ ^8=+#lDh+nwE~v«c`|iM>2.,lO_D-bI:WLLz;Q9ˮJnp'3Ym3֯]H<5K9l-o1^k8ll 3U'deph:K xh Kd"z,QDPv*0OTrJ)[?<~kdHxӁs4 ÃÕd0O4 Mwڃ6I |⍧}dcOL" ݆ysҭ/c=O0Gn -9" c$[vG,LQOH;r<O)z*'6V7Xʺ/,P]smNaֳ'•{pv,őKqdm9T.(KWeIxޗ|觊ߦ~izV@@ʺ`A[uP6h̄VT,S0/B>~=MXK`2δnPc%RQe/>(_˴@&9 m+O  ȲVLVY {"QMp}WJ9UȪo7A9AxE G?(C:k/<;l{N6<5E# O\,#Yh˶ѫbCVʆ*ذs[F§P+-[gCC̳?~X$_W5~JkSbMmm^ٙhl:R;x_~tu#5 |UD8F뷮wk-rz11 :x%bE C,[z(F [{6'Ђb[I'Zyxx *5x nâ2 5VB(YK=wɧY50jVB~+*ec htӊ0zE)UÇ$*%uӖ-[b_DnM BU(TkpT)8?kbh9}Z #F^Χd:fP%jGQ֝)ߒ3:tJhz(۞s,Fm3q~v_Pi:M1&AJb#Q' " E'_[:׷J7^=>1׃[2*PozGw<][Ǟp͒Jh#vꔄV{ 6Cݠ͹]:W,"q{8F ?gDm׍C̝SM&toF)eۡQ1|zЙyzo{Ve^~tn8j 7'Ɲ)AH^ 1w[ EPɆHx=OJ!xZ*fhv/}\Ƿ$A4N Mcy~CRt\%y4ĄC^KYމ 49u;=N&HSoc/29'&eG%e=n[Hea}Bea##Z9L*%̳X/~%OL B{rI|V OD)5˶g4a$׊P *Zg.m\.t!).nG{u+t TXGʥ/~vl9d5^4KFMSU.j>={%0j dCip)il\}Bc Rz*0,wh(:JeZ ;*F9E-ҙq>"h=҉Z`ؑ!+kxqA m9a9b/'#2v ,VUYT.ZQ&W-~~ 1L7lk%e&"I t$R.c2"h⽘2!w?N4{dö~4TԷE*QVGe&4;M|[ШS?=GiD,RA n` ÏHKMF\e22%*i*8/'C;/*p2}gL3=qk(&[2dm JXiJ:od9fJk+1F*èѾ>bőafi#R2eU C7G/ˊL#}1}xsͮ%eNBHuP!P\a[zoEgPVH.Eډ|>pf8G[l0؂-$cƂ^o^\lѩFTD=qnfEj+zmTIpH/=:3EM#Go#f 7x𱇡5+3 '|,<{0ןl()p;jږrt8*a3 \Btߵ}:qv~g?avlÜ2ҢxTY.LDh>!g<1֕Pt&睮8}:K_3m,Q4:K2 *f:t}oi<|k{;.^ ò4BZ^SRrzz*=7DXjo40fM 1K4* D!n>/bX"UwZzϮsI]'Z1} ; ղ#4‚%QfqJ!- < C֗/2x#2 s+*;#BeTA==ˏk'X%:Whmk 0Ԉ}MwJԴ iAu0|/l˴m"1aDsȇSEꃢ vzU@RNqĝ]g鯍 Yv %j#7y͒u.o H9RWgAfMU+mg'Χ[(c_17k߰f "\vyLמ@ٞyĿ[CiFTQ.۞?[ٽ~Lۗ'Ջ *`~xeK~h!"2n^,AGcDhI0fr3v3`#7ܵ'W 1\R)R,w HRS"UEA, $1,azG规ť>S@v}n K9Ɛʻ>]9\RQ=Wc*Ӣw][PA]Pk ۘkhK7\VґƧ;%ݏq>'hz5۾Û~pNfO6dY~UX%@hZ"_ Tn)rb}Z,v)0 bl0*lŠz_-X+QN 3L6P>(xNp ,ژ@@}T\+VbBOiB>5-$̙&"ű'fmf|:@͟jCv|my rBuw8?1ɚU*!Aۘ~Uk9$#q9˸N$1{@+FUs7hհ$FC@C{>q42=ij=qͪ|D,Tq7. dyҌ׿h|}-&%a]ր>`cgVCk tEzVB tM, KD v4U7.|v\fuv*1&,.  <~7,>-Vv2R2zoׂI,p!ne3`NTڢꉔ2BjDޘ@|4Gj_&﹁>2E- "iZ@$\׌b0CE,AฅZَM`LOU/F ٲTE 8qgǿ0r8z 3 ;? LjG_{ {VS!Xq-OiHva1 ,΃J H {N- 1r|5H!r<UQ'oN[i9/3ϾbaΧG\?:q/T 6&?) Xḯ u oY~ߊꧩזK{JEܷU}K/ 7HZ6!o &bt-C }la_Hk w6PȰ+f4M|){+qS'z y0-!X)VdAjY06;+m'[CITM  }P5Zm_[L$uAO+כ8K3-9j0cimX%=Ko\lrcmA.^edG&\8O/m$) }3+C ¹rO+s)?%}]F<6.^3Z2NǿeJ}p$hsAForYuY+gwvyիΣn:;OWU;He}1_~v-& U=Y0f)z Od E{ăUHס`ZT|V.ݭ a001 mTWY# _dE5*޷-'WIe ܖR %l_)\5Raz>L_{fq(qRuvtNy~G<˷bX=b7 }X`7GC?~u3OɬV+Uf+/7~J?SftuSBbd&y'2|\+{EHr'g:_x4'껽Gy ._OK-}ƗAp#CqnTHl<:Ndٹ;+sҨxT'S4~2 O[vN*8'lj4wP2y8i24fSy7BwgqZ֯ ٪ y}+p~Ilc$ OpM[ΘTmu{m{14\DFxg|iM~=޷A25)@_'mh+ 9P3hqd %UO>rP1[6_JN"Y>: ţ6uyWy-q٠qrUst<\ rur0=|00AԤ~§|Vh2l1j6!j! DaSyEXcb=TtYe~BO d,ܐ--,n&U[i;J owaa#m">ec.aɇrnaЏ[AUHbBedH4|ω]>?cƂLeaxhH&զIOxdylmO7S63ճeľ+"Ŋ4GJE:lr2V*`*>q86;8EFҵpK2Uy˹ƍF+ZKz]^)xL뀉gT̠[4QY$g@u少D>Sc-qpq>e #rzQ `K8%>WFv]:ߧW m8(n: u~'dQ7k|ޯݚ\io#o$=)_T6OfܕaӪz[W@&$E([fA|<m wϿgQ_y B|?ִj~+YuqC%Bgkdqk\.KF,K&TYh gŠv0wQĖ{16=9$&\9+IeӀ9Q5Z]&13;`A|Qo;NӰcΊܭ!9Cb@ob~ű7.mP4tybnʊuVD.>ThJ8a?GWPδvsx2c} KOYuETu}"F0ǵT#פrt .74ސ̚Jp&u.IxRLLqi'? Č$;$k#{o`޸^='tj$]G) B:rYODw` bF&^ZfvaCUjhkpಾuΪT7SpWxV|f4@.`Fzoڊ#v^40;?]ӳphf1A93X39|yh0R]=jJm:m:+P%k_.ةL5Y({.m+9%H{oEvEgɈИO=G̩/Y qgHU>)6~RK( Os6I8ƣ' jmb|spN<;eGl6&!A,@(̆9&@%= ƛ_,}1$-\j}$Lt;pzYfxpVtԁN({XN"ruu6Q+YV:t.A—>]G]'7;o;ё hCJ]n?2i65.+YO^L `r*>5XdUw]G1X|QjkoC!3 n"´-+|#SYӜ ZPVu+c7vw&UuPPi #e"ȰHf22>Am+LRN L+D%lujj٠)J .JXMtAQK  u̼54d@돗i- nS̾3LS/mi8wF- pAIm.y qycMRfD^nmgjVcWB(ao-ey8[܊$WaNɖp,?̡đUYlJ&|8=HQb:ΠBʆ¯ѧ"t& jzՏ^8eH? 5\05,􄢹Um,ESJUa17|K1T'mB#z:[_V/9 ؾ#!#mg%C\L"1׾L9Y| [X @ȿ ?[Šjn;ˊrn[x^ot$0jpCTD4Gn_fjb| yw/J( &EJc2%`o΃  $mj|v{!Nȫq4Z' y1օZg&am,a[&>f abd,tI== \  XlQ5]Jdu*Mz;{K&^VK73M/7}ٓp^.1$JߧuzFakΙ 9 0U3|΀=i6y6jf g<ʌ2 9>O6$ xO̐ Y)ouF4pgxZj%9E` rUL`j>^yQ>yyU.s :B)'tO}d2st;zLJ':=(Zj.yp#Ȳ7ȼj\K}o .ԛ%m _Ofe$9ڛ6wn>œRCg2&ńV2ܾ/gxǬ(5.6gTؠ꣒?&>pi4B%oA ?b)3?tYKcx91E,0GO&.QG@OGz#'y~NQ^[΀I=4f4ȋQgaE#6x[ʩ]KD]RpΌ/:ҴhҐ70gӅzŏP_ԄQ\&X0x! F!;]MoCx$C1+ F~)bm ))gObG1`{9KOM  =-GY$cі32MEе]B_8*W{w.plEy'; '<ݶZR q7Ien)X\?" /՝/qd.`6 Yz.^n;)z'ت36纙&J "=p?X0FU˧UINl _>S3/EIm2.D\&,+ӀzV6Zneb -S=,☟+Y?FE *횻m% &LϤ@ utOWm*ߪG[[åA@5 "?'Xcϕī6b6{k"==`~ i%c:zcy1B2]ۋagU,;W x)[PΕg ޥ#b,Pr{܁[}[k ڀAD%Bd RO >wN?YZMNo4'V@sk}үѝ|k)ְĕS Al`S&qa!'+w铠,Ɣt!_C ml0~-HѨ _"XHgzp+ dU-j1LTra<2ͳw"kB` HY*˜:I7t!-ZK[}!b OXI\5!Shp)>1x Q/Nf*#$꽻6lHH='(iv爹[lVw<ƨdw5! ~|ά8hS.dpGȱ4.ԅ!y;4|6$S?n& B('Z^F ٞPkBZ&nzE -8_م*wp1o6bcLfnSpvH+J)bYN>5Chh^0}ZJio$g?9BOuPŗęv=dSxntu nSv^;T9O PVl,gO{QRNɾ $Ln>A[+eK&s FI÷cH<٭ErVH&6'M ^VwIlGӮ'vsI{ןe˦uSm4)JsĴ!.x7PVvypٵd~hNv̇`pxOO;L/Q87_WʣĒr+%zO[\F^\R7)⚎W6#Q~R6j \.tsql AFA>BPPù뤊¤wDnY}Z<ݹ L5M&fQ)W}Wj$Pc7|jR~TF J餧2*e W.W,"i 7z ( <^[OUi^j%KYLn޻#ӛwb3ưg$LiĮ^kG`Qm!YJG}N3W p/&`ţ|xwHkI >TD6Ս򐅄:YINO)7.>Hߎf? ^Izf鑒nzEu꾙o^v&t'$qVuo*( g%\– ._6^12:'flY. >#.RQPc΋:v?tH5:M,gT4Ksz?8󶗛\a.`;=^TwrZ2z\V[ k*BȓtN)<ԱwM:$ʹJcfڪdk,j}R,:kS_g /d8 I푶V:.pZdJ#˞-0nx"~Eo|&R4'7蓚TrA[MCv-[}.VQB8 KAq4yB})q`G6 EC .Y2yV"4sf&/GMX 㮗\l&:Q3:3&暕5!'B*A IۗSI|\‡ jog֗jp<@+@q2$:%Oڅ*&TCmM}(!DVZm?Y {I-І'I L H- a(X.[;Z\>F0GR]B7˚!#_Hu;盔G:!{]%-4ct %Ŋ6 f+',M\k dmp'Y!hS7MvrL ]>U ppb8 e-6c4q歜Oo9 +МهfYXGj[.ܙpHF)mڶ.#sYPoj!k8u Kͳ2϶NցSMip>&XK QT 극k/!h:&bxrt>[͂"HmS⋷f =2u{o^WKGDt`sl+jM;w! k#juۚUk>UG F?W8qGyaENӻIFL @ nYޖgO}G@oc}pHoH8]-3ܳ& 0_hgF5&k0;MגaYPRcsCrhL>:ٝRR(˧6O-)z`4|2d]qSB-EUP=!Or?OZW#{r $TۘŽS+Z!r-]2GyC'ז쀽2EA)P_<"ŽIHZ"J}oKU)mL_72*TߌwXL}UMh׶R̢^^=S5ߝ+ LhDl|E,)iʋ3S.O& ʲ$JQI0*|%0ZZ7mb9'b3"^ e"O0F'@ \<~/.;w;{j}TxKޗH©됐S6"2Jz)PonjsRXI`Q@i [!;/Mqįɀp5jra4x\>4ʵK"rN2 Q6^-}vl'09[k>O%<ÿkߐ 8 _q@׳+S"]CQ39Ia ҿ7iOwH櫯 w*ހ;xHI]SA+y۴+tǧnzJt㼊= ;g7cscV)j?g6?F2]kItal= ɱ}GX f++3w~} 3opm}0J;2!/uՀrqP^@*+I2w!F}ԡ>ڒ] 3$tt}ė.xRp{ \ÖJӛK2l{F+} vUIǗW-4o-+qD#,/^htЀUR:i?2ƭZx8/^:W!T[7gO !lA ;}LVh.9﬊n>@)ŐseQ[j|W)}l1GG*[.j ,20f$*Vz|Y՗b!V )eÅa|1z0}na9()%)wBLB= T'AfN}=rK`tUW44Mg!-{߅27Q8U8jy}$B8B d! Q :Xv1nH7&GZֺsaiƝ#mQjIcnyh ~_V߉QteyF:fPEEx׳c`oP4+ IP ݢ3Q9N}\y+;$! ˨Q3{ېՐ`7 jHHJ/wEjޒvkW܋.y_JUg:jzcSlE\ |EkyQ;IO7FOGD-A*ÿ1hs;4*ߖI  R?+JQ 顫ChyMZY./Z&w9IĻѾh"O1\PsmDjz,u NWQ4uqs n&!!Kn&/.uRwA@3 W[ O켢VibA^[wD]EmǼ?[ {(EƧ^?:7S~Nx7d9ПގaBgѭ-dtx_gr`%,k=-gQfYn:`IoAE.1d1;ƺx;˧n]n:.WqyBE]84gA0[QALNc -5+!|"b]vCUl 2[4Oe mR9!D|7v 5Fp;()yNp]tk492l5D#פ43j"**[bw /h3l+1nϷ|i b+H4IWPr(*Lx(QXU3A[*(Fpng8jYfθsH`d;dY w[T 5oŨ$q8a:~vpKDtqQՖ{RTKC+:hdL{Z%X0w 1̙upiTxYPw@|9u`;Sjq:/Zv5 #:9lix#oˣn4h40C{p]AA `\&w0یj_N\Lj,^`1%D ;x3H һ!D5j=5q51w;SDe/Uyn^Syї1ܝtj ւ=7a D 3~'ޟxv 7b'\Cejc=(%,m?Ĭo)vO(S-FG yTt$]Ξ{E24$.+cp5/Z4ܒ =T9ĜH$cx-<13 < N 9H44, 9U2uXOo1YБ;lOS<&Shh\=mc]ڮYD@ewCl:ڑIy )Ii,HR _g[xmP w`"GaSH^/8܋.sՍ_ӡ$%WW8.c-l7I$فLs fnڜs8\ZptYѷ"{UYZVBzY W85=5MʯpX ZA ||Fؿ8O@Mc/0J~{rtcx ǍmUYDh솫pI"Xhr]'ҠD@~P&;|Qڏ [HOkk>)~ѲO ccC KеF8F "QtAfۙ:P4n=?\o[&%qiTp4>a'x.7_5Q=2Ǝ)Et{f40p38\+Ώ[+Xqfw&2" T.-+pMi(pHl'*M; v_BIyO#^<ٵׁ2:K<>DP *nRT }Г˕8CЩ6E | \|4vl<rΪzl7@~µtZa޲ȋGJ>p@:7?Mj$"8Rܼy=~̻@0v$[^ yQS1]_ wgI.M-%b49 H|?>FTc"Z :;-i]A?GC DXϏ"bC/32.|J> Oa,;eJ-rφo:5^ovBHI)4O4\M(ڀjD#fs6yz@(.)  _#~J*xUwagwѬ+7\eľ#t,h7mWcGV ;=o8E,u$`GѣOUVƆ{zOP#Z Ҝb]9LOG8kꚶ%u=8Ui )Pg>oAM*E=e+\W*ڟ!^zv2hjeZ_> zEC]qK#&fp ?WJQ-W>w`% endstream endobj 319 0 obj << /Type /FontDescriptor /FontName /LIVINI+CMR10 /Flags 4 /FontBBox [-40 -250 1009 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/Y/Z/a/b/c/colon/comma/d/dieresis/e/eight/endash/f/ff/ffi/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/quotedblleft/quotedblright/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) /FontFile 318 0 R >> endobj 320 0 obj << /Length1 1373 /Length2 6096 /Length3 0 /Length 7038 /Filter /FlateDecode >> stream xڍwTl7ҍ #FnPBc6F74 !tJJ7H! !Ny~;;gw3 #E@5}I$&f0/- !ˮQ:qG:n1,d@>0G@z~H S_G "##%'E `8@rc*BnSE# !+,+vB y0 E@ݡ"\`^MN(_0 (`(  w"Sm=_Ww'!;`nP Ꮏn^L< s;`4h y`n'd  GyOB0[sp/<௳ {Goas8FE3@R2'Nnc8aF/BzCA08cPd#ah5<'[ p7\f:VIU @ sg#0.@Ն;!25ҿy&/ B< H|O ݿ?hz6V;o;( ]0ojD& u4 .A/oP#ˆahxaŐ%5ovJHH$؏sI #a!8 ` 8!$S\ y~+Ș:(_ H$f_NCh(dn|TvVrWpmDafW0`0:'|S%=W y֫ǭo^%%-VK|GLy=3"C-MnTHsQ ]]0=f^-KzY6!`oV X;NKG}ts:oU'$h'A8jU4|LԫɊ. 8WFLPi"n+64M,lgA-tejq uY<J |~ΌXz^Pij<@E{H6̒z*֪r6YwW͔%IOǘ=OC SAQ|`jo0(97!7q3TX ~(r'QDREE9/$6Z#Q QiqJ :uܮq=.gmnXN|\2~eZ/ SߴJ*K[ "`AOt>>{{\S*gȷ ^5Z踓݋|lQ_tzO`Qcvԥ{c5.qv]_$[7(4$ZyP,l#l}"kU[/-uinDdH>pG+fܚz`{AEWrkl>^yӏ&IqTt>V48˳mXmǿ`Uޒ|9]\Ti=&Fu^V—LkvCÍD9)'jgVߦYwqHARK=O՜4r$.4me] 91 ts]4)Vyv!9_"~ d|* GM5jH3l=xZʼnĨ; i8=GH=y[B~u:od-t$х>gv-VsOzmvJ/11r QqΎ!enIdRPY)/;<Ig^\]RKlu#5dFTڭ`B"#ֳ{ 9T#t,E/yi-i;Ǘ dZiiɒiRה"& NJA3(oSK˞01/|bCFCE@7{3ZlR}Qj5ʊA,Qx[4GG\8Yg3X^b%MƵ^8ٱڰ,X斞Ѽh,[gp0ߺj)yq_DnPOgYҷXaBs+n;'h=uo ﱵUtxZɷ,#&I0SZR=. Ӌ)Qw([r}FsVoȴ}0jg-@B!˓Tn]/Շ5)ۜZ,$Ģ'V6֪vt}v pgJztCXL Aw'*dw~in0>jBL[=lz+A`FR~>,%fC3f&n)K"ֺEyFM *VQg)&X*pǀ #Ȩa8@Gg_(*1lF V_Г 1ՎdT[E+bE蒋:y`=.Tfvt{ }LTzJg2U2f> <}՗'CoB19BųWFsXKUw'w)v zkjsȃZQBM;,/o#v6>,l "" XV?Ɉϑ7AEY ?0Lj3U5{ȜGͧW #M0z^#{1zD(źMU>)PY [5οДEG>>PۏOj:-%OԾ\И~\8 sXƭrH/} L^e}NO.( į{? qp3;|+q,Y|(G^Cq/&?gIU~Hgn›k-W 2K%#[j^%M#҅HDrin󓙿\K5r} я;9Y4TjP1c2>ܒ_hL[_^:cKMWf}pjgݚ7sD0T=[X鷴9I UK[yV$MyS8gIYܸ=̈́6*w) ]I t)Rut6Wp8W' /FUT\p+s?zm'JUDǮ9WvMhNw/zY -dp ќ{ONU)vf63V{dHDBt~A0u1WcΉ~f,Dǜ4/kn_vM (mF簪ŔK> 7k^?~\& !i"뭆l*Dە@NȚYRGEѮBȻ .Ⲩ+CTZm0W(dI?r>aV1|R43or/}Be$yى9ْ?N >#~H1*3j07}iON!zN$WX?;Av5njsϿS2PpMJ'OS_>k:qt3 NOߏo8|\n%T64*xƓ䫂g@S[28$7]oN1X.6=ߛ/$9 ţjcb!+Gfd$7t/y5:)vTp<^!cq! \8AM4 Xy'Fgؾpkט(=9O\rB['B3N#y &u{YfrHT'By^$."ו3O.`l8aIE@\z1~W<<iq9<ɧ>}X{ǹg'cԀL|}3usnB\"އ_ QI0,p@v珆ϵHkgiάphVoӉYJ9abV:Brc٪=]Ivo-b D'񎰇l,bɧ"صa{^6W*8{m;J&i>e -`G ? {+y^PZpvy*s%gSE| 3IG$^"汞JQ~e!72}{D5>Ju.Cϐ+%Ҭ<MHE_dq uh;߀TF J4U*7-"yXz(!B>u|.;֧H4]!:H;AJOqNJwOWXyRjYiiκriJ#nPQiYA5Vb w7cfwSY~8UQS!6s8:&*,p>G5K:"{ '2x+Ԏ1%_VthE1myZYDbAogogܾ3,楶`U._C@襼֣x VQrw7?φҤTo HW"I]:Xh@wɌ#83E*4<;;A x3Q=a×@ ~Q8 54~lFk+m{lv(V?mxnnNl:"Vtٽ /TnkΖM峣q)mF[6Ē)CFw?YIXȪl](72)-ORT,^| [nZ5Dlqq|M> endobj 322 0 obj << /Length1 1373 /Length2 6093 /Length3 0 /Length 7034 /Filter /FlateDecode >> stream xڍtT/]%Ȁ9H#) 00--J#tJK(ߨ9{Ͻkݻf<~mp/( P >"bc3?Z"6c0 $]:E ݡ#PT(&)(#! Py@Zu8 $bSz# (t\p Z #]m!`?Rp>vD\%<==A.H~8 /r胑`k\6{0~"6#GmGy`Z؂aHt;k 4:`g?;ѿA`ApWsC`&? ~9H8:@A6hߍrzzC" ($?54KV)]\0W} {|!0;_#ع  n`5ſ=*(vl~%7v6Vu#!`/`mD ( #OvlGFo dƖ *&yy(OHD̢ ݅b`pğfѷ=>36X0?7E0C,w?Po+/a@xuGG3߮OU Bs@%B/.e*Fp$׃ *[gD &?K*lv%$" ! o"ђ708 @#~SX ~~):(Ool4~ſߜDp[Pֳj9OQ)ͧ\|6 R4+>+q.0_~kÏhNkJҟl!8N7\m/!#ߵq3vf:[8nՙgWmopVƝI8XiW63tx(>&n/)ʗcIC6 nslj!v~ZIr `SĮ4&$ |R_R)dI@jHz&j3ڐR[iuӃr+Q^ujяza~(It)i/9K:*J(9镤+;xz$LiR8΀ہFmCRn|qnV.CǤ1K 2/tx;\<+1R]0sߕD55bM;EJp@*δ;3Ŧn(rD>IE7,(sA%V=0!J%a8.aS>h;Y&`=uʚK#H|!PSynf/1T4Shn^B!KIi!! 5J-#Q(ͼNqE3Ɠ#GZHLwW$wC>4l(B~ב:S6!U/~5&, YOlj hy̥U1 N\Id:v@ SQ/]tCG2uk@uѝ,$ ?c}Q0@u=44mg z{ I.DmX6WD(LkEhni(9}d{az 1,Ũe(ǻ3e,3&—$O^u'5oU;ЫM-([t` ?Rl}1Đ7N.ĩ2t7?ER=zYbf6]pD`@g31,ܹRo>3kMonFJy_^t.~X] |N"K#вMd Cb.ך"&z B##]],P A1±V^aV36~jzwQu0<~՚ζoULby[p#i:m:w \!ܾ-onVIz6(JhqSnuߧpk#Eq",_U@i CF)(؁XkaD5lPB- ^K=&j2}EHLjq2٩Y 13̾< fGSiU[x"5O-ݎ7u>1^E.)a&'ѩ' J:^DN.E\&mدg#bCbv^~v& -ޔ*,lc@+nNG)d_LQ0:}_U-!8]0ˎqksm1m 6. Ǒ$2Z{ګvZG7Ym&Ќw#0Gf}P${Ǖ])fDDzGbez"uO>sl"ɑÌxG^IĺO4Z >A[0OT_q"2Wng]ŸխTw ΧRټos`bA=swǴ-Wer{*RP)N{^Ou/|fYڏzΜ~4N NA)lV#xbg&G=We\[i3SSM/:Xа*s|^4OA#~kR2Vq`L׬=GY¨Eg dw%nMz.+1T SFv7rTr]LRSux·{pD+6:5YE#05.h߸=0п# lD)cZ͓_g)'IXg6}ܕM))=fL#C~}wiZ'I*屨{lּ.嵐]-u$#] pdi+t}%-ޮJ=ƭ? _(UwR&x@fTf֏;;Om-(a C䛨LQO'_y}#kjɔB̞UlU$uw:yx4tJlRB7Z+&2Y'cdy䴧}+ݔfmycj'DUzkɟX ܝ=XE-*b7x2G>[<9ЬOgș}u^=?XecYʀߨS0z@\)"Jҙ/~nwY1z:|wZpaťM*)j/b-HΫIƹ A’C _?cG>o\}ѭ$JrxdU=_!;YH}U, - o'PWoܳ L|] :Ut&UZl¥RFQ'iSW%bgGO i,CG_ޱwȓRi[J)`\R!zB+l[4Ct?4wSK5uƾ>VkS#9c^z`J"BNu0Y,e,5v;4fc>ج]™kXp8Hx>:4"9 P6!K@Hf./+w52:' 8G'0c@|#bySb?C(sv,l_}cu (g&1y6Qyt+z4TtHHVaGR#ikTʻe;m2 h v2\pI_c!@ڻ˛xԑm Pܽwyn@.=| joKLy[0c-lrF2[f1*1^5$WlyNvGZm A>Nh$!JRt6ܴѵ)cԄC]7ĔgWGScmVKZeWІI3/}FUTּXkꋪO%y~@5drjoSXz_yecvФ%^Fw ΂4:[Ay~Q5ewWHG)]3YgwIR!&y:gB;!]| +V\8t\GuX mz}mNv-N?(mۇS3o ;z?lt `VɊen" eԭ$ca~f6Us< /Gl#ڿhD;M2slFp^b*U yµR69 }$ܓlF_7(u"R%k9y:t5׼I bKc`UGܾ̃#-EKqiDr&"ViJ|Yςc9(C"U)7ݣ6%{5!9i!E͘0o"ؒ]3{Vp_} v Jv|'n`#uAAUcmͰw!}> _!1+m%O=XX%cpW/QjpAeRQ}zsJrKCy3PE5,('v\W`68cZ >,.hAQ Pgt}h=,J\"a.hR;LRXk:2#[\eCQiV[ٶ--dÛwQ+Bƒߕ^ȩԼUq)ey`ɖwڑ-^l7f@7-lHW0p+ YMyGQym!FF 2JcX>c3V<,oΦ jc-v/enHy.Qiʎ8UP*!ᅀfOnux\'x>|\vLgEO~ ͙T' CMk?n&_~5*^o5$ʽa]-M'}6qx,ez4rtxglޗt͛=!pk1!Z%xu@.;R Ϳ9sp Lo1;8!Z#xnÛxectk->g)6pzE ~F u`2٬ojrVS8tl-\5\KF PÑ4AM7=G6}S[C]IT"2VմV.^ۡ9 xW_-]` =1AD3M&ī^?-~){?g>cAM]Q?a|&_5jzhg4D\%&J=^Dt[)þN>ET mM$m}'݅{M0}C4C$M'{@͖L BN5S7R*9?ziZr. 8$x7{HH=5=ۊs]và)~YN8?S7 -) ʩb ?I#C>u"Љ*m9[OQE >OwmX3z`Ќ%}]nk;1Eq*- IuF%Jz{rAdEګgJ. Җ`^]e|lw3`(=y'Ǎ!գg'8Ы|[qM` e#&"VUp[&(D$_a1vy$ê endstream endobj 323 0 obj << /Type /FontDescriptor /FontName /PXOHER+CMR8 /Flags 4 /FontBBox [-36 -250 1070 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 76 /XHeight 431 /CharSet (/one/two) /FontFile 322 0 R >> endobj 324 0 obj << /Length1 1787 /Length2 12773 /Length3 0 /Length 13901 /Filter /FlateDecode >> stream xڍPX. !86N5- ; Acfvwfޫ{Ω QVc1%. ,̼1U33#33+":B C/4qy)6 '/ /33߆`'^)N K+,>h,<<\DN 3{--@ lxWj~+^&&wwwF;gF =bP:܀?(,nrKpq7q 3󛃫9 &#Pre,=_W`adOyddo J..{? Mlo&n& [7?$ET&o:g3'33 vb`;;3AN@[dYm-@`artʈM`ffa@3+?{:T!~vXY~M܀'W?YX 3)dw71/N [d[`{[Ͽ|\&- I )M? JTf`0r0X8\ol }e-Ⱦҿ 54~X g`6{bn?](_>jP&v [o`ZUhr_ [AΒ 2VKǀق`g ?2y[o 64R ltrpLL<ߞ qYg.o.|`'?ޓ $O `F& nV߈70ixL:A64M5'f"Dj$cޟ&2&MG~rzֺ6p/|9ȮndQ`؍]CuFΨ^d`]ʵ'4ꝥ9LJÀ+~Ǎ){Y%rwĴ$=Co_Ga"Ʀ{QdC)>%.hq~QGT}+RU3)ĞUmH5 9ˬ 48x b3lIzZN={o{|7a+w;;ߢbLkC׾m}`e j&HFWυOIFgrX}¡EEY ~l_Fv|&fN$kź]IQqďbmf^6궝1B3 HRW׷_b-φX y 1~ԥE2 !,vg*<צ 0^r ?ti|./8+g(_""DMą\ŠTٮѕkJ2j$aڑ(CN ]MĠ^n+ `xફ(*rzٖouW?bͷ{lvm^m[tcI+e{WK͒;(lN:#Ƞ,+Ǎ䶜nMU}wY7IU5~6H1G[sSL6%~Нb1WBk@fcZ]5-=2Bx.Uu-{:p(Ъz:|!?5e:褊=@cz[U5K|p%A]J9K!ːYJtF "c6T!Ds}Ea DNqlcK\2zIjW&q\"!Uv԰}?Sd+0vYܢ5Lga`Vz'nPu +o5Zs{=ZG4x0qFLGæӫe^iYǻ{= wWaJ'=$+HX2)S5q}Eh X[Z>ޮo9/"!z 0Yd߯T@]MSO[LE٧> uj 㰉$~u F|i fɿd="F _@PB nSERD*AY"x7 |> -Fw<9;Fo8cQ5%w,U|SW\ pi15Zs7ݾu-]Sjۇz( ^) {6F-6>-DW-r~ΟQR Q02vjDEqL5~B|8l~Y֌2vOIͱD3lW+[FL؊9?$AÇxuuyߙWۂvǂ*3?'/ڢDj+''nj4Mn ʹ=75٥i4{e>s7|W}ỞN/nYEǸ|r行Rg|ff`T O@6<9ku;]xPv3;fR(]=FѕT=2tz=_M_;Z. DB\gOy= o]ykNe9 Sݰ{`bP99n~w{F(!,>=!u+̌[\חq6N/ѽٔE>b!.d%hCي`nR4ev!`t^8ӑ*Y϶nĚa;qJ?$š!A[>>U Z|pV{,b "mZVȠ"(3WĘ`9kS~ͽ.q" #աOZ3f33 cQIQQE[ZIfZQLTnNlUҔ<py?X@DZ)2B)CE=I:|`-#@ +Uz<:9?  6GA4ir8#N 0v@3OvNa}G o_6_ dDRTb`Q&KBOe]Tj;ZA;)o5gf\0?BVvTb]RK̏Mx 7О$#4IEi겱Q>|V :+x0㹯(ޗEGg=SJ%3.UW-:#5y \ XCWy>ÆKDʥuBc5* ȉ%){%|4n{H#kym(SϕvsF0&w'h޽Yd`hp|߶j J䝘r4ja{]"B!_0« [&C/#}rPLŤ2c .hoG)Ojjh4&f3 C"1m~Grv]`Ss7pYu / m#K5uNq5o_uR԰όy2R E!;ޙ, O]TNEN{®&F_2#qK31/ 6: 8L1FyMWLj5byTڪt~'vA%'J3Ks&nM/"%5ǚُܴ"sT>C/ERĠ\:_2zR=a[[YKո7ڡA aB9V(8 +ƪWMϯaC_1˖KM/iQTݓrj|k~9(oJA̋Ic‡5DzG ʝϕ҈vbD͝UT ''Cq./1A-aV.4s^:Lf/7 OI_.H |JoT58ѭcnݫx-1ƌ/]q/ó~gٵ{MU37?`+ռ{J8xba?S!]:\0v7qy?~K7#L7mЕiK^Ig6۸5YD Ĝx/jwNTРw ~ej5Cas{%؉i,55ogUEna[}сRa' \:>ƜF_i C~FQ -ʅYE*c\aPXd~$9fefWzp(;uyBs҄X@Lx:_C tp$* as?uXL5~~b@Yd'݅.6R(NsQ 晰*T- QҺAu˴wsLUmՍvRbo砍StP=CYlIf#&-[6ӵu|ڇ^^x9\g 蚄=i~BaO_Hq48N55L(\ F>a6\nQU8ٖtnwclG[tїk+\vl*]ET:7 ]3%E ]lz<|uzGh.+o(,oڦS\p`}Mjg#\qžzJ޾NA-U,4mtjC"?*{{"}(of"O܉_s6ԠگRe4zwOd?]L:`"Z;8Yo&&2܏[Í5K*/oeܥV;/t&`QPcxSUۛ#Xrx='7aKeD/=}M+WMwN[:yfFV>F[+qGbQP#\Hj1~ %-~'۫PN?sŅm?;-ZU5goЍރwS7 IU@lG~$ +z C>†*~ I[`>9. T&iȋ W7$qA(za zR>m-M\@bZ)u`|[-s*&;uJwdA2ep(Ozޘl՚aadjL24j*lw*( x/b(6‹ F>]?a S׆E;LV AVi9DEg՜i$OdN߱$:Gi(er]xT>;*HAlsp?W&WHa?GY_Ds%q i- 9#h.bKٰyV\mҞ2czc9\5ԠB .sh N9X]J;`]i7I*كʏ'P@z%i!i"Xيp4Tي[q>9d-XO%^Xq8hT9=8tjֿpQ֊3kp;85^QZP=&7B>zZ(>v~e0mrd "oN2lrm:luak)AK涞G8tC˫5'Qc^u0ZOIī  roȊaCL^YtމjJGVDqSP='춚jpntĺv+j?J$ۑ9X$G#z x!ǽ(#O9hUay "z=W/L3,y0@ٯq?E r@:ɞ WSJeAUgYI\%$X20hWeփ]jxs^ʼn9~d |TY jEJ@KQcm|5VNxP<Fkjɧv%[S3nTGƑ.1v9Ll%ݶ<@9J!L!X8]MAˈ]t @I;:>C5.TӶ^!2Ͱ_%y~%-<4jJG3-{4!լ cÃ= Fn: az\FMWgحEh^F0\'3_hДG*"XmN olJĜ5seۙ|}8b%GPr j@ª]Wg܂׹Ii$&oOi|M{)橦? P0 LjЎDVEνY|NA&ki}ǧGNiמ2!UWk>)ֵDpR*`Nm|m4ͽU1{d[SfZ؍RӺ4e/F篗`QлVr(.IBr4N^b¦| g>50t*B+/G"1tK6ڽզ.n[P.+IYy \ϏwlO4k. !\,RJPtĂ7 m>z"B5#wVCS?HOclQ\=tbH\LfYDIo=aPqrjXfV\Y*9<կۿHJHCwomǎm:Q$pFiB*@ʇM'LI9ģa8sDov Ȳ۶d!S~bYmp:=i,7֑W5A^.p2M!(֧icBfD'. &4Μ<@N"}jfyҨ}+G&>keP 6* ISi\}c M߭0]յ`%GX Eo\l`rxpϼؾ%vJjd$~,*ӭ>aU7mSA$IIǚd959qxz5r{L]:i~{N]j[bL¸qRwR.}mV=V\sJ滶=f)٫tsnH歷_FT=[q'>L˙;^& ׊1f]Ah?Odny9+`J}eAc^q -t  q}?zyP(ieѰx 1$z|+wZR)h"wecOP8-81ldVH|0Өڂ!f'Ӈr'-.0E#_%uGA)WezZփG'BB!'b_Q> 1ŒC4ڬL;|:BLtH.t ܌$T&dv*p95 龅)_%U]K CqḒ\NFhiM-{b_*^Gs.&|fba>1훿:7n_[{EGF#o:X'k0002 % ڇ9-G{ae']8;| ; t_ !_cp\ok%`~ko 0ߋi۶26Ũ^^zz-6繸y8"6W1PygHID􂈺PHBbZ'2f<]By' YBs %d=rYфyh% kX9`|Lrio+~-U1,`MشY=CM; GӞZngѯ,f#;2 "UOo[ $ӻSJ&va[qU>ֿEmv"_ikCMmqeFlqTFIpi階/k®8c PngP$n鉊| H:JK%; #CGDh%[Dg| 5]8kV!zv ٸ=U Pt`.g$[d]\KaݚMln)Eϫ +O_W %}qC&vq#\3+( OH4DL;ȥGQN'X1S\%2\1r5.t%oepU SťcN򃒓5w/mʃ)#j DQ~v Dkn%9 KR]I@0H5SۀK5BRn uɍKff >uԛ[aڤ9U3ޥEF:a 26kYa6//ݸd~vވA 5#=m0O]g|HJX\jak@5!vM~AioX8V {+0͏9E";){eZ%*슌rXCsiđIGTC\_w0B._lf& N.%ӽ45)M0ڄ7U74%fBΦ$RHMmgJt|sF5ic8/:4jRxN [>Mq~U"Nbp um-_d= ^|.1FC.$ Up8gj2X1xV7dCmj]S{C }vVS*qpɚ%ZȄxjC]TJt 5HZb!{Yg8GQUQUg#_ٽ ̺P"*4?&kc^YVb2?ee`.y5^zy#vh<)9K:gR]ϏdqZz Wt d8@2ׇ̍LZql;۟#=Neؾ ]듸kGB^?F&~[=S A1UaC~ Mt®i6sX?01՘Eo,N*UGE-/xe+v '+'\O6C#^  p q:֚>/pS7ˀL6!*2&DŽ\}Dݵ˞g %thg]~_T7Np,_\Y\V=M[`+Lqi95ES=S:j- MfnF˦\j}Xe#_u %rѰp :']y[m w" ղ+& _$Kq@W:78rE/ѸTrfT{S~L|:42,/oy> endobj 326 0 obj << /Length1 1751 /Length2 11547 /Length3 0 /Length 12656 /Filter /FlateDecode >> stream xڍP\۶;5H4N7'Cp N{sWW]սc1fUSj0Ý`3+?@BICʎDEiJj a!4s{I*AywC ?@ HT`'o[kI[{fpA`Odi Kw'-;PNWҿ2kt,lX~'vd-~ zmok|Au5\܁*ns-bz.^cϓYAu,rj ?Jqq `cc>wU3Wd]{O? BXhtCV.V/qoGH/=?J]oS߫uwZ97mYN43'b[Wi[/C\9؂`W ^wq}̿TR ]cy#+q|^,XA`Wk+ s(E?`1x,Ugvxm?NGbXkf+?l_{_ _3k뾰2 ;|u,nkkkڽ{Z ,-BB:~ԈdڝbDAّ"W |(^ߋ~y^x/3w;4cWEw=n}S5yBΡ uKgsxfhx|^^N*Z.9J+ѩdbÇqv FH̷ۭGGN 79G}܄ Ӏ9>)ڠ"r;WWg /3 |4Ơv]D%{aYVGu;-u~Èk7fh?Q<}j6ٯSSbJ?ڦG,B- ~-7~07x깿#PosqF7^}Z{(V`&ޗSr_ū́8Zyl*{y.btrd?+E?ee# nl5u> C23C׼ޭ? ?X[)yZ8g ɳeo t̓Hv-0d:mKaR`*;9e. Yh\OiupvR#qkn_>i{&ܶ1'-Z[tK&|]w>؞Ȣ/+Y&b{bL[BOzyCHcq5?M# : T0%O'^F- H{*? 6H,"? 픀%,Fa$KKshTccx#31EF3l2]4s-R3sT#>J=5I&vlO lp"?$k>hY\ ) [ʅEf%"U@tp|@]4J_[Bvïzqlr䊙K8n?yǕX h/1ʚz8@LG rsa/i2Ŷ< 0drM)9ze֚pFhLG?M!;;XZǥ.n5B" H8ɚN~Sq8 _)lA~.p0U"3I rFAB8|s /dxM 6[ha$W* o (N42:q*d3| :_~h.UH%!񘸨hҢ CHKry\&~[zcMOި^g 3kQW=l)V*A WnGWIGG %1/Z09C[fb'ԁ@,eٗdlW7,5sgG88S}k:nܾg&di{άOdӨB:o\.Q_:l//OfLgSw8=Wrl.Lsf|tNM UǧI_B}%5H*}YIH.>g{Zi^Kcqt)ᕠ{q8w9+T13k$q"FQd(R/t " MQl+&6 V~A;_%9no;;ӕQb;Z*ӅRT=l8 ]Wi<`12=}'iA=9bBFjEWGqQhupāʀ~,ئ%A+u!+{áݯil~Hro$׌R&}%?2Fp8]d; eP`Guz.O ׫'[7i 1E TxsZrwFXUWJ2;6|zh1g{nrTtMhگ*q_jO0hfK^ٮw!3kgj2ˢOig8Ԫ} H"ǗR4A҃?R"# Y.bWv Лl|nI12͇Rb3JJDQ3${zrw`QL$Y>6]QPn0jD;QJJ]ёwgbd.ᛟj?z7bt^#`UT~ 'Kc>\K^n>WxOSVeKճաY=ΛcO!Mek!xo+Lކj?իy\'D;/*y}i+Jc?D:N8{R>GDpKrOwe訕K\=?ywlgow=D0a-R.$#$k)>FFEY¢]3B]$%#ÒE'!P|~)y%LFѥ sSD_j%y- g2ƽfپHצЉV, fHBP!6h7djPEs6 +mp\E`=THx+-Lc.&==),g<20UXua]w0% S| x++H&d_8Lk;[}`^ ^w, [&3[=dc!3?7.zM٧BيjBE|x <ڽ)h"u]k;>JM+I .RSPei_|&2 ݯsp&n+:I/޹Ptޣ3ؖRߏI9"<5"C/aB0f/m=nU%Yt!K:EbN'Ot(_ f3Gn68%2V9ڲ.#r="q>fXC/WIQ>u/~5oDcң^ (3^sX[C li`S]d"ݕ&5J6E<唬-w]׿4x5g"EtKVIg =ZݚBB Q/S&f9=M氩7BX*=34Z)RoH~z*Gw'4{&t[lW8i!B/ *M#[G|q9^b(sŹLl`0N̠?#P[ Os|II| y\b;ʗכ\9cȈg^؆btI6֌_{ƜIsqlhSJ?8v8W#ZarÜO^P+1bр5/fa}rG]ugu:l8pTu-Ƴ\)6H-3SwW[+ZG%[^3( Ⱦ;gNd h!a=#+8-.|fZ~L i%ԥ`N87A~ӆYhX ԧImIwUiJ:/5D1> "i~GT쩻 o-U8f>|Doq$v͵>%O]Tp6(9 MoWty΀t oi=bʽ`ķg~jn y WwaDK~u© \&SVH%Egg0<$+%m%9-`s>j~s)Bա2-D OqUH_Ƈ:16?J!I{p}!_gc/>j\;}Q .aQTU 6^CAyqasڥ͍g&Î~; G_6/Ů1K \&'m"OgOh h~ xe0 챊X(7EGNhܩ D V*p/#'Ҷ( $2_ghXϩ+ N Vi*x:|g^B@.\'"gʪ5ސ&0ZhdӨbqM`y1(zཛ*w3 G1=1N+sn9@ ZcPk7NQp`>:t* v0l%[&}S\g|H}?е"%y}B|cZ&MI&;w-_#\<^?/GĹ=>{5I޲ JdZX~K2R]/N=It"3g㗜MF2d?ChIZKF>.72'.Ŕk72$z|%v.[y߱4THfDFs!+\5+z,n]?cHvōFI{ v("F}j=up?̴= p&Yc)=ԓNh܎\ypy5KhJ/$@i)la"68+Ga$}U'|zӷ53y&B[שp5YÖAUkEp)cGu*XR'GDAS}Ejv&uY/phR\WdW]3fU*UwĠ_HQ_ۗأyi:8 mX~?4'8.dDk/0敋N㽸c(,lRXFx{(Ga|z9};#(5vK C J~\B'TLt*b3Ju WD]Cۙr^fA"=R <ՠ12^8fۑHa)\'PxЁ9@5ۅGo*x٫ڃʁ)m+54|&ko(ŊzK|rk7`pȌ {CqX)rM}f -kb>ჀWVk^@DE1&iW\Y+τ"6ݧ;W_` Za1Uթe/=s ܙh$B.:rZLwB?*2-(~ ' mڗܨmDat1H6lGrsk@+<=:,>v- X,`UǮC9oYƼ5ׅ}k)Y֗ ]d6rfcK3]\ix*H">lVgDJaPU:8l^6Fs|a Lw:xe|(OgA|ΏUںuҞ WzPoq5#RNTpk)c+RvJe045da[8>͕ ﵸ%OѼS6Uqqsrbv K@/$!/mƃ˅f8~gHC]-?7*CkM}bjA >ceTq9H.Q(`D'S.;&h7QTǧ}HR.O2Cg_2pJ'•9YIZnfDaîK R  iwMYF``1&i[kۣ^v;siYO {IR(S$l oHvw`ط(RT׆DKdaK!UJj.K~+*(5x\Gy4ZL~WuT1slCc }䐬`#a{X)5P(cYD)Ajg(eV56URPU&-v8m1 [nPv^A]{WG xNVq}6oup9XAGzQ.o䉔S}US.}<=`;mjՊkW+1t{_[՗=6 8^EMF F[%K)][a[O@Bt_=B妒om>/Ai>Io,; i#zig:- 6aP 2rFMpm5+MwMV:=Lx[BZ rY~i澢xBWD5a+.' + +C4[}꬞}\ᕑu gbxS VT ᲄiAQdBxѰTJҐ[eƞFsx;TKy$Ѧj1gQ:71A Z*夣΋W3r3wL7b_#c`L3fX)7|惷u>?%&R:|ze4IF; HRBZ?O^m {㛗+ݭV(&fR&{ğY ZjFQ`a/RU6"eƉDVoU|gU$PdjOXg)+mDˡrj7"#Yfn@/,,ci30.ĞxZ-mUdZ2ҿ5GjYQtU{wh9K :~ѓRS(kmڶ|> Q/9κ\-.I􏅙{;8YK_>`B9 E%$Mg5TbV!ހuBl^#E$$5J!YJP QbJK3o/:&s̵Еg̲S$taFR.qȝxE: Tgn/Pݙ4BX;=nDOC!c4c)?PkFl>KHlJdj`xoݱ?2MxZa`!vaocc l槖p?_C> endobj 328 0 obj << /Length1 2597 /Length2 17087 /Length3 0 /Length 18583 /Filter /FlateDecode >> stream xڌvuT[׮t#Fsӽ钔I=ό5Z? Re5sGS+ #3/@LAM^]̊HAnjAxe#4qM\ Y7; ?.qwks#@BstrrGf4."@k3hf t/ j~+WW'^&&F{ = ]܁eMLjHPRsp0q;k3`tdJN@6=F/g33G{'/kK$)J0q0mhbrXۙ J )0 Af.N F*~Ӏ-`.hotp!Oh?Gl[X;[.͉I (#+ `ff,4bD \\ 2q\]܀~>V7Bda[Lb<.֞=fxuLRRrtZT ``ecpp8y8~MlbD*`;_p'g \̻>3,st˂L/ {k;؀G pߦZXhnf2&q6#;bk'\1[{ʎ W ff N@KGp0s4s/DfPrp|XikL`B? 08LI0A<&3Ib0IA&? $Ax 8ST p?: 0`5 8A?\-X#{'Q8dfv1'&o,~? Zu @їER^ӗݭC% p|}N-\:dS2p^ ]BδA:-Uy:9/M}Q1k=Řl@1'Hb*hf!9 JIXDܗn:{Hn{ _BR]3ujdlp@GAWx, ]Rbi6`ZOh"3 ď4^RT4lȖu yi7U"_2jͿQQ-a?GidpOM3kV2/ex8o2R%((ƩGAmaă;D:Q%mH@[FBE->Z?*2/"`$v" 󧨬; 3*1$%|S!%@MyQ?qĝh,%摶͟ʨu2'ihf}7L xj vy̞lvT .R țp-oKL76N|Ʉ.fMu>PxumgOoxuuU XQ }`s3ʠrr@ԝ"4 ͪ:6uwwDDA_軆nItؙ꧁iYNoF$qQZxMÁbFgfJ@ۢG~Ǝ/İO@o0b=s*#= HYjA6׊]DB/U呱 L"}n/V1.z_~ļnjCO{FB(lt(Z  Ц8N 7JuHvB_𤜜3W~?2+'-PMrNZ7U )(iB7oojWt*"qFÈ{/ r\3[~ {:W/Ff﫠Y~=Q'DRƦOFeBGq9=$ \/E3{')1vw-#}#3x2d>}܆"?g zR73[C]yu6k`XˉtoY  HmA9 rA4ki˳_=CW1mi*=&;qdcȚ<X8=\}UDvCwxu逡G07>/7 YTu3xrMQWeA'aKekQJW-蔾t1Aш}Ͳ7ٚ|"̄!(Q1Af guʥgRy oc?}%]YxwS"1jU2y~!K&E5+(7g /8#E9#0_{#82k7'~n}T$$5,h.BJݵ=B3yof?󠸓_$%]9⢒@HE0֓U,>ԒYv8݋S>@91N@Ǖ9[ =.^[kk{|:-U25yiz)Y-;܅䆆t6Zx{V,_џOicf^ WܖRO8|ܮ#iiD?ñCUjK#ټ"3up=Hm|>=Iej aDȲwyODqe%fw%85}ʭ !khx_6&:6I%QcBM et(4ɀm~pV6 a.L%?oҋ aw{S8kO.m%הmn֫GmX\l9Ջ:[!؀D0D[VzeSK:f?Yͷ/w*<2haݒVCT^Z=:aYd<7NK~ ^"PHQ_ q>ڽLU1k'2}e lͪZZnoŢn޼?%Y]Aު`uj3Mx\?涵. ѡrvyd:y*hһ+B}ZKe!l2gs&_ik2; 9Liě|wymn.p^T:HԇT$m;XJvcmt>BL#Tts˪L&nlsqVPy3z qA 19&zljd㵞hkH&漒, 2)s scaW|^c79mlaL$ѹ͸{|3N wf1C-a+gLj ^Ku4p֫d>jн<+05yǂ>bm+0'~oPznufZ"z8}tٝ+ | O,\M ˠ Bϣ,O"䊊?| Uל~5j^b&P Se"&!g-#9 }iwe5CX) `'M[-w:f { wtm-kay+ 8 S>V"2| ?(x.e߹K4 l29VZc7xnm@ful+K /_Q1Wgy5BZtO}ni#&T>IC_zQ$ =L^uyB0;CbIP(pٞJ_6Rԙڣ|td+ B'~m$ܾq}%^.p&wa{י<z|9䶤7KѓB$$RlDIen 8>*|9å+zڨ ص_wB9Ū ضv5oU5?-($8eH;̈ľ4qVN=Mc!Oi{c;%=*28BeZ4䃱k,Q|'.h!y=aǁW|,,_{ 4u=(N0'Q/iD5~qsmbi7м)+j؆0N^ݖl? XcFG,"DH=76Ae`\mHDRr42V;$(MzXR6dmnBǡu. d`ñ(ycg/I<"*u xQp=\-4ϔgd8B߽6iGLl; N2^*LEAɱb_oiPtI/yD@U)vWz5MwDcNrHqĞ.5gR{h{}WlN"W* yD^rLi Ua.)& F3ϡ3Z2*/fUn~_BdLmvv6vg68J*ԚU= Qv^?O&{"z1ɽD %q-L M@2_>\p!iUre30ɴ;G4xEԐꓽҗ$_ {*-H=ʱ}wBsK۵E__x]cmH%T0vP q(dKK,Òom:;ၱBZ0AeH>Co͇$cz4gjFd}(Z r%oo8}n d r>b+L#Bǂ@Te5{\XNIT|caE. @bGdL2$C2YH\C9ypFYzm*k88tO+3s_ ߡb1"N]9ϦIl,":yo+Ƣ3bMEd2_|b_y8%8|斧ʯ|VB߯8<)1'co W'&(.p ޾茄9;{q|j"Zxq8_@ ĜT(6>*}ӵ>8-Wm՜K{6ܳpukwpTafio | eUZ*`=c ,ͺgrr dyy|DRgbc4-|VƛbbqT'dz.ƕdC(HxʎP퇫#V~9n[n# ˙6Cϐ-mG8>#`ՊX4iQǭ*wR"8 *alQj&l8%wg `t=%rv13L=gg2KMN'όo`EH;I꼊E4*db h+@ܯ?LPHsrfV刉iS[z gyc;8r|g!ek!XpV!+j}hj_zqEqR)r5b V㸹)Tj)CS&MDn cvݺ 5QBYȕtS#={N+N]VEeFI#2u.IP Sbnz;F>r+qyp^rY@2IT5 [CmyR) ee-Y[zJ@ff ȥ6hI;<0GL`vI}҂ ZчllZ3Œ5bT l"LA Ck;҇LZF/n>h !N#Fj~Km~(Z8*jWK#'9g46oldҥn%HΫK,fRJ4jW.Qa6SbHo-+)lyAIܯA W MiȀDUsB~CIXvd~wx< wTDvtPMOר[o eb >Pq/MOf2 g!z_nnGD)Cn-)#;5߯!,ynu QxG6H j=HSyc|!z/svrx-*|Cl2zHkϝ$0ua.m{dO7ѣI.GS(k#\HNA^?M$!aΨnpU*AoWZ"9Tr|VO c*~!R dzl[[V,3x4^oQH\ӐOe]Q)x{3?cj(](KHprmv}FungZ"4KòGj7b{f=t],WOż#P7vO,шF1 &@in/O8/3%Jo?&Id*8{ZjP YL_ R枇%*9'Z7(4Q) އ7 Y𰑨Fu}!EM2|m>|&iJu=ilC6ebM@a, ?){asLg|K%1괸?X]3/Z߫F&fuaѭ0H#;'Zυ^\5MMvsV^o88e9 IT}U{$~ nz2; vuB`2g)Ws{Ր*@Mȧp#Uhq((yIG]粋_|_~)u;@_W '+޺bkZXФ<]x0j4bQK<<'fwϻ׀ym=FV٫/{8]4䚕4Tzi>0dHYL>}򺠽:)/6L'Gۅ ˶+`$ `J3rtr $1-Qbzwa!o B}_9pXL2a7:-qMϰXp`Xv>hҏq r&1=izF|6SZc{^ 9ϲ)$0,^[E%_5^<^ b%%V%~}UI|"[NeG3z =Sڲ?CX0p+ku!u{}sl'PWw^ [儸+ =Qqca{o-9%7:6#ؓPiCJKa}bs'QV&9O} 3 F{[O8D;#2 3$RkIC a\17W;+e=)}Hg.&| ҧ֯tieP~0>|^ѐ4u}v)p6)xM\BC1s:13$g_ɥ~T UYb쵀b@;#h겺G%B7u=: BN ,voٱV׶u ޑ8H=l.VO1E( QDt顢wykIi/uJxE4["~ȗ]¢w4ĵ @F/M#")G\o/ۉKwȽw?9Wă.ÉAjvrƲ)ʖxU˙czct1it8mI!`($%twB$$S ,2ϒ-W{p\a!/b䙗j3)N~%sy P,$jM˂" f춗0fb$~eTP.f3Ms^#&dD)wxVԱ H[_~yN|qaHZԇB,Q%0,PV84ߐ ~3lI?kǪA"AsW>DІw#&T[G?}iط襾Te`ЧpirӞNdwӗxBK::5Y~<|]TC#rH%h8ʔs8!7RKWUP=_{f.CJcky8}Yѐ?i:g.!Ti^H)Ƃ <"=KÞE".J~:YydG frħRmUxޙҍ+awrոL1"/&F:]A 9~B8"#jMщ=[+$X1Fd&!ĢlfMBFej+MM5hn@X_3wtzeJ  򳩅vscz-$S9!]TpD)le>A:LV #Ìb&rzbhK bA4#_RRJx3.<\M.!XlV9q֏ܿEh.WXh'uWҩ">`ЃEl,T;"/ ":xfR PK=qj`#\fQu nX 3L[a50Ť&+ /i$\PTD(;%0= pj},k+۾݈蜗傧L#2cbo9&ׄKk4+?o͍g,h(zKշzl) M3$C Y'pջ݅?՘ȿ,݈j)i ~cn-#&|ޠ\6p% P|9keƆwC8 H&T '?K"kxdQOxc$FځwX țz|ac^BԣyպcEUҼnM8KmfD>!m:M{Ƹ q L7# rKgr>!GdGb5&!v:5BuS=G}lcG:e|]3ݧH\ ToPT7\/퇘ջ}mץ!LK9犌Xla7mlV,'j[`LIZS25c0t7FBҭp6#L&TT]tRvX#E-J߷vƎ53\7g/R8o.9&afkibVq&y`^ܯ%D]'}>.՜:~7{-E;|H0iBG4߸yĚ4 ȯj737OFP89~e("|UI92AnD 2 clgO&5m횧S t2J1 \|-VxtQk3.)Hk͔>b&q%itoyUe*DzcC f&zl˓%]6dx(Z,,SczMJTYqk *7~|kW'Y~:g:<P2^oW9]f @932$3EBԊ-|Y`Q+dOc糒u.}K@>,|OxГb _Ҫ.y2 R긺-aKa6Py6w6ꓞ;Fhg:Q (ZwG{80Xn~zSI7Oe*Lgr{[0a :^>Ck\p#VڰS֞$lG)LQ{e^ 3 eR(3Ю03]Ms 'IWɁ2[ ^<$I4j4 {ߖ?onyb/~IGR}QNVm}BڱS]*'U!Eh6ُ3)W´ CY]:O$r n#I7k=C&ټX۾A# MYotp7]*]&pH q(UoNnl*&GpV+]`' }t(n) Iq B-X?ĮAgi`|yX¨1ևk@vmGq_ɚiWp%G j<[b6Hy}f'f2 Щ"K MN)\y"᳞?;X'·lN6+h#Zڃ]̂Vq܂;}bʸe̙r3<ĥ|9ß=xh|Y0+v?Ysmt âͺF&ƈΘ|vQz!1KZqtFGlsʾ"1cI) NN7ex2|z)=]ߌF'2P &cRD33RB`ԛug$秳pv{ū!~!u]o'7աKy ,ShKOXYI8oE^DᄕNS 25EX-Yi_߶w A_?`<r= Ro_سnG!p28EbSۈB.́/nsX*NЎ%ĄYݸ G/w@3n~@$i݁7:y ?\mOLÂɀ6YB fP ~s"PB:Y֙4|RCzu\t |z:IS]1ahn%Ƿu[v4u WJ<@;/ k74&Two?8[ΌT 6+8u>[$魖>pF!oв&n»5Oi工xߦ\f/0"*1Zr֓pK49OMEYO϶SGg1~ [yjs1?0<7_>Bيy:!JGMcspYDLa%!fG.uRenO)E.eƞXT-͐RluB/Βo?w*~jCFjG+tU &{җ'y`5\HJ'Np8~ :złUqM0<\ݧ8o zvwQS;By*coiB#֢Ls֤ANFU [U 3؃`Bb^el!OkH endstream endobj 329 0 obj << /Type /FontDescriptor /FontName /ZGGZKV+CMSLTT10 /Flags 4 /FontBBox [-20 -233 617 696] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle -9 /StemV 69 /XHeight 431 /CharSet (/A/B/C/D/E/F/G/H/I/L/M/N/O/P/R/S/T/U/Y/Z/a/asterisk/b/bracketleft/bracketright/c/colon/comma/d/dollar/e/eight/equal/f/five/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/numbersign/o/one/p/parenleft/parenright/period/plus/q/question/quotedbl/r/s/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) /FontFile 328 0 R >> endobj 330 0 obj << /Length1 1370 /Length2 5960 /Length3 0 /Length 6892 /Filter /FlateDecode >> stream xڍwT6R HK7 tw03 ] !-4()%!ݍ}[us]ZD%m(aH.^n @ ~nItma҇!p d `Ma @$7&ȁ=67 A8Lpo7=ߏ5+**;vA0@ 8V;:pk(H'7 wd؀R AC$w񃝡NuGފ@ ~+C )W buwo|+iӿ E(@ 6P_|ˮKiNPDz\ nex@ܒ rYm~ɌOPq@\|yohMcGކp7_w*h2#ۭ~_mͿϿ xAq&ա-gUT\˟0[z"_s}U?q)'Hќ, b92 KVA,qvAhlvS&hQ[$L\ wV\"VE7g脀. +ݺmDǸhdJGfꮫ5w*Cqd۷ޞ|Jp" be(H2(2'c](1G[iuiexE}gmF_CE)"W`|d}hF/jN~0(.5IҪSPbE,f촗oC!vv5!}Yw_,a!o.oqهW؁G[U,JLقdOhBS+B>1| 3^iAK c݇'EB/=${&Q%:(wDq"F4g]L21~by*WH 4:t8|-0B ja)-9'Vuj:0 @{<=- mE ݖJ6rJeCޖ7FcsC;۫MAU-gi@1 ELCӳВe # '%EIP?I{pC2bo7j9>B ]MbeFtsWc ?mO9uJКoD^):4$Fչݣ 9x)&UTǾi1 טmJrHƑH)z!%_B 2~Xrz]Z^|.̣8*oX!YI:4DF:ɢ85鵣v]E+ %r$s۱s(e3C$vol6 Gkч AI9*4Gv;?+$GvoK-$Y-^ayr+!@Yg)ǡ%,gAt\ZM~™ԴzgvQI0l72ʎ_9 LQ`gYS7޴Fwt~n0#7W&DX%/KRTH#P71v,3V\hj$\ۺd`8 XdM:$w*@^EWk'銳#], jL|1܋3iwcݹ7^݈n/Hn>}0Xy'A `?->P*t.WtPD:xX-dL.Z{|J Dr^x@ݻ@Pg ]h9sēSIa/ Id?A9[IP >=~fMk0#(3uVHw BGfo`3ZHڼ)͝۝R*c9kG{?LFOokw-qaKP_з fVd=џoK#3df½̭ eԜC ۂ.pjRUpY˻LXkP~+h;+ӱð<wE&\ǫ8{X͍pNX]ꛃW .s Ke6@FqO 5YH aQCs;N)v x8aN˕SdCЭuop,a2jL@GR+=_v7e2t=3h18P .Q̛dݲ:#cAN([ߦVV=>EN]ZyZL.dk*ƭٗ d:ep9xBr;֋p3V? O&-& |ga0$_/cY##Loz#< a~ɠ?IUD|GֱrwE "Y[7@f|,Lz2͜ߪP dΞ^hBOhggs$t8@6\AubTWj<,Ue_޴ͻ#p_ɂjͥ־3N*C&F:9Տދ:D-XW`/q.R.+DWzJR̾i}.zv:~P/F !-rMN *,P~ ߞ jV_ Yçb4%7h|}Z^O/=+ʊ٫O9XӕnegM^Э2KYTruÛ`T;e U"o6o)cSh4&l&"7%"a wã:mL*yloIkew͚XU@fù))o,].` gmc;uM) _0v! KҜ%G Z\ݯ7GJL|pu+!y]>KR,IyCUrUMӐm3[˲cV-CRJ V>Ԋ Dy>mtU >CH:\wX}s-#5{(^c+)RE;}two$P$$Zڶ膔E0Zq? 2⦓L8uRI1mg21oL)˴R|îrC+`2?,KDIlK-9.hq,ܩ}fjs˨{sS<*{۟:#AZ؏DrZ+nt$% 0Pe+4M+?qbdJѦhi#IXԹ> &CP8vI!Cu3\CVݷ.У&%B]ϓ'>‚^ &sFt':z\͵srKO̺o(J|m=I!Jt.e6 n"V'Gq*OR{8O`̚AYrVD0EW1lL'KVT,IJDlεQNx3etr 8z ;I9kyW++mC\+iy63b6 = ]졯{xlPǽ l+Kz|,G^c ԟ2.j8$hF$\8! d)/de[ o r! mp Ű\2PfŸ4,*8F|Y_WmdL|;+fVll]Wcb$*F/jdZ%̄j,*eHFoTl֙.6ƃ<@;zB~tPV A>/zMY@i.[>wW/ҳ+QȾ: 3𨟿$r bj`Dz0Tq_~0=T$r ޳7 }?@Li eb % :{&22JG{j:&_Q:>/` 5uP]̰q>`}ì֊*Hm#PjV;?M2/&~N6fXHJctFCMʻ,n(ZRD^H3_hI(NY3sa^=nq0FphOLZIL&5Rpv]3S+7a/~Mg%S?Q]);"J^(SJȺT0V HH}<ϗ4Mg@Z/:.{,n5ܘU ?4\0Pb{2# G::6 >[dbAN;zv#&]zU>ص> '^ HDJ~F`7 Ҫ!gC?ʏ׺B7ǭFLZ Go`2*NZ[*&O4J_3֢pؖp]cF+ ajƼcuXameđMAl]5v]2I?T6WTa!+kY7lH "|~1-fv֫̀.b9(&#> endobj 332 0 obj << /Length1 1385 /Length2 5961 /Length3 0 /Length 6893 /Filter /FlateDecode >> stream xڍTuXIHO$6fñ9BZA;iDDAIIAJnз~dz纮>χ!=Bbx| 0 @66#8'`3(`0ʧ\AQHE$ P BK p{6PQ>h_@N(,..;(Cá$Pq\uB@C*qqCex^pC{쁿@\`/`90^4 x@0U^ku]a?Zxܟٿ !P(#p Ň!H_@u+!@y} j?7tw>w8ז\2^CbSaЫ"Q^H?ik{W~c$'A Hs¼N~W{c]Q@U`p1h??`0`p$Wn po芄` 7+٣/_GP[S+(X^Q0W@Łb +ANHPNꯡ=dB0 ? WS/ Ϥ@Fp_ '+=hTo)+S@T!tD}pw7^:A?ƿ$#az(w  WJgЇW+fdH(E4+K_ @~>$ sZB~ݪ P4Jf/_oM`0(`r u m<]"N=~ ;Ph}өjCp iE#4R;gQ(h]g0~6B '@&kn;~ў7\/CyM3U֨2oLn ]_:e8R5LG`9c%1?¿ѵ '8S9u}6YwWqׄi쁵RT?mO?c5~;3Y ,Ÿ/+t<-yT(ÇibK xWŚe-lx٢ mequpu}  t};dZ[0Nm۵RзqNO^2PJmJԧޯק{3];l{-<$aO@g6jz.YA Pbە!]hWW.D`Se "&B-Y7 ˬ:|,?~[bqA'ld yi;BnV<1bmp XDg_4X\?)xTM@!&>S U2TKx.'n*.jDHUT1=yzm][־_c=.4$y 'RUHjNܙJY&-P@!i4AA'=paVhzJ˔xWTtF6wrl|#qLhnRٜ躰Iyq -Y[\ ! u%dz˽] "b̧^MӸ K!Htqgw3%K3L@zSYPMB^DsGpLYC:4#DeJE%KOTq 7:wx^2]|$މLrqzn YqB έ7Rig.\cP]Hb(נW45{>Ln!;N yl9'˺5řL &1XgWqc3,xgO !3[NE bDOiaƤ)~r~+v{zkLNfJ%vBSu%u0chd \`vPr}')~֑e6L袂 WF#eu|`'"xtzPp"3lTd^v }tb{b_cۖ/gэ!~hT@zo>TWQ8uC2%TlEI^R<6咎–?.] L,ܓ,~deGS2Ikg Na׈u"oHỌ83ZX9Ckn'~ `,g0#&Y9st{ŪDQBvLekxn>V3]8樃iZ}s 9mK3hSSӍ'n܏RoP<>4۽gE=kQb+cCv >IOJZje Сsqo Y4=H_.`[FkE|י8\\1@tay`۹{!hR-8oZa|ǣ:Qw܊:XL+&yG͵R3l ^[+7ޝKMV,# *ួqv: س-o&:;߯s UW6ͦ\hfH/]D&-zmώ(r$qiKC$.tX+_M^ɅvE}⭜V3kvb̺.6d$9f;wFo}EGfJ,?$xVZH./Մ."N$6h$܅68cM* ҁ.gmULZ -r8%M)=zk`cϾ=PLe]nMtVY-Uɭc6\V/V֝.fg9:y6F<_@CN)&CCiumr$~ lSA~ "b6[2N4#kMO~'eE:ӵlınu];bl( ^IJ\KgH^*;u菉Xxws/YG [a'3=Ƨ'_^y&u gH;1} "EaC/79m[23ueaxBZϨ/ܧnԕX[ :B-3 3h΍o)SOiE_^|(-\n3b_'>wMtĩpl\kLeS*z>!!"K5Mޢ2xDc̰y慯&'yOTW,/0uic^/W 4FA3+ft$o=Qj OҰ&\S;]Z w`ePYcWU {46CVUå.?T lLͨsrx;< I>z]Bw;41)l_sx($XmD aM1.g|asn'D|Ne›_S»0>Q{W&Oū԰x?GmI4w.8xP>?%. ?R&"(|SEFQkFejōGppk&2[Ѱq "Tjح 5rdҠ|> endobj 334 0 obj << /Length1 1381 /Length2 5936 /Length3 0 /Length 6878 /Filter /FlateDecode >> stream xڍwX>!C 0J;G+1ƀQ҈ Ғ]M8q<{:|E'o h>A~$PQ VA a~HnG;v؍a(w8!E ؔ h Rjx8%$A $*A<@m~s+"]}Pp{4_@N(PPBBw8PC!6sTB`$C+*) qqGex^pCyl@\``:vh/ Pば@PNgDp`tq |{UG{y/ xB w>ݡ(+ڝkH_i0UDhw(>{iGUw+ ˜ah(D܀0o>N_fHWf?Ce ecmECf۫IDA@APLTDzG: _Fճ4S$\Ab rCG Qs?Sw鿲dT<8D? OhA jC0[{$Z aazp4a78g8tz`B@adu113č\a%3Tc$+0IڰHl$~e-c^( U444fhQ3Ho-kl: Epd/>Y~Ϊ)p H*!1E{7 M,$rxEvf:*ŃM۶wc/ _sąΒ|5S5Kmu~ƌ=t` M͉4D zTs8a.GÄO!tHxd)B3gNOkJijH'&lF 嫡 /ҙ-X-?@@ 0$ ~LJˀ_XN)\JB훗,ݥy%Zb`6 _K T@%׳YFFf^9a?Es4RrJ]|0,~gyDpL XmgvW5jQ:&^QPO鄲wmN~ԧ),xϤˬ>JۨGZMTxطWEŢ7kh"Ljp_=xxI Ȫ]&e.~@ieI^8MƔ&LK>a+SIiheGO蛐jAvMOM1Q7aͬr8#o 58)b²83[] b$ʶ y9u}iy]3Pa)$JeXطqwdP'[M2/+KB)L^P",euPZO^煩OwayzIvb`oq_uߨOZ$($eJyj8%3pQXc6~v ټEh6 &ZsE)5_LG}*4>/Z 7Zdpuze1Mُw'oUn>).ZEв,%m=I@Hϊ7 Yd(O(w QOMO[Ac]7=|}<(dDSP7WUJ1@h7]$zT#wiT/Mpj޶oy#wTDiT$?L 󢂚y]a=2;ѧJԍU9Օ+L[@by g1V@#Ƀ2S%Jo,YgڭRrjvLE(aKL]7=[Fl.D4qÉ!P2QvMVg ~2yl=W=CH¸KkT`Z*akguDibA̋F-_83XXNHo6߭Y|Wdi.⑒RDcQ*PkIDU6 z5Sij.zjji_s~{qg~*qaA\>msy㵠 0ᚄķecl8ʃW(U2,8>XK'1~8sȸCRE꣠Wc @O"1Ss1jc5a R O+捖I +.m21)J}u{]4+fKnp}6(aNE,w2FSNvׂ/srX9Uf_hn0]|;qQ=]9}{]ijA5ys-́k0q93ȝ穂,A/8<³VdĴ2`5~-ާJ?X>dP$D q+M--LhY2)H- :W[9b Ӓ {\l~:sd~+£O^AuHAF#y=$ fzs2lWQo64.=Un&3GoUh, V.۷]dxmed4iO<ܩAMz+^^ |Ѫ4W7eu1;<2<&݌9|şp 3U{Vⷌ'RxIkxfZ<56=I!*k }84'=UcX"L<"-n Y[#3ɗz3' hAɳn$/k4eΪ6.IgE@ԺTKš~~8 0E-2X?Nyw[hea%3ntpոΏm\PE)kwlxWMEэPE9SBq+'F 'T}ȳdH.kq^Ys vByÌ6%qd>imܵBؽίVRG ,4w(Kd1$Tv|#cpR7',d,r 'gLO4\xžLyZʩIe  nGb&j!.z}ƛU(,h_--$0fDfocfaY)kMQ>JһOAɚ:/&iTGdSUn (6HVi>EkD {$UpYLgӄMȥ^;cc:ptA؍Kw/dݲ4C*Y͓ 󪓱TFz3 V26m*c0O➒@R'OH1} EVv_>n!,bUm͠0!ҾSksKSiRۀ/f dо5EFh@m7;ŰݼB_fIOAZ#|̈fY|$J<ߙa`6HV$els|2|g)mvMVˋ 2(ARIǟ ^*epm.;dB?_X^?㪍 QЦϹfJm ` FДM#On>ۢs?8Rng/'WI/I cv7;?7 /ް8F$Yn=Ͳ)="14\xt}ON~)?Sm&ueyR ̍R !\W4jZ97_IEN[ J~ -i|onQLYgCI|ѳBcŸ7X)9;VthvUfnUohMGUe5#/WmOr2 㟅h $i 'x;!ZK.l(ΰL\wNWi6ξ[!GS<ѐdG|E,[%Q:;GxjK]tх'w}6RY?/Rx~8Ǣ9JAdfv,ٽk@*'k40  * &o6EjLٶ#1hZabjc/ 7T3v5}L̅BR x2`0RPv%$,cםk[BRN Eh|YB@[xBHH{]yl.w2*mz\Kþ&ϭE? =eBUPz9u;D'm:/o-gbZ-8rۨbb?M<_ƖJ?Zg >:D尢hS`GbDMAb&*K˓4TKt*]]dXф5nߧ"R:ZZXDCZܔk}fkWJڼ1_ʎi=S$AJK7 /OoP'np◛z!_ukzÁ7_! Տ,Y,̈́!o(fytwt O_2Q } . -JY 5KfQ&Lwa!qe$.hlb7v٦';IjYàw)?$e3)vNKVw{RӗfS[OB-F&'_2?o472p8*r K:ؖ0G`2%itq` F:qE}N!~oZ,umо낵 {S׾ $H@dr"fK2HNWS SHEUKJ鿀f}urDv:V9 rny.[gD]| endstream endobj 335 0 obj << /Type /FontDescriptor /FontName /JEVMCT+CMSSI10 /Flags 4 /FontBBox [-97 -250 1077 759] /Ascent 694 /CapHeight 694 /Descent -194 /ItalicAngle -12 /StemV 80 /XHeight 444 /CharSet (/R) /FontFile 334 0 R >> endobj 336 0 obj << /Length1 2143 /Length2 17040 /Length3 0 /Length 18329 /Filter /FlateDecode >> stream xڌPk l5][pwww.-̙Uwu<.ILL LY)f&+ 9%?v8r5S'gK{;0DL 6QCQ `f`abމ jjie|3u#wp4~#ʘ_![S'KcC;! @?)x-@nFF777C[g{'s~j:%dljjK2@*;̀nNG:@YJ `j7Yo߇`f`oG_vv3KS H03hhlojhichAWq!Es6vt:38[4,fg"bokkjt?QK'Ss`ZٻyYڙ%ŁQTJߜ) 0u@_N|f2L},L?༜ ]M@'S:13L,#SsK;??̦fwth3}3t?&_W(.Jou ۻY,Lff6ͣ`h>+egfݏsOˮ/5sL)Ϡ03a< 7eۑͿT6f|L c d?vRM^]YSK~lD310mtt75Q[=5U7K;S{g˿0QLLdoc_0tr2bJS 30wb9BF?0A\FLF?( 6?裞`>q~TPXJG?#G?k"E6 _[??6?cMmM -Ah0lO*)v`|,?Y~HghC?R՚?Gjp>~lL̀5ܜR_!hjbd.?Ϧ?~wvGG߹g]>X-/[?V O!^G¨*a͋\;vRddɍ\ifK=t,r եejgbuѬ4v+8KMx?q,K\PaqMxƀ6 Ɋ!Q)\#4;)E|-8+Pw( J)v m Q/`|W 9*=8yLYOԵ^y@ VPMhqkrJ'+;eioY:8,|Yp-CLtsRlZh:z"1hdS%pᮟRȏhhEI`j~{$<9 r3@|o1 .̔gvJƖaxSsܡ>l~H}52OE8懍>mA/\)ٻLp) \giKז]P:^0ϗ3dK5cf"|&s 'yՍr^l D|Q-s#K#%NMd京%xt7db7/kӸ,_1p._,Bi^@4q>SViP*MGR1{ 8O .+zs۲]%ƛ*^À!gv0/_h4CA.m;$gPzp2R@,Bi] C:!Gd39^?ᑈJ;1oTʦEE9ӅJhmhՊ7ƫ{ YV7-jK֋^ȴRZ2*y$oD% 2L%Y.gơ804| Y0y_XŅO㬳cfnfLt98+و ^ r RN}6VG(ߔ,ZAH|,ۺl%)#X`jW'mYUG;w"> 'R}Q:eu~Ai,ۘ]?Ox/4B8!IՌ,oem%'z)&j0چ#_<%b]20kV5 )ͩ1~sTZ gi&:It$xj,@3 =K+7q'St9s˳nn-A;r~5u:˂~4кBD_żHtؓKB~㥆Arwo8%.`Ֆ`.J2ِ (sl1c (6{o]F\?7~)83Im] 1ǜq䦉xE)`₇ 'LgF_jE VEZl)Z3]|EY&n&AӨWW#nJr un6_#-`bکz=gjoDV*L_{ݐ`7lt̺Vawa(>*f4MZkܷЛhqGUvYi[S(>۟O?_QE ^}F B*rւ=,<MMMo-#3ql_)XNsڛ'޺d&Ǻuλ' o\&޷eC Jf}L4x`Z8w: o5-6;e='22"LOgq(33CU F1 ;A^gt>)ףQGM4-. oz&DJJD9g0E ]i|IRk^Oi'X\̐՚>Q@Ne~yLL=9 }PXEL2X]N2H5Trb.uzyF lB6n+1DK.滐ͅI7.DI6#Kw_`#|%P]~&X)2^A- 몂e7$y' \БLsZjm6ƾtn6G*-HXOo{gz){E?p8"Db<?Af}G.Q)? * 6Mڙhc2sĻvOCr“@ 3IICRU(B-vd6lX'N(ӔLy@z%2SOྩxM5mt{s[g6d[ mϱ_gg>7Ó r3{HzΪJ JW29ܬR٢-Ouxc>ϡ;ýߒdlOp[hz@w/.4F8\/r;#sU>+M2i`>?2z?5hdύcu [P *OGWvX+pᖵ T|쫀K36lvIw oF-D,.QCd۠$ j=40g^/W֌~ƍSY*i+~n[-G6{c&k{`9%lqFҶOf(~۸Pi:ۚ?^R^L_U|y ˜&yI.9 c맏@ut=KljEzy@2FE;nrz7_(V ۠^x|^4˲ԝB^&S*Wg'Uv#1Ԣw<ƏSN>-pJo z[OoϦ2O/Зۮ 9S:%ΞȏϚـQlƨ=bծgi}64ѧJGD^P,\m~ 7W9$Ʌq2QGgӞ popNO KeoGŝ~5ؚX`; @#޴ϾƯՀ^˾ D‡Փor[dw1 9w4aH0s25'h@GᯞM'k)_= Ua%2mellP.VK- ?҉oxI!yHC2"&6C]0tL[H%;A]G1ĩGijKMnݓ.}|ݑŐs]9o4qDFC -Cd53ުӏ}҉'-_Te.`)?e.ʾD7Ӽؔ4R_a)^51Yh7a L4MN{ZAV:S\]LS-^%)akfC(}L[&.VU!_9DutxV n0 xIn6xd+$7/}59-*U\1[Wc݂RVb )KNj:[gEu9݁#i dX0EU {,@`TyW6{/ŗuoN)s!CD-o,8*itOR-ubǐ_:)ڵ`~V+:sz,,36Nm]H47bLBa1xYhO3'Q /#Bij#ea @X ]HMÅfP} 1- ?fIS'I.T"?̍B@KzXA2zeEedY sC/^/Iވ`TXPM $V~k>"6g#eaP23 ʱ@ eҶK%ɦnU! ,КkI1Oڠ1xY,P nq}C-3/&һ6s<b7 -Ǹ|<<=p7My,)S0.> `+JdiTԨ`,JoيW毁 ixFMk`g6o7>E<2[Z H~qq_'rjhɞr [4VѶ\^ۄwIg9Qi~H'+r" ` ӗI8a`UZhBZɶb?wy\]:)ٙ8 ofnF/Fĝ%EW2~2lQfx0?v)zlC9WcU-,x髻NT: ezY!T)t'߷=PVDLYsC$Y+sovAV^JLJI,g̶H0}h Z1뱏keM&h|'|&4y8_GuBIXn&o5͖3Lr=||ii"dbWi$9r+R@\"8Wm4((AIҴTIP}OAF&^&^õe K<#?ި#kǰ]}.,[bP\}}JߥzݟOUUS:0K?,Pӿ$f2 ?緅?ek`.D?өM$V)lm+Tr3L܌ ¸Cr: B7q#~5> TP#|; W\C+˾=j~]pv p0)Ofl_#˻ 3I)/_c@2WTQD|+UmdbN|)-./D!"NZb#:QuN &<5\}~ܮTZ wJ߱C,v'FY]3ƭ&〄Ei.Қ@F܏7b(/@_jH|CBf]5&[i zt͈< KުrL`j MZQVJ^Amq~:_81m>̏ԷNX">,b'-G7LƼ^G/υ!rS\Y>I NE9<"bHȃ* N1eRsGnl%SU& %-QI){U_ }!nZB2GO0.yྴg\1aX2t6H7->ms6L/Dhhk">B5tt#E 8/k!+ñT/3m, BJqx9j޺'9_[>IG=;Pr{VyFZ8GP- v@hK1M]STqs ֜f#hDnIٷL k[ً3IEzG6]"`Kձ8Oڑ!c|yZ˸ A=V E$F&琈.œ1N,$' y")H[wcgٌj9yha-'dp! T+ű! 54Ne:*V `ڥ}' Pd-fq%G9[#9iL4^xRmQ?i!Rs-D0=t5Mte@-3Yd!lģuJKz=v!}y7|d/]PHg-}-V!w4t; YI"JH|CJOWN8Ico_.K`!Tϼ7FúU}0WPel=.klڣ|YxSTuDUTCbJ7Qlt΢R>{݋\RB- Xuog3G,NQk@>_![LA2d,RC*dxՀpPP(8tt ѣ2^9Bԏo~CxBpa&nVGVykޓo@~yfgm~V0E.۬{nqzO7Sr"vug][Z8JA\%XI9ʪN) lAŽG"AC~km5mpb+BXF6qX|#L .6szmo> ƿ|)3ݼ=nj>LfR"܋bE(HV` ȾHeUԥ|iZX6R b,6=,W$:PolKnĈuBF ٛ"1(85d]qq#~@U&}d9w^&?&?~OWG< ]HKB"{fw 5jwa'>yh=ع^ܨmN_v䜚|PgjLd{(lv!KD{񌬙i={:|hNq[[)1n՘oVFA)ɥI/"xo rNic}Nr`wfoۮ͗>"0Ga~FSHvl{fV:CեZ4H(%ZG:ZU#bb1~x*ؔx+6P$oP n5h ±:ڛ搌 aƉE<}꤁CeEIuV 7]X! 2܄:JXt!ӨrHpLAv֕W84dSСiW #鞟4Rb=nŹ!:<󹤶͢jZVփ`V֊2_)#q(Zqjcq 0c2[9b0Gc0$Dn~K}9&<66WysLx8¤'OglZ{-3*D(-%2.!Y]P~bAM;NO)Hg߼ /.@^A/kPy*ѾlBꋰ#S]E3 \g݄&^vfOA9q+eoE\18j$r8H[ܘE9>i? } QimEM؉Xmi{ CCu񹛱hT;ƶj r$D5 67Ѝxv{@yo"^Z$ f $65Oϧh׺ZO8CF/z:O:\d 陟m"gP+ҫi-!*#Ѐ)F):ew.Z!R9%vnWd;%A4'PUU+ ZqQ]i4G5<.K71 5씜`?FOZ>NL;.BCX`v9Y ]#݁b+ h3k.tru )0RhM ,rA1e.ƫ SstEno^?UB+zǨdqT+ PJ8sESi= F 26T6ZҘ@OU˜)W:v K0h_RVm=iWm.I @9!tNXI̻5+^@c{Ÿ}LEw<||.D߁MR$zSGw%Hˆ?F.f6֥ZT8%rr0"MbʊO=8~7?I|H)Y#'N̗s P`i^16|Cdp"-+#j9$enJ g ETS#DJO77rc(5MwziZǏJS\Njɧ\@HhEfm7, By r]kZV6j-rEU ]we>${yL|krZQF$X?cNB!dQc@ȱ&&4%O7\Ky_ڿտq +fXRW p*_2 B"}z="}47= >LJsH58β&٭J*JwX<n t@kYlHU2UXn'+zY(?J]"E)sP~}uߤjQ>UB&,Ҏ#ɢ A ,TzGp=¹v :8&֞xaW`ߌap'3l̈ƨ-E,z"߬aȻ-0G1P~!r& zPY"6;t0'E]*Ľyf 02G_s]mT:!C7Ӗ} `EC4BVeOR\se۹TKyT$&*}N<"f꺗t22gkz? r ^QС=J!O[K&xE~1H3'fFyIbS6jQfb#M觰i<\Ҧ7L)^+6G޷|1olq;ĩVq㪥[uwZb8 }8v(p.q& k粛6❟߫wd\2ϱ5*v+_x;XH{,s$ިm&2qS:`uGjHU(Bs1ͣE5j8"i$W5=~oh1VEB9L_Ƕ*2QDˍ,Ul֊pWYy] c1:Omz^ʿFVOω5*.9Nq$2@Ke'}b!{^Bz,";$"D@c,U@ר|NruhQ ](J ǯmmo'EWdY2TNE>{y~LzDCyrcU][9-&V\KilN6瘐'ŭ($aa}&Rh+2ɫJ(KVӨ40ʥfIf{T_[gVn[q^ׯ"sj.N_ >wapŸk(*,R:ʵȶł|·6I~5 JMA/tcx|?Q˗ ʶ53hh;@;PetR=(0Ry,8٩R>6)|`?V¦^t~L^zy@6(C {Be\Z`Tz=Iv)mGҌeljr`Bhо}3k ӔeCluL5gLF%IoLxiRtO&{Z̥3Ř[ "JQg+Mi{s*"HUG#LGd+%tG>'Wↇ"1[ 8s<Bb)Ͽy꒨UcC;.-r8,ճn3i)cfjޕGhdž) Ss q!X+X=~rw?s}+%7j)YdR&ga &a.wk]&k?Sm1Hb诧\F-VuYBJ/KLyTy̡sA7Ɔr@4⺵*LPGtC(eg,W#{FTnfIRRҞ3UTyҝ,/k)1{*A):t=2Tsw2^Y+ VeXxe`WcxR\_X~XP%"YQkwS&ݜ]7<in!^ҟp5];J+q5`iÀd(Xaގ:[L1e2nUFg\"S>&47 ?EN)q\p2c=$;r:Y)QbR/&2!UKyj"_DA@s%ɑ[α- 4`Ǐ]ӣgHzb4Mt. TpۍA!V1)n0uTv$ YuշvlPYHlMCX$ 2W%CIrs WKe#㹼\)UG\;ڙ^%l{˻FLW=xዸ h1M%"j+{*xJs/xwJyASO@\DOxٕ0LVAcKVuɦɀ d$OꯪJwd87PS ,>D5)0lh/ՠyI҉Ȼ81;N2*N`Fs˨#vƋm["<[Z9>Vs$kA*bcSP~ /r,gn/P-W 8< k8>w~#5!TiԩĊWΦN̥z4mDivh׶McOzS]yKo*[ j% zy *c|0v endstream endobj 337 0 obj << /Type /FontDescriptor /FontName /CWEZXU+CMTI10 /Flags 4 /FontBBox [-35 -250 1124 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 68 /XHeight 431 /CharSet (/A/C/D/E/F/G/I/J/K/L/M/P/R/S/U/a/c/colon/comma/d/e/emdash/f/ff/fl/g/h/hyphen/i/k/l/m/n/o/p/parenleft/parenright/period/q/quotedblright/r/s/t/two/u/v/w/x/y/zero) /FontFile 336 0 R >> endobj 338 0 obj << /Length1 2396 /Length2 16924 /Length3 0 /Length 18335 /Filter /FlateDecode >> stream xڌP cK{[) ݽ@q)Nq;}̽$gwP)2%lmYXXY,,L,,lj '+@G N`C' @ `ccaցdg(ڹ;̝y@cL `f j t ́ƆVU[cB;9132Z;2: 2\AN#hd5Ҙ(j (TmM\  d q8ۘUi9?r1`++ogCcc[k;Cwd(J1991 mL24r S7H* SɑdWY佭5/~@@cpݙ9\K"S_e81ۀ읁~̀NNv6t36g+o%_bp ޞvvSp@o)h898=T/B`eF@3 `1?| 7. xX,0[+1*?%ux2r.^.FQ2OiS[Ȃ_.L?A X h~GNcaߌu/# g+41Zϭxm`M5Y\y j jcfo#A 7X=lA,FV/%p* xw7_K0tp0tG`O''&@dcv: u\fѿDA\f߈70q%~#oTx̊"o`V̪Y7T4~#p>O_ Χ+2:28o FƖ@#+`>"Np0c[+qW^9`6YZY:af0䙁/3x~{mLGԶ<9 {o7Ov.YwdN xЃMl?jp1v`v?=.0k;dkG8p4\or!;oC;Z:wNd4\mpp7{x&tOZq;?́@71✭1EmP](+4f -C \mUFÍhP/8͵aK=\hkrۣד~v$Dh]?["F5g{/ K.{g<;>Iҟ!s;U\O??/5ʜ#ub$8sCȞx%G>b/YgX)WcsƧ#";YRyMp> bmkOWNaWr»_یmU;ZCyz5[%NIsa4Z`CF0$pg ݽiR)2&q9&{ۣ_hΌPiO0fF'3з)Y(B+BSyiK@v` 7?P|Pwd*'Jco//xvMa 8bOCUf*_bT_Qc K7uG%,UIՙYpv\Z_n>D:Fv,?9/Q[wgZ׷)9 &񨜥)҆Ow1CMtnͳ8;ڕXBGLۘv,Dv3:ͽ&&UDaVeg3n>-Si.F|$i;{#X9-#άO"\Mb )Q]TTB`^,5L Ѫڱֺw.#mf3VLh#7B5N#R*ufYUۗLv]C_?g_F4el-CQ! DPrοFR:z CCڌIroq`yze/=acw!H5gsr*lDb>@}yRb65I|"GJT.+ZO*_32/zq>e=~c5se`.nf)X`h6i=?R-@u3LWƢmcvk/֕)nt([Z/4#ǽ/z\ȄS#.G9" טײU`:5χ):o[ ?ָcO0=':EٰI!(S) 75&9W2 Egs4=VӍqHC ? d+ PTWoݪ/|ݕwC"|4; С/bHj!I8 ? 1L]*42qtEBS H i*aSeQe73ו<#T%TPD>f 3~ъw+doͭ6aţUaiBXAEftC iړr] ^ }5X7ۋ#]f#՘1}-cfn?f~@]BbB#SڲsS5U^|F Ҁ3OhL7MeSiM$l;&g)"*dӊhhŞ @1z㭂ͭN8{15sPW=f3&PLp>t}_06Z;QXvw# '޶~G4_N=E &巈 HY #h^%~,<.vdCj=-ZĒi\Zr  PkH]/CFpK2C\WE*=$`jV $7eɺ^<rgp2O=X(n_bT2LyI˅ΙL%ğ\5SmYZ6x›=1@Z{QC4˟ 'ry(tĭ~d; +ԦYu2usn@ \2gXz%TnHwITޗ5 M[^Drc"@&?Qҕu|ۗmB#]!q$!8ӓ9}"3z+(^g*ar ];^ĥ7vzrƻKCԡx&fɨ@r2seDMkCP7<@#VWc)0S#7%L# M~*W~W&wt.lNC5,ffx% % I^?Zңu_S`b͵LQ~fpUsV޳m[<&n)RcaJ誊f]E4yĉ |w9, ;槤1pނ* ͐H>(e$=1>4Sr"ku#1[Z8,V+0:z˗m4w$q)[n̂"Ti1`o9mÇ#$h Ƈ`# .kXoAn+?1wQ`1bcZYUTM\AmkSV\O9JBCSЛTt;K03ʒJ0gC<- b< LY`gUz%[.iÍaSC&meSHCujTy@"={sXiwc95@ߛ:.1'=qc[ZcϘBospI;4A +Ӈ㜕r\x^8`l Zq19wMa4-r_ե(> Ýa ٔ0c[fmj.h~^5u6'~ˡQCᴱπ?KnMﷻ1- dHRiB#=1M*XOo]o382AEk-t=m(+LVnVUw"!!ZG֬3CƹřԌtg[|#4Os` 9Tcq j'6PPچ$GkPuaxiLJɽ 6Q3dbw_\K BBG./0 K?i Mg *DŽ_r$F3= Uf6pJv#yc ?!5I*S#$qU8h( 5PjfƜ֖[0u<0&|aKٿ 4n}Chʩ()%HVS r; y i\1,^i j4F͓# vBRd;D B "&=.UXuP@*MƂJ WDzZqLj>E<鐷Jj2=o|2/4efz|ܔa?nk?hI kN6m&I^J[FoeAI v茟N$a9#$!xyڜA;cd\u{Pԝ"EB<֮w{yHlhsh-I lgbQfv+ ;Vq ]k.^/L?[)uE$bOћ3(+́z46 ;Z=gC>c77wv*A֌"#35yT}W}\ I+$9giHkIQywoɃ aaZ7_^7dxĆ; lI&pf\dTXtJ/?eيCm̝&" he?|_oKҹ.`-n+T\ONº_t8^.݈>$&yvcאKVŊ«t{bowց1`%Vqx [<1(> jt*\A]evMK1{.dOWyᕉ,?UW@ pFzԝy$@XJQ)*.(3(}j.C*U::] `,zјM {YB$D{BE9H )%mXXLޒSǶvQIv]Ӝhܵc^ñ0l-3!=(q&a0f;b}66tɃ[f>-/Ekz\[ZA P## qn•µ Jv dŪI̋g1y.&vuߖ?M7J,O64MޱRm&t5#`S'F?+~0g+=hNl02JWMA"2%ZU>^3B0yttWߍ"7 mh:kۚ`Wr#uC0tQ"v ő}kvrÛljM>cRS6>cц]|qDyfB =G"ovl3| 9~fk莮3P8ݔŲ05z}1zU& rtܼ31w*8qep2wv<(1u8}t.WwnjP t/RX|&ŬU,u~1sݭ۪A5I38=t+cO@8zL20.Rs2].arFM@MDfM)9<%ǝ@[Qgv27Hj COD@ƕ & NOF*%k.boq#u*9 ?]:ė)YxB(Ԋؖ:Mǟo{w|&D|N%ں-_F(Y< >%rZL4ګƆ]ђ Imƻcdab< WI>()Ҙ"]RJ "NЫ,RJwPNk.uv\,4XoEtVm=mb@_[ ɿ=IEw-mِz3ujPi˩ܴMl[ewD]E-frY, 'M:?Yxχyl 3{AC 3~df~!c6KI8suk8jM4xEM5۵(z GM&r9j\)O d[Ve w*}.cRd6J:zٷ,{_~+H䉖6D*aHT&OcLuZm1NΦe"֏k1оɎz9'jP0yaSGV .-[2sୟC=^Dl7bD^v]埇fW;Ф2"5^'*J?47&"Zwcn0掜cl=#)c C5ٿBL~JQJaP9e bՕ^*R+XұW{0K SƉǛ!ZQ3SCvC'#iyw{Ch?蓠Y`Ds:OD0%fe:Q˵r_'R^})~1(>>$}-;('O?$xL4FFum7Mæ7{c#jOxUvt|I Q19kE=s9}YQPh='K2lu<uDjVQVZ"-wt#=r[fhɑ`u)7fQ\kؽIqu]\s{Й A$2[9V&Q % 5R۾lR@rX?\7!LoHBS<(6.DT>>^zZc1WYp1?vmz/c~#1e幛Qđ| RƀL L,l&~JI VdPOۃ7{4=sIW\mxt&&eLnPɶKaR|b/v_رVDM+uvpה#E9p{=iQV] q/r H,ɘE/4!_^F*caE\Q+ >$uQyaRVN9/_8J1؁%:H@%'J#qMh\SϑY/+xSIYm.Z]bgQޤe0.74ȾF^-hkcV-=AY!DtnvX^169F.YT`N!/F#Ն2 B{i uXhP\^cS}y`U+d2G ƞ5{م9JӺpX||o!D ql]lWM1P >\adqpax5}/QR6lPDz RY>R:#WLS~>>8$A^`Y.г{w (Dclҟ+O ρӏN=gnu,iQL(4QD!3qe\kR7hrDlc\֛4 e횘z)=iQ~Sf&m-g5&>Xِ2p>lך|igTVHc#j蚈Ba%‚z4FC!2kͰd}}wqG:ͪ"AOYu+gC#w@YvO  t.{ȵ'*}d l|h[?o4`©xHdO?Lu z@ 1R-OC9( TH9?w{^i o~φOȥϊqKlQS>Up!0.G0KK(}3yls mh K*d5[ ֚7%hKk߅KMGK!Ltj;gb3ExLrw4*o6$ '\ ٲ'g $vr3θŪxW]̮Vx_Pv.P؝{E:uG m|vAPYS@m$Z*$[:4ogI܁`uR\S XnDi \ӵ\o _X wh\NY%ua꺾- z29Iuq46>|aΕˏ/ͽwhg 41$.`єac"q?eP:} EdCձQ:RYbSɮ0WS[㻌IW>)ogZ=!v=ѝ|N <]Zs8yax÷k)ާ_[m.'_l7rS7U/)}B㺭NbPLcrFnx8v>"Ly S8(t7023G4/+^MӪ|24'V'ć?rBB"3q.O_ң&\-?V/3Ԭȍm2u0XnYT1KPWW]yTR-| ڨ[~ǵ(cYSPbۇ{7Q*^C׵NmLUoSЫѱ('o*I?t \wT-u-* f0cHui;:s$p,dN~pybHv %*dJYTӔa۪<acb4|*{ A]&)ԏmr6&BY1btQUHC6Qrk37< h.|ybn/9wkr{SPDw Y.MpHƊ$zjF2LA_VY\X hCӻ/a/YYk=R/Nfw_`3N`7"`ګ`\%3/Ќy.Ab-[JVts| :Zh.,+_|k:  ${= _&Kt/vj6ԀdƏQԺ)WV/BOauX6km5i;{hm|X[z/ 6o, /$n}GN'ȢsBꋂ;WyT.Hd~R+R>4z(r0fYEڇJ5WDg3λ3 TIؔPOOZ.ɾZ~+X%MGL&ҒL.fC:Яx= 8DGz"}nw6Q7ɫqNJJBbMle?;^7BmG)UmQuեg08gQs &f# ◎(?Wy#Nt=Pɰ^@JyhLCrV 40O&Q 7V(U#8ZQcrrRbGx? r{Sm;(K [ZC?)"ux>&HA[?p}Ee[4Yn^?#p,N `(eV`22aik%+]$a~QdNF/  (Q)i1ovbbi9lS{PM++B0 ?ɐX 7 :\)%@Zm= C[! !җ7 7.!\"s7WLoG4%ݼ'/@,5eŗi'ox+}!`6\8xtfqj3|6eu+x U%_]^5/(vhnfLJOr=:o-MGxGgIy:& yEMap`Lq98VV~ _}8k֚r1&UG9&elϲ/ IFZWPŁ:yD)Vb)Uh>LdR;s +%t6 ;zN^i |!ީ%()tuоC;o~IϾ) KWnG+>\rV| =]>bFe<'ȅGdzK1A,Re' ٥,I[ӫ$UeaLx{#1Hs0 \+沈0{gdžĘYԶH{hwHk6sC'JۓQj~ d0i q sͅ#H?|ۧA *ͬ򠘼za6:DbCK,QRLAc+*}W鱊ot|ܓQ)WOHIu>/a' rL^i'a-L-Lih_t {6k V&dg(oV/3%Km@We br *qNc5Z_Hf#U2g:/$J6p[-՗W5Ml p#E*a=zT* AjS+Yij[rV+k.l fu|oaV=!0`|1q\֋"bZ>5fc5gs6 t_ף5%G} tk0w6 1W%*9n@IDe-G5cbr$zKI^|ȂzI>4ƇR:W*H:B%v8@fI2jqZw$W}HsRǦ9ǸJ w-pnT >'X"}d 'HKȁ| cp_-uD zqHt+G$v =/"9#`LJ*. 1k`Hv'|6҉/3/u{JA٩}~޴UzQʰ^ƍES* O~]dlӡw(yG h#醧«.H"-fihL-+,Oz"D3hm1I)qcL6 uP*\O0DW:N2;0="@]c?2ʚ'.' z=gqZo3:kG2`FeY F9Ϻ, Bg4ƞ_~dS %VPX*XDjMW9͜h!N=;Դg86ܺ'QV(hG}7|Dx3 wyh$40C@ Dj8_1aB[瘕 qn4 rV8mqX0@Oq|ܚvyC(ǔxuܒsbP>1HGȸ Fsy䇢/ӜpdͶ[ ڦaluadګ)v0) ջIH+߲*$L TTv Df@̨jio+F.E梬K?G7m ,'OXx8dO8%L &Jvо.8i{f˵X| 9QY-Gk믎ЎJ%K>V_^TTrmR/ZhzjNSvI{pS2]~j(D"S6#ćde-)?/_zg;!V-:_Id9R`0yr˙ݬ=ikyIx'Qd3RX=Uo:чϗhadv$\>h=CO}bc9 qb[wCYNryex1%p=xɤF?QvNx"Vfxy$6ȏkCwWv-en6MI:GBIgu5JAuܿ_2 !4,GH_4MםuumHS`R Ӫis286}pNu.G .tidy7 XqXt0WY oB9z<,/c`+B+Pbd _euEU'9X42z,#8MйX1n-`uMMZMBVJUH(DZN@wQEtP*lί{`zB:]u%c42|k{Vɞ:"5b|$^8Ku"vs 4ڲ-F{X5pwd4G6-c=N5Z,7v$ջZM) %xp񙁥f2t< ^?l@a jlw;S֒6Rq|\=RU@o R\c]mv 1`JZfdJYy%oӦ#ToG@o# V1Ŭ%/I1b t%GP8.J4[2&uiٟ#MPx{lbG>Čywxv{y9Bny'a-"rː#حX%}4dl$nޘzS\uԘH;ż wTt5? h4=CO98;}i @wj(IM %TJ9ks 2UH0*Ըm\ɱ( iK%JEc>/s 4ʚ'4)bA61|i9gԮqUimrHpwFEPhfb{No>:GVg7&ny8y 2Q{yP(.2̿3[$ Cϒ endstream endobj 339 0 obj << /Type /FontDescriptor /FontName /ZGTUMS+CMTT10 /Flags 4 /FontBBox [-4 -233 537 696] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet (/A/B/C/D/F/L/N/O/P/R/S/T/U/V/X/Y/Z/a/asciitilde/at/b/bracketleft/bracketright/c/colon/comma/d/dollar/e/eight/equal/f/five/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/r/s/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) /FontFile 338 0 R >> endobj 69 0 obj << /Type /Font /Subtype /Type1 /BaseFont /YRPOGC+CMB10 /FontDescriptor 311 0 R /FirstChar 73 /LastChar 118 /Widths 307 0 R >> endobj 71 0 obj << /Type /Font /Subtype /Type1 /BaseFont /IDSEIP+CMBX10 /FontDescriptor 313 0 R /FirstChar 49 /LastChar 116 /Widths 305 0 R >> endobj 68 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MSPVYX+CMBX12 /FontDescriptor 315 0 R /FirstChar 13 /LastChar 121 /Widths 308 0 R >> endobj 94 0 obj << /Type /Font /Subtype /Type1 /BaseFont /JVKXGB+CMBXSL10 /FontDescriptor 317 0 R /FirstChar 97 /LastChar 114 /Widths 295 0 R >> endobj 70 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LIVINI+CMR10 /FontDescriptor 319 0 R /FirstChar 11 /LastChar 127 /Widths 306 0 R >> endobj 142 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XTJZVU+CMR6 /FontDescriptor 321 0 R /FirstChar 49 /LastChar 50 /Widths 292 0 R >> endobj 140 0 obj << /Type /Font /Subtype /Type1 /BaseFont /PXOHER+CMR8 /FontDescriptor 323 0 R /FirstChar 49 /LastChar 50 /Widths 293 0 R >> endobj 144 0 obj << /Type /Font /Subtype /Type1 /BaseFont /WEFEGV+CMR9 /FontDescriptor 325 0 R /FirstChar 44 /LastChar 121 /Widths 291 0 R >> endobj 93 0 obj << /Type /Font /Subtype /Type1 /BaseFont /INCHZQ+CMSL10 /FontDescriptor 327 0 R /FirstChar 13 /LastChar 119 /Widths 296 0 R >> endobj 98 0 obj << /Type /Font /Subtype /Type1 /BaseFont /ZGGZKV+CMSLTT10 /FontDescriptor 329 0 R /FirstChar 34 /LastChar 122 /Widths 294 0 R >> endobj 74 0 obj << /Type /Font /Subtype /Type1 /BaseFont /EAXHAV+CMSS10 /FontDescriptor 331 0 R /FirstChar 82 /LastChar 82 /Widths 303 0 R >> endobj 67 0 obj << /Type /Font /Subtype /Type1 /BaseFont /NBSMKC+CMSSBX10 /FontDescriptor 333 0 R /FirstChar 82 /LastChar 82 /Widths 309 0 R >> endobj 92 0 obj << /Type /Font /Subtype /Type1 /BaseFont /JEVMCT+CMSSI10 /FontDescriptor 335 0 R /FirstChar 82 /LastChar 82 /Widths 297 0 R >> endobj 73 0 obj << /Type /Font /Subtype /Type1 /BaseFont /CWEZXU+CMTI10 /FontDescriptor 337 0 R /FirstChar 11 /LastChar 124 /Widths 304 0 R >> endobj 77 0 obj << /Type /Font /Subtype /Type1 /BaseFont /ZGTUMS+CMTT10 /FontDescriptor 339 0 R /FirstChar 36 /LastChar 126 /Widths 298 0 R >> endobj 80 0 obj << /Type /Pages /Count 6 /Parent 340 0 R /Kids [42 0 R 89 0 R 103 0 R 108 0 R 120 0 R 136 0 R] >> endobj 152 0 obj << /Type /Pages /Count 6 /Parent 340 0 R /Kids [147 0 R 161 0 R 175 0 R 188 0 R 194 0 R 206 0 R] >> endobj 215 0 obj << /Type /Pages /Count 6 /Parent 340 0 R /Kids [211 0 R 224 0 R 229 0 R 240 0 R 251 0 R 263 0 R] >> endobj 275 0 obj << /Type /Pages /Count 2 /Parent 340 0 R /Kids [271 0 R 287 0 R] >> endobj 340 0 obj << /Type /Pages /Count 20 /Kids [80 0 R 152 0 R 215 0 R 275 0 R] >> endobj 341 0 obj << /Type /Outlines /First 3 0 R /Last 39 0 R /Count 5 >> endobj 39 0 obj << /Title 40 0 R /A 37 0 R /Parent 341 0 R /Prev 35 0 R >> endobj 35 0 obj << /Title 36 0 R /A 33 0 R /Parent 341 0 R /Prev 27 0 R /Next 39 0 R >> endobj 31 0 obj << /Title 32 0 R /A 29 0 R /Parent 27 0 R >> endobj 27 0 obj << /Title 28 0 R /A 25 0 R /Parent 341 0 R /Prev 7 0 R /Next 35 0 R /First 31 0 R /Last 31 0 R /Count -1 >> endobj 23 0 obj << /Title 24 0 R /A 21 0 R /Parent 7 0 R /Prev 19 0 R >> endobj 19 0 obj << /Title 20 0 R /A 17 0 R /Parent 7 0 R /Prev 15 0 R /Next 23 0 R >> endobj 15 0 obj << /Title 16 0 R /A 13 0 R /Parent 7 0 R /Prev 11 0 R /Next 19 0 R >> endobj 11 0 obj << /Title 12 0 R /A 9 0 R /Parent 7 0 R /Next 15 0 R >> endobj 7 0 obj << /Title 8 0 R /A 5 0 R /Parent 341 0 R /Prev 3 0 R /Next 27 0 R /First 11 0 R /Last 23 0 R /Count -4 >> endobj 3 0 obj << /Title 4 0 R /A 1 0 R /Parent 341 0 R /Next 7 0 R >> endobj 342 0 obj << /Names [(Doc-Start) 66 0 R (Hfootnote.1) 143 0 R (Hfootnote.2) 192 0 R (Section.0.Introduction.1) 2 0 R (Section.1.plotmat\040-\040plotting\040networks\040based\040on\040matrix\040input.1) 6 0 R (Section.2.plotweb\040-\040plotting\040webs\040based\040on\040matrix\040input.1) 26 0 R] /Limits [(Doc-Start) (Section.2.plotweb\040-\040plotting\040webs\040based\040on\040matrix\040input.1)] >> endobj 343 0 obj << /Names [(Section.3.functions\040to\040create\040flow\040charts.1) 34 0 R (Section.4.functions\040to\040draw\040electrical\040networks.1) 38 0 R (Subsection.2.0.Simple\040examples.2) 10 0 R (Subsection.2.1.a\040schematic\040representation\040of\040an\040ecosystem\040model.2) 14 0 R (Subsection.2.2.Plotting\040a\040transition\040matrix.2) 18 0 R (Subsection.2.3.Another\040transition\040matrix.2) 22 0 R] /Limits [(Section.3.functions\040to\040create\040flow\040charts.1) (Subsection.2.3.Another\040transition\040matrix.2)] >> endobj 344 0 obj << /Names [(Subsection.3.0.Foodwebs.2) 30 0 R (cite.Caswell01) 87 0 R (cite.Donali99) 85 0 R (cite.LIM) 100 0 R (cite.Leisch02) 266 0 R (cite.Niquil98) 86 0 R] /Limits [(Subsection.3.0.Foodwebs.2) (cite.Niquil98)] >> endobj 345 0 obj << /Names [(cite.R2008) 268 0 R (cite.Soetaertbook) 83 0 R (cite.Soetaertbook2) 84 0 R (cite.diagram) 81 0 R (cite.ecolMod) 269 0 R (cite.limSolve) 99 0 R] /Limits [(cite.R2008) (cite.limSolve)] >> endobj 346 0 obj << /Names [(cite.shape) 82 0 R (figure.1) 111 0 R (figure.10) 274 0 R (figure.2) 123 0 R (figure.3) 150 0 R (figure.4) 164 0 R] /Limits [(cite.shape) (figure.4)] >> endobj 347 0 obj << /Names [(figure.5) 178 0 R (figure.6) 197 0 R (figure.7) 214 0 R (figure.8) 232 0 R (figure.9) 243 0 R (page.1) 65 0 R] /Limits [(figure.5) (page.1)] >> endobj 348 0 obj << /Names [(page.10) 190 0 R (page.11) 196 0 R (page.12) 208 0 R (page.13) 213 0 R (page.14) 226 0 R (page.15) 231 0 R] /Limits [(page.10) (page.15)] >> endobj 349 0 obj << /Names [(page.16) 242 0 R (page.17) 253 0 R (page.18) 265 0 R (page.19) 273 0 R (page.2) 91 0 R (page.20) 289 0 R] /Limits [(page.16) (page.20)] >> endobj 350 0 obj << /Names [(page.3) 105 0 R (page.4) 110 0 R (page.5) 122 0 R (page.6) 138 0 R (page.7) 149 0 R (page.8) 163 0 R] /Limits [(page.3) (page.8)] >> endobj 351 0 obj << /Names [(page.9) 177 0 R (section.1) 75 0 R (section.2) 96 0 R (section.3) 151 0 R (section.4) 191 0 R (section.5) 227 0 R] /Limits [(page.9) (section.5)] >> endobj 352 0 obj << /Names [(subsection.2.1) 97 0 R (subsection.2.2) 106 0 R (subsection.2.3) 139 0 R (subsection.2.4) 141 0 R (subsection.3.1) 179 0 R (table.1) 209 0 R] /Limits [(subsection.2.1) (table.1)] >> endobj 353 0 obj << /Kids [342 0 R 343 0 R 344 0 R 345 0 R 346 0 R 347 0 R] /Limits [(Doc-Start) (page.1)] >> endobj 354 0 obj << /Kids [348 0 R 349 0 R 350 0 R 351 0 R 352 0 R] /Limits [(page.10) (table.1)] >> endobj 355 0 obj << /Kids [353 0 R 354 0 R] /Limits [(Doc-Start) (table.1)] >> endobj 356 0 obj << /Dests 355 0 R >> endobj 357 0 obj << /Type /Catalog /Pages 340 0 R /Outlines 341 0 R /Names 356 0 R /PageMode/UseOutlines /OpenAction 41 0 R >> endobj 358 0 obj << /Author(Karline Soetaert)/Title(R Package diagram: visualising simple graphs, flowcharts, and webs)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.18)/Keywords(diagram, food web, flow chart, arrows, R) /CreationDate (D:20200929085902+02'00') /ModDate (D:20200929085902+02'00') /Trapped /False /PTEX.Fullbanner (This is MiKTeX-pdfTeX 2.9.6354 (1.40.18)) >> endobj xref 0 359 0000000000 65535 f 0000000015 00000 n 0000007190 00000 n 0000529601 00000 n 0000000075 00000 n 0000000105 00000 n 0000010651 00000 n 0000529480 00000 n 0000000223 00000 n 0000000290 00000 n 0000010760 00000 n 0000529408 00000 n 0000000361 00000 n 0000000395 00000 n 0000012839 00000 n 0000529322 00000 n 0000000515 00000 n 0000000582 00000 n 0000075935 00000 n 0000529236 00000 n 0000000673 00000 n 0000000720 00000 n 0000076048 00000 n 0000529163 00000 n 0000000805 00000 n 0000000849 00000 n 0000135094 00000 n 0000529039 00000 n 0000000964 00000 n 0000001028 00000 n 0000214990 00000 n 0000528978 00000 n 0000001090 00000 n 0000001117 00000 n 0000217366 00000 n 0000528890 00000 n 0000001209 00000 n 0000001259 00000 n 0000260393 00000 n 0000528815 00000 n 0000001357 00000 n 0000001413 00000 n 0000003861 00000 n 0000004121 00000 n 0000004275 00000 n 0000004429 00000 n 0000004581 00000 n 0000004733 00000 n 0000004892 00000 n 0000005051 00000 n 0000005371 00000 n 0000005531 00000 n 0000005840 00000 n 0000005995 00000 n 0000006305 00000 n 0000006460 00000 n 0000006614 00000 n 0000006767 00000 n 0000006924 00000 n 0000009833 00000 n 0000010142 00000 n 0000010297 00000 n 0000010447 00000 n 0000007299 00000 n 0000001461 00000 n 0000007081 00000 n 0000007135 00000 n 0000527650 00000 n 0000526366 00000 n 0000526081 00000 n 0000526654 00000 n 0000526223 00000 n 0000005211 00000 n 0000527937 00000 n 0000527508 00000 n 0000007244 00000 n 0000332988 00000 n 0000528080 00000 n 0000005685 00000 n 0000006150 00000 n 0000528223 00000 n 0000330153 00000 n 0000330212 00000 n 0000330393 00000 n 0000330272 00000 n 0000296150 00000 n 0000330032 00000 n 0000296090 00000 n 0000010870 00000 n 0000009671 00000 n 0000007465 00000 n 0000010597 00000 n 0000527794 00000 n 0000527220 00000 n 0000526509 00000 n 0000009988 00000 n 0000010705 00000 n 0000010815 00000 n 0000527363 00000 n 0000330453 00000 n 0000330513 00000 n 0000014227 00000 n 0000012950 00000 n 0000012665 00000 n 0000011036 00000 n 0000012783 00000 n 0000012894 00000 n 0000066888 00000 n 0000014109 00000 n 0000013069 00000 n 0000066770 00000 n 0000066826 00000 n 0000063696 00000 n 0000063840 00000 n 0000063940 00000 n 0000063977 00000 n 0000064072 00000 n 0000067851 00000 n 0000075095 00000 n 0000072833 00000 n 0000067733 00000 n 0000067047 00000 n 0000072715 00000 n 0000072771 00000 n 0000069536 00000 n 0000069680 00000 n 0000069780 00000 n 0000069885 00000 n 0000069922 00000 n 0000070017 00000 n 0000077873 00000 n 0000075249 00000 n 0000075405 00000 n 0000075561 00000 n 0000075720 00000 n 0000076222 00000 n 0000074925 00000 n 0000072956 00000 n 0000075879 00000 n 0000075991 00000 n 0000526937 00000 n 0000076104 00000 n 0000526796 00000 n 0000076161 00000 n 0000527078 00000 n 0000135874 00000 n 0000135207 00000 n 0000077754 00000 n 0000076404 00000 n 0000134976 00000 n 0000135032 00000 n 0000135150 00000 n 0000528337 00000 n 0000131718 00000 n 0000131862 00000 n 0000131962 00000 n 0000132067 00000 n 0000132146 00000 n 0000132183 00000 n 0000132278 00000 n 0000204280 00000 n 0000135755 00000 n 0000135354 00000 n 0000204162 00000 n 0000204218 00000 n 0000200983 00000 n 0000201127 00000 n 0000201227 00000 n 0000201332 00000 n 0000201369 00000 n 0000201464 00000 n 0000205358 00000 n 0000214560 00000 n 0000214716 00000 n 0000215103 00000 n 0000205211 00000 n 0000204415 00000 n 0000214872 00000 n 0000214928 00000 n 0000215046 00000 n 0000211486 00000 n 0000211630 00000 n 0000211730 00000 n 0000211767 00000 n 0000211862 00000 n 0000218165 00000 n 0000217156 00000 n 0000217538 00000 n 0000217017 00000 n 0000215262 00000 n 0000217310 00000 n 0000217421 00000 n 0000217477 00000 n 0000223376 00000 n 0000218046 00000 n 0000217720 00000 n 0000223258 00000 n 0000223314 00000 n 0000220079 00000 n 0000220223 00000 n 0000220323 00000 n 0000220428 00000 n 0000220465 00000 n 0000220560 00000 n 0000226064 00000 n 0000225511 00000 n 0000225274 00000 n 0000223487 00000 n 0000225393 00000 n 0000225449 00000 n 0000258415 00000 n 0000225945 00000 n 0000225630 00000 n 0000258297 00000 n 0000258353 00000 n 0000528454 00000 n 0000255223 00000 n 0000255367 00000 n 0000255467 00000 n 0000255504 00000 n 0000255599 00000 n 0000261087 00000 n 0000279454 00000 n 0000260506 00000 n 0000260218 00000 n 0000258526 00000 n 0000260337 00000 n 0000260449 00000 n 0000278817 00000 n 0000260968 00000 n 0000260649 00000 n 0000278699 00000 n 0000278755 00000 n 0000275520 00000 n 0000275664 00000 n 0000275764 00000 n 0000275869 00000 n 0000275906 00000 n 0000276001 00000 n 0000290705 00000 n 0000279335 00000 n 0000278928 00000 n 0000290587 00000 n 0000290643 00000 n 0000287408 00000 n 0000287552 00000 n 0000287652 00000 n 0000287757 00000 n 0000287794 00000 n 0000287889 00000 n 0000292321 00000 n 0000292146 00000 n 0000290840 00000 n 0000292265 00000 n 0000296937 00000 n 0000294722 00000 n 0000294878 00000 n 0000295034 00000 n 0000295186 00000 n 0000295338 00000 n 0000295493 00000 n 0000295648 00000 n 0000296271 00000 n 0000294527 00000 n 0000292416 00000 n 0000296034 00000 n 0000296210 00000 n 0000295842 00000 n 0000330092 00000 n 0000330332 00000 n 0000326878 00000 n 0000296818 00000 n 0000296450 00000 n 0000326760 00000 n 0000326816 00000 n 0000528571 00000 n 0000323473 00000 n 0000323617 00000 n 0000323717 00000 n 0000323822 00000 n 0000323930 00000 n 0000323967 00000 n 0000324062 00000 n 0000329288 00000 n 0000329631 00000 n 0000329810 00000 n 0000330574 00000 n 0000329125 00000 n 0000326990 00000 n 0000329976 00000 n 0000329460 00000 n 0000330729 00000 n 0000331191 00000 n 0000331222 00000 n 0000331253 00000 n 0000331628 00000 n 0000331749 00000 n 0000332344 00000 n 0000332369 00000 n 0000332752 00000 n 0000333232 00000 n 0000333257 00000 n 0000333320 00000 n 0000333357 00000 n 0000333382 00000 n 0000334064 00000 n 0000334459 00000 n 0000335103 00000 n 0000335381 00000 n 0000336014 00000 n 0000336039 00000 n 0000346129 00000 n 0000346383 00000 n 0000357015 00000 n 0000357271 00000 n 0000371991 00000 n 0000372327 00000 n 0000380487 00000 n 0000380721 00000 n 0000404809 00000 n 0000405306 00000 n 0000412464 00000 n 0000412688 00000 n 0000419842 00000 n 0000420066 00000 n 0000434088 00000 n 0000434373 00000 n 0000447150 00000 n 0000447430 00000 n 0000466134 00000 n 0000466653 00000 n 0000473665 00000 n 0000473884 00000 n 0000480897 00000 n 0000481120 00000 n 0000488118 00000 n 0000488341 00000 n 0000506791 00000 n 0000507170 00000 n 0000525626 00000 n 0000528656 00000 n 0000528741 00000 n 0000529672 00000 n 0000530082 00000 n 0000530629 00000 n 0000530863 00000 n 0000531078 00000 n 0000531260 00000 n 0000531433 00000 n 0000531603 00000 n 0000531771 00000 n 0000531933 00000 n 0000532111 00000 n 0000532322 00000 n 0000532432 00000 n 0000532533 00000 n 0000532612 00000 n 0000532650 00000 n 0000532777 00000 n trailer << /Size 359 /Root 357 0 R /Info 358 0 R /ID [ ] >> startxref 533174 %%EOF