From: Sam Moore Date: Wed, 21 May 2014 18:45:29 +0000 (+0800) Subject: All the figures and none of the Lit Review X-Git-Url: https://git.ucc.asn.au/?a=commitdiff_plain;h=38a856db801fa59c8959d85dd3f8f83437710681;p=ipdf%2Fsam.git All the figures and none of the Lit Review They are so pretty --- diff --git a/chapters/Background.tex b/chapters/Background.tex index 1d3e141..288ce4d 100644 --- a/chapters/Background.tex +++ b/chapters/Background.tex @@ -11,13 +11,13 @@ In Chapter \ref{Progress}, we will discuss our findings so far with regards to a \section{Raster and Vector Images}\label{Raster and Vector Images} \input{chapters/Background_Raster-vs-Vector} -\section{Rasterising Vector Images}\label{Rasterising Vector Images} - -Throughout Section \ref{vector-vs-raster-graphics} we were careful to refer to ``modern'' display devices, which are raster based. It is of some historical significance that vector display devices were popular during the 70s and 80s, and papers oriented towards drawing on these devices can be found\cite{brassel1979analgorithm}. Whilst curves can be drawn at high resolution on vector displays, a major disadvantage was shading; by the early 90s the vast majority of computer displays were raster based\cite{computergraphics2}. +\section{Rendering Vector Images}\label{Rasterising Vector Images} Hearn and Baker's textbook ``Computer Graphics''\cite{computergraphics2} gives a comprehensive overview of graphics from physical display technologies through fundamental drawing algorithms to popular graphics APIs. This section will examine algorithms for drawing two dimensional geometric primitives on raster displays as discussed in ``Computer Graphics'' and the relevant literature. Informal tutorials are abundant on the internet\cite{elias2000graphics}. This section is by no means a comprehensive survey of the literature but intends to provide some idea of the computations which are required to render a document. -\subsection{Straight Lines}\label{Straight Lines} +It is of some historical significance that vector display devices were popular during the 70s and 80s, and papers oriented towards drawing on these devices can be found\cite{brassel1979analgorithm}. Whilst curves can be drawn at high resolution on vector displays, a major disadvantage was shading; by the early 90s the vast majority of computer displays were raster based\cite{computergraphics2}. + +\subsection{Straight Lines}\label{Rasterising Straight Lines} \input{chapters/Background_Lines} \subsection{Spline Curves}\label{Spline Curves} @@ -27,16 +27,47 @@ Splines are continuous curves formed from piecewise polynomial segments. A polyn y(x) &= \displaystyle\sum_{k=0}^n a_k x^k \end{align} +Splines may be rasterised by sampling of $y(x)$ at a number of points $x_i$ and rendering straight lines between $(x_i, y_i)$ and $(x_{i+1}, y_{i+1})$ as discussed in Section \ref{Straight Lines}. -A straight line is simply a polynomial of $0$th degree. Splines may be rasterised by sampling of $y(x)$ at a number of points $x_i$ and rendering straight lines between $(x_i, y_i)$ and $(x_{i+1}, y_{i+1})$ as discussed in Section \ref{Straight Lines}. More direct algorithms for drawing splines based upon Brasenham and Wu's algorithms also exist\cite{citationneeded}. +There are many different ways to define a spline. One approach is to specify ``knots'' on the curve and choosing a fixed $n$ ($n = 3$ for ``cubic'' splines) solve for the cooefficients to generate polynomials passing through the points. Alternatively, special polynomials may be defined using ``control'' points which themselves are not part of the curve; these are convenient for graphical based editors. Bezier splines are the most straight forward way to define a curve in the standards considered in Section \ref{Document Representations}. A spline defined from two cubic beziers is shown in Figure \ref{spline.pdf} -There are many different ways to define a spline. One approach is to specify ``knots'' on the spline and solve for the cooefficients to generate a cubic spline ($n = 3$) passing through the points. Alternatively, special polynomials may be defined using ``control'' points which themselves are not part of the curve; these are convenient for graphical based editors. Bezier splines are the most straight forward way to define a curve in the standards considered in Section \ref{Document Representations} +\begin{figure}[H] +\centering +\begin{minipage}[t]{0.3\textwidth} +\begin{figure}[H] + \centering + \includegraphics[width=\textwidth]{figures/spline_labelled.pdf} +\end{figure} +\end{minipage} +\begin{minipage}[t]{0.3\textwidth} +\begin{minted}{xml} + + +\end{minted} +\begin{minted}{postscript} +% PostScript commands for a similar spline +0 300 moveto +0 300 200 210 90 140 curveto +-20 70 200 0 200 0 curveto stroke +\end{minted} +\end{minipage} +\begin{minipage}[t]{0.3\textwidth} +\begin{figure}[H] + \centering + \includegraphics[width=\textwidth]{figures/spline.pdf} +\end{figure} +\end{minipage} + \caption{Constructing a Spline from two cubic beziers \\ (a) Showing the Control Points (b) Representations in SVG and PostScript (c) Rendered Spline}\label{spline.pdf} +\end{figure} \subsubsection{Bezier Curves} \input{chapters/Background_Bezier} -\subsection{Font Rendering} - -Donald Knuth's 1986 textbook ``Metafont'' blargh +\subsection{Font Rendering}\label{Font Rendering} +\input{chapters/Background_Fonts} diff --git a/chapters/Background_Bezier.tex b/chapters/Background_Bezier.tex index 2ec2a2f..9f24b17 100644 --- a/chapters/Background_Bezier.tex +++ b/chapters/Background_Bezier.tex @@ -1,18 +1,14 @@ -Cubic beziers form all curves in the PostScript\cite{plrm}, PDF\cite{pdfref17} and SVG\cite{svg2011-1.1} standards which we will discuss in Section \ref{Document Representations}. One of the shapes in Figure \ref{SVG} is a region defined by a cubic bezier spline. Beziers are also used to construct vector fonts for rendering text in these standards. +Cubic and Quadratic Bezier Splines are used to define curved paths in the PostScript\cite{plrm}, PDF\cite{pdfref17} and SVG\cite{svg2011-1.1} standards which we will discuss in Section \ref{Document Representations}. Cubic Beziers are also used to define vector fonts for rendering text\cite{knuth1983metafont} (See Section \ref{Fonts}). A Bezier Curve of degree $n$ is defined by $n$ ``control points'' $\left\{P_0, ... P_n\right\}$. -Points $P(t)$ along the curve are defined by: +Points $P(t) = (x(t), y(t))$ along the curve are defined by: \begin{align} P(t) &= \displaystyle\sum_{j=0}^{n} B_j^n(t) P_j \end{align} +Where $t \epsilon [0,1]$ is a control parameter. $P(0) = P_0$ and $P(1) = P_n$. -From this definition it should be apparent $P(t)$ for a Bezier Curve of degree $0$ maps to a single point, whilst $P(t)$ for a Bezier of degree $1$ is a straight line between $P_0$ and $P_1$. $P(t)$ always begins at $P_0$ for $t = 0$ and ends at $P_n$ when $t = 1$. - -Figure \ref{bezier_3} shows a Bezier Curve defined by the points $\left\{(0,0), (1,0), (1,1)\right\}$. - -A straightforward algorithm for rendering Bezier's is to simply sample $P(t)$ for some number of values of $t$ and connect the resulting points with straight lines using Bresenham or Wu's algorithm (See Section \ref{Straight Lines}). Whilst the performance of this algorithm is linear, in ???? De Casteljau derived a more efficient means of sub dividing beziers into line segments. - -Recently, Goldman presented an argument that Bezier's could be considered as fractal in nature, a fractal being the fixed point of an iterated function system\cite{goldman_thefractal}. Goldman's proof depends upon a modification to the De Casteljau Subdivision algorithm which expresses the subdivisions as an iterated function system. +A straightforward algorithm for rendering Bezier's is to simply sample $P(t)$ for suffiently many values of $t$ and connect the resulting points with straight lines using Bresenham or Wu's algorithm (See Section \ref{Straight Lines}). Whilst the performance of this algorithm is linear, De Casteljau derived a more efficient means of sub dividing beziers into line segments. +Recently, Goldman presented an argument that Bezier's could be considered as fractal in nature, because the De Casteljau algorithm could be modified to be expressed as an iterated function system\cite{goldman_thefractal}. diff --git a/chapters/Background_DOM.tex b/chapters/Background_DOM.tex index 494f2b9..c89410b 100644 --- a/chapters/Background_DOM.tex +++ b/chapters/Background_DOM.tex @@ -30,15 +30,23 @@ In HTML5, Javascript is not restricted to merely manipulating the DOM to alter t - - + + + + + + + frmJqPErCF1L?5![9*777"M88/I@o'grY5%nM!(-`EtofMFhq*dYlR#u + s55oE8(;h`U8mA4aJ?\$LE?T@`6:N4HXT.IYLKb^@2*rqepN3d%GsRl8%]rqjH4=BH'7Z"( + h36m<\5Q^!_6;,MnU3*99baL$3^@NMMp5Q;^GENl\6:&k._ca%-*L("qTE8\OnbEnQ\Q(]g + -SHAD6KS0J[#&:RBrr)_m98&"1-i3G\5J]-81&$D(_sP9m#H3P]V`&AD!/imMbS\jK_8>3E + %Ndmi]QnR)*?$eM'^>bN-WkDW9Qosc7F];m_W%T2n9O?%[fca5FngUh898qaPKSg_9MJ5M? + -N.E=BGjl1Z2S9(C(>+H`F0KS24f*:0/&qYFXhXSL)f.CGWgG%M"q&$JPmqPhTgQEiJ6o_^An1ZeA]8@@_5C-5+S: + ::7W#NbN2rlP,`L%G^jHXr1+992P;[I_^[)ad:b@)JO;dlT0.CN\jTY&m+([gbEY[G*90@L + Is>@/8R>^t'EGo8lV%/E]=U-ABW0*lP#eYd!Ujq"m+J=qK8%96h7In"NAo^e:'hQ'SG&eVf + #e$OHTI^]:e:NHTL"3,(Z/10$jJ]_;5mO(Dr4#i+tP9gWM#n,,UA'>Q=*6K^lpgV"GAu_BKNTp6(,T\@=LX4oYCHAGZ/gYGjSl + 2,`\1P`uA45^61G0`9jI^\ro`<\.3iEO!-f4)l()R@/:U&s`X"]Y&X5OE!Q_o4RdH#0T?0f]6JZAf,aYa]mKLJ^* + 0QLo]]m.'iELF@*W$6\8Nh8/V,7)TO^T"4^_EN*RiCm;WDn3Cr-?fd7#uA0F,bEdG.qtV#3t2 + U@G+JBQ'J+6NM=-8B]J?&5<%1F'EEUt'*GElCtLGk[mce%PR0JF&GPkc]C2IH%MkA4o\dQ< + 0':gQ,_=gJ>*S^FO5U*B@Lou\egTIp]i(.es1s8^7/3R9,cD@!gD2 + S28Cng[]Iim7lVG3OV(C(>+2GKf->tFAji'#gl5Rgh+QHSpsAFb\c>V86bmMtM]Z\cIBPrH + 6uMY"&[fnVgOY-tm>LQ>70V\/7hB456<;WGfY7t#kFeGT.6iLMT*[L@:uYct4Wh7Im#1hd$ + '[$]0H'H(U>#CuisaH2RYP#G7Vb0.t*hkCP`mOg+ENjr4V5JK^L*hb1u(7'Y(.Op=8NJ/cW + Mo@c@PH@,:KjLBGL(tG]`J4sG7X^1Qf2"X0"=nHN`/1FNK8!lnNZ:%l&.ehgEk#A'd`fs)2 + 8(+V!a]j0d%RCVOWcStedT8<\U=3.lJc2[RAV-Upd(TM^ldC(c)oXHGD=K-1,B[+1BNqa3) + 2_9^f?alVFQ[gW/H:^AVS!R(2frNlKdb?Y1Hm7!^hEc@r`5<(`EP]"fUmQ;0D?a*T$[E!s_ + X=#7IS@Q'[j3mbJh&!;o!L*?K)E#7)u?N.dN<0OOnG)eE4)Y$H[r*u[(UN4LuN=:OKnrVP( + aWH*RJ4#7Bmf&b*.fe2>lKs7d8a*b9Y@DW.L\%hk3$gQ_Z@F_@#QS0^5-Go39,o.;a*4`"6 + ^J%*"!Y6DYN-RsP*^4u894j*E_<,Li`W-VqTI<,]MH-L0Su3ODCO9A?ji7pS^a+YJd]'U7bA`KA@0@/AhqH]8rn + 47Bfa(KkqKg4d*t=:V@CGOIG)e-Mea;_6d"hb#*bLql:N($!;n6[dFbdm*m1j6Go%e;mY2` + HbRiR+LHCQf.sLhQq;pL%MJm6N/fiaNE/&#'P4;Gntp.oDW=b8tcpi'A2X""6a?]Va65%L'Z8.Cn(pq;`4='u3hoRPbJ + fFhseL^]+(F[7CIFl&/M;X/XJV?[_TI]VK5Gb0%jNaRJd"rr.s#5=Sp&/.S`79&c4^#E9\g5*(`e5!!O*`]q,Y + ]!OR7MEmusTLDi=%1p#XF)`F?A%Ml+QF6?:o:J]VO@MObng"?e,!-fK/,Tit+kK^#A_EJ,E + !.B6BN/\bqM]]mAlI*0!IOgW(i/hbkqb77@i(4%U2$,RtqtKQSXphqm_M&A+'/*Lo"Ee^g= + =8a;:i.NK>sCOm*D`j&Mcj3NjF.=&@!gnO$.SWVc`3qBLl[TEC0Rf@A+3r)p%7KIlBt$YZR + ;7%EkOYto""i$[:2Def<9rE5(?if$d:9E[X`5[bD4?pUolq_CF[8\p%*k'RR#W4N$Bnn<0j,69hDp:$^?QVGqtKQ7YEsg + 7'T2Kb=\PRJRT9gVRt8=NGWuVSlIDr%n_$_]i7r&:J,]8!LLn2KrUnd2Q20I$5<=oEMh(H& + Xu'`d2T6DWID20i/AUG@J'NG&EcBjEEPpJ_RAg.5cmYCsVL`G6UG#GB5d$HoK6 + r+."L';hfXgaDa.'1OS-c8sbIiqQ(`scAp==,L,$jOV:0k70^GHehH@k3D_4"0XD6:+$,hS + "iO?TGDa8kK0,9Qj91;.XIQgE:Abp?/rq(PTGe7l?+Q8fQjA3*.M=I + W&?2,AoQmWt$S9;Irpq5]h9+,F=]q/YQ:<]d]=[s24*OMfa$)8RP + s2%NL;9.q-u&>ISL\P/kVKZEdU38dEh\6k:,R>,;R[Flb%bm:,e]5rDRs,Ns51%P;EWRQg` + GA(X]:Iet_^im]>L"&n!gqc:8_"'/A4O*As:.8q2XrmXmrR2NiabNm<9/#`=W0e6"PNEbO4f&4Hh-g7br^$)OA3I!)IZ(PI + \67h7@_:FbsiLVEnK/416Cmp,,r4?sZ$''tX&U$4tYD"3S0M(+i_Jm(clRmbPM6T9TEZ#,! + SDmD:]Ye\d1"#RJM+2'_8l550rHTZKVqK+/+n0T6<_!\H#W7brKsbg:./)?74&7&%Hqq?qF + cC([=/9u$Sn#rf=)==ntGfrr,(77$`_Bi%3SH7G1Pn[Tpjl,&,^;Y#N;X&c?!(T/$W)H:dU + :;9=FcEL('--A@O>(?[]1jH%PB2Qr#/Qf4WFiV>(7)O`gK8o['n%YVM:3Bt`:u.kb4?gM0@ + S&A0B;$Z55QP%,%.s:l1fH?_]`uYHh7\.Ok1N=$:1i6r+%udR'.-[hAI[Wr1tX\L!m(JM1f + t>1>r>]?O2pFH33>2^k.oRGieoHd([!ee)GI5\q&ld&GncpG_5WA%(\1goPEQYTP/;@,Q'F + e$qag\arE7*_9S4KU/udA-YS(1DU+a1nCSCe8%IWJ&&TTm/0Ku-/_[eu)mOq[!B\g7BYeNo + #1'Mf?WoW(pkh#9jX",K*$+YH!"r\?Lo3_+[Jn=9*^H_#/Jjl/t1hf95X&>qpqsV9s(WRpo + VEr7_hi#HR-\A[8DMJ=:FeO>2)LNB"[E@14EFYO7f:I*Zn6l?CdcBf)haUlkUE#R(eWp_PH + @GYi3=Rko-,BT&^:q>Jq=B/+Qb%;'6F)!^,Y:C]pJETAl`GmFI$ljNCe$EfVhG#+rjdfp+$CIMQjms( + D\p*V'\q=DD:_+X3"HS+%>K=\#+Fc903&KjMD$r418XNVbeN_N)'JMn,GQ%GI$.I>N8kVh) + Fq6-.CXJkFYf2afc#aL8Zu!9@+:uFPc'>8gf"6<[KEgHbfbjhm!\RciKXPf,0qaD]MM),mF + r.PiIK0:pKS?[X)N5bFQBp*W7o@M_a)%Eb<6BM2Qp%$&G7J&b^g^1\2Jdn<5A&+VKI*mA)N + 5a9+>WLfG_8=(DmF_C"WXa(%@0FO_>$XJcHc=]mml"VYaAM`k08b6QcWbS04%%H$p1=Ps8F + D%h8A4-GmYj5Hr;LbJaI-T/hRXR0Ms[A. + 00LDknk+?2o$>`+_4Xhh#E_i-'.V7S,G:[@U]6A1f)tG%Gqo/h@3+;G + s7:BS\8Q)B-bG*YuA]_0bWVp%;%5pS&@XQE&tZ6ijtXkYKlCUt'5M/gDo6.ora%*Fng0faN + ABIF+WjB!bC>@Z-ZO%%3p-h!h>/Ni8nT4*U*HguqkA'pp2BVl(2V6`!]:^3uKmDmofe]_:' + '@WBp#GcK8)58iRMKf%GMS1GhE.YHkIFm9[)c&K\kD;Dc=B2SaB!4",]L@5Q:G1JS)m,"$M)/1n7g0%L<>br:mP! + ^QC$'W#"*Ocf5IReQcL>!uB@Y>d)bi]#%q&S2o'L%>n^mqX1ua@-$q_ + 2Vh_V0p*1cY+Xc?ni*[P8d5IhL+oh>IPrFr@'ZaQfpZZcH\@dgp$$eZ(D5Kq]9p#$%Ra%Y; + [I7X(_!4Hp!?r&fVe5^e>9^rj6=a*^7,?mG3!D[HVn?S-GWWe1_&g@],btLFHVc"uinm+,R + oqR?:*]:'<,+eZiUSU*Btu6CXk6AMXd%H>*jH*R]ki^,*-N"r2HtT(9I#d@s(-KcUd<6Z"VukO77)Vu_83A:SN:o!?1VJbLu*X]IFt;QD;&NqDdaduSqSV< + &XH&+(OYQ]KpDgQdGU)(7(iBnQl*L>aL_1N!LhVLYu8kM^UW2Qr>\$1hrK*N3le + a]k7.Y2iP:GQr#Qqi9<3B@(LE&3>=Eo=_6>I5<7")@i5q/BRi>IM`k?bn31o]WPcU%!`s#r + Opf&m?1jo(-(q=2"5'm'G#Sd:?@>WUfWN\@=MmC\df%4aQaVp9.j7%6AZ;-Pee[_PGg89S) + SEYV77&QG7_:k*;3s['pj;,O;8"IY&SVd\KIA?_8>q0^*U'iM%eu#Goa\UrruYd,7<<\r;T + %*Y];f>[0sL@pre'D;(6<@rf,Mp&cthBeY!`=\;:>=9_$DJLjne0UDtYH@68@rYf0]j2R)N + 2A6iATd*'f#fo4k[%E7H97u3@DZg2R_ZIpTJq[NNa@EoI1mgU4;B.H&#eb).Kgf#9mbN_k# + -^A]CMJMZGk^#-DJiIR8:?0>on^$r>=jHqWMq*40deS+NqpKB=:V0Cf<.+o);hYUDVUW!/# + /h)[r,EK>E6VcaGbk,##Fo<(uJ"8'^j\_MoO>a_Q$TL-;8r"kEfP)U$K!TB[EKm>j@X8VK. + a41qC[4]4Ef990&gSg5)nT_8<3B%j+"-oehL(MN3]L.k@CVZ4,2i_LtOPDBt:;cF/[PChjq + /:JZc)ck@'+T0@Zq9;>m'25m?EQbl%q@)2nJY/qpuWbja3o**TWc&BXr%E^*F#\((6kg?04 + Zj7G5.B9JN9MIAk(\@4g\p*V7p"*`5#1^.%]*Lf3H7'mYi7?95UQDKWTOZ$&[D"5sYftPXc + 'r,P*&VJqobV.n"uWk0gEJElP;F\DN0KLK^3CY!$^G%Iq.696b%.fPU*;+k`W-J)GiK%oQK + &+)o3R`"3B!3.>Bi7nq2E,Po=&Vn8k6d.@@=6]-VoUf,,-Sk+)9-A1be"R:S_kgDWg**_C` + gjdU33]8qR&g7'j8Gl8J?Ebl+%r643#a?/tepV24 + X5$cEjKk5hN&9]?%D/$C]C\"^^L^#(ng^4J6JQJ0-"UhtPOUl).B^c@_Dnl;J.uhf2Kk6[L + 9q)@ajI.rA/A@,rBJ=PlA[OQ"?IhgnqSkT'q,jMJ"q.'"IjOa0/$I=PTNG;3X0f5j-n'o8Q + D("G(;J=qSH_6'CmW=.i&/EkMX@M&EbqIG#NifZ79c90`PSo_?[hes*-;sOfqF`:mG!+B'M + @m-LF1[qiXj/qKO!5,d^ + ).66C5q#)?O/(Le.4/.4^`T#@E:Rh6$lY/%feG[b@B(-uW^0i:F,`+GP3hI)eO,%G"`H%M6 + IpPa%lu(RdXgoO_Op4:.>bWhm\-PK0fu[94S#$C6DB:jSV46i/>IVJW`/YbVd[O["t$2e2Fh#4`'XX$e-S.`B;+eYuKFReS> + p$:4(q2"8l!+USkOso>u(9ojnJb@m^T-`X;GUBU-21TCk`>.dr],,?SlJ&eO.3C:,#/c5Ro + ^g7V^Zco+XRf"L5%&6m2GV6pf`H_9?4t/1/>B]]OlC/G\""\? + S_1MtV5!DB49h\6^W2QZXQg:?]X04.MSk4;sl-#>K-rrB!k!n.39Vr^gZ5D$jMpkk6?ifW' + 99q-.k;V_$6*k/ZW6n=d\HLRNVLiR^d5Mfs[9c)3g8YLW!>ai$job/D``+:"[CVr#Si(49I + XHE]EY%q40KJp\,7=5hA^$.T>d7[G0P]*#9EQh-d/*G$@FlMaIXGG9]B\( + U-dd8E!l9Ei#AX5>Pm1'iNj5RVRTh2Q-kh6fQj-Z9VJFed3B7su+?!uaW9,b_Ud;<9jfei' + .]DKHr`O2L5i#q#Bn0bjRP\^km))'epg^`3qpS>*;,O!Q],00uTOZI,c.S_f!MNT@A5bcO*t$5SPK+EsW<>ls/A'F&ji_'kSi + :R/n\^bNB2\I?Fm&9%]b?M=9I(ZK"utW6"Tnt!_DK'6@oZQ1VPU+$h:UQ>rQ^rq,=beR0*6 + V;#*Dn`-hR:B.._$)U.],K!j"&bO:f + &=H9%U?[\46]G(F`O"i@n*LI$IK(>\T`\ePSTB(;pJ8'OF:HEOW#k^W;Mbs1];GpXmN[*$2 + )t,%S+g"p"`AGAN"Ppe?4!ULMPaN>K[jO65hu%j,Va5BE/$`(;4)WhP9EQiX=)i5"<`U"&a + Z_iD=$5=_(Dd=S_>XG:KNqW\G'FnR!6[!;jiWkPk\/V.@jI4[jRE0s2V+")!#HCS!muA`?, + \Y9Z>Z9qG:kj7)"up)(RI3D3IBk.@efDSae!$U4!kE^#Nbi@A43gn7C?kA"dfKrSC[5ja*i + Aa@0^\E;E`7K"]#@^.I.6UK7b2.#6.1b/`!DTH;"Dl44`B.LXg,sm(G'_]0FTa""5:>f[Z6 + 0^eU$50kgXF+1f#f9peb6Bn0cug9k^_S!tA`\fJGrT'Gt["i0k2;BQ)^O9U%5ZnVDnj2P"k + 5lmh`()OB"k>#)[=4hFup[Te\*X.5so($g')SBF"0L7[?k[dEi/A'ECFmGi$.I=EorV[0_3 + 'au1.r2a^i.*Yo&X3fAdbncq[&Su3lYA0`Yj + >/d=0EBt`NZt7eS+7,!9%shc2lfHp*TC89;Se$a-L0Q@+gs604,1kU'c.Xs$T73L]YG[6:) + e(%_G1S+0)dCq4N*go)*N#8h\XjJ8'PQ$%;X2QOj=J*cJd7-ie^reNt0j(\h=`fQhABY:.G + UhKir^V?)uGC&\&+n788Lci6$Q`cMno4/]SfjWF&RB1K6CsqjY+?!7Lq+':M", + /enQI`5\7"JsnOK`Xb'GOGeM1g;kX!H-QI';-e;J7`I:#ihC&2SkVYi\)sHY-4RESJe'9iO + UkY8H%B$J*6rK;]bf,tb%+eQO?=g.s2BE3G"0*hX"NUK6]@#liWq8fDgkCW?/jC:MOc3SJgJ8'PQ6;#k-NOqZAfV5Yd@a=,YX96scsW2"!r;Vff=f7 + "7nuh9k,p%=)ITgEe#,us]huZ0rtlhr,msXR&IIj77iIm=J:Adc_DF;QX<=Mq0sQW?.)7[T + @ZRB]SI3!';CL=hP[loaC=3*@)DEZaBE70$G-`(N&&5+MZ*1pV(=N8A]:(Ha"r.!CF3H0;Kh^K'2=LQYu!d.s-;Yj + $>c+u6PihA])K,N3nk+=rDQj1>2Pjo:jVgYto8$k-[U9;X#3G?cb9EQikC&Ro$&-^u&S&Mu + K/Yg/X^qB&d;#An(eAKt3W(*%%b[M8o)IT8eeu`0EJ + 16<#]M]F$>&iFB@5Qa[^/EGNsGHZp_$g`+Z_S^5DK)02#6)3NS;(3A;+`g + U8Ud%BqgfK*MobK:bpL%^mAblDF[P$.!]Q4ZMSqML9)Ai.YKWYVLtD]n0sK`>'+'(4(7O_( + IZ=dr9+jS'h;H5S?Z8@(RQRHse#dd;?%u=1pEr[0?f%#$=Rab*=L,S;Fq,Hjho&JLNE8jc^ + .O#DZQo(Ig9JHte\4g`=iDM\E[Aj$m-Q)!l(PI=2tuJLNDUhPZ0`Ruu"ml];WrdnP7)d&,& + (Qj-[Z=%Pu?:8`_-XgP'>XkAh5d/X^X:(I=BOH4D1:#0M;G]47l!>`jY;,P`PF_fXS)S5i%C+> + 8i3CR%*bTgS;dJq1nJ`AqMadGVC8(/>AM3[Z$lo(DchKlL1l2%`S;%BsZH1M>!0pE"es + )N#(0(=3&+^Jc*T!h8ec"Gr(m5]sZ#Qj-Z/;fQes>[5f&RXT^7BMi.T%F4h9^gdF3K>$gmj + J0Fis/!gPOS.DCrR[D@=KGD'=kO09]E#QB>>NQPVD]FB9*=*>/r=OnE7-fUq:Mn8?[^C2

@YpXg6>0k287)ITg?F6Ci&*@Xl=^SB + 7$kC>EH!']P:$E"+V4O]E's([93e!3NI>#9``J45BFr:*8o!o6L#/jchdLis[NYr`IhB4jH + '_DRce9EQi3kiBjL0U@iWci6-_&NKmUU&d+^b7V3oj92,Z:S(Ce36rM?!>`A[F6?;CGW>%V + $R-dV%t>L3!5(f;c-AF&E-\]cUIggW:_+X3r;,`_gU:r<)&XleaWqKj84Z:XB$Fr5S9ahp= + k':SB0CP2,UXrEp7Gao!Q`;Fm51Ku@6(!>7h,Q0WAJleZJ+'@q\%B9he+Z#-;L)pjQ+7[>< + 8>CVk8E)>uLQ!hnFMI4hmpnQ*Xs4JR06/Yqcj5G5j*qo0%Hg_DEYl/<#RJXbR!X[:mtId\T + U8MelI`1M73!hIqW&/o)47BVtlU5_,>d=H\I$9CG8Nq88!FE,Z_s>IRA,<)Ub`]T^fHNTQ/ + _kV$FTVMBo?io-RB#cPMrm-MB(iBi15J@b+@TFDhu^uU=n@e&-q9]Vu*Fu1Un4qC;[3YOL_ + ApMB-PqNhD-;HBW1(Cttrd1nP%#^\:i_jQDmmjq!1I=IBacgh"3d'^e>$?g[%_++U,(c3.r + tF5a7)inZ6)3<\$mTGi9,rMQ"r#gPDf0:ECqrIXr:.fLn>In1`uCf$<7]eA*p2VYoCM!@J< + 61eH0sXqL^hOk+b!cFPd@f_!4=k/),BYK$7Y!+XmCqAH$M'C<:I%tHKh93Z80r(a(g + m*Q3(m>)Z+GP'_3u=M?ZN9aM[!jOqDQYXP""PUVZg"lX:r,"pS8g6QYFPANDojC\Hu>"8+7 + O>5e_rf,+5_7nWqBjC+2BNI,AC[pJ2n1oRLWKR42W,a&DC\[6IARlNK;jJ)t,]Qs*F + h^D.jbr=Oq=ont@12.XgBi'ID&'ML+4`$7@*PZeH)Q[5V(7('=ea:hRR@`Il-E0tUDr3b.p + W>Of3HGBo5B[]s0!HdD!C@]0d-.HS=;[o$TdC;1LeaMl3tr.0ZA]#F6=hq+QaH`_9GEX-5_ + =W@Mi3Kjh_'gd>$@AbS.*$MRb1a'6^oAY!']A0%]9QPgf'W:_;W20CtDt)ro#gnfWo']eRU + j+g_RS7C.JX.MH6i_iI_P84aZmU2)CI))i^5\6.,:nOdOA1ZA4T^X_5tNN^JG2c'f5Uo8uR + 9D=b\\aNsoeamTe7#bmLRUZNeuPZ;PD3b3(Sj:AJGV,4KX:Y=An\F!580(15 + (*o%#Rt00DRi%%O,\@tD,!WSkF].cD+-kslFTQ`b0%l(9q0"+nO7OVne',M)Gp%0!&?5qK5 + Hj`6(^=G*.\;)*^"s=NS\(hA^Bk]5ZeaCIeY)O$:(JL55GQ9K4R-[=_4)NT]l26/Bhp"HN$ + KE^E_*5n`%Nl@)paF):br&9#c2&OgHqOq5,>d/'H>3(J7=nj5]0VgDBGV4)0Zs_`?J?#"=L6@G+5G + 6*FV,m@FOFcCKUV&*MSW@BhF\#RZ.u14/_2e2>(@L(542n,7ms@,qEX.l@%Y#UMDS0p%0%5 + @oPR>IQ2-:P5o^`tCh(#m:\"n,goDa^c4k\QnP^lO/(5m"#D-ZWpbf)$$)42#,6E"&9AeW` + !Y*KB&3P8"DaAC>UkHXK2g?%OR(_hTLiQrW?cRE.+F*oB*";K*d*AKUA,D8Do[L)9><&[qG + cS>8kISk_&Imq/FQlrq[Q1VSVungL64nNfQ]YL&1W@_(r)u]c)$YfN]XjN.C["8SBOC+j<@ + nSG(LMl+o[K"Ii-s,ifi_[V]*u2[os%*__g=9.WOi?bNAdq2oY2K7\[r5CSR&^ + kYK"k7[)'9*kc#$*_$b;],b"5q)"8T8updQ>WAhi]NJ*])-f*br_PJ.Jk6Of/]]Pk@Fj\qj + VTI.c#k;:c9U.P*-(H]9eNSaGb]!=946H!"ml)6"49Y!"55RiTs#+sMUebaW?)nr+rMhKD@_8q@,];Iq,,C*DF3-c/H(D61p^!bj.iPVlR/;^K+XOG#\ + 8-oS/p9Zo$d@s(6[R\[VD3CH%Sd*!B`"=o`N7?<&J7po,^C5Ic_;r_%M3>p_Jql2%5IB9'_ + nodrX^&CLD&(Hpldr>X>`'[[fji<^046.:$ItP`H>peSRJ,s-;2#X"kNqPJY;CbqcWYX>+R + _bG:\+'Calisq5sb4,eFh'Fh^%WG%u(D&e#IGN#":Gq__RS&dELb]`fDdZ58r=iGuHuj=C9 + "P>b>flia=?4Rl1^a/^^;EJc^0*j:-:FT+5(ki$:(TQ^?Pj#s$L(-LP;-%Grd\ZG&VVB]LA@Bm9\f#4C/=OR/T@W)>UGVAmY + Hfr&(^pUeDr[PuCW#bPp%0M%.$Mb4Rc!qt]mFM%0thM$>lN4o2]/cS#/EaaP2Z&+:n:2V02%N"]]\JVN)ZY)H"N;TAafeFL-pr#">uB__PP0g]f!i + ]A!u.*^+fPs(9MerP=p$AEX,h:jD!<#p_B?JbJH`"'65pAL%I;9?[SYSFk+$4V,a9W>"42* + B*8&]:f9#?>H:bcq]ab%CPS_*/5TZE0pSY7.(l8(,-OJUbQ\t"4hhkkQ96_Jr+ + g5a[D?`o0PoAqU&]WT$1cAOMFWbr(VjD4!s];YWALsR_[euI'q=9Eb8/7rin1cH1&LK*AZ#h&8k]RBF]TauFDpV7/k0Sc^+ZQmFQh53SM + %D]Y2aRIR(E6:,>^TYWkmqu\l'09:uWhK_fe=>E,TQl[5.FGTa=1L8meq^lXDq%44[X,^Vp + LBc6j/A%`UemIo`ng'u6*H*#VT_?pZg"FG.O,4(i"!orjB\TsIoCZ^i^r-4"9[QD-Nj.?a>.o5>Cu + ^Ho0,9qgh>DPt-4QJ%CZ]GBhI'W"Z__U"!KP4h_9Jp6F-)YJ(ZY*(nX5fb@OEVYe4ODuX\ + -8R&GjoFCl'u@ + *Q4t[=j\$=R:S/tL&LeeBb6!ctcbt]/W+*'rK,nGp*bcMEtrXsEhY^H7eid1^[(f&7LYHLd + "#Mlt6A$QU1;Q!9\M"3M5KuI<">O0O;)Gi@;=d+VP,T/gL,#MM]0bki@\p*UaOY?hs-3?Yj/#Y(.`9*=*^m\t/OE5FEeZAYgU8V'7=B?sj'V#bsX0 + Tc/pp0;2VbgG"F?U#mP5rT#dr9\QMZ0l=M<"o<>SH'o=(3mg87NXVZ%-M;3:G30MhdXFoi.VtR+Nb6EQQ&b + &#TM!:)P$NO>+(0-028U&>\@m0r%lXG+=+n8LMAO;?Q)2%bfG<3mY;2g_H:A9SNV<8L-,:R + Ynn1LfhV_.rD%?5DFT5_%YB>IU!!:T.-c7N!R$!l7S@m + e!rA3C*a^*gXM1(^mK#ffbj=H9P^*hL!j67"Z4)jGQ' + E7C#)h;M=#Aa'TE4Ojf-G/&Yj;bE_Kfkek-I$8"*cpOJ[`\[\W^2741%A9[,SYo2O`^$Z/=gJ<]j5/9bj>F^oF + ,L6Vl:a0#3:*)Em`1f[_,"%1d"rDFm&*.YDV^,P9=CUd"uY4mr(HGAl1sPj,?rdbl`\&uHl + _Ce9A8+TU-[2uH!&;HN3q4f%M%[)>rT*^#4T>#HhR6_!.&]a<>^T21M5:H9#5"hZa7".9ne + 3G:MJ1GUVRh_*/jEmSC-DCP*$A/8@$#b%F1P.$bu,mpitk*`MUq#E?Xc"a2b*RUr7GaqTCP + ,^fimO*tt5)k@ajC5T()`E8"B/en9?A(diS,7.QHbn$8>cM\e$)(7!4\Dsp8IIS6W^RlP-, + *8B!ngu]V,P9I\V[[E%1TS>Y_,E"JGZ^^nKi0)ZL0@")a%:IV'n95Ok5@M>g='&U%%k9%Ye + 7pl2/VEP-64J!u#/EaaOtFtsOtJWc3d:<(ZU1QF8HXU]!"[hEenC0>'*e@ZRHFihiPL;WW7 + C:i\&5EE1FWY+/[N\AV1CLL=QYc,R".5?>0fq^r:SZKn@O-nN5N)Yr;7h:P.9VHTV/Tr1>6 + Mdm+AS_56N/BhK2`G*2N]*$.!]Q4ZMSqCAJ1]B_&gXGDTqn=^[BsZY%H+^.9R^4Ed)?^8kb + EcCY(1^]1.DRs:a + e3kN&+s#TUrALS(nDmHhmFZ^INI9lSJT*kaVX(!1k3 + )s'Q4g(XYAk''9#ZhdI$)P0&>=SK0Hs8"![*9Kjl$Uneh9#4&>^_1Mso191eU%J"jVVsT!= + eBLOrV,=+>n/'u^_tEj$'3RYSldr>XG^WpYC;4$c&OC>8Dr/,E^GKWNG!H/fUT,$O2Bt(+6 + _MM2DBhXeZ[i>1bj9gp[E*\#&sqbBJYscf*cc=CXfp9955L)FRYP!]5^djX[=-C%R(=0Wo[ + !hY.@HPAbe:k%%GJ:0:OIjZ`Cm\UT9/<6J@9CRDIorYC=S3OeB@:JaD['G[Mp,]o<n(e##jAXB9^0@<-<@nloV+m=kh\];8A + D[F+Wk8=TOW!rJmnpHqT+T7?hXI`4SX>?e2n.D`j)2@9cu/?[O(=0GX^*0,kZ\*]"Ve3#8e + SJ+]si613@Jl!j91?9WG)SG[e42ggj*-,o$RW%BM.*::t*BJ;H\5kP*g&rA?@:.!@@XFh8O + em>*I]#jM&e[7!U4L-gnFuZ)Y2@j_(O=nGK80U5&/?B##YpsRBj&F#SirRQLmpqgr/TEG4/ + 9VpJ":.r=C*5]-M%!1\)6%pKEh>Jmt]M%O!h<\HqgZ,Oo#9mFmEXB`V/]RQafAj@ml3YfQK + ^di'T,RE-cKO43PQ?sla30iW!aK5oqk&Jk]$j&1Xm\(IA2nae!*74]3]]Qhh + UMUh%c`"dUV?&81-rb+RQN)UpV2#W'Egd9q,n'L#tk%PAEC!?A!cI3GPa'ar]A7\o3hVHAu + pg3.t#_(DjuHrQ3oKc!"hnUd:->H!%"ROnAM?9[[>$Y[PJ8SV9DN$#a:I:Sao+f=W=uN\ + meGNu^:d>O>O=3q@W+ZgF"^e3#9PglbD0e-/Io7%mH2^]-l;BM_i7$!.eOG^C\('eFH21;1 + <1q---X_,`);l&ad.Rr,>c!8\rY[NH+(B"n`\)$n4=5DpFLeTNdB"uOur(f:jhoasgqf)Ha + E1KdA:/0R3R'FKu["j:c'1n`u>3M;[!hZ$B-pYtn(ta7O#2$$6[fCo[sc^*4or=]jncDEF#\o]C6CdCZ#nh + .aj_ZXiUrr,]b4>E[YiT\N7,k3(pfH'aArHQ$/9k][&'0NU<;A^rJUdi:I$Ig[l"/U1AM0Lj6lS1hbXP + /TF'0Yo)q!2T;_+WqM+I>IUcO)@e'gVG,#L&KA##d%KUu4=m@J7Ok.&Acc_sBG/!83-Xd1% + ,L1+Yt[o9KjGirL02dCaCqf@4irZj$R-dV(S9`3&/q)2c@XMt_lcS.J+.EMcAu4;&-t\rdJ + uc3(\@H(Za5d<#-N2oGW9Mqh7Im_?c`p9^>bJ61!!#5E]XO9JG72r/D,ma]Z)kuV%B,bYp,g6]p"<3B:tfU`f>3/gra0' + QMn19TbG-m4A*jSVi.29bJ/13V%>q7._fC;@CRl4Z*'AHWAdH?\'.iW1X]@b0Eum#C!2]cK + Fsn82S;.:C8>%S/XFOTWCY,^)US+ou1+Ol5\;j6*\<)u0]Gkh;h0k58Gb(@pDVr0fBjeUpM + ?a)"e8EBoj^A2Hm@WW7R3$bF_$?:R!+u*&haMKLDbGL.UFM_oLECu$BjeUpN4K:1I + %?jT?!.W]o15"c^m;S>SN\fE<ISLdE+_L$IsZ2knd`HL;`?20=gP!V3ep9Y^V^Y[)R9InT]l3 + r8>bQY+_X+@!PZDPC=fWE_hSaA7)Aj!pU+0Vr"S"*AA'MboANH?I.3?RUf8h#?W\3]KtP2P + [q!kEPYX3-*ZT2Tor]GIJA2L"Ope9J+bYT)DV;=l*Y_kiE[lH9*%!cPiDTAORn308l"N";kS[gSePE9`+2)RWKKj>;783:tZFS+eEC;$mRXD + H"A-#RUim)mmN2J=;5sOMLu:JD.W,? + )R:U:^t_%'[F0Tp`N6.,rr1'OR1SQBoOh&7o&dA^CWVr72,?)Qm+@Hq?`cFQOI)0mG%;L*R + @/i,*Z>RoNrWNT7sFRuN`IPpAMRZ,X(rea?d&OTHP*f+$Zu=AE@MDeN#4kY*/BhpcjieQ@( + 7)R_)s7XdJt5O+6M_&M:ph'K;g\p2/]"ajZp^,nn+X,%(U=L\;*)'#;R[ma(q!4'fC1A5V[9?:aOLBK + .CA?ZJ$/YJ\Y;$K:G>"])$%64=1jG+O$O6UcnF5;K^5^t(!i=>FrDaWT9.\A1G4+AWrF&7< + GHnDCdaDsC%Jt@lG)gFo[QthuhRsm-r&d.c[+IquFZ" + "^-e`jf.M0VIjFq]^IN7U,Pk2mEt)Od+`g:2._VPNj1I2XPo7\`d.)SQbOc9bqQPmTW_*(W + f+UuU%;OK"bFU7rb>^f(=t-3blO]`-T#9EW/]4=kj@1%n+iRlNK:)?<7!LgT$QJ;]=YIXZb + 7hS#g]S$m(^We,hSM\e%4QBp+Wj&`9&4aL(,<4$;aStCN3H1Bn56\Z"`euW#^rE$B64B?Q% + X8ah6qM&$dnNF%8NJ/02IJPcO(!Kc7f\[cr6a572#11j^/18-;m"5KQF)r-f7_[gC-EI:N6 + D6(Z-"Z#MJRLSS]"!,%&n4.K\- + KRTOEKK)i4$Jsk*s:"S#TH/>D18@1nY9NW]Vi?DFWV$%?@?a^[((G;TFNjq"T+'E4p8O7ao + hUd\qNemf!.^miR#R+db:2a[:kA'df9^(D*es.B2+`2[n*pe&n%4A)PsenA,@J&,dadjR'f + r@iA0LIi]A#ci?1Yrt$!EGBL%Lc`TM5T)(\Or:A*u0/HCS\l;R*Z>%dbpYUHB9MtS-9OQXE + U:7eK_1TP@L/**'p[TLld\]_Xp_@SrY(`4RM[tZoD+oRshBe2\CGQUHBi(7b[jX!eWjYuSB + k_:fB@";8m2Ei=Di-dd!N]J3BHa2l%])cE&@D*!phs-]Xdknb.q(t6!:cO>0^;5\-QmYf*B + :o0h8V:Mk!F2;S/rYi9BH?dT'Gui_o'101a5a'Kq`5+T)86K6TDk5'6o!%m^qpKGODP1WG9 + D(OO)6sF.40k?C6j@?'"2;mQgp#+Rj.-jlK64:;kIki[>%S)q1IWpW0(Eh2K9=)M!D.7?%;IbN!!L/Q?S1#G:m@6qcI9,R&4fJgr8j8P:^pDOFlgc2"U + c*Yo[6C?^0Zml,V)osW:l@GJ,U>b_PQU8jPu8k`\aXEeBLPB_1=a+.*9Z%n9dbrhQs/>?p7 + tnXTE=iP:'0"m+F15hRn=9qXo-2O$EWReeOBQ[r0#"`A]c$EZN.VW6<[Q/;<@_2UGi);GtI + )X7Ig+CA.#I:S0g^IO&r/0R!C[]HaZk@iEj.l=QhtiWunJ\?"*Op@Y7G/V?RRrr)`GPAq#3 + RX4Yl79!QW6@jO>Z.#'Eose0H(0!-c,sL2Sq:3C\r;73U:7rY7*7L?6CL@=;bKN@S&u"S/8,6=Uq`muuU2PWUMe9[ + ]RV,phXJNFoB+ + :R4lIVdXb+T[S:j3K'b/X-!h]/;OjaCA"#P7eS(j&fH:')>2n,`a#k^`o#OU?Z(Y7jnM2B; + D+5;`g@#>IU-SRo?X4c0ocH`Z7$3YsC,=g_s7(Q?#=fE_Y1A&Q-<\Ot617[1*5n3K-MjYj`MPKe,!)0]"[4LimF%h(W/$BRC<)>TY + `aKI_-n!X):QAh?dS"\MF(`Wh2[PoWsL9Io*>*g;dU5hVh=R2En'-h4p;uC@%>5C5!I$m+K + LH8@(K-YVS]o*:"*&(PIs#F(52E59&\R9F&@u844iE,K8J<*(Q!*o>YG7C9\kW:6RXLd,Q* + Sd^8'0=;*pQtQ-/dcf:sB;p90("!a+VMd5T+P"(N6O7K_STefB4MVU`[`U(d>!q]A"L)"g. + 6#T4&*OH:$Jg2Z+a9ESI3Y`6tYCjqUe_WN[1WV[);',.QS\Uo-l30<&V,S?Yu2*2cQ0P$"p + %4n@Wn-P"2\/n:=pSFr:2K%:e8JlM=f%$g&7:`Et.D`jALETNrr"Nl*^J&;NcWPqOgon?I[ci=A8#3?[ + p&`&hsi/TttGM?hj(/dF"gjp"&;'0PoAqHjU1R!/CZtj9mR0]0op75dMKdoA5!*KBQ,=BiDs2'r6L;o^54n@QKCq.63$r + _0acR+ldr>XAF=Br6VNjO-2"(CpJu;jd + \HGVC>BZkFOXPdSND%=^m#)j=8V^YM$@u4$6;6]1T#_g1jG1S]j2a'IX')m*EMOEgtW<1gl + `-f3oItFG&$3cSZnMGFmPX#Qj-U>!;M/CHJF,[]tQ?M1R_@FIJijpl<]NOVfXs?d8F_a(gn + ?ZW5LN#^[%U[7;d!o6pgg!T0cu5lhgPT657AW`SJ(G#BbO:W_^D.p)@hOBd"Y@7jY#5qd!! + @Q+nOgiVsf`R2'Bl)LNN]'?\SE-(<%`,eE0;D\"N2BV>Ho&+"L\!^@dQj2#\HmdBKj:S'u1 + c*9sjY$JX^_oHF1FE%?1J/0%'K:gBGn_bH5-RYhjqtHlRj&fol7>hr$[M'!d=rkb?MoITHM + Zu]"d[V^o:7!P:L:VS=RAW2pp;#g;5;3ZEfYfUSZg4=$FfdRsq(-5c\o^6o]8d66jpHtnj5N&0b%7N>%pg,f>$V0!?ogk=Yg + j1(ZO?Ji"rW--5]StBS1p`>ei2#Op4'tHsl-ZaiPt\.@Dr&$N/!V5Q$&CG@R&=]6E^iOa/W + j'T+Y9$B'RO?k!RB":)hq*uPrAqt=mRSH'3X)@c5SYcogO7?MXp\8WU-f(fmia9O/k!=N1m + #6,J[%@7XUCA#,Yk?rN1ieoHtGFC=#%`46cAV&"IbN%UAN%HOq43hF`9EWIOYWamC7\59u8 + 0hEJCnZ$Mb0%m!oQ9*mW`1I\1RW=<\T9-j>VC8j"DsM1(=;!S4J"?c!eEV@HM-Qlh.c3+X` + /S?CtLH(q_OP'Juam(V0=14,9NqQ#-9RGK69;J+0S:8VbX@p41/hR$;MYfSit8-:WB\Hf<8 + Ndo/`TL,NSEYL-f8$JM@VXU;;-s08+q/6%]Ble"'7)3[H+_TY:'QCQ*CG/@r31ku-0bNc94 + De%g'te`:=?:scXfgBM.*%2^c!rr.ou4.,9M=EMYm0JmLlKP3O]T787@%JbOn1gl/%.]]un + `5KTYPa"#WSaP:Dj6l>1HmC3m$O9,]S-fW3V,AbiJiZub9%3qYdsqlKWsYWG$[=1'Xu*CFc + 'U3fIVRE5V[YJ:&tnQCuFFQ14F>P)#KS*IkE$h1[;QWSW&X$o4$0b'L)FZhH=\FI(K:T^DnkY!T7B + Zl\nD:)XoCb=rB`\sE[#1VZLdsqHpEK>X0mck]ICtSE;'E>J'#!aD&N.>!^ZtU3@I2.Y@Fm + .0Q2W@7#Q$`V]TVe^SM)(K6^jo>`"glY7mbPLHA@@2fUa2IrOc-f"rONLWi^V/TmnQG?5)M + '(CugS)l-9??*-?`se@G0h":Ah9!RSK)oAE''04.Ii5K.)&]6E^u$]a'Va`X^$q*;qVT\[6 + XZdcjl"RE0o07t[GM[&;)j_u`.T:b#97uum$W*%:-dn`2^SY<D6>c9Z&];r_&Fo-W.`- + f',Y%;*Yp,J:@Fd7sLTHP:+i37Bm\n_-hco&H::A_844518Y(X4s-$HR'N;#+91KAM$=pH! + 2sV\VSmVA9'+r[s%QQ2`F;`SDr69M0L^BgetaSP_\ppR(;K18JKs!k-[G@JLXf3d0+AC54t + IhO-hZcTMm!&9`NZ9o&A5s@U9#p,,9#%H9$d'eL;Vg"fl-*$.lC0h0+EHCFmDM%$=MiN_1T + +::+YNbB?hLL.h\AB*p2T/+4QY^(AfK:<#Ks08M#&Me)t,@.%m+8=0GqQ+u;&5DVUVFSr&. + h4aZmU*M^$?-[0&C3&hB@"_`=;``O"(5/1UJn*<:@m5+e]5CP`-i;3-4XhPto&s\fM_[oC) + _ZBn$O)%DkF'Y`dMl/*M1he_I*Yd7Y"qMe>o_%l'/f5TL%6BdIf>L"M4*U*\6r`P\>nS$3H + t[".R,p5$hQZfj>stnS%=j`q=TYe;E8a,eY).j#7un]k.ZJp_j9!03e5YM()q2SjIn2SVTN + 3Gi\qn-%%4WhW&eYh5CO18Oh7IllQHN_\dCOJdi)5]06uk.H)u0KS1hb6#qkcs+2huFaa.P + `])ao7:BE5Dbo4E7#dA'4\F]g7@RQ>R@Cs>qUne%dc(`\VA7fmga,3-dS5$u[5b9g.a?oo8 + ,[:ms>\?&@N]6NiiNE=,/=9aE:Xgd/=rM1I3Q5CU$"rDm^?]]WM`bO":P)1Tk.1HUl$Ul9" + ;5m<]3mi1`/EZWdaci6b*8"7\BfMa,_Ng,6.WLHh>s.((+kPK7BMC!O[+<>2$0@`NV7;g&rJte(Jr"mALcp^/R,eYc1bfVZpLh9/q@(WA[RO=O6Abomcnqt3$_!=G3fJ\ba8aN-'\/QJh* + [r:$\>HjJo77G1rYJ(?j:(JEgjJ1RoBs:PW&)0FS+)`#(R%XOW5sYOq__PcD&0$$*(6^4#/ + rkmLKUla>>F-0HJHk@:=/$G"SCF<'h.J_WJD.GK972Y"/3\.;N:"=bM_UbdIG3N5(gK_PkA + O$f6pC;bO9RfFZhWSmDUDpr`@,,W#3X=)QV*8#XP:-uB=fh6@T&[SD[(G6RakC`.a5t!55Z + F\#%PaA7REfug^OIdBE0l6n6l#sgUD+1l$$PjVF?CY_.F.Aa_p5$+=D\,dGT.&JQbT8'5LF + [0Fbg]VMBqH#BaWj-Jj\l2]=`!.-sBJY-(RR[)?AH2!FAo:Xm%`Z[_/`^Ps-&aBT"0*Erjt + 'u5G+SV-=>CtUQtT*JlWG.RffcC>3Um]3P*ZI--h0s$7iMH=,0"h&5k2D$Z94Um^V'6k5]q + #Yd7#X?(_d*SYC24@cWh_\]t<0\pIfZ?]:PGs(dA;%;o,nL>].TJ`!5\+E$:8_m`\ojW/IE + %:@ + -X*7qW_S"!W.HMSS!]E'FcEokI(a,c]&pMBNfeaNppVG1QnULGsQU7rj>>"uB*JB.ON/e0l + K*.\=0B/Fn/V=@Fb3IT^hi]9Y%NIG.AcfA`S%QBriqK"7SZcD8c>]]#ZCQ1+ + g*Mq#j(p[]Knn+)0F\ljq4RX[IMoIS@g9GXhKB3M;s?rbS$W,V/qLe_tY\=PtLjpb0;oJ\U_M>g24?r\HZa?Y\lpM2CQXikCG0=VM`6,;aL_E,^:k^\1u?H*42NcRE(=.U\:+hHhYD%8FO4_%]Z[iAIF&l,&H$7WUuW[MeTsA?dRlN]"4 + )e?qU)Uaicc6Omu(lr7pf2_>aG;H?d@V'Oj8@2BGi>f@RKIf<1dIgph>+oU.YqI$=?9:acI + -(oY&#(7gmLAI<8J3%(X$80b$@)VC8Y[CS].5EVQ:7U#?nc]dciH%K#;7_4V?%K,(CdCT1bWck9$5YFO@F,*OufHLI*0boDVU&Z$ + Y)&qdaHSD1JNcD0+J9pJaM4?_rLckUQKe8Gk`[.O74umJ/KD*fQB7gf%'\K!*_;#U<(EL!< + LI$h#jHqY&>eTb#PKCQ'IW.mdF9Nl2()=oh>1cY\98nT-&==`2a>A".,n[)CPLRLp8d=C!_9 + 4G7upP2qcT32i1&WGFE'd1g89o!*Y%r?)XicZ[2_@&;9"i5bWf;a*BLabA"FWMu_>H- + ;qViglU>0d/"rCA$lBpa@sK=\JqUU%a'@9imO?fX"bbB,@fK:D5]sZ,K^oC!;F(Q9DF("!.n`:s4tYCQj,)t.qeq&ISioQS0$I + 7p(QXs',$Im8h(DII"'+r*A:d6N-]k2QE6k_E9kEDiU_Zd6dbf2%E()2PM&9Tb.PCC;COna + I0t\eq=lt8q>(%,*?FqQr[!7b0mW?NdaD%CUVp#?4UlqJ2e58uKM7_la#%1dfg5f!lVUMuH + >p!pLtj;%GuI'sPX6OY#uOPs36EF$U4idb$kji"NeBYgr`"_g^`'P8#/CJ7SI$5$&rXs!8E + k7eV]4^c07#:hu8^a4`<$b\8(=C?="!;O'Z#=3uZI""Z#.=_m'q-QN[=507 + lV+[-[%j%Ab2te[=B`QrMHl'U5!-n4n5W-j2+j??/H4^o:[gOoH:9n)J + 5^qiKg:I"_5:d;"0U+G/15).84:h_OGf$R+]`LCjKp2=[h*<(W6r"gf2.MOqiNID0XcA1mi + l,nD-Fq9i&V)Jmi:Hah7uj[PX@,4=3%l5u!4_Lj^>c,$Jd.s + kr8*?Z0b#fGSt#Pr`5(WRQ*;skC%1StI7f.iT8T/bZ=V5Vp[=ju:Y_9'BE6iQ:b+LgE;NHg + Ju28cQj37M"5lO!/d)W,MF;%<-i[Hd)+f6k84uUn7iSOl9kaTtoii17682-'Q8&j8L'IBN; + W.3*XM;N\2#-gu-7(lJa;F*:i4[%dL7Ks"&&fss75a7C>*9q\pQ"Uk6 + 3e'piTK6'W6_p9X^f!nG=O#;`?;CCA"H89ETX96"sBNG(G/D_?j"6$Y]%uZi!YUI=0s3$AH + >WF69,:>MKko1]W"!T6I+R8I6:@5gTA`#L`\%!;]qc!.8*$:/&#'#f%Mb#?+DZ%37JDDbi, + ]bg9bWo:)%WennU11pAbSPj65ei"ri:5g-$9 + 9ERAO!V"Y/E&^"j&KP]t&2km^\Pi,T[r'mnace*N`u-hS,Ro:aJA%586A+/YmNl+q(@?RohU!.gT + H+ZD@SiPUGL`uKG[KEf6:G;k<'$f5L0;8b;q?[UTKO6o7H*LBnN=T0b*K@#%0X!hoTR_R>1si(?bh:ac$W + ]8kAZ4TEAYc@KR&d5/0TB[@oO:Qj._0"5l6I$#k2e'GNqO%=jM9Vn5m90$g.S+8%$mMc`;u + ;,9Z,bk$?MBN&gh78*eRTY^Y_Xh-Y\KC&`VPO**(Jad;MP)MNY,`tVUDr-G!+L4).23BnU2']`Pb"UnKXOro!$\=Zh49h%pS9PQb,r%?R65>]L + o!0Rs93KYuRYh_I>nR1R/qFO/E!?/Nus%uE*ue^a?jVRj@=SitH*#S2:;!,;@nnT[ILmuQI + @DD@kVgjgbiJ942[`Qnon1G\/OKU5/e^kE1)$YsQpKFUL[=QK`XQ44W-]FabKr2,lbL`>j( + %6@4\/RgHr#($CRl#d*(heKR/S0jH!US@oP+sCBa)pIT8(%ZSW2?_K9'uURVlip!.,9q4&i + 53QtoX[=iIf=a]6+Ejh4RiPr6peaK2lPus7oB)f&f\]?YGm?tnC\9;%o/0&6*D4MS]]3rP7X + Nfl/p6[U#QaiG.I_&\:*CVpHU`7;W3e,Kt%0@g]2&d^ON@A%ni8B9Y2IL9hE1U.I-U&oB4F + eLF*#&Fb?+`,Dp`+,&m]+]#!L81u(5R*Ze(g)^$_gNlGY=fkfL#h9aR6DV4:[eb8:,j\aYA + nm;eJDSTI85h["o>W]S\/@S]Abr/V!_Soic?ib@k\f3Q>!E)?jL$OP(EUS]-E\?iYhO!/<%;n`hg=fTkV.,m>]GB\FT!B + DImU@_=GRpceI>dTY^@a`%l4a>/NkI?2pf,#3A`RW-X3cq`=7p+[S6@cmu8,D((rRaV&LPN + /ckA]TWS>0DLhAo#mpA>8kM^K,LmfRa:44X*1bHcD;&gBGiAq?FFt\"cGOZQ\\<#f\T0!8HBB!V[E:_t=Bb8V?0!i)p.](qYCHk%@fQ.o<@#CGu7H6MEH%%Ffr>Br;V`gc#p+%P0=\*ns;&ok[ + U)Eg^T>t-7@jA_9'bhL6R3)hXKBs1'g]6S88-h*VA.B$=AW]X[@)n9Jd,@VRT&BlE\XuT]bj/K^ + <;]'2F;V;OHuXf4gg!>?YYb24C/m9<=8';'9Wi7E@?!epS%sKl(<-[o"I&t.,#jj29)_t%q + !ZX!;.QtV9Ss?X7"TqeCmnElL6$Zq2p0n"DLg5E0];@bF%Qd,BDK5I:L0;\-9H;2%!2X$M5 + qR,#Ya/72s@\P[`W-g]l((1a+s@N/%dTf9Pc + 7IB6d%MVCp,$0\Gc9kTHa^QBmgLY4:gbru/ARW2R=lP=o/7Sg>Wp3V@laK:CuF6=11?9KU25[[uV7cSsbA8FqXTMU,GLT`Am#5(kC'7!]A5#4nl/b&AX5DK_X???,DH$h7dIIpkK + `u-7!WYGj]bL49Ro%eV5K>GQ'SVXN"1B/cI._4\M3=uk>`$t%2S)2>HC1*m7V9f7ZCOXhDO + =Z\Ir#,,?#p,AM%G[q$JqBpohCK;IjlA+8MZ4"oVcoFjYOD/Mf:c]+^C8*kWiN`U,-:QLo7 + CGf"-^6GgZ4fYje,)\`$ojKNI:mRX&h[/"Fh;J)^%kIIa688979J\'Rcu=K#]3X"1RNN;tb&RIF`4L@VQBdHRU,V:B< + DEY/s4(q^e1REZKA_de*^^r)AGJ_P8r.LKP[KomTo5Q7,4ADFQcm+DI](-L]=gn;6i9I8&UFBJ$s4*#t)!si];1k'WpK5!!7-B,ieqb&'G! + ]RbiZIS>k1JH0#e)aP\:1Fp"Os'0"nOKNP5"_$DQ9^_/SFK9#2<\/s#'"-#f/qYO49WP#k` + 3\pKOE81H8A=AOn?KrU:*jEQlg`Y32/3Eh/BfpEm7ROS[qsM',3\pKO0\rD5\hcI]mr<9.. + M4dTM&WrjNA3/t.[gt`krNW\KO`?;eC7I]aP\;\F9A><;bq^d#>n"\(J-OLEkoSY\,k(Daj + 8l,m7gU"QX4!?9h+tP9FTI5F?1FaAFP`?])bfDkrPNb0p+"ik'+a2#7u\1\E\H>'!@3m;,O + \?F*U*(@pIa2$T^'<#VBqEPaa`D+6Uar#k5n]DVt`d%LB#02%PW2C'CojJbu.a%B?J@n,S& + :+F$PC!Zo"m%@G_sN!rr78&N2uJ&%%XBt-#Y2`F)/#Oe>/%?S`UO*c.$W'dQ&ZL-Uri:0Iq + J8$%RBPO*%Ofi>/%eFB6,&RAfNGa8'G3gu3[!_>8'@?8Bgjj+HkN:dG8DaORdHCcN04';A% + c0LT)^$FRNl),"UM&t^7blq!qGsf?eT*)rFZ>018DF1Zg>/F-Z6_1YME7Dc/U8[\E)X=0@G + 0W*4.JDa+,q9)(jZf%4$,NtK7eBpmKQ4G-Z9ZT*;T9%Uco#-/Du(Qgji7mM2fJ3o6l#aOH6 + ^n/rj[)rr2oDOhjPTE!)oJm[Ab=45Na@*lu8/(mSkX(=Z,F]nN.#kKd"c?=dYX,]mSd&Vf* + !L)5kgBTg2ARCE9m\sT"H/#U3k(tq9uSU72FAS".t"s79p%?RG]CW&#p'd?3ipLc#j2n6Qp + .[@Ee4=om1\O/?nYC[`'B)MGod#l.7Qu`A*io1L=_6^cU^4d&0iWbA,RaHr_YT+,^*PrD_j + Gp%.25p0Zg^^)sJ`BA)mCR3daYi-78FGhF(#(tG"naX,`cG[^4jt#9`q.cm= + ``cAB'm*RI'_f+'bti[;2u3<):abfGMJI@fi6b9SJ2uRN/G2nTQeD;CTAMD='Q/]6[C+@i_ + ,K.O"uZ?d31AoZS9s3cggKW_S + C@[m0aE,*HW?g,Te,.<>65c6cT=ZEO-T`mH]V,5t>1[S4YYk)_KjN3UZ"+o-T\A?CW*EoS? + F!qY,Y\9;qMuTdYh3g$3,``8).[Am6Uq79JT:jgdA('gVgcE?"?b=n)_e(b`'djKNA + 3/js(cID$>oshQS4,S#/13'#"W`R"o.F;Z$q9KEJ#EMQU4!g>Fe11BeiP8lu>V>*"`e1e^X + gD%=AE3%A%k-1u8fj:aGjoh'j1s)[okNdaN3d*Rj8O5H]1OXL)s*6Kh5g!4r80;:59N!%^p + ^5hoa,3hTO*\kGT!gMEk'^=7QA%hESqD1rH'!k]HpV5HP64j7<#N?&U((O6i.4\ZJ-d5,&#X/\PsCuVMlAe0R$^E6$s3QMg + ]2':Ufs;[4[nL_Pa)mrM&Qk%?"S/k/!20p(\Nrsi*>BSsKS)>dE<@,e4<[#;+$W! + )ZY.TN#6DXAgYAI5\go<_M^jcY+S[WI*S^dR)pkNQ]JeTS%dQJ8K1S + o]22@,SEVmSLCJ`6.S.O&2tH3g8rkI551*_njYgs8F$47R/Z9@Cf9&+r<>*kBrFj;W/p%@.KCY'$?Dt2i + $>J+Lg&s*YI@+afMZY%l8,QH"CoHXu!eYEa8i/mXLN<'ZKj7We5.or_gf_i=m]9AfORPc#. + Pq,qk*s)QRS)")/l),J21<5+d+^u=*7T\RRK@dBpCopBcS(;Gb03Gi0/cODHR5<[Pp^&mpE + ]67ps8Jk)K`;(Ad?V5X+LOEi;rcX;),X[FIJZKYn%JHnTChjNFra[-\/G"P5tt'L9['\Z+W + %1L&iX4)Nb2pZH[4TI2/1L7St;P.2o<7TpPPLTP9s%pkan)9(^Lr5i5]Q\)WgNTa3u?io)` + oaT@LcZ/=h\69UIN-]=WDDm;VXWajaB[,12Dk4.'pZKU^ud#$bTD1F)uiggHdu)3&Bt#DA8 + 'P!N7PU8b+`ThnQm[%X6,+Q/t5#R,g6`!ohGqXjDFk8OQB6Ou>%Vt1/UcCKm.^1u1JL)N25 + 2K7%Q&1W6=%<2L$kcOW)R1N.L&kniWok2;P#1D5Z)WAop*Z#V_o!Z0&p@e1pgu13,q$h4^O + "-FXPEMTgOd?:oK5=A.IX\h&kA&L(2)Ra=NQ[V>_oGoeBG#[;SD\tNm<5P\9!oFs5Yu[j[( + f"Hcjs1CK.b?0KL4Xirq**shI!&*80(F(<&QZoe(&IE*_A^dK:d4%Cm81Rh-pBq$@_8.:/8 + )N+bHA2bCXm&ed_ZYIdtAnpmBO.:ETQ:$(fE5chD:`=VVML*Z$rgp5FqaQ`5^CX`jU8m<%1 + A_SSY)YVMW*Cn+&+4fCSZ2YX=thO:#G*Zb0@h.E]B(aL_DL=t85o^6=7q!_^ko1`e9EAn@.L6N-*A]5u/T#EEVu?TiR5+r<@`t&hZlbpu@8p<0i + s,*[<"sSQGeA31A4/L"Ql7c^XK4hg1a[*XF)uD!O<\%L:/9(GhH(>7"o:e_8kPfrN*IVhPa + )Cn0-73]7uZqXmV@\VX4;";Y%@8)/m-K0HhN>dXbJ/6>l!s60C`eDr.';=k`G=*Tr3MJ<%? + Lt".RPYqXeL!Df/'87ncSbFiMMDaL8N8VU%fk3`DqO`NAclpiu;\nM%'b3ASP7h18*B64[a + ^?[XV%:mV0S)KceMF&E'`Bl._+^E-,,&JZ%gD;-smhV=]o*rPRW + 0JN"5Ka[<24+W<;qWXof`BG7S!ZjiQT_FV4>ZW-o`f(dVmbBhshd#e-.!32JS2+Z5q[5[I* + "sYm_!UiZjCIanii^#=boPWT9;'bueuW!VG]Se$MlDk1,a/-'pB-_7^^8;X4W=qD5dd!lhV + PA8.sP09:3N,oDfKd5rOW2$77BpF9s?SN`/,.6c5fjk$O^AN6f8*N^]$93_p@W@i5*AaX\V + ZNG@j%5d-LA3X?3)/l-lQjJurCp*kF<6[UZf$oCDIN"sXcgpLe)iLDVC\d:=`UC.3`'Pa7V + A]Qb%bQM,=onn"*X/SA6j)FIGp#bJts,=h6FjXbo]DDGMn[d(r[Y;$lASJ*n$op1k3j8'u= + =gViS0''t.QX<:KM^A-uP^DJ?dOL!PF-].Q03W)P8=0[A + BBK:B/npMQ,b.NX*;ETlBn2urg*^mjqnqYGC*GW;tICn;Xb);qg0\Y(mt=_2/U91oZbN>`- + ;-VgJ?!nkH9SNEO'6f7sJ^A9( + ^)OXC":ehKgX-\>iu(cHDWK8]VFtNBKjO6"hZj:t'+5s)/S!3" + V2uHnmaZLR`.$H3a1'`FtpjCZ$=\2^2)?'Bsh.0dLm3,mkh!WJY1k*T87V2SK6roDD$5f(t + ]oY-n*`ZFY!*4TV!N'QJcO`]Qc/QEiS_hJWI(!eiY2f?R#>ZFc->oWn + N5X-G1)&ZDC;2E140KZNi5Q?A3,cbti2b#20NYsXMY-&8Gb2(,%dA*[VQcnJ<:S*4l%Y4`3 + f@T'A`5b23_8CQ>\mR9V(DWcj0)!?,A?ndj-65'b!4o&`c,##;--iJ(V5:$8`?B1&'J,7d: + k<"1#A5Ee:JEE=Ws9+E"9etZeC:!QIic1Q_'gfa_d+L1Y.c0cNQ/t-4Cog?U#=("lYT\g4, + Jdr*sr.aH^69h\FB(NbKs5s9N+k'Sp-WiQUgVN&-dc&/m%c8[D'gt/CSA4#J;cZ*TNlg,*I + o/Q$Mu`iVNB6UQ;(+6f7qb*?B->EE&FT8>VZtB(1m(W,!0lhrq`qe,'7f1g]5*QOpZo`ZEqAAi(/$7KjGibi&(NZ3&nFBU>jOn6dTtq!IB'2j!\Rem0q7'XO2!2!E8]LpK[FI<]Qc0q%,;Ga2Jp;G3,RA+ki*/`_. + /Nh7^X*JM*$\dGFCe/eb\gWOUnJBEm[Tt5cn(RQ^@0p[0sR#\BD:#iJHKhQX8\Cg`bB;SL[sYRl>8?/e3F7\1Wk=nF<2r + X0aAmbOU=>K&C&*Rlq6h'0oh;k\BTP/mZ%&jP1>.4$/p*7Nr7q='g.ULZ_Pr-6lg&=Pc\CH + :Y.Z\B+^Snt2hPIbN%0>)i$r7uSSKe*hqg6q0lVN1g:2)Q + Ys3!^URn,^68ct+A>"8#E(17>(!'-NEB1mr6"!pB`9:J<=iBEi?:Ll%1RT.sg[g"@;aMoA$ + NqYpB\TeD":'1tkhL`6onL + p+Sm>'T@p+%TR=>%M:,VG3Q$`n`2DTqOb)QU@*k^bH0'$?#;43h>]$7ikgEF=EV'^b%#c.\ + M\bi#'(MmiL+E0Gk40AS(>Fs$"O.bZui,\cc:A!r)K15Q:2e$cjF2oDerD5k$&u+2sD4Ac~> + +Q +Q Q +showpage +%%Trailer +%%EOF diff --git a/figures/shape.eps b/figures/shape.eps index 3b8c509..05aa83f 100644 --- a/figures/shape.eps +++ b/figures/shape.eps @@ -1,29 +1,33 @@ %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 -1 85 150 - -% A rectangular path +% These lines are comments to aid in human understanding +% Define an operator to produce a rectangular path /re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto - 0 exch rlineto 0 rlineto closepath } bind def -% Path for the first rectangle +0 exch rlineto 0 rlineto closepath } bind def +% Operator to produce the path for the first rectangle /re1 { 24.613 133.001 24 -120 re } bind def -% Path for the second rectangle +% Operator to produce the path for the second rectangle /re2 { 10.215 45.001 48 -16 re } bind def -% The curved path -/curve { 46.215 1.001 moveto -46.215 1.001 91.812 11.399 71.812 35.399 curveto 51.812 59.399 - 29.414 33.802 51.812 59.399 curveto 74.215 85.001 93.414 45.802 74.215 85.001 - curveto 55.016 125.001 61.414 49.802 46.215 75.399 curveto 31.016 101.001 56.613 126.598 - 56.613 126.598 curveto 56.613 126.598 88.613 166.598 56.613 137.802 curveto 24.613 -109.001 -18.586 83.399 9.414 50.598 curveto 37.414 17.802 45.414 1.001 45.414 -1.001 curveto closepath } bind def +% Operator which will produce the curved path +/curve { 46.215 1.001 moveto +46.215 1.001 91.812 11.399 71.812 35.399 curveto +51.812 59.399 29.414 33.802 51.812 59.399 curveto +74.215 85.001 93.414 45.802 74.215 85.001 curveto +55.016 125.001 61.414 49.802 46.215 75.399 curveto +31.016 101.001 56.613 126.598 56.613 126.598 curveto +56.613 126.598 88.613 166.598 56.613 137.802 curveto +24.613 109.001 -18.586 83.399 9.414 50.598 curveto +37.414 17.802 45.414 1.001 45.414 1.001 curveto +closepath } bind def % Set stroke properties -0.8 setlinewidth 0 setlinecap 0 setlinejoin [] 0.0 setdash 4 setmiterlimit +0.8 setlinewidth 0 setlinecap 0 setlinejoin [] +0.0 setdash 4 setmiterlimit % Draw the straight line -0 setgray 0.613 149.001 moveto 83.812 0.2 lineto fill +0 setgray 0.613 149.001 moveto 83.812 0.2 lineto stroke % Fill and outline the first rectangular path 0 0 1 setrgbcolor re1 fill 0 setgray re1 stroke % Fill and outline the curved shape 1 0 0 setrgbcolor curve fill 0 setgray curve stroke -% Fill and outline the second rectangle +% Fill and outline the second rectangle 0 1 0 setrgbcolor re2 fill 0 setgray re2 stroke showpage diff --git a/figures/shape.svg b/figures/shape.svg index 0e1ed7c..117950d 100644 --- a/figures/shape.svg +++ b/figures/shape.svg @@ -1,18 +1,32 @@ - - - + + + + + + - +x = "30" y = "20" width = "30" height = "150" +style = "fill:#0000ff; fill-opacity:0.5; +stroke:#000000;"/> + + + +x = "12" y = "130" width = "60" height = "20" +style = "fill:#00ff00; fill-opacity:0.5; +stroke:#000000;"/> diff --git a/figures/spline.eps b/figures/spline.eps new file mode 100644 index 0000000..4d262ac --- /dev/null +++ b/figures/spline.eps @@ -0,0 +1,4 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 0 0 260 315 +% Scale is 1.246105919 PostScript pts per SVG pixel, but using same values as spline.svg to make more readable +0 300 moveto 0 300 200 210 90 140 curveto -20 70 200 0 200 0 curveto stroke showpage diff --git a/figures/spline.pdf b/figures/spline.pdf new file mode 100644 index 0000000..6cf31fb --- /dev/null +++ b/figures/spline.pdf @@ -0,0 +1,69 @@ +%PDF-1.5 +%µí®û +3 0 obj +<< /Length 4 0 R + /Filter /FlateDecode +>> +stream +xœMŠA +ƒ@ïóŠú@֙qݘ4ǐCØ@ àArðûYD†fª›šDYnè¨^Êç'sY¯%_y<Ñ ¼%rcÂVù´> + >> +>> +endobj +5 0 obj +<< /Type /Page + /Parent 1 0 R + /MediaBox [ 0 0 208 252 ] + /Contents 3 0 R + /Group << + /Type /Group + /S /Transparency + /I true + /CS /DeviceRGB + >> + /Resources 2 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 5 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Creator (cairo 1.12.16 (http://cairographics.org)) + /Producer (cairo 1.12.16 (http://cairographics.org)) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000000513 00000 n +0000000227 00000 n +0000000015 00000 n +0000000205 00000 n +0000000299 00000 n +0000000578 00000 n +0000000707 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +759 +%%EOF diff --git a/figures/spline.svg b/figures/spline.svg new file mode 100644 index 0000000..8b432dd --- /dev/null +++ b/figures/spline.svg @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/figures/spline_labelled.pdf b/figures/spline_labelled.pdf new file mode 100644 index 0000000..a56d417 Binary files /dev/null and b/figures/spline_labelled.pdf differ diff --git a/figures/spline_labelled.svg b/figures/spline_labelled.svg new file mode 100644 index 0000000..92812a0 --- /dev/null +++ b/figures/spline_labelled.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + A0 + + A1 + + + + A2 + B0 + + B1 + + B2 + + + + + + + + + + + + + + + + + + diff --git a/figures/z.pdf b/figures/z.pdf new file mode 100644 index 0000000..5dd560e Binary files /dev/null and b/figures/z.pdf differ diff --git a/figures/z.png b/figures/z.png new file mode 100644 index 0000000..8fcbcb0 Binary files /dev/null and b/figures/z.png differ diff --git a/figures/z.svg b/figures/z.svg new file mode 100644 index 0000000..670cddf --- /dev/null +++ b/figures/z.svg @@ -0,0 +1,68 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/thesis.pdf b/thesis.pdf index 72517d4..52152c7 100644 Binary files a/thesis.pdf and b/thesis.pdf differ diff --git a/thesis.tex b/thesis.tex index 0db8399..5e7b1ea 100644 --- a/thesis.tex +++ b/thesis.tex @@ -5,7 +5,7 @@ \parskip 10pt % sets spacing between paragraphs %\renewcommand{\baselinestretch}{1.5} % Uncomment for 1.5 spacing between lines %\parindent 0pt % sets leading space for paragraphs - +\usepackage{mathrsfs} \usepackage{ulem} %\usepackage{natbib} \usepackage{makeidx} @@ -37,7 +37,7 @@ %\usepackage[usenames,dvipsnames]{color} \usepackage{minted} % For code snippets \AtBeginEnvironment{minted}{\singlespacing% - \fontsize{8}{8}\selectfont} + \fontsize{7}{7}\selectfont} \definecolor{pink}{rgb}{1.0,0.5,0.5} \definecolor{darkgray}{rgb}{0.1,0.1,0.1} \definecolor{lightgray}{rgb}{0.95,0.95,0.95}