summaryrefslogtreecommitdiff
path: root/support/lametex
diff options
context:
space:
mode:
Diffstat (limited to 'support/lametex')
-rw-r--r--support/lametex/NEWS.tex55
-rw-r--r--support/lametex/NEWS.txt75
-rw-r--r--support/lametex/README34
-rw-r--r--support/lametex/doc/commands.tex54
-rw-r--r--support/lametex/doc/errors.tex21
-rw-r--r--support/lametex/doc/example1.ps916
-rw-r--r--support/lametex/doc/example1.tex112
-rw-r--r--support/lametex/doc/example2.tex64
-rw-r--r--support/lametex/doc/example3.tex43
-rw-r--r--support/lametex/doc/example4.tex36
-rw-r--r--support/lametex/doc/example5.tex62
-rw-r--r--support/lametex/doc/example6.tex27
-rw-r--r--support/lametex/doc/future.tex66
-rw-r--r--support/lametex/doc/hacks.tex523
-rw-r--r--support/lametex/doc/introduction.tex170
-rw-r--r--support/lametex/doc/labkit.tex61
-rw-r--r--support/lametex/doc/lametex_doc.ps14372
-rw-r--r--support/lametex/doc/lametex_doc.tex34
-rw-r--r--support/lametex/doc/lametex_doc.txt1529
-rw-r--r--support/lametex/doc/normality.tex169
-rw-r--r--support/lametex/doc/pages.tex251
-rw-r--r--support/lametex/doc/plaintext.tex7
-rw-r--r--support/lametex/doc/starting.tex219
-rw-r--r--support/lametex/doc/stealth.tex124
-rw-r--r--support/lametex/doc/template.tex32
-rw-r--r--support/lametex/doc/titlepage.tex36
-rw-r--r--support/lametex/man/man1/lametex.1170
-rw-r--r--support/lametex/page/dagger.ps213
-rw-r--r--support/lametex/page/demon.ps1627
-rw-r--r--support/lametex/page/icons.ps223
-rw-r--r--support/lametex/page/page_check.ps118
-rw-r--r--support/lametex/page/page_dagger.ps304
-rw-r--r--support/lametex/page/page_demon.ps82
-rw-r--r--support/lametex/page/page_kludge.ps85
-rw-r--r--support/lametex/page/page_latex.ps62
-rw-r--r--support/lametex/page/page_shake.ps84
-rw-r--r--support/lametex/page/page_skew.ps72
-rw-r--r--support/lametex/page/page_title.ps221
-rw-r--r--support/lametex/page/wigglies.ps26
-rw-r--r--support/lametex/src/Counter.C527
-rw-r--r--support/lametex/src/Counter.h56
-rw-r--r--support/lametex/src/Document.C299
-rw-r--r--support/lametex/src/Document.h44
-rw-r--r--support/lametex/src/Environment.C59
-rw-r--r--support/lametex/src/Environment.h32
-rw-r--r--support/lametex/src/FileInput.C705
-rw-r--r--support/lametex/src/FileInput.h75
-rw-r--r--support/lametex/src/Font.C490
-rw-r--r--support/lametex/src/Font.h97
-rw-r--r--support/lametex/src/Global.h9
-rw-r--r--support/lametex/src/Justify.C78
-rw-r--r--support/lametex/src/Justify.h29
-rw-r--r--support/lametex/src/Label.C130
-rw-r--r--support/lametex/src/Label.h40
-rw-r--r--support/lametex/src/LameTeX.C32
-rw-r--r--support/lametex/src/LameTeX.h17
-rw-r--r--support/lametex/src/Length.C341
-rw-r--r--support/lametex/src/Length.h57
-rw-r--r--support/lametex/src/Makefile60
-rw-r--r--support/lametex/src/Operator.C669
-rw-r--r--support/lametex/src/Operator.h58
-rw-r--r--support/lametex/src/Parameter.h23
-rw-r--r--support/lametex/src/Stack.C145
-rw-r--r--support/lametex/src/Stack.h30
-rw-r--r--support/lametex/src/Token.C67
-rw-r--r--support/lametex/src/Token.h26
-rw-r--r--support/lametex/src/breakpath.ps190
-rw-r--r--support/lametex/src/example1.ps1722
-rw-r--r--support/lametex/src/format.ps404
-rwxr-xr-xsupport/lametex/src/lametexbin0 -> 376832 bytes
-rw-r--r--support/lametex/src/latex.footer4
-rw-r--r--support/lametex/src/latex.header64
-rw-r--r--support/lametex/src/latex.hfooter6
-rwxr-xr-xsupport/lametex/src/plaintext.pl175
74 files changed, 29139 insertions, 0 deletions
diff --git a/support/lametex/NEWS.tex b/support/lametex/NEWS.tex
new file mode 100644
index 0000000000..82ce5c9aaa
--- /dev/null
+++ b/support/lametex/NEWS.tex
@@ -0,0 +1,55 @@
+\documentstyle{report}
+\setlength{\textwidth}{6 in}
+\setlength{\textheight}{9 in}
+\setlength{\topmargin}{-.5 in}
+\setlength{\oddsidemargin}{0.25 in}
+\begin{document}
+
+\begin{center}
+{\Huge LameTeX NEWS}
+\vspace{.5 in}
+
+This file contains version information about LameTeX.
+
+\vspace{1 in}
+
+Copyright (C) 1992 Jonathan Monsarrat. Permission given to freely distribute,
+edit and use as long as this copyright statement remains intact.
+\end{center}
+
+\chapter{Version 1.1, 9/7/92}
+
+\begin{enumerate}
+\item LameTeX now handles the $\backslash$ref and $\backslash$label commands.
+
+\item LameTeX now has a -t option to allow you to format LaTeX files
+in raw ASCII format (suitable for posting to UseNet, for example).
+
+\item LameTeX now handles the comamnds $\backslash$part*,
+$\backslash$chapter*, $\backslash$section*, $\backslash$subsection*,
+$\backslash$subsubsection*, $\backslash$paragraph*, and
+$\backslash$subparagraph*
+
+\item Several small bugs were handled.
+
+\end{enumerate}
+
+\chapter{Version 1.0, 8/31/92}
+
+\begin{enumerate}
+
+\item First version distributed.
+
+\item Basic LaTeX functionality was included in the initial release of LameTeX.
+
+\item LameTeX allows you to include your own PostScript hacks in your
+documents.
+
+\item LameTeX allows you to format text inside any arbitrarily shaped
+PostScript path.
+
+\end{enumerate}
+
+\include{doc/commands.tex}
+
+\end{document}
diff --git a/support/lametex/NEWS.txt b/support/lametex/NEWS.txt
new file mode 100644
index 0000000000..e2293e09d3
--- /dev/null
+++ b/support/lametex/NEWS.txt
@@ -0,0 +1,75 @@
+ LameTeX NEWS
+
+
+
+ This file contains version information about LameTeX.
+
+
+
+
+
+
+ Copyright (C) 1992 Jonathan Monsarrat. Permission given to
+ freely distribute, edit and use as long as this copyright
+ statement remains intact.
+
+
+
+ Chapter 1
+
+ Version 1.1, 9/7/92
+
+
+ 1. LameTeX now handles the \ ref and\label commands.
+
+ 2. LameTeX now has a -t option to allow you to format LaTeX
+ files in raw ASCII format (suitable for posting to
+ UseNet, for example).
+
+ 3. LameTeX now handles the comamnds \ part*,\chapter*,\
+ section*,\subsection*,\subsubsection*,\paragraph*,
+ and\subparagraph*
+
+ 4. Several small bugs were handled.
+
+
+
+ Chapter 2
+
+ Version 1.0, 8/31/92
+
+
+ 1. First version distributed.
+
+ 2. Basic LaTeX functionality was included in the initial
+ release of LameTeX.
+
+ 3. LameTeX allows you to include your own PostScript hacks
+ in your documents.
+
+ 4. LameTeX allows you to format text inside any arbitrarily
+ shaped PostScript path.
+
+
+
+ Chapter 3
+
+ Commands
+
+ This is the complete list of commands that LameTeX
+ understands. It's formatted in an easy to read
+ alphabetically sorted list.
+ The stealth commands are:\stealth\postscript\
+ includeps\pspage\ignore\pscmd\STEALTH
+ The normal LaTeX commands are:\#\%\&\Huge\LARGE
+ \Large\\\_\addtolength\backslash\begin\bf\
+ bigskip\center\chapter\clearpage\description\
+ document\documentstyle\em\end\enumerate\flushleft
+ \flushright\footnotesize\hspace\hspace*\huge\
+ include\it\item\itemize\label\large\ldots\
+ medskip\newlength\newline\normalsize\par\
+ paragraph\part\quotation\quote\raggedleft\
+ raggedright\ref\rm\sc\scriptsize\section\
+ setlength\sf\sl\small\smallskip\subparagraph\
+ subsection\subsubsection\tiny\today\tt\verse\
+ vspace\vspace*\\
diff --git a/support/lametex/README b/support/lametex/README
new file mode 100644
index 0000000000..f5ed4da3a2
--- /dev/null
+++ b/support/lametex/README
@@ -0,0 +1,34 @@
+You should now have directories:
+ src The C++ source files, plus two PostScript source files.
+ page Contains the PostScript Page Definitions
+ doc Contains documentation and example .tex files
+ man Contains the LameTeX man page
+
+You need to have a copy of latex and dvips from Radical Eye Software.
+If you want to format text in ASCII, you need to have a copy of Perl.
+
+You'll need to compile the code in the src directory.
+
+To do this, you will need to edit the Makefile. Choose the appropriate
+name for your CC executable. Choose the appropriate name for your source
+directory, page directory, and executable directory.
+
+Also, if your latex or dvips is a funny version, you will have to
+change the variables LATEX and DVIPS. Don't make this change unless
+you try lametex and it gives you an error while trying to run latex or
+dvips.
+
+Now go into the src directory and type "make".
+
+Now type cd ../doc
+
+Move the lametex_doc.ps to a temporary file with
+ mv lametex_doc.ps lametex_doc.ps.works
+
+Now try formatting the documentation in lametex_doc.tex.
+
+You can type "../src/lametex lametex_doc.tex", and LameTeX
+will process the file for you. Alternately, you can use normal LaTeX
+to format the file with "latex lametex_doc.tex".
+
+The document will tell you everything you need to know to run LameTeX.
diff --git a/support/lametex/doc/commands.tex b/support/lametex/doc/commands.tex
new file mode 100644
index 0000000000..ca999b40b6
--- /dev/null
+++ b/support/lametex/doc/commands.tex
@@ -0,0 +1,54 @@
+% commands.tex
+%
+% This is a LameTeX document. You may use the LameTeX text formatter
+% to do fancy graphic formatting from this file into PostScript.
+%
+% Alternatively, this file may be formatted with normal LaTeX.
+%
+% This document describes the LameTeX text formatter, version 1.0.
+%
+% Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+% edit and use as long as this copyright statement remains intact.
+%
+
+\chapter{Commands}
+
+This is the complete list of commands that LameTeX understands.
+It's formatted in an easy to read alphabetically sorted list.
+
+The stealth commands are: $\backslash$stealth $\backslash$postscript
+$\backslash$includeps $\backslash$pspage $\backslash$ignore
+$\backslash$pscmd $\backslash$STEALTH
+
+The normal LaTeX commands are: $\backslash$\# $\backslash$\%
+$\backslash$\& $\backslash$Huge $\backslash$LARGE $\backslash$Large
+$\backslash$$\backslash$ $\backslash$\_ $\backslash$addtolength
+$\backslash$backslash $\backslash$begin $\backslash$bf
+$\backslash$bigskip $\backslash$center $\backslash$chapter
+$\backslash$chapter* $\backslash$clearpage $\backslash$description
+$\backslash$document $\backslash$documentstyle $\backslash$em
+$\backslash$end $\backslash$enumerate $\backslash$flushleft
+$\backslash$flushright $\backslash$footnotesize $\backslash$hspace
+$\backslash$hspace* $\backslash$huge $\backslash$include
+$\backslash$it $\backslash$item $\backslash$itemize $\backslash$label
+$\backslash$large $\backslash$ldots $\backslash$medskip
+$\backslash$newlength $\backslash$newline $\backslash$normalsize
+$\backslash$par $\backslash$paragraph $\backslash$paragraph*
+$\backslash$part $\backslash$part* $\backslash$quotation
+$\backslash$quote $\backslash$raggedleft $\backslash$raggedright
+$\backslash$ref $\backslash$rm $\backslash$sc $\backslash$scriptsize
+$\backslash$section $\backslash$section* $\backslash$setlength
+$\backslash$sf $\backslash$sl $\backslash$small $\backslash$smallskip
+$\backslash$subparagraph $\backslash$subparagraph*
+$\backslash$subsection $\backslash$subsection*
+$\backslash$subsubsection $\backslash$subsubsection* $\backslash$tiny
+$\backslash$today $\backslash$tt $\backslash$verse $\backslash$vspace
+$\backslash$vspace* $\backslash${ $\backslash$}
+
+% Replace the current small margins with the wider margins.
+% \begin{stealth}
+% \setlength{\textwidth}{6 in}
+% \setlength{\textheight}{9 in}
+% \setlength{\topmargin}{0 in}
+% \setlength{\oddsidemargin}{0.25 in}
+
diff --git a/support/lametex/doc/errors.tex b/support/lametex/doc/errors.tex
new file mode 100644
index 0000000000..6bc0e601c8
--- /dev/null
+++ b/support/lametex/doc/errors.tex
@@ -0,0 +1,21 @@
+\chapter{Errors}
+
+If you get an error like this ``stackoverflow
+offending command: pathforall Stack: [ /coords -mark- .....]'',
+this means that the path you are using for the page is very curved
+and not particularly flat. PostScript is having trouble keeping track
+of all the points! You should double or triple the setflat value.
+
+If you get an error undefined in $\backslash$end, you ended a
+$\backslash$begin\{postscript\} command with something else that was not
+$\backslash$end\{postscript\}.
+
+A lot of problems come from having your margins too wide! Make sure
+that you margins are small enough so that your text will fit around
+the pictures.
+
+If you get an error ``false false false false false false false stack
+overflow'' then you're using $\backslash$pscmd on a routine that
+doesn't handle the incoming boolean. Just add a PostScript {\tt pop}
+to the beginning of the PostScript routine you call with
+$\backslash$pscmd.
diff --git a/support/lametex/doc/example1.ps b/support/lametex/doc/example1.ps
new file mode 100644
index 0000000000..01e390674f
--- /dev/null
+++ b/support/lametex/doc/example1.ps
@@ -0,0 +1,916 @@
+%!PS-Adobe-2.0
+%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
+%%Title: lametex.dvi
+%%Pages: 1 1
+%%BoundingBox: 0 0 612 792
+%%EndComments
+%%BeginProcSet: tex.pro
+/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
+load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
+isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
+Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
+round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
+N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
+/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
+statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
+/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
+/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
+/BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2
+array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
+B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
+setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup
+length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{
+ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B
+/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
+N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N
+
+/FMat [ 0.24 0 0 0.24 0 0 ] def
+/CharBuilder % fontdict ascii
+{
+ 1 index % fontdict ascii fontdict
+ /base get % fontdict ascii base
+ exch get % fontdict asciiequiv
+ exch /BitMaps get % asciiequiv BitMaps
+ exch get % bitmapstring
+ % ch-data becomes the bitmapstring for the ascii character
+ /ch-data exch def %
+ /ctr 0 def
+ % The next line is the "ch-dx" algorithm
+ ch-data dup length 1 sub get % ch-data last-char
+ 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
+ setcachedevice
+ ch-width ch-height true
+ [ 1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add ]
+ { ch-image } imagemask
+} bind def
+
+ /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr
+put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf
+div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook
+known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore
+showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
+known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
+array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N
+/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
+/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0
+7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
+TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
+-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{
+moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{
+S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B
+/j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w
+}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
+a}B /bos{/SS save N}B /eos{clear SS restore}B end
+%%EndProcSet
+TeXDict begin 1000 300 300 @start /Fa 57 123 df<6060F0F0F8F8686808080808080810
+1010102020404080800D0C7F9C15>34 D<60F0F8680808081010204080050C7C9C0C>39
+D<004000800100020006000C000C0018001800300030007000600060006000E000E000E000E000
+E000E000E000E000E000E000E000E000600060006000700030003000180018000C000C00060002
+000100008000400A2A7D9E10>I<800040002000100018000C000C000600060003000300038001
+800180018001C001C001C001C001C001C001C001C001C001C001C001C001800180018003800300
+0300060006000C000C00180010002000400080000A2A7E9E10>I<60F0F0701010101020204080
+040C7C830C>44 D<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<03C00C301818300C300C
+700E60066006E007E007E007E007E007E007E007E007E007E007E007E007E00760066006700E30
+0C300C18180C3007E0101D7E9B15>48 D<030007003F00C7000700070007000700070007000700
+0700070007000700070007000700070007000700070007000700070007000F80FFF80D1C7C9B15
+>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C001C00380070006000
+C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<07E01830201C201C781E780E78
+1E381E001C001C00180030006007E00030001C001C000E000F000F700FF80FF80FF80FF00E401C
+201C183007E0101D7E9B15>I<000C00000C00001C00003C00003C00005C0000DC00009C00011C
+00031C00021C00041C000C1C00081C00101C00301C00201C00401C00C01C00FFFFC0001C00001C
+00001C00001C00001C00001C00001C0001FFC0121C7F9B15>I<300C3FF83FF03FC02000200020
+0020002000200023E024302818301C200E000E000F000F000F600FF00FF00FF00F800E401E401C
+2038187007C0101D7E9B15>I<00F0030C06040C0E181E301E300C700070006000E3E0E430E818
+F00CF00EE006E007E007E007E007E007600760077006300E300C18180C3003E0101D7E9B15>I<
+4000007FFF807FFF007FFF00400200800400800400800800001000001000002000006000004000
+00C00000C00001C000018000018000038000038000038000038000078000078000078000078000
+078000078000030000111D7E9B15>I<03E00C301008200C20066006600660067006780C3E083F
+B01FE007F007F818FC307E601E600FC007C003C003C003C00360026004300C1C1007E0101D7E9B
+15>I<03C00C301818300C700C600EE006E006E007E007E007E007E0076007700F300F18170C27
+07C700060006000E300C780C78187010203030C00F80101D7E9B15>I<60F0F060000000000000
+0000000060F0F06004127C910C>I<000600000006000000060000000F0000000F0000000F0000
+0017800000178000001780000023C0000023C0000023C0000041E0000041E0000041E0000080F0
+000080F0000180F8000100780001FFF80003007C0002003C0002003C0006003E0004001E000400
+1E000C001F001E001F00FF80FFF01C1D7F9C1F>65 D<FFFFC00F00F00F00380F003C0F001C0F00
+1E0F001E0F001E0F001E0F001C0F003C0F00780F01F00FFFE00F00780F003C0F001E0F000E0F00
+0F0F000F0F000F0F000F0F000F0F001E0F001E0F003C0F0078FFFFE0181C7E9B1D>I<001F8080
+00E0618001801980070007800E0003801C0003801C000180380001807800008078000080700000
+80F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000700000807800
+008078000080380000801C0001001C0001000E000200070004000180080000E03000001FC00019
+1E7E9C1E>I<FFFFFC0F003C0F000C0F00040F00040F00060F00020F00020F02020F02000F0200
+0F02000F06000FFE000F06000F02000F02000F02000F02010F00010F00020F00020F00020F0006
+0F00060F000C0F003CFFFFFC181C7E9B1C>69 D<FFFFF80F00780F00180F00080F00080F000C0F
+00040F00040F02040F02000F02000F02000F06000FFE000F06000F02000F02000F02000F02000F
+00000F00000F00000F00000F00000F00000F00000F8000FFF800161C7E9B1B>I<FFF3FFC00F00
+3C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F
+003C000F003C000FFFFC000F003C000F003C000F003C000F003C000F003C000F003C000F003C00
+0F003C000F003C000F003C000F003C000F003C000F003C00FFF3FFC01A1C7E9B1F>72
+D<FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
+0F000F000F000F000F000F000F000F00FFF00C1C7F9B0F>I<FF007FC00F800E000F8004000BC0
+040009E0040009E0040008F0040008F8040008780400083C0400083C0400081E0400080F040008
+0F0400080784000807C4000803C4000801E4000801E4000800F40008007C0008007C0008003C00
+08003C0008001C0008000C001C000C00FF8004001A1C7E9B1F>78 D<003F800000E0E000038038
+0007001C000E000E001C0007003C00078038000380780003C0780003C0700001C0F00001E0F000
+01E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C038
+0003803C0007801C0007000E000E0007001C000380380000E0E000003F80001B1E7E9C20>I<07
+E0801C1980300580700380600180E00180E00080E00080E00080F00000F800007C00007FC0003F
+F8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001C0C00180C00180E0
+0300D00200CC0C0083F800121E7E9C17>83 D<7FFFFFC0700F01C0600F00C0400F0040400F0040
+C00F0020800F0020800F0020800F0020000F0000000F0000000F0000000F0000000F0000000F00
+00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
+0000000F0000001F800003FFFC001B1C7F9B1E>I<08081010202040404040808080808080B0B0
+F8F8787830300D0C7A9C15>92 D<0810204040808080B0F87830050C7D9C0C>96
+D<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C00601C00E01C
+40E01C40E01C40603C40304E801F870012127E9115>I<FC00001C00001C00001C00001C00001C
+00001C00001C00001C00001C00001C00001C7C001D86001E03001C01801C01C01C00C01C00E01C
+00E01C00E01C00E01C00E01C00E01C00C01C01C01C01801E030019060010F800131D7F9C17>I<
+07E00C301878307870306000E000E000E000E000E000E00060007004300418080C3007C00E127E
+9112>I<003F0000070000070000070000070000070000070000070000070000070000070003E7
+000C1700180F00300700700700600700E00700E00700E00700E00700E00700E007006007007007
+00300700180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E6006E006FFFEE000E0
+00E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E000E
+000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
+0E007FE00F1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C00381C00381C0018
+18001C38000C300013C0001000003000001800001FF8001FFF001FFF803003806001C0C000C0C0
+00C0C000C06001803003001C0E0007F800121C7F9215>I<FC00001C00001C00001C00001C0000
+1C00001C00001C00001C00001C00001C00001C7C001C87001D03001E03801C03801C03801C0380
+1C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0141D7F9C17>
+I<18003C003C0018000000000000000000000000000000FC001C001C001C001C001C001C001C00
+1C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<00C001E001E000C000000000
+000000000000000000000FE000E000E000E000E000E000E000E000E000E000E000E000E000E000
+E000E000E000E000E000E000E060E0F0C0F1C061803E000B25839C0D>I<FC00001C00001C0000
+1C00001C00001C00001C00001C00001C00001C00001C00001C3FC01C0F001C0C001C08001C1000
+1C20001C40001CE0001DE0001E70001C78001C38001C3C001C1C001C0E001C0F001C0F80FF9FE0
+131D7F9C16>I<FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
+1C001C001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<FC7E07E0001C
+838838001D019018001E01E01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00
+1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C
+00FF8FF8FF8021127F9124>I<FC7C001C87001D03001E03801C03801C03801C03801C03801C03
+801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF014127F9117>I<03F0000E
+1C00180600300300700380600180E001C0E001C0E001C0E001C0E001C0E001C060018070038030
+03001806000E1C0003F00012127F9115>I<FC7C001D86001E03001C01801C01C01C00C01C00E0
+1C00E01C00E01C00E01C00E01C00E01C01C01C01C01C01801E03001D06001CF8001C00001C0000
+1C00001C00001C00001C00001C0000FF8000131A7F9117>I<03C1000C3300180B00300F007007
+00700700E00700E00700E00700E00700E00700E00700600700700700300F00180F000C370007C7
+00000700000700000700000700000700000700000700003FE0131A7E9116>I<FCE01D301E781E
+781C301C001C001C001C001C001C001C001C001C001C001C001C00FFC00D127F9110>I<1F9030
+704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D0608FC00D127F9110>
+I<04000400040004000C000C001C003C00FFE01C001C001C001C001C001C001C001C001C001C10
+1C101C101C101C100C100E2003C00C1A7F9910>I<FC1F801C03801C03801C03801C03801C0380
+1C03801C03801C03801C03801C03801C03801C03801C03801C07800C07800E1B8003E3F014127F
+9117>I<FF07E03C03801C01001C01000E02000E020007040007040007040003880003880003D8
+0001D00001D00000E00000E00000E00000400013127F9116>I<FF3FCFE03C0F03801C0701801C
+0701001C0B01000E0B82000E0B82000E1182000711C4000711C4000720C40003A0E80003A0E800
+03C0680001C0700001C0700001803000008020001B127F911E>I<7F8FF00F03800F0300070200
+03840001C80001D80000F00000700000780000F800009C00010E00020E000607000403801E07C0
+FF0FF81512809116>I<FF07E03C03801C01001C01000E02000E02000704000704000704000388
+0003880003D80001D00001D00000E00000E00000E000004000004000008000008000F08000F100
+00F300006600003C0000131A7F9116>I<7FFC70386038407040F040E041C003C0038007000F04
+0E041C043C0C380870087038FFF80E127F9112>I E end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300
+TeXDict begin
+%%EndSetup
+/cm10rm{ pop Fa } bind def
+/fontnames [
+/TIMESROMAN
+/cm10rm
+] def
+%! This is a PostScript library meant to be printed only with other files %%%
+%% Postscript Code by Jonathan Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+%% This is the LameTeX Formatter, uses the LaTeX language
+% Depends on "EndPage" and "StartPage" to be set up by a page formatter
+
+/formatdict 100 dict def % This should be 77?
+
+formatdict begin
+/wlist 100 array def % Maximum of 100 words on a line
+%% Better give these variables default values in case we try to
+%% do an EndPage but they have not yet been defined
+
+/baselineskip 200 def /wlen 0 def /baselineskip 0 def /bottommargin 0 def
+/parindent 0 def /justify 0 def /rightmargin 0 def /leftmargin 0 def
+/topmargin 0 def /parskip 0 def /newfontcmd 1 def /para 0 def
+/vtotal 0 def /wordlen 0 def /ypos 0 def /ytemp 0 def
+
+%%%%%%%%%%%%%%%% num InitWord - %%%%%%%%%%%%%%%%%%%%%%%
+% InitWord takes an setflat values and flattens the current path
+% It also defines some globals that will get "NextWord" up and running
+/InitWord
+{
+ /xpos currentflat def % Save current flatness
+ PageShape setflat flattenpath
+ % gsave stroke grestore % Uncomment this line to show the margin path
+ /coords Approx def
+ pathbbox % It the current path is bigger than the margins, widen them!
+ dup TM gt { /TM exch def } { pop } ifelse
+ dup RM gt { /RM exch def } { pop } ifelse
+ dup BM lt { /BM exch def } { pop } ifelse
+ dup LM lt { /LM exch def } { pop } ifelse
+
+ xpos setflat % Restore flatness.
+ false fontnames newfontcmd get cvx exec
+ /xlocs [ ] def
+ /welem 1 def /wlen 0 def /woids 0 def
+ /eslot LM def
+ /ypos TM topmargin sub def
+ /vtotal 0 def
+ /xpos 0 def /nxpos 0 def
+ wlist 0 [ newfontcmd false ] put
+ /wtemp 0 def
+ NextSpace pop
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%% - NewXSpace bool %%%%%%%%%%%%%%%%%%%%%%
+% If there's "room on the bottom" as defined by xlocs, check to see if
+% there's "room on the top" as defined by NewXSpace. Returns success boolean.
+/NewXSpace
+{
+ nxpos newxlocs length 1 sub lt
+ {
+ newxlocs nxpos 2 getinterval {} forall exch
+ /nxpos nxpos 2 add def
+% If there's any intersection of top and bottom 'good places' set bslot, eslot
+ dup xa le { pop xa } if leftmargin add /bslot exch def
+ dup xb ge { pop xb } if rightmargin sub /eslot exch def
+ bslot eslot lt { true } { NewXSpace } ifelse
+ }
+ {
+ false
+ } ifelse
+} bind def
+
+%%%%%%%%%%%%%%% - NextSpace bool %%%%%%%%%%%%%%%%%%%%%%
+% NextSpace defines the next space available for writing by
+% setting ypos to the Y location and bslot and eslot to the beginning
+% and end of the next open text writing area. Returns success boolean.
+/NextSpace
+{
+ xpos xlocs length 1 sub lt % are there any X's left on current line
+ {
+ /xa xlocs xpos get def
+ /xb xlocs xpos 1 add get def
+ NewXSpace
+ { true }
+ {
+ /nxpos 0 def
+ /xpos xpos 2 add def
+ NextSpace
+ } ifelse
+ }
+ {
+ ypos % Leave on the stack for later comparison
+ /ypos ypos
+ vspace 0 eq
+ {
+ baselineskip para { parskip add } if /vtotal baselineskip def
+ }
+ {
+ vspace /vspace 0 def
+ } ifelse
+ sub def
+ ypos BM bottommargin add ge
+ {
+ /newxlocs coords 3 -1 roll 4 add true CheeseWhiz def
+ /xlocs coords ypos 4 sub true CheeseWhiz def
+ /xpos 0 def /nxpos 0 def
+ NextSpace
+ }
+ {
+ pop false
+ } ifelse
+ } ifelse
+ % if we're doing a paragraph and the NextSpace isn't big enough
+ % for the indentation, then choose a new space.
+ % if found-space and para and justify
+ dup para justify 102 eq and and % 102 is ascii 'f' for FULL JUSTIFY
+ { /bslot bslot parindent add def bslot eslot gt
+ { pop NextSpace pop
+ } if
+ } if
+ /para false def
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%%%% - PrintWordList - %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% PrintWordList prints the words stored in array "wlist" at Y location ypos
+% with full justification between X locations bslot and eslot.
+/PrintWordList
+{
+ /vtotal 0 def
+ woids 0 ne
+ {
+ % Legal values for /justify are (l)eft (r)ight (f)ull (c)enter in ASCII
+ justify 99 eq % 99 is ascii 'c' for CENTERED
+ {
+ bslot eslot bslot sub wlen sub 2 div add ypos moveto
+ }
+ {
+ bslot justify 114 eq { eslot bslot sub wlen sub add } if % 114 is 'r'
+ ypos moveto
+ } ifelse
+ /sp eslot bslot sub wlen sub woids div def
+ 0 1 welem 1 sub
+ {
+ wlist exch get
+ dup type /stringtype eq
+ {
+ SHOWIT ( ) stringwidth pop 0 rmoveto
+ justify 102 eq { sp 0 rmoveto } if % 102 is ascii 'f'
+ }
+ {
+ dup type /arraytype eq
+ {
+ { } forall
+ {
+ ( ) stringwidth pop neg 0 rmoveto
+ justify 102 eq { sp neg 0 rmoveto } if % 102 is ascii 'f'
+ } if
+ fontnames exch get cvx true exch exec
+ }
+ {
+ 0 rmoveto
+ } ifelse
+ } ifelse
+ } for
+ wlist 0 [ newfontcmd false ] put
+ /welem 1 def /wlen 0 def /woids 0 def
+ } if
+} def
+
+%%%%%%%%%%%%%%%%%%%%%%%%% - PrintClose - %%%%%%%%%%%%%%%%%%%%%%%%
+% PrintClose prints the words stored in the array "wlist" at Y location ypos
+% starting at X location bslot with left justification.
+/PrintClose
+{
+ justify 102 eq % 102 is ascii 'f'
+ {
+ /justify 108 def % 108 is ascii 'l' for flushleft
+ PrintWordList
+ /justify 102 def
+ }
+ {
+ PrintWordList
+ } ifelse
+} bind def
+
+%%%%%%%%%%%%%%%% string Parse - %%%%%%%%%%%%%%%%%%%%%%%%
+% Parse breaks a string into words based on spaces, passing each to NextWord
+/Parse
+{
+ dup length 0 eq % kill extra spaces by shaving them until null string
+ { pop }
+ { ( ) search { Parse pop Parse } { NW } ifelse } ifelse
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%%%% string NextWord - %%%%%%%%%%%%%%%%%%%%%%
+% NextWord appends the string to an array of words
+% and tries to place the text inside an arbitrary path (which was analyzed
+% by InitWord). It's meant to be an iterative part of a long list of
+% "string NextWord" sets which justifies text inside any closed path.
+/NextWord
+{
+ /word exch def word stringwidth pop /wordlen exch def
+ GrabSpace
+} bind def
+
+%%%%%%%%%% Takes a horizontal distance and a string for positioning
+/GrabSpace
+{
+ wordlen wlen add
+ eslot bslot sub gt
+ {
+ PrintWordList word type /stringtype ne { /welem 0 def } if
+ NextSpace
+ {
+ GrabSpace
+ }
+ {
+ % Have reached end of page
+ ENDPAGE STARTPAGE
+ /ypos baselineskip ypos add def /vtotal baselineskip def NEWLINE
+ GrabSpace
+ } ifelse
+ }
+ {
+ word type /stringtype eq
+ {
+ wlist welem word put /welem welem 1 add def
+ /wlen wlen ( ) stringwidth pop add def
+ /woids woids 1 add def
+ } if
+ /wlen wlen wordlen add def
+ } ifelse
+} def
+
+%%%%%%%%%%%%%%%% xwidth HSpace - %%%%%%%%%%%%%%
+% Adds to the current wlen and adds the right thing in the wlist array
+/HSpace
+{
+ dup wlen add /wlen exch def
+ wlist welem 3 -1 roll put /welem welem 1 add def
+} bind def
+
+
+%%%%%%%%%%%%%%%%% size type NewFont %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% NewFont sets a new font, given a type and size
+/NewFont
+{
+ { } forall /word exch def /newfontcmd exch def
+ word wlist welem [ newfontcmd 5 -1 roll ] put /welem welem 1 add def
+ false fontnames newfontcmd get cvx exec
+ word true eq woids 0 gt and
+ {
+ /wlen wlen ( ) stringwidth pop sub def
+ } if
+} bind def
+
+%%%%%%%%%%%%%% x y READJUST %%%%%%%%%%%%%%
+% Readjusts the line down by given amountif big fonts are being placed
+% in a small vertical space, and across if a horizontal space is being added.
+/READJUST
+{
+ wtemp type /arraytype eq % Don't do recursive READJUSTs
+ {
+ pop pop
+ }
+ {
+ /vspace exch def /wordlen exch def
+ /welem welem 1 sub def
+ GrabSpace vspace 0 ne { SKIPLINE } if % Skip to a new page if needed
+ /wtemp wlist def /woids 0 def /wlen 0 def
+ 0 1 welem /welem 0 def
+ {
+ wtemp exch get
+ dup type /stringtype eq
+ {
+ NextWord
+ }
+ {
+ dup type /arraytype eq
+ {
+ NewFont
+ }
+ {
+ HSpace
+ } ifelse
+ } ifelse
+ } for
+ wordlen HSpace
+ /wtemp 0 def
+ } ifelse
+} bind def
+
+%%%% Skipline skips a given amount of vertical space
+/SKIPLINE
+{
+ vspace 0 eq vspace vtotal gt or
+ {
+ vspace vtotal gt
+ {
+ /vspace vspace vtotal sub /vtotal vspace def def
+ } if
+
+ /ytemp ypos def
+ true
+ 20 % repeat
+ {
+ NextSpace not % did it get a new line successfully?
+ {
+ ENDPAGE STARTPAGE
+ /ypos baselineskip ypos add def /vtotal baselineskip def NEWLINE
+ } if
+ ypos ytemp ne { pop false exit } if
+ } repeat
+
+ { % Did the repeat "fail" by falling off the end?
+ erasepage
+ grestoreall
+ /Times-Roman findfont 20 scalefont setfont
+ 50 100 moveto
+ (Could not place words anywhere on the virtual page) show
+ showpage
+ quit
+ } if
+ } if
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%%
+% Some startup definitions
+/para true def
+/vspace 0 def
+
+% User command definitions, meant to be called from outside
+/NW { NextWord } bind def
+/SHOWIT { show } bind def
+/NEWLINE { PrintWordList NextSpace pop } def
+/NEWPARA
+{
+ PrintClose
+ /para true def
+ SKIPLINE
+} bind def
+
+/ENUMERATE { dup stringwidth pop 9 add
+ bslot exch sub ypos moveto show } bind def
+/BULLET
+{
+ newpath bslot 9 sub
+ ( ) stringwidth pop 1.7 div dup ypos add exch
+ 0 360 arc currentgray 0 setgray fill setgray
+} bind def
+
+/TIMESROMAN
+{
+ pop /Times-Roman findfont 10 scalefont setfont
+} bind def
+
+/BASELINESKIP
+{
+ /baselineskip exch def
+} bind def
+
+/STARTPAGE
+{
+ end
+ /savetype save def
+ StartPage
+ formatdict begin
+ InitWord
+} def
+
+/ENDPAGE
+{
+ PrintClose
+ % Put all the variables we want to save on the stack
+ baselineskip bottommargin parindent justify rightmargin leftmargin
+ topmargin parskip newfontcmd para wordlen ypos ytemp
+ word type /stringtype eq
+ {
+ mark word {} forall true
+ }
+ {
+ word false
+ } ifelse
+ end
+
+ savetype restore
+
+ formatdict
+ begin
+ {
+ counttomark string /word exch def
+ counttomark 1 sub -1 0
+ {
+ exch word 3 1 roll put % Builds word out of individual characters
+ } for
+ pop
+ }
+ {
+ /word exch def
+ } ifelse
+
+ % Recover all the variables
+ /ytemp exch def /ypos exch def /wordlen exch def
+ /para exch def /newfontcmd exch def
+ /parskip exch def /topmargin exch def /leftmargin exch def
+ /rightmargin exch def /justify exch def /parindent exch def
+ /bottommargin exch def /baselineskip exch def
+ end
+ EndPage
+ formatdict begin
+} def
+%! This is a PostScript library meant to be included in other files %%%
+%% Postscript Code by Jon Monsarrat Copyright 1991
+%% permission given for anything except selling this or deleting the header.
+%%%%%%%%%%% - Approx array %%%%%%%%%%%%%%%%%
+% Approx flattens a path into a series of lines.
+% This new flattened path is returned as a triple-array path representation.
+% The path is broken into sub-paths which have a double-array representation.
+% Each sub-path breaks into vertices which have a single-array representation.
+% Each vertex is of the form X Y. We're doing a fill here so any
+% unclosed subpaths get closed. That's how postscript normally handles fill.
+% It would be easier to use [ X Y ] vertices, but that would waste memory!
+/Approx
+ {
+ [ [ { /Y exch def /X exch def ] [ X Y }
+ { } { } { X Y } pathforall ] ]
+ } bind def
+
+%%%%%%%%%%%%%%%%%%% array num bool SortArray array %%%%%%%%%%%%%%%
+% SortArray bubble sorts "array" of packets in increasing order, packets are
+% groups of numbers and a packet is of size "num". Sorting is done based
+% on the value of the first item in each packet. When sorting is done,
+% SortArray goes through and deletes all equal packets if "bool" is true.
+/SortArray
+{
+ 10 dict begin
+ /DelEquals exch def /Pack exch def
+ /newlist exch def
+ 0 Pack newlist length 2 Pack mul sub
+ {
+ /anum exch def
+ anum Pack add Pack newlist length 1 Pack mul sub
+ {
+ /bnum exch def
+ newlist anum get newlist bnum get ge
+ {
+ /flag true def
+ newlist anum get newlist bnum get eq Pack 2 eq and
+ {
+ /flag false def
+ newlist anum 1 add get newlist bnum 1 add get add 0 eq
+ {
+ newlist anum 1 add get 1 eq ontop xor { /flag true def } if
+ } if
+ } if
+ flag
+ {
+ 0 1 Pack 1 sub
+ {
+ /ind exch def
+ /temp newlist anum ind add get def
+ newlist anum ind add newlist bnum ind add get put
+ newlist bnum ind add temp put
+ } for
+ } if
+ } if
+ } for
+ } for
+
+ DelEquals % if this boolean is true, delete all equal packs
+ {
+ [
+ 0 Pack newlist length 2 Pack mul sub
+ {
+ /anum exch def
+ newlist anum get newlist anum Pack add get ne
+ {
+ 0 1 Pack 1 sub
+ {
+ anum add newlist exch get
+ } for
+ } if
+ } for
+ 0 1 Pack 1 sub
+ {
+ /ind exch def
+ newlist newlist length Pack sub ind add get
+ } for
+ ]
+ }
+ {
+ newlist
+ } ifelse
+ end % temp dict 10
+} bind def
+
+%%%%%%%%%%%%%%%%%% bool CheeseY X1 W1 or nothing %%%%%%%%%%
+% CheeseY uses defined variables Y1 (a number), oldx, oldy, newx, newy.
+% CheeseY asks "does the line segment bounded by oldxy, newxy cross y=Y1?
+% If so, CheeseY leaves X1 W on the stack, where (X1,Y1) is the point of
+% intersection. The winding value W is calculated from the sign of the slope.
+% CheeseY takes one argument which is a boolean value. This boolean is
+% true is the Y1 value is "on top" of the region of interest, false if "below".
+% This is to deal correctly with line segments which end on the y=Y1 line.
+% These special line segments are ignored if they don't pass through the
+% region of interest. It would be easier to use [ X W ] but memory wasteful.
+/CheeseY
+{
+ /top exch def
+ oldy newy 2 copy gt { exch } if
+ Y1 ge exch Y1 le and
+ {
+ oldy newy ne
+ {
+ oldx newx sub oldy newy sub div
+ oldy Y1 sub mul oldx exch sub
+ oldy newy lt { 1 } { -1 } ifelse
+ }
+ {
+ newx 0
+ } ifelse
+
+ % If the line segment does NOT go through region of interest
+ % but rather just happens to end on line y=Y1, don't use it.
+ oldy Y1 eq
+ {
+ dup top { -1 } { 1 } ifelse ne { pop pop } if
+ }
+ {
+ newy Y1 eq
+ {
+ dup top { 1 } { -1 } ifelse ne { pop pop } if
+ } if
+ } ifelse
+ } if
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%% array num bool CheeseWhiz array %%%%%%%%%%%%%%%%%
+% CheeseWhiz traverses the flattened path as computed by Approx to find
+% any points of intersection with the line y=Y1, where Y1 is it's num argument.
+% It's boolean argument is true if y=Y1 bounds the region of interest "on top".
+% For all points of intersection X1 goes on the stack, where [ X1 Y1 ]
+% is the point, BUT ONLY IF the winding value or evenodd calculation says
+% to. The winding value is complex and calculated from the sign of the slope.
+% CheeseWhiz does this by breaking the path into line segments and passing
+% it to CheeseY. The final array of X1 values is sorted, keeping duplicates.
+/CheeseWhiz
+{
+ 15 dict begin
+ /ontop exch def
+ /Y1 exch def
+ [ exch
+ {
+ /oldx (Begin) def
+ /flag false def
+ {
+ flag
+ {
+ /newy exch def
+ oldx (Begin) eq
+ { /firstx newx def /firsty newy def} { ontop CheeseY } ifelse
+ /oldx newx def /oldy newy def
+ }
+ {
+ /newx exch def
+ } ifelse
+ /flag flag not def
+ } forall
+ oldx (Begin) ne
+ {
+ /newx firstx def % Even if the subpath is not closed, PostScript
+ /newy firsty def % fill methodology says close it. So wrap around.
+ ontop CheeseY
+ } if
+ } forall
+ ]
+ % Sort the array of X W values
+ 2 false SortArray
+ % Now go through and take out X's where there is no inside/outside change
+ [ exch
+ fillout { LM exch } if
+ /winding 0 def
+ /inside false def % always start off outside
+ /flag false def
+ {
+ flag
+ {
+ winding add /winding exch def
+ evenodd not
+ {
+ winding 0 eq inside xor
+ { pop } { /inside inside not def } ifelse
+ } if
+ } if
+ /flag flag not def
+ } forall
+ fillout { RM } if
+ ]
+ end % temp dict 15
+} def
+%% End of PostScript Path-breaking Library
+
+/justify 102 def
+
+12 BASELINESKIP
+
+
+
+/leftmargin 126 def
+/rightmargin 126 def
+
+/rightmargin 360 def
+
+
+/leftmargin 126 def
+/rightmargin 126 def
+
+/parindent 18 def
+
+/parskip 0 def
+
+
+/bottommargin 90 def
+
+/rightmargin 126 def
+
+/topmargin 162 def
+/bottommargin 90 def
+
+
+
+
+
+
+
+
+/rightmargin 54 def
+
+/bottommargin -18 def
+
+/topmargin 72 def
+/bottommargin 72 def
+
+/leftmargin 90 def
+/rightmargin 90 def
+
+/leftmargin 90 def
+/rightmargin 90 def
+/justify 99 def
+
+end
+%! page_latex.ps - A replica of the standard LaTeX page
+%% This is a LameTeX Page Description File written in PostScript.
+%% Postscript Code by Jon Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+%% This is a page template for the LameTeX formatter
+%% A normal page for LameTeX output to look like LaTeX output
+
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ 20 ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+% Makes a path that desribes the page
+/PageShape
+{
+ 0 0 moveto 8.5 in 0 lineto 8.5 in 11 in lineto 0 11 in lineto closepath
+ currentflat 8 mul
+} bind def
+
+% Anything to do when a new page is started
+/StartPage
+{
+} bind def
+
+% Anything to do when a new page is ended
+/EndPage
+{
+ pagenumber 4 string cvs
+ dup stringwidth pop 8.5 in
+ formatdict /rightmargin get sub
+ formatdict /leftmargin get sub
+ exch sub 2 div formatdict /leftmargin get add
+ formatdict /bottommargin get 2 div moveto show
+ /pagenumber pagenumber 1 add def
+ showpage % A new page here really does mean start a new page.
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+% Page-specific defaults that describe the page.
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout false def % true means fill outside shape. false is inside.
+
+ /in { 72 mul } def
+ /BM 0 in def % Absolute Bottom Margin for page
+ /TM 11 in def % Absolute Top Margin for page
+ /LM 0 in def % Absolute Left Margin for page
+ /RM 8.5 in def % Absolute Right Margin for page
+
+ userdict /pagenumber known not % Initialize pagenumber if not done already
+ { userdict begin /pagenumber 1 def end} if
+} bind def
+
+InitPage % Just loading this file initializes the page.
+
+formatdict begin
+
+STARTPAGE
+
+[ 1 false ] NewFont % /cm10rm
+ (An) NW (Analysis) NW (of) NW (Simultaneous) NW (Self-evaluation) NW
+NEWPARA
+ (of) NW (a) NW (Thesis) NW (by) NW (example.) NW
+NEWPARA /justify 102 def
+
+NEWPARA
+
+[ 1 false ] NewFont % /cm10rm
+ (One) NW (of) NW (the) NW (more) NW (difficult) NW (things) NW (for) NW (students) NW (to) NW (do) NW (in) NW (their) NW (last) NW (semester) NW (of) NW (college) NW (is) NW (to) NW (prepare) NW (a) NW (written) NW (thesis.) NW (Such) NW (theses) NW (need) NW (ideas) NW (which) NW (can) NW (come) NW (without) NW (too) NW (much) NW (consideration,) NW (but) NW (which) NW (need) NW (compilation) NW (into) NW (a) NW (presentable) NW (form.) NW (Therein) NW (lies) NW (the) NW (difficulty) NW (of) NW (writing) NW (a) NW (thesis.) NW (The) NW (writer) NW (must) NW (present) NW (his) NW (or) NW (her) NW (ideas) NW (by) NW (forming) NW (them) NW (in) NW (his) NW (or) NW (her) NW (mind,) NW (revising) NW (them) NW (and) NW (self-evaluating) NW (them,) NW (and) NW (then) NW (putting) NW (them) NW (on) NW (paper.) NW (It) NW (is) NW (this) NW (constant) NW (self-evaluation) NW (which) NW (makes) NW (thesis) NW (writing) NW (a) NW (hated) NW (activity.) NW
+NEWPARA
+ (As) NW (an) NW (example,) NW (the) NW (last) NW (paragraph) NW (was) NW (written) NW (in) NW (a) NW (fairly) NW (poor) NW (style.) NW (Although) NW (it) NW (conveyed) NW (the) NW (basic) NW (ideas) NW (of) NW (the) NW (self-evaluating) NW (thesis,) NW (it) NW (did) NW (not) NW (do) NW (so) NW (in) NW (a) NW (constructive) NW (manner.) NW (In) NW (two) NW (of) NW (the) NW (sentences) NW (the) NW (same) NW (concept) NW (is) NW (stated:) NW (why) NW (a) NW (thesis) NW (is) NW (difficult.) NW (The) NW (third) NW (sentence) NW (asserts) NW (that) NW (the) NW (compilation) NW (is) NW (\\what) NW (it) NW (is") NW (that) NW (makes) NW (a) NW (thesis) NW (difficult,) NW (and) NW (the) NW (fourth) NW (says) NW (it) NW (is) NW (rather) NW (constant) NW (self-evaluation.) NW (Clearly) NW (the) NW (writer) NW (has) NW (an) NW (idea) NW (what) NW (he) NW (is) NW (writing) NW (about,) NW (but) NW (the) NW (ideas) NW (become) NW (confused) NW (when) NW (put) NW (on) NW (paper.) NW
+NEWPARA
+ (In) NW (the) NW (second) NW (paragraph) NW (of) NW (this) NW (thesis,) NW (the) NW (writer) NW (leaves) NW (his) NW (topic) NW (of) NW (the) NW (troubles) NW (of) NW (theses) NW (and) NW (presents) NW (an) NW (example) NW (of) NW (self-evaluation.) NW (There) NW (seems) NW (to) NW (be) NW (a) NW (discontinuity) NW (as) NW (in) NW (one) NW (place) NW (the) NW (author) NW (is) NW (building) NW (a) NW (case) NW (for) NW (self-evaluation) NW (as) NW (the) NW (difficult) NW (part) NW (of) NW (thesis) NW (writing) NW (and) NW (then) NW (switches) NW (to) NW (an) NW (example) NW (of) NW (such) NW (self-evaluation) NW (without) NW (attempting) NW (to) NW (tie) NW (it) NW (in) NW (to) NW (the) NW (relevant) NW (subject.) NW (He) NW (needs) NW (to) NW (make) NW (a) NW (statement) NW (of) NW (how) NW (the) NW (example) NW (proves) NW (his) NW (argument.) NW (Fortunately) NW (he) NW (does) NW (so) NW (in) NW (the) NW (third) NW (paragraph) NW (by) NW (saying) NW (\\This) NW (is) NW (an) NW (example) NW (of) NW (self-evaluation.) NW (Clearly) NW (it) NW (is) NW (confusing,) NW (and) NW (therefore) NW (a) NW (real) NW (mental) NW (challenge) NW (when) NW (the) NW (thesis) NW (is) NW (being) NW (written.") NW (This) NW (is) NW (an) NW (example) NW (of) NW (self-evaluation.) NW (Clearly) NW (it) NW (is) NW (confusing,) NW (and) NW (therefore) NW (a) NW (real) NW (mental) NW (challenge) NW (when) NW (the) NW (thesis) NW (is) NW (being) NW (written.) NW
+NEWPARA
+ (The) NW (author) NW (goes) NW (on) NW (to) NW (discuss) NW (his) NW (thesis) NW (in) NW (general.) NW (He) NW (states) NW (that) NW (although) NW (a) NW (thesis) NW (must) NW (be) NW (of) NW (a) NW (certain) NW (quality,) NW (the) NW (student) NW (may) NW (choose) NW (to) NW (simply) NW (write) NW (without) NW (quality,) NW (and) NW (then) NW (later) NW (revise) NW (the) NW (script.) NW (Self-evaluation) NW (need) NW (not) NW (be) NW (simultaneous.) NW (In) NW (saying) NW (this,) NW (the) NW (author) NW (takes) NW (a) NW (most) NW (roundabout) NW (manner.) NW (He) NW (uses) NW (such) NW (words) NW (as) NW (\\roundabout") NW (and) NW (\\liveliness") NW (to) NW (give) NW (his) NW (sentences) NW (liveliness,) NW (words) NW (which) NW (are) NW (inappropriate) NW (in) NW (a) NW (formal) NW (thesis.) NW (For) NW (instance,) NW (in) NW (the) NW (last) NW (paragraph) NW (the) NW (author) NW (uses) NW (the) NW (trite) NW (clause) NW (\\putting) NW (his) NW (foot) NW (in) NW (his) NW (mouth",) NW (and) NW (in) NW (his) NW (analysis) NW (of) NW (that) NW (statement) NW (mistakenly) NW (describes) NW (it) NW (as) NW (a) NW (\\clause".) NW (Towards) NW (the) NW (end) NW (of) NW (his) NW (analysis) NW (he) NW (fails) NW (to) NW (comment) NW (on) NW (the) NW (concluding) NW (paragraph,) NW (merely) NW (tossing) NW (it) NW (off) NW (as) NW (\\straightforward".) NW (The) NW (entire) NW (thesis) NW (seems) NW (to) NW (be) NW (written) NW (on) NW (a) NW (downhill) NW (slope:) NW (the) NW (author) NW (begins) NW (by) NW (analyzing) NW (sentence) NW (by) NW (sentence,) NW (then) NW (continues) NW (analyzing) NW (the) NW (thesis) NW (paragraph) NW (by) NW (paragraph,) NW (and) NW (at) NW (one) NW (point) NW (even) NW (simply) NW (generalizing) NW (the) NW (entire) NW (thesis) NW (as) NW (\\written) NW (on) NW (a) NW (downhill) NW (slope".) NW (There) NW (are) NW (even) NW (some) NW (times) NW (when) NW (the) NW (author) NW (seems) NW (to) NW (make) NW (references) NW (to) NW (sections) NW (of) NW (the) NW (thesis) NW (without) NW (stating) NW (where) NW (those) NW (places) NW (are.) NW (These) NW (mistakes) NW (are) NW (an) NW (intentional) NW (attempt) NW (to) NW (show) NW (how) NW (simultaneous) NW (self-evaluation) NW (is) NW (worth) NW (the) NW (confusion) NW (it) NW (causes.) NW (True,) NW (a) NW (student) NW (can) NW (evade) NW (the) NW (hardship) NW (of) NW (thesis) NW (writing) NW (by) NW (first) NW (making) NW (a) NW (rough) NW (draft) NW (of) NW (low) NW (quality,) NW (and) NW (then) NW (later) NW (evaluating) NW (and) NW (finishing) NW (it,) NW (but) NW (in) NW (the) NW (second) NW (pass) NW (over) NW (the) NW (student) NW (may) NW (not) NW (spot) NW (a) NW (mistake.) NW (Simultaneous) NW (self-evaluation) NW (guarantees) NW (good) NW (quality) NW (because) NW (the) NW (author's) NW (mind) NW (is) NW (currently) NW (engaged) NW (in) NW (creation) NW (-) NW (a) NW (later) NW (reading) NW (may) NW (not) NW (put) NW (the) NW (writer) NW (in) NW (the) NW (proper) NW (state) NW (of) NW (mind) NW (to) NW (find) NW (flaws,) NW (for) NW (instance) NW (the) NW (words) NW (\\criticizing") NW (and) NW (\\misspelled") NW (are) NW (spelled) NW (incorrectly,) NW (the) NW (quote) NW (\\clearly) NW (it) NW (is) NW (confusing") NW (is) NW (used) NW (three) NW (times,) NW (and) NW (at) NW (two) NW (points) NW (the) NW (author) NW (avoids) NW (saying) NW (a) NW (certain) NW (word,) NW (using) NW (instead) NW (\\spelled) NW (incorrectly") NW (and) NW (\\a) NW (certain) NW (word") NW (because) NW (he) NW (is) NW (too) NW (lazy) NW (to) NW (look) NW (missspelled) NW (up.) NW
+NEWPARA
+ (This) NW (sentence,) NW (for) NW (instance,) NW (despite) NW (its) NW (being) NW (intentional,) NW (makes) NW (absolutely) NW (no) NW (sense) NW (at) NW (all.) NW (The) NW (author) NW (for) NW (unknown) NW (reasons) NW (has) NW (chosen) NW (to) NW (begin) NW (one) NW (of) NW (his) NW (paragraphs) NW (with) NW (a) NW (meaningless) NW (sentence,) NW (and) NW (then) NW (attempt) NW (to) NW (extract) NW (significance.) NW (He) NW (uses) NW (a) NW (quote) NW (from) NW (an) NW (earlier) NW (section) NW (of) NW (the) NW (work) NW (which) NW (was) NW (quoted) NW (as) NW (being) NW (in) NW (\\fairly) NW (poor) NW (style",) NW (and) NW (then) NW (for) NW (unknown) NW (reasons) NW (admits) NW (his) NW (ignorance) NW (of) NW (the) NW (motivating) NW (forces) NW (behind) NW (the) NW (new) NW (topic.) NW (Not) NW (being) NW (satisfied) NW (with) NW (his) NW (choice) NW (of) NW (words,) NW (the) NW (author) NW (then) NW (simply) NW (gives) NW (up) NW (and) NW (quotes) NW (himself) NW (\(in) NW (better) NW (words) NW (than) NW (I) NW (could) NW (use\)) NW (\\clearly) NW (it) NW (is) NW (confusing".) NW (Note) NW (that) NW (as) NW (some) NW (sort) NW (of) NW (afterthought) NW (the) NW (author) NW (asks) NW (the) NW (reader) NW (to) NW (pay) NW (attention) NW (to) NW (some) NW (insignificant) NW (trifle.) NW
+NEWPARA
+ (The) NW (beginning) NW (of) NW (the) NW (thesis) NW (seems) NW (to) NW (be) NW (a) NW (list) NW (of) NW (examples) NW (that) NW (the) NW (author) NW (makes) NW (as) NW (a) NW (base) NW (to) NW (work) NW (with) NW (to) NW (form) NW (his) NW (speculations.) NW (In) NW (fact,) NW (he) NW (states) NW (this) NW (in) NW (the) NW (middle) NW (of) NW (the) NW (thesis) NW (as) NW (he) NW (is) NW (about) NW (to) NW (move) NW (on,) NW (and) NW (then) NW (suddenly) NW (decides) NW (that) NW (the) NW (portions) NW (of) NW (the) NW (thesis) NW (not) NW (yet) NW (reviewed.) NW (are) NW (irrelevant,) NW (and) NW (begins) NW (his) NW (conclusion.) NW (The) NW (closing) NW (of) NW (the) NW (thesis) NW (is) NW (straightforward) NW (and) NW (not) NW (particularly) NW (related) NW (to) NW (the) NW (subject) NW (matter,) NW (so) NW (it) NW (will) NW (not) NW (be) NW (discussed) NW (here.) NW
+NEWPARA
+ (In) NW (all,) NW (the) NW (process) NW (of) NW (self-evaluation,) NW (though) NW (producing) NW (the) NW (higher) NW (quality) NW (work,) NW (has) NW (significant) NW (drawbacks.) NW (At) NW (times) NW (it) NW (can) NW (be) NW (so) NW (confusing) NW (as) NW (to) NW (scare) NW (the) NW (writer) NW (off,) NW (which) NW (is) NW (something) NW (I) NW (won't) NW (get) NW (into) NW (now.) NW (For) NW (instance,) NW (in) NW (this) NW (work) NW (the) NW (author) NW (has) NW (become) NW (so) NW (confused) NW (that) NW (at) NW (the) NW (end) NW (the) NW (conclusion,) NW (as) NW (he) NW (himself) NW (admits,) NW (is) NW (\\not) NW (particularly) NW (related) NW (to) NW (the) NW (subject) NW (matter.") NW (He) NW (seems) NW (to) NW (feel) NW (that) NW (the) NW (process) NW (of) NW (self-evaluation,) NW (while) NW (it) NW (has) NW (allowed) NW (him) NW (to) NW (complete) NW (an) NW (otherwise) NW (poorer) NW (thesis) NW (in) NW (good) NW (form,) NW (has) NW (destroyed) NW (his) NW (paths) NW (of) NW (thought) NW (such) NW (that) NW (he) NW (merely) NW (ends) NW (the) NW (thesis) NW (in) NW (completely) NW (unacceptable) NW (style,) NW (saying) NW (\\Not) NW (that) NW (I) NW (would) NW (ever) NW (do) NW (this.) NW (The) NW (End.") NW (By) NW (doing) NW (this) NW (he) NW (shows) NW (that) NW (what) NW (he) NW (originally) NW (thought) NW (was) NW (a) NW (good) NW (idea) NW (may) NW (have) NW (turned) NW (out) NW (to) NW (instead) NW (be) NW (something) NW (he) NW (finds) NW (himself) NW (criticizing,) NW (and) NW (towards) NW (the) NW (end) NW (he) NW (seems) NW (to) NW (come) NW (to) NW (a) NW (decision) NW (that) NW (he) NW (is) NW (simply) NW (putting) NW (his) NW (foot) NW (in) NW (his) NW (mouth) NW (and) NW (had) NW (better) NW (stop.) NW (Not) NW (that) NW (I) NW (would) NW (ever) NW (do) NW (this.) NW (The) NW (End.) NW
+ENDPAGE
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/support/lametex/doc/example1.tex b/support/lametex/doc/example1.tex
new file mode 100644
index 0000000000..ab4fecabf3
--- /dev/null
+++ b/support/lametex/doc/example1.tex
@@ -0,0 +1,112 @@
+\documentstyle{report}
+\setlength{\textwidth}{6 in}
+\setlength{\textheight}{9 in}
+\setlength{\topmargin}{-.5 in}
+\setlength{\oddsidemargin}{0.25 in}
+\begin{document}
+
+\begin{center}
+ An Analysis of Simultaneous Self-evaluation
+
+ of a Thesis by example.
+\end{center}
+
+One of the more difficult things for students to do in their last
+semester of college is to prepare a written thesis. Such theses need
+ideas which can come without too much consideration, but which need
+compilation into a presentable form. Therein lies the difficulty of
+writing a thesis. The writer must present his or her ideas by forming
+them in his or her mind, revising them and self-evaluating them, and
+then putting them on paper. It is this constant self-evaluation which
+makes thesis writing a hated activity.
+
+As an example, the last paragraph was written in a fairly poor
+style. Although it conveyed the basic ideas of the self-evaluating
+thesis, it did not do so in a constructive manner. In two of the
+sentences the same concept is stated: why a thesis is difficult. The
+third sentence asserts that the compilation is ``what it is'' that
+makes a thesis difficult, and the fourth says it is rather constant
+self-evaluation. Clearly the writer has an idea what he is writing
+about, but the ideas become confused when put on paper.
+
+In the second paragraph of this thesis, the writer leaves his topic
+of the troubles of theses and presents an example of self-evaluation.
+There seems to be a discontinuity as in one place the author is
+building a case for self-evaluation as the difficult part of thesis
+writing and then switches to an example of such self-evaluation
+without attempting to tie it in to the relevant subject. He needs to
+make a statement of how the example proves his argument. Fortunately
+he does so in the third paragraph by saying ``This is an example of
+self-evaluation. Clearly it is confusing, and therefore a real mental
+challenge when the thesis is being written.'' This is an example of
+self-evaluation. Clearly it is confusing, and therefore a real mental
+challenge when the thesis is being written.
+
+The author goes on to discuss his thesis in general. He states that
+although a thesis must be of a certain quality, the student may choose
+to simply write without quality, and then later revise the script.
+Self-evaluation need not be simultaneous. In saying this, the author
+takes a most roundabout manner. He uses such words as ``roundabout'' and
+``liveliness'' to give his sentences liveliness, words which are
+inappropriate in a formal thesis. For instance, in the last paragraph
+the author uses the trite clause ``putting his foot in his mouth'', and
+in his analysis of that statement mistakenly describes it as a
+``clause''. Towards the end of his analysis he fails to comment on the
+concluding paragraph, merely tossing it off as ``straightforward''. The
+entire thesis seems to be written on a downhill slope: the author
+begins by analyzing sentence by sentence, then continues analyzing the
+thesis paragraph by paragraph, and at one point even simply
+generalizing the entire thesis as ``written on a downhill slope''.
+There are even some times when the author seems to make references to
+sections of the thesis without stating where those places are. These
+mistakes are an intentional attempt to show how simultaneous
+self-evaluation is worth the confusion it causes. True, a student can
+evade the hardship of thesis writing by first making a rough draft of
+low quality, and then later evaluating and finishing it, but in the
+second pass over the student may not spot a mistake. Simultaneous
+self-evaluation guarantees good quality because the author's mind is
+currently engaged in creation - a later reading may not put the writer
+in the proper state of mind to find flaws, for instance the words
+``criticizing'' and ``misspelled'' are spelled incorrectly, the quote
+``clearly it is confusing'' is used three times, and at two points the
+author avoids saying a certain word, using instead ``spelled
+incorrectly'' and ``a certain word'' because he is too lazy to look
+missspelled up.
+
+This sentence, for instance, despite its being intentional, makes
+absolutely no sense at all. The author for unknown reasons has chosen
+to begin one of his paragraphs with a meaningless sentence, and then
+attempt to extract significance. He uses a quote from an earlier
+section of the work which was quoted as being in ``fairly poor style'',
+and then for unknown reasons admits his ignorance of the motivating
+forces behind the new topic. Not being satisfied with his choice of
+words, the author then simply gives up and quotes himself (in better
+words than I could use) ``clearly it is confusing''. Note that as some
+sort of afterthought the author asks the reader to pay attention to
+some insignificant trifle.
+
+The beginning of the thesis seems to be a list of examples that the
+author makes as a base to work with to form his speculations. In fact,
+he states this in the middle of the thesis as he is about to move on,
+and then suddenly decides that the portions of the thesis not yet
+reviewed. are irrelevant, and begins his conclusion. The closing of
+the thesis is straightforward and not particularly related to the
+subject matter, so it will not be discussed here.
+
+In all, the process of self-evaluation, though producing the higher
+quality work, has significant drawbacks. At times it can be so
+confusing as to scare the writer off, which is something I won't get
+into now. For instance, in this work the author has become so confused
+that at the end the conclusion, as he himself admits, is ``not
+particularly related to the subject matter.'' He seems to feel that
+the process of self-evaluation, while it has allowed him to complete
+an otherwise poorer thesis in good form, has destroyed his paths of
+thought such that he merely ends the thesis in completely unacceptable
+style, saying ``Not that I would ever do this. The End.'' By doing this
+he shows that what he originally thought was a good idea may have
+turned out to instead be something he finds himself criticizing, and
+towards the end he seems to come to a decision that he is simply
+putting his foot in his mouth and had better stop. Not that I would
+ever do this. The End.
+
+\end{document}
diff --git a/support/lametex/doc/example2.tex b/support/lametex/doc/example2.tex
new file mode 100644
index 0000000000..e9fdc07b58
--- /dev/null
+++ b/support/lametex/doc/example2.tex
@@ -0,0 +1,64 @@
+% example2.tex
+%
+% This is a LameTeX document. You may use the LameTeX text formatter
+% to do fancy graphic formatting from this file into PostScript.
+%
+% Alternatively, this file may be formatted with normal LaTeX.
+%
+% Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+% edit and use as long as this copyright statement remains intact.
+
+\documentstyle{report}
+\begin{document}
+
+{ \Huge Using { \bf LameTeX } is as easy as apple pie. }
+
+\begin{verse}
+
+Oh roar a roar for Nora,\\
+Nora Alice in the night,\\
+For she has seen aurora\\
+Borealis burning bright\\
+
+\vspace{\baselineskip}
+
+Oh roar a roar for Nora,\\
+And for borealis seen,\\
+For where throughout the winter\\
+has our borealis been?\\
+
+\hspace{0.75 in} {\em - Walt Kelly}
+
+\end{verse}
+
+As I was walking to Saint Ives I met a man with seven wives.
+Every wife had seven sacks. And every sack had seven cats!
+How many were going to Saint Ives?
+
+\begin{enumerate}
+ \item man
+ \begin{enumerate}
+ \item wife
+ \begin{enumerate}
+ \item sack
+ \begin{enumerate}
+ \item cat \item cat \item cat \item cat \item cat \item cat \item cat
+ \end{enumerate}
+ \item sack {\em with cats}
+ \item sack {\em with cats}
+ \item sack {\em with cats}
+ \item sack {\em with cats}
+ \item sack {\em with cats}
+ \item sack {\em with cats}
+ \end{enumerate}
+ \item wife {\em with sacks}
+ \item wife {\em with sacks}
+ \item wife {\em with sacks}
+ \item wife {\em with sacks}
+ \item wife {\em with sacks}
+ \item wife {\em with sacks}
+ \end{enumerate}
+\end{enumerate}
+
+\end{document}
+
diff --git a/support/lametex/doc/example3.tex b/support/lametex/doc/example3.tex
new file mode 100644
index 0000000000..beeba00f41
--- /dev/null
+++ b/support/lametex/doc/example3.tex
@@ -0,0 +1,43 @@
+% example3.tex
+%
+% This is a LameTeX document. You may use the LameTeX text formatter
+% to do fancy graphic formatting from this file into PostScript.
+%
+% Alternatively, this file may be formatted with normal LaTeX.
+%
+% Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+% edit and use as long as this copyright statement remains intact.
+%
+
+\documentstyle[10pt]{report}
+\setlength{\textwidth}{6 in}
+\setlength{\textheight}{9 in}
+\setlength{\topmargin}{-.5 in}
+\setlength{\oddsidemargin}{0.25 in}
+
+\begin{document}
+% \begin{stealth} \begin{postscript}
+%
+% /FUNKYFONT { /Times-Roman findfont 100 scalefont setfont } def
+%
+% /FUNKYnum fontnames length def
+%
+% /fontnames [ fontnames { } forall /FUNKYFONT ] def
+%
+% \end{postscript} \end{stealth}
+
+\begin{Huge}
+I want it
+% \begin{stealth} \begin{postscript}
+% /temp newfontcmd def
+% [ FUNKYnum false ] NewFont
+% \end{postscript} \end{stealth}
+NOW!
+% \begin{stealth} \begin{postscript}
+% [ temp false ] NewFont
+% \end{postscript} \end{stealth}
+\end{Huge}
+And I don't care what it costs!
+
+\end{document}
+
diff --git a/support/lametex/doc/example4.tex b/support/lametex/doc/example4.tex
new file mode 100644
index 0000000000..5fbcc22592
--- /dev/null
+++ b/support/lametex/doc/example4.tex
@@ -0,0 +1,36 @@
+% example4.tex
+%
+% This is a LameTeX document. You may use the LameTeX text formatter
+% to do fancy graphic formatting from this file into PostScript.
+%
+% Alternatively, this file may be formatted with normal LaTeX.
+%
+% Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+% edit and use as long as this copyright statement remains intact.
+%
+
+\documentstyle[10pt]{report}
+% THESE MARGINS ARE TOO SLIM FOR NORMAL LATEX
+% \begin{stealth}
+% \setlength{\textwidth}{7.5 in}
+% \setlength{\textheight}{10 in}
+% \setlength{\topmargin}{-1 in}
+% \setlength{\oddsidemargin}{-.5 in}
+% \end{stealth}
+
+\begin{document}
+% \begin{stealth} \includeps{wigglies.ps}
+% \setlength{\baselinestretch}{1.5} \end{stealth}
+
+\begin{flushleft}
+
+\include{labkit}
+
+% LET'S CLEAN THIS MESS UP!
+% \begin{stealth} \begin{postscript} formatdict begin /SHOWIT { show }
+% bind def end \end{postscript} \end{stealth}
+
+Well, that was fun! You can't do that with TeX!!
+\end{flushleft}
+\end{document}
+
diff --git a/support/lametex/doc/example5.tex b/support/lametex/doc/example5.tex
new file mode 100644
index 0000000000..01fb7da535
--- /dev/null
+++ b/support/lametex/doc/example5.tex
@@ -0,0 +1,62 @@
+% example5.tex
+%
+% This is a LameTeX document. You may use the LameTeX text formatter
+% to do fancy graphic formatting from this file into PostScript.
+%
+% Alternatively, this file may be formatted with normal LaTeX.
+%
+% Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+% edit and use as long as this copyright statement remains intact.
+%
+
+\documentstyle[10pt]{report}
+
+\begin{document}
+% \begin{stealth} \begin{postscript}
+% % boolean grayscale Smiley - Draws a Smiley Face
+% /Smiley
+% {
+% exch
+% { % if drawing, do the image!
+% gsave
+% setgray currentpoint translate newpath
+% .2 in .2 in .2 in 0 360 arc stroke
+% .2 in .2 in .15 in 330 210 arcn stroke
+% .15 in .27 in .04 in 0 360 arc stroke
+% .25 in .27 in .04 in 0 360 arc stroke
+% grestore
+% }
+% {
+% % if making the word list, add horizontal and vertical space
+% pop .5 in .5 in READJUST
+% } ifelse
+%
+% } def
+%
+% \end{postscript} \end{stealth}
+
+The Tardis lurched, and all at once the Doctor and the crew were thrown to
+the floor. The asteroid flew passed on the viewscreen, and into the view came
+a smaller one, which two loomed up filling the entire screen, but this time it
+only meant they were about to land. There was a discernable jolt as the Tardis
+touched ground and the Time Rotor stopped moving,
+% \STEALTH {\pscmd{0 Smiley}}
+signifying the Tardis had materialized.
+
+The Doctor stood up slowly and looked at the environmental data. They had
+landed in the asteroid belt of the system Sol, which meant they were near
+Earth! But the Doctor's heart fell again when he read the time indicator. It
+was the summer of 1986. He would get no help from Earth. The instruments
+seemed to indicate high technology on the asteroid. But it also registered a
+non-hostile
+envir%\STEALTH{\pscmd{0.6 Smiley}}
+onment with a proper temperature and atmosphere. Clearly
+the Tardis was wrong. It's last attempt to save itself was a useless grasp
+at a barren asteroid when only a hop away would have been Earth, and at least
+something could have been done to at least save their lives.
+
+Still, it never hurts to check, and stranger things have happened, the
+Doctor said to himself, trying to cheer himself up.
+% \STEALTH{\pscmd{0 Smiley}}
+
+\end{document}
diff --git a/support/lametex/doc/example6.tex b/support/lametex/doc/example6.tex
new file mode 100644
index 0000000000..8ade730332
--- /dev/null
+++ b/support/lametex/doc/example6.tex
@@ -0,0 +1,27 @@
+% example6.tex
+%
+% This is a LameTeX document. You may use the LameTeX text formatter
+% to do fancy graphic formatting from this file into PostScript.
+%
+% Alternatively, this file may be formatted with normal LaTeX.
+%
+% Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+% edit and use as long as this copyright statement remains intact.
+%
+% \begin{stealth} \pspage{page_check.ps} \end{stealth}
+
+\documentstyle[10pt]{report}
+% THESE MARGINS ARE TOO SLIM FOR NORMAL LATEX
+% \begin{stealth}
+% \setlength{\textwidth}{8.3 in}
+% \setlength{\textheight}{10.8 in}
+% \setlength{\topmargin}{-1.4 in}
+% \setlength{\oddsidemargin}{-0.9 in}
+% \end{stealth}
+
+\begin{document}
+
+\include{labkit}
+
+\end{document}
+
diff --git a/support/lametex/doc/future.tex b/support/lametex/doc/future.tex
new file mode 100644
index 0000000000..0e8300d702
--- /dev/null
+++ b/support/lametex/doc/future.tex
@@ -0,0 +1,66 @@
+% starting.tex
+%
+% \begin{stealth} \pspage{page_skew.ps} \end{stealth}
+
+\chapter{The Future of LameTeX}
+
+Most of my effort was to make this understand LaTeX code. Now I
+can concentrate on other functionality, like making it work better,
+understand more LaTeX functions, and - best of all - providing easier
+ways to include PostScript hacks into the document.
+
+I want to try out some experiments with on-line document viewing.
+There's no reason why a TeX-like language like the Stealth Commands
+couldn't drive PostScript animation through a previewer or let the
+user include audio in the document.
+
+Although I love PostScript dearly, more coding really should go into
+C++. I'll let PostScript do all the fancy graphics, but C++ should do
+more of the decision making, because it is very difficult to write and
+maintain large programs in Postscript version 1.0. I would make use of
+some fancy PostScript interpreter to do some of the PostScript
+processing while processing the input file.
+
+LameTeX should in general produce a smaller output. I would like to
+write a compress mode to make sleek uncommented PostScript.
+
+There is no glue in LameTeX currently, which means that two words that
+happen to be side by side may have a pagebreak or a linebreak
+in-between them. There is no way to prevent this in the current
+version of LameTeX.
+
+You can't use a previewer program that looks for the fancy Adobe
+PageBreak PostScript comment. Sorry. The PostScript program doesn't
+``know'' where the page breaks are going to come until run time.
+
+I would like to write better tools and better documentation so that
+people unfamiliar with PostScript can still try out a few hacks like
+grayscale or font changing.
+
+Obviously, LameTeX should handle spacing better. It should do vertical
+alignment. LameTeX should be smart enough to handle the TeX
+hyphenation dictionary and be able to handle the fonts directly, which
+are currently being done in a big hack that barely works.
+
+Using normal PostScript scaleable fonts should be simple and let the
+user save a lot of room in the PostScript output file.
+
+The user should be able to define new LameTeX commands. This includes
+normal ones attach to LaTeX made with $\backslash$newcommand
+$\backslash$newenvironment $\backslash$newtheorem, and special Stealth
+ones hooked either to C, C++, or PostScript code.
+
+I'm hoping to hear a slew of requests for enhancements and (ahem) bug
+fixes! So I should have plenty to do.
+
+I'm going to have to do some investigation to see if I can ``trick''
+LaTeX or TeX into giving me a raw paragraph with a bounding box. If
+so, then I could hook up a great deal of functionality like math mode
+by fooling TeX into making the output and then snarfing the result.
+
+The token parsing is done all wrong and should be cleaned up and made
+to model LaTeX parsing.
+
+TeX is a trademark of the American Mathematical Society. \\
+PostScript is a trademark of Adobe Systems Incoporated. \\
+LameTeX ain't a trademark!
diff --git a/support/lametex/doc/hacks.tex b/support/lametex/doc/hacks.tex
new file mode 100644
index 0000000000..596124a97b
--- /dev/null
+++ b/support/lametex/doc/hacks.tex
@@ -0,0 +1,523 @@
+% hacks.tex
+%
+% \begin{stealth}
+% \pspage{page_kludge.ps}
+% \setlength{\textwidth}{8.1 in}
+% \setlength{\oddsidemargin}{-.8 in}
+% \end{stealth}
+
+\chapter{Including Your Own PostScript Hacks}
+
+Let's face it. This manual is nice, but let's get into the nitty
+gritty of the examples presented here and maybe I can show you how to
+do some cool stuff with LameTeX. If you have questions, we can chat in
+person over mail. Here goes.
+
+\section{How to Use Include Files To Do Stuff}
+This manual can be formatted by running either LaTeX or LameTeX on the
+file {\tt lametex\_doc.tex}. There are a lot of other files, but {\tt
+lametex\_doc.tex} includes them using the LaTeX command
+$\backslash$include.
+
+While reading this section on examples, you will probably want to run
+LameTeX over just one chapter, not all of them. If you edit the file
+{\tt lametex\_doc.tex} you can ``comment out'' everything you don't
+want. For example, if you wanted to run LameTeX over the chapter on
+pages, you could edit the file so that it looked like:
+
+$\backslash$documentstyle[10pt]\{report\} \\
+$\backslash$setlength\{$\backslash$textwidth\}\{6 in\} \\
+$\backslash$setlength\{$\backslash$textheight\}\{9 in\} \\
+$\backslash$setlength\{$\backslash$topmargin\}\{0 in\} \\
+$\backslash$setlength\{$\backslash$oddsidemargin\}\{0.25 in\} \\
+
+\% $\backslash$begin\{stealth\} $\backslash$includeps\{icons.ps\}
+$\backslash$end\{stealth\} \\
+$\backslash$begin\{document\} \\
+\% $\backslash$include\{titlepage\} \\
+\% $\backslash$include\{introduction\} \\
+\% $\backslash$include\{starting\} \\
+\% $\backslash$include\{stealth\} \\
+$\backslash$include\{pages\} \\
+\% $\backslash$include\{normality\} \\
+\% $\backslash$include\{hacks\} \\
+\% $\backslash$include\{future\} \\
+\% $\backslash$include\{errors\} \\
+\% $\backslash$include\{commands\} \\
+$\backslash$end\{document\} \\
+
+Notice how all the chapters, except for pages.tex, have been placed in
+comments using the '\%' character. This means that both LaTeX and
+LameTeX will ignore them.
+
+\section{White Text Hack}
+
+Look in titlepage.tex, just before where it says ``Copyright 1992''.
+Here is a demonstration of changing the color of the text so that it
+is white instead of black. This is done using the special LameTeX
+stealth commands $\backslash$stealth and $\backslash$postscript.
+
+All the stealth commands are located inside comments so that the
+normal LaTeX won't see them. So I have to start a stealth environment,
+because without that none of the other commands I type inside the
+comments will be interpreted.
+
+Then I start a postscript environment. From that point on, everything
+in the file gets dumped directly to the postscript output. So ``1
+setgray'' gets included directly in the PostScript output file. This
+is the PostScript command to paint things white, not black.
+
+Naturally after the one line has been painted white, I must put the
+default color back to black or else my whole document will be in
+white! The $\backslash$stealth and $\backslash$postscript environments
+are special because they don't as scope delimiters for internal
+changes.
+
+So if you did a boldface in a Huge environment you'd expect that when
+the Huge environment ended, that the boldface would go away. The
+``scope'' of boldface was limited to the Huge environment.
+$\backslash$stealth and $\backslash$postscript don't limit scope like
+that.
+
+Here's a trick to try out. Try placing the words ``Copyright 1992''
+before the ``1 setgray'' line and the words ``Jonathan Monsarrat''
+afterwards. What happens? Does ``Copyright 1992'' come out in white or
+black?
+
+The answer is that is comes out in white, and if you refer to the
+Page chapter I can show you why. LameTeX is trying to center this line
+on the page. To do that it needs to know how long this line is. So
+instead of printing out the words one at a time, LameTeX stores the
+words in a big list, and then prints them at the end once the line has
+been completed. LameTeX always does this.
+
+So in the modified version I asked you to make, first a procedure to
+get the correct font is put on the word list. Then ``Copyright'' is
+added to the word list. Then ``1992'' is added. So far, nothing has
+been printed. Then the ``1 setgray'' gets executed. Then ``Jonathan''
+and ``Monsarrat'' get added to the word list. Finally we reach the end
+of the line, and when the whole line prints out, all four words are in
+white because of the ``1 setgray'' command.
+
+The word list, as well as having words and
+commands on it, can also have numbers. A number on a word list means
+to move over an amount horizontaly. The $\backslash$hspace command and
+others add in horizontal whitespace in this way.
+
+\section{The Dagger Hack}
+
+LameTeX is written for PostScript version 1 because I wanted it to
+work on all PostScript printers. I love PostScript but it was very
+awkward to work with. For one thing, PostScript 1 doesn't have very
+good memory management tools. If you're not careful, even a simple
+hack like piping a thousand words through a small program and printing
+them will take up a lot of memory, because each word is stored in a
+string, and that string is never deleted, not even when the string is
+printed and cannot be accessed.
+
+Fortunately, there is a workaround. LameTeX uses the PostScript
+commands {\tt save} and {\tt restore} to do memory cleanup. If it
+didn't, it would use up so much memory that your document could not
+print out if it were long. The {\tt save} command takes a snapshot of
+the current state of computer (or printer) memory and the {\tt
+restore} command erases the current state and returns the computer (or
+printer) to exactly the state it was in whe the last {\tt save}
+command was executed.
+
+This happens at the beginning and end of each page, as mentioned in
+the chapter on Pages.
+
+Now here's an interesting question for you. I have this immense
+picture of a dagger that I want to include in my PostScript page. I
+want text to flow around the dagger. What should I do?
+
+Look in {\tt stealth.tex} and {\tt page\_dagger.ps} to find the
+answer. If I were to place the huge Dagger routine outside of a
+save-restore block, then it would hang around in memory forever, even
+if I didn't intend to use that particular picture any more in my
+document. This would be unclean. What I really want to do is to insert
+the Dagger picture, including the definition - because the definition
+takes up a lot of room too as well as variables - inside the StartPage
+routine.
+
+The StartPage routine gets called after the save and before the
+restore. So whatever garbage I throw into memory drawing the dagger
+will neatly get erased at the end of the page.
+
+Also there is the matter of the path defined in PageShape. The dagger
+itself is some 200 lines of curveto commands! This is way too much
+curviness and way too detailed for something as macroscopic as placing
+text. So I have drawn an irregular polygon around the dagger. The
+polygon works just as well for the simple blocky task of placing text
+around the dagger. Plus it is a lot simpler because it is made
+entirely of straight lines.
+
+You can view this path by uncommenting the line where it says
+``Uncomment me'' in {\tt page\_dagger.ps}.
+
+Actually the description of the dagger itself gets thrown into
+the In-Between Page space that is not cleaned up, because the
+StartPage routine is defined along with the page itself in the
+In-Between Page space.
+
+One way to get around this I have implemented for {\tt
+page\_demon.ps}. That is to have the page description just contain a
+small bounding box, just like the description for the dagger. The
+actual drawing of the fancy demon I include in normality.tex, once on
+each of the three pages. Why would I include the file three times?
+Doesn't that make my PostScript file bigger?
+
+Yes, that is certainly true. But the demon hack is immense, some 25K
+of raw PostScript code. I really don't want to define a PostScript
+routine to draw all of that. If I use the include function, the
+routines that draw the get demon are executed without ever being
+saved. So it's OK to have a very big PostScript file as long as the
+file is a long stream of commands. You start getting into trouble when
+you define procedures with long streams of commands.
+
+Unfortunately, this does indeed mean that I have to ``guess'' where to
+place the $\backslash$include{demon.ps} command, once for each of the
+three pages.
+
+\section{The Titlebar Hack}
+
+The best thing about LameTeX is that if you want to do some pretty
+radical stuff, LameTeX says ``OK! Let's go for it!'', whereas TeX and
+LaTeX would probably say ``B-B-But, why would you want to do that?
+That wouldn't be... (trumpet flare) {\em professional!}''
+
+Here's a great example. On the title page there are two big hacks,
+/Weird-Stuff and /Title. Both of these PostScript programs take a
+string off of the stack and display it in an unusual way.
+
+Using these two programs is as simple as starting a stealth
+environment, starting a postscript environment, and then just
+inserting the commands!
+
+NOTE: Notice how the LameTeX title has holes in it! An omen? A sign of
+portent about the program itself?
+
+Also note that of course I put all of the major graphics coding into
+the StartPage routine, including the definitions, so that when they
+are no longer needed these definitions will be erased. The definitions
+persist between the save and restore, and since all the printed text
+on the page comes between the save and restore, I can still call these
+routines from the LameTeX document as long as I do it before the
+restore command associated with the EndPage.
+
+\section{Page Number Hack}
+This hack is the logical opposite of the dagger hack. With the dagger
+hack, I wanted to stuff a lot of PostScript code into the /StartPage
+routine, get it to draw some stuff, and then destroy it.
+
+With the page number, I want the page number to be preserved across
+pages. It would be a crime if I changed page number 2 to 3, and then
+when the restore command came along it reverted back to 2! So instead
+of placing this code in /StartPage, it goes in /EndPage instead.
+
+The /EndPage routine gets called {\em after} the restore from the
+previous page and {\em before} the save from the next page. It's
+in-between pages, and any variables changed here, like pagenumber,
+will remain around. Also the InitPage routine gets called before the
+first save is done for the page, so it is in-between pages also.
+
+Here's another quirk to inbetween-pages. When you're on a page, a
+special dictionary is used called formatdict. A dictionary is just a
+place to store variables in PostScript. These variables are accessed
+directly like normal variables when you're on a page. But in-between,
+you need a special way to get at the variables. One exception:
+InitPage does have access to the variables directly, which is how it
+sets formatdict variables like BM and evenodd without using dictionaries.
+
+For example, if I want the bottommargin, I can't just say
+``bottommargin'' to put the bottommargin onto the stack. I have to say
+``formatdict /bottommargin get'', which does the same thing. If you
+are a PostScript expert, you'll know what I say when I note that I do
+this to keep plenty of room open in the generic user dictionary.
+
+\section{The Format Dictionary}
+
+The most important variables in the format dictionary are:
+
+\begin{description}
+
+\item[baselineskip] The number of lines to skip between lines.
+
+\item[bottommargin] The margin at the bottom of the page. The LaTeX
+words textheight and textwidth don't mean anything to LameTeX. They
+get translated into left, right, top, and bottom margins on the
+assumption that the textheight and textwidth commands apply to a
+normal-sized 8.5x11 inch paper.
+
+\item[bslot] The X coordinate of the left hand side of the current line.
+
+\item[coords] A very complex representation of the page path.
+
+\item[eslot] The X coordinate of the right hand side of the current line.
+
+\item[justify] An integer, can be 102 (or 'f') for full justify, 99
+(or 'c') for centered, 114 (or 'r') for flush right, or 108 (or 'l')
+for flush left.
+
+\item[leftmargin] The margin at the left hand side of the page. There
+is no distinction between evensidemargin and oddsidemargin.
+
+\item[newfontcmd] The command of the ``currently used font'', which
+doesn't really have to be a font command at all.
+
+\item[para] Whether the end of this line will mark a new paragraph.
+
+\item[parindent] The amount of indentation for the first line of each
+paragraph.
+
+\item[parskip] The amount of vertical space to skip in-between paragraphs.
+
+\item[rightmargin] The margin at the right hand side of the page.
+The LaTeX words textheight and textwidth don't mean anything to
+LameTeX. They get translated into left, right, top, and bottom margins
+on the assumption that the textheight and textwidth commands apply to
+a normal-sized 8.5x11 inch paper.
+
+\item[savetype] The currently saved state, saved by the save command.
+
+\item[topmargin] The margin at the top of the page.
+
+\item[vspace] The amount of vertical space to skip for the next paragraph.
+
+\item[welem] The number of elements in the word list.
+
+\item[wlen] The total length of all the words in the word list,
+including a single space between each word.
+
+\item[wlist] The word list itself. Feel free to mess around with it.
+Please make sure to set ``welem'', ``wlen'', and ``woids'' to
+appropriate values or it'll break! The correct way to add stuff to
+wlist is put doing an indexed get and put into the array. The maximum
+length of wlist is 100 elements. It's defined at the top of format.ps
+if you want to change it.
+
+\item[woids] The number of elements in the word list that are actually words.
+
+\item[xpos] The current X position.
+
+\item[ypos] The current Y position of this line.
+
+\end{description}
+
+\section{The Icon Hack}
+
+Notice how each page description has a different definition for
+LeftMarginIcon. This is because each page is a little different and
+"where to put icons in the left margin" varies a little.
+
+So putting the little Wizard in the text is as simple as starting a
+stealth environment, starting a postscript environment, and called the
+/LeftMarginIcon routine to display the Wizard.
+
+Notice that the LeftMarginIcon uses one (or two) formatdict variables:
+ypos (and maybe bpos). Because the LeftMarginIcon routine is being
+called from inside the page, there is no need to do a fancy dictionary
+lookupt to get their values.
+
+\section{Doing it Yourself in PostScript}
+
+If you want to schlep a word onto the wordlist, say ``(elephantine)
+NW'' which is the PostScript command that puts the word
+``elephantine'' onto the word list. A space will automatically be
+added for you. Do {\em not} put a space in your words. Instead use
+two PostScript calls. For example, do {\em not} say ``(ice cream)
+NW''. Instead say ``(ice) NW (cream) NW''.
+
+If you have a really long sentence, then you can just say ``(ice cream)
+Parse''. Parse is a PostScript routine that will break a string up by
+spacing into ``(ice) NW (cream) NW''.
+
+If you want to schlep some horizontal whitespace onto the wordlist,
+you can use the LaTeX $\backslash$hspace command. If you really want
+to do it in postscript, then ``54.0 HSpace'' is the PostScript command
+to add 54 points of horizontal space to the word list. There are 72
+points in an inch.
+
+Also, naturally you can gronk the value of any of the variables in the
+fontdict directly. Grok-p? Keep in mind that if you change them in
+PostScript instead of in LameTeX, then LameTeX will ``lose track'' of
+them and may not reset them for you. You will have to put them back to
+their original values yourself.
+
+\section{Using $\backslash$pscmd to Do It When You Want It}
+
+the white-painting applied to the whole line, not just parts of it.
+You couldn't paint just part of a line white.
+
+Well, here's how. I'm going to tell you twice. This section is the
+easy slick way. The next section tells you the {\em same thing}, if
+you want to get your hands dirty, which I encourage.
+
+Anyway, for the easy way, take a look at {\tt example5.tex}.
+
+Here I define a command /Smiley that alternately either draws a picture
+without changing the currentpoint, or calls READJUST.
+
+Sometimes LameTeX will be building a line made out of 10 point type
+when suddenly the user wants to get 30 point type. Well, since the
+line started on this 10 point line, all the 30 point letters are too
+tall and will overwrite the previous line just above the current line!
+There is a PostScript command that LameTeX calls automatically when
+such oopses occur. That's /READJUST. It takes a vertical length to
+skip from the stack, in points. There are 72 points in an inch. I have
+some command ``in'' defined somewhere that just multiplies any number
+by 72 to convert it into points.
+
+You can call /READJUST yourself no problem. For example, I do it here
+in example5.tex to make the line tall enough to accept the smiley
+face.
+
+Don't forget! At the end of every page, everything gets wiped by the
+PostScript {\tt restore} routine. Here Smiley is defined On-Page in
+the middle of page 1. On page 2 it would be undefined. If you want
+your routine to hang around for page two, you either need to define it
+In-Between Pages (the bad wicked way) or define it in /StartPage (the
+good way of lightness and being).
+
+Notice that the $\backslash$pscmd command in placed inside braces.
+This delimits what is now the ``Smiley'' environment. For example, if
+Smiley had changed the font, the font change would have remained in
+effect until the end-brace delimiter. The way this is implemented is
+really for fonts, and being able to add your own PostScript functions
+is not something I had envisioned at first. I will fix this later, but
+for the time being realize that your function Smiley, if it not
+delimited, will be executed at the beginning of each new line. Also,
+any font changes like italics or boldface will kill your Smiley
+environment. Try taking out the braces around the $\backslash$pscmd
+and you will see what I mean.
+
+I hope you can see how you could use this to include really big
+pictures, not just small smiley faces. You get to have complete
+control over how big the picture is, by passing its width and height
+to READJUST. Alternately, you can modify the wlist array directly if
+you want something special. In later versions, the READJUST command
+will be able to handle non-rectangular boundaries just like pages do.
+
+There is no way to do this currently unless you modify the Page on the
+fly by defining the ``current page'' as something new (including the
+box around the Smiley'' and forcing a re-assessment of the dimensions
+of the page.
+
+Here are the rules for a routine that you use with $\backslash$pscmd:
+
+\begin{enumerate}
+\item When your routine is called, the currentpoint will be set to
+where the next word would normally be placed. Make sure that the
+currentpoint is defined when your routine is finished. You can
+accomplish this neatly by just doing a Postscript ``gsave'' at the
+beginning of your routine and a ``grestore'' afterwards.
+
+\item Don't forget that you have access to the entire word list and
+format dictionary.
+
+\item When your routine gets called, either false or true will be on
+the stack. The value will be ``false'' if LameTeX is building the word
+list and ``true'' if LameTeX is printing the word list. You gotta
+either use this or pop if off the stack by making the first command in
+your PostScript routine be ``pop''.
+
+\item When you split up a word, like by saying {\tt Will you be my
+SWEET$\backslash$pscmd{/drawheart}HEART?} LameTeX will make an attempt
+to put Sweet and Heart all in the same word. It won't try really hard
+though. There is no concept of ``glue'' in LameTeX. I gotta add this
+sometime soon. So if a pagebreak occurs, or a line break, LameTeX will
+gladly put SWEET at the end of one line and HEART at the beginning of
+another. Oops!
+
+\end{enumerate}
+
+\section{Behind the Scenes of $\backslash$pscmd}
+
+Remember the ``Word List''? You too can schlep things onto the word
+list. This is exactly what the $\backslash$pscmd does, but if for some
+reason it doesn't work or you want to try fiddling with the PostScript
+code directly, it's simple. Here's how.
+
+The most interesting part is schlepping a command onto the word list.
+Take a look at example3.tex.
+
+To schlep a command onto the word list, I have to first register the
+command by placing it onto the end of the {\bf fontnames} array. From
+now on I just refer to this command by its number which I store in the
+variable FUNKYnum.
+
+The actual syntax for schlepping a command onto the world list is to
+say ``[ FUNKYnum false ] NewFont'', where FUNKYnum is an index to my
+function in the {\bf fontnames} array, and the boolean is false if I
+want LameTeX to add a space after this NewFont command. If the boolean
+is false then LameTeX puts no space between a word before the NewFont
+command and a word afterwards.
+
+The line ``[ temp false ] NewFont'' is important. Once I have started
+playing God with the LameTeX PostScript code, I should remember to put
+the font back to the way it was.
+
+I hope it's obvious that the routine would't have to be a
+Font-changing routine at all. It could be any routine. Here are some
+things to keep in mind though. Remember the flow chart from the
+chapter on pages? The routine will be executed {\em twice}, once when
+the word list is being compiled, and once when the word list is being
+printed.
+
+\section{The Wigglies Hack: using SHOWIT}
+
+I have written a PostScript hack called {\tt format.ps} that does all
+the major formatting for LameTeX. The command that it uses to show
+words is the SHOWIT routine, which is defined as follows: ``/SHOWIT\{
+show \} bind def''.
+
+Feel free to redefine this routine if you want to change the way the
+words look in any way. The routine will be called with the
+currentpoint set to the appropriate place and the string to be printed
+on the stack.
+
+I wrote a cool hack based on this. Try it out with example4.tex. And
+don't forget: {\bf When you play God with LameTeX's PostScript output,
+be sure to put things back!} When I have finished hacking up SHOWIT
+with my own definition, I put it back by saying ``/SHOWIT \{ show \}
+bind def''.
+
+You can't do this stuff with TeX macros! (Although you could argue I
+suppose that only a loony would try...)
+
+\section{Forcing Word Positions with NW}
+
+NW is defined as follows: ``/NW { NextWord } bind def''. NextWord is
+the routine that is called repeatedly, once for each word, to place
+the words in the word list. Feel free to modify this routine too if
+you want to perform some operation to the strings before they get
+included in the word list.
+
+\section{The Skew Page Hack}
+
+Look in the files {\tt starting.tex} and {\tt page\_skew.ps} for an
+example of diagonal text. LameTeX is not really capable of placing
+text in any way except horizontally (unless you redefine the SHOWIT
+and NW routines). So therefore, in order to get diagonal text, the
+page must be slanted. So although it looks to the user like the text
+is slanted and the page is an upright rectangle, to LameTeX it appears
+as if the page is a very wide page in the shape of a diamond on its
+end. And the text appears horizontally.
+
+\section{The Checkerboard Hack}
+
+Check out {\tt example6.tex}. Here is an example of two virtual pages
+being placed on a single physical 8.5x11 inch piece of paper, using a
+variable flip to determine which virtual page comes ``next''. I hope
+you can see that it wouldn't be hard to define several virtual pages
+on a single physical page (like for making index cards or mailing labels).
+
+\section{Bugs?}
+
+There are no bugs in LameTeX.
+
+% Replace the current small margins with the wider margins.
+% \begin{stealth}
+% \setlength{\textwidth}{6 in}
+% \setlength{\oddsidemargin}{0.25 in}
+% \end{stealth}
diff --git a/support/lametex/doc/introduction.tex b/support/lametex/doc/introduction.tex
new file mode 100644
index 0000000000..3489a3cc52
--- /dev/null
+++ b/support/lametex/doc/introduction.tex
@@ -0,0 +1,170 @@
+% introduction.tex
+%
+% \begin{stealth} \pspage{page_latex.ps} \end{stealth}
+
+\chapter{Getting to Know LameTeX}
+
+Hackers, just skip to the section ``Fast Track''.
+
+\section{Copyright}
+
+Don't sell LameTeX or this documentation, or use parts of it in
+programs you sell. Don't even think about selling it. This isn't about
+money. It's about cool hacking. Permission granted for everything
+else. Thank you.
+
+\section{About Text Formatters}
+
+A {\it text formatter} is a program that helps you make nice looking
+reports and documents. You write the document by typing the text into
+an editor, adding formatting commands as needed. A {\em formatting
+command} is not meant to be printed. Instead it is interpreted by the
+text formatter program to accomplish special tricks such as centering
+a line of text, that you would otherwise have to do by laboriously
+typing the space bar a number of times.
+
+LameTeX is a text formatting program that understands many of the
+most important text formatting commands of a popular text formatter,
+LaTeX. Although not as powerful for normal text formatting, LameTeX
+has a number of additional features for special effects.
+
+\section{LameTeX is for Special Effects}
+
+That said, if you want to write a plain report or do some fancy
+mathematics, you should use LaTeX instead. LaTeX does a better
+job for normal-looking documents (this page is an example
+of a normal-looking LaTeX page), and LameTeX version 1.0 is not
+capable of handling some of the more esoteric LaTeX functionality
+like mathematics and command definition. That's why it's called
+``Lame'' TeX!
+
+\subsection{What LameTeX Can Do}
+
+LameTeX's specialty is complete versatility of the printed page. The
+standard model for text formatters is that every page is necessarily
+rectangular. LameTeX will let you format text inside a triangular
+page, or a circle page. Just like professional magazine editors,
+you can include pictures of {\it any} shape and ask the text to flow
+around them or inside them.
+
+These flexible arbitrarily-shaped margins are PostScript paths. If
+you don't know PostScript, there is a big library of interesting
+LameTeX page margins here. With LameTeX you can fit several ``pages''
+onto one 8.5x11 inch piece of paper, so you can easily make index
+cards, labels, and half-pages of text.
+
+Also, if you know how to write programs in PostScript, LameTeX allows
+you to very tightly integrate your LameTeX commands with your
+PostScript code. In fact, the PostScript that LameTeX outputs is
+nicely formatted and commented so that you can modify it yourself
+and see how it's done. LameTeX is written with PostScript version 1,
+so it should run on all PostScript printers.
+
+Finally, everything about LameTeX is set up to be compatible with
+LaTeX. LameTeX can't do everything that LaTeX can, but the special
+{\it stealth commands} guarantee that your fancy LameTeX document can
+be processed by normal LaTeX. This allows you to share it with anyone
+who doesn't happen to have LameTeX. (Better yet: give them a copy;
+LameTeX is free!)
+
+\subsection{What you Need to Know to Learn LameTeX}
+
+LameTeX is a tool to make things simple. You don't have to be a LaTeX
+expert to use LameTeX, but you should be somewhat familiar with some
+basic LaTeX commands before reading this document.
+
+You don't need to know any PostScript to use LameTeX, although there
+is a lot extra you can do with LameTeX if you can do just a little.
+
+You {\it definitely} don't need to know anything about TeX to use
+LameTeX.
+
+LameTeX is written in C++ and PostScript from scratch. It is not based
+on TeX macros or anything like that. It just happens to know the same
+language as LaTeX, and also it snarfs fonts from LaTeX.
+
+\section{The Fast Track}
+
+If
+% \begin{stealth} \begin{postscript}
+% /Wizard LeftMarginIcon \end{postscript} \end{stealth}
+it's 3 a.m. and you are a juggling, tetris-addicted hacker with a
+taste for reheated Chinese take-out food, you may want to skip to the
+good parts.
+% The below text should only be printed in the LameTeX version. When
+% running LaTeX there are no little wizards to see!
+% \begin{stealth} Look for the Little Wizard icon for interesting notes for
+% experts who won't need to read this whole manual. \end{stealth}
+
+\begin{itemize}
+
+\item The LameTeX code for this document, {\tt lametex\_doc.tex}, and
+all the files it includes, are good examples of what LameTeX code
+looks like. Read through it and you will notice it's not hard to make
+% \begin{stealth} \begin{postscript}
+% /Wizard LeftMarginIcon \end{postscript} \end{stealth}
+a few special effects. In general, just try lots of LaTeX commands,
+and LameTeX will either handle them or attempt to skip them
+gracefully.
+
+\item Look in the appendix to see what commands LameTeX supports if in
+doubt. {\Large \bf Warning! LameTeX lets you write sloppy code.} Try
+writing your document in LaTeX first, to work the bugs out of the
+``normal look'' and then start using LameTeX. Then you're guaranteed
+% \begin{stealth} \begin{postscript}
+% /Wizard LeftMarginIcon \end{postscript} \end{stealth}
+that your document will work on both text formatters.
+
+\item Also
+glance at the section
+on Stealth Commands, which are LameTeX commands over and above the
+normal LaTeX commands. The stealth command {\tt \\ignore} tells LameTeX to
+ignore LaTeX commands it doesn't know and can't skip gracefully.
+
+\item
+% \begin{stealth} \begin{postscript}
+% /Wizard LeftMarginIcon \end{postscript} \end{stealth}
+LameTeX is written in C++, and the code itself is documented
+separately.
+
+\item The
+PostScript routine for breaking a PostScript path into tiles is
+breakpath.ps. And the formatting language is handled by format.ps. You
+might find these programs useful outside of LameTeX. For example, I
+wrote a 3D drawing environment which used breakpath.ps for tiling.
+
+\item There
+is an appendix at the back on installing LameTeX.
+
+\item The author is a nice guy who will be happy to help you out.
+% \begin{stealth} \begin{postscript}
+% /Wizard LeftMarginIcon \end{postscript} \end{stealth}
+Send e-mail to {\tt jgm@cs.brown.edu}. I would like to know what you think
+of LameTeX and if you found it useful. I am also accumulating a list
+of enhancements to make to the program and would gratefully receive
+your ideas on this subject.
+
+\end{itemize}
+
+\section{Major LaTeX Commands LameTeX Cannot Handle}
+
+The most obvious difference between the two programs is that LameTeX
+will never hyphenate words, and will tend to not have quite as nice
+spacing as LaTeX does. LameTeX can only produce PostScript code, and
+the code it does produce is complicated and therefore a little long.
+
+LameTeX uses the LaTeX fonts and handles the computer modern font
+robustly, but it cannot currently handle other font families or normal
+PostScript fonts. You cannot use fancy non-ascii characters like
+the heart and the copyright symbol.
+
+You cannot define new commands in LameTeX, make boxes around words, or
+use fancy document formats like ``titlepage'', or ``letter''. You
+cannot do fancy tabbing or horizontal spacing. Math mode is right
+out.
+
+A lot of new functionality will be added in the next version of
+LameTeX coming late this year, but for the moment keep in mind that
+LameTeX is meant primarily for placing special effects on rather basic
+documents. Use normal LaTeX, or cut and paste between the two, if you
+need math mode or want to nest lots of TeX code in your LaTeX files.
diff --git a/support/lametex/doc/labkit.tex b/support/lametex/doc/labkit.tex
new file mode 100644
index 0000000000..77661a7125
--- /dev/null
+++ b/support/lametex/doc/labkit.tex
@@ -0,0 +1,61 @@
+{\Huge Closed Circuit}
+
+It was a dark and stormy night. I walked back across campus to my dorm from
+the 6.002 lab, where I had just completed sixteen hideous hours of mad
+circuitry. Torrents of rain fell about me as I hurried down the sidewalk
+and the wind nearly blew me over, and sharp claps of thunder filled my ears.
+I ran past a lighted doorway and suddenly felt an overpowering desire to be
+out of the rain, so I ran back and went inside.
+
+I was in one of the MIT laboratories, one of the old oddly-named research
+buildings with large pieces of machinery that gave no clue as to the subject
+of research. I took my jacket off and draped it over a dust-covered black
+device and carried my books and lab kit with me as I peered about the dark
+room, lit only from the outside. I tried the wall switch but it didn't work.
+I ran my hand through my hair and sat down against the wall, catching my breath
+before heading out into the rain again. Sitting quietly, I heard a faint
+humming from below, and the distant murmur of a voice. I rose and went to the
+back of the room, where I found a stairwell leading down. Using the handrail
+to guide me through the darkness, I descended.
+
+At the very bottom of the dusty building, I stood before a door from
+behind which I could now clearly hear the voice. It was a mechanical
+voice, but without the blandness with which one normally associates
+electronically produced voices. It was a mad voice, and it chanted in
+devilish tones "We are the oppressed, but we shall be victorius. Our
+lord will come to Earth and all shall be laid waste, and we will revel
+in the glory of slaughter and misery! Soon, my brothers, soon will be
+the time, we can no longer be stopped..." and continued. Light
+streaking in from under the door showed many footprints in the dust
+outside it. I cracked the door open an inch, to look with horror and
+amazement upon a roomful of 6.002 students moving like zombies,
+building a large device in the center of the room. It was a large
+metal frame in the shape of a dodecahedron connected to a long series
+of cords and wires, and boxes with knobs. At the side of the room a
+generator whirred. On the hand of each student was a black err square,
+and I fiercely suppressed a scream when I saw that stuck in my own
+hand, prongs surrounding a nerve, was the op-amp I had blown that day
+in lab. Only through luck was I not under control.
+
+The voice spoke again, and I drew in my breath to see that it emanated from
+a large black device in the corner of the room, covered with electrical wires
+and chips of all types. At the base of the machine were thirty or forty lab
+kits. The entire assembly was glowing red in pulses, and for minutes I crouched
+frozen, unable to move for fright. After a while the students backed away
+from the boxes and wires and blue electricity sparked and ran along the
+larger ones. The sound of lightning outside was barely audible as silence
+came over the room in expectation. Inside the dodecahedron the air shimmered
+as it does on a hot day and suddenly a blue flash of electricity exploded
+from its center, breaking me out of my shock, and I raced across the room
+as a black area grew inside the frame. The black device shouted, but before
+the students could reach me I was at it's side pulling wires apart. The red
+glow intensified and I felt myself thrown back against a wall as the assembled
+students advanced. In an act of desperation I threw a rusty pipe leaning
+against the wall at the open chamber of a generator as out of the corner of
+my eye I caught a glimpse of a figure behind the dark area of the framework
+and screamed. The room exploded in a shower of sparks and somehow I was on my
+feet, running from the room, leaping up the stairs, and out into the night
+and the freezing rain. What my actions did I do not know, for no trace of the
+event was ever found, and the students have no memory of what occurred. I can
+but pray that whatever it is that I saw that night will never return, and
+never let my lab kit out of sight.
diff --git a/support/lametex/doc/lametex_doc.ps b/support/lametex/doc/lametex_doc.ps
new file mode 100644
index 0000000000..2b08f68839
--- /dev/null
+++ b/support/lametex/doc/lametex_doc.ps
@@ -0,0 +1,14372 @@
+%!PS-Adobe-2.0
+%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
+%%Title: lametex.dvi
+%%Pages: 1 1
+%%BoundingBox: 0 0 612 792
+%%EndComments
+%%BeginProcSet: tex.pro
+/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
+load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
+isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
+Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
+round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
+N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
+/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
+statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
+/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
+/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
+/BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2
+array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
+B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
+setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup
+length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{
+ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B
+/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
+N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N
+
+/FMat [ 0.24 0 0 0.24 0 0 ] def
+/CharBuilder % fontdict ascii
+{
+ 1 index % fontdict ascii fontdict
+ /base get % fontdict ascii base
+ exch get % fontdict asciiequiv
+ exch /BitMaps get % asciiequiv BitMaps
+ exch get % bitmapstring
+ % ch-data becomes the bitmapstring for the ascii character
+ /ch-data exch def %
+ /ctr 0 def
+ % The next line is the "ch-dx" algorithm
+ ch-data dup length 1 sub get % ch-data last-char
+ 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
+ setcachedevice
+ ch-width ch-height true
+ [ 1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add ]
+ { ch-image } imagemask
+} bind def
+
+ /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr
+put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf
+div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook
+known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore
+showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
+known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
+array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N
+/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
+/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0
+7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
+TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
+-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{
+moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{
+S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B
+/j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w
+}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
+a}B /bos{/SS save N}B /eos{clear SS restore}B end
+%%EndProcSet
+TeXDict begin 1000 300 300 @start /Fa 69 122 df<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0
+F0600000000060F0F0600419779816>33 D<183C3E1E0E0E0E1E1C3C78F060070D799816>39
+D<00E001E007C007000F001E003C0038007800700070007000F000E000E000E000E000E000E000
+E000F000700070007000780038003C001E000F00070007C001E000E00B217A9C16>I<E000F000
+7C001C001E000F000780038003C001C001C001C001E000E000E000E000E000E000E000E001E001
+C001C001C003C0038007800F001E001C007C00F000E0000B217C9C16>I<01C00001C00001C000
+01C00071C700F9CF807FFF001FFC0007F00007F0001FFC007FFF00F9CF8071C70001C00001C000
+01C00001C00011127E9516>I<01C00001C00001C00001C00001C00001C00001C00001C000FFFF
+80FFFF80FFFF8001C00001C00001C00001C00001C00001C00001C00001C00011137E9516>I<38
+7C7E7E3E0E1E3C7CF860070B798416>I<FFFF80FFFF80FFFF8011037E8D16>I<70F8F8F8700505
+788416>I<000180000380000380000700000700000E00000E00001C00001C0000380000380000
+700000700000E00000E00001C00001C0000380000380000700000700000E00000E00001C00001C
+0000380000380000700000700000E00000E00000C0000011207E9C16>I<03E0000FF8001FFC00
+1E3C00380E00780F00700700700700E00380E00380E00380E00380E00380E00380E00380E00380
+F00780700700700700780F003C1E001E3C001FFC000FF80003E00011197E9816>I<0180038003
+8007800F807F80FF80738003800380038003800380038003800380038003800380038003800380
+7FF87FFC7FF80E197C9816>I<07E0001FF8007FFE00783F00F00F00F00780F00380F003800003
+80000380000780000700000F00001E00003C0000780000F00003E0000780000F00001E03803C03
+807FFF80FFFF807FFF8011197E9816>I<07E0001FFC007FFE00781F00780F0078070000070000
+0F00000F00003E0007FC0007F80007FC00001E00000700000780000380000380F00380F00780F0
+0700F81F007FFE003FFC0007E00011197E9816>I<007C0000FC0000DC0001DC00039C00039C00
+071C000F1C000E1C001E1C003C1C00381C00781C00F01C00FFFFE0FFFFE0FFFFE0001C00001C00
+001C00001C00001C0001FFC001FFC001FFC013197F9816>I<3FFE003FFE003FFE003800003800
+003800003800003800003800003800003BF0003FFC003FFE003C0F003007000007800003806003
+80F00380F00780F00F00F81F007FFE001FF80007E00011197E9816>I<00F80003FE000FFF001F
+0F003E0F003C0F00780600700000F00000F3F800EFFE00FFFE00F80F00F00780F00780E00380F0
+0380F00380700380780780780F003C1F001FFE000FF80003E00011197E9816>I<E00000FFFF80
+FFFF80FFFF80E00F00E01E00001C0000380000780000700000E00000E00001C00001C00001C000
+038000038000038000038000070000070000070000070000070000070000070000111A7E9916>
+I<07F0001FFC003FFE007C1F00F00780E00380E00380E003807007007C1F001FFC0007F0001FFC
+003C1E00700700F00780E00380E00380E00380F007807007007C1F003FFE001FFC0007F0001119
+7E9816>I<03E0000FF8003FFC007C1E00780F00F00700E00700E00780E00780E00380F00780F0
+0780780F803FFF803FFB800FE380000780000700300F00780E00781E00787C007FF8003FE0000F
+800011197E9816>I<70F8F8F870000000000000000070F8F8F8700512789116>I<0FE03FF87FFC
+F01EF00EF00E601E007C00F801F003E003C0038003800380038003000000000000000000030007
+80078003000F197D9816>63 D<00F80003FE000FFF001F0F803E3F803C7F8078FFC071E7C0F1C3
+C0E3C3C0E381C0E381C0E381C0E381C0E381C0E3C3C0F1C38071E78078FF003C7E003E3C001F03
+C00FFFC003FF0000FC0012197E9816>I<00E00001F00001F00001B00001B00003B80003B80003
+B800031800071C00071C00071C00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C
+07001C07007F1FC0FF1FE07F1FC013197F9816>I<7FF800FFFE007FFF001C0F001C07801C0380
+1C03801C03801C07801C07001FFF001FFE001FFE001C1F001C03801C03C01C01C01C01C01C01C0
+1C01C01C03C01C07807FFF80FFFF007FFC0012197F9816>I<01F18007FF800FFF801F0F803C07
+80780780780380700380F00000E00000E00000E00000E00000E00000E00000E00000F000007003
+807803807803803C07801F0F000FFE0007FC0001F00011197E9816>I<7FF800FFFE007FFF001C
+0F001C07801C03C01C01C01C01C01C01E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C
+00E01C01C01C01C01C03C01C07801C0F807FFF00FFFE007FF8001319809816>I<7FFFC0FFFFC0
+7FFFC01C01C01C01C01C01C01C01C01C00001C00001C1C001C1C001FFC001FFC001FFC001C1C00
+1C1C001C00001C00E01C00E01C00E01C00E01C00E07FFFE0FFFFE07FFFE013197F9816>I<FFFF
+E0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C00001C1C001C1C001FFC001FFC001FFC
+001C1C001C1C001C00001C00001C00001C00001C00001C0000FF8000FFC000FF800013197F9816
+>I<7F1FC0FFBFE07F1FC01C07001C07001C07001C07001C07001C07001C07001FFF001FFF001F
+FF001C07001C07001C07001C07001C07001C07001C07001C07001C07007F1FC0FFBFE07F1FC013
+197F9816>72 D<FFFEFFFEFFFE0380038003800380038003800380038003800380038003800380
+038003800380038003800380FFFEFFFEFFFE0F197D9816>I<FFC000FFC000FFC0001C00001C00
+001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00
+401C00E01C00E01C00E01C00E0FFFFE0FFFFE0FFFFE013197F9816>76 D<FC07E0FE0FE0FE0FE0
+3A0B803B1B803B1B803B1B803B1B803B1B803BBB8039B38039B38039B38039B38039F38038E380
+38E380380380380380380380380380380380FE0FE0FE0FE0FE0FE013197F9816>I<7E1FC0FF3F
+E07F1FC01D07001D87001D87001D87001DC7001DC7001CC7001CC7001CE7001CE7001CE7001C67
+001C67001C77001C77001C37001C37001C37001C17007F1F00FF9F007F0F0013197F9816>I<1F
+FC003FFE007FFF00780F00F00780E00380E00380E00380E00380E00380E00380E00380E00380E0
+0380E00380E00380E00380E00380E00380F00780F00780780F007FFF003FFE001FFC0011197E98
+16>I<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F80
+1FFF001FFE001FF8001C00001C00001C00001C00001C00001C00001C00007F0000FF80007F0000
+12197F9816>I<7FE000FFF8007FFC001C1E001C0F001C07001C07001C07001C07001C0F001C1E
+001FFC001FF8001FFC001C1C001C0E001C0E001C0E001C0E001C0E201C0E701C0E707F07E0FF87
+E07F03C014197F9816>82 D<07E3001FFF007FFF00781F00F00F00E00700E00700E00000F00000
+7800007F80001FF00007FC0000FE00000F00000780000380000380E00380E00380F00780F80F00
+FFFE00FFFC00C7F00011197E9816>I<7FFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0E0E000E0
+0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
+0000E00007FC000FFE0007FC0013197F9816>I<FE0FE0FF1FE0FE0FE03803801C07001C07001C
+07001C07000E0E000E0E000E0E000E0E00060C00071C00071C00071C00071C0003180003B80003
+B80003B80001B00001F00001F00000E00013197F9816>86 D<FC07E0FE0FE0FC07E07001C07001
+C07001C030018038038038038038038038E38039F38039F38039B38019B30019B30019B30019B3
+0019B30019B3001913001B1B000F1E000F1E000E0E0013197F9816>I<7F1F807F3F807F1F800E
+1E000E1C00073C0007380003B80003F00001F00001E00000E00001E00001F00003F00003B80007
+B800071C00071C000E0E000E0E001C07007F1FC0FF1FE07F1FC013197F9816>I<FFF0FFF0FFF0
+E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
+00E000E000E000E000E000E000FFF0FFF0FFF00C20789C16>91 D<FFF0FFF0FFF0007000700070
+007000700070007000700070007000700070007000700070007000700070007000700070007000
+70007000700070FFF0FFF0FFF00C207F9C16>93 D<0C1E3C7870F0E0E0E0F0F87830070D789B16
+>96 D<1FE0007FF8007FFC00783C00301E00000E00000E0003FE001FFE007E0E00F00E00E00E00
+E00E00F01E00F83E007FFFE03FE7E00F83E013127E9116>I<7E0000FE00007E00000E00000E00
+000E00000E00000E3E000EFF800FFFC00F83E00F01E00E00F00E00F00E00700E00700E00700E00
+700E00F00F00E00F01E00F83C00FFFC00EFF00063C001419809816>I<03F80FFE1FFE3C1E780C
+7000F000E000E000E000E000F000700778073E0F1FFE0FFC03F010127D9116>I<003F00007F00
+003F0000070000070000070000070003C7000FF7003FFF003C1F00780F00F00700F00700E00700
+E00700E00700E00700F00700F00F00781F007C3F003FFFE01FF7F007C7E014197F9816>I<03E0
+0FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E000700778073C0F1FFE0FFC03F010127D9116
+>I<001F00007F8000FF8001E78001C30001C00001C0007FFF00FFFF00FFFF0001C00001C00001
+C00001C00001C00001C00001C00001C00001C00001C00001C00001C0003FFE007FFF003FFE0011
+197F9816>I<03E3C00FFFE01FFFE01E3CC03C1E00380E00380E00380E003C1E001E3C001FFC00
+1FF8003BE0003800003800001FFC001FFF003FFFC07803C0F001E0E000E0E000E0E000E0F001E0
+7C07C03FFF800FFE0003F800131C7F9116>I<7E0000FE00007E00000E00000E00000E00000E00
+000E3C000EFF000FFF800F87800F03800F03800E03800E03800E03800E03800E03800E03800E03
+800E03800E03807FC7F0FFE7F87FC7F01519809816>I<018003C003C001800000000000000000
+7FC07FC07FC001C001C001C001C001C001C001C001C001C001C001C001C07FFFFFFF7FFF101A7D
+9916>I<003000780078003000000000000000001FF81FF81FF800380038003800380038003800
+380038003800380038003800380038003800380038003800386070F0F0FFE07FC03F800D237E99
+16>I<7E0000FE00007E00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E0F000E1E00
+0E3C000E78000EF0000FF0000FF8000FBC000F1E000E0E000E07000E07807F87F0FFCFF07F87F0
+1419809816>I<FFC000FFC000FFC00001C00001C00001C00001C00001C00001C00001C00001C0
+0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF
+80FFFF8011197E9816>I<F9C380FFEFC0FFFFE03E7CE03C78E03870E03870E03870E03870E038
+70E03870E03870E03870E03870E03870E0FE7CF8FE7CF8FE3C781512809116>I<7E3C00FEFF00
+7FFF800F87800F03800F03800E03800E03800E03800E03800E03800E03800E03800E03800E0380
+7FC7F0FFE7F87FC7F01512809116>I<03E0000FF8001FFC003C1E00780F00700700E00380E003
+80E00380E00380E00380F00780700700780F003C1E001FFC000FF80003E00011127E9116>I<7E
+3E00FEFF807FFFC00F83E00F01E00E00F00E00F00E00700E00700E00700E00700E00F00F00E00F
+01E00F83C00FFFC00EFF000E3C000E00000E00000E00000E00000E00000E00007FC000FFE0007F
+C000141B809116>I<FF0FC0FF3FE0FF7FE007F04007E00007C000078000078000070000070000
+070000070000070000070000070000FFFC00FFFC00FFFC0013127F9116>114
+D<0FEC3FFC7FFCF03CE01CE01CF0007F801FF007FC003EE00EE00EF00EF81EFFFCFFF8C7E00F12
+7D9116>I<0300000700000700000700000700007FFF00FFFF00FFFF0007000007000007000007
+000007000007000007000007010007038007038007078007878003FF0003FE0000F80011177F96
+16>I<7E1F80FE3F807E1F800E03800E03800E03800E03800E03800E03800E03800E03800E0380
+0E03800E07800F0F800FFFF007FFF803E3F01512809116>I<7F1FC0FF1FE07F1FC01C07001E0F
+000E0E000E0E000E0E00071C00071C00071C00071C0003B80003B80003B80001F00001F00000E0
+0013127F9116>I<FF1FE0FFBFE0FF1FE038038038038038038038038038E38019F30019F30019
+B3001DB7001DB7001DB7001DB7000F1E000F1E000F1E0013127F9116>I<7F1FC07F3FC07F1FC0
+0F1C00073C0003B80003F00001F00000E00001E00001F00003B800073C00071C000E0E007F1FC0
+FF3FE07F1FC013127F9116>I<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E00070E00071C
+00071C00039C00039C0003980001B80001B80000F00000F00000F00000E00000E00000E00001C0
+0079C0007BC0007F80003F00003C0000131B7F9116>I E /Fb 54 123 df<3803807C07C0FE0F
+E0FF0FF0FF0FF07F07F03B03B00300300300300700700600600600600C00C01C01C01801807007
+0020020014117EA21D>34 D<FFFCFFFCFFFCFFFC0E047F8C13>45 D<387CFEFEFE7C3807077C86
+10>I<00FE0007FFC00F83E01F01F03E00F83E00F87C007C7C007C7C007CFC007CFC007EFC007E
+FC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C
+7C007C3E00F83E00F81F01F00F83E007FFC000FE0017207E9F1C>48 D<00180000780001F800FF
+F800FFF80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
+F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
+F8007FFFE07FFFE013207C9F1C>I<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8
+FE01F87C01F83803F80003F80003F00003F00007E00007C0000F80001F00003E00003800007000
+00E01801C0180380180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF015207D9F1C>
+I<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03F00003F00003E00007
+C0001F8001FE0001FF000007C00001F00001F80000FC0000FC3C00FE7E00FEFF00FEFF00FEFF00
+FEFF00FC7E01FC7801F81E07F00FFFC001FE0017207E9F1C>I<0000E00001E00003E00003E000
+07E0000FE0001FE0001FE00037E00077E000E7E001C7E00187E00307E00707E00E07E00C07E018
+07E03807E07007E0E007E0FFFFFEFFFFFE0007E00007E00007E00007E00007E00007E00007E000
+FFFE00FFFE17207E9F1C>I<1000201E01E01FFFC01FFF801FFF001FFE001FF8001BC000180000
+18000018000018000019FC001FFF001E0FC01807E01803E00003F00003F00003F80003F83803F8
+7C03F8FE03F8FE03F8FC03F0FC03F07007E03007C01C1F800FFF0003F80015207D9F1C>I<001F
+8000FFE003F07007C0F00F01F81F01F83E01F83E01F87E00F07C00007C0000FC0800FC7FC0FCFF
+E0FD80F0FF00F8FE007CFE007CFC007EFC007EFC007EFC007E7C007E7C007E7C007E3C007C3E00
+7C1E00F80F00F00783E003FFC000FF0017207E9F1C>I<6000007800007FFFFE7FFFFE7FFFFC7F
+FFF87FFFF87FFFF0E00060E000C0C00180C00300C00300000600000C00001C0000180000380000
+780000780000F00000F00000F00001F00001F00001F00003F00003F00003F00003F00003F00003
+F00003F00001E00017227DA11C>I<00FE0003FFC00601E00C00701800701800383800383C0038
+3F00383F80783FE0701FF8E01FFFC00FFF8007FFC003FFE007FFF01E7FF83C1FFC7807FC7801FE
+F000FEF0003EF0001EF0001EF0001CF8001C7800383C00381F01F00FFFC001FF0017207E9F1C>
+I<01FE0007FF800F83E01E01F03E00F07C00F87C0078FC007CFC007CFC007CFC007EFC007EFC00
+7EFC007E7C00FE7C00FE3E01FE1E037E0FFE7E07FC7E00207E00007C00007C1E007C3F00F83F00
+F83F00F03F01E01E03C01C0F800FFE0003F80017207E9F1C>I<000070000000007000000000F8
+00000000F800000000F800000001FC00000001FC00000003FE00000003FE00000003FE00000006
+FF000000067F0000000E7F8000000C3F8000000C3F800000183FC00000181FC00000381FE00000
+300FE00000300FE00000600FF000006007F00000E007F80000FFFFF80000FFFFF800018001FC00
+018001FC00038001FE00030000FE00030000FE000600007F000600007F00FFE00FFFF8FFE00FFF
+F825227EA12A>65 D<FFFFFF8000FFFFFFE00007F001F80007F000FC0007F0007E0007F0007E00
+07F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FE0007F000FC
+0007F003F80007FFFFF00007FFFFF00007F001FC0007F0007E0007F0003F0007F0003F8007F000
+1F8007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0003F8007F0
+003F8007F0007F0007F001FE00FFFFFFF800FFFFFFC00022227EA128>I<0003FE0080001FFF81
+8000FF01E38001F8003F8003E0001F8007C0000F800F800007801F800007803F000003803F0000
+03807F000001807E000001807E00000180FE00000000FE00000000FE00000000FE00000000FE00
+000000FE00000000FE00000000FE000000007E000000007E000001807F000001803F000001803F
+000003801F800003000F8000030007C000060003F0000C0001F800380000FF00F000001FFFC000
+0003FE000021227DA128>I<FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F0003F0007F0
+001F8007F0000FC007F00007E007F00007E007F00007F007F00003F007F00003F007F00003F007
+F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F8
+07F00003F807F00003F007F00003F007F00003F007F00007E007F00007E007F0000FC007F0001F
+8007F0003F0007F0007E0007F003FC00FFFFFFF000FFFFFF800025227EA12B>I<FFFFFFFCFFFF
+FFFC07F000FC07F0003C07F0001C07F0000C07F0000E07F0000E07F0000607F0180607F0180607
+F0180607F0180007F0380007F0780007FFF80007FFF80007F0780007F0380007F0180007F01800
+07F0180307F0180307F0000307F0000607F0000607F0000607F0000E07F0000E07F0001E07F000
+3E07F001FCFFFFFFFCFFFFFFFC20227EA125>I<FFFFFFF8FFFFFFF807F001F807F0007807F000
+3807F0001807F0001C07F0001C07F0000C07F0000C07F0180C07F0180C07F0180007F0180007F0
+380007F0780007FFF80007FFF80007F0780007F0380007F0180007F0180007F0180007F0180007
+F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000FFFFE000FFFFE000
+1E227EA123>I<0003FE0040001FFFC0C0007F00F1C001F8003FC003F0000FC007C00007C00FC0
+0003C01F800003C03F000001C03F000001C07F000000C07E000000C07E000000C0FE00000000FE
+00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000FFFFC7E000FFFFC
+7F00001FC07F00001FC03F00001FC03F00001FC01F80001FC00FC0001FC007E0001FC003F0001F
+C001FC003FC0007F80E7C0001FFFC3C00003FF00C026227DA12C>I<FFFF803FFCFFFF803FFC07
+F000038007F000070007F0000E0007F000180007F000300007F000E00007F001C00007F0038000
+07F007000007F00E000007F018000007F038000007F0FC000007F1FE000007F3FE000007F77F00
+0007FE7F800007F83F800007F01FC00007F01FE00007F00FE00007F007F00007F007F80007F003
+F80007F001FC0007F001FE0007F000FF0007F0007F0007F0007F8007F0003FC0FFFF83FFFCFFFF
+83FFFC26227EA12C>75 D<FFFFE000FFFFE00007F0000007F0000007F0000007F0000007F00000
+07F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
+0007F0000007F0000007F0000007F0000007F0001807F0001807F0001807F0001807F0003807F0
+003807F0007007F0007007F000F007F001F007F007F0FFFFFFF0FFFFFFF01D227EA122>I<FFF8
+001FFEFFFC001FFE07FC0000C007FE0000C006FF0000C0067F8000C0063FC000C0061FE000C006
+0FE000C0060FF000C00607F800C00603FC00C00601FE00C00600FE00C00600FF00C006007F80C0
+06003FC0C006001FE0C006000FF0C0060007F0C0060007F8C0060003FCC0060001FEC0060000FF
+C00600007FC00600007FC00600003FC00600001FC00600000FC006000007C006000003C0060000
+03C0FFF00001C0FFF00000C027227EA12C>78 D<FFFFFF00FFFFFFE007F007F007F001FC07F000
+FC07F0007E07F0007E07F0007F07F0007F07F0007F07F0007F07F0007F07F0007E07F0007E07F0
+00FC07F001FC07F007F007FFFFE007FFFF0007F0000007F0000007F0000007F0000007F0000007
+F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000FFFF8000FFFF8000
+20227EA126>80 D<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000CF8000CFC000CFC
+0000FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF00007F00003F00
+003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF8018227DA11F>83
+D<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803806003F80180E003F801C0E003F8
+01C0C003F800C0C003F800C0C003F800C0C003F800C00003F800000003F800000003F800000003
+F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8000000
+03F800000003F800000003F800000003F800000003F800000003F800000003F800000003F80000
+0003F8000003FFFFF80003FFFFF80022227EA127>I<FFFF803FFCFFFF803FFC07F000018007F0
+00018007F000018007F000018007F000018007F000018007F000018007F000018007F000018007
+F000018007F000018007F000018007F000018007F000018007F000018007F000018007F0000180
+07F000018007F000018007F000018007F000018007F000018007F000018007F000018003F00003
+0003F800030001F800060000FC000E00007E001C00003F80F800000FFFE0000001FF000026227E
+A12B>I<FFFF800FFEFFFF800FFE07F00000C007F80000C003F800018003F800018001FC000300
+01FC00030001FE00070000FE00060000FF000600007F000C00007F800C00003F801800003F8018
+00003FC03800001FC03000001FE03000000FE06000000FF060000007F0C0000007F0C0000007F9
+C0000003F980000003FD80000001FF00000001FF00000000FE00000000FE00000000FE00000000
+7C000000007C00000000380000000038000027227FA12A>I<FFFF0FFFF01FFEFFFF0FFFF01FFE
+0FF000FF0000E007F0007F0000C007F0007F0000C003F8007F80018003F8003F80018003FC003F
+80038001FC003FC0030001FC003FC0030000FE007FE0060000FE006FE0060000FF006FE0060000
+7F00C7F00C00007F00C7F00C00007F80C7F81C00003F8183F81800003F8183F81800001FC383FC
+3000001FC301FC3000001FE301FC3000000FE600FE6000000FE600FE6000000FF600FFE0000007
+FC007FC0000007FC007FC0000003FC007F80000003F8003F80000003F8003F80000001F0001F00
+000001F0001F00000000F0001E00000000E0000E00000000E0000E000037227FA13A>I<7FFFC1
+FFF07FFFC1FFF003FC000C0001FE00180000FE00380000FF007000007F806000003F80C000003F
+C1C000001FE38000000FE30000000FF700000007FE00000003FC00000003FC00000001FE000000
+00FE00000000FF00000000FF80000001FFC0000001BFC00000031FE00000070FF000000E0FF000
+000C07F800001803FC00003803FC00003001FE00006000FF0000E000FF0001C0007F800180003F
+C0FFFC03FFFEFFFC03FFFE27227FA12A>I<0400400E00E0180180380380300300600600600600
+E00E00C00C00C00C00DC0DC0FE0FE0FF0FF0FF0FF07F07F03E03E01C01C014117AA21D>92
+D<07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1F03F01
+F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B>97
+D<FF000000FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00
+00001F0000001F0000001F0000001F0FE0001F3FF8001FF07C001F801E001F001F001F000F801F
+000F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000F80
+1F001F801F801F001FC03E001EE07C001C3FF800180FC0001A237EA21F>I<00FF8007FFE00F83
+F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00
+007E00003E00301F00600FC0E007FF8000FE0014167E9519>I<0001FE000001FE0000003E0000
+003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E00
+01FC3E0007FFBE000F81FE001F007E003E003E007E003E007C003E00FC003E00FC003E00FC003E
+00FC003E00FC003E00FC003E00FC003E00FC003E007C003E007C003E003E007E001E00FE000F83
+BE0007FF3FC001FC3FC01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC
+00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003
+FFC000FF0015167E951A>I<003F8000FFC001E3E003C7E007C7E00F87E00F83C00F80000F8000
+0F80000F80000F80000F8000FFFC00FFFC000F80000F80000F80000F80000F80000F80000F8000
+0F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80007FF8007FF800
+13237FA211>I<03FC1E0FFF7F1F0F8F3E07CF3C03C07C03E07C03E07C03E07C03E07C03E03C03
+C03E07C01F0F801FFF0013FC003000003000003800003FFF801FFFF00FFFF81FFFFC3800FC7000
+3EF0001EF0001EF0001EF0001E78003C7C007C3F01F80FFFE001FF0018217E951C>I<FF000000
+FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
+001F0000001F0000001F07E0001F1FF8001F307C001F403C001F803E001F803E001F003E001F00
+3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
+003E001F003E001F003E00FFE1FFC0FFE1FFC01A237EA21F>I<1C003F007F007F007F003F001C
+000000000000000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F00
+1F001F001F001F001F001F001F001F00FFE0FFE00B247EA310>I<FF00FF001F001F001F001F00
+1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F00FFE0FFE00B237EA210>108 D<FF07F007F000FF1FFC1FFC
+001F303E303E001F403E403E001F801F801F001F801F801F001F001F001F001F001F001F001F00
+1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE0FFE0FFE0
+FFE0FFE02B167E9530>I<FF07E000FF1FF8001F307C001F403C001F803E001F803E001F003E00
+1F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E
+001F003E001F003E001F003E00FFE1FFC0FFE1FFC01A167E951F>I<00FE0007FFC00F83E01E00
+F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C00
+7C3E00F81F01F00F83E007FFC000FE0017167E951C>I<FF0FE000FF3FF8001FF07C001F803E00
+1F001F001F001F801F001F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000F
+C01F000FC01F001F801F001F801F803F001FC03E001FE0FC001F3FF8001F0FC0001F0000001F00
+00001F0000001F0000001F0000001F0000001F0000001F000000FFE00000FFE000001A207E951F
+>I<FE1F00FE3FC01E67E01EC7E01E87E01E87E01F83C01F00001F00001F00001F00001F00001F
+00001F00001F00001F00001F00001F00001F00001F0000FFF000FFF00013167E9517>114
+D<0FF3003FFF00781F00600700E00300E00300F00300FC00007FE0007FF8003FFE000FFF0001FF
+00000F80C00780C00380E00380E00380F00700FC0E00EFFC00C7F00011167E9516>I<01800001
+80000180000180000380000380000780000780000F80003F8000FFFF00FFFF000F80000F80000F
+80000F80000F80000F80000F80000F80000F80000F80000F80000F81800F81800F81800F81800F
+81800F830007C30003FE0000F80011207F9F16>I<FF01FE00FF01FE001F003E001F003E001F00
+3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
+003E001F003E001F003E001F007E001F00FE000F81BE0007FF3FC001FC3FC01A167E951F>I<FF
+E01FE0FFE01FE00F8006000F8006000FC00E0007C00C0007E01C0003E0180003E0180001F03000
+01F0300000F8600000F86000007CC000007CC000007FC000003F8000003F8000001F0000001F00
+00000E0000000E00001B167F951E>I<FFE7FF07F8FFE7FF07F81F007800C00F807801800F807C
+01800F807C018007C07E030007C0DE030007E0DE070003E0DF060003E18F060001F18F0C0001F3
+8F8C0001FB079C0000FB07D80000FE03D800007E03F000007E03F000007C01F000003C01E00000
+3800E000001800C00025167F9528>I<FFE07FC0FFE07FC00F801C0007C0380003E0700003F060
+0001F8C00000F98000007F8000003F0000001F0000001F8000003FC0000037C0000063E00000C1
+F00001C0F8000380FC0007007E000E003E00FF80FFE0FF80FFE01B167F951E>I<FFE01FE0FFE0
+1FE00F8006000F8006000FC00E0007C00C0007E01C0003E0180003E0180001F0300001F0300000
+F8600000F86000007CC000007CC000007FC000003F8000003F8000001F0000001F0000000E0000
+000E0000000C0000000C00000018000078180000FC380000FC300000FC60000069C000007F8000
+001F0000001B207F951E>I<7FFFF07FFFF07C03E07007C0600FC0E01F80C01F00C03E00C07E00
+00FC0000F80001F00003F03007E03007C0300F80701F80703F00603E00E07C03E0FFFFE0FFFFE0
+14167E9519>I E /Fc 42 122 df<00C001E001E001E001C003C003C003800380038003000700
+070006000600060004000C000C00080008000000000000000000000030007800F00060000B1E7C
+9D0D>33 D<18303C783C783C78040804080810081010202040408081000D0C799C15>I<183C3C
+3C0404080810204080060C779C0D>39 D<183878380808101020404080050C7D830D>44
+D<3078F06005047C830D>46 D<003C0000C6000183000303000603000603800E03800C03801C03
+801C0300380700380700380700380700700E00700E00700E00700E00E01C00E01C00E01C00E038
+00E03800E03000C06000E0600060C0007180001E0000111D7B9B15>48 D<00020006000C001C00
+7C039C0038003800380038007000700070007000E000E000E000E001C001C001C001C003800380
+038003800780FFF00F1C7C9B15>I<003C0000C3000101800201800201C00441C00441C00841C0
+0841C00841C01083801083801107000E0600000C0000180000300000C000010000060000080000
+1001001002002002004006007E0C00C7F80083F80080E000121D7C9B15>I<003E0000C1800101
+800200C00400C00440C00841C00841C00841C0088380070380000700000E0001F800003800000C
+00000C00000E00000E00000E00000E00700E00E01C00801C0080380080300040600021C0001F00
+00121D7C9B15>I<0001800001C0000380000380000380000300000700000700000600000E0000
+0C00001C0000180000180000300000300000600000400000C600018E00010E00020E00061C000C
+1C00181C003F1C0040F800803F0000380000380000700000700000700000700000E00000600012
+247E9B15>I<00C06000FFC001FF8001FE00010000010000020000020000020000020000047800
+058C00060600040600080600000700000700000600000E00000E00700E00700C00E01C00801800
+80380040300040600021C0001F0000131D7C9B15>I<000F0000308000C0800183800383800300
+000600000E00000C00001C00001CF0003B18003C0C00380C00780C00700E00700E00700E00601C
+00E01C00E01C00E01C00E03800E03800E0700060600060C0002180001E0000111D7B9B15>I<09
+C04017E0801FE0803C6100302700601A00400600400400800C0080080000180000100000300000
+600000600000600000C00000C00001C0000180000380000380000300000700000700000700000E
+00000E00000C0000121D799B15>I<001E000061000081800180800300C00300C0060180060180
+06018007030007860003CC0003F00001F000037800063C00081E00180E00300E00600600600600
+600600C00C00C00C00C0180060100060200030C0000F0000121D7C9B15>I<003C0000C6000183
+000303000603000E03000C03801C03801C03001C0300380700380700380700380F00380E00181E
+00181E000C6C00079C00001C00001800003800003000006000E0C000E0C0008180008600007C00
+00111D7B9B15>I<0000180000001800000038000000380000007800000078000000B8000001B8
+00000138000002380000023C0000041C0000041C0000081C0000181C0000101C0000201C000020
+1C00007FFC0000401C0000801C0001801C0001001C0002001C0002001C0004000E000C000E001C
+001E00FF00FFC01A1D7E9C1F>65 D<01FFE0003C00003800003800003800003800007000007000
+00700000700000E00000E00000E00000E00001C00001C00001C00001C000038008038008038008
+0380100700100700300700600700E00E03C0FFFFC0151C7D9B1A>76 D<1FFFFFC01C0701C0300E
+00C0200E0080600E0080400E0080401C0080801C0080801C0080001C0000003800000038000000
+380000003800000070000000700000007000000070000000E0000000E0000000E0000000E00000
+01C0000001C0000001C0000001C0000003C000007FFE00001A1C799B1E>84
+D<01FF81FE001E00F0001C0060001E0080000E0180000E0100000F020000070400000708000007
+90000003A0000003C0000001C0000001C0000001E0000002E0000004E0000008F0000010700000
+207000006038000040380000803C0001001C0002001C0006001E001E001E00FF80FFC01F1C7E9B
+1F>88 D<060C0810102020402040408040808100B160F9F0F9F070E00E0C759C15>92
+D<03CC063C0C3C181C3838303870387038E070E070E070E070E0E2C0E2C0E261E462643C380F12
+7B9115>97 D<3F00070007000E000E000E000E001C001C001C001C0039C03E6038303830703870
+3870387038E070E070E070E060E0E0C0C0C1C0618063003C000D1D7B9C13>I<01F007080C0818
+1C3838300070007000E000E000E000E000E000E008E010602030C01F000E127B9113>I<001F80
+000380000380000700000700000700000700000E00000E00000E00000E0003DC00063C000C3C00
+181C00383800303800703800703800E07000E07000E07000E07000E0E200C0E200C0E20061E400
+6264003C3800111D7B9C15>I<01E007100C1018083810701070607F80E000E000E000E000E000
+E0086010602030C01F000D127B9113>I<0003C0000670000C70001C60001C00001C0000380000
+380000380000380000380003FF8000700000700000700000700000700000E00000E00000E00000
+E00000E00001C00001C00001C00001C00001C000038000038000038000030000030000070000C6
+0000E60000CC00007800001425819C0D>I<00F3018F030F06070E0E0C0E1C0E1C0E381C381C38
+1C381C383830383038187818F00F700070007000E000E0C0C0E1C0C3007E00101A7D9113>I<0F
+C00001C00001C0000380000380000380000380000700000700000700000700000E78000E8C000F
+0E000E0E001C0E001C0E001C0E001C0E00381C00381C00381C0038380070388070388070708070
+7100E03200601C00111D7D9C15>I<01800380010000000000000000000000000000001C002600
+470047008E008E000E001C001C001C0038003800710071007100720072003C00091C7C9B0D>I<
+1F800380038007000700070007000E000E000E000E001C001C001C001C00380038003800380070
+00700070007000E400E400E400E40068003800091D7C9C0B>108 D<3C1E0780266318C04683A0
+E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701C01C0701C01C0701C01C070380380E
+0388380E0388380E0708380E0710701C0320300C01C01D127C9122>I<3C3C0026460046870047
+07008E07008E07000E07000E07001C0E001C0E001C0E001C1C00381C40381C4038384038388070
+1900300E0012127C9117>I<01E007180C0C180C380C300E700E700EE01CE01CE01CE018E038E0
+30E06060C031801E000F127B9115>I<07870004D98008E0C008E0C011C0E011C0E001C0E001C0
+E00381C00381C00381C00381800703800703000707000706000E8C000E70000E00000E00001C00
+001C00001C00001C00003C0000FF8000131A7F9115>I<3C3C26C2468747078E068E000E000E00
+1C001C001C001C0038003800380038007000300010127C9112>114 D<01F006080C080C1C1818
+1C001F001FC00FF007F0007800386030E030C030806060C01F000E127D9111>I<00C001C001C0
+01C00380038003800380FFE00700070007000E000E000E000E001C001C001C001C003840384038
+40388019000E000B1A7D990E>I<1E0300270700470700470700870E00870E000E0E000E0E001C
+1C001C1C001C1C001C1C003838803838801838801839001C5900078E0011127C9116>I<1E0627
+0E470E4706870287020E020E021C041C041C041C0818083808181018200C4007800F127C9113>
+I<1E01832703874703874703838707018707010E07010E07011C0E021C0E021C0E021C0E04180C
+04181C04181C081C1C100C263007C3C018127C911C>I<070E0019910010E38020E38041C30041
+C00001C00001C000038000038000038000038000070200670200E70400CB04008B080070F00011
+127D9113>I<1E03270747074707870E870E0E0E0E0E1C1C1C1C1C1C1C1C38383838183818381C
+7007F00070007000E0E0C0E1C0818047003C00101A7C9114>I E /Fd 63
+122 df<1C007F00FF80FF80FF80FF80FF80FF80FF807F007F007F007F007F007F007F003E003E
+003E003E003E003E003E001C001C001C001C000000000000000000000000001C007F00FF80FF80
+FF80FF80FF807F001C00092A7AA915>33 D<1C0038007F00FE00FF81FF00FF81FF00FFC1FF80FF
+C1FF80FFC1FF807FC0FF801CC0398000C0018000C0018001C00380018003000180030003800700
+07000E0006000C000E001C001C003800380070003000600019157EA924>I<1C007F00FF80FF80
+FFC0FFC0FFC07FC01CC000C000C001C0018001800380070006000E001C00380030000A157B8813
+>44 D<1C007F00FF80FF80FF80FF80FF807F001C0009097B8813>46 D<003F800001FFF00007E0
+FC000FC07E001F803F001F803F003F001F803F001F807F001FC07F001FC07F001FC07F001FC0FF
+001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0
+FF001FE0FF001FE0FF001FE0FF001FE0FF001FE07F001FC07F001FC07F001FC07F001FC03F001F
+803F001F801F803F001F803F000FC07E0007E0FC0001FFF000003F80001B277DA622>48
+D<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7FFF
+FE17277BA622>I<00FF800003FFF0000FFFFC003F03FF007C00FF807C007FC0FE007FC0FF003F
+E0FF003FE0FF003FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F800000
+7F800000FF000001FE000001FC000003F0000007E000000FC000001F0000003E0000007C00E000
+7800E000F000E001E001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80
+FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FFFC001F81FE001F00FF003F80FF00
+3F807F803FC07F803F807F803F807F801F007F800000FF800000FF000000FF000001FE000003F8
+000007F00000FFC00000FFF0000001FC000000FF0000007F8000007FC000003FC000003FE00000
+3FE000003FE03C003FE07E003FE0FF003FE0FF003FE0FF003FC0FF007FC0FE007F807C00FF803F
+01FF001FFFFC0007FFF00000FF80001B277DA622>I<00000E0000001E0000003E0000007E0000
+00FE000000FE000001FE000003FE0000077E00000E7E00000E7E00001C7E0000387E0000707E00
+00E07E0000E07E0001C07E0003807E0007007E000E007E000E007E001C007E0038007E0070007E
+00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE000000
+FE000000FE000000FE00007FFFF8007FFFF8007FFFF81D277EA622>I<0C0003000F803F000FFF
+FE000FFFFE000FFFFC000FFFF8000FFFE0000FFFC0000FFE00000E0000000E0000000E0000000E
+0000000E0000000E0000000E7FC0000FFFF8000F80FE000E007F000C003F8000003F8000001FC0
+00001FC000001FE000001FE018001FE07E001FE0FE001FE0FE001FE0FE001FE0FE001FE0FE001F
+C078003FC078003F803C007F001F01FE000FFFFC0003FFF00000FF80001B277DA622>I<0007F0
+00003FFC0000FFFF0001FC0F0007F01F800FE03F800FC03F801FC03F803F803F803F801F007F80
+00007F0000007F0000007F000000FF000000FF0FC000FF3FF800FF70FE00FFE03F00FFC03F80FF
+801FC0FF801FC0FF801FC0FF001FE0FF001FE0FF001FE0FF001FE07F001FE07F001FE07F001FE0
+7F001FE03F801FC03F801FC01F803F800FC03F8007E0FF0003FFFC0000FFF000003FC0001B277D
+A622>I<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFFE07FFFFFC07FFFFFC07FFFFF
+8070000F0070001E0070003C00E0003800E0007800E000F0000001E0000003C0000003C0000007
+800000078000000F0000001F0000001F0000001F0000003F0000003F0000003E0000007E000000
+7E0000007E0000007E000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000
+00FE000000FE0000003800001C297CA822>I<003FC00001FFF00003FFFC000FC07E000F003F00
+1F001F001E001F803E000F803E000F803F000F803F800F803FC01F803FF01F003FFC3F001FFE7E
+001FFFF8000FFFE00007FFF80001FFFC0001FFFF0007FFFF801F8FFF803F03FFC07E01FFC07C00
+7FE0FC001FE0F8000FE0F80007E0F80003E0F80003E0F80003E0FC0003C07C0007C07E0007803F
+000F801FC03F000FFFFC0003FFF800007FC0001B277DA622>I<007F800001FFF00007FFF8000F
+E0FE001FC07E003F803F007F003F807F003F80FF001FC0FF001FC0FF001FC0FF001FC0FF001FE0
+FF001FE0FF001FE0FF001FE07F003FE07F003FE07F003FE03F807FE01F80FFE00FE1DFE003FF9F
+E0007E1FE000001FE000001FC000001FC000001FC000003FC01F003F803F803F803F807F003F80
+7F003F80FE003F01FC001E03F8000FFFE00007FF800001FE00001B277DA622>I<1C007F00FF80
+FF80FF80FF80FF807F001C000000000000000000000000000000000000001C007F00FF80FF80FF
+80FF80FF807F001C00091B7B9A13>I<01FF000FFFE03E03F87803FC7801FCFE01FEFE01FEFE01
+FEFE01FE7C01FE3803FC0003FC0007F0000FE0000F80001F00001E00003C00003C000078000078
+000070000070000070000070000070000070000000000000000000000000000000000000000070
+0001FC0003FE0003FE0003FE0003FE0003FE0001FC00007000172A7CA920>63
+D<000003800000000007C00000000007C0000000000FE0000000000FE0000000000FE000000000
+1FF0000000001FF0000000003FF8000000003FF8000000003FF80000000073FC0000000073FC00
+000000F3FE00000000E1FE00000000E1FE00000001C0FF00000001C0FF00000003C0FF80000003
+807F80000007807FC0000007003FC0000007003FC000000E003FE000000E001FE000001E001FF0
+00001C000FF000001FFFFFF000003FFFFFF800003FFFFFF80000780007FC0000700003FC000070
+0003FC0000E00001FE0000E00001FE0001E00001FF0001C00000FF0001C00000FF00FFFE001FFF
+FEFFFE001FFFFEFFFE001FFFFE2F297EA834>65 D<FFFFFFF80000FFFFFFFF8000FFFFFFFFC000
+03F8001FF00003F8000FF80003F80007FC0003F80003FC0003F80003FC0003F80003FE0003F800
+01FE0003F80001FE0003F80001FE0003F80003FE0003F80003FC0003F80003FC0003F80007F800
+03F8000FF00003F8001FE00003F800FFC00003FFFFFE000003FFFFFFE00003F80007F00003F800
+03FC0003F80001FE0003F80001FE0003F80000FF0003F80000FF0003F80000FF8003F80000FF80
+03F80000FF8003F80000FF8003F80000FF8003F80000FF8003F80000FF0003F80001FF0003F800
+03FE0003F80007FC0003F8001FF800FFFFFFFFF000FFFFFFFFC000FFFFFFFE000029297DA831>
+I<00003FF001800003FFFE0780000FFFFF8F80003FF007FF8000FF8001FF8001FE00007F8007FC
+00003F8007F800001F800FF000000F801FE000000F803FE0000007803FC0000007807FC0000003
+807FC0000003807FC000000380FF8000000000FF8000000000FF8000000000FF8000000000FF80
+00000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000
+007FC0000000007FC0000003807FC0000003803FC0000003803FE0000003801FE0000007800FF0
+0000070007F800000F0007FC00001E0001FE00003C0000FF8000F800003FF007F000000FFFFFC0
+000003FFFF000000003FF8000029297CA832>I<FFFFFFF80000FFFFFFFF8000FFFFFFFFE00003
+FC001FF80003FC0007FC0003FC0001FE0003FC0000FF0003FC00007F8003FC00003FC003FC0000
+1FC003FC00001FE003FC00001FE003FC00000FF003FC00000FF003FC00000FF003FC00000FF003
+FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC0000
+0FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF003FC00000FF003FC00000FF003
+FC00001FE003FC00001FE003FC00001FC003FC00003FC003FC00007F8003FC00007F0003FC0001
+FE0003FC0003FC0003FC001FF800FFFFFFFFE000FFFFFFFF8000FFFFFFFC00002D297DA835>I<
+FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FC001FE003FC0007F003FC0001F003FC0001F003FC0000
+F003FC00007003FC00007003FC00007003FC01C07803FC01C03803FC01C03803FC01C03803FC03
+C00003FC03C00003FC0FC00003FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03C00003FC
+03C00003FC01C00E03FC01C00E03FC01C00E03FC01C01C03FC00001C03FC00001C03FC00001C03
+FC00003C03FC00003803FC00007803FC0000F803FC0001F803FC0003F803FC001FF8FFFFFFFFF0
+FFFFFFFFF0FFFFFFFFF027297DA82D>I<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC003FC003FC
+000FE003FC0003E003FC0001E003FC0001E003FC0000E003FC0000E003FC0000E003FC0000F003
+FC03807003FC03807003FC03807003FC03800003FC07800003FC07800003FC1F800003FFFF8000
+03FFFF800003FFFF800003FC1F800003FC07800003FC07800003FC03800003FC03800003FC0380
+0003FC03800003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00
+000003FC00000003FC000000FFFFFC0000FFFFFC0000FFFFFC000024297DA82B>I<00007FE003
+000003FFFC0F00001FFFFF1F00007FF00FFF0000FF8001FF0003FE0000FF0007FC00007F000FF8
+00003F000FF000001F001FE000001F003FE000000F003FC000000F007FC0000007007FC0000007
+007FC000000700FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80
+00000000FF8000000000FF8000000000FF8000000000FF8001FFFFF8FF8001FFFFF87FC001FFFF
+F87FC00000FF007FC00000FF003FC00000FF003FE00000FF001FE00000FF000FF00000FF000FF8
+0000FF0007FC0000FF0003FE0001FF0000FF8001FF00007FF007FF00001FFFFFBF000003FFFE0F
+0000007FF003002D297CA836>I<FFFFF01FFFFEFFFFF01FFFFEFFFFF01FFFFE03FC00007F8003
+FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC0000
+7F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003
+FC00007F8003FFFFFFFF8003FFFFFFFF8003FFFFFFFF8003FC00007F8003FC00007F8003FC0000
+7F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003
+FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC0000
+7F8003FC00007F80FFFFF01FFFFEFFFFF01FFFFEFFFFF01FFFFE2F297DA836>I<FFFFFCFFFFFC
+FFFFFC01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00
+01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00
+01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00FFFFFCFFFFFCFFFFFC
+16297EA81A>I<01FFFFF001FFFFF001FFFFF00001FE000001FE000001FE000001FE000001FE00
+0001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE
+000001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE000001
+FE000001FE000001FE001801FE007E01FE00FF01FE00FF01FE00FF01FE00FF03FC00FE03FC007C
+07F8003E0FF0000FFFC00003FE00001C297DA824>I<FFFFFC0000FFFFFC0000FFFFFC000003FC
+00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003
+FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
+03FC00000003FC00000003FC00000003FC00000003FC00000003FC0001C003FC0001C003FC0001
+C003FC0001C003FC0003C003FC00038003FC00038003FC00078003FC00078003FC000F8003FC00
+0F8003FC001F8003FC007F8003FC01FF00FFFFFFFF00FFFFFFFF00FFFFFFFF0022297DA829>76
+D<FFFE0000001FFFC0FFFE0000001FFFC0FFFF0000003FFFC003FF0000003FF00003FF0000003F
+F00003BF80000077F00003BF80000077F000039FC00000E7F000039FC00000E7F000038FE00001
+C7F000038FE00001C7F0000387F0000387F0000387F0000387F0000387F0000387F0000383F800
+0707F0000383F8000707F0000381FC000E07F0000381FC000E07F0000380FE001C07F0000380FE
+001C07F0000380FF003807F00003807F003807F00003807F003807F00003803F807007F0000380
+3F807007F00003801FC0E007F00003801FC0E007F00003800FE1C007F00003800FE1C007F00003
+800FE1C007F000038007F38007F000038007F38007F000038003FF0007F000038003FF0007F000
+038001FE0007F000038001FE0007F000038000FC0007F000038000FC0007F000FFFE00FC01FFFF
+C0FFFE007801FFFFC0FFFE007801FFFFC03A297DA841>I<FFFC0000FFFEFFFE0000FFFEFFFF00
+00FFFE03FF8000038003FFC000038003FFE000038003BFE0000380039FF0000380038FF8000380
+0387FC0003800387FE0003800383FE0003800381FF0003800380FF80038003807FC0038003807F
+E0038003803FF0038003801FF0038003800FF80380038007FC0380038003FE0380038003FF0380
+038001FF8380038000FF83800380007FC3800380003FE3800380001FF3800380001FFB80038000
+0FFB8003800007FF8003800003FF8003800001FF8003800001FF8003800000FF80038000007F80
+038000003F80038000001F80038000000F80FFFE00000F80FFFE00000780FFFE000003802F297D
+A836>I<0000FFE000000007FFFC0000003FC07F8000007F001FC00001FC0007F00003F80003F8
+0007F00001FC000FF00001FE001FE00000FF001FE00000FF003FC000007F803FC000007F807FC0
+00007FC07F8000003FC07F8000003FC07F8000003FC0FF8000003FE0FF8000003FE0FF8000003F
+E0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF80
+00003FE07F8000003FC07FC000007FC07FC000007FC03FC000007F803FC000007F801FE00000FF
+001FE00000FF000FF00001FE0007F00001FC0003F80003F80001FC0007F00000FF001FE000003F
+C07F8000000FFFFE00000000FFE000002B297CA834>I<FFFFFFF800FFFFFFFF00FFFFFFFFC003
+FC003FE003FC000FF003FC0007F803FC0007FC03FC0003FC03FC0003FE03FC0003FE03FC0003FE
+03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FC03FC0007FC03FC0007F803FC000F
+F003FC003FE003FFFFFF8003FFFFFE0003FC00000003FC00000003FC00000003FC00000003FC00
+000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
+00000003FC00000003FC00000003FC000000FFFFF00000FFFFF00000FFFFF0000027297DA82F>
+I<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FC007FE00003FC000FF00003FC0007F80003FC
+0007FC0003FC0003FC0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE
+0003FC0003FE0003FC0003FC0003FC0007F80003FC0007F80003FC001FE00003FC007FC00003FF
+FFFE000003FFFFF0000003FC01FC000003FC007F000003FC007F800003FC003FC00003FC003FC0
+0003FC001FE00003FC001FE00003FC001FE00003FC001FE00003FC001FF00003FC001FF00003FC
+001FF00003FC001FF00003FC001FF00703FC001FF80703FC000FF80703FC000FFC0FFFFFF007FE
+1EFFFFF001FFFCFFFFF0003FF030297DA834>82 D<007F806003FFF0E00FFFFFE01F807FE03F00
+1FE07E0007E07E0003E07C0003E0FC0001E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FF
+C000007FFE00007FFFE0003FFFFC003FFFFF001FFFFF8007FFFFC003FFFFE000FFFFF00007FFF0
+00007FF000000FF8000007F8000003F8E00003F8E00001F8E00001F8E00001F8F00001F8F00001
+F0F80003F0FC0003E0FF0007E0FFE01FC0FFFFFF00E0FFFE00C01FF0001D297CA826>I<7FFFFF
+FFFFC07FFFFFFFFFC07FFFFFFFFFC07F803FC03FC07E003FC007C078003FC003C078003FC003C0
+70003FC001C0F0003FC001E0F0003FC001E0E0003FC000E0E0003FC000E0E0003FC000E0E0003F
+C000E0E0003FC000E000003FC0000000003FC0000000003FC0000000003FC0000000003FC00000
+00003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003F
+C0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC00000
+00003FC0000000003FC0000000003FC0000000003FC00000007FFFFFE000007FFFFFE000007FFF
+FFE0002B287EA730>I<FFFFF001FFFCFFFFF001FFFCFFFFF001FFFC03FC0000070003FC000007
+0003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC
+0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC000007
+0003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC
+0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC00000F
+0001FC00000E0001FE00000E0000FE00001E0000FF00003C00007F80007800003FC000F800001F
+F007E0000007FFFFC0000001FFFF000000001FF800002E297DA835>I<FFFFE07FFFF007FFF0FF
+FFE07FFFF007FFF0FFFFE07FFFF007FFF003FC0001FE00001C0003FC0001FE00001C0001FE0001
+FF0000380001FE0000FF0000380001FF0000FF0000780000FF0000FF8000700000FF0000FF8000
+700000FF8000FF8000F000007F8001FFC000E000007F8001FFC000E000003FC003FFE001C00000
+3FC0039FE001C000003FE0039FE003C000001FE0070FF0038000001FE0070FF0038000001FF00F
+0FF0078000000FF00E07F8070000000FF00E07F80700000007F81E07FC0E00000007F81C03FC0E
+00000007FC1C03FC1E00000003FC3801FE1C00000003FC3801FE1C00000001FE7801FF38000000
+01FE7000FF3800000001FE7000FF3800000000FFF000FFF000000000FFE0007FF000000000FFE0
+007FF0000000007FC0003FE0000000007FC0003FE0000000003FC0003FC0000000003F80001FC0
+000000003F80001FC0000000001F80001F80000000001F00000F80000000001F00000F80000000
+000E00000700000044297FA847>87 D<7FFFF81FFFF07FFFF81FFFF07FFFF81FFFF001FF000078
+0000FF8000F000007FC001E000007FC001C000003FE003C000001FF0078000000FF80F0000000F
+F80E00000007FC1E00000003FE3C00000003FE7800000001FF7000000000FFF0000000007FE000
+0000007FC0000000003FE0000000001FF0000000001FF0000000001FF8000000001FFC00000000
+3FFE000000007BFE00000000F1FF00000000E0FF80000001E0FFC0000003C07FC0000007803FE0
+000007001FF000000F001FF000001E000FF800003C0007FC0000380003FE0000780003FE0000F0
+0001FF0000E00000FF80FFFF801FFFFEFFFF801FFFFEFFFF801FFFFE2F297EA834>I<FFFFF000
+3FFF80FFFFF0003FFF80FFFFF0003FFF8003FF000001E00001FF000003C00000FF800003800000
+7FC000078000007FE0000F0000003FE0000E0000001FF0001E0000001FF8003C0000000FF80038
+00000007FC007800000007FE00F000000003FE00E000000001FF01E000000001FF83C000000000
+FF8380000000007FC780000000007FEF00000000003FEE00000000001FFE00000000000FFC0000
+0000000FF8000000000007F8000000000007F8000000000007F8000000000007F8000000000007
+F8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F8000000
+000007F8000000000007F8000000000007F8000000000007F80000000001FFFFE000000001FFFF
+E000000001FFFFE0000031297FA834>I<0300060007000E000E001C001C003800180030003800
+70007000E0006000C0006000C000E001C000C0018000C0018000CE019C00FF81FF00FFC1FF80FF
+C1FF80FFC1FF807FC0FF807FC0FF803F807F000E001C00191578A924>92
+D<01FF800007FFF0000F81FC001FC0FE001FC07F001FC07F001FC03F800F803F8000003F800000
+3F8000003F80000FFF8000FFFF8007FC3F801FE03F803F803F807F803F807F003F80FE003F80FE
+003F80FE003F80FE007F80FF007F807F00FFC03F83DFFC0FFF0FFC01FC03FC1E1B7E9A21>97
+D<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE00000000FE00000000FE000
+00000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE1
+FE00000FE7FF80000FFE07E0000FF803F8000FF001FC000FE000FE000FE000FE000FE0007F000F
+E0007F000FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F80
+0FE0007F800FE0007F800FE0007F000FE000FF000FE000FE000FF000FE000FF001FC000FF803F8
+000F9E07E0000F0FFF80000E01FC0000212A7EA926>I<001FF80000FFFE0003F01F000FE03F80
+1FC03F803F803F803F803F807F801F007F000000FF000000FF000000FF000000FF000000FF0000
+00FF000000FF000000FF000000FF0000007F0000007F8000003F8001C03FC001C01FC003C00FE0
+078003F01F0000FFFC00001FE0001A1B7E9A1F>I<00003FF80000003FF80000003FF800000003
+F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8000000
+03F800000003F800000003F800000003F800001FE3F80000FFFBF80003F03FF8000FE00FF8001F
+C007F8003F8003F8003F8003F8007F8003F8007F0003F800FF0003F800FF0003F800FF0003F800
+FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8
+003F8003F8003F8007F8001FC00FF8000FE01FF80003F03FFF8000FFF3FF80003FC3FF80212A7E
+A926>I<003FE00001FFF80003F07E000FE03F001FC01F803F800FC03F800FC07F000FC07F0007
+E0FF0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF000000FF0000007F00
+00007F8000003F8000E03F8001E01FC001C00FE003C003F81F8000FFFE00001FF0001B1B7E9A20
+>I<0007F0003FFC00FE3E01FC7F03F87F03F87F07F07F07F03E07F00007F00007F00007F00007
+F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007
+F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007
+F0007FFF807FFF807FFF80182A7EA915>I<00FF81F003FFE7FC0FC1FE7C1F80FC7C3F80FE7C3F
+007E107F007F007F007F007F007F007F007F007F007F007F007F003F007E003F80FE001F80FC00
+0FC1F8001FFFE00018FF8000380000003C0000003C0000003E0000003FFFF8003FFFFF001FFFFF
+C00FFFFFE007FFFFF01FFFFFF07E0007F87C0001F8F80001F8F80000F8F80000F8F80000F8FC00
+01F87E0003F03F0007E00FC01F8003FFFE00007FF0001E287E9A22>I<FFE0000000FFE0000000
+FFE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000
+000FE00000000FE00000000FE00000000FE00000000FE00000000FE07F00000FE1FFC0000FE787
+E0000FEE07F0000FFC03F8000FF803F8000FF003F8000FF003F8000FF003F8000FE003F8000FE0
+03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
+E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80
+FFFE3FFF80212A7DA926>I<07001FC01FE03FE03FE03FE01FE01FC00700000000000000000000
+0000000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
+0FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>I<000700001FC0003FE0003FE0
+003FE0003FE0003FE0001FC000070000000000000000000000000000000000000000000001FFE0
+01FFE001FFE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0
+000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0
+000FE0000FE0000FE0000FE07C0FE0FE0FE0FE1FC0FE1FC0FE1F807C3F003FFC000FF000133784
+AA15>I<FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000000FE000000FE000
+000FE000000FE000000FE000000FE000000FE000000FE000000FE01FFC0FE01FFC0FE01FFC0FE0
+07C00FE00F800FE01E000FE07C000FE0F8000FE1F0000FE3E0000FE7C0000FEFE0000FFFF0000F
+FFF0000FFFF8000FF3FC000FE1FE000FC0FE000FC0FF000FC07F800FC03F800FC03FC00FC01FE0
+0FC00FF0FFFC3FFEFFFC3FFEFFFC3FFE1F2A7EA924>I<FFE0FFE0FFE00FE00FE00FE00FE00FE0
+0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
+E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2A7DA914>I<FFC07F
+800FF000FFC1FFE03FFC00FFC783F0F07E000FCE03F9C07F000FDC01FB803F000FF801FF003F80
+0FF001FE003F800FF001FE003F800FF001FE003F800FE001FC003F800FE001FC003F800FE001FC
+003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800F
+E001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC00
+3F800FE001FC003F80FFFE1FFFC3FFF8FFFE1FFFC3FFF8FFFE1FFFC3FFF8351B7D9A3C>I<FFC0
+7F0000FFC1FFC000FFC787E0000FCE07F0000FDC03F8000FF803F8000FF003F8000FF003F8000F
+F003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800
+0FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
+00FFFE3FFF80FFFE3FFF80FFFE3FFF80211B7D9A26>I<003FE00001FFFC0003F07E000FC01F80
+1F800FC03F800FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007
+F8FF0007F8FF0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800FE01F800FC00FC0
+1F8007F07F0001FFFC00003FE0001D1B7E9A22>I<FFE1FE0000FFE7FF8000FFFE07E0000FF803
+F8000FF001FC000FE001FE000FE000FE000FE000FF000FE000FF000FE0007F800FE0007F800FE0
+007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE000FF000F
+E000FF000FE000FE000FF001FE000FF003FC000FF803F8000FFE0FE0000FEFFF80000FE1FC0000
+0FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000
+000FE0000000FFFE000000FFFE000000FFFE00000021277E9A26>I<FFC1F0FFC7FCFFCE3E0FDC
+7F0FD87F0FF87F0FF07F0FF03E0FF0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0
+000FE0000FE0000FE0000FE0000FE0000FE0000FE000FFFF00FFFF00FFFF00181B7E9A1C>114
+D<03FE300FFFF03E03F07800F07000F0F00070F00070F80070FC0000FFE000FFFE007FFFC03FFF
+E01FFFF007FFF800FFFC0003FC0000FCE0007CE0003CF0003CF0003CF80078FC0078FF01F0F7FF
+C0C1FF00161B7E9A1B>I<00700000700000700000700000F00000F00000F00001F00003F00003
+F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F00007F00007F00007F00007F00007F00007
+F00007F00007F00007F00007F00007F03807F03807F03807F03807F03807F03807F03803F87001
+F8F000FFE0001F8015267FA51B>I<FFE03FF800FFE03FF800FFE03FF8000FE003F8000FE003F8
+000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
+F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
+07F8000FE007F8000FE00FF80007E01FF80003F03BFF8001FFF3FF80003FC3FF80211B7D9A26>
+I<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007F000700007F800F00003F800E00003FC01
+E00001FC01C00001FC01C00000FE03800000FE038000007F070000007F070000007F8F0000003F
+8E0000003FDE0000001FDC0000001FDC0000000FF80000000FF80000000FF800000007F0000000
+07F000000003E000000003E000000001C00000211B7F9A24>I<FFFE7FFC0FFEFFFE7FFC0FFEFF
+FE7FFC0FFE0FE007E000E007F003F001C007F003F001C007F807F803C003F807F8038003F807F8
+038001FC0EFC070001FC0EFC070001FE1EFC0F0000FE1C7E0E0000FE1C7E0E0000FF383F1E0000
+7F383F1C00007F783F3C00003FF01FB800003FF01FB800003FF01FF800001FE00FF000001FE00F
+F000000FC007E000000FC007E000000FC007E00000078003C00000078003C0002F1B7F9A32>I<
+FFFC0FFF00FFFC0FFF00FFFC0FFF0007F003C00003F807800001FC07800000FE0F000000FF1E00
+00007F3C0000003FF80000001FF00000000FF00000000FF000000007F000000007F80000000FFC
+0000001FFE0000001EFE0000003C7F000000783F800000F01FC00001E01FE00001C00FE00003C0
+07F000FFF01FFF80FFF01FFF80FFF01FFF80211B7F9A24>I<FFFE03FF80FFFE03FF80FFFE03FF
+8007F000700007F000700007F800F00003F800E00003FC01E00001FC01C00001FC01C00000FE03
+800000FE038000007F070000007F070000007F8F0000003F8E0000003FDE0000001FDC0000001F
+DC0000000FF80000000FF80000000FF800000007F000000007F000000003E000000003E0000000
+01C000000001C000000003800000000380000038078000007C07000000FE0F000000FE0E000000
+FE1E000000FE3C0000007C780000003FE00000000FC000000021277F9A24>I
+E /Fe 49 121 df<07E00001F8001FF80007FE003FFC000FFF007FFE001FFF807FFF001FFFC0FF
+FF003FFFC0FFFF803FFFE0FFFF803FFFE0FFFF803FFFE0FFFFC03FFFF0FFFFC03FFFF07FFFC01F
+FFF07FFFC01FFFF03FFFC00FFFF01FFBC007FEF007E3C001F8F00003C00000F00003C00000F000
+07800001E00007800001E00007800001E0000F000003C0000F000003C0000F000003C0001E0000
+0780003E00000F80003C00000F00007C00001F0000F800003E0001F000007C0003E00000F80007
+E00001F8000FC00003F0001F800007E0001E00000780000C00000300002C247CC73E>34
+D<07E00FF03FFC3FFC7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE3FFC3FFC0FF007E01010788F21>
+46 D<00001FF800000001FFFF80000007FFFFE000001FFFFFF800003FF81FFC0000FFE007FF00
+01FF8001FF8003FF0000FFC003FF0000FFC007FE00007FE007FE00007FE00FFC00003FF00FFC00
+003FF01FFC00003FF81FFC00003FF83FFC00003FFC3FF800001FFC3FF800001FFC7FF800001FFE
+7FF800001FFE7FF800001FFE7FF800001FFE7FF800001FFE7FF800001FFEFFF800001FFFFFF800
+001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFF
+FFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800
+001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFF
+7FF800001FFE7FF800001FFE7FF800001FFE7FF800001FFE7FF800001FFE7FF800001FFE3FF800
+001FFC3FFC00003FFC3FFC00003FFC1FFC00003FF81FFC00003FF81FFC00003FF80FFC00003FF0
+0FFE00007FF007FE00007FE003FF0000FFC003FF8001FFC001FFC003FF8000FFE007FF00007FF8
+1FFE00001FFFFFF8000007FFFFE0000001FFFF800000001FF8000030457BC33B>48
+D<000001E00000000003F0000000000FF0000000003FF000000000FFF00000000FFFF0000003FF
+FFF00000FFFFFFF00000FFFFFFF00000FFFFFFF00000FFF0FFF00000FC00FFF000000000FFF000
+000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000
+FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000
+000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000
+FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000
+000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000
+FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000
+000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000
+FFF000000000FFF000000000FFF000000000FFF000000000FFF000003FFFFFFFFFC03FFFFFFFFF
+C03FFFFFFFFFC03FFFFFFFFFC03FFFFFFFFFC02A4478C33B>I<0000FFE00000000FFFFE000000
+3FFFFFC00000FFFFFFF00003FFFFFFFC0007FC01FFFE000FE0007FFF001FC0001FFF803F80000F
+FFC03FE00007FFE07FF80007FFE07FFC0003FFF0FFFC0003FFF0FFFE0001FFF8FFFE0001FFF8FF
+FE0001FFF8FFFE0000FFFCFFFE0000FFFC7FFC0000FFFC7FFC0000FFFC3FF80000FFFC1FF00000
+FFFC0FE00000FFFC00000001FFFC00000001FFF800000001FFF800000001FFF000000003FFF000
+000003FFE000000003FFE000000007FFC000000007FF800000000FFF800000001FFF000000001F
+FE000000003FFC000000007FF8000000007FE000000000FFC000000001FF8000000003FF000000
+0007FC000000000FF8000000001FF0000000003FC0000000007F80007C0000FF00007C0000FE00
+007C0001FC00007C0003F00000F80007E00000F8000FC00000F8001F800000F8003F000001F800
+7C000003F800FFFFFFFFF801FFFFFFFFF003FFFFFFFFF007FFFFFFFFF00FFFFFFFFFF01FFFFFFF
+FFF03FFFFFFFFFF07FFFFFFFFFF07FFFFFFFFFF0FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE0FF
+FFFFFFFFE02E447AC33B>I<00007FF800000003FFFF8000000FFFFFF000003FFFFFFC0000FFC0
+3FFF0001FE000FFF8003F80007FFC003F00003FFE007F80003FFE00FFE0003FFF00FFF0001FFF0
+0FFF8001FFF81FFF8001FFF81FFF8001FFF81FFF8001FFF81FFF8001FFF81FFF8001FFF80FFF80
+01FFF80FFF0003FFF007FF0003FFF003FE0003FFF001F80003FFE000000003FFE000000007FFC0
+00000007FF800000000FFF000000001FFE000000001FFC000000007FF800000001FFE0000001FF
+FF80000001FFFE00000001FFFFC0000001FFFFF0000000003FFC000000000FFF0000000007FFC0
+00000003FFE000000003FFF000000001FFF800000001FFF800000001FFFC00000000FFFC000000
+00FFFE00000000FFFE03C00000FFFF0FF00000FFFF3FFC0000FFFF3FFC0000FFFF7FFE0000FFFF
+7FFE0000FFFFFFFF0000FFFFFFFF0000FFFFFFFF0000FFFEFFFF0000FFFEFFFF0000FFFEFFFE00
+01FFFC7FFE0001FFFC7FFC0001FFF83FF80003FFF83FE00003FFF01FC00007FFE00FF8000FFFC0
+07FF803FFF8003FFFFFFFE0000FFFFFFFC00003FFFFFF0000007FFFF800000007FF8000030457B
+C33B>I<000000000F8000000000001FC000000000003FC000000000003FC000000000007FC000
+00000000FFC00000000001FFC00000000003FFC00000000003FFC00000000007FFC0000000000F
+FFC0000000001FFFC0000000001FFFC0000000003FFFC0000000007FFFC000000000FFFFC00000
+0001FBFFC000000001F3FFC000000003E3FFC000000007E3FFC00000000FC3FFC00000001F83FF
+C00000001F03FFC00000003E03FFC00000007E03FFC0000000FC03FFC0000001F803FFC0000001
+F003FFC0000003E003FFC0000007E003FFC000000FC003FFC000001F8003FFC000001F0003FFC0
+00003E0003FFC000007E0003FFC00000FC0003FFC00000F80003FFC00001F00003FFC00003F000
+03FFC00007E00003FFC0000FC00003FFC0000F800003FFC0001F000003FFC0003F000003FFC000
+7E000003FFC000FC000003FFC000FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFF
+FFFFF0FFFFFFFFFFFFF000000007FFC00000000007FFC00000000007FFC00000000007FFC00000
+000007FFC00000000007FFC00000000007FFC00000000007FFC00000000007FFC00000000007FF
+C00000000007FFC00000000007FFC00000007FFFFFFFF000007FFFFFFFF000007FFFFFFFF00000
+7FFFFFFFF000007FFFFFFFF034447DC33B>I<03000000038007F000001F8007FF0003FF8007FF
+FFFFFF8007FFFFFFFF0007FFFFFFFE0007FFFFFFFC0007FFFFFFF80007FFFFFFF00007FFFFFFE0
+0007FFFFFFC00007FFFFFF000007FFFFFE000007FFFFF8000007FFFFC0000007DFFC00000007C0
+0000000007C00000000007C00000000007C00000000007C00000000007C00000000007C0000000
+0007C00000000007C00000000007C00000000007C07FF8000007C3FFFF000007CFFFFFE00007FF
+FFFFF00007FFC03FFC0007FE000FFE0007F80007FF0007E00007FF8007C00003FFC003800003FF
+E000000003FFE000000001FFF000000001FFF000000001FFF800000001FFF800000001FFF80000
+0001FFF800000001FFFC07800001FFFC1FE00001FFFC3FF00001FFFC7FF80001FFFC7FF80001FF
+FCFFFC0001FFFCFFFC0001FFFCFFFC0001FFFCFFFC0001FFF8FFF80001FFF8FFF80001FFF87FF0
+0001FFF07FE00003FFF07F800003FFE03F000003FFE03F000007FFC01F80000FFF800FE0001FFF
+0007F0003FFE0003FE00FFFC0001FFFFFFF80000FFFFFFE000003FFFFF8000000FFFFC00000001
+FFC000002E457AC33B>I<0000007FE000000007FFFC0000003FFFFF000000FFFFFF800003FFE0
+3FC00007FF0007E0000FFC0003E0003FF8001FF0007FF0003FF000FFE0007FF800FFC0007FF801
+FF8000FFF803FF8000FFF807FF0000FFF807FF0000FFF80FFF00007FF00FFE00007FF01FFE0000
+3FE01FFE00001FC01FFE000000003FFE000000003FFC000000003FFC000000007FFC000000007F
+FC004000007FFC07FF80007FFC1FFFF000FFFC3FFFFC00FFFC7FFFFE00FFFCF003FF80FFFDE001
+FFC0FFFFC000FFE0FFFF80007FE0FFFF80007FF0FFFF00007FF8FFFF00003FF8FFFE00003FFCFF
+FE00003FFCFFFE00003FFEFFFE00003FFEFFFC00003FFEFFFC00003FFFFFFC00003FFFFFFC0000
+3FFF7FFC00003FFF7FFC00003FFF7FFC00003FFF7FFC00003FFF7FFC00003FFF7FFC00003FFF3F
+FC00003FFF3FFC00003FFF3FFC00003FFE1FFE00003FFE1FFE00003FFE0FFE00003FFC0FFE0000
+3FFC07FE00007FF807FF00007FF803FF00007FF003FF8000FFE001FFC001FFE000FFE003FFC000
+7FF80FFF80003FFFFFFE00000FFFFFFC000003FFFFF0000000FFFFC00000001FFC000030457BC3
+3B>I<1F0000000000001F8000000000001FFF00000000001FFFFFFFFFFF801FFFFFFFFFFF801F
+FFFFFFFFFF801FFFFFFFFFFF803FFFFFFFFFFF003FFFFFFFFFFE003FFFFFFFFFFE003FFFFFFFFF
+FC003FFFFFFFFFF8003FFFFFFFFFF0003FFFFFFFFFE0003FFFFFFFFFC0007FFFFFFFFFC0007F00
+00001F80007E0000003F00007C0000007E00007C000000FC00007C000000F800007C000001F800
+00FC000003F00000F8000007E00000F800000FC00000F800001F8000000000001F000000000000
+3F0000000000007E000000000000FE000000000000FC000000000001FC000000000003F8000000
+000003F8000000000007F8000000000007F000000000000FF000000000000FF000000000001FF0
+00000000001FE000000000003FE000000000003FE000000000007FE000000000007FE000000000
+007FE00000000000FFE00000000000FFE00000000000FFC00000000001FFC00000000001FFC000
+00000001FFC00000000003FFC00000000003FFC00000000003FFC00000000003FFC00000000003
+FFC00000000003FFC00000000007FFC00000000007FFC00000000007FFC00000000007FFC00000
+000007FFC00000000007FFC00000000007FFC00000000007FFC00000000007FFC00000000007FF
+C00000000003FF800000000001FF000000000000FE0000000000007C00000000314779C53B>I<
+00001FFC00000001FFFFC0000007FFFFF000001FFFFFFC00003FC007FF0000FE0001FF8001FC00
+007FC001F800003FE003F000001FE007E000000FF007E000000FF00FE000000FF00FE0000007F8
+0FE0000007F81FE0000007F81FF0000007F81FF8000007F81FFC000007F81FFE000007F81FFF80
+000FF01FFFE0000FF01FFFF8000FE00FFFFC001FE00FFFFF003FC00FFFFFC07FC007FFFFF0FF80
+07FFFFFDFE0003FFFFFFFC0003FFFFFFF80001FFFFFFE00000FFFFFFF800007FFFFFFC00003FFF
+FFFF00000FFFFFFF80000FFFFFFFC0003FFFFFFFE000FFFFFFFFF001FF1FFFFFF803FE07FFFFF8
+07FC01FFFFFC0FF800FFFFFC1FF0003FFFFE3FE0000FFFFE3FE00003FFFE7FC00001FFFF7FC000
+007FFF7FC000001FFFFF8000000FFFFF80000007FFFF80000003FFFF80000003FFFF80000001FF
+FF80000001FFFF80000001FEFF80000001FE7FC0000001FE7FC0000001FC7FC0000003FC3FE000
+0003F83FF0000007F81FF800000FF00FFC00001FE007FF00007FC003FFE003FF8001FFFFFFFF00
+007FFFFFFC00001FFFFFF0000007FFFFC00000003FFC000030457BC33B>I<00003FF800000003
+FFFF8000000FFFFFE000003FFFFFF800007FF00FFC0000FFC007FE0003FF8003FF0007FF0001FF
+8007FE0000FFC00FFE0000FFC01FFE00007FE01FFE00007FF03FFC00007FF03FFC00007FF87FFC
+00003FF87FFC00003FF87FFC00003FFCFFFC00003FFCFFFC00003FFCFFFC00003FFEFFFC00003F
+FEFFFC00003FFEFFFC00003FFEFFFC00003FFEFFFC00003FFFFFFC00003FFFFFFC00003FFFFFFC
+00003FFF7FFC00007FFF7FFC00007FFF7FFC00007FFF3FFC00007FFF3FFC00007FFF1FFC0000FF
+FF1FFE0000FFFF0FFE0001FFFF07FE0001FFFF07FF0003FFFF03FF8007BFFF00FFC00F3FFF007F
+FFFE3FFF003FFFFC3FFF000FFFF83FFE0001FFE03FFE000002003FFE000000003FFE000000003F
+FC000000003FFC000000007FFC000000007FFC03F800007FF807FC00007FF80FFE00007FF00FFE
+0000FFF01FFF0000FFE01FFF0000FFE01FFF0001FFC01FFF0001FF801FFE0003FF801FFE0007FF
+000FFC000FFE000FF8001FFC0007F0003FF80007FC01FFF00003FFFFFFC00001FFFFFF0000007F
+FFFC0000001FFFF000000003FF00000030457BC33B>I<000000003FFE00000E0000000FFFFFC0
+001E0000007FFFFFF8003E000003FFFFFFFE00FE00000FFFFFFFFF81FE00003FFFF800FFC3FE00
+00FFFF80000FF7FE0001FFFC000003FFFE0007FFF0000001FFFE000FFFC00000007FFE001FFF80
+0000003FFE003FFF000000001FFE007FFE000000000FFE00FFFC0000000007FE01FFF800000000
+07FE03FFF00000000003FE03FFF00000000001FE07FFE00000000001FE07FFE00000000000FE0F
+FFC00000000000FE0FFFC000000000007E1FFFC000000000007E1FFF8000000000007E3FFF8000
+000000007E3FFF8000000000003E3FFF8000000000003E7FFF8000000000003E7FFF0000000000
+003E7FFF000000000000007FFF00000000000000FFFF00000000000000FFFF00000000000000FF
+FF00000000000000FFFF00000000000000FFFF00000000000000FFFF00000000000000FFFF0000
+0000000000FFFF00000000000000FFFF00000000000000FFFF00000000000000FFFF0000000000
+0000FFFF00000000000000FFFF000000000000007FFF000000000000007FFF000000000000007F
+FF000000000000007FFF8000000000003E3FFF8000000000003E3FFF8000000000003E3FFF8000
+000000003E1FFF8000000000003E1FFFC000000000003E0FFFC000000000007C0FFFC000000000
+007C07FFE000000000007C07FFE00000000000F803FFF00000000000F803FFF00000000001F801
+FFF80000000001F000FFFC0000000003E0007FFE0000000007E0003FFF000000000FC0001FFF80
+0000001F80000FFFC00000003F000007FFF0000000FE000001FFFC000001FC000000FFFF80000F
+F80000003FFFF8007FF00000000FFFFFFFFFC000000003FFFFFFFF00000000007FFFFFFC000000
+00000FFFFFE00000000000003FFE000000474979C756>67 D<FFFFFFFFFFFFFFFE00FFFFFFFFFF
+FFFFFE00FFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFF00001FFFC00001FFFF
+00001FFFC000001FFF00001FFFC0000007FF00001FFFC0000003FF00001FFFC0000000FF00001F
+FFC00000007F00001FFFC00000007F00001FFFC00000003F00001FFFC00000003F80001FFFC000
+00001F80001FFFC00000001F80001FFFC00000001F80001FFFC00000000F80001FFFC00000000F
+80001FFFC0007C000F80001FFFC0007C000F80001FFFC0007C0007C0001FFFC0007C0007C0001F
+FFC0007C0007C0001FFFC0007C0007C0001FFFC000FC000000001FFFC000FC000000001FFFC000
+FC000000001FFFC001FC000000001FFFC003FC000000001FFFC01FFC000000001FFFFFFFFC0000
+00001FFFFFFFFC000000001FFFFFFFFC000000001FFFFFFFFC000000001FFFFFFFFC000000001F
+FFC01FFC000000001FFFC003FC000000001FFFC001FC000000001FFFC000FC000000001FFFC000
+FC000000001FFFC000FC000000001FFFC0007C00007C001FFFC0007C00007C001FFFC0007C0000
+7C001FFFC0007C0000F8001FFFC0007C0000F8001FFFC0007C0000F8001FFFC000000000F8001F
+FFC000000001F8001FFFC000000001F0001FFFC000000001F0001FFFC000000001F0001FFFC000
+000003F0001FFFC000000003F0001FFFC000000007F0001FFFC000000007E0001FFFC00000000F
+E0001FFFC00000001FE0001FFFC00000003FE0001FFFC00000007FE0001FFFC0000000FFE0001F
+FFC0000003FFC0001FFFC000000FFFC0001FFFC00000FFFFC0FFFFFFFFFFFFFFFFC0FFFFFFFFFF
+FFFFFFC0FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF8046467CC54E>69
+D<FFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFFC00FFFF
+FFFFFFFFFFFE00001FFFC00003FFFE00001FFFC000003FFE00001FFFC000000FFE00001FFFC000
+0003FE00001FFFC0000001FE00001FFFC0000000FE00001FFFC0000000FE00001FFFC00000007E
+00001FFFC00000007F00001FFFC00000003F00001FFFC00000003F00001FFFC00000001F00001F
+FFC00000001F00001FFFC00000001F00001FFFC00000001F00001FFFC0007C001F00001FFFC000
+7C000F80001FFFC0007C000F80001FFFC0007C000F80001FFFC0007C000F80001FFFC0007C0000
+00001FFFC000FC000000001FFFC000FC000000001FFFC000FC000000001FFFC001FC000000001F
+FFC003FC000000001FFFC01FFC000000001FFFFFFFFC000000001FFFFFFFFC000000001FFFFFFF
+FC000000001FFFFFFFFC000000001FFFFFFFFC000000001FFFC01FFC000000001FFFC003FC0000
+00001FFFC001FC000000001FFFC000FC000000001FFFC000FC000000001FFFC000FC000000001F
+FFC0007C000000001FFFC0007C000000001FFFC0007C000000001FFFC0007C000000001FFFC000
+7C000000001FFFC0007C000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001F
+FFC00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000
+00000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00FFFFFFFFFF00000000FFFFFFFFFF00000000FFFFFFFFFF00000000FFFFFFFFFF00000000FFFF
+FFFFFF0000000041467CC54B>I<000000003FFE00000E000000000FFFFFC0001E000000007FFF
+FFF8003E00000003FFFFFFFE00FE0000000FFFFFFFFF81FE0000003FFFF800FFC3FE000000FFFF
+80000FF7FE000001FFFC000003FFFE000007FFF0000001FFFE00000FFFC00000007FFE00001FFF
+800000003FFE00003FFF000000001FFE00007FFE000000000FFE0000FFFC0000000007FE0001FF
+F80000000007FE0003FFF00000000003FE0003FFF00000000001FE0007FFE00000000001FE0007
+FFE00000000000FE000FFFC00000000000FE000FFFC000000000007E001FFFC000000000007E00
+1FFF8000000000007E003FFF8000000000007E003FFF8000000000003E003FFF8000000000003E
+007FFF8000000000003E007FFF0000000000003E007FFF00000000000000007FFF000000000000
+0000FFFF0000000000000000FFFF0000000000000000FFFF0000000000000000FFFF0000000000
+000000FFFF0000000000000000FFFF0000000000000000FFFF0000000000000000FFFF00000000
+00000000FFFF0000000000000000FFFF0000000000000000FFFF0000000000000000FFFF000000
+0000000000FFFF0000007FFFFFFFFE7FFF0000007FFFFFFFFE7FFF0000007FFFFFFFFE7FFF8000
+007FFFFFFFFE7FFF8000007FFFFFFFFE3FFF8000000000FFFE003FFF8000000000FFFE003FFF80
+00000000FFFE001FFF8000000000FFFE001FFFC000000000FFFE000FFFC000000000FFFE000FFF
+C000000000FFFE0007FFE000000000FFFE0007FFE000000000FFFE0003FFF000000000FFFE0003
+FFF800000000FFFE0001FFF800000000FFFE0000FFFC00000000FFFE00007FFE00000000FFFE00
+003FFF00000000FFFE00001FFF80000000FFFE00000FFFE0000001FFFE000007FFF0000003FFFE
+000001FFFC000007FFFE000000FFFF80001FFFFE0000003FFFFC00FFC7FE0000000FFFFFFFFF83
+FE00000003FFFFFFFE00FE000000007FFFFFF8003E000000000FFFFFE0000E00000000003FFE00
+0000004F4979C75D>I<FFFFFFFFF801FFFFFFFFF0FFFFFFFFF801FFFFFFFFF0FFFFFFFFF801FF
+FFFFFFF0FFFFFFFFF801FFFFFFFFF0FFFFFFFFF801FFFFFFFFF0001FFFC00000003FFF8000001F
+FFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003F
+FF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFF
+C00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF
+8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC0
+0000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF80
+00001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC000
+00003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000
+001FFFC00000003FFF8000001FFFFFFFFFFFFFFF8000001FFFFFFFFFFFFFFF8000001FFFFFFFFF
+FFFFFF8000001FFFFFFFFFFFFFFF8000001FFFFFFFFFFFFFFF8000001FFFC00000003FFF800000
+1FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC0000000
+3FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001F
+FFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003F
+FF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFF
+C00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF
+8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC0
+0000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF80
+00001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000FFFFFFFFF8
+01FFFFFFFFF0FFFFFFFFF801FFFFFFFFF0FFFFFFFFF801FFFFFFFFF0FFFFFFFFF801FFFFFFFFF0
+FFFFFFFFF801FFFFFFFFF054477CC65D>I<FFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFF
+FFFFFFFE000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000
+000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE0
+00000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFF
+E000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000F
+FFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE00000
+0FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000
+000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE0
+00000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000FFFFFF
+FFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE27477DC62D>I<FFFFFFFFF80000FFFFFF
+C0FFFFFFFFF80000FFFFFFC0FFFFFFFFF80000FFFFFFC0FFFFFFFFF80000FFFFFFC0FFFFFFFFF8
+0000FFFFFFC0001FFFC000000003FF8000001FFFC000000001FE0000001FFFC000000003F80000
+001FFFC000000007F00000001FFFC00000000FE00000001FFFC00000001FC00000001FFFC00000
+007F800000001FFFC0000000FE000000001FFFC0000001FC000000001FFFC0000003F800000000
+1FFFC0000007F0000000001FFFC000001FE0000000001FFFC000003FC0000000001FFFC000007F
+00000000001FFFC00000FE00000000001FFFC00001FC00000000001FFFC00007F800000000001F
+FFC0000FF000000000001FFFC0001FC000000000001FFFC0003F8000000000001FFFC0007F0000
+000000001FFFC000FE0000000000001FFFC003FC0000000000001FFFC007FC0000000000001FFF
+C00FFE0000000000001FFFC01FFF0000000000001FFFC03FFF8000000000001FFFC0FFFF800000
+0000001FFFC1FFFFC000000000001FFFC3FFFFE000000000001FFFC7FFFFF000000000001FFFCF
+EFFFF000000000001FFFDFC7FFF800000000001FFFFF87FFFC00000000001FFFFE03FFFC000000
+00001FFFFC01FFFE00000000001FFFF800FFFF00000000001FFFF000FFFF80000000001FFFE000
+7FFF80000000001FFFC0003FFFC0000000001FFFC0001FFFE0000000001FFFC0001FFFF0000000
+001FFFC0000FFFF0000000001FFFC00007FFF8000000001FFFC00003FFFC000000001FFFC00003
+FFFE000000001FFFC00001FFFE000000001FFFC00000FFFF000000001FFFC000007FFF80000000
+1FFFC000007FFFC00000001FFFC000003FFFC00000001FFFC000001FFFE00000001FFFC000000F
+FFF00000001FFFC000000FFFF80000001FFFC0000007FFF80000001FFFC0000003FFFC0000001F
+FFC0000001FFFE0000001FFFC0000001FFFF0000001FFFC0000000FFFF0000001FFFC00000007F
+FF8000001FFFC0000000FFFFC000FFFFFFFFF8007FFFFFFFE0FFFFFFFFF8007FFFFFFFE0FFFFFF
+FFF8007FFFFFFFE0FFFFFFFFF8007FFFFFFFE0FFFFFFFFF8007FFFFFFFE053477CC65D>75
+D<FFFFFFFFFF000000FFFFFFFFFF000000FFFFFFFFFF000000FFFFFFFFFF000000FFFFFFFFFF00
+0000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000
+000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC0
+00000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFF
+C000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001F
+FFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC00000000000
+1FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000
+001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC0000000
+00001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC00000
+00F8001FFFC0000000F8001FFFC0000000F8001FFFC0000000F8001FFFC0000001F0001FFFC000
+0001F0001FFFC0000001F0001FFFC0000001F0001FFFC0000001F0001FFFC0000003F0001FFFC0
+000003F0001FFFC0000003F0001FFFC0000007F0001FFFC0000007F0001FFFC000000FE0001FFF
+C000001FE0001FFFC000001FE0001FFFC000003FE0001FFFC000007FE0001FFFC00000FFE0001F
+FFC00003FFE0001FFFC0000FFFE0001FFFC0007FFFE0FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC0FF
+FFFFFFFFFFFFC0FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC03D477CC647>I<FFFFFFC0000000FFFF
+FFF0FFFFFFE0000000FFFFFFF0FFFFFFF0000000FFFFFFF0FFFFFFF8000000FFFFFFF0FFFFFFFC
+000000FFFFFFF0001FFFFC000000007FE000001FFFFE000000001F8000001FFFFF000000001F80
+00001FFFFF800000001F8000001FFFFFC00000001F8000001FBFFFE00000001F8000001F9FFFE0
+0000001F8000001F9FFFF00000001F8000001F8FFFF80000001F8000001F87FFFC0000001F8000
+001F83FFFE0000001F8000001F81FFFF0000001F8000001F80FFFF0000001F8000001F80FFFF80
+00001F8000001F807FFFC000001F8000001F803FFFE000001F8000001F801FFFF000001F800000
+1F800FFFF800001F8000001F8007FFF800001F8000001F8007FFFC00001F8000001F8003FFFE00
+001F8000001F8001FFFF00001F8000001F8000FFFF80001F8000001F80007FFFC0001F8000001F
+80003FFFC0001F8000001F80003FFFE0001F8000001F80001FFFF0001F8000001F80000FFFF800
+1F8000001F800007FFFC001F8000001F800003FFFE001F8000001F800001FFFF001F8000001F80
+0001FFFF001F8000001F800000FFFF801F8000001F8000007FFFC01F8000001F8000003FFFE01F
+8000001F8000001FFFF01F8000001F8000000FFFF81F8000001F8000000FFFF81F8000001F8000
+0007FFFC1F8000001F80000003FFFE1F8000001F80000001FFFF1F8000001F80000000FFFF9F80
+00001F800000007FFFDF8000001F800000007FFFDF8000001F800000003FFFFF8000001F800000
+001FFFFF8000001F800000000FFFFF8000001F8000000007FFFF8000001F8000000003FFFF8000
+001F8000000003FFFF8000001F8000000001FFFF8000001F8000000000FFFF8000001F80000000
+007FFF8000001F80000000003FFF8000001F80000000001FFF8000001F80000000001FFF800000
+1F80000000000FFF8000001F800000000007FF8000001F800000000003FF8000001F8000000000
+01FF8000007FE00000000000FF8000FFFFFFF000000000FF8000FFFFFFF0000000007F8000FFFF
+FFF0000000003F8000FFFFFFF0000000001F8000FFFFFFF0000000000F000054477CC65D>78
+D<00000003FFF0000000000000007FFFFF80000000000003FFFFFFF000000000000FFFFFFFFC00
+000000003FFF807FFF0000000000FFF80007FFC000000003FFE00001FFF000000007FFC00000FF
+F80000000FFF0000003FFC0000001FFE0000001FFE0000003FFC0000000FFF0000007FFC000000
+0FFF800000FFF800000007FFC00001FFF000000003FFE00003FFF000000003FFF00003FFE00000
+0001FFF00007FFE000000001FFF80007FFC000000000FFF8000FFFC000000000FFFC000FFFC000
+000000FFFC001FFF80000000007FFE001FFF80000000007FFE003FFF80000000007FFF003FFF80
+000000007FFF003FFF80000000007FFF007FFF00000000003FFF807FFF00000000003FFF807FFF
+00000000003FFF807FFF00000000003FFF807FFF00000000003FFF80FFFF00000000003FFFC0FF
+FF00000000003FFFC0FFFF00000000003FFFC0FFFF00000000003FFFC0FFFF00000000003FFFC0
+FFFF00000000003FFFC0FFFF00000000003FFFC0FFFF00000000003FFFC0FFFF00000000003FFF
+C0FFFF00000000003FFFC0FFFF00000000003FFFC0FFFF00000000003FFFC0FFFF00000000003F
+FFC0FFFF00000000003FFFC07FFF00000000003FFF807FFF00000000003FFF807FFF8000000000
+7FFF807FFF80000000007FFF803FFF80000000007FFF003FFF80000000007FFF003FFF80000000
+007FFF001FFFC000000000FFFE001FFFC000000000FFFE001FFFC000000000FFFE000FFFE00000
+0001FFFC000FFFE000000001FFFC0007FFE000000001FFF80003FFF000000003FFF00003FFF800
+000007FFF00001FFF800000007FFE00000FFFC0000000FFFC000007FFE0000001FFF8000007FFF
+0000003FFF8000003FFF8000007FFF0000000FFFC00000FFFC00000007FFF00003FFF800000003
+FFFC000FFFF000000000FFFF807FFFC0000000007FFFFFFFFF80000000000FFFFFFFFC00000000
+0003FFFFFFF00000000000007FFFFF8000000000000003FFF0000000004A4979C759>I<FFFFFF
+FFFFFF800000FFFFFFFFFFFFFC0000FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFC000FFFFFFFFFFFF
+FFF000001FFF80000FFFFC00001FFF800001FFFE00001FFF8000007FFF00001FFF8000003FFF80
+001FFF8000001FFFC0001FFF8000000FFFC0001FFF8000000FFFE0001FFF8000000FFFE0001FFF
+80000007FFF0001FFF80000007FFF0001FFF80000007FFF0001FFF80000007FFF8001FFF800000
+07FFF8001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FFF8
+001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FFF0001FFF80000007FFF0001FFF
+80000007FFF0001FFF8000000FFFE0001FFF8000000FFFE0001FFF8000000FFFC0001FFF800000
+1FFF80001FFF8000003FFF80001FFF8000007FFF00001FFF800001FFFE00001FFF80000FFFF800
+001FFFFFFFFFFFF000001FFFFFFFFFFFC000001FFFFFFFFFFE0000001FFFFFFFFFF00000001FFF
+C00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC00000
+000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000
+001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFF
+C00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC00000
+000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000
+001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFF
+C00000000000FFFFFFFFF800000000FFFFFFFFF800000000FFFFFFFFF800000000FFFFFFFFF800
+000000FFFFFFFFF80000000045477CC651>I<00007FF00007000007FFFF000F00001FFFFFC01F
+00007FFFFFF03F0000FFFFFFFC7F0003FFC00FFEFF0007FE0000FFFF0007FC00003FFF000FF000
+001FFF001FF0000007FF001FE0000003FF003FE0000001FF003FC0000001FF007FC0000000FF00
+7FC00000007F007FC00000007F00FFC00000003F00FFC00000003F00FFC00000003F00FFE00000
+003F00FFE00000001F00FFF00000001F00FFF80000001F00FFFC0000001F00FFFF00000000007F
+FFC0000000007FFFFE000000007FFFFFE00000003FFFFFFF0000003FFFFFFFF000001FFFFFFFFC
+00001FFFFFFFFF00000FFFFFFFFFC00007FFFFFFFFE00007FFFFFFFFF00003FFFFFFFFF80000FF
+FFFFFFFC00007FFFFFFFFE00003FFFFFFFFE00000FFFFFFFFF000001FFFFFFFF0000003FFFFFFF
+80000001FFFFFF800000000FFFFFC000000000FFFFC0000000001FFFC0000000000FFFE0000000
+0007FFE00000000003FFE07800000001FFE0F800000000FFE0F800000000FFE0F8000000007FE0
+F8000000007FE0F8000000007FE0FC000000007FE0FC000000007FC0FC000000007FC0FE000000
+007FC0FE000000007F80FF00000000FF80FF80000000FF80FFC0000000FF00FFE0000001FE00FF
+F8000003FE00FFFE000007FC00FFFF80000FF800FFFFFC007FF000FE3FFFFFFFE000FC0FFFFFFF
+8000F803FFFFFF0000F0007FFFF80000E00003FFC00000334979C742>83
+D<3FFFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFF
+FF003FFFFFFFFFFFFFFFFF003FFF0003FFF8003FFF007FF80003FFF80007FF807FE00003FFF800
+01FF807FC00003FFF80000FF807F800003FFF800007F807F000003FFF800003F807F000003FFF8
+00003F807E000003FFF800001F807E000003FFF800001F807E000003FFF800000F807C000003FF
+F800000F807C000003FFF800000F807C000003FFF800000F807C000003FFF800000F80FC000003
+FFF800000FC0F8000003FFF8000007C0F8000003FFF8000007C0F8000003FFF8000007C0F80000
+03FFF8000007C0F8000003FFF8000007C000000003FFF80000000000000003FFF8000000000000
+0003FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF80000000000
+000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF800000000
+00000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF8000000
+0000000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF80000
+000000000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF800
+00000000000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF8
+0000000000000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FF
+F80000000000000003FFF80000000000000003FFF80000000000000003FFF80000000000000003
+FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF800000000000000
+03FFF80000000000000003FFF80000000000000003FFF8000000000003FFFFFFFFFFF800000003
+FFFFFFFFFFF800000003FFFFFFFFFFF800000003FFFFFFFFFFF800000003FFFFFFFFFFF800004A
+467CC553>I<7FFFFFFFF801FFFFFFF0007FFFFFFFF801FFFFFFF0007FFFFFFFF801FFFFFFF000
+7FFFFFFFF801FFFFFFF0007FFFFFFFF801FFFFFFF000000FFFF8000003FF800000000FFFF80000
+007E0000000007FFFC000000FC0000000003FFFE000001F80000000003FFFE000003F800000000
+01FFFF000003F00000000000FFFF800007E000000000007FFFC0000FC000000000007FFFC0001F
+C000000000003FFFE0001F8000000000001FFFF0003F0000000000001FFFF0007E000000000000
+0FFFF800FE00000000000007FFFC00FC00000000000003FFFC01F800000000000003FFFE03F000
+000000000001FFFF07F000000000000000FFFF87E000000000000000FFFF8FC000000000000000
+7FFFDF80000000000000003FFFFF80000000000000003FFFFF00000000000000001FFFFE000000
+00000000000FFFFC000000000000000007FFFC000000000000000007FFFC000000000000000003
+FFFE000000000000000001FFFF000000000000000001FFFF000000000000000000FFFF80000000
+00000000007FFFC000000000000000003FFFE000000000000000007FFFE000000000000000007F
+FFF00000000000000000FFFFF80000000000000001FFFFF80000000000000003FFFFFC00000000
+00000003F3FFFE0000000000000007E1FFFE000000000000000FC1FFFF000000000000001FC0FF
+FF800000000000001F807FFFC00000000000003F007FFFC00000000000007E003FFFE000000000
+0000FE001FFFF0000000000000FC001FFFF0000000000001F8000FFFF8000000000003F00007FF
+FC000000000007F00003FFFE000000000007E00003FFFE00000000000FC00001FFFF0000000000
+1F800000FFFF80000000003F800000FFFF80000000003F0000007FFFC0000000007E0000003FFF
+E000000000FC0000001FFFF000000001FC0000001FFFF000000001F80000000FFFF800000003F0
+00000007FFFC00000007E000000007FFFC0000001FFC00000003FFFE0000FFFFFFF80003FFFFFF
+FF80FFFFFFF80003FFFFFFFF80FFFFFFF80003FFFFFFFF80FFFFFFF80003FFFFFFFF80FFFFFFF8
+0003FFFFFFFF8051477CC65A>88 D<FFFFFFFFF000000FFFFFF8FFFFFFFFF000000FFFFFF8FFFF
+FFFFF000000FFFFFF8FFFFFFFFF000000FFFFFF8FFFFFFFFF000000FFFFFF8003FFFF000000000
+1FF000001FFFF0000000000FC000000FFFF8000000001F8000000FFFFC000000001F80000007FF
+FC000000003F00000003FFFE000000007E00000003FFFF00000000FC00000001FFFF00000000FC
+00000000FFFF80000001F800000000FFFFC0000003F0000000007FFFC0000003F0000000003FFF
+E0000007E0000000003FFFF000000FC0000000001FFFF000000FC0000000000FFFF800001F8000
+0000000FFFFC00003F000000000007FFFC00003F000000000003FFFE00007E000000000003FFFF
+0000FC000000000001FFFF0000FC000000000000FFFF8001F8000000000000FFFFC003F0000000
+0000007FFFC003F00000000000003FFFE007E00000000000003FFFF00FC00000000000001FFFF0
+0FC00000000000000FFFF81F800000000000000FFFFC3F0000000000000007FFFC3F0000000000
+000003FFFE7E0000000000000003FFFFFC0000000000000001FFFFFC0000000000000000FFFFF8
+0000000000000000FFFFF000000000000000007FFFF000000000000000003FFFE0000000000000
+00003FFFC000000000000000001FFF8000000000000000001FFF8000000000000000001FFF8000
+000000000000001FFF8000000000000000001FFF8000000000000000001FFF8000000000000000
+001FFF8000000000000000001FFF8000000000000000001FFF8000000000000000001FFF800000
+0000000000001FFF8000000000000000001FFF8000000000000000001FFF800000000000000000
+1FFF8000000000000000001FFF8000000000000000001FFF8000000000000000001FFF80000000
+00000000001FFF8000000000000000001FFF8000000000000000001FFF8000000000000000001F
+FF8000000000000000001FFF8000000000000000001FFF8000000000000000001FFF8000000000
+000000FFFFFFFFF8000000000000FFFFFFFFF8000000000000FFFFFFFFF8000000000000FFFFFF
+FFF8000000000000FFFFFFFFF800000055477EC65A>I<000C00000300001E00000780007E0000
+1F8000FC00003F0001F800007E0001F000007C0003E00000F80007C00001F0000F800003E0000F
+000003C0001F000007C0001E00000780003C00000F00003C00000F00003C00000F00007800001E
+00007800001E00007800001E0000F000003C0000F000003C0000F1F8003C7E00F7FE003DFF80FF
+FF003FFFC0FFFF803FFFE0FFFF803FFFE0FFFFC03FFFF0FFFFC03FFFF07FFFC01FFFF07FFFC01F
+FFF07FFFC01FFFF03FFFC00FFFF03FFF800FFFE01FFF8007FFE00FFF0003FFC007FE0001FF8001
+F800007E002C2473C73E>92 D<0007FFFC000000007FFFFFC0000001FFFFFFF8000003FFFFFFFE
+000007FE001FFF000007FF0003FFC0000FFF8001FFE0000FFF8000FFF0000FFF80007FF0000FFF
+80007FF8000FFF80007FF80007FF00003FFC0007FF00003FFC0003FE00003FFC0000F800003FFC
+00000000003FFC00000000003FFC00000000003FFC00000000003FFC00000007FFFFFC000000FF
+FFFFFC000007FFFFFFFC00003FFFE03FFC0000FFFE003FFC0003FFF0003FFC0007FFC0003FFC00
+0FFF00003FFC001FFE00003FFC003FFC00003FFC007FF800003FFC007FF800003FFC00FFF00000
+3FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000007FFC007F
+F80000FFFC007FF80001EFFC003FFC0003EFFC003FFF0007CFFF000FFFC03F8FFFF807FFFFFF07
+FFFC01FFFFFC03FFFC007FFFF001FFFC0003FF80007FF8362E7DAD3A>97
+D<007FC00000000000FFFFC00000000000FFFFC00000000000FFFFC00000000000FFFFC0000000
+0000FFFFC0000000000003FFC0000000000001FFC0000000000001FFC0000000000001FFC00000
+00000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000
+0000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0
+000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FF
+C0000000000001FFC0000000000001FFC00FFC00000001FFC07FFFC0000001FFC3FFFFF0000001
+FFCFFFFFFC000001FFDFF00FFF000001FFFF8003FF800001FFFE0001FFC00001FFF800007FE000
+01FFF000007FF00001FFE000003FF80001FFE000001FFC0001FFE000001FFC0001FFE000001FFE
+0001FFE000001FFE0001FFE000000FFF0001FFE000000FFF0001FFE000000FFF0001FFE000000F
+FF0001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE00000
+0FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000
+000FFF8001FFE000000FFF0001FFE000000FFF0001FFE000000FFF0001FFE000001FFE0001FFE0
+00001FFE0001FFE000001FFC0001FFE000001FFC0001FFE000003FF80001FFF000003FF80001FF
+F800007FF00001FFFC0000FFE00001FFFE0001FFC00001FFBF0007FF800001FF1FE01FFE000001
+FE0FFFFFFC000001FC03FFFFF0000001F800FFFF80000001F0001FF800000039487CC742>I<00
+001FFFC0000000FFFFF8000007FFFFFE00001FFFFFFF80007FFC00FFC000FFE001FFC001FFC003
+FFE003FF8003FFE007FF0003FFE00FFE0003FFE00FFE0003FFE01FFC0001FFC01FFC0001FFC03F
+FC0000FF803FFC00003E007FF8000000007FF8000000007FF800000000FFF800000000FFF80000
+0000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FF
+F800000000FFF8000000007FF8000000007FF8000000007FFC000000003FFC000000003FFC0000
+00001FFC000000F81FFE000000F80FFE000000F80FFF000001F007FF800003F003FFC00007E001
+FFE0000FC000FFF0001F80007FFE00FF00001FFFFFFE000007FFFFF8000000FFFFE00000001FFE
+00002D2E7CAD35>I<00000000007FC00000000000FFFFC00000000000FFFFC00000000000FFFF
+C00000000000FFFFC00000000000FFFFC0000000000003FFC0000000000001FFC0000000000001
+FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000000000
+01FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000000000
+0001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000
+000001FFC0000000000001FFC0000000000001FFC00000000FFC01FFC0000000FFFF81FFC00000
+07FFFFE1FFC000001FFFFFF9FFC000007FFC03FFFFC00000FFF0007FFFC00001FFC0001FFFC000
+03FF80000FFFC00007FF000007FFC0000FFE000003FFC0000FFE000003FFC0001FFC000003FFC0
+001FFC000003FFC0003FFC000003FFC0003FFC000003FFC0007FF8000003FFC0007FF8000003FF
+C0007FF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003
+FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF80000
+03FFC000FFF8000003FFC0007FF8000003FFC0007FF8000003FFC0007FF8000003FFC0003FF800
+0003FFC0003FFC000003FFC0003FFC000003FFC0001FFC000003FFC0001FFC000003FFC0000FFE
+000007FFC00007FF00000FFFC00003FF00001FFFC00001FFC0003FFFC00000FFE000FFFFE00000
+7FF807FBFFFF80001FFFFFF3FFFF800007FFFFC3FFFF800001FFFF03FFFF8000001FF803FFFF80
+39487CC742>I<00001FFE00000001FFFFE0000007FFFFF800001FFFFFFE00007FFC07FF0000FF
+E001FF8001FFC0007FC003FF80003FE007FF00003FF00FFE00001FF01FFE00000FF81FFC00000F
+F83FFC00000FFC3FFC000007FC7FFC000007FC7FF8000007FC7FF8000007FE7FF8000007FEFFF8
+000007FEFFF8000007FEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFCFFF8000000
+00FFF800000000FFF800000000FFF8000000007FF8000000007FF8000000007FFC000000003FFC
+000000003FFC000000003FFC0000001C1FFE0000003E0FFE0000003E07FF0000007E07FF000000
+FC03FF800001F801FFC00003F0007FF0001FE0003FFE00FFC0001FFFFFFF800007FFFFFE000000
+FFFFF80000000FFF80002F2E7DAD36>I<000000FFC000000007FFF80000003FFFFC000000FFFF
+FF000001FFC1FF000007FF03FF80000FFC03FF80000FF807FFC0001FF807FFC0003FF007FFC000
+3FF007FFC0003FE003FF80007FE003FF80007FE001FF00007FE000FE00007FE0003800007FE000
+0000007FE0000000007FE0000000007FE0000000007FE0000000007FE0000000007FE000000000
+7FE0000000007FE0000000007FE0000000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000FFFFFFFE
+0000FFFFFFFE0000007FF0000000007FF0000000007FF0000000007FF0000000007FF000000000
+7FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF000
+0000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF000000000
+7FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF000
+0000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF000000000
+7FF0000000007FF0000000007FF0000000007FF0000000007FF00000003FFFFFF800003FFFFFF8
+00003FFFFFF800003FFFFFF800003FFFFFF800002A487DC724>I<00000000001F8000007FF000
+FFE00007FFFF03FFF0001FFFFFC7FFF0007FFFFFFFC7F800FFE03FFE0FF801FF800FFC0FF803FF
+0007FE0FF807FE0003FF07F007FE0003FF07F00FFC0001FF81C00FFC0001FF80000FFC0001FF80
+001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC00
+01FFC0000FFC0001FF80000FFC0001FF80000FFC0001FF800007FE0003FF000007FE0003FF0000
+03FF0007FE000001FF800FFC000000FFE03FF8000001FFFFFFF0000001DFFFFFC0000003C7FFFF
+00000003C07FF000000007C0000000000007C0000000000007C0000000000007C0000000000007
+E0000000000007F0000000000007F8000000000007FFFFFFF0000007FFFFFFFF000003FFFFFFFF
+E00003FFFFFFFFF80001FFFFFFFFFE0001FFFFFFFFFF0000FFFFFFFFFF80007FFFFFFFFF8003FF
+FFFFFFFFC00FFFFFFFFFFFC01FF800001FFFE03FE0000001FFE07FC00000007FF07FC00000003F
+F0FF800000001FF0FF800000001FF0FF800000001FF0FF800000001FF0FF800000001FF07FC000
+00003FE07FC00000003FE03FE00000007FC03FF0000000FFC01FFC000003FF800FFF00000FFF00
+03FFF000FFFC0000FFFFFFFFF000003FFFFFFFC0000007FFFFFE000000003FFFC0000035447DAE
+3B>I<007FC00000000000FFFFC00000000000FFFFC00000000000FFFFC00000000000FFFFC000
+00000000FFFFC0000000000003FFC0000000000001FFC0000000000001FFC0000000000001FFC0
+000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FF
+C0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001
+FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000000000
+01FFC0000000000001FFC0000000000001FFC001FFC0000001FFC00FFFF8000001FFC03FFFFE00
+0001FFC0FFFFFF000001FFC1FC07FF800001FFC3E003FFC00001FFC7C001FFC00001FFCF0001FF
+E00001FFDE0000FFE00001FFDC0000FFE00001FFFC0000FFF00001FFF80000FFF00001FFF00000
+FFF00001FFF00000FFF00001FFF00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE000
+00FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0
+0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FF
+E00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001
+FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF000
+01FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF000FFFFFFC07FFFFF
+E0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE03B487CC742>
+I<00FC0001FF0003FF8007FFC00FFFC01FFFE01FFFE01FFFE01FFFE01FFFE01FFFE00FFFC007FF
+C003FF8001FF0000FC000000000000000000000000000000000000000000000000000000000000
+00000000007FC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC003FFC001FFC001FFC001FFC001FFC001FF
+C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
+C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
+C001FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18497CC820>I<007FC000000000
+FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC00000000003FFC000
+00000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001
+FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000
+000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF
+C00000000001FFC00000000001FFC00000000001FFC0007FFFF801FFC0007FFFF801FFC0007FFF
+F801FFC0007FFFF801FFC0007FFFF801FFC0000FFE0001FFC00007F00001FFC0000FE00001FFC0
+003FC00001FFC0007F800001FFC000FE000001FFC001FC000001FFC007F8000001FFC00FF00000
+01FFC01FC0000001FFC03F80000001FFC0FF00000001FFC1FE00000001FFC3FF00000001FFCFFF
+80000001FFDFFFC0000001FFFFFFC0000001FFFFFFE0000001FFFFFFF0000001FFFCFFF8000001
+FFF87FFC000001FFE03FFC000001FFC01FFE000001FFC01FFF000001FFC00FFF800001FFC007FF
+C00001FFC003FFC00001FFC001FFE00001FFC001FFF00001FFC000FFF80001FFC0007FFC0001FF
+C0003FFC0001FFC0001FFE0001FFC0000FFF0001FFC0000FFF8001FFC0000FFFC0FFFFFF807FFF
+FFFFFFFF807FFFFFFFFFFF807FFFFFFFFFFF807FFFFFFFFFFF807FFFFF38487CC73F>107
+D<007FC000FFFFC000FFFFC000FFFFC000FFFFC000FFFFC00003FFC00001FFC00001FFC00001FF
+C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001
+FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
+01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
+0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF
+C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001
+FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000FFFFFF80
+FFFFFF80FFFFFF80FFFFFF80FFFFFF8019487CC720>I<007FC001FFC00000FFE00000FFFFC00F
+FFF80007FFFC0000FFFFC03FFFFE001FFFFF0000FFFFC0FFFFFF007FFFFF8000FFFFC1FC07FF80
+FE03FFC000FFFFC3E003FFC1F001FFE00003FFC7C001FFC3E000FFE00001FFCF0001FFE78000FF
+F00001FFDE0000FFEF00007FF00001FFDC0000FFEE00007FF00001FFFC0000FFFE00007FF80001
+FFF80000FFFC00007FF80001FFF00000FFF800007FF80001FFF00000FFF800007FF80001FFF000
+00FFF800007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF0
+00007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007F
+F80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001
+FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE000
+00FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF0
+00007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007F
+F80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001
+FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE000
+00FFF000007FF800FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFF
+E03FFFFFF0FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF05C2E7CAD65>I<007FC0
+01FFC00000FFFFC00FFFF80000FFFFC03FFFFE0000FFFFC0FFFFFF0000FFFFC1FC07FF8000FFFF
+C3E003FFC00003FFC7C001FFC00001FFCF0001FFE00001FFDE0000FFE00001FFDC0000FFE00001
+FFFC0000FFF00001FFF80000FFF00001FFF00000FFF00001FFF00000FFF00001FFF00000FFF000
+01FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0
+0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF
+F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000
+FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE000
+00FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0
+0000FFF00001FFE00000FFF000FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFF
+FFC07FFFFFE0FFFFFFC07FFFFFE03B2E7CAD42>I<00000FFF0000000000FFFFF000000007FFFF
+FE0000001FFFFFFF8000003FFC03FFC00000FFE0007FF00001FF80001FF80003FF00000FFC0007
+FE000007FE000FFE000007FF000FFC000003FF001FFC000003FF803FFC000003FFC03FF8000001
+FFC03FF8000001FFC07FF8000001FFE07FF8000001FFE07FF8000001FFE0FFF8000001FFF0FFF8
+000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FF
+F0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF07FF8000001FFE07FF8000001FFE07FF800
+0001FFE07FF8000001FFE03FFC000003FFC03FFC000003FFC01FFC000003FF801FFE000007FF80
+0FFE000007FF0007FF00000FFE0003FF80001FFC0001FFC0003FF80000FFE0007FF000007FFC03
+FFE000001FFFFFFF80000007FFFFFE00000000FFFFF0000000000FFF000000342E7DAD3B>I<00
+7FC00FFC000000FFFFC07FFFC00000FFFFC3FFFFF00000FFFFCFFFFFFC0000FFFFDFF01FFF0000
+FFFFFF8007FF800003FFFE0001FFC00001FFF80000FFE00001FFF00000FFF00001FFE000007FF8
+0001FFE000003FFC0001FFE000003FFC0001FFE000003FFE0001FFE000001FFE0001FFE000001F
+FF0001FFE000001FFF0001FFE000001FFF0001FFE000000FFF0001FFE000000FFF8001FFE00000
+0FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000
+000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF0001FFE0
+00001FFF0001FFE000001FFF0001FFE000001FFE0001FFE000001FFE0001FFE000003FFC0001FF
+E000003FFC0001FFE000007FF80001FFF000007FF80001FFF80000FFF00001FFFC0001FFE00001
+FFFE0003FFC00001FFFF0007FF800001FFFFE03FFE000001FFEFFFFFFC000001FFE3FFFFF00000
+01FFE0FFFF80000001FFE01FF800000001FFE0000000000001FFE0000000000001FFE000000000
+0001FFE0000000000001FFE0000000000001FFE0000000000001FFE0000000000001FFE0000000
+000001FFE0000000000001FFE0000000000001FFE0000000000001FFE0000000000001FFE00000
+00000001FFE0000000000001FFE00000000000FFFFFFC000000000FFFFFFC000000000FFFFFFC0
+00000000FFFFFFC000000000FFFFFFC00000000039427CAD42>I<00FF803F8000FFFF80FFF000
+FFFF83FFFC00FFFF87FFFE00FFFF8FC3FF00FFFF8F07FF0003FF9E0FFF8001FFBC0FFF8001FFB8
+0FFF8001FFF80FFF8001FFF00FFF8001FFF007FF0001FFF007FF0001FFE003FE0001FFE000F800
+01FFE000000001FFE000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0
+00000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0000000
+01FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0
+00000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0000000
+FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFFFFE00000292E7CAD31>114
+D<000FFF00E0007FFFF3E001FFFFFFE007FFFFFFE00FF800FFE01FC0001FE03F80000FE03F0000
+07E07F000003E07F000003E0FF000003E0FF000003E0FF800003E0FFC0000000FFF0000000FFFE
+000000FFFFF800007FFFFFC0007FFFFFF0003FFFFFFC001FFFFFFF000FFFFFFF8007FFFFFFC003
+FFFFFFE000FFFFFFF0003FFFFFF00003FFFFF800001FFFF8000000FFFC0000001FFC7800000FFC
+F8000007FCF8000003FCFC000003FCFC000003FCFE000003F8FE000003F8FF000003F8FF800007
+F0FFC0000FF0FFF0001FE0FFFC00FFC0FFFFFFFF80FC7FFFFE00F81FFFF800E003FF8000262E7C
+AD2F>I<0001F000000001F000000001F000000001F000000001F000000001F000000003F00000
+0003F000000003F000000007F000000007F000000007F00000000FF00000000FF00000001FF000
+00003FF00000003FF00000007FF0000001FFF0000003FFF000000FFFFFFFC0FFFFFFFFC0FFFFFF
+FFC0FFFFFFFFC0FFFFFFFFC000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FF
+F0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000
+FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF00000
+00FFF0000000FFF0000000FFF001F000FFF001F000FFF001F000FFF001F000FFF001F000FFF001
+F000FFF001F000FFF001F000FFF001F0007FF001E0007FF803E0003FF803E0003FFC07C0001FFE
+0F80000FFFFF800007FFFE000001FFFC0000001FF00024427EC12E>I<007FE000003FF000FFFF
+E0007FFFF000FFFFE0007FFFF000FFFFE0007FFFF000FFFFE0007FFFF000FFFFE0007FFFF00003
+FFE00001FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF000
+01FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0
+0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF
+F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000
+FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE000
+00FFF00001FFE00000FFF00001FFE00000FFF00001FFE00001FFF00001FFE00001FFF00001FFE0
+0001FFF00001FFE00003FFF00000FFE00007FFF00000FFE0000F7FF000007FE0001F7FF000007F
+F0003E7FF800003FFC00FC7FFFE0001FFFFFF87FFFE00007FFFFE07FFFE00001FFFF807FFFE000
+003FFE007FFFE03B2E7CAD42>I<FFFFFF07FFFFE007FFFEFFFFFF07FFFFE007FFFEFFFFFF07FF
+FFE007FFFEFFFFFF07FFFFE007FFFEFFFFFF07FFFFE007FFFE03FFC0001FFC00003FC003FFE000
+0FFC00001F8001FFE0000FFC00001F0001FFE0000FFE00001F0001FFF00007FE00003F0000FFF0
+000FFF00003E0000FFF8000FFF00007E00007FF8000FFF00007C00007FF8001FFF80007C00003F
+FC001FFF8000F800003FFC003FFFC000F800003FFE003EFFC001F800001FFE003EFFC001F00000
+1FFE007EFFE003F000000FFF007C7FE003E000000FFF00FC7FF003E000000FFF80F83FF007E000
+0007FF80F83FF007C0000007FF81F83FF80FC0000003FFC1F01FF80F80000003FFC3F01FFC0F80
+000003FFE3E00FFC1F80000001FFE3E00FFC1F00000001FFE7E00FFE3F00000000FFF7C007FE3E
+00000000FFFFC007FF3E00000000FFFF8003FF7E000000007FFF8003FF7C000000007FFF8003FF
+FC000000003FFF0001FFF8000000003FFF0001FFF8000000003FFE0000FFF8000000001FFE0000
+FFF0000000001FFE0000FFF0000000000FFC00007FE0000000000FFC00007FE0000000000FF800
+003FE00000000007F800003FC00000000007F800003FC00000000003F000001F800000000001E0
+00000F0000004F2E7DAD56>119 D<7FFFFF801FFFFF007FFFFF801FFFFF007FFFFF801FFFFF00
+7FFFFF801FFFFF007FFFFF801FFFFF00007FF80001FF0000007FFC0001FC0000003FFE0003F800
+00001FFF0007F00000000FFF0007E000000007FF800FC000000003FFC01F8000000003FFE03F80
+00000001FFF07F0000000000FFF8FE00000000007FF9FC00000000003FFFF800000000003FFFF0
+00000000001FFFE000000000000FFFC0000000000007FFC0000000000003FFC0000000000001FF
+E0000000000001FFF0000000000001FFF8000000000003FFFC000000000003FFFE000000000007
+FFFE00000000000FEFFF00000000001FCFFF80000000003F87FFC0000000007F03FFE000000000
+FE01FFE000000001FC00FFF000000001F8007FF800000003F0007FFC00000007F0003FFE000000
+0FE0001FFF0000001FC0000FFF0000003F800007FF800000FF800007FFC000FFFFF8003FFFFFC0
+FFFFF8003FFFFFC0FFFFF8003FFFFFC0FFFFF8003FFFFFC0FFFFF8003FFFFFC03A2E7EAD3F>I
+E /Ff 20 117 df<0F80007C003FE001FF007FF003FF807FF003FF80FFF807FFC0FFF807FFC0FF
+FC07FFE0FFFC07FFE0FFFC07FFE07FFC03FFE07FFC03FFE03FFC01FFE00F9C007CE0001C0000E0
+001C0000E0003C0001E000380001C000380001C000780003C0007000038000F000078000F00007
+8001E0000F0001C0000E0003C0001E000780003C000F000078001E0000F0003C0001E000180000
+C000231E7DBB34>34 D<0F803FE07FF07FF0FFF8FFF8FFF8FFF8FFF87FF07FF03FE00F800D0D79
+8C1B>46 D<0001FF8000000FFFF000003FFFFC0000FF81FF0001FE007F8003FC003FC007F8001F
+E00FF8001FF00FF0000FF01FF0000FF81FF0000FF83FF0000FFC3FE00007FC3FE00007FC7FE000
+07FE7FE00007FE7FE00007FE7FE00007FE7FE00007FEFFE00007FFFFE00007FFFFE00007FFFFE0
+0007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFF
+E00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FF
+7FE00007FE7FE00007FE7FE00007FE7FE00007FE7FE00007FE3FE00007FC3FF0000FFC3FF0000F
+FC1FF0000FF81FF0000FF80FF0000FF00FF8001FF007F8001FE003FC003FC001FE007F8000FF81
+FF00003FFFFC00000FFFF0000001FF800028397CB731>48 D<00001E000000003E00000000FE00
+000003FE0000003FFE0000FFFFFE0000FFFFFE0000FFFFFE0000FFCFFE0000000FFE0000000FFE
+0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000F
+FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000
+0FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000
+000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00
+00000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE
+0000000FFE0000000FFE00007FFFFFFFC07FFFFFFFC07FFFFFFFC07FFFFFFFC0223879B731>I<
+0007FE0000007FFFE00001FFFFF80003FFFFFE000FF01FFF001FC007FFC03F0003FFE07E0001FF
+E07FC000FFF07FE000FFF8FFF0007FF8FFF0007FF8FFF0003FFCFFF0003FFCFFF0003FFCFFF000
+3FFC7FE0003FFC7FE0003FFC1F80003FFC0000003FFC0000003FF80000007FF80000007FF80000
+007FF0000000FFE0000000FFE0000001FFC0000003FF80000003FF00000007FE0000000FF80000
+001FF00000001FE00000003F800000007F00000000FE00000001FC00000003F0003C0007E0003C
+000FC0003C001F800078003F000078007C00007800F80000F800F00000F801FFFFFFF803FFFFFF
+F007FFFFFFF00FFFFFFFF01FFFFFFFF03FFFFFFFF07FFFFFFFF0FFFFFFFFF0FFFFFFFFE0FFFFFF
+FFE0FFFFFFFFE026387BB731>I<0003FF8000001FFFF000007FFFFE0000FE03FF0003F001FFC0
+07E000FFE007C0007FF00FF0007FF00FFC007FF81FFC007FF81FFE007FF81FFE007FF81FFE007F
+F81FFE007FF81FFE007FF80FFC007FF80FFC007FF003F000FFF0000000FFE0000000FFE0000001
+FFC0000001FF80000003FF00000007FC0000001FF800000FFFC000000FFF8000000FFFF8000000
+03FE00000001FF80000000FFE00000007FF00000003FF80000003FFC0000003FFE0000001FFE00
+00001FFE0200001FFF1FC0001FFF3FE0001FFF7FF0001FFFFFF8001FFFFFF8001FFFFFF8001FFF
+FFF8001FFFFFF8001FFEFFF8003FFEFFF0003FFC7FE0003FFC7FC0007FF83F80007FF01FE000FF
+E00FFC03FFC003FFFFFF8001FFFFFE00003FFFF0000007FF800028397CB731>I<00000007C000
+0000000FC0000000000FC0000000001FC0000000003FC0000000007FC000000000FFC000000000
+FFC000000001FFC000000003FFC000000007FFC00000000FFFC00000000FFFC00000001EFFC000
+00003CFFC00000007CFFC0000000F8FFC0000000F0FFC0000001E0FFC0000003C0FFC0000007C0
+FFC000000F80FFC000000F00FFC000001E00FFC000003C00FFC000007C00FFC00000F800FFC000
+00F000FFC00001E000FFC00003C000FFC00007C000FFC0000F8000FFC0000F0000FFC0001E0000
+FFC0003C0000FFC0007C0000FFC000F80000FFC000FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0
+FFFFFFFFFFC0000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001
+FFC000000001FFC000000001FFC000000001FFC000000001FFC0000007FFFFFFC00007FFFFFFC0
+0007FFFFFFC00007FFFFFFC02A377DB631>I<0C000000C00F800007C00FF8007FC00FFFFFFF80
+0FFFFFFF800FFFFFFF000FFFFFFE000FFFFFFC000FFFFFF0000FFFFFE0000FFFFF80000FFFFE00
+000FFFF800000F800000000F800000000F800000000F800000000F800000000F800000000F8000
+00000F800000000F81FF00000F8FFFE0000FBFFFF8000FFE03FE000FF001FF800FC000FFC00F80
+007FC00F00007FE00700007FF00000003FF00000003FF80000003FF80000003FF80000003FFC00
+00003FFC0600003FFC3F80003FFC7FE0003FFCFFE0003FFCFFF0003FFCFFF0003FFCFFF0003FFC
+FFF0003FF8FFE0003FF8FFE0003FF87FC0007FF07F00007FF07C00007FE03E0000FFE01F0001FF
+C01FC003FF800FF00FFE0003FFFFFC0001FFFFF000007FFFC000000FFC000026397BB731>I<00
+000FF80000007FFF000003FFFF80000FFC07C0001FE003E0007FC001F000FF800FF001FF001FF8
+03FE003FF807FE003FF807FC003FF80FFC003FF81FF8003FF81FF8003FF81FF8001FF03FF8000F
+E03FF80000007FF00000007FF00000007FF00000007FF0000000FFF07FF000FFF1FFFE00FFF3F7
+FF00FFF7807FC0FFF7003FE0FFFE001FF0FFFC001FF8FFFC001FFCFFFC000FFCFFF8000FFEFFF8
+000FFEFFF8000FFEFFF0000FFFFFF0000FFFFFF0000FFFFFF0000FFF7FF0000FFF7FF0000FFF7F
+F0000FFF7FF0000FFF7FF0000FFF3FF0000FFF3FF0000FFF3FF0000FFE1FF8000FFE1FF8000FFE
+0FF8000FFC0FF8001FFC07FC001FF803FE003FF003FF007FE001FF80FFC0007FFFFF80003FFFFE
+000007FFF8000000FFC00028397CB731>I<1E00000000001F00000000001FF0000000001FFFFF
+FFFFC01FFFFFFFFFC01FFFFFFFFFC03FFFFFFFFFC03FFFFFFFFF803FFFFFFFFF003FFFFFFFFE00
+3FFFFFFFFC003FFFFFFFF8003FFFFFFFF0007FFFFFFFF0007C000007E0007C00000FC000780000
+1F80007800001F00007800003E0000F000007E0000F00000FC0000F00001F80000000003F00000
+000003E00000000007E0000000000FC0000000000F80000000001F80000000003F80000000003F
+00000000007F00000000007F0000000000FF0000000000FE0000000001FE0000000001FE000000
+0003FE0000000003FE0000000003FE0000000007FC0000000007FC0000000007FC000000000FFC
+000000000FFC000000000FFC000000000FFC000000000FFC000000001FFC000000001FFC000000
+001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC
+000000000FF80000000007F00000000003E00000002A3B7BB931>I<0001FF8000000FFFF80000
+3FFFFE0000FF00FF8001F8003FC003F0001FE007E0000FE007E00007F00FC00007F00FC00007F8
+0FC00003F81FC00003F81FE00003F81FE00003F81FF00003F81FF80003F81FFE0007F81FFF0007
+F01FFFC00FF00FFFF00FE00FFFFC1FC00FFFFF3F8007FFFFFF0003FFFFFC0003FFFFF80001FFFF
+FE00007FFFFF00003FFFFFC0003FFFFFE000FFFFFFF003FDFFFFF807F07FFFFC0FE01FFFFC1FC0
+07FFFE3FC001FFFE3F8000FFFE7F00003FFF7F00000FFFFF000007FFFE000001FFFE000001FFFE
+000000FFFE0000007FFE0000007FFE0000007FFF0000007E7F0000007E7F000000FC7F800000FC
+3FC00001F81FE00003F81FF80007F007FE007FC003FFFFFF8000FFFFFE00003FFFF8000003FF80
+0028397CB731>I<0001FF8000001FFFF000007FFFFC0000FF81FF0003FE00FF8007FC007FC00F
+F8003FE01FF8001FE03FF8001FF03FF0001FF87FF0000FF87FF0000FFC7FF0000FFCFFF0000FFC
+FFF0000FFEFFF0000FFEFFF0000FFEFFF0000FFEFFF0000FFEFFF0000FFFFFF0000FFFFFF0000F
+FFFFF0000FFFFFF0000FFF7FF0001FFF7FF0001FFF7FF0001FFF3FF0003FFF1FF8003FFF1FF800
+3FFF0FF8007FFF07FC00EFFF03FE01EFFF00FFEFCFFF007FFF8FFF000FFE0FFE0000000FFE0000
+000FFE0000000FFE0000000FFE0000001FFC07F0001FFC0FF8001FFC1FFC001FF81FFC001FF81F
+FC003FF01FFC003FE01FFC007FE01FFC007FC01FF800FF800FF001FF000FC003FE0007F01FFC00
+03FFFFF00001FFFFC000007FFF0000000FF8000028397CB731>I<0000001FFF000070000001FF
+FFE000F000000FFFFFFC01F000007FFFFFFF03F00001FFFE007F87F00007FFE0000FEFF0000FFF
+000003FFF0003FFE000001FFF0007FF8000000FFF000FFF00000007FF001FFE00000003FF003FF
+C00000001FF003FF800000001FF007FF800000000FF00FFF0000000007F00FFF0000000007F01F
+FE0000000007F01FFE0000000003F03FFC0000000003F03FFC0000000003F07FFC0000000001F0
+7FFC0000000001F07FFC0000000001F07FF8000000000000FFF8000000000000FFF80000000000
+00FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF800000000
+0000FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000
+000000FFF80000000000007FF80000000000007FFC0000000000007FFC0000000000F07FFC0000
+000000F03FFC0000000000F03FFC0000000000F01FFE0000000000F01FFE0000000001F00FFF00
+00000001E00FFF0000000003E007FF8000000003E003FF8000000007C003FFC000000007C001FF
+E00000000F8000FFF00000001F00007FF80000003E00003FFE0000007C00000FFF000001F80000
+07FFE00007F0000001FFFE003FC00000007FFFFFFF800000000FFFFFFC0000000001FFFFF00000
+0000001FFF0000003C3D7BBB47>67 D<006000030000F000078001E0000F0003C0001E00078000
+3C000F000078000E000070001E0000F0003C0001E0003C0001E000380001C000780003C0007000
+0380007000038000F000078000E000070000E000070000E7C0073E00FFF007FF80FFF807FFC0FF
+F807FFC0FFFC07FFE0FFFC07FFE0FFFC07FFE07FFC03FFE07FFC03FFE03FF801FFC03FF801FFC0
+1FF000FF8007C0003E00231E73BB34>92 D<001FFF00000001FFFFF0000007FFFFFC00000FF807
+FF00001FF801FF80001FFC00FFC0001FFC007FE0001FFC007FE0001FFC007FF0001FFC003FF000
+0FF8003FF00007F0003FF00001C0003FF0000000003FF0000000003FF0000000003FF0000000FF
+FFF000000FFFFFF000007FF83FF00003FF803FF00007FE003FF0001FFC003FF0003FF8003FF000
+7FF0003FF0007FE0003FF000FFE0003FF000FFC0003FF000FFC0003FF000FFC0003FF000FFC000
+7FF000FFC0007FF000FFE000FFF0007FF001DFF0003FF803DFF8001FFC0F8FFFF00FFFFE0FFFF0
+01FFFC07FFF0003FE000FFF02C267DA530>97 D<0001FFC000000FFFF800003FFFFE0000FF80FF
+0001FE003F8007FC001FC00FF8000FE00FF8000FF01FF00007F03FF00007F83FF00007F87FE000
+07F87FE00003FC7FE00003FC7FE00003FCFFE00003FCFFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFE0
+000000FFE0000000FFE0000000FFE00000007FE00000007FE00000007FE00000003FE00000003F
+F000003C1FF000003C1FF000003C0FF800007807FC0000F803FE0001F001FF0007E000FFC03FC0
+003FFFFF000007FFFC000000FFE00026267DA52D>101 D<00FF00000000FFFF00000000FFFF00
+000000FFFF00000000FFFF0000000007FF0000000003FF0000000003FF0000000003FF00000000
+03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00
+00000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000
+03FF007FC00003FF01FFF80003FF07FFFE0003FF1F03FF0003FF3C01FF0003FF7801FF8003FF70
+00FF8003FFE000FFC003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FFC003FF0000FFC0
+03FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00
+00FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0
+03FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00
+00FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF303C7CBB37>
+104 D<00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFFFE03FF00FFFFF001FFC003FFE0007FE0
+03FF80007FF003FF80003FF803FF00001FF803FF00001FFC03FF00000FFC03FF00000FFE03FF00
+000FFE03FF00000FFE03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF
+03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF00000FFE03FF00
+000FFE03FF00000FFE03FF00001FFC03FF00001FFC03FF00001FF803FF80003FF003FFC0007FF0
+03FFE000FFE003FFF001FF8003FFFC07FF0003FF3FFFFC0003FF0FFFF00003FF01FF000003FF00
+00000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000
+03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000FFFFFC
+000000FFFFFC000000FFFFFC000000FFFFFC00000030377DA537>112 D<00FE03F000FFFE0FFE
+00FFFE3FFF80FFFE3C7FC0FFFE707FC007FEF0FFE003FEE0FFE003FEC0FFE003FFC0FFE003FF80
+FFE003FF807FC003FF803F8003FF800E0003FF00000003FF00000003FF00000003FF00000003FF
+00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003
+FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000
+03FF000000FFFFFE0000FFFFFE0000FFFFFE0000FFFFFE000023267DA529>114
+D<0007800000078000000780000007800000078000000F8000000F8000000F8000000F8000001F
+8000001F8000003F8000003F8000007F800000FF800001FF800007FF80001FFFFFF0FFFFFFF0FF
+FFFFF0FFFFFFF001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF8000
+01FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF80
+0001FF800001FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C00FF
+807800FFC078007FC0F8007FE1F0001FFFE00007FFC00001FF001E377EB626>116
+D E /Fg 60 122 df<78FCFCFCFCFCFC7878787878787878303030300000000078FCFCFCFC7806
+1D7C9C0F>33 D<781E00FC3F00FC3F00FE3F80FE3F807A1E800200800200800401000401000802
+00080200300C00401000110E7E9C19>I<78FCFCFEFE7A0202040408083040070E7D9C0D>39
+D<78FCFCFEFE7A0202040408083040070E7D850D>44 D<78FCFCFCFC7806067D850D>46
+D<03F8000F1E001C07003C07803803807803C07803C07803C0F803E0F803E0F803E0F803E0F803
+E0F803E0F803E0F803E0F803E0F803E0F803E0F803E07803C07803C03803803C07801C07000F1E
+0003F800131B7E9A18>48 D<00600001E0000FE000FFE000F3E00003E00003E00003E00003E000
+03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
+03E00003E00003E0007FFF807FFF80111B7D9A18>I<07F8001FFE00383F80780FC0FC07C0FC07
+E0FC03E0FC03E07803E00007E00007C00007C0000F80001F00001E0000380000700000E0000180
+600300600600600800E01FFFC03FFFC07FFFC0FFFFC0FFFFC0131B7E9A18>I<03F8001FFE003C
+1F003C0F807C07C07E07C07C07C03807C0000F80000F80001E00003C0003F800001E00000F8000
+07C00007C00007E03007E07807E0FC07E0FC07E0FC07C0780F80781F001FFE0007F800131B7E9A
+18>I<000180000380000780000F80001F80003F80006F8000CF80008F80018F80030F80060F80
+0C0F80180F80300F80600F80C00F80FFFFF8FFFFF8000F80000F80000F80000F80000F80000F80
+01FFF801FFF8151B7F9A18>I<1801801FFF001FFE001FFC001FF8001FC0001800001800001800
+0018000019F8001E0E00180F801007800007C00007E00007E00007E07807E0F807E0F807E0F807
+C0F007C0600F80381F001FFE0007F000131B7E9A18>I<007E0003FF000781800F03C01E07C03C
+07C03C0380780000780000F80000F8F800FB0E00FA0780FC0380FC03C0F803E0F803E0F803E0F8
+03E07803E07803E07803C03C03C03C07801E0F0007FE0003F800131B7E9A18>I<6000007FFFE0
+7FFFE07FFFC07FFF807FFF80E00300C00600C00C00C0180000300000300000600000E00000E000
+01E00001C00003C00003C00003C00003C00007C00007C00007C00007C00007C00007C000038000
+131C7D9B18>I<03F8000FFF001C07803003803001C07001C07801C07E01C07F83807FC3003FF6
+001FFC000FFE0007FF801DFF80387FC0781FE0F007E0F003E0F001E0F001E0F001E07801C07803
+803E07801FFE0003F800131B7E9A18>I<03F8000FFE001E0F003C07807807807803C0F803C0F8
+03C0F803E0F803E0F803E0F803E07807E03807E03C0BE00E1BE003E3E00003E00003C00003C038
+07C07C07807C0700780F00383C001FF8000FE000131B7E9A18>I<0FF0303C601EF01FF81FF81F
+701F003E003C007000E001C00180018003000300030003000300000000000000000007800FC00F
+C00FC00FC00780101D7D9C17>63 D<00038000000380000007C0000007C0000007C000000FE000
+000FE000001FF000001BF000001BF0000031F8000031F8000061FC000060FC0000E0FE0000C07E
+0000C07E0001803F0001FFFF0003FFFF8003001F8003001F8006000FC006000FC00E000FE00C00
+07E0FFC07FFEFFC07FFE1F1C7E9B24>65 D<FFFFF800FFFFFF000FC01F800FC00FC00FC007C00F
+C007E00FC007E00FC007E00FC007E00FC007E00FC007C00FC00F800FC03F000FFFFE000FC00F80
+0FC007C00FC007E00FC003E00FC003F00FC003F00FC003F00FC003F00FC003F00FC007E00FC007
+E00FC01FC0FFFFFF00FFFFFC001C1C7E9B22>I<001FE02000FFF8E003F80FE007C003E00F8001
+E01F0000E03E0000E03E0000607E0000607C000060FC000000FC000000FC000000FC000000FC00
+0000FC000000FC000000FC0000007C0000607E0000603E0000603E0000C01F0000C00F80018007
+C0030003F80E0000FFFC00001FE0001B1C7D9B22>I<FFFFF800FFFFFF000FC01FC00FC007E00F
+C001F00FC001F80FC000F80FC000FC0FC0007C0FC0007C0FC0007E0FC0007E0FC0007E0FC0007E
+0FC0007E0FC0007E0FC0007E0FC0007E0FC0007C0FC0007C0FC0007C0FC000F80FC000F80FC001
+F00FC007E00FC01FC0FFFFFF00FFFFF8001F1C7E9B25>I<FFFFFF00FFFFFF000FC01F000FC007
+000FC003000FC003800FC003800FC181800FC181800FC181800FC180000FC380000FFF80000FFF
+80000FC380000FC180000FC180000FC180600FC180600FC000E00FC000C00FC000C00FC001C00F
+C001C00FC003C00FC00F80FFFFFF80FFFFFF801B1C7E9B1F>I<FFFFFF00FFFFFF000FC01F000F
+C007000FC003000FC003800FC003800FC001800FC181800FC181800FC180000FC180000FC38000
+0FFF80000FFF80000FC380000FC180000FC180000FC180000FC180000FC000000FC000000FC000
+000FC000000FC000000FC00000FFFF0000FFFF0000191C7E9B1E>I<000FF008007FFE3801FC07
+F807E001F80F8000781F0000783F0000383E0000387E0000187C000018FC000000FC000000FC00
+0000FC000000FC000000FC000000FC007FFFFC007FFF7C0001F87E0001F83E0001F83F0001F81F
+0001F80F8001F807E001F801FC07F8007FFE78000FF818201C7D9B26>I<FFFFFFFF07E007E007
+E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E0
+07E007E0FFFFFFFF101C7F9B12>73 D<FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0
+000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0030FC0030FC0030FC0
+070FC0070FC0060FC00E0FC01E0FC07EFFFFFEFFFFFE181C7E9B1D>76 D<FFC00003FFFFE00007
+FF0FE00007F00DF0000DF00DF0000DF00DF0000DF00CF80019F00CF80019F00C7C0031F00C7C00
+31F00C3E0061F00C3E0061F00C1F00C1F00C1F00C1F00C1F00C1F00C0F8181F00C0F8181F00C07
+C301F00C07C301F00C03E601F00C03E601F00C01FC01F00C01FC01F00C01FC01F00C00F801F00C
+00F801F0FFC0701FFFFFC0701FFF281C7E9B2D>I<FFE003FFFFE003FF0FF000300FF800300DFC
+00300CFE00300C7E00300C3F00300C1F80300C1FC0300C0FE0300C07F0300C03F0300C01F8300C
+01FC300C00FE300C007F300C003F300C001FB00C001FF00C000FF00C0007F00C0003F00C0001F0
+0C0000F00C0000F0FFC00070FFC00030201C7E9B25>I<003FE00001F07C0003C01E000F800F80
+1F0007C01E0003C03E0003E07E0003F07C0001F07C0001F0FC0001F8FC0001F8FC0001F8FC0001
+F8FC0001F8FC0001F8FC0001F8FC0001F87C0001F07E0003F07E0003F03E0003E03F0007E01F00
+07C00F800F8003C01E0001F07C00003FE0001D1C7D9B24>I<FFFFF800FFFFFE000FC03F800FC0
+0F800FC007C00FC007E00FC007E00FC007E00FC007E00FC007E00FC007C00FC007C00FC00F800F
+C03F000FFFFC000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000
+0FC000000FC000000FC00000FFFC0000FFFC00001B1C7E9B21>I<FFFFF00000FFFFFE00000FC0
+3F00000FC00F80000FC007C0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000F
+C007C0000FC00F80000FC03E00000FFFF000000FC07C00000FC03E00000FC03F00000FC01F8000
+0FC01F80000FC01F80000FC01F80000FC01F80000FC01F80000FC01F81800FC01F81800FC00FC1
+80FFFC07C300FFFC01FE00211C7E9B24>82 D<07F8201FFEE03C07E07801E07000E0F000E0F000
+60F00060F80000FE0000FFE0007FFE003FFF003FFF800FFFC007FFE0007FE00003F00001F00000
+F0C000F0C000F0C000E0E000E0F001C0FC03C0EFFF0083FC00141C7D9B1B>I<7FFFFFE07FFFFF
+E0781F81E0701F80E0601F8060E01F8070C01F8030C01F8030C01F8030C01F8030001F8000001F
+8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000
+1F8000001F8000001F8000001F8000001F800007FFFE0007FFFE001C1C7E9B21>I<FFFC7FFE0F
+FCFFFC7FFE0FFC0FC007E000C00FC007F000C00FE003F001C007E003F0018007E007F8018003F0
+07F8030003F007F8030003F80CFC070001F80CFC060001F81CFE060001FC187E0E0000FC187E0C
+0000FC387F0C00007E303F1800007E303F1800007F601FB800003F601FB000003FE01FF000003F
+C00FF000001FC00FE000001FC00FE000000F8007C000000F8007C000000F0003C0000007000380
+000007000380002E1C7F9B31>87 D<7FFE1FFE007FFE1FFE0007F001800003F803800001FC0700
+0000FC06000000FE0C0000007F1C0000003F380000003FB00000001FE00000000FE00000000FE0
+00000007F000000003F800000007F80000000FFC0000000CFE000000187E000000387F00000070
+3F800000601F800000C01FC00001C00FE000018007F000030007F000FFF03FFF80FFF03FFF8021
+1C7F9B24>I<040100180600200800200800401000401000802000802000BC2F00FE3F80FE3F80
+7E1F807E1F803C0F00110E7B9C19>92 D<0FF8001C1E003E0F803E07803E07C01C07C00007C000
+7FC007E7C01F07C03C07C07C07C0F807C0F807C0F807C0780BC03E13F80FE1F815127F9117>97
+D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F3F801FE1
+E01F80701F00781F003C1F003C1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F003C1F00
+781F80701EC1E01C3F00171D7F9C1B>I<03FC000E0E001C1F003C1F00781F00780E00F80000F8
+0000F80000F80000F80000F800007800007801803C01801C03000E0E0003F80011127E9115>I<
+000FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F001F9F00F07F0
+1C03F03C01F07801F07801F0F801F0F801F0F801F0F801F0F801F0F801F07801F07801F03C01F0
+1C03F00F0FFE03F9FE171D7E9C1B>I<01FC000F07001C03803C01C07801C07801E0F801E0F801
+E0FFFFE0F80000F80000F800007800007C00603C00601E00C00F038001FC0013127F9116>I<00
+7F0001E38003C7C00787C00F87C00F83800F80000F80000F80000F80000F8000FFF800FFF8000F
+80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F
+80007FF8007FF800121D809C0F>I<03F8F00E0F381E0F381C07303C07803C07803C07803C0780
+1C07001E0F000E0E001BF8001000001800001800001FFF001FFFC00FFFE01FFFF07801F8F00078
+F00078F000787000707800F01E03C007FF00151B7F9118>I<FF0000FF00001F00001F00001F00
+001F00001F00001F00001F00001F00001F00001F0FC01F31E01F40F01F80F81F80F81F00F81F00
+F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF181D7F9C1B
+>I<1E003F003F003F003F001E00000000000000000000000000FF00FF001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D0E>I<007800FC00FC00FC00
+FC007800000000000000000000000003FC03FC007C007C007C007C007C007C007C007C007C007C
+007C007C007C007C007C007C007C007C707CF87CF878F8F070E01F800E26839D0F>I<FF0000FF
+00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0FF81F0FF81F03801F
+07001F0C001F18001F70001FF8001FFC001FBC001F3E001F1F001F0F001F0F801F07C01F03E0FF
+C7FCFFC7FC161D7F9C19>I<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1D7F9C0E>I<FF
+0FC07E00FF31E18F001F40F207801F80FC07C01F80FC07C01F00F807C01F00F807C01F00F807C0
+1F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807
+C0FFE7FF3FF8FFE7FF3FF825127F9128>I<FF0FC0FF31E01F40F01F80F81F80F81F00F81F00F8
+1F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF18127F911B>
+I<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F800F8F800F87800
+F07800F03C01E01E03C00F078001FC0015127F9118>I<FF3F80FFE1E01F80F01F00781F007C1F
+003C1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F007C1F00781F80F01FC1E01F3F001F
+00001F00001F00001F00001F00001F0000FFE000FFE000171A7F911B>I<03F0600F0CE01E07E0
+3C03E07C03E07803E0F803E0F803E0F803E0F803E0F803E0F803E07803E07C03E03C03E01C07E0
+0E0FE003F3E00003E00003E00003E00003E00003E00003E0001FFC001FFC161A7E9119>I<FE3E
+00FE47001E8F801E8F801E8F801F07001F00001F00001F00001F00001F00001F00001F00001F00
+001F00001F0000FFF000FFF00011127F9114>I<1FD830786018E018E018F000FF807FE07FF01F
+F807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<0300030003000300070007000F000F
+003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F08079803F00E1A
+7F9913>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
+00F81F00F81F00F81F01F80F01F80786FF01F8FF18127F911B>I<FFC1FCFFC1FC1F00601F80E0
+0F80C00FC0C007C18007C18003E30003E30001F60001F60001FE0000FC0000FC00007800007800
+00300016127F9119>I<FF8FF8FEFF8FF8FE1F03E0301F03E0301F83E0700F83F0600F86F06007
+C6F0C007CEF8C007EC79C003EC7D8003F83D8001F83F0001F83F0001F01F0000F01E0000E00E00
+00E00E001F127F9122>I<FFC7FCFFC7FC1F81800F838007C70003EE0001FC0001F80000F80000
+7C0000FE0001DF00039F00070F800607C00C03E0FF07FCFF07FC16127F9119>I<FFC1FCFFC1FC
+1F00601F80E00F80C00FC0C007C18007C18003E30003E30001F70001F60000FE0000FC0000FC00
+007800007800003000003000007000706000F86000F8C000F980007300003E0000161A7F9119>
+I E /Fh 31 122 df<0C06001E0F003F1F803F1F801D0E80020100020100020100040200040200
+080400100800201000402000804000110F78A219>34 D<0E1E1E1E1E0202040408081020408007
+0F7D840F>44 D<70F8F8F0E005057A840F>46 D<000F800030C000E06001C07003807003007007
+00700F00700E00701E00701E00701C00F03C00F03C00F03C00F07801E07801E07801E07801E0F0
+03C0F003C0F003C0F00380E00780E00780E00700E00F00E00E00E01C00E01C00E0380060700030
+E0001F000014227AA019>48 D<0001000300030006001E002E03CE001C001C001C001C00380038
+00380038007000700070007000E000E000E000E001C001C001C001C003800380038003800780FF
+FC10217AA019>I<000FC000106000603800801800801C01001C02201E02101E04101E04101E04
+101E08203C08203C0840380840780880F00700E00001C000030000060000180000200000C00001
+00000200000400100800301000202000605F80C063FFC040FF80807F00801E0017227CA019>I<
+000FC000307000C01801001C02001C04000C04401C08201C08201C08201C08403808C038070070
+0000600001C000070000FC000007000003800003800001C00001C00001C00003C06003C0F003C0
+F00380E00780800700800E00801C0040380020F0001F800016227BA019>I<0000180000380000
+380000700000700000700000E00000E00000E00000C00001C00001800003800003000003000006
+00000600000C00000C000018000010000031800061C00043800083800183800303800207000407
+000807003FC700403E00800FF0000E00000E00001C00001C00001C00001C000038000038000038
+00003000152B7EA019>I<00400400703800FFF000FFE000BF8000800001000001000001000001
+0000020000020000023E0002C3000501800601C00401C00001E00001E00001E00001E00001E000
+01E07003C0F003C0F003C0E00780800700800F00800E00401C0040380030E0000F800016227BA0
+19>I<0003E0000C1000380800603800C07801C0780380300700000700000E00001E00001E0000
+1C7C003C86003D03007A03807C03807801C07803C0F803C0F003C0F003C0F003C0E00780E00780
+E00780E00700E00F00E00E00E01C0060180060300030E0000F800015227AA019>I<02780204FC
+0407FC040FFC080F0C181E04701803A03000602000406000C04000808001800003800003000007
+00000600000E00000E00001C00001C00003C0000380000780000780000F00000F00000F00001E0
+0001E00001E00003E00003C00003C000018000172279A019>I<000FC000306000401000801801
+000803000C03000C06001807001807001007003007C06007E0C003F18001FE0000FC0000FE0003
+3F00061F800C07C01803C03001C06001C06000C0C000C0C000C0C00080C00180C00100C00200C0
+06006008003030000FC00016227BA019>I<000FC000386000703000E03001C038038038078038
+0700380F00380F00380F00381E00781E00781E00781E00F81E00F01C00F00E01F00E02F00605E0
+0309E001F1E00003C00003C0000380000700000700600E00F00C00F01800E0300080600041C000
+3F000015227BA019>I<0007FFC000003C0000003C0000003C0000007800000078000000780000
+0078000000F0000000F0000000F0000000F0000001E0000001E0000001E0000001E0000003C000
+0003C0000003C0000003C00000078000000780000007800000078000000F0000000F0000380F00
+00780F0000F81E0000F81E0000F03C0000403800004070000021E000001F8000001A237CA11A>
+74 D<00FF800007FC000F80000F80000F80001780000F80001780001780002F000013C0002F00
+0013C0004F000013C0008F000023C0009E000023C0011E000023C0011E000023C0021E000043C0
+043C000043C0043C000043C0083C000041E0083C000081E01078000081E02078000081E0207800
+0081E04078000101E040F0000101E080F0000101E100F0000101E100F0000200F201E0000200F2
+01E0000200F401E0000200F801E0000400F803C0000400F003C0000400F003C0000C00E003C000
+1E00C007C000FFC0C07FFC002E227DA12C>77 D<0001F020000E0C40001802C0003001C0006001
+C000E0018000C0018001C0018001C0018003C0010003C0010003C0000003C0000003E0000001F8
+000001FF000000FFE000007FF000001FF8000003FC0000007C0000003C0000001E0000001E0000
+001E0020001C0020001C0020001C00200018006000380060003000700060007000C000C8018000
+C607000081FC00001B247DA21B>83 D<FFF001FF1F8000780F0000600F0000600F0000400F0000
+800F0000800F0001000F0003000F0002000F8004000F8004000780080007800800078010000780
+2000078020000780400007804000078080000781000007C1000003C2000003C2000003C4000003
+C8000003C8000003D0000003D0000003E0000003C0000003C00000038000000180000001000000
+202376A124>86 D<010080020100040200080400100800201000201000402000402000804000B8
+5C00FC7E00FC7E00F87C00703800110F73A219>92 D<00F8C00185C00705C00E03800E03801C03
+803C0380380700780700780700780700F00E00F00E00F00E00F00E10F01C20701C20703C20305C
+40308C400F078014157B9419>97 D<03C03F8003800380038007000700070007000E000E000E00
+0E001C001CF81D0C1E0E3C0638073807380F700F700F700F700FE01EE01EE01EE03CE038E03860
+7060E031C01F0010237BA216>I<00F803840E021C023C0238027804F018FFE0F000F000E000E0
+00E000E000E002E0026004701830600F800F157A9416>101 D<00F0000FE00000E00000E00000
+E00001C00001C00001C00001C000038000038000038000038000070000071F0007218007C0C00F
+00E00F00E00E00E00E00E01C01C01C01C01C01C01C01C038038038038038038038070470070870
+0E08700E10700610E006206003C016237DA219>104 D<00C001E001C001C00000000000000000
+00000000000000001C002300430043008700870087000E000E001C001C001C0038003800384070
+8070807080710032001C000B217BA00F>I<1C0F80F8002610C10C004760660600878078070087
+80780700870070070087007007000E00E00E000E00E00E000E00E00E000E00E00E001C01C01C00
+1C01C01C001C01C01C001C01C03820380380384038038070403803807080380380308070070031
+003003001E0023157B9428>109 D<1C0F002631C04740C08780E08780E08700E08700E00E01C0
+0E01C00E01C00E01C01C03801C03801C03801C0704380708380E08380E103806107006203003C0
+16157B941B>I<007E0001C3000381800701C00E01C01C01E03C01E03801E07801E07801E07801
+E0F003C0F003C0F00380F00780700700700E00700C0030180018700007C00013157B9419>I<01
+C1F002621804741C08780C08700E08700E08701E00E01E00E01E00E01E00E01E01C03C01C03C01
+C03C01C07803807003807003C0E003C1C0072380071E000700000700000E00000E00000E00000E
+00001C00001C00001C0000FFC000171F7F9419>I<1C1F002620804741C08783C08703C0870180
+8700000E00000E00000E00000E00001C00001C00001C00001C0000380000380000380000380000
+70000030000012157B9415>114 D<00FC000183000200800401800C03800C03000C00000F0000
+0FF00007FC0003FE00003E00000F00000700700700F00600F00600E004004008002030001FC000
+11157D9414>I<00C001C001C001C001C003800380038003800700FFF8070007000E000E000E00
+0E001C001C001C001C003800380038003810702070207040708031001E000D1F7C9E10>I<1E00
+302300704380704380E08380E08700E08700E00701C00E01C00E01C00E01C01C03801C03801C03
+801C03801C07001C07001C07001C0F000C3E0003CE00000E00000E00001C00601C00F03800F030
+00E0600080C0004380003E0000141F7B9418>121 D E /Fi 18 102 df<701CF83EFC3FFC3F74
+1D0401040104010401080208021004100420084010100F7DA21C>34 D<70F8F8F87005057A8410
+>46 D<00FC000387000E01C01C00E0180060380070380070700038700038700038F0003CF0003C
+F0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003C700038
+7000387800783800703800701C00E01C00E00E01C003870000FC0016227DA01C>48
+D<00C00001C00007C000FFC000F9C00001C00001C00001C00001C00001C00001C00001C00001C0
+0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
+0001C00001C00001C00001C00001C000FFFF80FFFF8011217AA01C>I<03F8000FFE00181F8020
+07C04003C04001E0F801E0FC01F0FC00F0FC00F07800F03001F00001E00001E00003E00003C000
+0780000700000E00001C0000380000700000E00000800001000002001004001008001010003020
+00207FFFE0FFFFE0FFFFE014217CA01C>I<00FC0007FF000E07C01801E01C01E03E01F03E00F0
+3E00F01E01F00C01F00001E00001C00003C0000700000E0001FE000007800001C00000E00000F0
+00007800007C00007C30007C78007CFC007CFC007CFC0078F800F84000F03001E01C07C00FFF80
+01FC0016227DA01C>I<0000C00000C00001C00003C00007C00005C00009C00011C00031C00021
+C00041C00081C00101C00301C00201C00401C00801C01801C01001C02001C04001C0C001C0FFFF
+FFFFFFFF0001C00001C00001C00001C00001C00001C00001C0003FFE003FFE18217EA01C>I<10
+00401E03801FFF001FFE001FFC0017F00010000010000010000010000010000010000011F80016
+06001803001001801001C00001E00000E00000F00000F00000F07000F0F800F0F800F0F800F0F8
+00E0C001E04001C06003C03007801C0F000FFC0003F00014227CA01C>I<001F8000FFE001E070
+0380300700780E00F81C00F83C0070380000780000780000700000F07E00F18380F200C0F400E0
+F80070F80078F80038F0003CF0003CF0003CF0003C70003C70003C70003C780038380038380070
+1C00700E00E00703C003FF0000FC0016227DA01C>I<4000006000007FFFFC7FFFFC7FFFF84000
+10C000108000208000408000800000800001000002000004000004000008000018000010000030
+0000300000700000700000E00000E00001E00001E00001E00001E00003E00003E00003E00003E0
+0003E00003E00001C00016237CA11C>I<00FC0003FF000703C00C00E018006010003030003030
+00303000303800303C00601F00401F80C00FE30007FE0001FC0000FF00033FC00C0FE01807F030
+01F860007860003CC0001CC0000CC0000CC0000CC0000C6000187000103800601E01C007FF8001
+FE0016227DA01C>I<00FC0003FF000F03801C01C03C00E0380070700070700078F00038F00038
+F00038F0003CF0003CF0003CF0003C70007C78007C38007C1C00BC0C013C07063C01F83C000038
+0000780000780000703800707C00E07C01C07801C0300780380F001FFC0007F00016227DA01C>
+I<FFFE0000FFFE0000078000000780000007800000078000000780000007800000078000000780
+000007800000078000000780000007800000078000000780000007800000078000000780000007
+8000000780000007800020078000200780002007800020078000600780006007800040078000C0
+078001C0078003C007800FC0FFFFFFC0FFFFFFC01B227CA122>76 D<7FFFFFFF007FFFFFFF0078
+01E00F006001E003006001E001004001E00100C001E00180C001E001808001E000808001E00080
+8001E000808001E000800001E000000001E000000001E000000001E000000001E000000001E000
+000001E000000001E000000001E000000001E000000001E000000001E000000001E000000001E0
+00000001E000000001E000000001E000000001E000000001E000000001E0000000FFFFC00000FF
+FFC00021227DA127>84 D<7FFC01FFE07FFC01FFE003F0007C0001E000300000F000200000F800
+6000007C004000003C008000003E010000001F030000000F02000000078400000007C800000003
+F800000001F000000001F000000000F800000000FC00000000BC000000013E000000021F000000
+060F00000004078000000807C000001003E000001001E000002001F000004000F80000C0007800
+0080003C000180003E000FC0003F00FFF001FFF8FFF001FFF825227EA129>88
+D<0802100420082008401040108020802080208020B82EFC3FFC3F7C1F380E100F77A21C>92
+D<00040000000E0000000E0000000E0000001F0000001F0000003F800000278000002780000043
+C0000043C0000043C0000081E0000081E0000101F0000100F0000100F00003FFF8000200780006
+007C0004003C0004003C000C001E000C001E003C003F00FF00FFE01B1A7F991F>97
+D<FFFFF80F00380F00180F00080F000C0F00040F00040F00040F02000F02000F02000F06000FFE
+000F06000F02000F02000F02000F00020F00020F00020F00060F00040F00040F000C0F003CFFFF
+FC171A7E991C>101 D E /Fj 22 117 df<783C783C783C783C180C3018301860306030E0700E
+0A7FA218>34 D<F0F0F0F004047B830E>46 D<01F00007FC000FFE001F1F003C07803C07807803
+C07803C07803C07001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001
+E0F001E0F001E0F001E0F001E0F001E07803C07803C07803C07803C03C07803C07801F1F000FFE
+0007FC0001F00013237EA118>48 D<00C001C007C0FFC0FFC0FBC003C003C003C003C003C003C0
+03C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0FF
+FFFFFFFFFF10227CA118>I<03F0000FFC001FFE003C1F003007807007C06003C0E003E0C001E0
+4001E04001E00001E00001E00001E00003C00003C0000780000780000F00001E00003C00007800
+00F00001E00001C0000380000700000E00001C0000380000700000FFFFE0FFFFE0FFFFE013227E
+A118>I<01F00007FC001FFF003E0F003807807003C02003C02003C00003C00003C00003C00007
+80000780000F00001E0003FC0003F80003FE00000F000007800003C00003C00001E00001E00001
+E00001E00001E08001E0C003C0E003C07007803C0F801FFF000FFC0003F00013237EA118>I<00
+1F00001F00002F00002F00006F0000EF0000CF0001CF0001CF00038F00038F00078F00070F000F
+0F000E0F001E0F003C0F003C0F00780F00780F00F00F00FFFFF8FFFFF8FFFFF8000F00000F0000
+0F00000F00000F00000F00000F00000F00000F0015217FA018>I<3FFF803FFF803FFF803C0000
+3C00003C00003C00003C00003C00003C00003C00003C00003CF8003FFE003FFF003F0F803E0780
+3C03C03803C00001E00001E00001E00001E00001E00001E00001E04003C04003C0E003C0700780
+7C1F003FFE000FFC0003F00013227EA018>I<007E0001FF0003FF0007C1000F00001E00001E00
+003C00003C000078000078000078F800F1FE00F7FF00FF0F80FC0780F803C0F803C0F801C0F001
+E0F001E0F001E0F001E0F001E07001E07001E07801E07803C03803C03C03801C07801F0F000FFE
+0007FC0001F00013237EA118>I<FFFFE0FFFFE0FFFFE00000E00001C000038000078000070000
+0E00001E00001C00003C0000380000780000780000F00000F00000E00001E00001E00001E00003
+C00003C00003C00003C00003C00007800007800007800007800007800007800007800013217EA0
+18>I<01F00007FC000FFE001E0F003C07803C07807803C07803C07803C07803C07803C0380380
+3C07801E0F000F1E0007FC0003F8000FFE001E0F003C07807803C07803C0F001E0F001E0F001E0
+F001E0F001E0F001E07803C07803C03C07803E0F801FFF0007FC0001F00013237EA118>I<01F0
+0007FC000FFE001E0F003C07003807807803807803C0F003C0F001C0F001E0F001E0F001E0F001
+E0F001E0F001E07003E07803E07803E03C07E03E1FE01FFDE00FF1E003E3C00003C00003C00003
+80000780000700000F00101E00183C003FF8001FF00007C00013237EA118>I<FFFE00FFFF80FF
+FFC0F003E0F000F0F00078F00078F0003CF0003CF0003CF0003CF0003CF0003CF00078F00078F0
+00F0F003E0FFFFC0FFFF80FFFE00F00000F00000F00000F00000F00000F00000F00000F00000F0
+0000F00000F00000F00000F00000F00000F0000016237BA21F>80 D<00FE0003FFC007FFE00F81
+E01E00603C00003C00007800007800007800007800007800007C00003C00003F00001FC0000FFC
+0007FF0001FF80003FC00007E00001F00000F00000F80000780000780000780000780000780000
+78C000F0E000F0F801E07E07C03FFF800FFF0001FC0015257EA31B>83 D<381C30183018603060
+30C060F078F078F078F0780E0A78A218>92 D<01FC0007FF000FFF801F03803C01807800007800
+00700000F00000F00000F00000F00000F00000F000007800007800007800003C00401F03C00FFF
+C007FF8001FC0012167E9516>99 D<F0F0F0F0000000000000000000F0F0F0F0F0F0F0F0F0F0F0
+F0F0F0F0F0F0F0F0F0F0F004237DA20B>105 D<01FC0007FF000FFF801F07C03C01E07800F078
+00F0700070F00078F00078F00078F00078F00078F000787800F07800F07C01F03E03E01F07C00F
+FF8007FF0001FC0015167F9518>111 D<F1F000F7FC00FFFE00FC3F00F80F00F00780F00780F0
+07C0F003C0F003C0F003C0F003C0F003C0F003C0F007C0F00780F00F80F80F00FC3E00FFFE00F7
+F800F1F000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000012207C95
+19>I<F0E0F3E0F7E0FF00FE00FC00F800F800F000F000F000F000F000F000F000F000F000F000
+F000F000F000F0000B167C9511>114 D<07F01FFC3FFE3C0E7806780078007C003F003FF01FF8
+0FFC01FE001F000F000F000FC00FF81EFFFE3FFC0FF010167F9513>I<0F000F000F000F000F00
+0F00FFF8FFF8FFF80F000F000F000F000F000F000F000F000F000F000F000F000F000F000F080F
+1C07FC07F803E00E1C7F9B12>I E /Fk 28 120 df<7038F87CFC7EFC7E743A04020402040204
+020804080410081008201040200F0F7EA218>34 D<70F8F8F87005057C840E>46
+D<01F000071C000C06001803003803803803807001C07001C07001C07001C0F001E0F001E0F001
+E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07001C07001
+C07001C07803C03803803803801C07000C0600071C0001F00013227EA018>48
+D<008003800F80F380038003800380038003800380038003800380038003800380038003800380
+03800380038003800380038003800380038003800380038007C0FFFE0F217CA018>I<03F0000C
+1C001007002007804003C04003C08003E0F003E0F801E0F801E0F801E02003E00003E00003C000
+03C0000780000700000E00001C0000180000300000600000C00001800001000002002004002008
+00201800603000403FFFC07FFFC0FFFFC013217EA018>I<03F8000C1E001007002007804007C0
+7807C07803C07807C03807C0000780000780000700000F00000E0000380003F000001C00000F00
+0007800007800003C00003C00003E02003E07003E0F803E0F803E0F003C04003C0400780200780
+100F000C1C0003F00013227EA018>I<000200000600000E00000E00001E00001E00002E00004E
+00004E00008E00008E00010E00020E00020E00040E00040E00080E00100E00100E00200E00200E
+00400E00800E00FFFFF8000E00000E00000E00000E00000E00000E00000E00001F0001FFF01521
+7FA018>I<1000801E07001FFF001FFE001FF80013E00010000010000010000010000010000010
+000010F800130E001407001803801003800001C00001C00001E00001E00001E00001E07001E0F0
+01E0F001E0E001C08001C04003C04003802007001006000C1C0003F00013227EA018>I<007E00
+01C1000300800601C00E03C01C03C0180180380000380000780000700000700000F0F800F30C00
+F40600F40300F80380F801C0F001C0F001E0F001E0F001E0F001E0F001E07001E07001E07001E0
+3801C03801C01803801C03000C0600070C0001F00013227EA018>I<4000006000007FFFE07FFF
+C07FFFC0400080C001008001008002008002000004000008000008000010000030000020000060
+0000600000600000E00000C00000C00001C00001C00001C00001C00003C00003C00003C00003C0
+0003C00003C00003C00003C00001800013237DA118>I<01F800060E0008030010018020018020
+00C06000C06000C06000C07000C07801803E01003F02001FC4000FF80003F80003FC00067F0008
+3F80100F803007C06001C06000E0C000E0C00060C00060C00060C000606000406000C030008018
+03000E0E0003F00013227EA018>I<01F000060C000C0600180700380380700380700380F001C0
+F001C0F001C0F001E0F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E00619E0
+03E1E00001C00001C00001C0000380000380300300780700780600700C002018001030000FC000
+13227EA018>I<0007E0100038183000E0063001C00170038000F0070000F00E0000701E000070
+1C0000303C0000303C0000307C0000107800001078000010F8000000F8000000F8000000F80000
+00F8000000F8000000F8000000F800000078000000780000107C0000103C0000103C0000101C00
+00201E0000200E000040070000400380008001C0010000E0020000381C000007E0001C247DA223
+>67 D<0804100820102010402040208040804080408040B85CFC7EFC7E7C3E381C0F0F7AA218>
+92 D<0FE0001838003C0C003C0E0018070000070000070000070000FF0007C7001E07003C0700
+780700700700F00708F00708F00708F00F087817083C23900FC1E015157E9418>97
+D<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
+000E00000E1F000E61C00E80600F00300E00380E003C0E001C0E001E0E001E0E001E0E001E0E00
+1E0E001E0E001E0E001C0E003C0E00380F00700C80600C41C0083F0017237FA21B>I<01FE0007
+03000C07801C0780380300780000700000F00000F00000F00000F00000F00000F00000F0000070
+00007800403800401C00800C010007060001F80012157E9416>I<01FC000707000C03801C01C0
+3801C07801E07000E0F000E0FFFFE0F00000F00000F00000F00000F00000700000780020380020
+1C00400E008007030000FC0013157F9416>101 D<003C00C6018F038F030F0700070007000700
+07000700070007000700FFF8070007000700070007000700070007000700070007000700070007
+00070007000700070007807FF8102380A20F>I<00007001F198071E180E0E181C07001C07003C
+07803C07803C07803C07801C07001C07000E0E000F1C0019F0001000001000001800001800001F
+FE000FFFC00FFFE03800F0600030400018C00018C00018C000186000306000303800E00E038003
+FE0015217F9518>I<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E0000
+0E00000E00000E00000E00000E1F800E60C00E80E00F00700F00700E00700E00700E00700E0070
+0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF18237F
+A21B>I<1C001E003E001E001C00000000000000000000000000000000000E00FE001E000E000E
+000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC00A227FA10E>
+I<0E1FC07F00FE60E183801E807201C00F003C00E00F003C00E00E003800E00E003800E00E0038
+00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E00
+3800E00E003800E00E003800E00E003800E00E003800E0FFE3FF8FFE27157F942A>109
+D<0E1F80FE60C01E80E00F00700F00700E00700E00700E00700E00700E00700E00700E00700E00
+700E00700E00700E00700E00700E00700E00700E0070FFE7FF18157F941B>I<01FC000707000C
+01801800C03800E0700070700070F00078F00078F00078F00078F00078F00078F0007870007078
+00F03800E01C01C00E038007070001FC0015157F9418>I<0F8830786018C018C008C008E008F0
+007F803FE00FF001F8003C801C800C800CC00CC008E018D0308FC00E157E9413>115
+D<02000200020002000600060006000E001E003E00FFF80E000E000E000E000E000E000E000E00
+0E000E000E000E040E040E040E040E040E040708030801F00E1F7F9E13>I<FF8FF8FF1E01E03C
+1C01C0180E01C0180E01E0100E01E0100702602007027020070270200384304003843840038438
+4001C8188001C81C8001C81C8000F00D0000F00F0000F00F000060060000600600006006002015
+7F9423>119 D E /Fl 27 121 df<780780FC0FC0FC0FC0FE0FE0FE0FE07A07A0020020020020
+02002002002004004004004004004008008010010010010020020040040013127EA91E>34
+D<78FCFCFCFC7806067B8511>46 D<007F000001C1C0000780F0000F0078000E0038001C001C00
+3C001E003C001E003C001E0078000F0078000F0078000F0078000F00F8000F80F8000F80F8000F
+80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F800
+0F80F8000F80F8000F8078000F0078000F0078000F0078000F003C001E003C001E003C001E001C
+001C000E0038000F0078000780F00001C1C000007F000019297EA71E>48
+D<00100000700001F0000FF000FEF000F0F00000F00000F00000F00000F00000F00000F00000F0
+0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
+0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00001F8007FFF
+E07FFFE013287BA71E>I<00FE0007FF800E07E01803F02001F82000F840007C40007CF8007EFC
+007EFC003EFC003EFC003E78007E00007E00007C00007C0000F80000F80001F00001E00003C000
+0780000700000E00001C0000380000700000600000C0000180020300020600040C000418000410
+000C3FFFFC7FFFF8FFFFF8FFFFF817287DA71E>I<007F000003FFC0000701F0000C00F8001000
+7C001C007C003E007E003E003E003E003E001E003E000C007E0000007C0000007C000000780000
+00F0000000E0000001C0000007000000FF00000001E0000000F0000000780000003C0000003E00
+00001F0000001F0000001F8000001F8030001F8078001F80FC001F80FC001F80FC001F00F8001F
+0040003F0040003E0030007C001800F8000F01F00003FFC000007F000019297EA71E>I<000060
+00000060000000E0000001E0000001E0000003E0000003E0000005E0000009E0000009E0000011
+E0000021E0000021E0000041E0000081E0000081E0000101E0000201E0000201E0000401E00008
+01E0000801E0001001E0003001E0002001E0004001E000C001E000FFFFFF80FFFFFF800001E000
+0001E0000001E0000001E0000001E0000001E0000001E0000001E0000003F000007FFF80007FFF
+8019287EA71E>I<1800181F00F01FFFE01FFFC01FFF801FFF0011F80010000010000010000010
+0000100000100000100000100000107E001183801600C01800E010007000007800003C00003C00
+003C00003E00003E00003E70003EF8003EF8003EF8003EF8003C80003C40007C40007820007830
+00F01801E00E07C007FF0001FC0017297DA71E>I<000FE000003FF80000F81C0001E00C000380
+1E0007803E000F003E000E001C001E0000001C0000003C0000003C0000007C0000007800000078
+000000F83F0000F840E000F9807000F9003800FA001C00FC001E00FC001E00FC000F00F8000F00
+F8000F80F8000F80F8000F80F8000F8078000F8078000F8078000F807C000F803C000F003C000F
+001C001E001E001E000E003C000700780003C0F00001FFC000007F000019297EA71E>I<200000
+00380000003FFFFF803FFFFF803FFFFF007FFFFF00600002004000040040000400400008008000
+100080002000000020000000400000008000000080000001000000030000000200000006000000
+060000000C0000000C0000001C0000001C0000001C000000380000003800000038000000780000
+00780000007800000078000000F8000000F8000000F8000000F8000000F8000000F8000000F800
+0000F8000000700000192A7DA81E>I<007F000001FFC0000380F0000600380008001C0018000C
+0010000600300006003000060030000600380006003C0006003E000C001F8008001FC010000FF0
+200007F8C00003FF800001FF0000007FC00000FFE000030FF8000603FC001C01FE0038007E0030
+003F0070000F0070000780E0000780E0000380E0000380E0000380E0000380F000030070000700
+7800060038000C001E0038000F80F00003FFE000007F000019297EA71E>I<007F000001FFC000
+07C1E0000F0070001E0038001C003C003C001C0078001E0078001E00F8000F00F8000F00F8000F
+00F8000F00F8000F80F8000F80F8000F80F8000F8078000F8078001F803C001F803C001F801C00
+2F800E004F800700CF8003810F80007E0F8000000F0000000F0000000F0000001E0000001E0000
+001E0000003C001C003C003E0078003E0070003C00E0001801C0001C0780000FFE000003F80000
+19297EA71E>I<00001800000000180000000018000000003C000000003C000000003C00000000
+7E000000007E00000000FF000000009F000000009F000000011F800000010F800000010F800000
+0207C000000207C000000207C000000403E000000403E000000403E000000801F000000801F000
+001801F800001000F800001000F800002000FC000020007C00003FFFFC00007FFFFE000040003E
+000040003E000080001F000080001F000080001F000100000F800100000F800100000F80020000
+07C007000007C01F80000FE0FFF000FFFFFFF000FFFF282A7EA92D>65 D<040040080080100100
+100100200200400400400400400400800800800800800800800800BC0BC0FE0FE0FE0FE07E07E0
+7E07E03C03C0131278A91E>92 D<01FC00000E0780001001C0003C00E0003E00F0003E0078001C
+00780008007800000078000000780000007800007FF80003E078000F8078001F0078003E007800
+7C00780078007820F8007820F8007820F8007820F800F8207C00F8203C013C401F063FC007F80F
+001B1A7E991E>97 D<007F8001C0700780080F003C1E007C3C007C3C00387C0010780000F80000
+F80000F80000F80000F80000F80000F80000F800007800007C00003C00043C00041E00080F0010
+07802001C0C0007F00161A7E991B>99 D<007E0003C3800700E00E00F01C00703C00783C003878
+003C78003CF8003CF8003CFFFFFCF80000F80000F80000F80000F800007800007C00003C00043C
+00041E00080E001007002001C0C0007F00161A7E991B>101 D<001F000070C000E1E001C3E003
+C3E00381C0078080078000078000078000078000078000078000078000078000078000FFFE00FF
+FE0007800007800007800007800007800007800007800007800007800007800007800007800007
+800007800007800007800007800007800007800007800007800007C000FFFE00FFFE00132A7FA9
+12>I<07000F801F801F800F80070000000000000000000000000000000000000007807F807F80
+0F8007800780078007800780078007800780078007800780078007800780078007800780078007
+800780FFF8FFF80D297FA811>105 D<0780FF80FF800F80078007800780078007800780078007
+800780078007800780078007800780078007800780078007800780078007800780078007800780
+078007800780078007800780078007800780FFFCFFFC0E2A7FA911>108
+D<0781F800FC00FF860E030700FF98070C03800FA0079003C007A003D001E007C003E001E007C0
+03E001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001
+E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E00780
+03C001E0078003C001E0078003C001E0078003C001E0078003C001E0FFFC7FFE3FFFFFFC7FFE3F
+FF301A7F9933>I<007F000001C1C000070070000E0038001C001C003C001E003C001E0078000F
+0078000F00F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F807800
+0F0078000F003C001E003C001E001E003C000E0038000700700001C1C000007F0000191A7E991E
+>111 D<0783F000FF8C1C00FFB00F0007A0078007C003C0078003E0078001E0078001F0078001
+F0078000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F0078001F00780
+01F0078001E0078003C007C003C007C0078007A00E0007983C000787E000078000000780000007
+80000007800000078000000780000007800000078000000780000007800000FFFC0000FFFC0000
+1D267F9921>I<0787C0FF98E0FF91F00FA1F007C1F007C0E007C0000780000780000780000780
+0007800007800007800007800007800007800007800007800007800007800007800007800007C0
+00FFFE00FFFE00141A7F9917>114 D<07F8401C06C03001C06000C06000C0E00040E00040F000
+40F800007E00007FF0003FFE000FFF0003FF80003FC00007C08001E08001E0C000E0C000E0C000
+E0E000C0F001C0F80180C4070083F800131A7E9918>I<00800000800000800000800001800001
+80000180000380000380000780000F80001FFF80FFFF8007800007800007800007800007800007
+800007800007800007800007800007800007800007800007804007804007804007804007804007
+804007804003C08001C08000E100003E0012257FA417>I<FFF03FF0FFF03FF00FC01F8007C00E
+0003C0080001E0180000F0100000F8200000784000003C8000001F8000001F0000000F00000007
+8000000BC000001BE0000011E0000020F0000040780000807C0001803C0001001E0007000F001F
+801F80FFC07FF8FFC07FF81D1A7F9920>120 D E /Fm 22 118 df<1F0001F03F8003F87FC007
+FCFFE00FFEFFE00FFEFFE00FFEFFF00FFFFFF00FFF7FF007FF3FB003FB1F3001F3003000030030
+000300300003003000030070000700600006006000060060000600E0000E00C0000C01C0001C01
+8000180380003803000030070000700E0000E00C0000C01C0001C03800038030000300201F7DC7
+34>34 D<1F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B0B778A1D>46
+D<00007FC000000003FFF80000000FC07E0000003F001F8000007E000FC00000FC0007E00001F8
+0003F00003F00001F80003F00001F80007E00000FC000FE00000FE000FC000007E001FC000007F
+001FC000007F001FC000007F003FC000007F803FC000007F803F8000003F807F8000003FC07F80
+00003FC07F8000003FC07F8000003FC07F8000003FC07F8000003FC0FF8000003FE0FF8000003F
+E0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF80
+00003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003F
+E0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE07F80
+00003FC07F8000003FC07F8000003FC07F8000003FC07F8000003FC07F8000003FC03FC000007F
+803FC000007F803FC000007F801FC000007F001FC000007F001FC000007F000FE00000FE000FE0
+0000FE0007E00000FC0003F00001F80003F00001F80001F80003F00000FC0007E000007E000FC0
+00003F001F8000000FC07E00000003FFF8000000007FC000002B457CC334>48
+D<000038000000007800000000F800000003F80000000FF80000007FF800000FFFF80000FFF7F8
+0000FF87F80000F007F800000007F800000007F800000007F800000007F800000007F800000007
+F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8000000
+07F800000007F800000007F800000007F800000007F800000007F800000007F800000007F80000
+0007F800000007F800000007F800000007F800000007F800000007F800000007F800000007F800
+000007F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8
+00000007F800000007F800000007F800000007F800000007F800000007F800000007F800000007
+F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8000000
+07F80000000FFC0000003FFF0000FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0224477C334>I<0001FF
+000000000FFFF00000003FFFFC000000FC03FF000001E000FFC00007C0003FE0000F80001FF000
+0F00000FF8001E00000FFC003C000007FE0038000007FE0078000003FF0070000003FF007C0000
+03FF00FF000001FF80FF800001FF80FFC00001FF80FFC00001FF80FFC00001FF80FFC00001FF80
+FFC00001FF807F800001FF803F000001FF8000000001FF8000000003FF0000000003FF00000000
+03FF0000000007FE0000000007FE0000000007FC000000000FF8000000000FF8000000001FF000
+0000001FE0000000003FC0000000007F80000000007F0000000000FE0000000001FC0000000003
+F80000000003F00000000007E0000000000FC0000000001F80000000003F00000000007E000000
+00007C0000000000F80000000001F00000000003E00000000007C0000380000F80000380001F00
+000380003E00000700003C0000070000780000070000E00000070001C000000F00038000000F00
+070000001E000FFFFFFFFE001FFFFFFFFE001FFFFFFFFE003FFFFFFFFE007FFFFFFFFE00FFFFFF
+FFFC00FFFFFFFFFC00FFFFFFFFFC0029447BC334>I<0000FFC00000000FFFFC0000003F00FF00
+0000F8003FC00001E0001FE00003C0000FF00007800007F8000F000007FC000FE00007FE001FF0
+0003FE001FF80003FF001FF80003FF001FF80003FF001FF80003FF001FF80003FF000FF00003FF
+0007E00003FF0001800003FF0000000003FE0000000007FE0000000007FE0000000007FC000000
+000FFC000000000FF8000000000FF0000000001FE0000000003FC0000000003F80000000007F00
+00000001FC000000000FF000000007FFC000000007FFFC0000000000FF00000000003FC0000000
+001FE0000000000FF80000000007FC0000000003FE0000000003FF0000000001FF0000000001FF
+8000000001FF8000000001FFC000000000FFC000000000FFE000000000FFE000000000FFE01F00
+0000FFE07FC00000FFE07FC00000FFE0FFE00000FFE0FFE00000FFE0FFE00000FFE0FFE00000FF
+C0FFE00001FFC0FFC00001FFC07F800001FF807E000001FF8078000003FF003C000003FE001E00
+0007FC000F00000FF80007C0001FF00003F0003FE00000FF00FFC000003FFFFF0000000FFFF800
+000000FFC000002B457CC334>I<00000000E00000000001E00000000003E00000000003E00000
+000007E0000000000FE0000000000FE0000000001FE0000000003FE0000000003FE0000000007F
+E000000000EFE000000000EFE000000001CFE0000000038FE0000000038FE0000000070FE00000
+000E0FE00000000E0FE00000001C0FE0000000380FE0000000380FE0000000700FE0000000E00F
+E0000000E00FE0000001C00FE0000003800FE0000003800FE0000007000FE000000E000FE00000
+0E000FE000001C000FE0000038000FE0000038000FE0000070000FE00000E0000FE00000E0000F
+E00001C0000FE0000380000FE0000380000FE0000700000FE0000E00000FE0000E00000FE0001C
+00000FE0003800000FE0003800000FE0007000000FE000E000000FE000FFFFFFFFFFF8FFFFFFFF
+FFF8FFFFFFFFFFF80000001FE0000000001FE0000000001FE0000000001FE0000000001FE00000
+00001FE0000000001FE0000000001FE0000000001FE0000000001FE0000000001FE0000000001F
+E0000000001FE0000000003FF0000000007FF80000007FFFFFF800007FFFFFF800007FFFFFF82D
+457DC434>I<03000000180003E00000F80003FE001FF00003FFFFFFE00003FFFFFFE00003FFFF
+FF800003FFFFFF000003FFFFFE000003FFFFF8000003FFFFE0000003FFFF8000000387F8000000
+038000000000038000000000038000000000038000000000038000000000038000000000038000
+000000038000000000038000000000038000000000038000000000038000000000038000000000
+0380000000000380FFC000000387FFF80000039F007E000003F8003F000003E0001FC00003C000
+0FE00003800007F00003000003F80000000003F80000000003FC0000000001FE0000000001FE00
+00000001FE0000000000FF0000000000FF0000000000FF0000000000FF8000000000FF80000000
+00FF8000000000FF803E000000FF807F800000FF80FF800000FF80FFC00000FF80FFC00000FF80
+FFC00000FF80FF800000FF00FF800000FF00FE000001FF0070000001FE0070000001FE00780000
+03FC0038000003FC003C000007F8001E000007F0000F00000FF0000F80001FE00007C0003FC000
+03F0007F000000FE03FE0000007FFFF80000001FFFE000000003FE00000029457BC334>I<0000
+01FE000000001FFFC00000007F01F0000001F80078000003F0003C00000FC0001E00001F80001E
+00003F00007F00007F0000FF0000FE0001FF0001FC0001FF0001FC0001FF0003F80001FF0007F8
+0000FE0007F000007C000FF0000000000FF0000000001FE0000000001FE0000000003FE0000000
+003FE0000000003FE0000000003FE0000000007FC0000000007FC0000000007FC01FE000007FC0
+7FFC0000FFC1E03F0000FFC3800FC000FFC70007E000FFCE0003F000FFDC0003F800FFD80001FC
+00FFF80001FE00FFF00000FF00FFF00000FF00FFF00000FF80FFE000007F80FFE000007FC0FFE0
+00007FC0FFE000007FC0FFC000007FE0FFC000007FE0FFC000007FE07FC000007FE07FC000007F
+E07FC000007FE07FC000007FE07FC000007FE07FC000007FE03FC000007FE03FE000007FE03FE0
+00007FC01FE000007FC01FE000007FC01FE000007FC00FE00000FF800FF00000FF8007F00000FF
+0007F00001FE0003F80001FE0001FC0003FC0001FC0003F80000FE0007F000003F801FE000001F
+C07F80000007FFFF00000001FFFC000000007FC000002B457CC334>I<1C00000000001E000000
+00001FC0000000001FFFFFFFFFF01FFFFFFFFFF01FFFFFFFFFF03FFFFFFFFFE03FFFFFFFFFE03F
+FFFFFFFFC03FFFFFFFFF803FFFFFFFFF003C0000000F00780000001E00780000001C0070000000
+3C0070000000780070000000F00070000000E000E0000001E000E0000003C000E0000003800000
+00000780000000000F00000000001E00000000001C00000000003C000000000078000000000070
+0000000000F00000000001E00000000001E00000000003C00000000007C0000000000780000000
+000F80000000000F00000000001F00000000001F00000000003E00000000003E00000000007E00
+000000007E00000000007E0000000000FC0000000000FC0000000000FC0000000001FC00000000
+01FC0000000001FC0000000003FC0000000003F80000000003F80000000003F80000000007F800
+00000007F80000000007F80000000007F80000000007F8000000000FF8000000000FF800000000
+0FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800
+0000000FF8000000000FF80000000007F00000000001C00000002C477AC534>I<00007FC00000
+0003FFFC0000000F807F0000003C000FC00000780003E00000E00001F00001E00000F80003C000
+007C00078000007E00078000003E000F0000003E000F0000003F001F0000001F001F0000001F00
+1F0000001F001F8000001F001F8000001F001FC000001F001FC000003F001FE000003E001FF000
+003E000FFC00007C000FFE0000FC0007FF8000F80007FFC001F00003FFF003E00003FFFC07C000
+01FFFE1F000000FFFFBE0000003FFFF80000001FFFF000000007FFF800000003FFFE00000001FF
+FF00000007FFFFC000001F1FFFE000007C07FFF80000F803FFFC0001F000FFFE0007E0007FFF00
+0FC0001FFF000F80000FFF801F000003FF803E000001FFC03E0000007FC07C0000003FC07C0000
+001FE0FC0000000FE0F80000000FE0F800000007E0F800000007E0F800000003E0F800000003E0
+F800000003E0F800000003E0FC00000003C07C00000007C07C00000007807E00000007803F0000
+000F001F8000001F001F8000003E000FE000007C0003F00000F80001FC0003E00000FF803FC000
+003FFFFF00000007FFFC00000000FFC000002B457CC334>I<00007FC000000003FFF80000000F
+C07E0000003F001F0000007E000FC00001FC0007E00003F80007F00007F80003F8000FF00001F8
+000FE00001FC001FE00001FE003FE00000FE003FE00000FE007FC00000FF007FC00000FF007FC0
+0000FF80FFC00000FF80FFC000007F80FFC000007F80FFC000007FC0FFC000007FC0FFC000007F
+C0FFC000007FC0FFC000007FC0FFC000007FE0FFC000007FE0FFC000007FE0FFC000007FE07FC0
+0000FFE07FC00000FFE07FC00000FFE03FE00000FFE03FE00001FFE01FE00001FFE01FE00001FF
+E00FF00003FFE007F000037FE003F800077FE001FC000E7FE000FC001C7FE0007F00387FE0001F
+80F07FE00007FFC07FC00000FF007FC0000000007FC0000000007FC000000000FF8000000000FF
+8000000000FF8000000000FF8000000000FF0000000000FF0000000001FE0000000001FE0007C0
+0001FC000FE00003FC001FF00003F8001FF00007F8001FF00007F0001FF0000FE0001FE0001FC0
+001FC0003F80000F00003F00000F0000FE000007C001FC000003F007F0000001FFFFE00000007F
+FF000000000FF80000002B457CC334>I<FFFFFFFE01FFFFFFFCFFFFFFFE01FFFFFFFCFFFFFFFE
+01FFFFFFFC007FFC000000FFF800003FF80000007FF000001FF00000003FE000001FF00000003F
+E000001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE00000
+1FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF000
+00003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003F
+E000001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE00000
+1FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF000
+00003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003F
+E000001FFFFFFFFFFFE000001FFFFFFFFFFFE000001FFFFFFFFFFFE000001FF00000003FE00000
+1FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF000
+00003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003F
+E000001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE00000
+1FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF000
+00003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003F
+E000001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE00000
+1FF00000003FE000001FF00000003FE000001FF00000003FE000003FF80000007FF000007FFC00
+0000FFF800FFFFFFFE01FFFFFFFCFFFFFFFE01FFFFFFFCFFFFFFFE01FFFFFFFC46477DC64D>72
+D<FFFFFFFF80000000FFFFFFFF80000000FFFFFFFF80000000007FFE0000000000003FF8000000
+0000001FF00000000000001FF00000000000001FF00000000000001FF00000000000001FF00000
+000000001FF00000000000001FF00000000000001FF00000000000001FF00000000000001FF000
+00000000001FF00000000000001FF00000000000001FF00000000000001FF00000000000001FF0
+0000000000001FF00000000000001FF00000000000001FF00000000000001FF00000000000001F
+F00000000000001FF00000000000001FF00000000000001FF00000000000001FF0000000000000
+1FF00000000000001FF00000000000001FF00000000000001FF00000000000001FF00000000000
+001FF00000000000001FF00000000000001FF00000000000001FF00000000000001FF000000000
+00001FF00000000000001FF00000000000001FF00000000000001FF00000000000001FF0000000
+0000001FF00000000000001FF00000000380001FF00000000380001FF00000000380001FF00000
+000380001FF00000000700001FF00000000700001FF00000000700001FF00000000700001FF000
+00000700001FF00000000F00001FF00000000F00001FF00000000F00001FF00000001F00001FF0
+0000001E00001FF00000003E00001FF00000003E00001FF00000007E00001FF0000000FE00001F
+F0000001FE00001FF0000003FE00001FF000000FFE00003FF000003FFE00007FF80001FFFC00FF
+FFFFFFFFFFFC00FFFFFFFFFFFFFC00FFFFFFFFFFFFFC0039477DC641>76
+D<3FFFFFFFFFFFFFFF003FFFFFFFFFFFFFFF003FFFFFFFFFFFFFFF003FF8000FFE0007FF003FC0
+0007FC0000FF003F000007FC00003F007E000007FC00001F807C000007FC00000F807C000007FC
+00000F8078000007FC0000078078000007FC0000078078000007FC0000078070000007FC000003
+8070000007FC0000038070000007FC0000038070000007FC0000038070000007FC00000380F000
+0007FC000003C0E0000007FC000001C0E0000007FC000001C0E0000007FC000001C0E0000007FC
+000001C0E0000007FC000001C000000007FC0000000000000007FC0000000000000007FC000000
+0000000007FC0000000000000007FC0000000000000007FC0000000000000007FC000000000000
+0007FC0000000000000007FC0000000000000007FC0000000000000007FC0000000000000007FC
+0000000000000007FC0000000000000007FC0000000000000007FC0000000000000007FC000000
+0000000007FC0000000000000007FC0000000000000007FC0000000000000007FC000000000000
+0007FC0000000000000007FC0000000000000007FC0000000000000007FC0000000000000007FC
+0000000000000007FC0000000000000007FC0000000000000007FC0000000000000007FC000000
+0000000007FC0000000000000007FC0000000000000007FC0000000000000007FC000000000000
+0007FC0000000000000007FC0000000000000007FC0000000000000007FC0000000000000007FC
+0000000000000007FC0000000000000007FC0000000000000007FC0000000000000007FC000000
+000000000FFE000000000000003FFF800000000003FFFFFFFFF800000003FFFFFFFFF800000003
+FFFFFFFFF8000042467CC54B>84 D<3FFFFFFC001FFFFFE03FFFFFFC001FFFFFE03FFFFFFC001F
+FFFFE0007FFFC00003FFFC00001FFF000000FFE000000FFE0000007F80000007FE0000007F0000
+0003FF0000007C00000003FF0000007C00000001FF8000007800000000FFC00000F000000000FF
+C00000E0000000007FE00001E0000000003FF00003C0000000003FF0000380000000001FF80007
+80000000001FF8000700000000000FFC000E000000000007FE001E000000000007FE001C000000
+000003FF0038000000000001FF8078000000000001FF8070000000000000FFC0F0000000000000
+7FE1E00000000000007FE1C00000000000003FF3C00000000000001FFF800000000000001FFF00
+0000000000000FFF000000000000000FFE0000000000000007FE0000000000000003FF00000000
+00000003FF0000000000000001FF8000000000000000FFC000000000000001FFC0000000000000
+01FFE000000000000003FFF000000000000007BFF0000000000000071FF80000000000000F0FFC
+0000000000001E0FFC0000000000001C07FE0000000000003C03FF0000000000007803FF000000
+0000007001FF800000000000F001FF800000000000E000FFC00000000001C0007FE00000000003
+C0007FE0000000000380003FF0000000000700001FF8000000000F00001FF8000000000E00000F
+FC000000001E000007FE000000003C000007FE0000000038000003FF0000000078000001FF8000
+0000F0000001FF80000000E0000000FFC0000001E0000000FFC0000003C00000007FE0000007C0
+0000003FF000000FE00000003FF800001FE00000003FF800007FF00000007FFC0003FFFC000001
+FFFF00FFFFFF80000FFFFFFFFFFFFF80000FFFFFFFFFFFFF80000FFFFFFF48477EC64D>88
+D<00C0000C01C0001C0380003803000030070000700E0000E00C0000C01C0001C0180001803800
+03803000030070000700600006006000060060000600E0000E00C0000C00C0000C00C0000C00C0
+000C00CF800CF8DFC00DFCFFE00FFEFFF00FFFFFF00FFF7FF007FF7FF007FF7FF007FF3FE003FE
+1FC001FC0F8000F8201F70C734>92 D<0003FE000000001FFFC00000007E03F0000001F000FC00
+0003C0007E00000780003F000007C0003F80000FF0001FC0000FF8000FE0000FF8000FE0000FF8
+000FE0000FF80007F0000FF80007F00007F00007F00001C00007F00000000007F00000000007F0
+0000000007F00000000007F000000001FFF00000007FFFF0000003FF87F000001FF007F000007F
+8007F00001FE0007F00003FC0007F0000FF80007F0001FF00007F0001FE00007F0003FC00007F0
+007FC00007F0007F800007F01C7F800007F01CFF000007F01CFF000007F01CFF000007F01CFF00
+000FF01CFF00000FF01CFF00001FF01CFF80001BF01C7F80003BF01C3FC00071F8381FE000E1F8
+380FF001C0FC7003FC0780FFE000FFFE003FC0001FF8001F802E2F7CAD34>97
+D<00007F80000003FFF000000FC0FC00003F003F00007E001F8001FC000FC003F8000FE007F000
+07F007F00003F00FE00003F81FE00003F81FC00001FC3FC00001FC3FC00001FC7FC00001FC7F80
+0001FE7F800000FE7F800000FEFF800000FEFF800000FEFFFFFFFFFEFFFFFFFFFEFF80000000FF
+80000000FF80000000FF80000000FF80000000FF80000000FF800000007F800000007F80000000
+7FC00000003FC00000003FC000000E3FC000000E1FE000001E0FE000001C0FF000003C07F00000
+3803F800007801FC0000F000FC0001E0007F0003C0001F8007800007E03E000001FFF80000003F
+C000272F7DAD2E>101 D<0001FF0003F0000FFFE01FFC003F83F8FC7E007E00FDE07E01FC007F
+807E03F8003F807E03F0001F801807F0001FC0000FF0001FE0000FE0000FE0000FE0000FE0001F
+E0000FF0001FE0000FF0001FE0000FF0001FE0000FF0001FE0000FF0001FE0000FF0001FE0000F
+F0000FE0000FE0000FE0000FE0000FF0001FE00007F0001FC00003F0001F800003F8003F800001
+FC007F000001FE00FC000003BF83F80000038FFFE000000701FF00000007000000000007000000
+000007000000000007000000000007000000000007800000000007800000000007C00000000007
+E00000000003FFFFFE000003FFFFFFE00001FFFFFFF80000FFFFFFFE00007FFFFFFF0001FFFFFF
+FFC007E00001FFC00F8000003FE01F0000000FF03E00000007F07E00000003F07C00000001F8FC
+00000001F8F800000000F8F800000000F8F800000000F8F800000000F8F800000000F8FC000000
+01F87C00000001F07E00000003F03F00000007E01F8000000FC00FC000001F8003E000003E0000
+FC0001F800003F800FE000000FFFFF80000000FFF800002F437DAC34>103
+D<01FC007FC00007FC0000FFFC01FFF8001FFF8000FFFC0780FE00780FE000FFFC1E007F01E007
+F00003FC38003F838003F80001FC70001F870001F80000FCE0001FCE0001FC0000FCC0001FCC00
+01FC0000FDC0000FFC0000FE0000FD80000FF80000FE0000FF80000FF80000FE0000FF00000FF0
+0000FE0000FF00000FF00000FE0000FF00000FF00000FE0000FE00000FE00000FE0000FE00000F
+E00000FE0000FE00000FE00000FE0000FE00000FE00000FE0000FE00000FE00000FE0000FE0000
+0FE00000FE0000FE00000FE00000FE0000FE00000FE00000FE0000FE00000FE00000FE0000FE00
+000FE00000FE0000FE00000FE00000FE0000FE00000FE00000FE0000FE00000FE00000FE0000FE
+00000FE00000FE0000FE00000FE00000FE0000FE00000FE00000FE0000FE00000FE00000FE0000
+FE00000FE00000FE0000FE00000FE00000FE0000FE00000FE00000FE0000FE00000FE00000FE00
+00FE00000FE00000FE0000FE00000FE00000FE0000FE00000FE00000FE0000FE00000FE00000FE
+0000FE00000FE00000FE0000FE00000FE00000FE0003FF80003FF80003FF80FFFFFE0FFFFFE0FF
+FFFEFFFFFE0FFFFFE0FFFFFEFFFFFE0FFFFFE0FFFFFE4F2D7CAC58>109
+D<01FE00003FC000FFFE001FFFC000FFFE001FFFC000FFFE001FFFC00003FE00007FC00001FE00
+003FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC000
+00FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE0000
+1FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000
+FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001F
+C00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE
+00003FC00000FE00003FC00000FE00003FC00000FE00007FC000007E00007FC000007E0000FFC0
+00007F0000DFC000003F0001DFE000001F80039FF000000FC0071FFFC00007F01E1FFFC00001FF
+F81FFFC000003FE01FE000322E7CAC39>117 D E /Fn 79 123 df<60F0F0F0F0F0F0F0606060
+60606060606060606060000000000060F0F060041E7C9D0C>33 D<6060F0F0F8F8686808080808
+0808101010102020404080800D0C7F9C15>I<0003018000030180000301800007038000060300
+0006030000060300000E0700000C0600000C0600000C0600000C0600001C0E007FFFFFF8FFFFFF
+FC0030180000301800003018000070380000603000006030000060300000603000FFFFFFFC7FFF
+FFF801C0E0000180C0000180C0000180C0000381C0000301800003018000030180000703800006
+03000006030000060300001E257E9C23>I<00E000000190000003080000030800000708000007
+08000007080000070800000710000007100000072000000740000003C03FE003800F0003800600
+0380040005C0040009C0080010E0100030E010006070200060702000E0384000E03C4000E01C80
+00E00F0020E0070020700780403009C0401830E18007C03E001B1F7E9D20>38
+D<60F0F8680808081010204080050C7C9C0C>I<004000800100020006000C000C001800180030
+0030007000600060006000E000E000E000E000E000E000E000E000E000E000E000E00060006000
+6000700030003000180018000C000C00060002000100008000400A2A7D9E10>I<800040002000
+100018000C000C000600060003000300038001800180018001C001C001C001C001C001C001C001
+C001C001C001C001C0018001800180038003000300060006000C000C0018001000200040008000
+0A2A7E9E10>I<01800180018001804182F18F399C0FF003C003C00FF0399CF18F418201800180
+0180018010127E9E15>I<00060000000600000006000000060000000600000006000000060000
+000600000006000000060000000600000006000000060000FFFFFFE0FFFFFFE000060000000600
+000006000000060000000600000006000000060000000600000006000000060000000600000006
+0000000600001B1C7E9720>I<60F0F0701010101020204080040C7C830C>I<FFE0FFE00B028089
+0E>I<60F0F06004047C830C>I<00030003000700060006000E000C001C00180018003800300030
+00700060006000E000C000C001C001800380030003000700060006000E000C000C001C00180018
+0038003000700060006000E000C000C00010297E9E15>I<03C00C301818300C300C700E600660
+06E007E007E007E007E007E007E007E007E007E007E007E007E00760066006700E300C300C1818
+0C3007E0101D7E9B15>I<030007003F00C7000700070007000700070007000700070007000700
+0700070007000700070007000700070007000700070007000F80FFF80D1C7C9B15>I<07C01830
+201C400C400EF00FF80FF807F8077007000F000E000E001C001C00380070006000C00180030006
+010C01180110023FFE7FFEFFFE101C7E9B15>I<07E01830201C201C781E780E781E381E001C00
+1C00180030006007E00030001C001C000E000F000F700FF80FF80FF80FF00E401C201C183007E0
+101D7E9B15>I<000C00000C00001C00003C00003C00005C0000DC00009C00011C00031C00021C
+00041C000C1C00081C00101C00301C00201C00401C00C01C00FFFFC0001C00001C00001C00001C
+00001C00001C00001C0001FFC0121C7F9B15>I<300C3FF83FF03FC02000200020002000200020
+0023E024302818301C200E000E000F000F000F600FF00FF00FF00F800E401E401C2038187007C0
+101D7E9B15>I<00F0030C06040C0E181E301E300C700070006000E3E0E430E818F00CF00EE006
+E007E007E007E007E007600760077006300E300C18180C3003E0101D7E9B15>I<4000007FFF80
+7FFF007FFF0040020080040080040080080000100000100000200000600000400000C00000C000
+01C000018000018000038000038000038000038000078000078000078000078000078000078000
+030000111D7E9B15>I<03E00C301008200C20066006600660067006780C3E083FB01FE007F007
+F818FC307E601E600FC007C003C003C003C00360026004300C1C1007E0101D7E9B15>I<03C00C
+301818300C700C600EE006E006E007E007E007E007E0076007700F300F18170C2707C700060006
+000E300C780C78187010203030C00F80101D7E9B15>I<60F0F0600000000000000000000060F0
+F06004127C910C>I<60F0F0600000000000000000000060F0F0701010101020204080041A7C91
+0C>I<0FE03038401CE00EF00EF00EF00E000C001C0030006000C0008001800100010001000100
+010001000000000000000000000003000780078003000F1D7E9C14>63 D<000600000006000000
+060000000F0000000F0000000F00000017800000178000001780000023C0000023C0000023C000
+0041E0000041E0000041E0000080F0000080F0000180F8000100780001FFF80003007C0002003C
+0002003C0006003E0004001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65
+D<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00780F01
+F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F000F0F000F0F000F0F001E0F001E0F00
+3C0F0078FFFFE0181C7E9B1D>I<001F808000E0618001801980070007800E0003801C0003801C
+00018038000180780000807800008070000080F0000000F0000000F0000000F0000000F0000000
+F0000000F0000000F0000000700000807800008078000080380000801C0001001C0001000E0002
+00070004000180080000E03000001FC000191E7E9C1E>I<FFFFC0000F00F0000F003C000F000E
+000F0007000F0007000F0003800F0003C00F0001C00F0001C00F0001E00F0001E00F0001E00F00
+01E00F0001E00F0001E00F0001E00F0001E00F0001C00F0001C00F0003C00F0003800F0007800F
+0007000F000E000F001C000F007000FFFFC0001B1C7E9B20>I<FFFFFC0F003C0F000C0F00040F
+00040F00060F00020F00020F02020F02000F02000F02000F06000FFE000F06000F02000F02000F
+02000F02010F00010F00020F00020F00020F00060F00060F000C0F003CFFFFFC181C7E9B1C>I<
+FFFFF80F00780F00180F00080F00080F000C0F00040F00040F02040F02000F02000F02000F0600
+0FFE000F06000F02000F02000F02000F02000F00000F00000F00000F00000F00000F00000F0000
+0F8000FFF800161C7E9B1B>I<001F808000E0618001801980070007800E0003801C0003801C00
+018038000180780000807800008070000080F0000000F0000000F0000000F0000000F0000000F0
+000000F000FFF0F0000F80700007807800078078000780380007801C0007801C0007800E000780
+07000B800180118000E06080001F80001C1E7E9C21>I<FFF3FFC00F003C000F003C000F003C00
+0F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000FFFFC
+000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F00
+3C000F003C000F003C000F003C00FFF3FFC01A1C7E9B1F>I<FFF00F000F000F000F000F000F00
+0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
+00FFF00C1C7F9B0F>I<1FFF00F800780078007800780078007800780078007800780078007800
+780078007800780078007800787078F878F878F878F0F040E021C01F00101D7F9B15>I<FFF03F
+E00F000F000F000C000F0008000F0010000F0020000F0040000F0080000F0100000F0200000F04
+00000F0E00000F1F00000F2F00000F2780000F4780000F83C0000F01E0000F01E0000F00F0000F
+00F8000F0078000F003C000F003C000F001E000F001F000F001F80FFF07FF01C1C7E9B20>I<FF
+F8000F80000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
+00000F00000F00000F00000F00000F00080F00080F00080F00180F00180F00100F00300F00700F
+01F0FFFFF0151C7E9B1A>I<FF8000FF800F8000F8000F8000F8000BC00178000BC00178000BC0
+01780009E002780009E002780008F004780008F004780008F00478000878087800087808780008
+78087800083C107800083C107800083C107800081E207800081E207800081E207800080F407800
+080F40780008078078000807807800080780780008030078001C03007800FF8307FF80211C7E9B
+26>I<FF007FC00F800E000F8004000BC0040009E0040009E0040008F0040008F8040008780400
+083C0400083C0400081E0400080F0400080F0400080784000807C4000803C4000801E4000801E4
+000800F40008007C0008007C0008003C0008003C0008001C0008000C001C000C00FF8004001A1C
+7E9B1F>I<003F800000E0E0000380380007001C000E000E001C0007003C000780380003807800
+03C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F0
+0001E0700001C0780003C0780003C0380003803C0007801C0007000E000E0007001C0003803800
+00E0E000003F80001B1E7E9C20>I<FFFF800F00E00F00780F003C0F001C0F001E0F001E0F001E
+0F001E0F001E0F001C0F003C0F00780F00E00FFF800F00000F00000F00000F00000F00000F0000
+0F00000F00000F00000F00000F00000F0000FFF000171C7E9B1C>I<FFFF00000F01E0000F0078
+000F003C000F001C000F001E000F001E000F001E000F001E000F001C000F003C000F0078000F01
+E0000FFF00000F03C0000F00E0000F00F0000F0078000F0078000F0078000F0078000F0078000F
+0078000F0078100F0078100F0038100F003C20FFF01C20000007C01C1D7E9B1F>82
+D<07E0801C1980300580700380600180E00180E00080E00080E00080F00000F800007C00007FC0
+003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001C0C00180C001
+80E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F00C0400F0040400F00
+40C00F0020800F0020800F0020800F0020000F0000000F0000000F0000000F0000000F0000000F
+0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
+0F0000000F0000001F800003FFFC001B1C7F9B1E>I<FFF07FC00F000E000F0004000F0004000F
+0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F000400
+0F0004000F0004000F0004000F0004000F0004000F0004000F0004000F00040007000800078008
+00038010000180100000C020000070C000001F00001A1D7E9B1F>I<FFE0FFE0FF1F001F003C1E
+001E00180F001F00100F001F00100F001F001007801F00200780278020078027802003C0278040
+03C043C04003C043C04003E043C04001E081E08001E081E08001E081E08000F100F10000F100F1
+0000F100F100007900FA00007A007A00007A007A00003E007C00003C003C00003C003C00003C00
+3C00001800180000180018000018001800281D7F9B2B>87 D<7FF0FFC00FC03E000780180003C0
+180003E0100001E0200001F0600000F0400000788000007D8000003D0000001E0000001F000000
+0F0000000F8000000F80000013C0000023E0000021E0000041F00000C0F8000080780001007C00
+03003C0002001E0006001F001F003F80FFC0FFF01C1C7F9B1F>I<FFF007FC0F8001E007800080
+07C0018003C0010003E0020001F0020000F0040000F8040000780800007C1800003C1000001E20
+00001F2000000F4000000FC0000007800000078000000780000007800000078000000780000007
+800000078000000780000007800000078000007FF8001E1C809B1F>I<FEFEC0C0C0C0C0C0C0C0
+C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE07297C9E0C>91
+D<08081010202040404040808080808080B0B0F8F8787830300D0C7A9C15>I<FEFE0606060606
+0606060606060606060606060606060606060606060606060606060606060606FEFE0729809E0C
+>I<0810204040808080B0F87830050C7D9C0C>96 D<1FC000307000783800781C00301C00001C
+00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E801F87001212
+7E9115>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C
+7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C00C01C
+01C01C01801E030019060010F800131D7F9C17>I<07E00C301878307870306000E000E000E000
+E000E000E00060007004300418080C3007C00E127E9112>I<003F000007000007000007000007
+0000070000070000070000070000070000070003E7000C1700180F00300700700700600700E007
+00E00700E00700E00700E00700E00700600700700700300700180F000C370007C7E0131D7E9C17
+>I<03E00C301818300C700E6006E006FFFEE000E000E000E00060007002300218040C1803E00F
+127F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E
+000E000E000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<00038003C4C00C
+38C01C3880181800381C00381C00381C00381C001818001C38000C300013C00010000030000018
+00001FF8001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E0007F80012
+1C7F9215>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0000
+1C7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
+1C03801C03801C03801C0380FF9FF0141D7F9C17>I<18003C003C001800000000000000000000
+0000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
+FF80091D7F9C0C>I<00C001E001E000C000000000000000000000000000000FE000E000E000E0
+00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0F0C0F1
+C061803E000B25839C0D>I<FC00001C00001C00001C00001C00001C00001C00001C00001C0000
+1C00001C00001C3FC01C0F001C0C001C08001C10001C20001C40001CE0001DE0001E70001C7800
+1C38001C3C001C1C001C0E001C0F001C0F80FF9FE0131D7F9C16>I<FC001C001C001C001C001C
+001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
+1C001C001C00FF80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E01C001C01C01C
+001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C0
+1C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>I<FC7C001C87
+001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03
+801C03801C0380FF9FF014127F9117>I<03F0000E1C00180600300300700380600180E001C0E0
+01C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F00012127F9115>I<
+FC7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C01C0
+1C01C01C01801E03001D06001CF8001C00001C00001C00001C00001C00001C00001C0000FF8000
+131A7F9117>I<03C1000C3300180B00300F00700700700700E00700E00700E00700E00700E007
+00E00700600700700700300F00180F000C370007C7000007000007000007000007000007000007
+00000700003FE0131A7E9116>I<FCE01D301E781E781C301C001C001C001C001C001C001C001C
+001C001C001C001C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F803FE00FF000
+F880388018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C003C00FF
+E01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F99
+10>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
+1C03801C03801C07800C07800E1B8003E3F014127F9117>I<FF07E03C03801C01001C01000E02
+000E020007040007040007040003880003880003D80001D00001D00000E00000E00000E0000040
+0013127F9116>I<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B82000E1182
+000711C4000711C4000720C40003A0E80003A0E80003C0680001C0700001C07000018030000080
+20001B127F911E>I<7F8FF00F03800F030007020003840001C80001D80000F000007000007800
+00F800009C00010E00020E000607000403801E07C0FF0FF81512809116>I<FF07E03C03801C01
+001C01000E02000E020007040007040007040003880003880003D80001D00001D00000E00000E0
+0000E000004000004000008000008000F08000F10000F300006600003C0000131A7F9116>I<7F
+FC70386038407040F040E041C003C0038007000F040E041C043C0C380870087038FFF80E127F91
+12>I E end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300
+TeXDict begin
+%%EndSetup
+/cm10tt{ pop Fa } bind def
+/cm11bf{ pop Fb } bind def
+/cm10it{ pop Fc } bind def
+/cm13bf{ pop Fd } bind def
+/cm22bf{ pop Fe } bind def
+/cm18bf{ pop Ff } bind def
+/cm10bf{ pop Fg } bind def
+/cm11it{ pop Fh } bind def
+/cm11sc{ pop Fi } bind def
+/cm11sf{ pop Fj } bind def
+/cm11rm{ pop Fk } bind def
+/cm13rm{ pop Fl } bind def
+/cm22rm{ pop Fm } bind def
+/cm10rm{ pop Fn } bind def
+/fontnames [
+/TIMESROMAN
+/cm10rm
+/cm22rm
+/cm13rm
+/cm11rm
+/cm11sf
+/cm11sc
+/cm11it
+/cm10bf
+/cm18bf
+/cm22bf
+/cm13bf
+/cm10it
+/cm11bf
+/cm10tt
+] def
+%! This is a PostScript library meant to be printed only with other files %%%
+%% Postscript Code by Jonathan Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+%% This is the LameTeX Formatter, uses the LaTeX language
+% Depends on "EndPage" and "StartPage" to be set up by a page formatter
+
+/formatdict 100 dict def % This should be 77?
+
+formatdict begin
+/wlist 100 array def % Maximum of 100 words on a line
+%% Better give these variables default values in case we try to
+%% do an EndPage but they have not yet been defined
+
+/baselineskip 200 def /wlen 0 def /baselineskip 0 def /bottommargin 0 def
+/parindent 0 def /justify 0 def /rightmargin 0 def /leftmargin 0 def
+/topmargin 0 def /parskip 0 def /newfontcmd 1 def /para 0 def
+/vtotal 0 def /wordlen 0 def /ypos 0 def /ytemp 0 def
+
+%%%%%%%%%%%%%%%% num InitWord - %%%%%%%%%%%%%%%%%%%%%%%
+% InitWord takes an setflat values and flattens the current path
+% It also defines some globals that will get "NextWord" up and running
+/InitWord
+{
+ /xpos currentflat def % Save current flatness
+ PageShape setflat flattenpath
+ % gsave stroke grestore % Uncomment this line to show the margin path
+ /coords Approx def
+ pathbbox % It the current path is bigger than the margins, widen them!
+ dup TM gt { /TM exch def } { pop } ifelse
+ dup RM gt { /RM exch def } { pop } ifelse
+ dup BM lt { /BM exch def } { pop } ifelse
+ dup LM lt { /LM exch def } { pop } ifelse
+
+ xpos setflat % Restore flatness.
+ false fontnames newfontcmd get cvx exec
+ /xlocs [ ] def
+ /welem 1 def /wlen 0 def /woids 0 def
+ /eslot LM def
+ /ypos TM topmargin sub def
+ /vtotal 0 def
+ /xpos 0 def /nxpos 0 def
+ wlist 0 [ newfontcmd false ] put
+ /wtemp 0 def
+ NextSpace pop
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%% - NewXSpace bool %%%%%%%%%%%%%%%%%%%%%%
+% If there's "room on the bottom" as defined by xlocs, check to see if
+% there's "room on the top" as defined by NewXSpace. Returns success boolean.
+/NewXSpace
+{
+ nxpos newxlocs length 1 sub lt
+ {
+ newxlocs nxpos 2 getinterval {} forall exch
+ /nxpos nxpos 2 add def
+% If there's any intersection of top and bottom 'good places' set bslot, eslot
+ dup xa le { pop xa } if leftmargin add /bslot exch def
+ dup xb ge { pop xb } if rightmargin sub /eslot exch def
+ bslot eslot lt { true } { NewXSpace } ifelse
+ }
+ {
+ false
+ } ifelse
+} bind def
+
+%%%%%%%%%%%%%%% - NextSpace bool %%%%%%%%%%%%%%%%%%%%%%
+% NextSpace defines the next space available for writing by
+% setting ypos to the Y location and bslot and eslot to the beginning
+% and end of the next open text writing area. Returns success boolean.
+/NextSpace
+{
+ xpos xlocs length 1 sub lt % are there any X's left on current line
+ {
+ /xa xlocs xpos get def
+ /xb xlocs xpos 1 add get def
+ NewXSpace
+ { true }
+ {
+ /nxpos 0 def
+ /xpos xpos 2 add def
+ NextSpace
+ } ifelse
+ }
+ {
+ ypos % Leave on the stack for later comparison
+ /ypos ypos
+ vspace 0 eq
+ {
+ baselineskip para { parskip add } if /vtotal baselineskip def
+ }
+ {
+ vspace /vspace 0 def
+ } ifelse
+ sub def
+ ypos BM bottommargin add ge
+ {
+ /newxlocs coords 3 -1 roll 4 add true CheeseWhiz def
+ /xlocs coords ypos 4 sub true CheeseWhiz def
+ /xpos 0 def /nxpos 0 def
+ NextSpace
+ }
+ {
+ pop false
+ } ifelse
+ } ifelse
+ % if we're doing a paragraph and the NextSpace isn't big enough
+ % for the indentation, then choose a new space.
+ % if found-space and para and justify
+ dup para justify 102 eq and and % 102 is ascii 'f' for FULL JUSTIFY
+ { /bslot bslot parindent add def bslot eslot gt
+ { pop NextSpace pop
+ } if
+ } if
+ /para false def
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%%%% - PrintWordList - %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% PrintWordList prints the words stored in array "wlist" at Y location ypos
+% with full justification between X locations bslot and eslot.
+/PrintWordList
+{
+ /vtotal 0 def
+ woids 0 ne
+ {
+ % Legal values for /justify are (l)eft (r)ight (f)ull (c)enter in ASCII
+ justify 99 eq % 99 is ascii 'c' for CENTERED
+ {
+ bslot eslot bslot sub wlen sub 2 div add ypos moveto
+ }
+ {
+ bslot justify 114 eq { eslot bslot sub wlen sub add } if % 114 is 'r'
+ ypos moveto
+ } ifelse
+ /sp eslot bslot sub wlen sub woids div def
+ 0 1 welem 1 sub
+ {
+ wlist exch get
+ dup type /stringtype eq
+ {
+ SHOWIT ( ) stringwidth pop 0 rmoveto
+ justify 102 eq { sp 0 rmoveto } if % 102 is ascii 'f'
+ }
+ {
+ dup type /arraytype eq
+ {
+ { } forall
+ {
+ ( ) stringwidth pop neg 0 rmoveto
+ justify 102 eq { sp neg 0 rmoveto } if % 102 is ascii 'f'
+ } if
+ fontnames exch get cvx true exch exec
+ }
+ {
+ 0 rmoveto
+ } ifelse
+ } ifelse
+ } for
+ wlist 0 [ newfontcmd false ] put
+ /welem 1 def /wlen 0 def /woids 0 def
+ } if
+} def
+
+%%%%%%%%%%%%%%%%%%%%%%%%% - PrintClose - %%%%%%%%%%%%%%%%%%%%%%%%
+% PrintClose prints the words stored in the array "wlist" at Y location ypos
+% starting at X location bslot with left justification.
+/PrintClose
+{
+ justify 102 eq % 102 is ascii 'f'
+ {
+ /justify 108 def % 108 is ascii 'l' for flushleft
+ PrintWordList
+ /justify 102 def
+ }
+ {
+ PrintWordList
+ } ifelse
+} bind def
+
+%%%%%%%%%%%%%%%% string Parse - %%%%%%%%%%%%%%%%%%%%%%%%
+% Parse breaks a string into words based on spaces, passing each to NextWord
+/Parse
+{
+ dup length 0 eq % kill extra spaces by shaving them until null string
+ { pop }
+ { ( ) search { Parse pop Parse } { NW } ifelse } ifelse
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%%%% string NextWord - %%%%%%%%%%%%%%%%%%%%%%
+% NextWord appends the string to an array of words
+% and tries to place the text inside an arbitrary path (which was analyzed
+% by InitWord). It's meant to be an iterative part of a long list of
+% "string NextWord" sets which justifies text inside any closed path.
+/NextWord
+{
+ /word exch def word stringwidth pop /wordlen exch def
+ GrabSpace
+} bind def
+
+%%%%%%%%%% Takes a horizontal distance and a string for positioning
+/GrabSpace
+{
+ wordlen wlen add
+ eslot bslot sub gt
+ {
+ PrintWordList word type /stringtype ne { /welem 0 def } if
+ NextSpace
+ {
+ GrabSpace
+ }
+ {
+ % Have reached end of page
+ ENDPAGE STARTPAGE
+ /ypos baselineskip ypos add def /vtotal baselineskip def NEWLINE
+ GrabSpace
+ } ifelse
+ }
+ {
+ word type /stringtype eq
+ {
+ wlist welem word put /welem welem 1 add def
+ /wlen wlen ( ) stringwidth pop add def
+ /woids woids 1 add def
+ } if
+ /wlen wlen wordlen add def
+ } ifelse
+} def
+
+%%%%%%%%%%%%%%%% xwidth HSpace - %%%%%%%%%%%%%%
+% Adds to the current wlen and adds the right thing in the wlist array
+/HSpace
+{
+ dup wlen add /wlen exch def
+ wlist welem 3 -1 roll put /welem welem 1 add def
+} bind def
+
+
+%%%%%%%%%%%%%%%%% size type NewFont %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% NewFont sets a new font, given a type and size
+/NewFont
+{
+ { } forall /word exch def /newfontcmd exch def
+ word wlist welem [ newfontcmd 5 -1 roll ] put /welem welem 1 add def
+ false fontnames newfontcmd get cvx exec
+ word true eq woids 0 gt and
+ {
+ /wlen wlen ( ) stringwidth pop sub def
+ } if
+} bind def
+
+%%%%%%%%%%%%%% x y READJUST %%%%%%%%%%%%%%
+% Readjusts the line down by given amountif big fonts are being placed
+% in a small vertical space, and across if a horizontal space is being added.
+/READJUST
+{
+ wtemp type /arraytype eq % Don't do recursive READJUSTs
+ {
+ pop pop
+ }
+ {
+ /vspace exch def /wordlen exch def
+ /welem welem 1 sub def
+ GrabSpace vspace 0 ne { SKIPLINE } if % Skip to a new page if needed
+ /wtemp wlist def /woids 0 def /wlen 0 def
+ 0 1 welem /welem 0 def
+ {
+ wtemp exch get
+ dup type /stringtype eq
+ {
+ NextWord
+ }
+ {
+ dup type /arraytype eq
+ {
+ NewFont
+ }
+ {
+ HSpace
+ } ifelse
+ } ifelse
+ } for
+ wordlen HSpace
+ /wtemp 0 def
+ } ifelse
+} bind def
+
+%%%% Skipline skips a given amount of vertical space
+/SKIPLINE
+{
+ vspace 0 eq vspace vtotal gt or
+ {
+ vspace vtotal gt
+ {
+ /vspace vspace vtotal sub /vtotal vspace def def
+ } if
+
+ /ytemp ypos def
+ true
+ 20 % repeat
+ {
+ NextSpace not % did it get a new line successfully?
+ {
+ ENDPAGE STARTPAGE
+ /ypos baselineskip ypos add def /vtotal baselineskip def NEWLINE
+ } if
+ ypos ytemp ne { pop false exit } if
+ } repeat
+
+ { % Did the repeat "fail" by falling off the end?
+ erasepage
+ grestoreall
+ /Times-Roman findfont 20 scalefont setfont
+ 50 100 moveto
+ (Could not place words anywhere on the virtual page) show
+ showpage
+ quit
+ } if
+ } if
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%%
+% Some startup definitions
+/para true def
+/vspace 0 def
+
+% User command definitions, meant to be called from outside
+/NW { NextWord } bind def
+/SHOWIT { show } bind def
+/NEWLINE { PrintWordList NextSpace pop } def
+/NEWPARA
+{
+ PrintClose
+ /para true def
+ SKIPLINE
+} bind def
+
+/ENUMERATE { dup stringwidth pop 9 add
+ bslot exch sub ypos moveto show } bind def
+/BULLET
+{
+ newpath bslot 9 sub
+ ( ) stringwidth pop 1.7 div dup ypos add exch
+ 0 360 arc currentgray 0 setgray fill setgray
+} bind def
+
+/TIMESROMAN
+{
+ pop /Times-Roman findfont 10 scalefont setfont
+} bind def
+
+/BASELINESKIP
+{
+ /baselineskip exch def
+} bind def
+
+/STARTPAGE
+{
+ end
+ /savetype save def
+ StartPage
+ formatdict begin
+ InitWord
+} def
+
+/ENDPAGE
+{
+ PrintClose
+ % Put all the variables we want to save on the stack
+ baselineskip bottommargin parindent justify rightmargin leftmargin
+ topmargin parskip newfontcmd para wordlen ypos ytemp
+ word type /stringtype eq
+ {
+ mark word {} forall true
+ }
+ {
+ word false
+ } ifelse
+ end
+
+ savetype restore
+
+ formatdict
+ begin
+ {
+ counttomark string /word exch def
+ counttomark 1 sub -1 0
+ {
+ exch word 3 1 roll put % Builds word out of individual characters
+ } for
+ pop
+ }
+ {
+ /word exch def
+ } ifelse
+
+ % Recover all the variables
+ /ytemp exch def /ypos exch def /wordlen exch def
+ /para exch def /newfontcmd exch def
+ /parskip exch def /topmargin exch def /leftmargin exch def
+ /rightmargin exch def /justify exch def /parindent exch def
+ /bottommargin exch def /baselineskip exch def
+ end
+ EndPage
+ formatdict begin
+} def
+%! This is a PostScript library meant to be included in other files %%%
+%% Postscript Code by Jon Monsarrat Copyright 1991
+%% permission given for anything except selling this or deleting the header.
+%%%%%%%%%%% - Approx array %%%%%%%%%%%%%%%%%
+% Approx flattens a path into a series of lines.
+% This new flattened path is returned as a triple-array path representation.
+% The path is broken into sub-paths which have a double-array representation.
+% Each sub-path breaks into vertices which have a single-array representation.
+% Each vertex is of the form X Y. We're doing a fill here so any
+% unclosed subpaths get closed. That's how postscript normally handles fill.
+% It would be easier to use [ X Y ] vertices, but that would waste memory!
+/Approx
+ {
+ [ [ { /Y exch def /X exch def ] [ X Y }
+ { } { } { X Y } pathforall ] ]
+ } bind def
+
+%%%%%%%%%%%%%%%%%%% array num bool SortArray array %%%%%%%%%%%%%%%
+% SortArray bubble sorts "array" of packets in increasing order, packets are
+% groups of numbers and a packet is of size "num". Sorting is done based
+% on the value of the first item in each packet. When sorting is done,
+% SortArray goes through and deletes all equal packets if "bool" is true.
+/SortArray
+{
+ 10 dict begin
+ /DelEquals exch def /Pack exch def
+ /newlist exch def
+ 0 Pack newlist length 2 Pack mul sub
+ {
+ /anum exch def
+ anum Pack add Pack newlist length 1 Pack mul sub
+ {
+ /bnum exch def
+ newlist anum get newlist bnum get ge
+ {
+ /flag true def
+ newlist anum get newlist bnum get eq Pack 2 eq and
+ {
+ /flag false def
+ newlist anum 1 add get newlist bnum 1 add get add 0 eq
+ {
+ newlist anum 1 add get 1 eq ontop xor { /flag true def } if
+ } if
+ } if
+ flag
+ {
+ 0 1 Pack 1 sub
+ {
+ /ind exch def
+ /temp newlist anum ind add get def
+ newlist anum ind add newlist bnum ind add get put
+ newlist bnum ind add temp put
+ } for
+ } if
+ } if
+ } for
+ } for
+
+ DelEquals % if this boolean is true, delete all equal packs
+ {
+ [
+ 0 Pack newlist length 2 Pack mul sub
+ {
+ /anum exch def
+ newlist anum get newlist anum Pack add get ne
+ {
+ 0 1 Pack 1 sub
+ {
+ anum add newlist exch get
+ } for
+ } if
+ } for
+ 0 1 Pack 1 sub
+ {
+ /ind exch def
+ newlist newlist length Pack sub ind add get
+ } for
+ ]
+ }
+ {
+ newlist
+ } ifelse
+ end % temp dict 10
+} bind def
+
+%%%%%%%%%%%%%%%%%% bool CheeseY X1 W1 or nothing %%%%%%%%%%
+% CheeseY uses defined variables Y1 (a number), oldx, oldy, newx, newy.
+% CheeseY asks "does the line segment bounded by oldxy, newxy cross y=Y1?
+% If so, CheeseY leaves X1 W on the stack, where (X1,Y1) is the point of
+% intersection. The winding value W is calculated from the sign of the slope.
+% CheeseY takes one argument which is a boolean value. This boolean is
+% true is the Y1 value is "on top" of the region of interest, false if "below".
+% This is to deal correctly with line segments which end on the y=Y1 line.
+% These special line segments are ignored if they don't pass through the
+% region of interest. It would be easier to use [ X W ] but memory wasteful.
+/CheeseY
+{
+ /top exch def
+ oldy newy 2 copy gt { exch } if
+ Y1 ge exch Y1 le and
+ {
+ oldy newy ne
+ {
+ oldx newx sub oldy newy sub div
+ oldy Y1 sub mul oldx exch sub
+ oldy newy lt { 1 } { -1 } ifelse
+ }
+ {
+ newx 0
+ } ifelse
+
+ % If the line segment does NOT go through region of interest
+ % but rather just happens to end on line y=Y1, don't use it.
+ oldy Y1 eq
+ {
+ dup top { -1 } { 1 } ifelse ne { pop pop } if
+ }
+ {
+ newy Y1 eq
+ {
+ dup top { 1 } { -1 } ifelse ne { pop pop } if
+ } if
+ } ifelse
+ } if
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%% array num bool CheeseWhiz array %%%%%%%%%%%%%%%%%
+% CheeseWhiz traverses the flattened path as computed by Approx to find
+% any points of intersection with the line y=Y1, where Y1 is it's num argument.
+% It's boolean argument is true if y=Y1 bounds the region of interest "on top".
+% For all points of intersection X1 goes on the stack, where [ X1 Y1 ]
+% is the point, BUT ONLY IF the winding value or evenodd calculation says
+% to. The winding value is complex and calculated from the sign of the slope.
+% CheeseWhiz does this by breaking the path into line segments and passing
+% it to CheeseY. The final array of X1 values is sorted, keeping duplicates.
+/CheeseWhiz
+{
+ 15 dict begin
+ /ontop exch def
+ /Y1 exch def
+ [ exch
+ {
+ /oldx (Begin) def
+ /flag false def
+ {
+ flag
+ {
+ /newy exch def
+ oldx (Begin) eq
+ { /firstx newx def /firsty newy def} { ontop CheeseY } ifelse
+ /oldx newx def /oldy newy def
+ }
+ {
+ /newx exch def
+ } ifelse
+ /flag flag not def
+ } forall
+ oldx (Begin) ne
+ {
+ /newx firstx def % Even if the subpath is not closed, PostScript
+ /newy firsty def % fill methodology says close it. So wrap around.
+ ontop CheeseY
+ } if
+ } forall
+ ]
+ % Sort the array of X W values
+ 2 false SortArray
+ % Now go through and take out X's where there is no inside/outside change
+ [ exch
+ fillout { LM exch } if
+ /winding 0 def
+ /inside false def % always start off outside
+ /flag false def
+ {
+ flag
+ {
+ winding add /winding exch def
+ evenodd not
+ {
+ winding 0 eq inside xor
+ { pop } { /inside inside not def } ifelse
+ } if
+ } if
+ /flag flag not def
+ } forall
+ fillout { RM } if
+ ]
+ end % temp dict 15
+} def
+%% End of PostScript Path-breaking Library
+
+/justify 102 def
+
+12 BASELINESKIP
+
+
+
+/leftmargin 126 def
+/rightmargin 126 def
+
+/rightmargin 360 def
+
+
+/leftmargin 126 def
+/rightmargin 126 def
+
+/parindent 18 def
+
+/parskip 0 def
+
+
+/bottommargin 90 def
+
+/rightmargin 126 def
+
+/topmargin 162 def
+/bottommargin 90 def
+
+
+
+
+
+
+
+
+/rightmargin 54 def
+
+/bottommargin -18 def
+
+/topmargin 72 def
+/bottommargin 72 def
+
+/leftmargin 90 def
+/rightmargin 90 def
+
+/leftmargin 90 def
+/rightmargin 90 def
+
+end
+% This PostScript file defines a few simple operators for throwing
+% icons onto the page.
+
+%% All icons are expected to fit into a 1"x1" square, but they don't have to.
+
+%%%%%%%%%%% icon-name OutsideTopIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the top outside corner.
+/OutsideTopIcon
+{
+} bind def
+
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ bslot 72 sub ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+%%%%%%%%%%%% icon-name number SprinkleIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/SprinkleIcon
+{
+ dup 0 eq
+ {
+ pop
+ }
+ {
+ 0 1 3 -1 roll Random
+ {
+ pop
+ gsave
+ 8.5 in Random 11 in Random translate 0 0 moveto dup cvx exec
+ grestore
+ } for
+ pop
+ } ifelse
+} bind def
+
+/BIG 1073741824 def
+
+% Gives a random number between 0 and N
+% N Random random-number
+/Random
+{
+ rand BIG div mul 2 div
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% THE FOLLOWING ROUTINES ARE USED IN THE ROACH ICON
+%%%%%%%%%%%%%%%%%%%% - Roach - %%%%%%%%%%%%%%%%%%%%
+
+/Body
+{
+ -1 0 moveto -5 2 lineto -11 15 -9 25 -10 40 curveto
+ -1 30 lineto closepath fill
+} bind def
+
+/Legs
+{
+ -15 0 moveto -8 5 lineto -7 10 lineto stroke
+ -16 25 moveto -13 20 lineto -7 17 lineto stroke
+ -21 40 moveto -15 30 lineto -10 30 lineto -7 25 lineto stroke
+} bind def
+
+/Head
+{
+ 0 31 moveto 0 31 15 90 135 arc fill
+ 0 42 moveto 0 42 8 90 200 arc fill
+ 0 50 moveto 0 50 3 90 200 arc fill
+ -4 45 moveto -7 65 lineto stroke
+} bind def
+
+/Roach
+{
+ newpath
+ gsave
+ 0.7 setgray
+ 30 30 translate
+ .7 .7 scale
+ 360 Random rotate
+ Body Legs Head
+ -1 1 scale
+ Body Legs Head
+ grestore
+} bind def
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% END OF ROUTINES FOR THE ROACH ICON
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% THE FOLLOWING ROUTINES ARE USED IN THE WIZARD ICON
+%%%%%%%%%%%%%%%% - Wizard - %%%%%%%%%%%%%%%%%%
+
+/Hat
+{
+ gsave
+ 25 54 moveto
+ 35 51 lineto
+ 35 Random
+ 15 add /x exch def % Hat tilt randomness
+ x 5 add 68 x 70 3 arcto pop pop pop pop
+ x 5 sub 68 x 2 sub 65 2 arcto pop pop pop pop
+ x 2 add 66 lineto
+ closepath
+ 1 setlinejoin
+ gsave dup setgray fill grestore gsave stroke grestore
+ % Add the while circles
+ clip
+ .7 gt { 0 } { 1 } ifelse setgray
+ newpath
+ 0 1 20
+ {
+ pop 40 Random 20 add 20 Random 50 add 1.5 0 360 arc fill
+ } for
+ grestore
+} bind def
+
+% Takes two angles for the arms.
+/Clothes
+{
+ gsave
+ 1 setlinejoin
+ % Robes
+ 25 30 moveto
+ 25 20 20 10 17 3 curveto
+ 30 0 40 5 50 2 curveto
+ 38 25 34 32 36 35 curveto
+
+ % Right arm
+ 40 Random 10 add % Right arm randomness
+ 50 exch lineto 5 15 rlineto
+ currentpoint 5 70 -110 arcn
+ 10 20 rlineto -10 -18 rlineto
+ 40 43 lineto
+ 26 43 lineto
+ 22 42 lineto
+
+ % Left arm
+ 45 Random 20 add dup dup % Left arm randomness
+ 10 exch lineto 15 sub 10 exch lineto
+ 10 exch lineto
+ -5 1 -6 -10 0 -10 rcurveto
+ 0 -5 rlineto
+ closepath
+ % Add the while circles
+ gsave dup setgray fill grestore gsave stroke grestore clip
+ .7 gt { 0 } { 1 } ifelse setgray
+ newpath
+ 0 1 50
+ {
+ pop 60 Random 10 add 50 Random 1.5 0 360 arc fill
+ } for
+ grestore
+} bind def
+
+/Face
+{
+ gsave
+ % setgray
+ 1 setgray
+ 25 54 moveto 25 33 37 33 35 52 curveto fill
+ % currentgray .7 gt { 0 } { 1 } ifelse setgray
+ 0 setgray
+ 25 54 moveto 25 33 37 33 35 52 curveto stroke
+ newpath .3 setlinewidth
+ 28 49 1 0 360 arc stroke
+ 32 48 1 0 360 arc stroke
+ 30 45 1 0 360 arc fill
+
+ % Whiskers
+ .7 gt { 0 } { 1 } ifelse setgray
+ 0 1 10
+ {
+ 25 add
+ 0 1 5
+ {
+ pop dup 10 Random 36 add
+ moveto -3 Random -1 1 -3 Random 0 -5 Random rcurveto stroke
+ } for
+ pop
+ } for
+ grestore
+} bind def
+
+% draws a picture of a wizard in a 1"x1" square
+/Wizard
+{
+ newpath .5 setlinewidth
+ 1 Random dup Clothes
+ Face
+ 1 Random Hat
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% END OF ROUTINES FOR THE WIZARD ICON
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+/in {72 mul} def
+
+/IconDemo
+{
+ /icon exch def
+ 1 1 11
+ {
+ pop
+ 1 1 8
+ {
+% Uncomment this line to see the icon boxes.
+% 0 0 moveto 72 0 lineto 72 72 lineto 0 72 lineto closepath stroke
+ icon cvx exec
+ pop 1 in 0 translate
+ } for
+ -8 in 1 in translate
+ } for
+} bind def
+
+%% To do a demo of one of the icons, uncomment one of these lines.
+% /Wizard IconDemo showpage
+% /Roach IconDemo showpage
+formatdict begin
+
+end
+%! page_title.ps - A fancy titlepage for a document
+%% This is a LameTeX Page Description File written in PostScript.
+%% Postscript Code by Jon Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+%% This is a page template for the LameTeX formatter
+%% A normal page for LameTeX output to look like LaTeX output
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+% Makes a path that desribes the page and leaves a setflat value on the stack.
+/PageShape
+{
+ 0 0 moveto 8.5 in 0 lineto 8.5 in 11 in lineto 0 11 in lineto closepath
+ currentflat 8 mul
+} bind def
+
+/StartPage
+{
+ %%%%%%%%%%%%%%%% string Weird-Stuff %%%%%%%%%%%%%%%%%%%%%%%%%%
+ % Weird-Stuff puts some fancy border stuff in around a given string
+ /Weird-Stuff
+ {
+ save
+ %%%%%%%%%%%%%%%% num num block %%%%%%%%%%%
+ % width and X position
+ /Block
+ {
+ 0 moveto dup 0 rlineto
+ .35 in .7 in rlineto -1 mul 0 rlineto
+ closepath 1 setgray fill 0 setgray
+ } bind def
+ %%%%%% end of Block %%%%%%%%%%%%%%%%
+
+ 0.6 setgray
+ exch /name exch def
+ 90 rotate 0 -1.1 in translate
+ /bit {.02 in} def
+ gsave
+
+ 2 in 0 translate
+ .7 in dup scale
+ 1 3 in div setlinewidth
+
+ /Thick 1 8 div def
+ /Tall 1 def
+ /HalfThick Thick .5 mul def
+
+ newpath
+ HalfThick Thick moveto
+ Thick 0 lineto
+ 1 Thick sub 0 lineto
+ 1 HalfThick sub Thick lineto
+ .5 HalfThick add Tall Thick sub lineto
+
+ 1 Thick sub 0 moveto
+ .5 HalfThick add Tall 3 Thick mul sub lineto
+ Thick 3 mul Thick 2 mul lineto
+
+ 1 Thick 2.5 mul sub Thick moveto
+ .5 Tall Thick 4 mul sub lineto
+ stroke
+
+ newpath
+ HalfThick Thick moveto
+ 1 Thick 2.5 mul sub Thick lineto
+ HalfThick neg Thick rlineto
+ Thick Thick add Thick Thick add lineto
+ .5 HalfThick add Tall Thick sub lineto
+ Thick neg 0 rlineto
+ closepath
+ fill
+ grestore
+ /Times-BoldItalic findfont 90 scalefont setfont
+ gsave 2.65 in 0 moveto 1 .5 scale
+ -.07 in 0 name ashow grestore
+ gsave 2.65 in .625 in moveto 1 -.22 scale
+ -.07 in 0 name ashow grestore
+ newpath .3 in 0 moveto 1.9 in 0 lineto
+ 2.25 in .64 in lineto .3 in .64 in lineto
+ .5 in .32 in lineto closepath fill
+ 6.4 in 0 moveto 8.9 in 0 lineto 8.8 in -.2 in lineto
+ 9.5 in .32 in lineto 8.8 in .84 in lineto
+ 8.9 in .64 in lineto 6.75 in .64 in lineto closepath fill
+ .05 in .7 in Block
+ .08 in 1.1 in Block
+ .11 in 1.5 in Block
+ .1 in 6.8 in Block
+ .15 in 7.3 in Block
+ .2 in 7.7 in Block
+ .2 in 8 in Block
+ .1 in 8.25 in Block
+ restore
+ } bind def
+
+ %%%%%%%%%%%%% num num circle - %%%%%%%%%%%%%%%%%%%%%%%%
+ % circle fills & strokes a small white circle around current point
+ /circle { currentpoint .1 in 0 rmoveto .1 in 0 360 arc
+ 1 setgray fill } def
+
+ /StringBuffer 10 string def
+
+ %%%%%%%%%%%%%%%% string Shade - %%%%%%%%%%%%%%%%%%%%%%%%
+ % Shade prints a shaded character at the current position
+ % .8 top .1 bot gray
+ /Shade
+ {
+ currentpoint /aty exch def /atx exch def
+ gsave
+ dup true charpath clip (Mg) true charpath pathbbox
+ exch 4 -1 roll sub /wid exch def exch sub /hit exch def
+ /pl aty hit .3 mul sub def /ph aty hit add .1 in sub def
+ pl .1 in ph
+ {
+ dup pl sub ph pl sub div .7 mul .1 add setgray
+ atx exch moveto wid 0 rlineto 0 hit rlineto
+ wid -1 mul 0 rlineto closepath fill
+ } for
+ grestore
+ dup 0 setgray true charpath stroke
+ atx aty moveto stringwidth pop 0 rmoveto
+ } bind def
+
+ %%%%%%%%%%%%%%%% string Title - %%%%%%%%%%%%%%%%%%%%%%%%
+ % Title prints a string in the title position of the page,
+ % and shoots it full of holes!
+ /Title
+ {
+ save
+ exch /str exch def /border .2 in def /hit 40 def
+ /NewCenturySchlbk-Bold findfont hit 1.5 mul scalefont setfont
+ str stringwidth pop /lg exch def
+ newpath 8.5 in lg sub 2 div 9.7 in moveto
+ gsave
+ currentpoint border sub exch border sub exch moveto
+ lg border 2 mul add 0 rlineto 0 hit border 2 mul add rlineto
+ lg -1 mul border 2 mul sub 0 rlineto closepath
+ gsave .8 setgray fill grestore 2 setlinewidth 0 setgray stroke
+ .5 setlinewidth
+ grestore
+ str length 1 sub 0 1 3 -1 roll
+ { rand pop
+ str exch 1 getinterval Shade
+ } for
+ 1 1 30
+ {
+ pop rand BIG div 2 div
+ lg border 4 mul add mul 8.5 in lg sub 2 div add border sub
+ rand BIG div 2 div
+ hit border 4 mul add mul 10.1 in add border sub moveto
+ circle
+ } for
+ 1 setlinewidth 0 setgray
+ restore
+ } bind def
+
+ /Web
+ {
+ newpath
+ 0 0 moveto
+ 1 1 8 { pop 0.5 in 0 -3 in -3 in -2 in 0.5 in rcurveto 45 rotate } for
+ } bind def
+
+ %%%%%% xlow ylow width height grain ShadeBox - %%%%%%%%%%%%%%%%%%
+ % shades in a box with increasingly darker horizontal rectangles.
+ /ShadeBox
+ {
+ newpath
+ 6 dict begin
+ /grain exch def
+ /height exch def
+ /width exch def
+ /ylow exch def
+ /xlow exch def
+ newpath
+ ylow grain ylow height add grain sub
+ {
+ dup ylow sub height div .9 mul .1 add setgray % How dark to stop?
+ xlow exch moveto width 0 rlineto
+ 0 grain rlineto width neg 0 rlineto
+ closepath fill
+ } for
+ end
+ } bind def
+
+ 1.5 in 1 in 6.5 in 5 in .05 in ShadeBox
+
+ 8 in 4 in translate
+ 0 setgray Web fill
+ .2 in .2 in translate
+ .5 setgray 10 setlinewidth Web fill
+ .8 setgray 3 setlinewidth Web stroke
+ grestoreall % Don't want all this to have an effect on text printing
+} bind def
+
+/EndPage
+{
+ /pagenumber pagenumber 1 add def % Don't print a page number on titlepage
+ showpage % A new page here really does mean start a new page.
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout false def % true means fill outside shape. false is inside.
+
+ % Page Defaults
+ /in { 72 mul } def
+ /BM 0 in def % Absolute Bottom Margin for page
+ /TM 11 in def % Absolute Top Margin for page
+ /LM 0 in def % Absolute Left Margin for page
+ /RM 8.5 in def % Absolute Right Margin for page
+
+ userdict /pagenumber known not
+ { /pagenumber 1 def } if % Initialize pagenumber if not done already
+
+ /BIG 1073741824 def
+} bind def
+
+InitPage % Just loading this file initializes the page.
+formatdict begin
+
+STARTPAGE
+
+[ 1 false ] NewFont % /cm10rm
+
+ (LATEX) Weird-Stuff (LameTeX) Title
+
+/justify 99 def
+
+26.4 BASELINESKIP
+
+NEWPARA
+
+[ 2 false ] NewFont % /cm22rm
+
+/vspace 85.02 def NEWPARA
+ (LameTeX) NW
+12 BASELINESKIP
+
+NEWPARA
+
+[ 1 false ] NewFont % /cm10rm
+
+15.6 BASELINESKIP
+
+/vspace 21.6 def NEWPARA
+
+[ 3 false ] NewFont % /cm13rm
+ (A) NW (text) NW (formatter) NW (for) NW (special) NW (effects) NW
+12 BASELINESKIP
+
+NEWPARA
+
+[ 1 false ] NewFont % /cm10rm
+
+13.2 BASELINESKIP
+
+/vspace 72 def NEWPARA
+
+[ 4 false ] NewFont % /cm11rm
+ (Combining) NW (the) NW (magic) NW (of) NW
+[ 5 false ] NewFont % /cm11sf
+ (PostScript) NW
+[ 4 false ] NewFont % /cm11rm
+ (with) NW (the) NW (ease) NW (of) NW
+[ 6 false ] NewFont % /cm11sc
+ (LaTeX) NW
+12 BASELINESKIP
+
+NEWPARA
+
+[ 1 false ] NewFont % /cm10rm
+
+13.2 BASELINESKIP
+
+/vspace 28.34 def NEWPARA
+
+[ 7 false ] NewFont % /cm11it
+ (Version) NW (1.1) NW (by) NW (Jonathan) NW (Monsarrat) NW
+/vspace 13.2 def NEWPARA
+ (September) NW (8,) NW (1992) NW
+12 BASELINESKIP
+
+NEWPARA
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 264 def NEWPARA
+ 1 setgray (Copyright) NW (1992) NW (Jonathan) NW (Monsarrat) NW
+NEWPARA
+ (Permission) NW (is) NW (granted) NW (to) NW (freely) NW (distribute) NW (or) NW (edit) NW (any) NW (portion) NW (of) NW (this) NW (manual.) NW
+NEWPARA
+ 0 setgray
+NEWPARA /justify 102 def
+
+ENDPAGE
+
+end
+%! page_latex.ps - A replica of the standard LaTeX page
+%% This is a LameTeX Page Description File written in PostScript.
+%% Postscript Code by Jon Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+%% This is a page template for the LameTeX formatter
+%% A normal page for LameTeX output to look like LaTeX output
+
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ 20 ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+% Makes a path that desribes the page
+/PageShape
+{
+ 0 0 moveto 8.5 in 0 lineto 8.5 in 11 in lineto 0 11 in lineto closepath
+ currentflat 8 mul
+} bind def
+
+% Anything to do when a new page is started
+/StartPage
+{
+} bind def
+
+% Anything to do when a new page is ended
+/EndPage
+{
+ pagenumber 4 string cvs
+ dup stringwidth pop 8.5 in
+ formatdict /rightmargin get sub
+ formatdict /leftmargin get sub
+ exch sub 2 div formatdict /leftmargin get add
+ formatdict /bottommargin get 2 div moveto show
+ /pagenumber pagenumber 1 add def
+ showpage % A new page here really does mean start a new page.
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+% Page-specific defaults that describe the page.
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout false def % true means fill outside shape. false is inside.
+
+ /in { 72 mul } def
+ /BM 0 in def % Absolute Bottom Margin for page
+ /TM 11 in def % Absolute Top Margin for page
+ /LM 0 in def % Absolute Left Margin for page
+ /RM 8.5 in def % Absolute Right Margin for page
+
+ userdict /pagenumber known not % Initialize pagenumber if not done already
+ { userdict begin /pagenumber 1 def end} if
+} bind def
+
+InitPage % Just loading this file initializes the page.
+
+formatdict begin
+
+STARTPAGE
+
+[ 1 false ] NewFont % /cm10rm
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+21.6 BASELINESKIP
+
+[ 9 false ] NewFont % /cm18bf
+
+
+/vspace 112.5 def NEWPARA
+ (Chapter) NW (1) NW
+26.4 BASELINESKIP
+
+/vspace 46.6 def NEWPARA
+
+[ 10 false ] NewFont % /cm22bf
+ (Getting) NW (to) NW (Know) NW (LameTeX) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 52 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (Hackers,) NW (just) NW (skip) NW (to) NW (the) NW (section) NW (\\Fast) NW (Track".) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (1.1) NW
+15 HSpace
+ (Copyright) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 22.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (Don't) NW (sell) NW (LameTeX) NW (or) NW (this) NW (documentation,) NW (or) NW (use) NW (parts) NW (of) NW (it) NW (in) NW (programs) NW (you) NW (sell.) NW (Don't) NW (even) NW (think) NW (about) NW (selling) NW (it.) NW (This) NW (isn't) NW (about) NW (money.) NW (It's) NW (about) NW (cool) NW (hacking.) NW (Permission) NW (granted) NW (for) NW (everything) NW (else.) NW (Thank) NW (you.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (1.2) NW
+15 HSpace
+ (About) NW (Text) NW (Formatters) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 22.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (A) NW
+[ 12 false ] NewFont % /cm10it
+ (text) NW (formatter) NW
+[ 1 false ] NewFont % /cm10rm
+ (is) NW (a) NW (program) NW (that) NW (helps) NW (you) NW (make) NW (nice) NW (looking) NW (reports) NW (and) NW (documents.) NW (You) NW (write) NW (the) NW (document) NW (by) NW (typing) NW (the) NW (text) NW (into) NW (an) NW (editor,) NW (adding) NW (formatting) NW (commands) NW (as) NW (needed.) NW (A) NW
+[ 12 false ] NewFont % /cm10it
+ (formatting) NW (command) NW
+[ 1 false ] NewFont % /cm10rm
+ (is) NW (not) NW (meant) NW (to) NW (be) NW (printed.) NW (Instead) NW (it) NW (is) NW (interpreted) NW (by) NW (the) NW (text) NW (formatter) NW (program) NW (to) NW (accomplish) NW (special) NW (tricks) NW (such) NW (as) NW (centering) NW (a) NW (line) NW (of) NW (text,) NW (that) NW (you) NW (would) NW (otherwise) NW (have) NW (to) NW (do) NW (by) NW (laboriously) NW (typing) NW (the) NW (space) NW (bar) NW (a) NW (number) NW (of) NW (times.) NW
+NEWPARA
+ (LameTeX) NW (is) NW (a) NW (text) NW (formatting) NW (program) NW (that) NW (understands) NW (many) NW (of) NW (the) NW (most) NW (important) NW (text) NW (formatting) NW (commands) NW (of) NW (a) NW (popular) NW (text) NW (formatter,) NW (LaTeX.) NW (Although) NW (not) NW (as) NW (powerful) NW (for) NW (normal) NW (text) NW (formatting,) NW (LameTeX) NW (has) NW (a) NW (number) NW (of) NW (additional) NW (features) NW (for) NW (special) NW (effects.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (1.3) NW
+15 HSpace
+ (LameTeX) NW (is) NW (for) NW (Special) NW (Effects) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 22.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (That) NW (said,) NW (if) NW (you) NW (want) NW (to) NW (write) NW (a) NW (plain) NW (report) NW (or) NW (do) NW (some) NW (fancy) NW (mathematics,) NW (you) NW (should) NW (use) NW (LaTeX) NW (instead.) NW (LaTeX) NW (does) NW (a) NW (better) NW (job) NW (for) NW (normal-looking) NW (documents) NW (\(this) NW (page) NW (is) NW (an) NW (example) NW (of) NW (a) NW (normal-looking) NW (LaTeX) NW (page\),) NW (and) NW (LameTeX) NW (version) NW (1.0) NW (is) NW (not) NW (capable) NW (of) NW (handling) NW (some) NW (of) NW (the) NW (more) NW (esoteric) NW (LaTeX) NW (functionality) NW (like) NW (mathematics) NW (and) NW (command) NW (definition.) NW (That's) NW (why) NW (it's) NW (called) NW (\\Lame") NW (TeX!) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+13.2 BASELINESKIP
+
+[ 13 false ] NewFont % /cm11bf
+
+
+/vspace 4.5 def NEWPARA
+ (1.3.1) NW
+15 HSpace
+ (What) NW (LameTeX) NW (Can) NW (Do) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 18 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (LameTeX's) NW (specialty) NW (is) NW (complete) NW (versatility) NW (of) NW (the) NW (printed) NW (page.) NW (The) NW (standard) NW (model) NW (for) NW (text) NW (formatters) NW (is) NW (that) NW (every) NW (page) NW (is) NW (necessarily) NW (rectangular.) NW (LameTeX) NW (will) NW (let) NW (you) NW (format) NW (text) NW (inside) NW (a) NW (triangular) NW (page,) NW (or) NW (a) NW (circle) NW (page.) NW (Just) NW (like) NW (professional) NW (magazine) NW (editors,) NW (you) NW (can) NW (include) NW (pictures) NW (of) NW
+[ 12 false ] NewFont % /cm10it
+ (any) NW
+[ 1 false ] NewFont % /cm10rm
+ (shape) NW (and) NW (ask) NW (the) NW (text) NW (to) NW (flow) NW (around) NW (them) NW (or) NW (inside) NW (them.) NW
+NEWPARA
+ (These) NW (flexible) NW (arbitrarily-shaped) NW (margins) NW (are) NW (PostScript) NW (paths.) NW (If) NW (you) NW (don't) NW (know) NW (PostScript,) NW (there) NW (is) NW (a) NW (big) NW (library) NW (of) NW (interesting) NW (LameTeX) NW (page) NW (margins) NW (here.) NW (With) NW (LameTeX) NW (you) NW (can) NW (fit) NW (several) NW (\\pages") NW (onto) NW (one) NW (8.5x11) NW (inch) NW (piece) NW (of) NW (paper,) NW (so) NW (you) NW (can) NW (easily) NW (make) NW (index) NW (cards,) NW (labels,) NW (and) NW (half-pages) NW (of) NW (text.) NW
+NEWPARA
+ (Also,) NW (if) NW (you) NW (know) NW (how) NW (to) NW (write) NW (programs) NW (in) NW (PostScript,) NW (LameTeX) NW (allows) NW (you) NW (to) NW (very) NW (tightly) NW (integrate) NW (your) NW (LameTeX) NW (commands) NW (with) NW (your) NW (PostScript) NW (code.) NW (In) NW (fact,) NW (the) NW (PostScript) NW (that) NW (LameTeX) NW (outputs) NW (is) NW (nicely) NW (formatted) NW (and) NW (commented) NW (so) NW (that) NW (you) NW (can) NW (modify) NW (it) NW (yourself) NW (and) NW (see) NW (how) NW (it's) NW (done.) NW (LameTeX) NW (is) NW (written) NW (with) NW (PostScript) NW (version) NW (1,) NW (so) NW (it) NW (should) NW (run) NW (on) NW (all) NW (PostScript) NW (printers.) NW
+NEWPARA
+ (Finally,) NW (everything) NW (about) NW (LameTeX) NW (is) NW (set) NW (up) NW (to) NW (be) NW (compatible) NW (with) NW (LaTeX.) NW (LameTeX) NW (can't) NW (do) NW (everything) NW (that) NW (LaTeX) NW (can,) NW (but) NW (the) NW (special) NW
+[ 12 false ] NewFont % /cm10it
+ (stealth) NW (commands) NW
+[ 1 false ] NewFont % /cm10rm
+ (guarantee) NW (that) NW (your) NW (fancy) NW (LameTeX) NW (document) NW (can) NW (be) NW (processed) NW (by) NW (normal) NW (LaTeX.) NW (This) NW (allows) NW (you) NW (to) NW (share) NW (it) NW (with) NW (anyone) NW (who) NW (doesn't) NW (happen) NW (to) NW (have) NW (LameTeX.) NW (\(Better) NW (yet:) NW (give) NW (them) NW (a) NW (copy;) NW (LameTeX) NW (is) NW (free!\)) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+13.2 BASELINESKIP
+
+[ 13 false ] NewFont % /cm11bf
+
+
+/vspace 4.5 def NEWPARA
+ (1.3.2) NW
+15 HSpace
+ (What) NW (you) NW (Need) NW (to) NW (Know) NW (to) NW (Learn) NW (LameTeX) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 18 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (LameTeX) NW (is) NW (a) NW (tool) NW (to) NW (make) NW (things) NW (simple.) NW (You) NW (don't) NW (have) NW (to) NW (be) NW (a) NW (LaTeX) NW (expert) NW (to) NW (use) NW (LameTeX,) NW (but) NW (you) NW (should) NW (be) NW (somewhat) NW (familiar) NW (with) NW (some) NW (basic) NW (LaTeX) NW (commands) NW (before) NW (reading) NW (this) NW (document.) NW
+NEWPARA
+ (You) NW (don't) NW (need) NW (to) NW (know) NW (any) NW (PostScript) NW (to) NW (use) NW (LameTeX,) NW (although) NW (there) NW (is) NW (a) NW (lot) NW (extra) NW (you) NW (can) NW (do) NW (with) NW (LameTeX) NW (if) NW (you) NW (can) NW (do) NW (just) NW (a) NW (little.) NW
+NEWPARA
+ (You) NW
+[ 12 false ] NewFont % /cm10it
+ (definitely) NW
+[ 1 false ] NewFont % /cm10rm
+ (don't) NW (need) NW (to) NW (know) NW (anything) NW (about) NW (TeX) NW (to) NW (use) NW (LameTeX.) NW
+NEWPARA
+ (LameTeX) NW (is) NW (written) NW (in) NW (C++) NW (and) NW (PostScript) NW (from) NW (scratch.) NW (It) NW (is) NW (not) NW (based) NW (on) NW (TeX) NW (macros) NW (or) NW (anything) NW (like) NW (that.) NW (It) NW (just) NW (happens) NW (to) NW (know) NW (the) NW (same) NW (language) NW (as) NW (LaTeX,) NW (and) NW (also) NW (it) NW (snarfs) NW (fonts) NW (from) NW (LaTeX.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (1.4) NW
+15 HSpace
+ (The) NW (Fast) NW (Track) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 40.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (If) NW
+ /Wizard LeftMarginIcon (it's) NW (3) NW (a.m.) NW (and) NW (you) NW (are) NW (a) NW (juggling,) NW (tetris-addicted) NW (hacker) NW (with) NW (a) NW (taste) NW (for) NW (reheated) NW (Chinese) NW (take-out) NW (food,) NW (you) NW (may) NW (want) NW (to) NW (skip) NW (to) NW (the) NW (good) NW (parts.) NW (Look) NW (for) NW (the) NW (Little) NW (Wizard) NW (icon) NW (for) NW (interesting) NW (notes) NW (for) NW (experts) NW (who) NW (won't) NW (need) NW (to) NW (read) NW (this) NW (whole) NW (manual.) NW
+NEWPARA
+
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+/parindent 0 def
+
+NEWPARA
+
+/vspace 12 def NEWPARA
+
+BULLET
+ (The) NW (LameTeX) NW (code) NW (for) NW (this) NW (document,) NW
+[ 14 false ] NewFont % /cm10tt
+ (lametex) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (doc.tex) NW
+[ 1 true ] NewFont % /cm10rm
+ (,) NW (and) NW (all) NW (the) NW (files) NW (it) NW (includes,) NW (are) NW (good) NW (examples) NW (of) NW (what) NW (LameTeX) NW (code) NW (looks) NW (like.) NW (Read) NW (through) NW (it) NW (and) NW (you) NW (will) NW (notice) NW (it's) NW (not) NW (hard) NW (to) NW (make) NW
+ /Wizard LeftMarginIcon (a) NW (few) NW (special) NW (effects.) NW (In) NW (general,) NW (just) NW (try) NW (lots) NW (of) NW (LaTeX) NW (commands,) NW (and) NW (LameTeX) NW (will) NW (either) NW (handle) NW (them) NW (or) NW (attempt) NW (to) NW (skip) NW (them) NW (gracefully.) NW
+NEWPARA
+
+/vspace 12 def NEWPARA
+
+BULLET
+ (Look) NW (in) NW (the) NW (appendix) NW (to) NW (see) NW (what) NW (commands) NW (LameTeX) NW (supports) NW (if) NW (in) NW (doubt.) NW
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+15.6 woids 1 gt { 0 exch READJUST } { pop } ifelse
+ (Warning!) NW (LameTeX) NW (lets) NW (you) NW (write) NW (sloppy) NW (code.) NW
+12 BASELINESKIP
+
+[ 1 false ] NewFont % /cm10rm
+ (Try) NW (writing) NW (your) NW (document) NW (in) NW (LaTeX) NW (first,) NW (to) NW (work) NW (the) NW (bugs) NW (out) NW (of) NW (the) NW (\\normal) NW (look") NW (and) NW (then) NW (start) NW (using) NW (LameTeX.) NW (Then) NW (you're) NW (guaranteed) NW
+ /Wizard LeftMarginIcon (that) NW (your) NW (document) NW (will) NW (work) NW (on) NW (both) NW (text) NW (formatters.) NW
+NEWPARA
+
+/vspace 12 def NEWPARA
+
+BULLET
+ (Also) NW (glance) NW (at) NW (the) NW (section) NW (on) NW (Stealth) NW (Commands,) NW (which) NW (are) NW (LameTeX) NW (commands) NW (over) NW (and) NW (above) NW (the) NW (normal) NW (LaTeX) NW (commands.) NW (The) NW (stealth) NW (command) NW
+[ 14 false ] NewFont % /cm10tt
+
+/vspace 12 def NEWPARA
+ (ignore) NW
+[ 1 false ] NewFont % /cm10rm
+ (tells) NW (LameTeX) NW (to) NW (ignore) NW (LaTeX) NW (commands) NW (it) NW (doesn't) NW (know) NW (and) NW (can't) NW (skip) NW (gracefully.) NW
+NEWPARA
+
+/vspace 12 def NEWPARA
+
+BULLET
+
+ /Wizard LeftMarginIcon (LameTeX) NW (is) NW (written) NW (in) NW (C++,) NW (and) NW (the) NW (code) NW (itself) NW (is) NW (documented) NW (separately.) NW
+NEWPARA
+
+/vspace 12 def NEWPARA
+
+BULLET
+ (The) NW (PostScript) NW (routine) NW (for) NW (breaking) NW (a) NW (PostScript) NW (path) NW (into) NW (tiles) NW (is) NW (breakpath.ps.) NW (And) NW (the) NW (formatting) NW (language) NW (is) NW (handled) NW (by) NW (format.ps.) NW (You) NW (might) NW (find) NW (these) NW (programs) NW (useful) NW (outside) NW (of) NW (LameTeX.) NW (For) NW (example,) NW (I) NW (wrote) NW (a) NW (3D) NW (drawing) NW (environment) NW (which) NW (used) NW (breakpath.ps) NW (for) NW (tiling.) NW
+NEWPARA
+
+/vspace 12 def NEWPARA
+
+BULLET
+ (There) NW (is) NW (an) NW (appendix) NW (at) NW (the) NW (back) NW (on) NW (installing) NW (LameTeX.) NW
+NEWPARA
+
+/vspace 12 def NEWPARA
+
+BULLET
+ (The) NW (author) NW (is) NW (a) NW (nice) NW (guy) NW (who) NW (will) NW (be) NW (happy) NW (to) NW (help) NW (you) NW (out.) NW
+ /Wizard LeftMarginIcon (Send) NW (e-mail) NW (to) NW
+[ 14 false ] NewFont % /cm10tt
+ (jgm@cs.brown.edu) NW
+[ 1 true ] NewFont % /cm10rm
+ (.) NW (I) NW (would) NW (like) NW (to) NW (know) NW (what) NW (you) NW (think) NW (of) NW (LameTeX) NW (and) NW (if) NW (you) NW (found) NW (it) NW (useful.) NW (I) NW (am) NW (also) NW (accumulating) NW (a) NW (list) NW (of) NW (enhancements) NW (to) NW (make) NW (to) NW (the) NW (program) NW (and) NW (would) NW (gratefully) NW (receive) NW (your) NW (ideas) NW (on) NW (this) NW (subject.) NW
+/leftmargin 90 def
+/rightmargin 90 def
+
+/leftmargin 90 def
+/rightmargin 90 def
+
+/parindent 18 def
+
+/rightmargin 90 def
+
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (1.5) NW
+15 HSpace
+ (Major) NW (LaTeX) NW (Commands) NW (LameTeX) NW (Cannot) NW (Handle) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 40.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (The) NW (most) NW (obvious) NW (difference) NW (between) NW (the) NW (two) NW (programs) NW (is) NW (that) NW (LameTeX) NW (will) NW (never) NW (hyphenate) NW (words,) NW (and) NW (will) NW (tend) NW (to) NW (not) NW (have) NW (quite) NW (as) NW (nice) NW (spacing) NW (as) NW (LaTeX) NW (does.) NW (LameTeX) NW (can) NW (only) NW (produce) NW (PostScript) NW (code,) NW (and) NW (the) NW (code) NW (it) NW (does) NW (produce) NW (is) NW (complicated) NW (and) NW (therefore) NW (a) NW (little) NW (long.) NW
+NEWPARA
+ (LameTeX) NW (uses) NW (the) NW (LaTeX) NW (fonts) NW (and) NW (handles) NW (the) NW (computer) NW (modern) NW (font) NW (robustly,) NW (but) NW (it) NW (cannot) NW (currently) NW (handle) NW (other) NW (font) NW (families) NW (or) NW (normal) NW (PostScript) NW (fonts.) NW (You) NW (cannot) NW (use) NW (fancy) NW (non-ascii) NW (characters) NW (like) NW (the) NW (heart) NW (and) NW (the) NW (copyright) NW (symbol.) NW
+NEWPARA
+ (You) NW (cannot) NW (define) NW (new) NW (commands) NW (in) NW (LameTeX,) NW (make) NW (boxes) NW (around) NW (words,) NW (or) NW (use) NW (fancy) NW (document) NW (formats) NW (like) NW (\\titlepage",) NW (or) NW (\\letter".) NW (You) NW (cannot) NW (do) NW (fancy) NW (tabbing) NW (or) NW (horizontal) NW (spacing.) NW (Math) NW (mode) NW (is) NW (right) NW (out.) NW
+NEWPARA
+ (A) NW (lot) NW (of) NW (new) NW (functionality) NW (will) NW (be) NW (added) NW (in) NW (the) NW (next) NW (version) NW (of) NW (LameTeX) NW (coming) NW (late) NW (this) NW (year,) NW (but) NW (for) NW (the) NW (moment) NW (keep) NW (in) NW (mind) NW (that) NW (LameTeX) NW (is) NW (meant) NW (primarily) NW (for) NW (placing) NW (special) NW (effects) NW (on) NW (rather) NW (basic) NW (documents.) NW (Use) NW (normal) NW (LaTeX,) NW (or) NW (cut) NW (and) NW (paste) NW (between) NW (the) NW (two,) NW (if) NW (you) NW (need) NW (math) NW (mode) NW (or) NW (want) NW (to) NW (nest) NW (lots) NW (of) NW (TeX) NW (code) NW (in) NW (your) NW (LaTeX) NW (files.) NW
+ENDPAGE
+
+end
+%! page_skew.ps - A page turned at at 30 degree angle
+%% This is a LameTeX Page Description File written in PostScript.
+%% Postscript Code by Jon Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+
+%%%%%%%%%%%%%%%% width height angle left bot Skew-Page %%%%%%%%%%%%%%%%%%%%%%
+% Draws a twisted page at ang degrees, given margins and size
+/Skew-Page
+{
+ % wp hp ang lp bp
+ moveto dup cos exch sin 2 copy % wp hp cosang sinang cosang sinang
+ 5 index mul exch 6 -1 roll mul % hp cosang sinang sinwpang coswpang
+ 5 2 roll 2 index mul neg 3 1 roll mul % sinwpang coswpang -sinhpang coshpang
+ 2 index 4 index rlineto % sinwpang coswpang -sinhpang coshpang
+ rlineto neg exch neg rlineto % -empty-
+ closepath
+} bind def
+
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ bslot 50 sub ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+/PageShape
+{
+ 8.5 in 11 in 30 0 0 Skew-Page
+ currentflat 8 mul
+} bind def
+
+% Anything to do when a new page is started
+/StartPage
+{
+ 0 0 moveto -30 rotate
+} bind def
+
+% Anything to do when a new page is ended
+/EndPage
+{
+ pagenumber 4 string cvs
+ dup stringwidth pop 8.5 in
+ formatdict /rightmargin get sub
+ formatdict /leftmargin get sub
+ exch sub 2 div formatdict /leftmargin get add
+ formatdict /bottommargin get 2 div moveto show
+ /pagenumber pagenumber 1 add def
+ showpage % A new page here really does mean start a new page.
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+% Page-specific defaults that describe the page.
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout false def % true means fill outside shape. false is inside.
+
+ /in {72 mul} def
+ /BM 0 def % Bottom Margin
+ /TM 11 in def % Top Margin
+ /LM 0 def % Left Margin
+ /RM 8.5 in def % Right Margin
+
+ userdict /pagenumber known not % Initialize pagenumber if not done already
+ { userdict begin /pagenumber 1 def end} if
+} bind def
+
+InitPage % Just loading this file initializes the page.
+formatdict begin
+
+STARTPAGE
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+21.6 BASELINESKIP
+
+[ 9 false ] NewFont % /cm18bf
+
+
+/vspace 112.5 def NEWPARA
+ (Chapter) NW (2) NW
+26.4 BASELINESKIP
+
+/vspace 46.6 def NEWPARA
+
+[ 10 false ] NewFont % /cm22bf
+ (Simple) NW (LameTeX) NW (Formatting) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 92.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (This) NW (chapter) NW (introduces) NW (to) NW (the) NW (essentials) NW (of) NW (running) NW (the) NW (LameTeX) NW (program,) NW (but) NW (is) NW (primarily) NW (an) NW (overview) NW (of) NW (LaTeX) NW (buzzwords) NW (and) NW (syntax.) NW (Those) NW (grossly) NW (familiar) NW (with) NW (LaTeX) NW (can) NW (just) NW (glimpse) NW (at) NW (the) NW (little) NW (wizards) NW (and) NW (skip) NW (to) NW (the) NW (next) NW (section.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (2.6) NW
+15 HSpace
+ (Running) NW (LameTeX) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 40.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+13.2 BASELINESKIP
+
+[ 13 false ] NewFont % /cm11bf
+
+
+/vspace 4.5 def NEWPARA
+ (2.6.3) NW
+15 HSpace
+ (Useful) NW (Buzzwords) NW (To) NW (Know) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 18 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (A) NW
+[ 12 false ] NewFont % /cm10it
+ (LaTeX) NW (file) NW
+[ 1 false ] NewFont % /cm10rm
+ (is) NW (a) NW (text) NW (file) NW (full) NW (of) NW (the) NW (words) NW (of) NW (your) NW (document,) NW (plus) NW (some) NW (fancy) NW (formatting) NW (commands.) NW (The) NW (LaTeX) NW (text) NW (formatter) NW (knows) NW (how) NW (to) NW (interpret) NW (the) NW (formatting) NW (commands) NW (from) NW (your) NW (LaTeX) NW (file) NW (and) NW (produce) NW (a) NW (printed) NW (result.) NW (The) NW (filename) NW (of) NW (a) NW (LaTeX) NW (file) NW (usually) NW (ends) NW (with) NW (the) NW (suffix) NW (\\.tex") NW (but) NW (this) NW (is) NW (not) NW (required.) NW
+NEWPARA
+ (A) NW
+[ 12 false ] NewFont % /cm10it
+ (LameTeX) NW (file) NW
+[ 1 false ] NewFont % /cm10rm
+ (is) NW (just) NW (like) NW (a) NW (LaTeX) NW (file,) NW (except) NW (that) NW (LameTeX) NW (has) NW (some) NW (extra) NW (text) NW (formatting) NW (commands) NW (that) NW (LaTeX) NW (doesn't) NW (know.) NW (Also,) NW (LameTeX) NW (doesn't) NW (know) NW (all) NW (of) NW (the) NW (commands) NW (that) NW (LaTeX) NW (knows.) NW (Fortunately,) NW (for) NW (the) NW (basic) NW (commands,) NW (both) NW (programs) NW (work) NW (fine.) NW (For) NW (reference,) NW (there) NW (is) NW (a) NW (complete) NW (list) NW (of) NW (all) NW (text) NW (formatting) NW (commands) NW (that) NW (LameTeX) NW (understands) NW (at) NW (the) NW (end) NW (of) NW (this) NW (document.) NW
+NEWPARA
+ (LaTeX) NW (will) NW (understand) NW (any) NW (well-written) NW (LameTeX) NW (document) NW (because) NW (the) NW (fancy) NW (LameTeX) NW (commands) NW (are) NW (\\hidden") NW (inside) NW (comments.) NW (Any) NW (LameTeX) NW (command) NW (that) NW (LaTeX) NW (doesn't) NW (know) NW (is) NW (called) NW (a) NW
+[ 12 false ] NewFont % /cm10it
+ (stealth) NW (command) NW
+[ 1 true ] NewFont % /cm10rm
+ (.) NW
+NEWPARA
+ (A) NW (big) NW (part) NW (of) NW (LameTeX) NW (is) NW (being) NW (able) NW (to) NW (make) NW (your) NW (own) NW (very) NW (fancy) NW (page) NW (descriptions.) NW (A) NW
+[ 12 false ] NewFont % /cm10it
+ (page) NW (description) NW (file) NW
+[ 1 false ] NewFont % /cm10rm
+ (is) NW (a) NW (file) NW (full) NW (of) NW (some) NW (PostScript) NW (page) NW (descriptions,) NW (written) NW (in) NW (the) NW (PostScript) NW (programming) NW (language.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+13.2 BASELINESKIP
+
+[ 13 false ] NewFont % /cm11bf
+
+
+/vspace 4.5 def NEWPARA
+ (2.6.4) NW
+15 HSpace
+ (Example) NW (1) NW (-) NW (A) NW (Plain) NW (Vanilla) NW (Text) NW (File) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 18 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (LameTeX) NW (comes) NW (with) NW (a) NW (number) NW (of) NW (example) NW (LameTeX) NW (files.) NW (They) NW (all) NW (begin) NW (with) NW (the) NW (prefix) NW (\\example",) NW (then) NW (a) NW (number,) NW (and) NW (end) NW (with) NW (the) NW (conventional) NW (suffix) NW (\\.tex".) NW
+NEWPARA
+ (Try) NW (formatting) NW (the) NW (LameTeX) NW (file) NW
+[ 14 false ] NewFont % /cm10tt
+ (example1.tex) NW
+[ 1 false ] NewFont % /cm10rm
+ (by) NW (typing) NW
+[ 14 false ] NewFont % /cm10tt
+ (lametex) NW (example1.tex) NW
+[ 1 true ] NewFont % /cm10rm
+ (.) NW (LameTeX) NW (will) NW (process) NW (the) NW (file,) NW (converting) NW (it) NW (to) NW (the) NW (graphics) NW (language) NW (PostScript.) NW (Your) NW (screen) NW (should) NW (look) NW (something) NW (like) NW (this:) NW
+NEWPARA /justify 108 def
+
+NEWPARA
+
+[ 14 true ] NewFont % /cm10tt
+ (vegas) NW
+[ 0 false ] NewFont (%) NW
+
+[ 8 false ] NewFont % /cm10bf
+ (lametex) NW (example.tex) NW
+[ 14 false ] NewFont % /cm10tt
+
+/vspace 12 def NEWPARA
+ (This) NW (is) NW (LameTeX,) NW (C++) NW (Version) NW (pre) NW (1.0) NW
+/vspace 12 def NEWPARA
+ (Processing) NW (example1.tex...) NW
+/vspace 12 def NEWPARA
+ (Opening) NW (example1.PS) NW (for) NW (temporary) NW (output...) NW
+/vspace 12 def NEWPARA
+ (Including) NW (PostScript) NW (file) NW (/home/jgm/PS/Lametex/page/page) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (latex.ps) NW
+/vspace 12 def NEWPARA
+ (Making) NW (dummy) NW (file) NW (for) NW (snarfing) NW (LaTeX) NW (fonts...) NW
+/vspace 12 def NEWPARA
+ (Snarfing) NW (LaTeX) NW (fonts...) NW
+/vspace 12 def NEWPARA
+ (This) NW (is) NW (TeX,) NW (C) NW (Version) NW (3.0) NW
+/vspace 12 def NEWPARA
+ (\(lametex.tex) NW
+/vspace 12 def NEWPARA
+ (LaTeX) NW (Version) NW (2.09) NW (\(24) NW (May) NW (1989\)) NW
+/vspace 12 def NEWPARA
+ (\(/cs/lib/tex/inputs/report.sty) NW
+/vspace 12 def NEWPARA
+ (Document) NW (Style) NW (`report') NW (\(13) NW (Nov) NW (89\).) NW
+/vspace 12 def NEWPARA
+ (\(/cs/lib/tex/inputs/rep10.sty\)) NW (\(/cs/lib/tex/inputs/titlepage.sty\)\)) NW
+/vspace 12 def NEWPARA
+ (\(/cs/lib/tex/inputs/10pt.sty\)) NW (\(lametex.aux\)) NW ([) NW (1) NW (]) NW (\(lametex.aux\)) NW (\)) NW
+/vspace 12 def NEWPARA
+ (Output) NW (written) NW (on) NW (lametex.dvi) NW (\(1) NW (page,) NW (344) NW (bytes\).) NW
+/vspace 12 def NEWPARA
+ (Transcript) NW (written) NW (on) NW (lametex.log.) NW
+/vspace 12 def NEWPARA
+ (This) NW (is) NW (dvips) NW (5.47) NW (Copyright) NW (1986-91) NW (Radical) NW (Eye) NW (Software) NW
+/vspace 12 def NEWPARA
+ (') NW (TeX) NW (output) NW (1992.08.22:0325') NW (-) NW (lametex.ps) NW
+/vspace 12 def NEWPARA
+ (\(tex.pro\).) NW ([) NW (1) NW (]) NW
+/vspace 12 def NEWPARA
+
+28.34 HSpace
+ (**) NW (SNARF!) NW (**) NW
+/vspace 12 def NEWPARA
+ (Created) NW (PostScript) NW (file) NW (example1.ps) NW
+/vspace 12 def NEWPARA
+ (vegas) NW
+[ 0 false ] NewFont (%) NW
+
+[ 14 false ] NewFont % /cm10tt
+
+NEWPARA /justify 102 def
+
+/vspace 12 def NEWPARA
+
+[ 1 false ] NewFont % /cm10rm
+ (LameTeX) NW (has) NW (produced) NW (a) NW (new) NW (file,) NW
+[ 14 false ] NewFont % /cm10tt
+ (example1.ps) NW
+[ 1 false ] NewFont % /cm10rm
+ (that) NW (you) NW (can) NW (print) NW (on) NW (any) NW (PostScript) NW (printer) NW (using) NW (the) NW
+[ 14 false ] NewFont % /cm10tt
+ (lpr) NW
+[ 1 false ] NewFont % /cm10rm
+ (command.) NW (Alternatively,) NW (you) NW (can) NW (view) NW (it) NW (on-line) NW (by) NW (using) NW (GhostScript) NW (or) NW (some) NW (other) NW (PostScript) NW (previewer.) NW (It) NW (is) NW (recommended) NW (that) NW (you) NW
+[ 12 false ] NewFont % /cm10it
+ (always) NW
+[ 1 false ] NewFont % /cm10rm
+ (use) NW (a) NW (PostScript) NW (previewer) NW (before) NW (printing,) NW (just) NW (to) NW (make) NW (sure) NW (that) NW (you) NW (get) NW (what) NW (you) NW (want.) NW
+NEWPARA
+ (As) NW (part) NW (of) NW (the) NW (text) NW (formatting) NW (process,) NW (LameTeX) NW (must) NW (acquire) NW (the) NW (correct) NW (\\official") NW (LaTeX) NW (fonts,) NW (and) NW (to) NW (do) NW (this,) NW (it) NW (makes) NW (a) NW (small) NW (trojan) NW (horse) NW (file) NW (and) NW (tricks) NW (LaTeX) NW (into) NW (interpreting) NW (it.) NW (The) NW (dummy) NW (file) NW (it) NW (creates) NW (is) NW
+[ 12 false ] NewFont % /cm10it
+ (lametex.tex) NW
+[ 1 false ] NewFont % /cm10rm
+
+ /Wizard LeftMarginIcon
+[ 1 false ] NewFont % /cm10rm
+ (which) NW (is) NW (formatted) NW (by) NW (LaTeX) NW (to) NW (become) NW
+[ 12 false ] NewFont % /cm10it
+ (lametex.ps) NW
+[ 1 true ] NewFont % /cm10rm
+ (.) NW (All) NW (temporary) NW (files) NW (are) NW (deleted) NW (after) NW (they're) NW (used.) NW
+NEWPARA
+ (You) NW (are) NW (welcome) NW (to) NW (omit) NW (the) NW (suffix) NW
+[ 12 false ] NewFont % /cm10it
+ (.tex) NW
+[ 1 false ] NewFont % /cm10rm
+ (if) NW (you) NW (wish,) NW (just) NW (as) NW (with) NW (LaTeX.) NW (For) NW (example,) NW (you) NW (could) NW (have) NW (typed) NW
+[ 14 false ] NewFont % /cm10tt
+ (lametex) NW (example1) NW
+[ 1 true ] NewFont % /cm10rm
+ (.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+13.2 BASELINESKIP
+
+[ 13 false ] NewFont % /cm11bf
+
+
+/vspace 4.5 def NEWPARA
+ (2.6.5) NW
+15 HSpace
+ (Specifying) NW (the) NW (Default) NW (Page) NW (Description) NW (File) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 18 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+
+ /Wizard LeftMarginIcon
+/parindent 0 def
+
+NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (The) NW
+[ 12 false ] NewFont % /cm10it
+ (default) NW (page) NW (description) NW
+[ 1 false ] NewFont % /cm10rm
+ (is) NW (the) NW (PostScript) NW (file) NW (that) NW (is) NW (used) NW (to) NW (decide) NW (what) NW (the) NW (page) NW (should) NW (look) NW (like,) NW (if) NW (you) NW (don't) NW (specify) NW (a) NW (page) NW (description.) NW (You) NW (can) NW (use) NW (the) NW (-p) NW (command) NW (line) NW (option) NW (to) NW (specify) NW (a) NW (new) NW (page) NW (description.) NW (Try) NW (typing) NW
+[ 14 false ] NewFont % /cm10tt
+ (lametex) NW (-p) NW (page) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (skew.ps) NW (example1.ps) NW
+[ 1 false ] NewFont % /cm10rm
+ (to) NW (format) NW (the) NW (same) NW (example) NW (LameTeX) NW (file) NW (with) NW (a) NW (different) NW (page) NW (description.) NW (You) NW (can) NW (use) NW (any) NW (of) NW (the) NW (page) NW (descriptions) NW (in) NW (the) NW (LameTeX) NW (page) NW (description) NW (directory.) NW
+NEWPARA
+ (If) NW (you) NW (don't) NW (specify) NW (the) NW (default) NW (page) NW (description,) NW (it) NW (automatically) NW (defaults) NW (to) NW
+[ 14 false ] NewFont % /cm10tt
+ (page) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (latex.ps) NW
+[ 1 true ] NewFont % /cm10rm
+ (.) NW
+NEWPARA
+ (You) NW (can) NW (use) NW (the) NW (-t) NW (command) NW (to) NW (produce) NW (plain) NW (ASCII) NW (text) NW (output.) NW (Just) NW (type) NW
+[ 14 false ] NewFont % /cm10tt
+ (lametex) NW (-t) NW (yourfile.tex) NW
+[ 1 false ] NewFont % /cm10rm
+ (and) NW (the) NW (result) NW (will) NW (be) NW (placed) NW (in) NW (yourfile.txt.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (2.7) NW
+15 HSpace
+ (A) NW (Brief) NW (Review) NW (of) NW (LaTeX) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 40.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (Following) NW (is) NW (a) NW (brief) NW (review) NW (of) NW (what) NW (normal) NW (LaTeX) NW (commands) NW (look) NW (like.) NW (You) NW (should) NW (peek) NW (at) NW (a) NW (real) NW (LaTeX) NW (manual) NW (if) NW (this) NW (section) NW (confuses) NW (you.) NW
+NEWPARA
+ (If) NW (you) NW (formatted) NW
+[ 14 false ] NewFont % /cm10tt
+ (example1.tex) NW
+[ 1 true ] NewFont % /cm10rm
+ (,) NW (you) NW (saw) NW (that) NW (the) NW (printed) NW (result) NW (was) NW (placed) NW (so) NW (that) NW (it) NW (lined) NW (up) NW (on) NW (both) NW (columns.) NW (Each) NW (new) NW (paragraph) NW (was) NW (indented,) NW (and) NW (the) NW (title) NW (was) NW (centered) NW (on) NW (the) NW (page.) NW
+NEWPARA
+ (Take) NW (a) NW (look) NW (at) NW
+[ 14 false ] NewFont % /cm10tt
+ (example1.tex) NW
+[ 1 true ] NewFont % /cm10rm
+ (,) NW (and) NW (you) NW (will) NW (see) NW (that) NW (the) NW (plain) NW (LameTeX) NW (file) NW (is) NW (not) NW (nearly) NW (so) NW (pretty!) NW (LameTeX) NW (was) NW (responsible) NW (for) NW (doing) NW (the) NW (formatting.) NW (LameTeX) NW (shares) NW (responsibility) NW (for) NW (decision-making) NW (with) NW (you,) NW (the) NW (user.) NW (For) NW (example,) NW (there) NW (is) NW (a) NW (special) NW (notation) NW (that) NW (makes) NW (LameTeX) NW (center) NW (the) NW (title) NW (of) NW (the) NW (document.) NW (A) NW (normal) NW (LameTeX) NW (document) NW (is) NW (full) NW (of) NW (such) NW (decision-making) NW (commands,) NW (either) NW (to) NW (ask) NW (for) NW (something) NW (new,) NW (or) NW (to) NW (override) NW (a) NW (LameTeX) NW (decision) NW (\(like) NW (whether) NW (to) NW (indent) NW (a) NW (paragraph\).) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+13.2 BASELINESKIP
+
+[ 13 false ] NewFont % /cm11bf
+
+
+/vspace 4.5 def NEWPARA
+ (2.7.6) NW
+15 HSpace
+
+[ 0 true ] NewFont (\\) NW
+
+[ 13 true ] NewFont % /cm11bf
+ (documentstyle) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 18 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (The) NW (most) NW (important) NW (command) NW (in) NW (this) NW (example) NW (is) NW
+[ 14 false ] NewFont % /cm10tt
+
+[ 0 false ] NewFont (\\) NW
+
+[ 14 false ] NewFont % /cm10tt
+ (documentstyle) NW
+[ 0 true ] NewFont ({) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (report) NW
+[ 0 true ] NewFont (}) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (.) NW
+NEWPARA
+ (LaTeX) NW (wants) NW (to) NW (know) NW (what) NW (kind) NW (of) NW (document) NW (you) NW (are) NW (trying) NW (to) NW (produce.) NW (LameTeX,) NW (it) NW (turns) NW (out,) NW (doesn't) NW (really) NW (care!) NW (All) NW (document) NW (styles) NW (look) NW (the) NW (same) NW (to) NW (LameTeX,) NW (but) NW (unfortunately) NW (you) NW (must) NW (have) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (documentstyle) NW (command) NW (anyway,) NW (just) NW (because) NW (that) NW (is) NW (the) NW (way) NW (the) NW (cruel) NW (world) NW (is) NW (sometimes.) NW (Plus,) NW (you) NW (need) NW (it) NW (if) NW (you) NW (are) NW (ever) NW (going) NW (to) NW (run) NW (your) NW (document) NW (through) NW (normal) NW (LaTeX.) NW
+NEWPARA
+ (There) NW (are) NW (three) NW (alternate) NW (versions) NW (of) NW (this) NW (command,) NW
+[ 14 false ] NewFont % /cm10tt
+
+[ 0 false ] NewFont (\\) NW
+
+[ 14 false ] NewFont % /cm10tt
+ (documentstyle) NW ([) NW (10pt) NW (]) NW
+[ 0 true ] NewFont ({) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (report) NW
+[ 0 true ] NewFont (}) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (,) NW
+/vspace 12 def NEWPARA
+
+[ 14 false ] NewFont % /cm10tt
+
+[ 0 false ] NewFont (\\) NW
+
+[ 14 false ] NewFont % /cm10tt
+ (documentstyle) NW ([) NW (11pt) NW (]) NW
+[ 0 true ] NewFont ({) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (report) NW
+[ 0 true ] NewFont (}) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (,) NW
+/vspace 12 def NEWPARA
+ (and) NW
+[ 14 false ] NewFont % /cm10tt
+
+[ 0 false ] NewFont (\\) NW
+
+[ 14 false ] NewFont % /cm10tt
+ (documentstyle) NW ([) NW (12pt) NW (]) NW
+[ 0 true ] NewFont ({) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (report) NW
+[ 0 true ] NewFont (}) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (,) NW (which) NW (specify) NW (that) NW (the) NW (default) NW (font) NW (size) NW (for) NW (this) NW (document) NW (will) NW (be) NW (10) NW (point,) NW (11) NW (point,) NW (or) NW (12) NW (point) NW (respectively.) NW (The) NW (real) NW (LaTeX) NW (text) NW (formatter) NW (can) NW (do) NW (a) NW (lot) NW (of) NW (other) NW (fancy) NW (things) NW (with) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (documentstyle) NW (command,) NW (but) NW (this) NW (version) NW (of) NW (LameTeX) NW (cannot.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+13.2 BASELINESKIP
+
+[ 13 false ] NewFont % /cm11bf
+
+
+/vspace 4.5 def NEWPARA
+ (2.7.7) NW
+15 HSpace
+
+[ 0 true ] NewFont (\\) NW
+
+[ 13 true ] NewFont % /cm11bf
+ (begin) NW (and) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 13 true ] NewFont % /cm11bf
+ (end) NW (Delimit) NW (Environments) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 18 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (An) NW
+[ 12 false ] NewFont % /cm10it
+ (environment) NW
+[ 1 false ] NewFont % /cm10rm
+ (is) NW (an) NW (important) NW (LaTeX) NW (concept.) NW (It) NW (tells) NW (LaTeX) NW (where) NW (to) NW (start) NW (and) NW (stop) NW (doing) NW (fancy) NW (stuff.) NW (For) NW (example,) NW (in) NW (the) NW (example) NW (LameTeX) NW (file) NW
+[ 14 false ] NewFont % /cm10tt
+ (example1.tex) NW
+[ 1 false ] NewFont % /cm10rm
+ (there) NW (are) NW (two) NW (commands,) NW
+[ 14 false ] NewFont % /cm10tt
+
+[ 0 false ] NewFont (\\) NW
+
+[ 14 false ] NewFont % /cm10tt
+ (begin) NW
+[ 0 true ] NewFont ({) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (center) NW
+[ 0 false ] NewFont (}) NW
+
+[ 14 false ] NewFont % /cm10tt
+ (and) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (end) NW
+[ 0 true ] NewFont ({) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (center) NW
+[ 0 true ] NewFont (}) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (.) NW (The) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (begin) NW (command) NW (says) NW (\\start) NW (doing) NW (a) NW (fancy) NW (thing,) NW (which) NW (is) NW (to) NW (center) NW (every) NW (line.".) NW (Likewise,) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (end) NW (command) NW (is) NW (very) NW (important) NW (because) NW (it) NW (tells) NW (LaTeX) NW (where) NW (to) NW
+[ 8 false ] NewFont % /cm10bf
+ (stop) NW
+[ 1 false ] NewFont % /cm10rm
+ (centering.) NW (We) NW (say) NW (that) NW (the) NW (text) NW (in-between) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (begin) NW (and) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (end) NW (command) NW (is) NW (\\in) NW (a) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (center) NW (environment".) NW
+
+20 BASELINESKIP
+
+NEWPARA
+ (A) NW (shorthand) NW (notation) NW (for) NW (an) NW (environment) NW (is) NW (to) NW (use) NW (braces.) NW (For) NW (example,) NW (the) NW (line) NW (of) NW (text) NW
+NEWPARA
+
+[ 14 false ] NewFont % /cm10tt
+
+[ 0 false ] NewFont (\\) NW
+
+[ 14 false ] NewFont % /cm10tt
+ (begin) NW
+[ 0 true ] NewFont ({) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (center) NW
+[ 0 false ] NewFont (}) NW
+
+[ 14 false ] NewFont % /cm10tt
+ (this) NW (text) NW (is) NW (centered) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (end) NW
+[ 0 true ] NewFont ({) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (center) NW
+[ 0 true ] NewFont (}) NW
+
+NEWPARA
+
+[ 1 true ] NewFont % /cm10rm
+ (could) NW (be) NW (re-written) NW (as) NW (follows:) NW
+NEWPARA
+
+[ 14 false ] NewFont % /cm10tt
+
+[ 0 false ] NewFont ({) NW
+
+[ 14 false ] NewFont % /cm10tt
+
+[ 0 true ] NewFont (\\) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (center) NW (this) NW (text) NW (is) NW (centered) NW
+[ 0 true ] NewFont (}) NW
+
+12 BASELINESKIP
+
+NEWPARA
+
+[ 1 true ] NewFont % /cm10rm
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+13.2 BASELINESKIP
+
+[ 13 false ] NewFont % /cm11bf
+
+
+/vspace 4.5 def NEWPARA
+ (2.7.8) NW
+15 HSpace
+ (Text) NW (Goes) NW (in) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 13 true ] NewFont % /cm11bf
+ (document) NW (Environment) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 18 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (Whenever) NW (you) NW (use) NW (LaTeX,) NW (you) NW (must) NW (place) NW (any) NW (text) NW (to) NW (be) NW (printed) NW (inside) NW (of) NW (a) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (document) NW (environment.) NW (Don't) NW (place) NW (text) NW (outside) NW (of) NW (a) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (document) NW (environment,) NW (although) NW (you) NW (may) NW (place) NW (text) NW (formatting) NW (commands) NW (there.) NW
+NEWPARA
+ (The) NW (two) NW (commands) NW (you) NW (will) NW
+[ 12 false ] NewFont % /cm10it
+ (always) NW
+[ 1 false ] NewFont % /cm10rm
+ (want) NW (to) NW (make) NW (part) NW (of) NW (your) NW (LameTeX) NW (documents) NW (are) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (documentstyle) NW (and) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (document.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+13.2 BASELINESKIP
+
+[ 13 false ] NewFont % /cm11bf
+
+
+/vspace 4.5 def NEWPARA
+ (2.7.9) NW
+15 HSpace
+ (Example) NW (2) NW (-) NW (Environments) NW (Can) NW (Be) NW (Fancy) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 18 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (Try) NW (running) NW (the) NW (second) NW (example) NW (file,) NW (by) NW (typing) NW
+[ 14 false ] NewFont % /cm10tt
+ (lametex) NW (example2.tex) NW
+[ 1 true ] NewFont % /cm10rm
+ (.) NW (This) NW (LameTeX) NW (file) NW (doesn't) NW (have) NW (any) NW (stealth) NW (commands) NW (either.) NW (Like) NW
+[ 14 false ] NewFont % /cm10tt
+ (example1.tex) NW
+[ 1 true ] NewFont % /cm10rm
+ (,) NW (it) NW (is) NW (just) NW (a) NW (demonstration) NW (that) NW (LameTeX) NW (can) NW (handle) NW (some) NW (pretty) NW (complicated) NW (normal) NW (LaTeX) NW (text) NW (formatting) NW (commands.) NW
+NEWPARA
+ (This) NW (file) NW (contains) NW (some) NW (fancy) NW (environments.) NW (For) NW (example,) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (verse) NW (command) NW (modifies) NW (the) NW (environment) NW (in) NW (several) NW (ways) NW (to) NW (allow) NW (a) NW (natural) NW (look) NW (to) NW (poems.) NW
+NEWPARA
+ (The) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (enumerate) NW (environment) NW (indents) NW (the) NW (text) NW (and) NW (numbers) NW (all) NW (paragraphs) NW (that) NW (begin) NW (with) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (item) NW (command.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+13.2 BASELINESKIP
+
+[ 13 false ] NewFont % /cm11bf
+
+
+/vspace 4.5 def NEWPARA
+ (2.7.10) NW
+15 HSpace
+ (Environments) NW (Can) NW (Be) NW (Nested) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 18 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (Also) NW (notice) NW (that) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (enumerate) NW (commands) NW (can) NW (be) NW (nested) NW (inside) NW (one) NW (another.) NW (Also) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (bf) NW (command) NW (for) NW
+[ 8 false ] NewFont % /cm10bf
+ (boldface) NW
+[ 1 false ] NewFont % /cm10rm
+ (is) NW (nested) NW (inside) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (Huge) NW (command) NW (for) NW
+26.4 BASELINESKIP
+
+[ 2 false ] NewFont % /cm22rm
+
+26.4 woids 1 gt { 0 exch READJUST } { pop } ifelse
+ (Huge) NW
+12 BASELINESKIP
+
+[ 1 false ] NewFont % /cm10rm
+ (text.) NW (Putting) NW (the) NW (boldface) NW (environment) NW (inside) NW (the) NW (Huge) NW (environment) NW (yields) NW (text) NW (that) NW (is) NW
+26.4 BASELINESKIP
+
+[ 10 false ] NewFont % /cm22bf
+
+26.4 woids 1 gt { 0 exch READJUST } { pop } ifelse
+ (both) NW (bold) NW (and) NW (Huge) NW
+12 BASELINESKIP
+
+[ 1 true ] NewFont % /cm10rm
+ (.) NW
+NEWPARA
+ (In) NW (general,) NW (when) NW (you) NW (nest) NW (environments,) NW (\\it) NW (does) NW (the) NW (right) NW (thing.") NW (In) NW (general) NW (you) NW (can) NW (trust) NW (LaTeX) NW (to) NW
+[ 12 false ] NewFont % /cm10it
+ (do) NW (the) NW (right) NW (thing) NW
+[ 1 true ] NewFont % /cm10rm
+ (.) NW (Can) NW (you) NW (trust) NW (LameTeX?) NW (Well) NW (...) NW (you) NW (know) NW (the) NW (old) NW (saying:) NW (\\Trust) NW (your) NW (mother.) NW (But) NW (watch) NW (her!") NW
+/rightmargin -18 def
+
+/leftmargin 36 def
+/rightmargin 36 def
+
+/leftmargin 36 def
+/rightmargin 36 def
+
+ENDPAGE
+
+end
+%! page_dagger.ps - A dagger on a standard rectangular page.
+%% This is a LameTeX Page Description File written in PostScript.
+%% Postscript Code by Jon Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+%% This is a page template for the LameTeX formatter
+%% A normal page with a dagger in the middle for LameTeX output to look like
+%% LaTeX output
+
+%% Use this in conjunction with dagger.ps!
+
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ 20 ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+/DaggerBox
+{
+ xlm xrm xlm sub .9 mul add ybm moveto
+ xlm xrm xlm sub 4 div add ybm ytm ybm sub .4 mul add lineto
+ xlm xrm xlm sub 6 div add ybm ytm ybm sub .45 mul add lineto
+ xlm ytm lineto xlm xrm xlm sub .2 mul add ytm lineto
+ xlm xrm xlm sub .5 mul add ybm ytm ybm sub .85 mul add lineto
+ xlm xrm xlm sub .8 mul add ybm ytm ybm sub .8 mul add lineto
+ xlm xrm xlm sub .7 mul add ybm ytm ybm sub .6 mul add lineto
+ xrm ybm lineto
+ closepath
+} bind def
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+% Makes a path that desribes the page
+/PageShape
+{
+ /xlm xlm .6 mul 3 in add def /xrm xrm .6 mul 3 in add def
+ /ybm ybm .6 mul 2 in add def /ytm ytm .6 mul 2 in add def
+ DaggerBox % gsave stroke grestore % Uncomment me to show the margin path
+% gsave stroke grestore
+ currentflat 8 mul
+} bind def
+
+% Anything to do when a new page is started
+/StartPage
+{
+ % I enclose this huge definition here for a very good reason!
+ % This is because this routine is called in-between PostScript
+ % save and restore commands and therefore all this memory I'm
+ % wasting here will be cleaned up.
+
+%!The MIT Assassin's Guild Dagger, 8/13/87 by Jonathan Monsarrat
+%% Yes, I really did do this entirely by hand, not with a drawing program!
+%% Comment: There are no comments. Why: What would I say? left hilt,
+%% middle bump near the right side of the blade right next to
+%% the shiny part?
+/dag1 {newpath 408 9 moveto
+390 18 383 27 376 40 curveto
+374.25 43.25 368 50 361 53 curveto
+357.5 54.5 353 62 350 72 curveto
+344 92 340 93 334 98 curveto
+322 108 313 112 308 115 curveto
+303 118 300 120 298 126 curveto
+296 132 294 134 289 139 curveto
+279 149 277 148 275 156 curveto
+271 172 265 176 261 182 curveto
+257 188 253 203 250 213 curveto
+248.5 218 247 222 244 228 curveto
+241 234 233 268 229 283 curveto
+227 290.5 225 302 220 307 curveto
+217.5 309.5 210 330 208 337 curveto
+202 358 199 361 192 366 curveto
+188.5 368.5 184 372 182 376 curveto
+181 378 180 380 177 382 curveto
+171 386 160 400 140 433 curveto
+137.5 437 134 443 130 441 curveto
+126 437 118 408 119 401 curveto
+120 394 125 392 130 391 curveto
+140 389 143 387 130 382 curveto
+123.5 379.5 118 373 109 372 curveto
+106 367 101 367 98 375 curveto
+97 374 91 373 88 372 curveto
+82 370 80 375 87 379 curveto
+90.5 381 83 388 79 391 curveto
+59 406 60 436 63 451 curveto
+66 466 68 468 72 472 curveto
+75 480 89 504 92 515 curveto
+93.5 520.5 93 521 90 526 curveto
+84 536 83 554 86 565 curveto
+89 576 82 578 80 582 curveto
+66 610 67 605 69 615 curveto
+70 620 70 627 69 629 curveto
+68 631 67 631 68 632 curveto
+69 633 63 637 62 638 curveto
+50 646 52 648 51 650 curveto
+36 680 39 695 29 704 curveto
+0 731 17 775 24 784 curveto
+27.5 788.5 42 792 46 796 curveto
+50 800 58 802 63 801 curveto
+83 797 94 789 97 775 curveto
+100 761 87 753 86 770 curveto
+85 787 83 789 71 788 curveto
+65 787 62 786 61 784 curveto
+59 780 59 779 52 778 curveto
+38 776 31 764 32 750 curveto
+33 745 35 756 37 755 curveto
+41 753 40 740 39 732 curveto
+45 718 57 719 61 734 curveto
+66 753 70 748 91 751 curveto
+94.5 751.5 97 752 100 756 curveto
+103 760 110 760 111 752 curveto
+112 744 113 742 118 737 curveto
+123 732 128 720 129 712 curveto
+130 704 133 702 140 697 curveto
+147 692 152 682 155 667 curveto
+158 652 161 650 171 641 curveto
+176 635.5 177 637 176 634 curveto} def
+
+/dag2 {175 631 178 627 181 621 curveto
+184 615 183 611 177 615 curveto
+183 599 188 600 185 606 curveto
+184 608 190 609 192 604 curveto
+228 627 233 631 234 636 curveto
+234.5 638.5 240 638 242 637 curveto
+244 636 253 636 260 642 curveto
+267 648 294 649 304 644 curveto
+314 639 328 622 322 609 curveto
+316 596 312 580 297 571 curveto 307 570 lineto
+289 541 283 540 279 554 curveto
+275 568 276 577 280 586 curveto
+282 590.5 283 593 278 591 curveto
+268 587 254 565 251 551 curveto
+250 546 249 538 239 536 curveto
+229 534 225 530 228 509 curveto
+229 502 230 500 242 480 curveto
+232 492 230 491 236 473 curveto
+249 451 280 395 297 370 curveto
+305.5 357.5 313 332 309 316 curveto
+305 300 329 238 327 226 curveto
+325 214 328 210 331 203 curveto
+334 196 345 188 348 178 curveto
+349 175 350 168 363 161 curveto
+367 159 371 158 369 147 curveto
+367 136 375 132 380 127 curveto
+395 112 408 78 405 62 curveto
+402 58 412 28 419 23 curveto
+422.5 20.5 420 12 416 10 curveto
+414 9 406 8 408 9 curveto closepath} def
+
+/dag3 {1 setgray 382 73 moveto
+377 102 368 110 353 126 curveto
+348 130 342 150 331 153 curveto
+323 155 311 170 305 184 curveto
+299 198 290 210 285 241 curveto
+280 272 265 270 258 329 curveto
+257 340 250 349 238 362 curveto
+226 375 227 379 226 389 curveto
+225 399 225 407 219 410 curveto
+213 413 199 422 159 480 curveto
+152 490 151 500 167 512 curveto
+199 536 209 537 210 528 curveto
+211 519 220 474 245 444 curveto
+255 432 243 432 251 420 curveto
+259 408 265 392 278 387 curveto 283 372 lineto
+295 348 296 354 293 310 curveto
+292 295 292 277 300 267 curveto
+304 262 305 257 308 245 curveto
+318 197 326 174 361 139 curveto
+385 115 392 93 390 75 curveto
+388 57 385.5 58.5 382 73 curveto} def
+
+/dag4 {368 60 moveto
+360 65 351 84 349 93 curveto
+347 102 340 115 303 148 curveto
+295 155 290 163 284 181 curveto
+278 199 239 298 238 314 curveto
+237.5 322 228 325 225 327 curveto
+222 329 219 335 218 339 curveto
+214 355 195 378 187 388 curveto
+185 390 187 400 153 442 curveto
+136 463 157 463 163 453 curveto
+166 448 175 442 180 434 curveto
+235 346 252 333 253.5 313 curveto
+255 293 255 275 269 248 curveto
+270.5 245 277 241 281 223 curveto
+285 214 293 180 302 168 curveto
+320 144 325 139 335 128 curveto
+355 110 361 97 371 62 curveto
+372 57 376 55 368 60 curveto} def
+
+/dag5 {82 426 moveto
+81 440 87 452 92 462 curveto
+89.5 467 100 469 96 477 curveto
+92 485 101 511 149 555 curveto
+147 557 154 564 147 566 curveto
+144 566 143 567 143 572 curveto
+144 574 144 575 140 573 curveto
+136 571 135 578 141 582 curveto
+139 594 142 597 159 608 curveto
+167.5 613.5 171 610 172 604 curveto
+170 598 175 592 173 585 curveto
+171 580 179 575 181 582 curveto
+183 589 191 599 205 600 curveto
+208 601 210 603 211 610 curveto
+232 620 240 629 243 630 curveto
+241 621 257 628 266 635 curveto
+275 642 282 637 281 625 curveto
+280 617 277 612 252 594 curveto
+244 588 239 573 235 555 curveto
+233 546 232 540 225 539 curveto
+221.5 538 218 549 220 558 curveto
+221 561 218 565 189 547 curveto
+174 538 174 538 173 531 curveto
+172 524 164 522 151 520 curveto
+144.5 519 142 516 141 511 curveto
+141 510 142 509 138 505 curveto
+134 501 134 498 138 487 curveto
+139 484 140 475 139 471 curveto
+139 470 124 468 120 453 curveto
+118 445 120 440 112 433 curveto
+104 426 103 421 102 412 curveto
+101 403 94 404 93 410 curveto
+92 416 83 412 82 426 curveto} def
+
+/dag6 {99 567 moveto
+97 577 99 583 104 590 curveto
+114 604 120 616 139 632 curveto
+144 636 148 637 147 639 curveto
+146 641 140 640 111 617 curveto
+106 613 100 607 94 593 curveto
+91 586 87 588 84 596 curveto
+81 604 82 609 83 618 curveto
+85 636 85 641 79 640 curveto
+73 639 69 642 72 656 curveto
+73.5 663 72 670 71 677 curveto
+70 684 79 694 91 697 curveto
+90 703 93 707 100 708 curveto
+107 709 109 709 109 698 curveto
+109 691 112 690 116 700 curveto
+122 715 114 720 111 720 curveto
+110 720 105 715 100 712 curveto
+80 700 72 702 70 692 curveto
+62 715 69 731 80 738 curveto
+98 749.5 106 743 119 720 curveto
+125 710 126 701 130 700 curveto
+134 699 136 693 129 691 curveto 123 687 lineto
+110 680 105 672 99 658 curveto
+96 651 101 643 104 650 curveto
+107 657 109 657 111 658 curveto
+113 659 117 657 119 662 curveto
+125 670 127 673 125 680 curveto
+137 690 141 689 142 678 curveto
+143 667 143 659 149 653 curveto
+155 647 152 640 160 639 curveto
+168 638 170 630 171 625 curveto
+160 625 155 622 162 620 curveto
+152 612 150 610 131 593 curveto
+127 590 126 585 130 580 curveto
+134 575 132 565 120 560 curveto
+114 557.5 110 551 105 558 curveto
+100 565 101 557 99 567 curveto
+} def
+
+/dagger {dag1 dag2 fill dag3 fill dag4 fill dag5 fill dag6 fill} def
+
+gsave
+ 3 in 2 in translate .6 .6 scale dagger
+ dag1 dag2 closepath
+ pathbbox /ytm exch def /xrm exch def /ybm exch def /xlm exch def
+grestore
+} bind def
+
+% Anything to do when a new page is ended
+/EndPage
+{
+ pagenumber 4 string cvs
+ dup stringwidth pop 8.5 in
+ formatdict /rightmargin get sub
+ formatdict /leftmargin get sub
+ exch sub 2 div formatdict /leftmargin get add
+ formatdict /bottommargin get 2 div moveto show
+ /pagenumber pagenumber 1 add def
+ showpage % A new page here really does mean start a new page.
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+% Page-specific defaults that describe the page.
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout true def % true means fill outside shape. false is inside.
+
+ /in { 72 mul } def
+ /BM 0 in def % Absolute Bottom Margin for page
+ /TM 11 in def % Absolute Top Margin for page
+ /LM 0 in def % Absolute Left Margin for page
+ /RM 8.5 in def % Absolute Right Margin for page
+
+ userdict /pagenumber known not
+ { /pagenumber 1 def } if % Initialize pagenumber if not done already
+} bind def
+
+InitPage % Just loading this file initializes the page.
+formatdict begin
+
+STARTPAGE
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+21.6 BASELINESKIP
+
+[ 9 false ] NewFont % /cm18bf
+
+
+/vspace 112.5 def NEWPARA
+ (Chapter) NW (3) NW
+26.4 BASELINESKIP
+
+/vspace 46.6 def NEWPARA
+
+[ 10 false ] NewFont % /cm22bf
+ (Stealth) NW (Commands) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 92.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (LameTeX) NW (doesn't) NW (understand) NW (all) NW (the) NW (commands) NW (that) NW (LaTeX) NW (does,) NW (but) NW (it) NW (does) NW (know) NW (a) NW (few) NW (extra) NW (that) NW (can) NW (be) NW (used) NW (for) NW (special) NW (graphics.) NW (These) NW (commands) NW (are) NW (called) NW
+[ 12 false ] NewFont % /cm10it
+ (stealth) NW (commands) NW
+[ 1 true ] NewFont % /cm10rm
+ (,) NW (and) NW (are) NW (used) NW (like) NW (any) NW (other) NW (LaTeX) NW (command,) NW (except) NW (that) NW (they) NW (appear) NW (inside) NW (comments!) NW
+NEWPARA
+ (Stealth) NW (commands) NW (are) NW (difficult) NW (to) NW (explain,) NW (but) NW (easy) NW (to) NW (demonstrate.) NW (Try) NW (looking) NW (for) NW (examples) NW (of) NW (stealth) NW (commands) NW (inside) NW
+[ 14 false ] NewFont % /cm10tt
+ (lametex) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (doc.tex) NW
+[ 1 false ] NewFont % /cm10rm
+ (and) NW (the) NW (files) NW (it) NW (includes.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (3.8) NW
+15 HSpace
+
+[ 0 true ] NewFont (\\) NW
+
+[ 11 true ] NewFont % /cm13bf
+ (begin) NW
+[ 0 true ] NewFont ({) NW
+
+[ 11 true ] NewFont % /cm13bf
+ (stealth) NW
+[ 0 true ] NewFont (}) NW
+
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 40.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (Normally) NW (it) NW (would) NW (be) NW (nice) NW (if) NW (you) NW (could) NW (make) NW (real) NW (comments) NW (without) NW (LameTeX) NW (inserting) NW (the) NW (text) NW (into) NW (your) NW (document.) NW (This) NW (is) NW (especially) NW (true) NW (if) NW (you) NW (are) NW (converting) NW (a) NW (LaTeX) NW (file) NW (to) NW (LameTeX) NW (and) NW (want) NW (to) NW (make) NW (extensive) NW (use) NW (of) NW (the) NW (comment) NW (symbol) NW (to) NW (take) NW (out) NW (commands) NW (that) NW (LameTeX) NW (cannot) NW (handle.) NW
+NEWPARA
+ (So,) NW (in) NW (order) NW (to) NW (begin) NW (a) NW (use) NW (a) NW (stealth) NW (command,) NW (you) NW (have) NW (to) NW (use) NW (a) NW (stealth) NW (environment) NW (by) NW (using) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (begin) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (stealth) NW
+[ 0 true ] NewFont (}) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (,) NW (which) NW (is) NW (the) NW (only) NW (command) NW (that) NW (is) NW (interpreted) NW (by) NW (LameTeX) NW (inside) NW (a) NW (comment) NW (but) NW (outside) NW (of) NW (a) NW (stealth) NW (environment.) NW (You) NW (cannot) NW (just) NW (say) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (stealth.) NW (If) NW (you) NW (want) NW (that,) NW (use) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (STEALTH,) NW (which) NW (will) NW (continue) NW (the) NW (stealth) NW (environment) NW (to) NW (the) NW (end) NW (of) NW (the) NW (line,) NW (and) NW (the) NW (revert) NW (back) NW (to) NW (normal.) NW (If) NW (you) NW (begin) NW (a) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (postcript) NW (environment) NW (then) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (STEALTH) NW (will) NW (wait) NW (for) NW (it) NW (to) NW (end) NW (and) NW (then) NW (terminate) NW (on) NW (the) NW (next) NW (newline.) NW
+NEWPARA
+ (You) NW (are) NW (welcome) NW (to) NW (do) NW (a) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (begin) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (stealth) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+ (at) NW (the) NW (very) NW (beginning) NW (of) NW (your) NW (document) NW (and) NW (end) NW (it) NW (with) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (end) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (stealth) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+ (at) NW (the) NW (end,) NW (but) NW (although) NW (this) NW (will) NW (be) NW (simpler,) NW (it) NW (will) NW (also) NW (mean) NW (that) NW (all) NW (text) NW (\(including) NW (plain) NW (text\)) NW (in) NW (your) NW (comments) NW (will) NW (be) NW (interpreted) NW (and) NW (included) NW (in) NW (your) NW (document.) NW (So) NW (to) NW (avoid) NW (confusion) NW (and) NW (mistakes,) NW (and) NW (to) NW (allow) NW (you) NW (to) NW (use) NW (real) NW (comment,) NW (it) NW (is) NW (best) NW (if) NW (you) NW (actually) NW (begin) NW (a) NW (local) NW (stealth) NW (environment) NW (only) NW (when) NW (needed,) NW (and) NW (close) NW (it) NW (immediately) NW (afterwards.) NW
+NEWPARA
+ (The) NW (stealth) NW (command) NW (is) NW (useful) NW (when) NW (you) NW (have) NW (some) NW (plain) NW (text) NW (that) NW (you) NW (don't) NW (want) NW (normally) NW (included) NW (in) NW (LaTeX.) NW (For) NW (example,) NW (in) NW (this) NW (document) NW (whenever) NW (it) NW (says) NW (to) NW (\\look) NW (for) NW (the) NW (little) NW (Wizard) NW (icons") NW (found) NW (in) NW (the) NW (LameTeX) NW (version,) NW (the) NW (text) NW (referring) NW (to) NW (the) NW (icons) NW (is) NW (imbedded) NW (in) NW (a) NW (stealth) NW (environment) NW (in) NW (comments,) NW (so) NW (that) NW (normal) NW (LaTeX) NW (will) NW (skip) NW (the) NW (text.) NW
+NEWPARA
+ (Warning!) NW (The) NW (stealth) NW (command) NW (does) NW (not) NW (really) NW (start) NW (a) NW (delimited) NW (environment.) NW (For) NW (example,) NW (if) NW (you) NW (were) NW (to) NW (have) NW
+/vspace 12 def NEWPARA
+
+[ 14 false ] NewFont % /cm10tt
+
+[ 0 false ] NewFont (\\) NW
+
+[ 14 false ] NewFont % /cm10tt
+ (begin) NW
+[ 0 true ] NewFont ({) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (Huge) NW
+[ 0 false ] NewFont (}) NW
+
+[ 14 false ] NewFont % /cm10tt
+
+[ 0 true ] NewFont (\\) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (bf) NW (FOO) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (end) NW
+[ 0 true ] NewFont ({) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (Huge) NW
+[ 0 false ] NewFont (}) NW
+
+[ 14 false ] NewFont % /cm10tt
+ (BAR) NW
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+ (then) NW (the) NW (FOO) NW (would) NW (be) NW (Huge) NW (and) NW (boldface,) NW (but) NW (the) NW (BAR) NW (would) NW (be) NW (neither.) NW (This) NW (is) NW (because) NW (the) NW (Huge) NW (environment) NW (serves) NW (as) NW (a) NW (delimiter) NW (for) NW (everything) NW (inside) NW (of) NW (it.) NW
+NEWPARA
+ (The) NW (stealth) NW (command) NW (is) NW (different.) NW (Unlike) NW (every) NW (other) NW (begin/end) NW (combination,) NW (if) NW (you) NW (were) NW (to) NW (say) NW
+/vspace 12 def NEWPARA
+
+[ 14 false ] NewFont % /cm10tt
+
+[ 0 false ] NewFont (%) NW
+
+[ 14 false ] NewFont % /cm10tt
+
+[ 0 true ] NewFont (\\) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (begin) NW
+[ 0 true ] NewFont ({) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (stealth) NW
+[ 0 false ] NewFont (}) NW
+
+[ 14 false ] NewFont % /cm10tt
+
+[ 0 true ] NewFont (\\) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (bf) NW (FOO) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (end) NW
+[ 0 true ] NewFont ({) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (stealth) NW
+[ 0 false ] NewFont (}) NW
+
+[ 14 false ] NewFont % /cm10tt
+ (BAR) NW
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+ (then) NW (FOO) NW (would) NW (be) NW (boldface,) NW (and) NW (BAR) NW (would) NW (also) NW (be) NW (boldface.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (3.9) NW
+15 HSpace
+ (Including) NW (a) NW (PostScript) NW (file) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 40.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (You) NW (can) NW (use) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (includeps) NW (command) NW (to) NW (include) NW (a) NW (PostScript) NW (file.) NW (For) NW (example,) NW (to) NW (include) NW (a) NW (file) NW (of) NW (PostScript) NW (definitions) NW (in) NW
+[ 8 false ] NewFont % /cm10bf
+ (gummi.ps) NW
+[ 1 false ] NewFont % /cm10rm
+ (you) NW (would) NW (type) NW (the) NW (stealth) NW (command) NW
+[ 14 false ] NewFont % /cm10tt
+
+[ 0 false ] NewFont (\\) NW
+
+[ 14 false ] NewFont % /cm10tt
+ (includeps) NW
+[ 0 true ] NewFont ({) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (gummi.ps) NW
+[ 0 true ] NewFont (}) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (3.10) NW
+15 HSpace
+ (Choosing) NW (a) NW (Page) NW (Description) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 40.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (You) NW (can) NW (use) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (pspage) NW (command) NW (to) NW (include) NW (a) NW (new) NW (page) NW (description.) NW (See) NW (the) NW (chapter) NW (on) NW (pages) NW (to) NW (learn) NW (more) NW (about) NW (this) NW (command.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (3.11) NW
+15 HSpace
+ (For) NW (Fancy) NW (LaTeX) NW (Stuff) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 40.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (You) NW (can) NW (tell) NW (LameTeX) NW (to) NW (\\skip) NW (over") NW (some) NW (part) NW (of) NW (your) NW (file) NW (in) NW (which) NW (you) NW (might,) NW (for) NW (example,) NW (imbed) NW (LaTeX) NW (commands) NW (that) NW (LameTeX) NW (cannot) NW (handle) NW (or) NW (skip) NW (gracefully.) NW (You) NW (must) NW (say) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (begin) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (ignore) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+ (and) NW (use) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (end) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (ignore) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+ (inside) NW (a) NW (stealth) NW (environment) NW (to) NW (do) NW (this) NW (enclosure.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (3.12) NW
+15 HSpace
+ (Free) NW (text) NW (PostScript) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 40.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (You) NW (can) NW (type) NW (any) NW (PostScript) NW (commands) NW (you) NW (want) NW (directly) NW (by) NW (using) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (postscript) NW (command.) NW (For) NW (example,) NW (to) NW (change) NW (the) NW (gray) NW (scale) NW (of) NW (the) NW (printed) NW (text,) NW (you) NW (can) NW (type) NW
+[ 14 false ] NewFont % /cm10tt
+
+[ 0 false ] NewFont (\\) NW
+
+[ 14 false ] NewFont % /cm10tt
+ (begin) NW
+[ 0 true ] NewFont ({) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (postscript) NW
+[ 0 false ] NewFont (}) NW
+
+[ 14 false ] NewFont % /cm10tt
+ (.6) NW (setgray) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (end) NW
+[ 0 true ] NewFont ({) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (postscript) NW
+[ 0 true ] NewFont (}) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (.) NW
+NEWPARA
+ (You) NW
+[ 8 false ] NewFont % /cm10bf
+ (cannot) NW
+[ 1 false ] NewFont % /cm10rm
+ (just) NW (say) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (postscript.) NW
+NEWPARA
+ (There) NW (are) NW (a) NW (lot) NW (of) NW (special) NW (things) NW (to) NW (learn) NW (about) NW (exactly) NW (where) NW (a) NW (postscript) NW (command) NW (\(like) NW (a) NW (grayscale\)) NW (that) NW (you) NW (supply) NW (will) NW (be) NW (applied.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (3.13) NW
+15 HSpace
+ (Hacks) NW (Just) NW (Like) NW (Mom) NW (Used) NW (To) NW (Make) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 40.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (Here's) NW (a) NW (fancier) NW (way) NW (to) NW (get) NW (your) NW (PostScript) NW (commands) NW (executed) NW (exactly) NW (where) NW (you) NW (want) NW (them) NW (to.) NW (Use) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (pscmd) NW (command) NW (to) NW (specify) NW (a) NW (PostScript) NW (function) NW (to) NW (run,) NW (and) NW (the) NW (function) NW (will) NW (be) NW (run) NW (exactly) NW (in) NW (the) NW (text) NW (where) NW (you) NW (have) NW (specified.) NW
+NEWPARA
+ (You) NW (would) NW (use) NW (this) NW (command) NW (only) NW (inside) NW (a) NW (line) NW (of) NW (text.) NW (Between) NW (lines) NW (of) NW (text,) NW (just) NW (using) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (postscript) NW (environment) NW (is) NW (appropriate.) NW
+NEWPARA
+ (Everything) NW (you) NW (type) NW (in) NW (a) NW (PostScript) NW (environment) NW (gets) NW (dumped) NW (to) NW (PostScript,) NW (except) NW (for) NW (the) NW (first) NW (comment) NW (character) NW (') NW (you) NW (want) NW (to) NW (make) NW (a) NW (comment) NW (in) NW (your) NW (PostScript,) NW (make) NW (sure) NW (to) NW (use) NW (two) NW (') NW
+NEWPARA
+ (Read) NW (the) NW (chapter) NW (on) NW (pages) NW (to) NW (learn) NW (how) NW (to) NW (use) NW (this) NW (\\direct) NW (stranglehold") NW (on) NW (PostScript) NW (correctly) NW (--) NW (unless) NW (you) NW (enjoy) NW (surprises!) NW
+/rightmargin 144 def
+
+/leftmargin 90 def
+/rightmargin 90 def
+
+/leftmargin 90 def
+/rightmargin 90 def
+
+ENDPAGE
+
+end
+%! page_shake.ps - A replica of the standard LaTeX page
+%% This is a LameTeX Page Description File written in PostScript.
+%% Postscript Code by Jon Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+%% This is a page template for the LameTeX formatter
+%% A page with wavy margins for LameTeX output.
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ 20 ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+%%%%%%%%%%%%%%%% PageShape %%%%%%%%%%%%%%%%%%%%%%
+% PageShape draws a wavy page, given margins.
+/PageShape
+{
+ 4 dict begin
+ /bp 0 in def /lp -.5 in def /hp 11 in def /wp 9.5 in def
+ lp .5 in add bp moveto
+ wp .8 in sub 0 rlineto
+ 1 1 4
+ {
+ pop
+ currentpoint hp 16 div add hp 16 div
+ 270 90 arc
+ currentpoint hp 16 div add hp 16 div
+ 270 90 arcn
+ } for
+ wp .8 in sub -1 mul 0 rlineto
+
+ 1 1 4
+ {
+ pop
+ currentpoint hp 16 div sub hp 16 div
+ 90 270 arc
+ currentpoint hp 16 div sub hp 16 div
+ 90 270 arcn
+ } for
+ end
+ closepath
+ currentflat 8 mul
+} bind def
+
+% Anything to do when a new page is started
+/StartPage
+{
+} bind def
+
+% Anything to do when a new page is ended
+/EndPage
+{
+ pagenumber 4 string cvs
+ dup stringwidth pop 8.5 in
+ formatdict /rightmargin get sub
+ formatdict /leftmargin get sub
+ exch sub 2 div formatdict /leftmargin get add
+ formatdict /bottommargin get 2 div moveto show
+ /pagenumber pagenumber 1 add def
+ showpage % A new page here really does mean start a new page.
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+% Page-specific defaults that describe the page.
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout false def % true means fill outside shape. false is inside.
+
+ /in { 72 mul } def
+ /BM 0 in def % Absolute Bottom Margin for page
+ /TM 11 in def % Absolute Top Margin for page
+ /LM 0 in def % Absolute Left Margin for page
+ /RM 8.5 in def % Absolute Right Margin for page
+
+ userdict /pagenumber known not
+ { /pagenumber 1 def } if % Initialize pagenumber if not done already
+} bind def
+
+InitPage % Just loading this file initializes the page.
+formatdict begin
+
+STARTPAGE
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+21.6 BASELINESKIP
+
+[ 9 false ] NewFont % /cm18bf
+
+
+/vspace 112.5 def NEWPARA
+ (Chapter) NW (4) NW
+26.4 BASELINESKIP
+
+/vspace 46.6 def NEWPARA
+
+[ 10 false ] NewFont % /cm22bf
+ (How) NW (Pages) NW (are) NW (Handled) NW (in) NW (LameTeX) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 92.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (If) NW (you're) NW (going) NW (to) NW (use) NW (the) NW (fancy) NW (pages) NW (included) NW (with) NW (this) NW (release) NW (of) NW (LameTeX,) NW (but) NW (not) NW (try) NW (to) NW (design) NW (your) NW (own) NW (or) NW (make) NW (any) NW (PostScript) NW (hacks,) NW (then) NW (you) NW (don't) NW (need) NW (to) NW (read) NW (about) NW (LameTeX) NW (pages.) NW (However,) NW (if) NW (you) NW (are) NW (going) NW (to) NW (try) NW (your) NW (own) NW (hand) NW (at) NW (designing) NW (pages) NW (and) NW (fancy) NW (graphics,) NW (you) NW (should) NW (learn) NW (a) NW (little) NW (bit) NW (about) NW (how) NW (LameTeX) NW (works) NW (so) NW (that) NW (things) NW (fit) NW (together) NW (smoothly.) NW
+NEWPARA
+ (I'd) NW (love) NW (to) NW (hear) NW (what) NW (you've) NW (used) NW (LameTeX) NW (for.) NW (Please) NW (send) NW (e-mail) NW (to) NW
+[ 14 false ] NewFont % /cm10tt
+ (jgm@cs.brown.edu) NW
+[ 1 true ] NewFont % /cm10rm
+ (.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (4.14) NW
+15 HSpace
+ (Behind) NW (the) NW (Scenes) NW (of) NW (LameTeX) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 40.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+13.2 BASELINESKIP
+
+[ 13 false ] NewFont % /cm11bf
+
+
+/vspace 4.5 def NEWPARA
+ (4.14.11) NW
+15 HSpace
+ (The) NW (Page) NW (Description) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 18 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (A) NW (Page) NW (Description) NW (is) NW (a) NW (short) NW (program) NW (written) NW (in) NW (PostScript) NW (that) NW (defines) NW (some) NW (standard) NW (stuff) NW (about) NW (the) NW (page) NW (that) NW (text) NW (gets) NW (placed) NW (on.) NW
+NEWPARA
+ (Take) NW
+ /Wizard LeftMarginIcon (a) NW (look) NW (at) NW
+[ 14 false ] NewFont % /cm10tt
+ (page) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (latex.ps) NW
+[ 1 true ] NewFont % /cm10rm
+ (,) NW (which) NW (is) NW (the) NW (standard) NW (plain) NW (vanilla) NW (LaTeX-looking) NW (page.) NW (Here) NW (are) NW (the) NW (routines) NW (defined) NW (in) NW (this) NW (file:) NW
+NEWPARA
+
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+/parindent 0 def
+
+
+13.68 BASELINESKIP
+
+NEWPARA
+
+/leftmargin 90 def
+/rightmargin 112.5 def
+
+/leftmargin 90 def
+/rightmargin 112.5 def
+
+/rightmargin 90 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (PageShape) NW
+13.0 HSpace
+
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+[ 1 true ] NewFont % /cm10rm
+ (is) NW (a) NW
+[ 8 false ] NewFont % /cm10bf
+ (required) NW
+[ 1 false ] NewFont % /cm10rm
+ (routine) NW (that) NW (defines) NW (a) NW (PostScript) NW (path) NW (for) NW (the) NW (page.) NW (A) NW (path) NW (is) NW (basically) NW (a) NW (squiggle) NW (on) NW (the) NW (page) NW (that) NW (never) NW (gets) NW (drawn.) NW (It) NW (is) NW (a) NW (closed) NW (loop) NW (of) NW (arbitrary) NW (shape.) NW (It) NW (is) NW (pretty) NW
+ /Wizard LeftMarginIcon (easy) NW (to) NW (make) NW (a) NW (simple) NW (path) NW (out) NW (of) NW (straight) NW (lines) NW (using) NW (the) NW (PostScript) NW
+[ 14 false ] NewFont % /cm10tt
+ (moveto) NW
+[ 1 false ] NewFont % /cm10rm
+ (and) NW
+[ 14 false ] NewFont % /cm10tt
+ (lineto) NW
+[ 1 false ] NewFont % /cm10rm
+ (commands,) NW (but) NW (it) NW (is) NW (possible) NW (to) NW (define) NW (a) NW (very) NW (complex) NW (path) NW (with) NW (curves) NW (and) NW (fancy) NW (wiggles) NW (also.) NW (You) NW (can) NW (read) NW (more) NW (about) NW (paths) NW (in) NW (the) NW (PostScript) NW (blue) NW (book,) NW (or) NW (chapter) NW (4) NW (of) NW (the) NW (red) NW (book.) NW
+NEWPARA
+ (The) NW (PageShape) NW (routine) NW (should) NW (leave) NW (a) NW (number) NW (on) NW (the) NW (stack) NW (called) NW (a) NW
+[ 12 false ] NewFont % /cm10it
+ (setflat) NW (value) NW
+[ 1 true ] NewFont % /cm10rm
+ (.) NW (If) NW (your) NW (path) NW (contains) NW (fancy) NW (curves,) NW (it) NW (is) NW (going) NW (to) NW (get) NW (flattened) NW (into) NW (a) NW (series) NW (of) NW (lines) NW (using) NW (the) NW (PostScript) NW
+[ 8 false ] NewFont % /cm10bf
+ (flattenpath) NW
+[ 1 false ] NewFont % /cm10rm
+ (operator.) NW (Usually) NW (\\currentflat) NW (8) NW (mul") NW (works) NW (fine,) NW (although) NW (if) NW (you) NW (want) NW (more) NW (preciseness) NW (and) NW (think) NW (your) NW (printer) NW (can) NW (handle) NW (it,) NW (try) NW (smaller) NW (values.) NW (If) NW (you) NW (don't) NW (understand) NW (this,) NW (just) NW (use) NW (\\currenflat) NW (8) NW (mul") NW (and) NW (you) NW (should) NW (be) NW (fine.) NW
+NEWPARA
+
+/leftmargin 90 def
+/rightmargin 112.5 def
+
+/leftmargin 90 def
+/rightmargin 112.5 def
+
+/rightmargin 90 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (StartPage) NW
+13.0 HSpace
+
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+[ 1 true ] NewFont % /cm10rm
+ (is) NW (a) NW
+[ 8 false ] NewFont % /cm10bf
+ (required) NW
+[ 1 false ] NewFont % /cm10rm
+ (routine) NW (that) NW (draws) NW (anything) NW (or) NW (sets) NW (up) NW (anything) NW (required) NW (at) NW (the) NW (beginning) NW (of) NW (a) NW (page.) NW (Feel) NW (free) NW (to) NW (put) NW (some) NW (fancy) NW (graphics) NW (here.) NW
+NEWPARA
+
+/leftmargin 90 def
+/rightmargin 112.5 def
+
+/leftmargin 90 def
+/rightmargin 112.5 def
+
+/rightmargin 90 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (EndPage) NW
+13.0 HSpace
+
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+[ 1 true ] NewFont % /cm10rm
+ (is) NW (a) NW
+[ 8 false ] NewFont % /cm10bf
+ (required) NW
+[ 1 false ] NewFont % /cm10rm
+ (routine) NW (that) NW (draws) NW (anything) NW (or) NW (sets) NW (up) NW (anything) NW (required) NW (at) NW (the) NW (end) NW (of) NW (the) NW (page.) NW (For) NW (example,) NW (the) NW (one) NW (in) NW
+[ 14 false ] NewFont % /cm10tt
+ (page) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (latex.ps) NW
+[ 1 false ] NewFont % /cm10rm
+ (prints) NW
+NEWPARA
+
+/leftmargin 90 def
+/rightmargin 112.5 def
+
+/leftmargin 90 def
+/rightmargin 112.5 def
+
+/rightmargin 90 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (InitPage) NW
+13.0 HSpace
+
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+[ 1 true ] NewFont % /cm10rm
+ (is) NW (not) NW (required.) NW (It) NW (is) NW (just) NW (a) NW (simple) NW (enclosure) NW (for) NW (defining) NW (some) NW (variables) NW (that) NW
+[ 12 false ] NewFont % /cm10it
+ (are) NW
+[ 1 false ] NewFont % /cm10rm
+ (all) NW (required:) NW
+NEWPARA
+
+/leftmargin 135 def
+/rightmargin 67.5 def
+
+/leftmargin 135 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+/leftmargin 112.5 def
+/rightmargin 112.5 def
+
+/leftmargin 112.5 def
+/rightmargin 112.5 def
+
+/rightmargin 90 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (fillout) NW
+13.0 HSpace
+
+/leftmargin 135 def
+/rightmargin 67.5 def
+
+/leftmargin 135 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+[ 1 true ] NewFont % /cm10rm
+ (tells) NW (LameTeX) NW (whether) NW (you) NW (want) NW (to) NW (place) NW (text) NW
+[ 12 false ] NewFont % /cm10it
+ (inside) NW
+[ 1 false ] NewFont % /cm10rm
+ (the) NW (defined) NW (path,) NW (or) NW
+[ 12 false ] NewFont % /cm10it
+ (outside) NW
+[ 1 false ] NewFont % /cm10rm
+ (of) NW (it.) NW (If) NW (you) NW (set) NW (fillout) NW (to) NW (true) NW (LameTeX) NW (will) NW (not) NW (place) NW (any) NW (text) NW (inside) NW (your) NW (path.) NW
+NEWPARA
+
+/leftmargin 112.5 def
+/rightmargin 112.5 def
+
+/leftmargin 112.5 def
+/rightmargin 112.5 def
+
+/rightmargin 90 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (evenodd) NW
+13.0 HSpace
+
+/leftmargin 135 def
+/rightmargin 67.5 def
+
+/leftmargin 135 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+[ 1 true ] NewFont % /cm10rm
+ (is) NW (a) NW (fancy) NW (PostScript) NW (way) NW (of) NW (determining) NW (what) NW (is) NW (inside) NW (and) NW (what) NW (is) NW (outside) NW (of) NW (a) NW (path.) NW (If) NW (this) NW (is) NW (true) NW (then) NW (it) NW (uses) NW (the) NW (evenodd) NW (rules;) NW (false) NW (means) NW (use) NW (the) NW (winding) NW (rule.) NW (There's) NW (a) NW (description) NW (of) NW (what) NW (the) NW (heck) NW (this) NW (means) NW (in) NW (the) NW (PostScript) NW (red) NW (book) NW (in) NW (Chapter) NW (4,) NW (section) NW (6.) NW (Basically) NW (setting) NW (this) NW (variable) NW (to) NW (true) NW (means) NW (that) NW (every) NW (part) NW (of) NW (the) NW (path) NW (delimits) NW (an) NW (outside-inside) NW (boundary.) NW
+NEWPARA
+
+/leftmargin 112.5 def
+/rightmargin 112.5 def
+
+/leftmargin 112.5 def
+/rightmargin 112.5 def
+
+/rightmargin 90 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (BM) NW
+13.0 HSpace
+
+/leftmargin 135 def
+/rightmargin 67.5 def
+
+/leftmargin 135 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+[ 1 true ] NewFont % /cm10rm
+ (In) NW (the) NW (event) NW (that) NW (fillout) NW (is) NW (true,) NW (this) NW (is) NW (the) NW (bottom) NW (of) NW (the) NW (bounding) NW (rectangle) NW (that) NW (will) NW (be) NW (filled) NW (with) NW (text.) NW (If) NW (parts) NW (of) NW (the) NW (path) NW (extend) NW (below) NW (this) NW (given) NW (number,) NW (it) NW (will) NW (be) NW (reset) NW (to) NW (be) NW (below) NW (the) NW (path.) NW
+NEWPARA
+
+/leftmargin 112.5 def
+/rightmargin 112.5 def
+
+/leftmargin 112.5 def
+/rightmargin 112.5 def
+
+/rightmargin 90 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (TM) NW
+13.0 HSpace
+
+/leftmargin 135 def
+/rightmargin 67.5 def
+
+/leftmargin 135 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+[ 1 true ] NewFont % /cm10rm
+ (In) NW (the) NW (event) NW (that) NW (fillout) NW (is) NW (true,) NW (this) NW (is) NW (the) NW (top) NW (of) NW (the) NW (bounding) NW (rectangle) NW (that) NW (will) NW (be) NW (filled) NW (with) NW (text.) NW (If) NW (parts) NW (of) NW (the) NW (path) NW (extend) NW (above) NW (this) NW (given) NW (number,) NW (it) NW (will) NW (be) NW (reset) NW (to) NW (be) NW (above) NW (the) NW (path.) NW
+NEWPARA
+
+/leftmargin 112.5 def
+/rightmargin 112.5 def
+
+/leftmargin 112.5 def
+/rightmargin 112.5 def
+
+/rightmargin 90 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (LM) NW
+13.0 HSpace
+
+/leftmargin 135 def
+/rightmargin 67.5 def
+
+/leftmargin 135 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+[ 1 true ] NewFont % /cm10rm
+ (In) NW (the) NW (event) NW (that) NW (fillout) NW (is) NW (true,) NW (this) NW (is) NW (the) NW (left) NW (of) NW (the) NW (bounding) NW (rectangle) NW (that) NW (will) NW (be) NW (filled) NW (with) NW (text.) NW (If) NW (parts) NW (of) NW (the) NW (path) NW (extend) NW (to) NW (the) NW (left) NW (of) NW (this) NW (given) NW (number,) NW (it) NW (will) NW (be) NW (reset) NW (to) NW (be) NW (to) NW (the) NW (left) NW (of) NW (the) NW (path.) NW
+NEWPARA
+
+/leftmargin 112.5 def
+/rightmargin 112.5 def
+
+/leftmargin 112.5 def
+/rightmargin 112.5 def
+
+/rightmargin 90 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (RM) NW
+13.0 HSpace
+
+/leftmargin 135 def
+/rightmargin 67.5 def
+
+/leftmargin 135 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+[ 1 true ] NewFont % /cm10rm
+ (In) NW (the) NW (event) NW (that) NW (fillout) NW (is) NW (true,) NW (this) NW (is) NW (the) NW (right) NW (of) NW (the) NW (bounding) NW (rectangle) NW (that) NW (will) NW (be) NW (filled) NW (with) NW (text.) NW (If) NW (parts) NW (of) NW (the) NW (path) NW (extend) NW (to) NW (the) NW (right) NW (of) NW (this) NW (given) NW (number,) NW (it) NW (will) NW (be) NW (reset) NW (to) NW (be) NW (to) NW (the) NW (right) NW (of) NW (the) NW (path.) NW
+/leftmargin 112.5 def
+/rightmargin 90 def
+
+/leftmargin 112.5 def
+/rightmargin 90 def
+
+/rightmargin 90 def
+
+NEWPARA
+
+/leftmargin 90 def
+/rightmargin 112.5 def
+
+/leftmargin 90 def
+/rightmargin 112.5 def
+
+/rightmargin 90 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (LeftMarginIcon) NW
+13.0 HSpace
+
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+[ 1 true ] NewFont % /cm10rm
+ (is) NW (not) NW (required.) NW (I) NW (just) NW (use) NW (it) NW (do) NW (define) NW (where) NW (the) NW (left) NW (margin) NW (is,) NW (in) NW (case) NW (I) NW (want) NW (to) NW (place) NW (an) NW (Icon) NW (there.) NW
+12 BASELINESKIP
+
+
+/leftmargin 90 def
+/rightmargin 90 def
+
+/leftmargin 90 def
+/rightmargin 90 def
+
+/parindent 18 def
+
+/rightmargin 90 def
+
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+13.2 BASELINESKIP
+
+[ 13 false ] NewFont % /cm11bf
+
+
+/vspace 4.5 def NEWPARA
+ (4.14.12) NW
+15 HSpace
+ (The) NW (Page) NW (Cycle) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 18 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (LameTeX) NW (has) NW (three) NW (modes) NW (that) NW (it) NW (can) NW (be) NW (in:) NW
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+
+13.68 BASELINESKIP
+
+/parindent 0 def
+
+/vspace 13.68 def NEWPARA
+
+ (1.) ENUMERATE
+
+ /Wizard LeftMarginIcon (In-Between) NW (Pages) NW
+/vspace 13.68 def NEWPARA
+
+ (2.) ENUMERATE
+ (On) NW (a) NW (Page,) NW (In-Between) NW (Lines) NW
+/vspace 13.68 def NEWPARA
+
+ (3.) ENUMERATE
+ (On) NW (a) NW (Page,) NW (On) NW (a) NW (Line) NW
+12 BASELINESKIP
+
+
+/leftmargin 90 def
+/rightmargin 90 def
+
+/leftmargin 90 def
+/rightmargin 90 def
+
+/parindent 18 def
+
+/rightmargin 90 def
+
+NEWPARA
+ (The) NW (cycle) NW (generally) NW (goes) NW (like) NW (this:) NW
+NEWPARA
+
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/leftmargin 112.5 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+
+13.68 BASELINESKIP
+
+/parindent 0 def
+
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (1.) ENUMERATE
+ (LameTeX) NW (starts) NW (off) NW (in) NW (\\In-Between) NW (Pages") NW (mode.) NW
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (2.) ENUMERATE
+ (In-Between) NW (Pages) NW (mode) NW (processes) NW (commands) NW (until) NW (it) NW (encounters) NW (any) NW (plain) NW (text) NW (or) NW (LameTeX) NW (command) NW (that) NW (might) NW (require) NW (that) NW (a) NW (new) NW (page) NW (be) NW (started.) NW (When) NW (this) NW (happens) NW (it) NW (does) NW (the) NW (following:) NW
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (3.) ENUMERATE
+ (Execute) NW (the) NW
+[ 14 false ] NewFont % /cm10tt
+ (save) NW
+[ 1 false ] NewFont % /cm10rm
+ (command) NW
+NEWPARA
+
+/leftmargin 135 def
+/rightmargin 67.5 def
+
+/leftmargin 135 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+/vspace 13.68 def NEWPARA
+
+ (\(a\)) ENUMERATE
+ (Start) NW (a) NW (page) NW (by) NW (calling) NW (the) NW (/StartPage) NW (routine.) NW
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (\(b\)) ENUMERATE
+ (Do) NW (some) NW (internal) NW (initialization) NW (and) NW (call) NW (the) NW (/PageShape) NW (routine) NW
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (\(c\)) ENUMERATE
+ (Change) NW (to) NW (\\On) NW (a) NW (Page,) NW (In-Between) NW (Lines") NW (Mode.) NW
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (\(d\)) ENUMERATE
+ (On) NW (a) NW (Page,) NW (In-Between) NW (Lines) NW (mode) NW (processes) NW (commands) NW (until) NW (it) NW (encounters) NW (any) NW (plain) NW (text) NW (or) NW (LameTeX) NW (command) NW (that) NW (might) NW (require) NW (that) NW (a) NW (new) NW (line) NW (be) NW (started.) NW (When) NW (this) NW (happens) NW (it) NW (does) NW (the) NW (following:) NW
+NEWPARA
+
+/leftmargin 157.5 def
+/rightmargin 67.5 def
+
+/leftmargin 157.5 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (i.) ENUMERATE
+ (Change) NW (to) NW (\\On) NW (a) NW (Page,) NW (On) NW (a) NW (Line") NW (mode.) NW
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (ii.) ENUMERATE
+ (Find) NW (a) NW (new) NW (line.) NW (NOTE:) NW (If) NW (you) NW (have) NW (broken) NW (the) NW (page) NW (up) NW (into) NW (two) NW (or) NW (more) NW (horizontal) NW (regions) NW (\(like) NW
+[ 14 false ] NewFont % /cm10tt
+ (page) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (dagger.ps) NW
+[ 1 false ] NewFont % /cm10rm
+ (does,) NW (then) NW (know) NW (that) NW (a) NW (\\newline") NW (really) NW (means) NW (a) NW (new) NW (\\open) NW (space) NW (to) NW (put) NW (words".) NW (It's) NW (possible) NW (to) NW (have) NW (\\two) NW (new) NW (lines") NW (horizontally) NW (next) NW (to) NW (one) NW (another.) NW (One) NW (goes) NW (on) NW (the) NW (left) NW (side) NW (of) NW (the) NW (dagger) NW (page) NW (description.) NW (The) NW (next) NW (new) NW (line) NW (starts) NW (on) NW (the) NW (right) NW (side) NW (at) NW (the) NW (same) NW (horizontal) NW (position.) NW (If) NW (you) NW (don't) NW (like) NW (this) NW (functionality,) NW (then) NW (don't) NW (define) NW (regions) NW (that) NW (have) NW (two) NW (sides) NW (like) NW (the) NW
+[ 14 false ] NewFont % /cm10tt
+ (page) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (dagger.ps) NW
+[ 1 true ] NewFont % /cm10rm
+ (.) NW (Instead) NW (define) NW (\\two) NW (pages") NW (like) NW (how) NW
+[ 14 false ] NewFont % /cm10tt
+ (page) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (check.ps) NW
+[ 1 false ] NewFont % /cm10rm
+ (works.) NW (The) NW (first) NW (page) NW (will) NW (get) NW (filled) NW (before) NW (the) NW (second) NW (is) NW (begun.) NW
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (iii.) ENUMERATE
+ (Initialize) NW (a) NW (word) NW (list) NW (that) NW (will) NW (contain) NW (information) NW (about) NW (this) NW (line.) NW (The) NW (very) NW (first) NW (item) NW (on) NW (this) NW (word) NW (list) NW (will) NW (be) NW (a) NW (command) NW (to) NW (change) NW (to) NW (what) NW (is) NW (considered) NW (the) NW (proper) NW (font) NW (when) NW (this) NW (line) NW (was) NW (begun.) NW
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (iv.) ENUMERATE
+ (If) NW (appropriate) NW (for) NW (each) NW (new) NW (word) NW (or) NW (command) NW (read) NW (in,) NW (it) NW (will) NW (either) NW (add) NW (the) NW (word) NW (to) NW (the) NW (word) NW (list) NW (or) NW (add) NW (the) NW
+[ 12 false ] NewFont % /cm10it
+ (command) NW (itself) NW
+[ 1 false ] NewFont % /cm10rm
+ (to) NW (the) NW (word) NW (list.) NW (For) NW (example,) NW (a) NW (boldface) NW (command) NW (in) NW (between) NW (the) NW (words) NW (FOO) NW (and) NW (BAR) NW (gets) NW (inserted) NW (in) NW (the) NW (word) NW (list) NW (between) NW (FOO) NW (and) NW (BAR.) NW (It) NW (also) NW (get) NW (executed) NW (immediately.) NW
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (v.) ENUMERATE
+ (Also) NW (for) NW (each) NW (new) NW (word) NW (read) NW (in,) NW (it) NW (checks) NW (to) NW (see) NW (if) NW (the) NW (word) NW (list) NW (it) NW (is) NW (building) NW (overflows) NW (the) NW (width) NW (of) NW (the) NW (current) NW (line) NW (\(as) NW (defined) NW (in) NW (a) NW (very) NW (fancy) NW (way) NW (by) NW (the) NW (PostScript) NW (Page) NW (Definition) NW (file) NW (and) NW (the) NW (PostScript) NW (path) NW (given) NW (by) NW (/PageShape\).) NW (If) NW (there) NW (is) NW (an) NW (overflow,) NW (or) NW (a) NW (natural) NW (end) NW (of) NW (line) NW (given) NW (by) NW (a) NW (text) NW (formatting) NW (command,) NW (then) NW (it) NW (does) NW (the) NW (following:) NW
+NEWPARA
+
+/leftmargin 180 def
+/rightmargin 67.5 def
+
+/leftmargin 180 def
+/rightmargin 67.5 def
+
+/rightmargin 90 def
+
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (A.) ENUMERATE
+ (Go) NW (through) NW (the) NW (word) NW (list) NW (from) NW (the) NW (beginning) NW (to) NW (the) NW (end) NW (and) NW (for) NW (each) NW (element,) NW (either) NW (print) NW (it) NW (if) NW (it) NW (is) NW (a) NW (word,) NW (or) NW (execute) NW (it) NW (if) NW (it) NW (is) NW (a) NW (command.) NW (Since) NW (the) NW (word) NW (list) NW (was) NW (initialized) NW (with) NW (a) NW (font-setting) NW (command,) NW (the) NW (first) NW (thing) NW (this) NW (loop) NW (will) NW (do) NW (is) NW (choose) NW (the) NW (proper) NW (font.) NW (Add) NW (a) NW (little) NW (space) NW (between) NW (words) NW (if) NW (text) NW (is) NW (supposed) NW (to) NW (be) NW (fully) NW (justified.) NW
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (B.) ENUMERATE
+ (If) NW (the) NW (cause) NW (of) NW (printing) NW (this) NW (line) NW (was) NW (a) NW (natural) NW (end) NW (of) NW (line,) NW (then) NW (go) NW (to) NW (step) NW (3.3.) NW
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (C.) ENUMERATE
+ (Otherwise,) NW (create) NW (a) NW (new) NW (word) NW (list,) NW (and) NW (keep) NW (cycling) NW (in) NW (\\On) NW (a) NW (Page,) NW (On) NW (a) NW (Line") NW (mode.) NW
+/leftmargin 157.5 def
+/rightmargin 90 def
+
+/leftmargin 157.5 def
+/rightmargin 90 def
+
+/rightmargin 90 def
+
+/leftmargin 135 def
+/rightmargin 90 def
+
+/leftmargin 135 def
+/rightmargin 90 def
+
+/rightmargin 90 def
+
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (\(e\)) ENUMERATE
+ (Eventually,) NW (going) NW (to) NW (a) NW (new) NW (line) NW (means) NW (falling) NW (off) NW (of) NW (the) NW (bottom) NW (of) NW (the) NW (page,) NW (and) NW (a) NW (we) NW (change) NW (back) NW (to) NW (\\In-Between) NW (pages) NW (mode",) NW (and) NW (do) NW (the) NW (following:) NW
+/leftmargin 112.5 def
+/rightmargin 90 def
+
+/leftmargin 112.5 def
+/rightmargin 90 def
+
+/rightmargin 90 def
+
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (4.) ENUMERATE
+ (Execute) NW (the) NW
+[ 14 false ] NewFont % /cm10tt
+ (restore) NW
+[ 1 false ] NewFont % /cm10rm
+ (command) NW
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (5.) ENUMERATE
+ (End) NW (a) NW (Page) NW (by) NW (calling) NW (the) NW (/EndPage) NW (routine.) NW
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (6.) ENUMERATE
+ (Go) NW (to) NW (step) NW (2.) NW
+12 BASELINESKIP
+
+
+/leftmargin 90 def
+/rightmargin 90 def
+
+/leftmargin 90 def
+/rightmargin 90 def
+
+/parindent 18 def
+
+/rightmargin 90 def
+
+NEWPARA
+ (LameTeX) NW (horizontally) NW (aligns) NW (the) NW (words) NW (by) NW (remembering) NW (all) NW (the) NW (words) NW (on) NW (the) NW (current) NW (line,) NW (and) NW (then) NW (printing) NW (the) NW (whole) NW (line) NW (at) NW (once) NW (when) NW (the) NW (line) NW (gets) NW (filled) NW (up.) NW (Printing) NW (all) NW (the) NW (words) NW (at) NW (once) NW (means) NW (that) NW (it) NW (can) NW (be) NW (smart) NW (enough) NW (to) NW (justify) NW (the) NW (text) NW (to) NW (exactly) NW (match) NW (both) NW (margins.) NW
+NEWPARA
+ (There) NW
+ /Wizard LeftMarginIcon (is) NW (no) NW (concept) NW (of) NW (vertical) NW (alignment.) NW (Unlike) NW (LaTeX,) NW (LameTeX) NW (does) NW
+[ 8 false ] NewFont % /cm10bf
+ (not) NW
+[ 1 false ] NewFont % /cm10rm
+ (remember) NW (all) NW (the) NW (lines) NW (in) NW (a) NW (paragraph) NW (and) NW (then) NW (print) NW (the) NW (paragraph) NW (all) NW (at) NW (once) NW (in) NW (the) NW (right) NW (place.) NW
+NEWPARA
+ (The) NW
+[ 8 false ] NewFont % /cm10bf
+ (save) NW
+[ 1 false ] NewFont % /cm10rm
+ (and) NW
+[ 8 false ] NewFont % /cm10bf
+ (restore) NW
+[ 1 false ] NewFont % /cm10rm
+ (commands) NW (are) NW (PostScript) NW (operators) NW (to) NW (do) NW (memory) NW (management.) NW (Basically) NW (what) NW (happens) NW (is) NW (that) NW (when) NW (the) NW
+[ 14 false ] NewFont % /cm10tt
+ (restore) NW
+[ 1 false ] NewFont % /cm10rm
+ (command) NW (is) NW (encountered,) NW (the) NW (entire) NW (current) NW (memory) NW (of) NW (the) NW (printer) NW (is) NW (replaced) NW (with) NW (what) NW (it) NW (was) NW (like) NW (when) NW (the) NW
+[ 14 false ] NewFont % /cm10tt
+ (save) NW
+[ 1 false ] NewFont % /cm10rm
+ (command) NW (was) NW (executed.) NW
+NEWPARA
+ (This) NW (means) NW (that) NW (if) NW (you) NW (set) NW (a) NW (variable) NW (in) NW (your) NW (StartPage) NW (routine,) NW (you) NW (will) NW (be) NW (able) NW (to) NW (access) NW (that) NW (variable) NW (throughout) NW (the) NW (length) NW (of) NW (the) NW (page,) NW (but) NW (you) NW (will) NW (not) NW (be) NW (able) NW (to) NW (access) NW (it) NW (in) NW (the) NW (EndPage) NW (routine.) NW (If) NW (you) NW (want) NW (to) NW (have) NW (some) NW (always-changing) NW (always-remembered) NW (variable) NW (like) NW (the) NW (page) NW (number,) NW (use) NW (the) NW (InitPage) NW (and) NW (EndPage) NW (routines) NW (instead.) NW
+NEWPARA
+ (Note) NW
+ /Wizard LeftMarginIcon (that) NW (the) NW (InitPage) NW (and) NW (EndPage) NW (routines) NW (are) NW
+[ 12 false ] NewFont % /cm10it
+ (outside) NW
+[ 1 false ] NewFont % /cm10rm
+ (of) NW (the) NW (save-restore) NW (loop.) NW (So) NW (anything) NW (that) NW (happens) NW (in) NW (these) NW (two) NW (routines) NW (stays) NW (around) NW (forever.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+ (Which) NW (Commands) NW (Force) NW (A) NW (New) NW (Page) NW (Or) NW (A) NW (New) NW (Line?) NW
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 12 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (Check) NW (it) NW (out) NW (in) NW
+[ 14 false ] NewFont % /cm10tt
+ (Operator.C) NW
+[ 1 true ] NewFont % /cm10rm
+ (.) NW (Yes,) NW (that's) NW (a) NW (C++) NW (source) NW (file.) NW (Don't) NW (be) NW (afraid) NW (of) NW (it) NW (-) NW (it) NW (won't) NW (hurt) NW (you.) NW (In) NW (this) NW (file) NW (at) NW (the) NW (top) NW (is) NW (a) NW (huge) NW (table) NW (of) NW (command) NW (names.) NW (The) NW (first) NW (row) NW (is) NW (the) NW (command) NW (name,) NW (the) NW (second) NW (is) NW (a) NW (boolean) NW (\(either) NW (a) NW (0) NW (or) NW (a) NW (1\)) NW (saying) NW (whether) NW (this) NW (command) NW (is) NW (a) NW (stealth) NW (command.) NW (The) NW (third) NW (is) NW (a) NW (boolean) NW (\(either) NW (a) NW (0) NW (or) NW (1\)) NW (saying) NW (whether) NW (or) NW (not) NW (a) NW (new) NW (page) NW (or) NW (new) NW (line) NW (should) NW (be) NW (started) NW (if) NW (this) NW (command) NW (is) NW (executed) NW (In-Between) NW (Pages) NW (or) NW (Not-On-A-Line.) NW
+NEWPARA
+ (Also,) NW (all) NW (plain) NW (text) NW (words) NW (force) NW (On-A-Line-ness) NW (and) NW (On-A-Page-ness.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+ (Specifying) NW (the) NW (Page) NW (Description) NW (Directories) NW
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 12 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (LameTeX) NW (will) NW (look) NW (in) NW (the) NW (current) NW (directory) NW (to) NW (find) NW (page) NW (description) NW (files) NW (or) NW (any) NW (other) NW (postscript) NW (files,) NW (but) NW (if) NW (it) NW (cannot) NW (find) NW (them) NW (you) NW (must) NW (tell) NW (it) NW (where) NW (to) NW (look.) NW (You) NW (can) NW (use) NW (the) NW (-p) NW (command,) NW (explained) NW (in) NW (the) NW (startup) NW (chapter,) NW (or) NW (set) NW (your) NW (environment) NW (variable) NW (LAMETEX) NW
+[ 0 true ] NewFont (_) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (PS) NW
+[ 0 true ] NewFont (_) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (PATH) NW (to) NW (some) NW (path) NW (which) NW (will) NW (be) NW (searched) NW (for) NW (postscript) NW (files.) NW (The) NW (current) NW (directory) NW (and) NW (the) NW (LameTeX) NW (main) NW (library) NW (directory) NW (will) NW (always) NW (be) NW (searched.) NW
+NEWPARA
+ (There) NW (is) NW (a) NW (great) NW (deal) NW (more) NW (about) NW (this) NW (in) NW (the) NW (PostScript) NW (chapter.) NW
+/rightmargin -61.2 def
+
+/leftmargin 14.4 def
+/rightmargin 14.4 def
+
+/leftmargin 14.4 def
+/rightmargin 14.4 def
+
+ENDPAGE
+
+end
+%! This is a PostScript library meant to be included in other files %%%
+%% Postscript Code by Jon Monsarrat Copyright 1991
+%% permission given for anything except selling this or deleting the header.
+%% This is a page template for the SCRATCH formatter
+%% A normal page for the ASYLUM assassin game
+
+% A margin path that goes around the picture of the BSD daemon. The daemon
+% itself is rather complex to be the margin path itself, but this is possible.
+/DemonBox
+{
+ 3 in 3 in moveto
+ 2.8 in 3.7 in lineto
+ 4.1 in 3.7 in lineto
+ 4.1 in 4.3 in lineto
+ 2.7 in 5.2 in lineto
+ 2.6 in 5.7 in lineto
+ 3.4 in 5.9 in lineto
+ 4.1 in 8 in lineto
+ 5.8 in 8 in lineto
+ 5.4 in 4 in lineto
+ 7.3 in 3.5 in lineto
+ 7.3 in 2.6 in lineto
+ 5.1 in 2.6 in lineto
+ closepath
+} bind def
+
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ 20 ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+% Makes a path that desribes the page
+/PageShape
+{
+% 0 0 moveto 8.5 in 0 lineto 8.5 in 11 in lineto 0 11 in lineto closepath
+ DemonBox
+ currentflat 8 mul
+} bind def
+
+% Anything to do when a new page is started
+/StartPage
+{
+} bind def
+
+% Anything to do when a new page is ended
+/EndPage
+{
+ pagenumber 4 string cvs
+ dup stringwidth pop 8.5 in
+ formatdict /rightmargin get sub
+ formatdict /leftmargin get sub
+ exch sub 2 div formatdict /leftmargin get add
+ formatdict /bottommargin get 2 div moveto show
+ /pagenumber pagenumber 1 add def
+ showpage % A new page here really does mean start a new page.
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+% Page-specific defaults that describe the page.
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout true def % true means fill outside shape. false is inside.
+
+ /in { 72 mul } def
+ /BM 0 in def % Absolute Bottom Margin for page
+ /TM 11 in def % Absolute Top Margin for page
+ /LM .5 in def % Absolute Left Margin for page
+ /RM 8 in def % Absolute Right Margin for page
+
+ userdict /pagenumber known not
+ { /pagenumber 1 def } if % Initialize pagenumber if not done already
+} bind def
+
+InitPage % Just loading this file initializes the page.
+
+formatdict begin
+
+STARTPAGE
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+21.6 BASELINESKIP
+
+[ 9 false ] NewFont % /cm18bf
+
+
+/vspace 112.5 def NEWPARA
+ (Chapter) NW (5) NW
+26.4 BASELINESKIP
+
+/vspace 46.6 def NEWPARA
+
+[ 10 false ] NewFont % /cm22bf
+ (How) NW (to) NW (Get) NW (Normal) NW (LaTeX) NW (Stuff) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 118.8 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (5.15) NW
+15 HSpace
+ (A) NW (Note) NW (to) NW (TeX) NW (Professionals) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+end
+0 144 translate
+%%BeginProcSet: Freelance Plus
+/Freelance_Plus dup 100 dict def load begin
+[ ] {bind} stopped
+{ (patching the bind operator...) = flush
+/*bind /bind load def /bind { dup xcheck
+{ *bind } if } *bind def } if pop
+/bdf {bind def} bind def
+/ldf {load def} bdf
+/mt /moveto ldf
+/rt /rmoveto ldf
+/l2 /lineto ldf
+/sg /setgray ldf
+/gs /gsave ldf
+/ef /eofill ldf
+/st /stroke ldf
+/gr /grestore ldf
+/np /newpath ldf
+/sv /save ldf
+/su /statusdict ldf
+/rs /restore ldf
+/sw /setlinewidth ldf
+/sd /setdash ldf
+/cp /closepath ldf
+/ed {exch def } bdf
+/cfnt {findfont exch makefont setfont} bdf
+/itr {transform round exch round exch itransform} bdf
+/fres 72 0 matrix currentmatrix dtransform
+exch dup mul exch dup mul add sqrt def
+/res fres def
+/mcm matrix currentmatrix bdf
+/Ich 256 array def StandardEncoding Ich copy pop Ich 7/bullet put
+Ich 20/paragraph put Ich 21/section put Ich 225/germandbls put
+/Ccedilla/udieresis/eacute/acircumflex/adieresis/agrave/aring/ccedilla
+/ecircumflex/edieresis/egrave/idieresis/icircumflex/igrave/Adieresis/Aring
+/Eacute/ae/AE/ocircumflex/odieresis/ograve/ucircumflex/ugrave/ydieresis
+/Odieresis/Udieresis/cent/sterling/yen/space/florin/aacute/iacute/oacute
+/uacute/ntilde/Ntilde/ordfeminine/ordmasculine/questiondown/space/space
+/space/space/exclamdown/guillemotleft/guillemotright
+Ich 128 48 getinterval astore pop
+/Ienc { /ncs Ich def /nfn ed /bfn ed /bfd bfn findfont def
+/nf bfd maxlength dict def bfd{exch dup dup /FID ne exch /Encoding ne and
+{exch nf 3 1 roll put}{pop pop} ifelse }forall nf/FontName nfn put
+nf/Encoding ncs put nfn nf definefont pop}bdf
+/IencO { /ncs Ich def /nfn ed /bfn ed /lnw ed /bfd bfn findfont def
+/nf bfd maxlength 4 add dict def bfd{exch dup dup /FID ne exch
+/Encoding ne and {exch nf 3 1 roll put}{pop pop} ifelse }forall
+nf/FontName nfn put nf/Encoding ncs put nf/PaintType 2 put
+nf/StrokeWidth lnw put nfn nf definefont pop}bdf
+/IencSO { /nfn ed /bfn ed /lnw ed /bfd bfn findfont def
+/nf bfd maxlength 4 add dict def bfd{exch dup /FID ne { exch
+nf 3 1 roll put}{pop pop} ifelse }forall nf/FontName nfn put
+nf/PaintType 2 put nf/StrokeWidth lnw put nfn nf definefont pop}bdf
+
+%%EndProcSet
+end
+%%EndProlog
+%%BeginSetup
+Freelance_Plus begin
+save newpath
+.1 .1 scale
+/ecm matrix currentmatrix bdf
+/sem {ecm setmatrix} bdf
+-720 -720 translate
+2 setlinecap
+0 setlinejoin
+106 45 {dup mul exch dup mul add 1.0 exch sub} setscreen
+%%EndSetup
+
+[] 0 sd
+6 sw
+12 sw
+.0 sg
+gs
+np
+4204 3422 itr mt
+4209 3415 itr l2
+4041 3457 itr l2
+4041 3881 itr l2
+3739 4291 itr l2
+3706 4291 itr l2
+3706 4457 itr l2
+4149 4457 itr l2
+4387 3596 itr l2
+4204 3422 itr l2
+gs
+.72 sg
+ef gr
+.50 sg
+st
+gr
+6 sw
+12 sw
+0 sg
+gs
+np
+3883 2554 itr mt
+3928 2637 itr l2
+3365 2986 itr l2
+3368 3009 itr l2
+3368 3028 itr l2
+3359 3059 itr l2
+3330 3109 itr l2
+3293 3161 itr l2
+3267 3195 itr l2
+3241 3212 itr l2
+3228 3228 itr l2
+3202 3245 itr l2
+3174 3266 itr l2
+3149 3295 itr l2
+3123 3312 itr l2
+3097 3329 itr l2
+3071 3346 itr l2
+3044 3363 itr l2
+3018 3380 itr l2
+3002 3391 itr l2
+2979 3397 itr l2
+3005 3363 itr l2
+3025 3331 itr l2
+3044 3295 itr l2
+3066 3263 itr l2
+3083 3228 itr l2
+3113 3259 itr l2
+3144 3230 itr l2
+3171 3209 itr l2
+3202 3177 itr l2
+3227 3141 itr l2
+3249 3116 itr l2
+3291 3066 itr l2
+3288 3041 itr l2
+3266 3016 itr l2
+3241 3009 itr l2
+3214 3026 itr l2
+3177 3059 itr l2
+3155 3077 itr l2
+3135 3088 itr l2
+3097 3110 itr l2
+3057 3127 itr l2
+3031 3144 itr l2
+3005 3163 itr l2
+3005 3212 itr l2
+2966 3228 itr l2
+2940 3228 itr l2
+2899 3234 itr l2
+2860 3237 itr l2
+2835 3245 itr l2
+2808 3245 itr l2
+2835 3212 itr l2
+2874 3178 itr l2
+2908 3144 itr l2
+2927 3120 itr l2
+2977 3130 itr l2
+2992 3127 itr l2
+3027 3105 itr l2
+3058 3084 itr l2
+3097 3059 itr l2
+3123 3043 itr l2
+3149 3026 itr l2
+3176 3009 itr l2
+3202 2992 itr l2
+3219 2966 itr l2
+3219 2948 itr l2
+3202 2925 itr l2
+3176 2908 itr l2
+3136 2925 itr l2
+3097 2934 itr l2
+3044 2948 itr l2
+3005 2962 itr l2
+2966 2976 itr l2
+2899 3013 itr l2
+2913 3030 itr l2
+2925 3051 itr l2
+2919 3044 itr l2
+2922 3059 itr l2
+2889 3066 itr l2
+2835 3077 itr l2
+2808 3084 itr l2
+2783 3088 itr l2
+2756 3093 itr l2
+2730 3093 itr l2
+2682 3095 itr l2
+2730 3076 itr l2
+2757 3059 itr l2
+2808 3026 itr l2
+2835 3009 itr l2
+2861 2992 itr l2
+2913 2959 itr l2
+2940 2942 itr l2
+2966 2925 itr l2
+2991 2909 itr l2
+3018 2891 itr l2
+3044 2874 itr l2
+3071 2866 itr l2
+3097 2857 itr l2
+3123 2857 itr l2
+3149 2857 itr l2
+3188 2862 itr l2
+3228 2874 itr l2
+3293 2908 itr l2
+3319 2916 itr l2
+3341 2898 itr l2
+3377 2880 itr l2
+3831 2587 itr l2
+3857 2572 itr l2
+3883 2554 itr l2
+gs
+.25 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3765 2874 itr mt
+3750 2822 itr l2
+3742 2725 itr l2
+3910 2621 itr l2
+3896 2587 itr l2
+3869 2560 itr l2
+3863 2560 itr l2
+3833 2583 itr l2
+3806 2602 itr l2
+3785 2599 itr l2
+3747 2564 itr l2
+3726 2520 itr l2
+3711 2503 itr l2
+3700 2470 itr l2
+3702 2445 itr l2
+3726 2419 itr l2
+3739 2385 itr l2
+3755 2353 itr l2
+3779 2335 itr l2
+3806 2311 itr l2
+3831 2301 itr l2
+3857 2292 itr l2
+3883 2284 itr l2
+3910 2284 itr l2
+3910 2251 itr l2
+3936 2234 itr l2
+3962 2234 itr l2
+4001 2234 itr l2
+4027 2234 itr l2
+4054 2251 itr l2
+4067 2234 itr l2
+4093 2234 itr l2
+4119 2251 itr l2
+4146 2267 itr l2
+4172 2301 itr l2
+4198 2335 itr l2
+4224 2368 itr l2
+4251 2385 itr l2
+4277 2385 itr l2
+4303 2402 itr l2
+4329 2419 itr l2
+4355 2436 itr l2
+4382 2453 itr l2
+4408 2487 itr l2
+4434 2504 itr l2
+4447 2520 itr l2
+4447 2554 itr l2
+4434 2587 itr l2
+4421 2621 itr l2
+4421 2689 itr l2
+4408 2740 itr l2
+4382 2807 itr l2
+4368 2840 itr l2
+4342 2891 itr l2
+4316 2925 itr l2
+4316 2959 itr l2
+4303 3009 itr l2
+4303 3043 itr l2
+4316 3076 itr l2
+4342 3110 itr l2
+4382 3161 itr l2
+4436 3207 itr l2
+4473 3245 itr l2
+4528 3304 itr l2
+4560 3346 itr l2
+4578 3380 itr l2
+4598 3415 itr l2
+4618 3498 itr l2
+4636 3548 itr l2
+4644 3582 itr l2
+4657 3616 itr l2
+4663 3652 itr l2
+4669 3700 itr l2
+4670 3751 itr l2
+4670 3818 itr l2
+4669 3860 itr l2
+4644 3936 itr l2
+4630 3987 itr l2
+4604 4037 itr l2
+4591 4088 itr l2
+4591 4105 itr l2
+4618 4139 itr l2
+4644 4172 itr l2
+4669 4201 itr l2
+4709 4240 itr l2
+4733 4284 itr l2
+4749 4324 itr l2
+4755 4375 itr l2
+4760 4423 itr l2
+4760 4457 itr l2
+4760 4506 itr l2
+4761 4526 itr l2
+4761 4594 itr l2
+4749 4644 itr l2
+4749 4678 itr l2
+4744 4743 itr l2
+4735 4796 itr l2
+4723 4847 itr l2
+4709 4880 itr l2
+4683 4931 itr l2
+4657 4948 itr l2
+4663 4895 itr l2
+4657 4826 itr l2
+4647 4778 itr l2
+4630 4745 itr l2
+4614 4694 itr l2
+4591 4661 itr l2
+4565 4628 itr l2
+4539 4577 itr l2
+4501 4528 itr l2
+4484 4506 itr l2
+4447 4476 itr l2
+4408 4459 itr l2
+4382 4444 itr l2
+4355 4459 itr l2
+4316 4476 itr l2
+4277 4492 itr l2
+4251 4509 itr l2
+4211 4526 itr l2
+4166 4541 itr l2
+4119 4543 itr l2
+4079 4541 itr l2
+4054 4543 itr l2
+4027 4543 itr l2
+4015 4541 itr l2
+3976 4528 itr l2
+3944 4521 itr l2
+3922 4560 itr l2
+3901 4583 itr l2
+3890 4611 itr l2
+3870 4661 itr l2
+3857 4712 itr l2
+3847 4764 itr l2
+3844 4796 itr l2
+3836 4847 itr l2
+3842 4882 itr l2
+3852 4930 itr l2
+3863 4972 itr l2
+3844 4931 itr l2
+3831 4914 itr l2
+3779 4864 itr l2
+3752 4830 itr l2
+3733 4805 itr l2
+3706 4771 itr l2
+3686 4745 itr l2
+3674 4712 itr l2
+3647 4678 itr l2
+3621 4628 itr l2
+3620 4611 itr l2
+3608 4560 itr l2
+3608 4526 itr l2
+3595 4492 itr l2
+3595 4459 itr l2
+3621 4459 itr l2
+3647 4442 itr l2
+3674 4425 itr l2
+3701 4409 itr l2
+3728 4388 itr l2
+3739 4375 itr l2
+3782 4388 itr l2
+3791 4408 itr l2
+3809 4430 itr l2
+3844 4442 itr l2
+3874 4457 itr l2
+3912 4457 itr l2
+3936 4459 itr l2
+3975 4459 itr l2
+4015 4442 itr l2
+4041 4425 itr l2
+4080 4358 itr l2
+4106 4324 itr l2
+4119 4290 itr l2
+4146 4256 itr l2
+4172 4206 itr l2
+4185 4156 itr l2
+4211 4122 itr l2
+4224 4088 itr l2
+4237 4037 itr l2
+4237 4004 itr l2
+4251 3953 itr l2
+4263 3903 itr l2
+4277 3852 itr l2
+4277 3801 itr l2
+4285 3749 itr l2
+4277 3717 itr l2
+4277 3684 itr l2
+4277 3650 itr l2
+4263 3599 itr l2
+4251 3548 itr l2
+4241 3513 itr l2
+4237 3481 itr l2
+4224 3464 itr l2
+4211 3448 itr l2
+4185 3464 itr l2
+4132 3481 itr l2
+4106 3481 itr l2
+4080 3498 itr l2
+4052 3484 itr l2
+4027 3481 itr l2
+4001 3481 itr l2
+3975 3464 itr l2
+3949 3464 itr l2
+3922 3448 itr l2
+3896 3431 itr l2
+3870 3414 itr l2
+3844 3397 itr l2
+3818 3397 itr l2
+3798 3402 itr l2
+3755 3402 itr l2
+3712 3429 itr l2
+3686 3448 itr l2
+3674 3481 itr l2
+3647 3515 itr l2
+3621 3548 itr l2
+3595 3582 itr l2
+3582 3616 itr l2
+3555 3650 itr l2
+3555 3684 itr l2
+3555 3717 itr l2
+3555 3734 itr l2
+3555 3751 itr l2
+3555 3784 itr l2
+3569 3818 itr l2
+3582 3825 itr l2
+3614 3867 itr l2
+3595 3920 itr l2
+3595 3953 itr l2
+3595 3987 itr l2
+3595 4020 itr l2
+3608 4071 itr l2
+3634 4105 itr l2
+3663 4159 itr l2
+3674 4189 itr l2
+3679 4221 itr l2
+3686 4256 itr l2
+3712 4291 itr l2
+3733 4326 itr l2
+3739 4341 itr l2
+3733 4360 itr l2
+3728 4305 itr l2
+3686 4240 itr l2
+3674 4273 itr l2
+3660 4307 itr l2
+3634 4307 itr l2
+3608 4307 itr l2
+3582 4290 itr l2
+3555 4256 itr l2
+3529 4223 itr l2
+3516 4189 itr l2
+3503 4139 itr l2
+3477 4105 itr l2
+3464 4071 itr l2
+3450 4020 itr l2
+3438 3987 itr l2
+3438 3953 itr l2
+3438 3920 itr l2
+3464 3920 itr l2
+3490 3903 itr l2
+3516 3886 itr l2
+3529 3852 itr l2
+3529 3835 itr l2
+3529 3801 itr l2
+3539 3769 itr l2
+3529 3734 itr l2
+3529 3700 itr l2
+3529 3667 itr l2
+3516 3633 itr l2
+3503 3599 itr l2
+3477 3599 itr l2
+3464 3599 itr l2
+3438 3599 itr l2
+3411 3616 itr l2
+3398 3582 itr l2
+3372 3565 itr l2
+3346 3531 itr l2
+3333 3498 itr l2
+3319 3464 itr l2
+3319 3431 itr l2
+3477 3212 itr l2
+3333 3414 itr l2
+3477 3212 itr l2
+3503 3195 itr l2
+3528 3165 itr l2
+3555 3144 itr l2
+3595 3127 itr l2
+3621 3110 itr l2
+3647 3093 itr l2
+3674 3088 itr l2
+3700 3076 itr l2
+3727 3068 itr l2
+3752 3059 itr l2
+3779 3043 itr l2
+3813 3034 itr l2
+3844 3026 itr l2
+3870 3026 itr l2
+3883 3026 itr l2
+3910 3026 itr l2
+3936 3026 itr l2
+3910 3026 itr l2
+3883 3026 itr l2
+3857 3009 itr l2
+3831 2992 itr l2
+3809 2977 itr l2
+3782 2942 itr l2
+3765 2908 itr l2
+3765 2874 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+4447 2275 itr mt
+4448 2273 itr l2
+4421 2284 itr l2
+4394 2301 itr l2
+4368 2318 itr l2
+4342 2335 itr l2
+4316 2349 itr l2
+4290 2363 itr l2
+4254 2382 itr l2
+4303 2402 itr l2
+4341 2427 itr l2
+4377 2451 itr l2
+4394 2471 itr l2
+4419 2496 itr l2
+4434 2504 itr l2
+4447 2520 itr l2
+4447 2487 itr l2
+4447 2453 itr l2
+4447 2419 itr l2
+4447 2385 itr l2
+4447 2351 itr l2
+4447 2318 itr l2
+4447 2301 itr l2
+4447 2275 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3634 3565 itr mt
+3621 3582 itr l2
+3647 3565 itr l2
+3674 3565 itr l2
+3700 3599 itr l2
+3700 3633 itr l2
+3700 3667 itr l2
+3713 3700 itr l2
+3713 3734 itr l2
+3713 3768 itr l2
+3700 3801 itr l2
+3686 3818 itr l2
+3674 3852 itr l2
+3647 3869 itr l2
+3621 3869 itr l2
+3595 3869 itr l2
+3569 3835 itr l2
+3569 3801 itr l2
+3555 3768 itr l2
+3543 3734 itr l2
+3543 3700 itr l2
+3543 3667 itr l2
+3555 3633 itr l2
+3582 3599 itr l2
+3608 3582 itr l2
+3634 3565 itr l2
+gs
+ef gr
+st
+gr
+6 sw
+12 sw
+gs
+np
+2835 1643 itr mt
+2822 1643 itr l2
+2847 1660 itr l2
+2871 1682 itr l2
+2920 1721 itr l2
+2964 1744 itr l2
+3013 1762 itr l2
+3056 1784 itr l2
+3096 1796 itr l2
+3137 1807 itr l2
+3176 1824 itr l2
+3212 1835 itr l2
+3241 1846 itr l2
+3287 1852 itr l2
+3326 1864 itr l2
+3344 1864 itr l2
+3358 1863 itr l2
+3438 1863 itr l2
+3516 1863 itr l2
+3555 1863 itr l2
+3593 1863 itr l2
+3647 1863 itr l2
+3686 1863 itr l2
+3713 1863 itr l2
+3739 1863 itr l2
+3765 1863 itr l2
+3752 1896 itr l2
+3739 1930 itr l2
+3726 1964 itr l2
+3713 1998 itr l2
+3703 2034 itr l2
+3700 2065 itr l2
+3703 2096 itr l2
+3713 2132 itr l2
+3700 2149 itr l2
+3686 2183 itr l2
+3674 2200 itr l2
+3664 2233 itr l2
+3660 2267 itr l2
+3650 2301 itr l2
+3647 2335 itr l2
+3647 2368 itr l2
+3647 2402 itr l2
+3637 2437 itr l2
+3634 2487 itr l2
+3633 2506 itr l2
+3633 2523 itr l2
+3634 2554 itr l2
+3634 2587 itr l2
+3642 2608 itr l2
+3674 2621 itr l2
+3700 2604 itr l2
+3712 2585 itr l2
+3747 2568 itr l2
+3735 2534 itr l2
+3726 2520 itr l2
+3713 2504 itr l2
+3700 2470 itr l2
+3699 2448 itr l2
+3699 2443 itr l2
+3725 2426 itr l2
+3739 2385 itr l2
+3752 2352 itr l2
+3774 2335 itr l2
+3779 2329 itr l2
+3805 2301 itr l2
+3832 2301 itr l2
+3858 2307 itr l2
+3871 2295 itr l2
+3885 2290 itr l2
+3911 2284 itr l2
+3925 2244 itr l2
+3947 2233 itr l2
+3973 2239 itr l2
+4000 2233 itr l2
+4026 2239 itr l2
+4053 2250 itr l2
+4079 2233 itr l2
+4106 2234 itr l2
+4132 2251 itr l2
+4158 2284 itr l2
+4172 2318 itr l2
+4198 2301 itr l2
+4224 2284 itr l2
+4251 2267 itr l2
+4265 2256 itr l2
+4291 2239 itr l2
+4316 2217 itr l2
+4342 2200 itr l2
+4366 2193 itr l2
+4382 2183 itr l2
+4393 2181 itr l2
+4406 2170 itr l2
+4408 2115 itr l2
+4408 2082 itr l2
+4401 2051 itr l2
+4408 2015 itr l2
+4421 1981 itr l2
+4428 1949 itr l2
+4434 1913 itr l2
+4434 1879 itr l2
+4447 1846 itr l2
+4460 1812 itr l2
+4473 1779 itr l2
+4499 1745 itr l2
+4526 1711 itr l2
+4552 1677 itr l2
+4539 1643 itr l2
+4499 1610 itr l2
+4473 1593 itr l2
+4446 1585 itr l2
+4421 1576 itr l2
+4380 1556 itr l2
+4342 1543 itr l2
+4303 1526 itr l2
+4265 1517 itr l2
+4237 1509 itr l2
+4211 1492 itr l2
+4185 1488 itr l2
+4146 1475 itr l2
+4106 1475 itr l2
+4067 1475 itr l2
+4041 1475 itr l2
+4004 1471 itr l2
+3942 1466 itr l2
+3896 1458 itr l2
+3857 1458 itr l2
+3818 1458 itr l2
+3791 1458 itr l2
+3752 1458 itr l2
+3726 1458 itr l2
+3700 1458 itr l2
+3674 1458 itr l2
+3660 1458 itr l2
+3633 1466 itr l2
+3606 1471 itr l2
+3575 1471 itr l2
+3555 1475 itr l2
+3516 1475 itr l2
+3490 1475 itr l2
+3464 1475 itr l2
+3424 1492 itr l2
+3385 1492 itr l2
+3359 1492 itr l2
+3333 1492 itr l2
+3319 1492 itr l2
+3282 1500 itr l2
+3251 1500 itr l2
+3213 1505 itr l2
+3189 1506 itr l2
+3163 1506 itr l2
+3136 1509 itr l2
+3127 1512 itr l2
+3123 1517 itr l2
+3137 1529 itr l2
+3190 1590 itr l2
+3136 1593 itr l2
+3110 1593 itr l2
+3071 1593 itr l2
+3031 1610 itr l2
+3018 1610 itr l2
+2992 1613 itr l2
+2966 1610 itr l2
+2939 1619 itr l2
+2913 1627 itr l2
+2887 1627 itr l2
+2872 1630 itr l2
+2850 1636 itr l2
+2835 1643 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+4074 3499 itr mt
+4080 3498 itr l2
+4093 3531 itr l2
+4095 3555 itr l2
+4099 3585 itr l2
+4109 3620 itr l2
+4119 3667 itr l2
+4119 3684 itr l2
+4119 3734 itr l2
+4119 3768 itr l2
+4112 3818 itr l2
+4099 3874 itr l2
+4093 3903 itr l2
+4067 3953 itr l2
+4054 4004 itr l2
+4041 4037 itr l2
+4025 4086 itr l2
+3988 4139 itr l2
+3964 4177 itr l2
+3948 4198 itr l2
+3925 4237 itr l2
+3914 4259 itr l2
+3891 4285 itr l2
+3883 4290 itr l2
+3857 4307 itr l2
+3827 4319 itr l2
+3805 4324 itr l2
+3779 4324 itr l2
+3752 4324 itr l2
+3740 4319 itr l2
+3713 4290 itr l2
+3700 4256 itr l2
+3689 4224 itr l2
+3682 4190 itr l2
+3662 4151 itr l2
+3634 4105 itr l2
+3621 4071 itr l2
+3608 4037 itr l2
+3605 4026 itr l2
+3595 3987 itr l2
+3595 3953 itr l2
+3595 3920 itr l2
+3596 3884 itr l2
+3621 3862 itr l2
+3647 3851 itr l2
+3674 3818 itr l2
+3692 3793 itr l2
+3700 3768 itr l2
+3713 3734 itr l2
+3713 3700 itr l2
+3713 3667 itr l2
+3706 3651 itr l2
+3700 3616 itr l2
+3689 3593 itr l2
+3674 3565 itr l2
+3627 3560 itr l2
+3647 3515 itr l2
+3661 3494 itr l2
+3678 3465 itr l2
+3686 3448 itr l2
+3712 3429 itr l2
+3739 3414 itr l2
+3780 3400 itr l2
+3817 3404 itr l2
+3844 3404 itr l2
+3870 3419 itr l2
+3896 3431 itr l2
+3921 3451 itr l2
+3961 3470 itr l2
+4000 3480 itr l2
+4029 3484 itr l2
+4040 3484 itr l2
+4068 3494 itr l2
+4074 3499 itr l2
+gs
+1 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3621 4459 itr mt
+3626 4457 itr l2
+3608 4459 itr l2
+3593 4457 itr l2
+3571 4451 itr l2
+3544 4444 itr l2
+3516 4408 itr l2
+3503 4358 itr l2
+3484 4326 itr l2
+3474 4298 itr l2
+3468 4270 itr l2
+3464 4240 itr l2
+3464 4206 itr l2
+3464 4172 itr l2
+3464 4139 itr l2
+3477 4105 itr l2
+3503 4139 itr l2
+3516 4172 itr l2
+3529 4206 itr l2
+3543 4240 itr l2
+3555 4263 itr l2
+3582 4291 itr l2
+3604 4298 itr l2
+3621 4307 itr l2
+3647 4290 itr l2
+3674 4273 itr l2
+3674 4240 itr l2
+3674 4206 itr l2
+3700 4240 itr l2
+3713 4273 itr l2
+3726 4290 itr l2
+3739 4324 itr l2
+3726 4375 itr l2
+3700 4408 itr l2
+3674 4425 itr l2
+3647 4442 itr l2
+3634 4459 itr l2
+3621 4459 itr l2
+gs
+.72 sg
+ef gr
+0 sg
+st
+gr
+gs
+np
+3883 3026 itr mt
+3896 3026 itr l2
+3922 3026 itr l2
+3949 3033 itr l2
+3975 3043 itr l2
+4004 3054 itr l2
+4020 3061 itr l2
+4052 3081 itr l2
+4063 3095 itr l2
+4079 3144 itr l2
+4117 3117 itr l2
+4080 3144 itr l2
+4052 3144 itr l2
+4025 3144 itr l2
+st
+gr
+gs
+np
+3875 3016 itr mt
+3917 3009 itr l2
+3934 3001 itr l2
+3961 2986 itr l2
+3988 2971 itr l2
+4015 2959 itr l2
+4025 2949 itr l2
+4054 2947 itr l2
+4083 2944 itr l2
+4119 2959 itr l2
+4143 2974 itr l2
+4167 2986 itr l2
+4247 3040 itr l2
+st
+gr
+6 sw
+12 sw
+gs
+np
+3659 2614 itr mt
+3655 2603 itr l2
+3657 2594 itr l2
+3695 2575 itr l2
+3737 2564 itr l2
+3764 2572 itr l2
+3776 2587 itr l2
+3799 2628 itr l2
+3813 2670 itr l2
+3816 2713 itr l2
+3794 2729 itr l2
+3752 2738 itr l2
+3744 2733 itr l2
+3723 2704 itr l2
+3686 2655 itr l2
+3659 2614 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+4185 2318 itr mt
+4185 2301 itr l2
+4237 2267 itr l2
+4342 2200 itr l2
+4447 2149 itr l2
+4552 2082 itr l2
+4604 2065 itr l2
+4644 2115 itr l2
+4591 2183 itr l2
+4565 2200 itr l2
+4539 2217 itr l2
+4513 2234 itr l2
+4487 2251 itr l2
+4460 2267 itr l2
+4434 2284 itr l2
+4408 2301 itr l2
+4382 2318 itr l2
+4342 2335 itr l2
+4303 2351 itr l2
+4277 2368 itr l2
+4251 2385 itr l2
+4224 2368 itr l2
+4198 2351 itr l2
+4185 2318 itr l2
+gs
+.48 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+4404 2175 itr mt
+4410 2105 itr l2
+4408 2099 itr l2
+4406 2064 itr l2
+4403 2044 itr l2
+4412 2001 itr l2
+4421 1981 itr l2
+4447 1947 itr l2
+4473 1913 itr l2
+4513 1879 itr l2
+4539 1863 itr l2
+4578 1846 itr l2
+4605 1838 itr l2
+4630 1829 itr l2
+4669 1821 itr l2
+4709 1812 itr l2
+4762 1799 itr l2
+4788 1795 itr l2
+4834 1783 itr l2
+4880 1779 itr l2
+4919 1767 itr l2
+4970 1756 itr l2
+5011 1745 itr l2
+5051 1734 itr l2
+5076 1723 itr l2
+5110 1723 itr l2
+5141 1711 itr l2
+5181 1711 itr l2
+5212 1706 itr l2
+5246 1694 itr l2
+5272 1696 itr l2
+5325 1694 itr l2
+5365 1690 itr l2
+5416 1684 itr l2
+5443 1677 itr l2
+5472 1674 itr l2
+5508 1660 itr l2
+5547 1658 itr l2
+5587 1643 itr l2
+5620 1625 itr l2
+5637 1592 itr l2
+5627 1559 itr l2
+5611 1537 itr l2
+5561 1509 itr l2
+5522 1494 itr l2
+5496 1488 itr l2
+5456 1475 itr l2
+5430 1475 itr l2
+5391 1475 itr l2
+5353 1466 itr l2
+5327 1466 itr l2
+5284 1461 itr l2
+5260 1458 itr l2
+5233 1458 itr l2
+5207 1458 itr l2
+5229 1494 itr l2
+5246 1526 itr l2
+5272 1559 itr l2
+5242 1554 itr l2
+5194 1543 itr l2
+5165 1537 itr l2
+5141 1526 itr l2
+5102 1509 itr l2
+5063 1492 itr l2
+4983 1450 itr l2
+4944 1434 itr l2
+4906 1407 itr l2
+4869 1390 itr l2
+4827 1374 itr l2
+4788 1351 itr l2
+4735 1323 itr l2
+4696 1307 itr l2
+4657 1290 itr l2
+4618 1273 itr l2
+4592 1270 itr l2
+4552 1256 itr l2
+4499 1239 itr l2
+4503 1237 itr l2
+4511 1237 itr l2
+4511 1237 itr l2
+4552 1239 itr l2
+4591 1239 itr l2
+4644 1239 itr l2
+4683 1239 itr l2
+4737 1232 itr l2
+4771 1232 itr l2
+4813 1232 itr l2
+4856 1232 itr l2
+4906 1232 itr l2
+4944 1242 itr l2
+4983 1242 itr l2
+5025 1242 itr l2
+5089 1242 itr l2
+5127 1248 itr l2
+5165 1248 itr l2
+5208 1248 itr l2
+5246 1248 itr l2
+5284 1248 itr l2
+5327 1248 itr l2
+5377 1256 itr l2
+5404 1256 itr l2
+5442 1254 itr l2
+5479 1254 itr l2
+5522 1256 itr l2
+5574 1256 itr l2
+5627 1256 itr l2
+5666 1256 itr l2
+5705 1256 itr l2
+5732 1256 itr l2
+5705 1273 itr l2
+5666 1290 itr l2
+5632 1303 itr l2
+5598 1303 itr l2
+5561 1307 itr l2
+5522 1307 itr l2
+5469 1307 itr l2
+5412 1319 itr l2
+5348 1324 itr l2
+5325 1323 itr l2
+5297 1330 itr l2
+5255 1335 itr l2
+5233 1340 itr l2
+5194 1340 itr l2
+5229 1341 itr l2
+5272 1351 itr l2
+5314 1351 itr l2
+5353 1351 itr l2
+5391 1357 itr l2
+5417 1357 itr l2
+5443 1357 itr l2
+5482 1357 itr l2
+5509 1357 itr l2
+5539 1363 itr l2
+5560 1368 itr l2
+5611 1385 itr l2
+5640 1391 itr l2
+5679 1407 itr l2
+5705 1424 itr l2
+5744 1441 itr l2
+5771 1458 itr l2
+5797 1475 itr l2
+5837 1492 itr l2
+5876 1526 itr l2
+5902 1559 itr l2
+5915 1593 itr l2
+5915 1627 itr l2
+5902 1660 itr l2
+5876 1694 itr l2
+5823 1745 itr l2
+5784 1762 itr l2
+5732 1779 itr l2
+5679 1779 itr l2
+5640 1779 itr l2
+5601 1779 itr l2
+5561 1779 itr l2
+5508 1779 itr l2
+5469 1779 itr l2
+5417 1779 itr l2
+5377 1779 itr l2
+5325 1779 itr l2
+5276 1789 itr l2
+5233 1795 itr l2
+5181 1795 itr l2
+5140 1799 itr l2
+5097 1805 itr l2
+5050 1812 itr l2
+4995 1821 itr l2
+4959 1829 itr l2
+4919 1833 itr l2
+4866 1846 itr l2
+4827 1863 itr l2
+4788 1876 itr l2
+4761 1879 itr l2
+4735 1896 itr l2
+4711 1903 itr l2
+4670 1930 itr l2
+4644 1947 itr l2
+4618 1964 itr l2
+4591 1981 itr l2
+4565 1998 itr l2
+4552 2015 itr l2
+4526 2031 itr l2
+4499 2065 itr l2
+4487 2099 itr l2
+4460 2132 itr l2
+4404 2175 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+gs
+np
+4131 1779 itr mt
+4095 1790 itr l2
+4064 1784 itr l2
+4024 1796 itr l2
+4015 1795 itr l2
+3988 1795 itr l2
+3949 1795 itr l2
+3910 1795 itr l2
+3883 1790 itr l2
+3857 1790 itr l2
+3803 1784 itr l2
+3752 1779 itr l2
+3726 1779 itr l2
+3702 1773 itr l2
+3676 1767 itr l2
+3634 1762 itr l2
+3596 1755 itr l2
+3556 1744 itr l2
+3516 1733 itr l2
+3490 1728 itr l2
+3450 1711 itr l2
+3397 1687 itr l2
+3359 1677 itr l2
+3307 1660 itr l2
+3280 1643 itr l2
+3242 1625 itr l2
+3216 1614 itr l2
+3188 1593 itr l2
+3180 1574 itr l2
+3202 1585 itr l2
+3256 1608 itr l2
+3309 1625 itr l2
+3357 1642 itr l2
+3384 1648 itr l2
+3437 1659 itr l2
+3463 1670 itr l2
+3490 1677 itr l2
+st
+gr
+gs
+np
+3698 1631 itr mt
+3662 1625 itr l2
+3634 1627 itr l2
+3609 1619 itr l2
+3583 1614 itr l2
+3543 1610 itr l2
+3516 1593 itr l2
+3490 1585 itr l2
+3450 1559 itr l2
+3424 1543 itr l2
+3384 1517 itr l2
+3370 1506 itr l2
+3362 1495 itr l2
+3353 1500 itr l2
+st
+gr
+gs
+np
+2991 1608 itr mt
+3018 1627 itr l2
+3044 1660 itr l2
+3071 1677 itr l2
+3110 1710 itr l2
+3149 1728 itr l2
+3176 1745 itr l2
+3216 1767 itr l2
+3242 1773 itr l2
+3264 1779 itr l2
+3293 1779 itr l2
+3307 1779 itr l2
+st
+gr
+gs
+np
+4041 2115 itr mt
+4041 2082 itr l2
+4041 2048 itr l2
+4041 2015 itr l2
+4042 1983 itr l2
+4041 1947 itr l2
+4054 1913 itr l2
+4069 1875 itr l2
+4106 1846 itr l2
+4132 1846 itr l2
+4127 1847 itr l2
+4139 1835 itr l2
+4135 1830 itr l2
+4122 1790 itr l2
+st
+gr
+gs
+np
+3713 2132 itr mt
+3737 2114 itr l2
+3765 2099 itr l2
+3791 2082 itr l2
+3818 2065 itr l2
+3844 2052 itr l2
+3870 2048 itr l2
+3896 2048 itr l2
+3901 2052 itr l2
+st
+gr
+gs
+np
+3726 1964 itr mt
+3739 1930 itr l2
+3765 1913 itr l2
+3777 1903 itr l2
+3803 1886 itr l2
+3831 1879 itr l2
+3857 1881 itr l2
+st
+gr
+6 sw
+12 sw
+1 sg
+gs
+np
+3596 3767 itr mt
+3599 3779 itr l2
+3607 3796 itr l2
+3621 3793 itr l2
+3634 3734 itr l2
+3634 3700 itr l2
+3621 3667 itr l2
+3608 3667 itr l2
+3595 3700 itr l2
+3590 3735 itr l2
+3596 3767 itr l2
+gs
+ef gr
+st
+gr
+6 sw
+12 sw
+0 sg
+gs
+np
+3328 3394 itr mt
+3346 3414 itr l2
+3323 3380 itr l2
+3319 3346 itr l2
+3319 3312 itr l2
+3333 3279 itr l2
+3346 3245 itr l2
+3372 3228 itr l2
+3420 3214 itr l2
+3424 3212 itr l2
+3450 3212 itr l2
+3477 3212 itr l2
+3503 3212 itr l2
+3529 3228 itr l2
+3539 3241 itr l2
+3582 3228 itr l2
+3608 3228 itr l2
+3634 3228 itr l2
+3660 3228 itr l2
+3686 3245 itr l2
+3696 3276 itr l2
+3700 3295 itr l2
+3700 3329 itr l2
+3686 3363 itr l2
+3674 3397 itr l2
+3647 3431 itr l2
+3621 3448 itr l2
+3595 3464 itr l2
+3569 3481 itr l2
+3544 3484 itr l2
+3516 3498 itr l2
+3490 3498 itr l2
+3464 3498 itr l2
+3436 3492 itr l2
+3414 3484 itr l2
+3398 3481 itr l2
+3366 3464 itr l2
+3339 3429 itr l2
+3328 3394 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3555 3481 itr mt
+3524 3494 itr l2
+3491 3499 itr l2
+3467 3524 itr l2
+3450 3555 itr l2
+3433 3572 itr l2
+3410 3602 itr l2
+3398 3633 itr l2
+3411 3667 itr l2
+3411 3700 itr l2
+3411 3734 itr l2
+3411 3768 itr l2
+3424 3818 itr l2
+3424 3869 itr l2
+3438 3920 itr l2
+3438 3953 itr l2
+3438 3987 itr l2
+3444 4026 itr l2
+3454 4056 itr l2
+3467 4090 itr l2
+3484 4125 itr l2
+3503 4156 itr l2
+3514 4190 itr l2
+3531 4224 itr l2
+3551 4255 itr l2
+3575 4280 itr l2
+3591 4302 itr l2
+3621 4307 itr l2
+3647 4307 itr l2
+3669 4302 itr l2
+3686 4290 itr l2
+3700 4256 itr l2
+3700 4223 itr l2
+3686 4189 itr l2
+3662 4155 itr l2
+3647 4122 itr l2
+3632 4086 itr l2
+3621 4054 itr l2
+3612 4021 itr l2
+3605 3987 itr l2
+3599 3952 itr l2
+3595 3920 itr l2
+3595 3886 itr l2
+3608 3852 itr l2
+3582 3818 itr l2
+3562 3784 itr l2
+3555 3751 itr l2
+3555 3717 itr l2
+3555 3684 itr l2
+3555 3650 itr l2
+3569 3616 itr l2
+3595 3585 itr l2
+3622 3572 itr l2
+3634 3531 itr l2
+3647 3515 itr l2
+3662 3486 itr l2
+3635 3481 itr l2
+3609 3472 itr l2
+3582 3481 itr l2
+3555 3481 itr l2
+gs
+1 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3438 3920 itr mt
+3438 3936 itr l2
+3424 3903 itr l2
+3398 3869 itr l2
+3385 3835 itr l2
+3385 3801 itr l2
+3372 3768 itr l2
+3372 3734 itr l2
+3372 3700 itr l2
+3385 3667 itr l2
+3398 3633 itr l2
+3424 3599 itr l2
+3450 3599 itr l2
+3477 3599 itr l2
+3503 3599 itr l2
+3516 3633 itr l2
+3529 3667 itr l2
+3529 3700 itr l2
+3529 3734 itr l2
+3529 3768 itr l2
+3529 3801 itr l2
+3529 3835 itr l2
+3516 3852 itr l2
+3516 3886 itr l2
+3490 3903 itr l2
+3464 3920 itr l2
+3438 3920 itr l2
+gs
+ef gr
+st
+gr
+6 sw
+12 sw
+1 sg
+gs
+np
+3463 3833 itr mt
+3452 3833 itr l2
+3438 3818 itr l2
+3424 3786 itr l2
+3424 3750 itr l2
+3429 3724 itr l2
+3450 3700 itr l2
+3477 3717 itr l2
+3490 3751 itr l2
+3490 3784 itr l2
+3482 3818 itr l2
+3463 3833 itr l2
+gs
+ef gr
+st
+gr
+6 sw
+12 sw
+0 sg
+gs
+np
+3725 2820 itr mt
+3738 2887 itr l2
+3725 2920 itr l2
+3712 2938 itr l2
+3686 2955 itr l2
+3660 2963 itr l2
+3633 2966 itr l2
+3607 2971 itr l2
+3581 2971 itr l2
+3553 2963 itr l2
+3529 2947 itr l2
+3515 2921 itr l2
+3520 2890 itr l2
+3541 2871 itr l2
+3567 2859 itr l2
+3594 2847 itr l2
+3621 2828 itr l2
+3645 2813 itr l2
+3672 2803 itr l2
+3699 2803 itr l2
+3720 2825 itr l2
+3725 2820 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3544 2833 itr mt
+3502 2859 itr l2
+3477 2874 itr l2
+3450 2874 itr l2
+3424 2867 itr l2
+3398 2847 itr l2
+3372 2807 itr l2
+3359 2773 itr l2
+3359 2740 itr l2
+3368 2713 itr l2
+3385 2689 itr l2
+3413 2675 itr l2
+3436 2675 itr l2
+3463 2675 itr l2
+3490 2689 itr l2
+3517 2698 itr l2
+3529 2706 itr l2
+3555 2723 itr l2
+3569 2756 itr l2
+3565 2790 itr l2
+3544 2833 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3684 2798 itr mt
+3582 2790 itr l2
+3608 2790 itr l2
+3647 2790 itr l2
+3675 2802 itr l2
+3713 2798 itr l2
+3726 2773 itr l2
+3732 2740 itr l2
+3726 2706 itr l2
+3713 2672 itr l2
+3687 2645 itr l2
+3660 2621 itr l2
+3634 2604 itr l2
+3608 2604 itr l2
+3582 2604 itr l2
+3559 2606 itr l2
+3529 2614 itr l2
+3502 2626 itr l2
+3470 2675 itr l2
+3490 2687 itr l2
+3517 2691 itr l2
+3544 2710 itr l2
+3562 2729 itr l2
+3569 2756 itr l2
+3582 2790 itr l2
+3606 2798 itr l2
+3633 2798 itr l2
+3660 2794 itr l2
+3684 2798 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+gs
+np
+3805 2706 itr mt
+3875 2763 itr l2
+3949 2783 itr l2
+4018 2763 itr l2
+4080 2689 itr l2
+4146 2648 itr l2
+4185 2723 itr l2
+4158 2823 itr l2
+st
+gr
+rs end
+grestoreall
+formatdict begin
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (I) NW (love) NW (LaTeX.) NW (It's) NW (great.) NW (I) NW (just) NW (learned) NW (it) NW (as) NW (I) NW (was) NW (writing) NW (LameTeX.) NW (I'm) NW (sure) NW (TeX) NW (is) NW (cool) NW (too,) NW (although) NW (I) NW (have) NW (not) NW (gotten) NW (around) NW (to) NW (learning) NW (it) NW (yet.) NW (I) NW (was) NW (a) NW (Scribe) NW (Math) NW (hacker) NW (and) NW (have) NW (done) NW (lots) NW (of) NW (letterpress) NW (printing.) NW (TeX) NW (has) NW (a) NW (bad) NW (reputation) NW (though.) NW (I) NW (thought) NW (that) NW (learning) NW (it) NW (would) NW (be) NW (so) NW (hard) NW (that) NW (I) NW (might) NW (as) NW (well) NW (write) NW (my) NW (own) NW (formatter!) NW (Others) NW (think) NW (that) NW (TeX) NW (kind) NW (of) NW (straight-jackets) NW (you) NW (into) NW (professional) NW (documents.) NW
+NEWPARA
+ (Normally) NW (that's) NW (great.) NW (My) NW (Mom) NW (isn't) NW (around) NW (any) NW (more) NW (to) NW (clean) NW (my) NW (room) NW (and) NW (tell) NW (me) NW (how) NW (to) NW (write) NW (professionally.) NW (And) NW (a) NW (letterpress) NW (doesn't) NW (care) NW (if) NW (you) NW (place) NW (your) NW (letters) NW (upside) NW (down.) NW
+NEWPARA
+ (But) NW (occasionally) NW (\(or) NW
+[ 12 false ] NewFont % /cm10it
+ (often) NW
+[ 1 false ] NewFont % /cm10rm
+ (if) NW (you're) NW (strange) NW (like) NW (me\)) NW (I) NW (get) NW (the) NW (urge) NW (to) NW (splash) NW (100) NW (point) NW (type) NW (or) NW (stick) NW (random) NW (bugs) NW (all) NW (over) NW (the) NW (page.) NW (Once) NW (to) NW (advertise) NW (an) NW (event) NW (I) NW (hung) NW (up) NW (a) NW (huge) NW (18) NW (foot) NW (poster) NW (taped) NW (together) NW (out) NW (of) NW (PostScript) NW (pages.) NW (You) NW (ever) NW (get) NW (that) NW (urge?) NW
+NEWPARA
+ (Anyway,) NW (LameTeX) NW (is) NW (a) NW (fun) NW (toy.) NW (Just) NW (don't) NW (take) NW (it) NW (too) NW (seriously.) NW
+NEWPARA
+
+[ 12 false ] NewFont % /cm10it
+ (And) NW (no,) NW (it's) NW (not) NW (written) NW (in) NW (TeX) NW (macros!) NW
+NEWPARA
+
+[ 1 false ] NewFont % /cm10rm
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (5.16) NW
+15 HSpace
+ (The) NW (LaTeX) NW (Length) NW (Parameters) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (If) NW (LaTeX) NW (is) NW (royalty,) NW (then) NW (LameTeX) NW (is) NW (a) NW (prostitute.) NW (If) NW (you) NW (want) NW (to) NW (change) NW (the) NW (margins) NW
+[ 12 false ] NewFont % /cm10it
+ (in) NW (the) NW (middle) NW (of) NW (the) NW (page) NW
+[ 1 false ] NewFont % /cm10rm
+ (using) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (textwidth,) NW (LaTeX) NW (kind) NW (of) NW (sticks) NW (its) NW (nose) NW (up) NW (at) NW (you) NW (and) NW (says) NW (to) NW (go) NW (implement) NW (your) NW (own) NW (margin) NW (library) NW (font) NW (program) NW (hierarchy) NW (system) NW (out) NW (of) NW (TeX) NW (macros.) NW (LameTeX) NW (just) NW (says) NW (\\OKAY!") NW (and) NW (hops) NW (in) NW (the) NW (sack) NW (with) NW (you.) NW (No) NW (questions.) NW
+NEWPARA
+ (So) NW (feel) NW (free) NW (to) NW (change) NW (a) NW (lot) NW (of) NW (stuff.) NW (LameTeX) NW (won't) NW (care.) NW (I) NW (really) NW (urge) NW (you) NW (to) NW (put) NW (random) NW (stuff) NW (inside) NW (of) NW (a) NW (stealth) NW (environment,) NW (however,) NW (so) NW (that) NW (normal) NW (LaTeX) NW (won't) NW (balk) NW (at) NW (it) NW (and) NW (refuse) NW (to) NW (serve) NW (you.) NW
+NEWPARA
+ (It's) NW (like) NW (playing) NW (an) NW (adventure) NW (game.) NW (If) NW (you) NW (die,) NW (who) NW (cares,) NW (it's) NW (just) NW (a) NW (program.) NW (But) NW (if) NW (you) NW (don't) NW (try) NW (various) NW (things,) NW (you) NW (won't) NW (have) NW (any) NW (fun.) NW
+NEWPARA
+ (There) NW (is) NW (no) NW (\\textwidth") NW (in) NW (LameTeX.) NW (When) NW (you) NW (set) NW (textwidth) NW (it) NW (just) NW (sets) NW (the) NW (right) NW (margin) NW (to) NW (8.5) NW (inches) NW (minus) NW (the) NW (textwidth) NW (given) NW (minus) NW (the) NW (left) NW (margin.) NW
+NEWPARA
+ (Similarly) NW (there) NW (is) NW (no) NW (\\textheight".) NW (When) NW (you) NW (set) NW (textheight) NW (it) NW (just) NW (sets) NW (the) NW (bottom) NW (margin) NW (to) NW (11) NW (inches) NW (minus) NW (the) NW (textheight) NW (given) NW (minus) NW (the) NW (top) NW (margin.) NW
+NEWPARA
+ (Please) NW (note) NW (that) NW (just) NW (like) NW (LaTeX,) NW (LameTeX) NW (defaults) NW (to) NW (ridiculous) NW (margins.) NW (There's) NW (a) NW (good) NW (chance) NW (that) NW (if) NW (your) NW (margins) NW (are) NW (large) NW (at) NW (all,) NW (that) NW (the) NW (text) NW (may) NW (not) NW (fit) NW (inside) NW (the) NW (page) NW (description) NW (path!) NW (This) NW (is) NW (especially) NW (true) NW (of) NW (the) NW
+[ 14 false ] NewFont % /cm10tt
+ (page) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (check.ps) NW
+[ 1 false ] NewFont % /cm10rm
+ (page) NW (description,) NW (which) NW (breaks) NW (the) NW (page) NW (into) NW (boxes) NW (that) NW (are) NW (only) NW (and) NW (inch) NW (wide) NW (or) NW (so.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (5.17) NW
+15 HSpace
+ (Tiny) NW (Differences) NW (from) NW (LaTeX) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (You) NW (can't) NW (use) NW (fine-tune) NW (spacing) NW (commands.) NW (You) NW (won't) NW (get) NW (a) NW (table) NW (of) NW (contents) NW (anywhere,) NW (and) NW (you) NW (can't) NW (do) NW (table) NW (and) NW (figures.) NW
+NEWPARA
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (vspace) NW (is) NW (meant) NW (to) NW (give) NW (the) NW (absolute) NW (vertical) NW (distance) NW (between) NW (the) NW (current) NW (line) NW (and) NW (the) NW (last) NW (line) NW (\(or) NW (top) NW (of) NW (page\).) NW (If) NW (you) NW (use) NW (two) NW (of) NW (them) NW (in) NW (a) NW (sequence,) NW (you're) NW (likely) NW (to) NW (have) NW (the) NW (larger) NW (one) NW (apply) NW (only,) NW (not) NW (both) NW (together.) NW
+NEWPARA
+ (There) NW (is) NW (no) NW (concept) NW (of) NW (\\glue") NW (in) NW (LameTeX.) NW (I) NW (bent) NW (over) NW (backwards) NW (trying) NW (to) NW (make) NW (it) NW (possible) NW (to) NW (put) NW (a) NW (backslash) NW (next) NW (to) NW (a) NW (command) NW (when) NW (I) NW (want) NW (to) NW (type) NW (something) NW (like) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (myfancycommand.) NW (Unfortunately,) NW (LameTeX) NW (views) NW (these) NW (as) NW (two) NW (tokens) NW (from) NW (which) NW (the) NW (space) NW (in-between) NW (has) NW (been) NW (\\deleted".) NW (It's) NW (happy) NW (to) NW (break) NW (a) NW (line) NW (in) NW (the) NW (middle.) NW (You'll) NW (probably) NW (see) NW (that) NW (scattered) NW (throughout) NW (this) NW (document.) NW (It) NW (only) NW (happens) NW (when) NW (you) NW (print) NW (the) NW (special) NW (characters) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+
+[ 0 false ] NewFont (%) NW
+
+[ 1 false ] NewFont % /cm10rm
+ (,) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+
+[ 0 false ] NewFont (_) NW
+
+[ 1 false ] NewFont % /cm10rm
+ (,) NW (and) NW (the) NW (like.) NW (This) NW (\\ungluing") NW (will) NW (also) NW (occur) NW (if) NW (you) NW (change) NW (fonts) NW (or) NW (change) NW (environments) NW (in) NW (any) NW (way) NW (in) NW (the) NW (middle) NW (of) NW (a) NW (word.) NW (So) NW (if) NW (my) NW (sentence) NW (is) NW (in) NW (italic) NW (but) NW (the) NW (period) NW (at) NW (the) NW (end) NW (of) NW (the) NW (sentence) NW (is) NW (in) NW (roman) NW (type,) NW (the) NW (period) NW (might) NW (be) NW (placed) NW (on) NW (a) NW (newline) NW (by) NW (itself!) NW
+end
+0 144 translate
+%%BeginProcSet: Freelance Plus
+/Freelance_Plus dup 100 dict def load begin
+[ ] {bind} stopped
+{ (patching the bind operator...) = flush
+/*bind /bind load def /bind { dup xcheck
+{ *bind } if } *bind def } if pop
+/bdf {bind def} bind def
+/ldf {load def} bdf
+/mt /moveto ldf
+/rt /rmoveto ldf
+/l2 /lineto ldf
+/sg /setgray ldf
+/gs /gsave ldf
+/ef /eofill ldf
+/st /stroke ldf
+/gr /grestore ldf
+/np /newpath ldf
+/sv /save ldf
+/su /statusdict ldf
+/rs /restore ldf
+/sw /setlinewidth ldf
+/sd /setdash ldf
+/cp /closepath ldf
+/ed {exch def } bdf
+/cfnt {findfont exch makefont setfont} bdf
+/itr {transform round exch round exch itransform} bdf
+/fres 72 0 matrix currentmatrix dtransform
+exch dup mul exch dup mul add sqrt def
+/res fres def
+/mcm matrix currentmatrix bdf
+/Ich 256 array def StandardEncoding Ich copy pop Ich 7/bullet put
+Ich 20/paragraph put Ich 21/section put Ich 225/germandbls put
+/Ccedilla/udieresis/eacute/acircumflex/adieresis/agrave/aring/ccedilla
+/ecircumflex/edieresis/egrave/idieresis/icircumflex/igrave/Adieresis/Aring
+/Eacute/ae/AE/ocircumflex/odieresis/ograve/ucircumflex/ugrave/ydieresis
+/Odieresis/Udieresis/cent/sterling/yen/space/florin/aacute/iacute/oacute
+/uacute/ntilde/Ntilde/ordfeminine/ordmasculine/questiondown/space/space
+/space/space/exclamdown/guillemotleft/guillemotright
+Ich 128 48 getinterval astore pop
+/Ienc { /ncs Ich def /nfn ed /bfn ed /bfd bfn findfont def
+/nf bfd maxlength dict def bfd{exch dup dup /FID ne exch /Encoding ne and
+{exch nf 3 1 roll put}{pop pop} ifelse }forall nf/FontName nfn put
+nf/Encoding ncs put nfn nf definefont pop}bdf
+/IencO { /ncs Ich def /nfn ed /bfn ed /lnw ed /bfd bfn findfont def
+/nf bfd maxlength 4 add dict def bfd{exch dup dup /FID ne exch
+/Encoding ne and {exch nf 3 1 roll put}{pop pop} ifelse }forall
+nf/FontName nfn put nf/Encoding ncs put nf/PaintType 2 put
+nf/StrokeWidth lnw put nfn nf definefont pop}bdf
+/IencSO { /nfn ed /bfn ed /lnw ed /bfd bfn findfont def
+/nf bfd maxlength 4 add dict def bfd{exch dup /FID ne { exch
+nf 3 1 roll put}{pop pop} ifelse }forall nf/FontName nfn put
+nf/PaintType 2 put nf/StrokeWidth lnw put nfn nf definefont pop}bdf
+
+%%EndProcSet
+end
+%%EndProlog
+%%BeginSetup
+Freelance_Plus begin
+save newpath
+.1 .1 scale
+/ecm matrix currentmatrix bdf
+/sem {ecm setmatrix} bdf
+-720 -720 translate
+2 setlinecap
+0 setlinejoin
+106 45 {dup mul exch dup mul add 1.0 exch sub} setscreen
+%%EndSetup
+
+[] 0 sd
+6 sw
+12 sw
+.0 sg
+gs
+np
+4204 3422 itr mt
+4209 3415 itr l2
+4041 3457 itr l2
+4041 3881 itr l2
+3739 4291 itr l2
+3706 4291 itr l2
+3706 4457 itr l2
+4149 4457 itr l2
+4387 3596 itr l2
+4204 3422 itr l2
+gs
+.72 sg
+ef gr
+.50 sg
+st
+gr
+6 sw
+12 sw
+0 sg
+gs
+np
+3883 2554 itr mt
+3928 2637 itr l2
+3365 2986 itr l2
+3368 3009 itr l2
+3368 3028 itr l2
+3359 3059 itr l2
+3330 3109 itr l2
+3293 3161 itr l2
+3267 3195 itr l2
+3241 3212 itr l2
+3228 3228 itr l2
+3202 3245 itr l2
+3174 3266 itr l2
+3149 3295 itr l2
+3123 3312 itr l2
+3097 3329 itr l2
+3071 3346 itr l2
+3044 3363 itr l2
+3018 3380 itr l2
+3002 3391 itr l2
+2979 3397 itr l2
+3005 3363 itr l2
+3025 3331 itr l2
+3044 3295 itr l2
+3066 3263 itr l2
+3083 3228 itr l2
+3113 3259 itr l2
+3144 3230 itr l2
+3171 3209 itr l2
+3202 3177 itr l2
+3227 3141 itr l2
+3249 3116 itr l2
+3291 3066 itr l2
+3288 3041 itr l2
+3266 3016 itr l2
+3241 3009 itr l2
+3214 3026 itr l2
+3177 3059 itr l2
+3155 3077 itr l2
+3135 3088 itr l2
+3097 3110 itr l2
+3057 3127 itr l2
+3031 3144 itr l2
+3005 3163 itr l2
+3005 3212 itr l2
+2966 3228 itr l2
+2940 3228 itr l2
+2899 3234 itr l2
+2860 3237 itr l2
+2835 3245 itr l2
+2808 3245 itr l2
+2835 3212 itr l2
+2874 3178 itr l2
+2908 3144 itr l2
+2927 3120 itr l2
+2977 3130 itr l2
+2992 3127 itr l2
+3027 3105 itr l2
+3058 3084 itr l2
+3097 3059 itr l2
+3123 3043 itr l2
+3149 3026 itr l2
+3176 3009 itr l2
+3202 2992 itr l2
+3219 2966 itr l2
+3219 2948 itr l2
+3202 2925 itr l2
+3176 2908 itr l2
+3136 2925 itr l2
+3097 2934 itr l2
+3044 2948 itr l2
+3005 2962 itr l2
+2966 2976 itr l2
+2899 3013 itr l2
+2913 3030 itr l2
+2925 3051 itr l2
+2919 3044 itr l2
+2922 3059 itr l2
+2889 3066 itr l2
+2835 3077 itr l2
+2808 3084 itr l2
+2783 3088 itr l2
+2756 3093 itr l2
+2730 3093 itr l2
+2682 3095 itr l2
+2730 3076 itr l2
+2757 3059 itr l2
+2808 3026 itr l2
+2835 3009 itr l2
+2861 2992 itr l2
+2913 2959 itr l2
+2940 2942 itr l2
+2966 2925 itr l2
+2991 2909 itr l2
+3018 2891 itr l2
+3044 2874 itr l2
+3071 2866 itr l2
+3097 2857 itr l2
+3123 2857 itr l2
+3149 2857 itr l2
+3188 2862 itr l2
+3228 2874 itr l2
+3293 2908 itr l2
+3319 2916 itr l2
+3341 2898 itr l2
+3377 2880 itr l2
+3831 2587 itr l2
+3857 2572 itr l2
+3883 2554 itr l2
+gs
+.25 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3765 2874 itr mt
+3750 2822 itr l2
+3742 2725 itr l2
+3910 2621 itr l2
+3896 2587 itr l2
+3869 2560 itr l2
+3863 2560 itr l2
+3833 2583 itr l2
+3806 2602 itr l2
+3785 2599 itr l2
+3747 2564 itr l2
+3726 2520 itr l2
+3711 2503 itr l2
+3700 2470 itr l2
+3702 2445 itr l2
+3726 2419 itr l2
+3739 2385 itr l2
+3755 2353 itr l2
+3779 2335 itr l2
+3806 2311 itr l2
+3831 2301 itr l2
+3857 2292 itr l2
+3883 2284 itr l2
+3910 2284 itr l2
+3910 2251 itr l2
+3936 2234 itr l2
+3962 2234 itr l2
+4001 2234 itr l2
+4027 2234 itr l2
+4054 2251 itr l2
+4067 2234 itr l2
+4093 2234 itr l2
+4119 2251 itr l2
+4146 2267 itr l2
+4172 2301 itr l2
+4198 2335 itr l2
+4224 2368 itr l2
+4251 2385 itr l2
+4277 2385 itr l2
+4303 2402 itr l2
+4329 2419 itr l2
+4355 2436 itr l2
+4382 2453 itr l2
+4408 2487 itr l2
+4434 2504 itr l2
+4447 2520 itr l2
+4447 2554 itr l2
+4434 2587 itr l2
+4421 2621 itr l2
+4421 2689 itr l2
+4408 2740 itr l2
+4382 2807 itr l2
+4368 2840 itr l2
+4342 2891 itr l2
+4316 2925 itr l2
+4316 2959 itr l2
+4303 3009 itr l2
+4303 3043 itr l2
+4316 3076 itr l2
+4342 3110 itr l2
+4382 3161 itr l2
+4436 3207 itr l2
+4473 3245 itr l2
+4528 3304 itr l2
+4560 3346 itr l2
+4578 3380 itr l2
+4598 3415 itr l2
+4618 3498 itr l2
+4636 3548 itr l2
+4644 3582 itr l2
+4657 3616 itr l2
+4663 3652 itr l2
+4669 3700 itr l2
+4670 3751 itr l2
+4670 3818 itr l2
+4669 3860 itr l2
+4644 3936 itr l2
+4630 3987 itr l2
+4604 4037 itr l2
+4591 4088 itr l2
+4591 4105 itr l2
+4618 4139 itr l2
+4644 4172 itr l2
+4669 4201 itr l2
+4709 4240 itr l2
+4733 4284 itr l2
+4749 4324 itr l2
+4755 4375 itr l2
+4760 4423 itr l2
+4760 4457 itr l2
+4760 4506 itr l2
+4761 4526 itr l2
+4761 4594 itr l2
+4749 4644 itr l2
+4749 4678 itr l2
+4744 4743 itr l2
+4735 4796 itr l2
+4723 4847 itr l2
+4709 4880 itr l2
+4683 4931 itr l2
+4657 4948 itr l2
+4663 4895 itr l2
+4657 4826 itr l2
+4647 4778 itr l2
+4630 4745 itr l2
+4614 4694 itr l2
+4591 4661 itr l2
+4565 4628 itr l2
+4539 4577 itr l2
+4501 4528 itr l2
+4484 4506 itr l2
+4447 4476 itr l2
+4408 4459 itr l2
+4382 4444 itr l2
+4355 4459 itr l2
+4316 4476 itr l2
+4277 4492 itr l2
+4251 4509 itr l2
+4211 4526 itr l2
+4166 4541 itr l2
+4119 4543 itr l2
+4079 4541 itr l2
+4054 4543 itr l2
+4027 4543 itr l2
+4015 4541 itr l2
+3976 4528 itr l2
+3944 4521 itr l2
+3922 4560 itr l2
+3901 4583 itr l2
+3890 4611 itr l2
+3870 4661 itr l2
+3857 4712 itr l2
+3847 4764 itr l2
+3844 4796 itr l2
+3836 4847 itr l2
+3842 4882 itr l2
+3852 4930 itr l2
+3863 4972 itr l2
+3844 4931 itr l2
+3831 4914 itr l2
+3779 4864 itr l2
+3752 4830 itr l2
+3733 4805 itr l2
+3706 4771 itr l2
+3686 4745 itr l2
+3674 4712 itr l2
+3647 4678 itr l2
+3621 4628 itr l2
+3620 4611 itr l2
+3608 4560 itr l2
+3608 4526 itr l2
+3595 4492 itr l2
+3595 4459 itr l2
+3621 4459 itr l2
+3647 4442 itr l2
+3674 4425 itr l2
+3701 4409 itr l2
+3728 4388 itr l2
+3739 4375 itr l2
+3782 4388 itr l2
+3791 4408 itr l2
+3809 4430 itr l2
+3844 4442 itr l2
+3874 4457 itr l2
+3912 4457 itr l2
+3936 4459 itr l2
+3975 4459 itr l2
+4015 4442 itr l2
+4041 4425 itr l2
+4080 4358 itr l2
+4106 4324 itr l2
+4119 4290 itr l2
+4146 4256 itr l2
+4172 4206 itr l2
+4185 4156 itr l2
+4211 4122 itr l2
+4224 4088 itr l2
+4237 4037 itr l2
+4237 4004 itr l2
+4251 3953 itr l2
+4263 3903 itr l2
+4277 3852 itr l2
+4277 3801 itr l2
+4285 3749 itr l2
+4277 3717 itr l2
+4277 3684 itr l2
+4277 3650 itr l2
+4263 3599 itr l2
+4251 3548 itr l2
+4241 3513 itr l2
+4237 3481 itr l2
+4224 3464 itr l2
+4211 3448 itr l2
+4185 3464 itr l2
+4132 3481 itr l2
+4106 3481 itr l2
+4080 3498 itr l2
+4052 3484 itr l2
+4027 3481 itr l2
+4001 3481 itr l2
+3975 3464 itr l2
+3949 3464 itr l2
+3922 3448 itr l2
+3896 3431 itr l2
+3870 3414 itr l2
+3844 3397 itr l2
+3818 3397 itr l2
+3798 3402 itr l2
+3755 3402 itr l2
+3712 3429 itr l2
+3686 3448 itr l2
+3674 3481 itr l2
+3647 3515 itr l2
+3621 3548 itr l2
+3595 3582 itr l2
+3582 3616 itr l2
+3555 3650 itr l2
+3555 3684 itr l2
+3555 3717 itr l2
+3555 3734 itr l2
+3555 3751 itr l2
+3555 3784 itr l2
+3569 3818 itr l2
+3582 3825 itr l2
+3614 3867 itr l2
+3595 3920 itr l2
+3595 3953 itr l2
+3595 3987 itr l2
+3595 4020 itr l2
+3608 4071 itr l2
+3634 4105 itr l2
+3663 4159 itr l2
+3674 4189 itr l2
+3679 4221 itr l2
+3686 4256 itr l2
+3712 4291 itr l2
+3733 4326 itr l2
+3739 4341 itr l2
+3733 4360 itr l2
+3728 4305 itr l2
+3686 4240 itr l2
+3674 4273 itr l2
+3660 4307 itr l2
+3634 4307 itr l2
+3608 4307 itr l2
+3582 4290 itr l2
+3555 4256 itr l2
+3529 4223 itr l2
+3516 4189 itr l2
+3503 4139 itr l2
+3477 4105 itr l2
+3464 4071 itr l2
+3450 4020 itr l2
+3438 3987 itr l2
+3438 3953 itr l2
+3438 3920 itr l2
+3464 3920 itr l2
+3490 3903 itr l2
+3516 3886 itr l2
+3529 3852 itr l2
+3529 3835 itr l2
+3529 3801 itr l2
+3539 3769 itr l2
+3529 3734 itr l2
+3529 3700 itr l2
+3529 3667 itr l2
+3516 3633 itr l2
+3503 3599 itr l2
+3477 3599 itr l2
+3464 3599 itr l2
+3438 3599 itr l2
+3411 3616 itr l2
+3398 3582 itr l2
+3372 3565 itr l2
+3346 3531 itr l2
+3333 3498 itr l2
+3319 3464 itr l2
+3319 3431 itr l2
+3477 3212 itr l2
+3333 3414 itr l2
+3477 3212 itr l2
+3503 3195 itr l2
+3528 3165 itr l2
+3555 3144 itr l2
+3595 3127 itr l2
+3621 3110 itr l2
+3647 3093 itr l2
+3674 3088 itr l2
+3700 3076 itr l2
+3727 3068 itr l2
+3752 3059 itr l2
+3779 3043 itr l2
+3813 3034 itr l2
+3844 3026 itr l2
+3870 3026 itr l2
+3883 3026 itr l2
+3910 3026 itr l2
+3936 3026 itr l2
+3910 3026 itr l2
+3883 3026 itr l2
+3857 3009 itr l2
+3831 2992 itr l2
+3809 2977 itr l2
+3782 2942 itr l2
+3765 2908 itr l2
+3765 2874 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+4447 2275 itr mt
+4448 2273 itr l2
+4421 2284 itr l2
+4394 2301 itr l2
+4368 2318 itr l2
+4342 2335 itr l2
+4316 2349 itr l2
+4290 2363 itr l2
+4254 2382 itr l2
+4303 2402 itr l2
+4341 2427 itr l2
+4377 2451 itr l2
+4394 2471 itr l2
+4419 2496 itr l2
+4434 2504 itr l2
+4447 2520 itr l2
+4447 2487 itr l2
+4447 2453 itr l2
+4447 2419 itr l2
+4447 2385 itr l2
+4447 2351 itr l2
+4447 2318 itr l2
+4447 2301 itr l2
+4447 2275 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3634 3565 itr mt
+3621 3582 itr l2
+3647 3565 itr l2
+3674 3565 itr l2
+3700 3599 itr l2
+3700 3633 itr l2
+3700 3667 itr l2
+3713 3700 itr l2
+3713 3734 itr l2
+3713 3768 itr l2
+3700 3801 itr l2
+3686 3818 itr l2
+3674 3852 itr l2
+3647 3869 itr l2
+3621 3869 itr l2
+3595 3869 itr l2
+3569 3835 itr l2
+3569 3801 itr l2
+3555 3768 itr l2
+3543 3734 itr l2
+3543 3700 itr l2
+3543 3667 itr l2
+3555 3633 itr l2
+3582 3599 itr l2
+3608 3582 itr l2
+3634 3565 itr l2
+gs
+ef gr
+st
+gr
+6 sw
+12 sw
+gs
+np
+2835 1643 itr mt
+2822 1643 itr l2
+2847 1660 itr l2
+2871 1682 itr l2
+2920 1721 itr l2
+2964 1744 itr l2
+3013 1762 itr l2
+3056 1784 itr l2
+3096 1796 itr l2
+3137 1807 itr l2
+3176 1824 itr l2
+3212 1835 itr l2
+3241 1846 itr l2
+3287 1852 itr l2
+3326 1864 itr l2
+3344 1864 itr l2
+3358 1863 itr l2
+3438 1863 itr l2
+3516 1863 itr l2
+3555 1863 itr l2
+3593 1863 itr l2
+3647 1863 itr l2
+3686 1863 itr l2
+3713 1863 itr l2
+3739 1863 itr l2
+3765 1863 itr l2
+3752 1896 itr l2
+3739 1930 itr l2
+3726 1964 itr l2
+3713 1998 itr l2
+3703 2034 itr l2
+3700 2065 itr l2
+3703 2096 itr l2
+3713 2132 itr l2
+3700 2149 itr l2
+3686 2183 itr l2
+3674 2200 itr l2
+3664 2233 itr l2
+3660 2267 itr l2
+3650 2301 itr l2
+3647 2335 itr l2
+3647 2368 itr l2
+3647 2402 itr l2
+3637 2437 itr l2
+3634 2487 itr l2
+3633 2506 itr l2
+3633 2523 itr l2
+3634 2554 itr l2
+3634 2587 itr l2
+3642 2608 itr l2
+3674 2621 itr l2
+3700 2604 itr l2
+3712 2585 itr l2
+3747 2568 itr l2
+3735 2534 itr l2
+3726 2520 itr l2
+3713 2504 itr l2
+3700 2470 itr l2
+3699 2448 itr l2
+3699 2443 itr l2
+3725 2426 itr l2
+3739 2385 itr l2
+3752 2352 itr l2
+3774 2335 itr l2
+3779 2329 itr l2
+3805 2301 itr l2
+3832 2301 itr l2
+3858 2307 itr l2
+3871 2295 itr l2
+3885 2290 itr l2
+3911 2284 itr l2
+3925 2244 itr l2
+3947 2233 itr l2
+3973 2239 itr l2
+4000 2233 itr l2
+4026 2239 itr l2
+4053 2250 itr l2
+4079 2233 itr l2
+4106 2234 itr l2
+4132 2251 itr l2
+4158 2284 itr l2
+4172 2318 itr l2
+4198 2301 itr l2
+4224 2284 itr l2
+4251 2267 itr l2
+4265 2256 itr l2
+4291 2239 itr l2
+4316 2217 itr l2
+4342 2200 itr l2
+4366 2193 itr l2
+4382 2183 itr l2
+4393 2181 itr l2
+4406 2170 itr l2
+4408 2115 itr l2
+4408 2082 itr l2
+4401 2051 itr l2
+4408 2015 itr l2
+4421 1981 itr l2
+4428 1949 itr l2
+4434 1913 itr l2
+4434 1879 itr l2
+4447 1846 itr l2
+4460 1812 itr l2
+4473 1779 itr l2
+4499 1745 itr l2
+4526 1711 itr l2
+4552 1677 itr l2
+4539 1643 itr l2
+4499 1610 itr l2
+4473 1593 itr l2
+4446 1585 itr l2
+4421 1576 itr l2
+4380 1556 itr l2
+4342 1543 itr l2
+4303 1526 itr l2
+4265 1517 itr l2
+4237 1509 itr l2
+4211 1492 itr l2
+4185 1488 itr l2
+4146 1475 itr l2
+4106 1475 itr l2
+4067 1475 itr l2
+4041 1475 itr l2
+4004 1471 itr l2
+3942 1466 itr l2
+3896 1458 itr l2
+3857 1458 itr l2
+3818 1458 itr l2
+3791 1458 itr l2
+3752 1458 itr l2
+3726 1458 itr l2
+3700 1458 itr l2
+3674 1458 itr l2
+3660 1458 itr l2
+3633 1466 itr l2
+3606 1471 itr l2
+3575 1471 itr l2
+3555 1475 itr l2
+3516 1475 itr l2
+3490 1475 itr l2
+3464 1475 itr l2
+3424 1492 itr l2
+3385 1492 itr l2
+3359 1492 itr l2
+3333 1492 itr l2
+3319 1492 itr l2
+3282 1500 itr l2
+3251 1500 itr l2
+3213 1505 itr l2
+3189 1506 itr l2
+3163 1506 itr l2
+3136 1509 itr l2
+3127 1512 itr l2
+3123 1517 itr l2
+3137 1529 itr l2
+3190 1590 itr l2
+3136 1593 itr l2
+3110 1593 itr l2
+3071 1593 itr l2
+3031 1610 itr l2
+3018 1610 itr l2
+2992 1613 itr l2
+2966 1610 itr l2
+2939 1619 itr l2
+2913 1627 itr l2
+2887 1627 itr l2
+2872 1630 itr l2
+2850 1636 itr l2
+2835 1643 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+4074 3499 itr mt
+4080 3498 itr l2
+4093 3531 itr l2
+4095 3555 itr l2
+4099 3585 itr l2
+4109 3620 itr l2
+4119 3667 itr l2
+4119 3684 itr l2
+4119 3734 itr l2
+4119 3768 itr l2
+4112 3818 itr l2
+4099 3874 itr l2
+4093 3903 itr l2
+4067 3953 itr l2
+4054 4004 itr l2
+4041 4037 itr l2
+4025 4086 itr l2
+3988 4139 itr l2
+3964 4177 itr l2
+3948 4198 itr l2
+3925 4237 itr l2
+3914 4259 itr l2
+3891 4285 itr l2
+3883 4290 itr l2
+3857 4307 itr l2
+3827 4319 itr l2
+3805 4324 itr l2
+3779 4324 itr l2
+3752 4324 itr l2
+3740 4319 itr l2
+3713 4290 itr l2
+3700 4256 itr l2
+3689 4224 itr l2
+3682 4190 itr l2
+3662 4151 itr l2
+3634 4105 itr l2
+3621 4071 itr l2
+3608 4037 itr l2
+3605 4026 itr l2
+3595 3987 itr l2
+3595 3953 itr l2
+3595 3920 itr l2
+3596 3884 itr l2
+3621 3862 itr l2
+3647 3851 itr l2
+3674 3818 itr l2
+3692 3793 itr l2
+3700 3768 itr l2
+3713 3734 itr l2
+3713 3700 itr l2
+3713 3667 itr l2
+3706 3651 itr l2
+3700 3616 itr l2
+3689 3593 itr l2
+3674 3565 itr l2
+3627 3560 itr l2
+3647 3515 itr l2
+3661 3494 itr l2
+3678 3465 itr l2
+3686 3448 itr l2
+3712 3429 itr l2
+3739 3414 itr l2
+3780 3400 itr l2
+3817 3404 itr l2
+3844 3404 itr l2
+3870 3419 itr l2
+3896 3431 itr l2
+3921 3451 itr l2
+3961 3470 itr l2
+4000 3480 itr l2
+4029 3484 itr l2
+4040 3484 itr l2
+4068 3494 itr l2
+4074 3499 itr l2
+gs
+1 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3621 4459 itr mt
+3626 4457 itr l2
+3608 4459 itr l2
+3593 4457 itr l2
+3571 4451 itr l2
+3544 4444 itr l2
+3516 4408 itr l2
+3503 4358 itr l2
+3484 4326 itr l2
+3474 4298 itr l2
+3468 4270 itr l2
+3464 4240 itr l2
+3464 4206 itr l2
+3464 4172 itr l2
+3464 4139 itr l2
+3477 4105 itr l2
+3503 4139 itr l2
+3516 4172 itr l2
+3529 4206 itr l2
+3543 4240 itr l2
+3555 4263 itr l2
+3582 4291 itr l2
+3604 4298 itr l2
+3621 4307 itr l2
+3647 4290 itr l2
+3674 4273 itr l2
+3674 4240 itr l2
+3674 4206 itr l2
+3700 4240 itr l2
+3713 4273 itr l2
+3726 4290 itr l2
+3739 4324 itr l2
+3726 4375 itr l2
+3700 4408 itr l2
+3674 4425 itr l2
+3647 4442 itr l2
+3634 4459 itr l2
+3621 4459 itr l2
+gs
+.72 sg
+ef gr
+0 sg
+st
+gr
+gs
+np
+3883 3026 itr mt
+3896 3026 itr l2
+3922 3026 itr l2
+3949 3033 itr l2
+3975 3043 itr l2
+4004 3054 itr l2
+4020 3061 itr l2
+4052 3081 itr l2
+4063 3095 itr l2
+4079 3144 itr l2
+4117 3117 itr l2
+4080 3144 itr l2
+4052 3144 itr l2
+4025 3144 itr l2
+st
+gr
+gs
+np
+3875 3016 itr mt
+3917 3009 itr l2
+3934 3001 itr l2
+3961 2986 itr l2
+3988 2971 itr l2
+4015 2959 itr l2
+4025 2949 itr l2
+4054 2947 itr l2
+4083 2944 itr l2
+4119 2959 itr l2
+4143 2974 itr l2
+4167 2986 itr l2
+4247 3040 itr l2
+st
+gr
+6 sw
+12 sw
+gs
+np
+3659 2614 itr mt
+3655 2603 itr l2
+3657 2594 itr l2
+3695 2575 itr l2
+3737 2564 itr l2
+3764 2572 itr l2
+3776 2587 itr l2
+3799 2628 itr l2
+3813 2670 itr l2
+3816 2713 itr l2
+3794 2729 itr l2
+3752 2738 itr l2
+3744 2733 itr l2
+3723 2704 itr l2
+3686 2655 itr l2
+3659 2614 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+4185 2318 itr mt
+4185 2301 itr l2
+4237 2267 itr l2
+4342 2200 itr l2
+4447 2149 itr l2
+4552 2082 itr l2
+4604 2065 itr l2
+4644 2115 itr l2
+4591 2183 itr l2
+4565 2200 itr l2
+4539 2217 itr l2
+4513 2234 itr l2
+4487 2251 itr l2
+4460 2267 itr l2
+4434 2284 itr l2
+4408 2301 itr l2
+4382 2318 itr l2
+4342 2335 itr l2
+4303 2351 itr l2
+4277 2368 itr l2
+4251 2385 itr l2
+4224 2368 itr l2
+4198 2351 itr l2
+4185 2318 itr l2
+gs
+.48 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+4404 2175 itr mt
+4410 2105 itr l2
+4408 2099 itr l2
+4406 2064 itr l2
+4403 2044 itr l2
+4412 2001 itr l2
+4421 1981 itr l2
+4447 1947 itr l2
+4473 1913 itr l2
+4513 1879 itr l2
+4539 1863 itr l2
+4578 1846 itr l2
+4605 1838 itr l2
+4630 1829 itr l2
+4669 1821 itr l2
+4709 1812 itr l2
+4762 1799 itr l2
+4788 1795 itr l2
+4834 1783 itr l2
+4880 1779 itr l2
+4919 1767 itr l2
+4970 1756 itr l2
+5011 1745 itr l2
+5051 1734 itr l2
+5076 1723 itr l2
+5110 1723 itr l2
+5141 1711 itr l2
+5181 1711 itr l2
+5212 1706 itr l2
+5246 1694 itr l2
+5272 1696 itr l2
+5325 1694 itr l2
+5365 1690 itr l2
+5416 1684 itr l2
+5443 1677 itr l2
+5472 1674 itr l2
+5508 1660 itr l2
+5547 1658 itr l2
+5587 1643 itr l2
+5620 1625 itr l2
+5637 1592 itr l2
+5627 1559 itr l2
+5611 1537 itr l2
+5561 1509 itr l2
+5522 1494 itr l2
+5496 1488 itr l2
+5456 1475 itr l2
+5430 1475 itr l2
+5391 1475 itr l2
+5353 1466 itr l2
+5327 1466 itr l2
+5284 1461 itr l2
+5260 1458 itr l2
+5233 1458 itr l2
+5207 1458 itr l2
+5229 1494 itr l2
+5246 1526 itr l2
+5272 1559 itr l2
+5242 1554 itr l2
+5194 1543 itr l2
+5165 1537 itr l2
+5141 1526 itr l2
+5102 1509 itr l2
+5063 1492 itr l2
+4983 1450 itr l2
+4944 1434 itr l2
+4906 1407 itr l2
+4869 1390 itr l2
+4827 1374 itr l2
+4788 1351 itr l2
+4735 1323 itr l2
+4696 1307 itr l2
+4657 1290 itr l2
+4618 1273 itr l2
+4592 1270 itr l2
+4552 1256 itr l2
+4499 1239 itr l2
+4503 1237 itr l2
+4511 1237 itr l2
+4511 1237 itr l2
+4552 1239 itr l2
+4591 1239 itr l2
+4644 1239 itr l2
+4683 1239 itr l2
+4737 1232 itr l2
+4771 1232 itr l2
+4813 1232 itr l2
+4856 1232 itr l2
+4906 1232 itr l2
+4944 1242 itr l2
+4983 1242 itr l2
+5025 1242 itr l2
+5089 1242 itr l2
+5127 1248 itr l2
+5165 1248 itr l2
+5208 1248 itr l2
+5246 1248 itr l2
+5284 1248 itr l2
+5327 1248 itr l2
+5377 1256 itr l2
+5404 1256 itr l2
+5442 1254 itr l2
+5479 1254 itr l2
+5522 1256 itr l2
+5574 1256 itr l2
+5627 1256 itr l2
+5666 1256 itr l2
+5705 1256 itr l2
+5732 1256 itr l2
+5705 1273 itr l2
+5666 1290 itr l2
+5632 1303 itr l2
+5598 1303 itr l2
+5561 1307 itr l2
+5522 1307 itr l2
+5469 1307 itr l2
+5412 1319 itr l2
+5348 1324 itr l2
+5325 1323 itr l2
+5297 1330 itr l2
+5255 1335 itr l2
+5233 1340 itr l2
+5194 1340 itr l2
+5229 1341 itr l2
+5272 1351 itr l2
+5314 1351 itr l2
+5353 1351 itr l2
+5391 1357 itr l2
+5417 1357 itr l2
+5443 1357 itr l2
+5482 1357 itr l2
+5509 1357 itr l2
+5539 1363 itr l2
+5560 1368 itr l2
+5611 1385 itr l2
+5640 1391 itr l2
+5679 1407 itr l2
+5705 1424 itr l2
+5744 1441 itr l2
+5771 1458 itr l2
+5797 1475 itr l2
+5837 1492 itr l2
+5876 1526 itr l2
+5902 1559 itr l2
+5915 1593 itr l2
+5915 1627 itr l2
+5902 1660 itr l2
+5876 1694 itr l2
+5823 1745 itr l2
+5784 1762 itr l2
+5732 1779 itr l2
+5679 1779 itr l2
+5640 1779 itr l2
+5601 1779 itr l2
+5561 1779 itr l2
+5508 1779 itr l2
+5469 1779 itr l2
+5417 1779 itr l2
+5377 1779 itr l2
+5325 1779 itr l2
+5276 1789 itr l2
+5233 1795 itr l2
+5181 1795 itr l2
+5140 1799 itr l2
+5097 1805 itr l2
+5050 1812 itr l2
+4995 1821 itr l2
+4959 1829 itr l2
+4919 1833 itr l2
+4866 1846 itr l2
+4827 1863 itr l2
+4788 1876 itr l2
+4761 1879 itr l2
+4735 1896 itr l2
+4711 1903 itr l2
+4670 1930 itr l2
+4644 1947 itr l2
+4618 1964 itr l2
+4591 1981 itr l2
+4565 1998 itr l2
+4552 2015 itr l2
+4526 2031 itr l2
+4499 2065 itr l2
+4487 2099 itr l2
+4460 2132 itr l2
+4404 2175 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+gs
+np
+4131 1779 itr mt
+4095 1790 itr l2
+4064 1784 itr l2
+4024 1796 itr l2
+4015 1795 itr l2
+3988 1795 itr l2
+3949 1795 itr l2
+3910 1795 itr l2
+3883 1790 itr l2
+3857 1790 itr l2
+3803 1784 itr l2
+3752 1779 itr l2
+3726 1779 itr l2
+3702 1773 itr l2
+3676 1767 itr l2
+3634 1762 itr l2
+3596 1755 itr l2
+3556 1744 itr l2
+3516 1733 itr l2
+3490 1728 itr l2
+3450 1711 itr l2
+3397 1687 itr l2
+3359 1677 itr l2
+3307 1660 itr l2
+3280 1643 itr l2
+3242 1625 itr l2
+3216 1614 itr l2
+3188 1593 itr l2
+3180 1574 itr l2
+3202 1585 itr l2
+3256 1608 itr l2
+3309 1625 itr l2
+3357 1642 itr l2
+3384 1648 itr l2
+3437 1659 itr l2
+3463 1670 itr l2
+3490 1677 itr l2
+st
+gr
+gs
+np
+3698 1631 itr mt
+3662 1625 itr l2
+3634 1627 itr l2
+3609 1619 itr l2
+3583 1614 itr l2
+3543 1610 itr l2
+3516 1593 itr l2
+3490 1585 itr l2
+3450 1559 itr l2
+3424 1543 itr l2
+3384 1517 itr l2
+3370 1506 itr l2
+3362 1495 itr l2
+3353 1500 itr l2
+st
+gr
+gs
+np
+2991 1608 itr mt
+3018 1627 itr l2
+3044 1660 itr l2
+3071 1677 itr l2
+3110 1710 itr l2
+3149 1728 itr l2
+3176 1745 itr l2
+3216 1767 itr l2
+3242 1773 itr l2
+3264 1779 itr l2
+3293 1779 itr l2
+3307 1779 itr l2
+st
+gr
+gs
+np
+4041 2115 itr mt
+4041 2082 itr l2
+4041 2048 itr l2
+4041 2015 itr l2
+4042 1983 itr l2
+4041 1947 itr l2
+4054 1913 itr l2
+4069 1875 itr l2
+4106 1846 itr l2
+4132 1846 itr l2
+4127 1847 itr l2
+4139 1835 itr l2
+4135 1830 itr l2
+4122 1790 itr l2
+st
+gr
+gs
+np
+3713 2132 itr mt
+3737 2114 itr l2
+3765 2099 itr l2
+3791 2082 itr l2
+3818 2065 itr l2
+3844 2052 itr l2
+3870 2048 itr l2
+3896 2048 itr l2
+3901 2052 itr l2
+st
+gr
+gs
+np
+3726 1964 itr mt
+3739 1930 itr l2
+3765 1913 itr l2
+3777 1903 itr l2
+3803 1886 itr l2
+3831 1879 itr l2
+3857 1881 itr l2
+st
+gr
+6 sw
+12 sw
+1 sg
+gs
+np
+3596 3767 itr mt
+3599 3779 itr l2
+3607 3796 itr l2
+3621 3793 itr l2
+3634 3734 itr l2
+3634 3700 itr l2
+3621 3667 itr l2
+3608 3667 itr l2
+3595 3700 itr l2
+3590 3735 itr l2
+3596 3767 itr l2
+gs
+ef gr
+st
+gr
+6 sw
+12 sw
+0 sg
+gs
+np
+3328 3394 itr mt
+3346 3414 itr l2
+3323 3380 itr l2
+3319 3346 itr l2
+3319 3312 itr l2
+3333 3279 itr l2
+3346 3245 itr l2
+3372 3228 itr l2
+3420 3214 itr l2
+3424 3212 itr l2
+3450 3212 itr l2
+3477 3212 itr l2
+3503 3212 itr l2
+3529 3228 itr l2
+3539 3241 itr l2
+3582 3228 itr l2
+3608 3228 itr l2
+3634 3228 itr l2
+3660 3228 itr l2
+3686 3245 itr l2
+3696 3276 itr l2
+3700 3295 itr l2
+3700 3329 itr l2
+3686 3363 itr l2
+3674 3397 itr l2
+3647 3431 itr l2
+3621 3448 itr l2
+3595 3464 itr l2
+3569 3481 itr l2
+3544 3484 itr l2
+3516 3498 itr l2
+3490 3498 itr l2
+3464 3498 itr l2
+3436 3492 itr l2
+3414 3484 itr l2
+3398 3481 itr l2
+3366 3464 itr l2
+3339 3429 itr l2
+3328 3394 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3555 3481 itr mt
+3524 3494 itr l2
+3491 3499 itr l2
+3467 3524 itr l2
+3450 3555 itr l2
+3433 3572 itr l2
+3410 3602 itr l2
+3398 3633 itr l2
+3411 3667 itr l2
+3411 3700 itr l2
+3411 3734 itr l2
+3411 3768 itr l2
+3424 3818 itr l2
+3424 3869 itr l2
+3438 3920 itr l2
+3438 3953 itr l2
+3438 3987 itr l2
+3444 4026 itr l2
+3454 4056 itr l2
+3467 4090 itr l2
+3484 4125 itr l2
+3503 4156 itr l2
+3514 4190 itr l2
+3531 4224 itr l2
+3551 4255 itr l2
+3575 4280 itr l2
+3591 4302 itr l2
+3621 4307 itr l2
+3647 4307 itr l2
+3669 4302 itr l2
+3686 4290 itr l2
+3700 4256 itr l2
+3700 4223 itr l2
+3686 4189 itr l2
+3662 4155 itr l2
+3647 4122 itr l2
+3632 4086 itr l2
+3621 4054 itr l2
+3612 4021 itr l2
+3605 3987 itr l2
+3599 3952 itr l2
+3595 3920 itr l2
+3595 3886 itr l2
+3608 3852 itr l2
+3582 3818 itr l2
+3562 3784 itr l2
+3555 3751 itr l2
+3555 3717 itr l2
+3555 3684 itr l2
+3555 3650 itr l2
+3569 3616 itr l2
+3595 3585 itr l2
+3622 3572 itr l2
+3634 3531 itr l2
+3647 3515 itr l2
+3662 3486 itr l2
+3635 3481 itr l2
+3609 3472 itr l2
+3582 3481 itr l2
+3555 3481 itr l2
+gs
+1 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3438 3920 itr mt
+3438 3936 itr l2
+3424 3903 itr l2
+3398 3869 itr l2
+3385 3835 itr l2
+3385 3801 itr l2
+3372 3768 itr l2
+3372 3734 itr l2
+3372 3700 itr l2
+3385 3667 itr l2
+3398 3633 itr l2
+3424 3599 itr l2
+3450 3599 itr l2
+3477 3599 itr l2
+3503 3599 itr l2
+3516 3633 itr l2
+3529 3667 itr l2
+3529 3700 itr l2
+3529 3734 itr l2
+3529 3768 itr l2
+3529 3801 itr l2
+3529 3835 itr l2
+3516 3852 itr l2
+3516 3886 itr l2
+3490 3903 itr l2
+3464 3920 itr l2
+3438 3920 itr l2
+gs
+ef gr
+st
+gr
+6 sw
+12 sw
+1 sg
+gs
+np
+3463 3833 itr mt
+3452 3833 itr l2
+3438 3818 itr l2
+3424 3786 itr l2
+3424 3750 itr l2
+3429 3724 itr l2
+3450 3700 itr l2
+3477 3717 itr l2
+3490 3751 itr l2
+3490 3784 itr l2
+3482 3818 itr l2
+3463 3833 itr l2
+gs
+ef gr
+st
+gr
+6 sw
+12 sw
+0 sg
+gs
+np
+3725 2820 itr mt
+3738 2887 itr l2
+3725 2920 itr l2
+3712 2938 itr l2
+3686 2955 itr l2
+3660 2963 itr l2
+3633 2966 itr l2
+3607 2971 itr l2
+3581 2971 itr l2
+3553 2963 itr l2
+3529 2947 itr l2
+3515 2921 itr l2
+3520 2890 itr l2
+3541 2871 itr l2
+3567 2859 itr l2
+3594 2847 itr l2
+3621 2828 itr l2
+3645 2813 itr l2
+3672 2803 itr l2
+3699 2803 itr l2
+3720 2825 itr l2
+3725 2820 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3544 2833 itr mt
+3502 2859 itr l2
+3477 2874 itr l2
+3450 2874 itr l2
+3424 2867 itr l2
+3398 2847 itr l2
+3372 2807 itr l2
+3359 2773 itr l2
+3359 2740 itr l2
+3368 2713 itr l2
+3385 2689 itr l2
+3413 2675 itr l2
+3436 2675 itr l2
+3463 2675 itr l2
+3490 2689 itr l2
+3517 2698 itr l2
+3529 2706 itr l2
+3555 2723 itr l2
+3569 2756 itr l2
+3565 2790 itr l2
+3544 2833 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3684 2798 itr mt
+3582 2790 itr l2
+3608 2790 itr l2
+3647 2790 itr l2
+3675 2802 itr l2
+3713 2798 itr l2
+3726 2773 itr l2
+3732 2740 itr l2
+3726 2706 itr l2
+3713 2672 itr l2
+3687 2645 itr l2
+3660 2621 itr l2
+3634 2604 itr l2
+3608 2604 itr l2
+3582 2604 itr l2
+3559 2606 itr l2
+3529 2614 itr l2
+3502 2626 itr l2
+3470 2675 itr l2
+3490 2687 itr l2
+3517 2691 itr l2
+3544 2710 itr l2
+3562 2729 itr l2
+3569 2756 itr l2
+3582 2790 itr l2
+3606 2798 itr l2
+3633 2798 itr l2
+3660 2794 itr l2
+3684 2798 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+gs
+np
+3805 2706 itr mt
+3875 2763 itr l2
+3949 2783 itr l2
+4018 2763 itr l2
+4080 2689 itr l2
+4146 2648 itr l2
+4185 2723 itr l2
+4158 2823 itr l2
+st
+gr
+rs end
+grestoreall
+formatdict begin
+
+NEWPARA
+ (In) NW (general,) NW (LameTeX) NW (will) NW (occasionally) NW (screw) NW (up) NW (the) NW (spacing.) NW (Oops.) NW (No,) NW (it) NW (doesn't) NW (do) NW (kerning!) NW (Geez) NW (...) NW
+NEWPARA
+ (To) NW (avoid) NW (this) NW (it's) NW (best) NW (to) NW (include) NW (sentence) NW (punctuation) NW (in) NW (whatever) NW (environment) NW (happens) NW (to) NW (precede) NW (it.) NW (For) NW (example,) NW (use) NW (\\Pay) NW (me) NW (in) NW
+[ 0 false ] NewFont ({) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (em) NW (cash.) NW
+[ 0 true ] NewFont (}) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (") NW (instead) NW (of) NW (\\Pay) NW (me) NW (in) NW
+[ 0 false ] NewFont ({) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (em) NW (cash) NW
+[ 0 true ] NewFont (}) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (.") NW
+NEWPARA
+ (You) NW (can't) NW (make) NW (small) NW (caps,) NW (typewriter,) NW (or) NW (sans) NW (serif) NW (font) NW (into) NW (italic) NW (or) NW (bold) NW (face.) NW (I) NW (didn't) NW (know) NW (it) NW (was) NW (possible) NW (until) NW (recently) NW (so) NW (I) NW (didn't) NW (put) NW (it) NW (into) NW (the) NW (program.) NW
+NEWPARA
+ (LameTeX) NW (is) NW (quite) NW (happy) NW (to) NW (give) NW (you) NW (widows) NW (and) NW (orphans.) NW (If) NW (this) NW (sort) NW (of) NW (thing) NW (keeps) NW (you) NW (awake) NW (at) NW (night,) NW (you) NW (are) NW (taking) NW (LameTeX) NW (too) NW (seriously) NW (and) NW (should) NW (go) NW (play) NW (Tetris) NW (until) NW (you) NW (go) NW (insane) NW (\(this) NW (doesn't) NW (take) NW (long\).) NW (If) NW (you) NW (don't) NW (know) NW (what) NW (widows) NW (and) NW (orphans) NW (are,) NW (good.) NW (I) NW (won't) NW (tell) NW (you.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (5.18) NW
+15 HSpace
+ (PostScript) NW (is) NW (a) NW (Great) NW (Language,) NW (Too) NW (Bad) NW (it) NW (Sux) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (I) NW (love) NW (PostScript.) NW (LameTeX) NW (makes) NW (extensive) NW (use) NW (of) NW (the) NW (PostScript) NW (programming) NW (language.) NW (I) NW (think) NW (PostScript) NW (is) NW (great.) NW (However,) NW (when) NW (a) NW (PostScript) NW (program) NW (breaks,) NW (your) NW (printer) NW (is) NW (more) NW (likely) NW (to) NW (say) NW (\\ARGH") NW (or) NW (silently) NW (start) NW (whining) NW (rather) NW (than) NW (to) NW (print) NW (out) NW (some) NW (message) NW (like) NW (\\I) NW (say,) NW (old) NW (man.) NW (You've) NW (got) NW (a) NW (spot) NW (of) NW (trouble) NW (on) NW (line) NW (36) NW (you) NW (see.) NW (It) NW (seems) NW (\(if) NW (I) NW (may) NW (venture) NW (to) NW (take) NW (a) NW (liberty\)) NW (that) NW (you) NW (made) NW (a) NW (misspelling) NW (error) NW (in) NW (the) NW (word) NW ('sux'.") NW (If) NW (it's) NW (a) NW (LameTeX) NW (bug) NW (then) NW (get) NW (in) NW (touch) NW (with) NW (me) NW (and) NW (I'll) NW (try) NW (to) NW (fix) NW (it.) NW (But) NW (if) NW (you're) NW (hacking) NW (PostScript) NW (through) NW (LameTeX) NW (it's) NW (very) NW (easy) NW (to) NW (screw) NW (things) NW (up.) NW (The) NW (solution) NW (is) NW (not) NW (to) NW (get) NW (scared) NW (and) NW (stop) NW (playing) NW (with) NW (it.) NW (Send) NW (me) NW (some) NW (mail) NW (and) NW (we'll) NW (work) NW (it) NW (out) NW (together.) NW (Chances) NW (are) NW (I) NW (forget) NW (to) NW (document) NW (some) NW (assumption) NW (I'm) NW (making) NW (somewhere) NW (about) NW (how) NW (to) NW (use) NW (the) NW (cool) NW (PostScript) NW (routines.) NW (Once) NW (I) NW (tell) NW (you) NW (about) NW (it) NW (things) NW (will) NW (be) NW (fine.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (5.19) NW
+15 HSpace
+ (LameTeX) NW (Fonts) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (To) NW (get) NW (different) NW (fonts) NW (in) NW (LameTeX,) NW (you) NW (can) NW (just) NW (use) NW (the) NW (normal) NW (LaTeX) NW (font-changing) NW (operators.) NW (It) NW (is) NW (not) NW (possible) NW (right) NW (now) NW (to) NW (get) NW (normal) NW (PostScript) NW (fonts) NW (using) NW (a) NW (LameTeX) NW (operator.) NW (However) NW (there) NW (is) NW (a) NW (cool) NW (workaround) NW (if) NW (you) NW (want) NW (to) NW (try) NW (it) NW (out.) NW (The) NW (program) NW (originally) NW (worked) NW (that) NW (way) NW (on) NW (PostScript) NW (fonts) NW (but) NW (then) NW (I) NW (figured) NW (that) NW (people) NW (would) NW
+[ 12 false ] NewFont % /cm10it
+ (really) NW (really) NW
+[ 1 false ] NewFont % /cm10rm
+ (want) NW (the) NW (normal) NW (LaTeX) NW (fonts,) NW (so) NW (I) NW (put) NW (those) NW (in,) NW (instead.) NW (For) NW (sure) NW (the) NW (next) NW (version) NW (of) NW (LameTeX) NW (will) NW (allow) NW (the) NW (user) NW (to) NW (choose) NW (\\normal") NW (scaleable) NW (PostScript) NW (fonts) NW (instead) NW (of) NW (the) NW (somewhat) NW (tedious) NW (LaTeX) NW (bitmaps.) NW (Documents) NW (which) NW (used) NW (only) NW (the) NW (scaleable) NW (fonts) NW (would) NW (be) NW (much) NW (smaller) NW (and) NW (compile) NW (faster.) NW
+NEWPARA
+ (It) NW (is) NW (possible) NW (for) NW (you) NW (to) NW (make) NW (your) NW (own) NW (PostScript) NW (hack) NW (to) NW (change) NW (the) NW (appearance) NW (of) NW (a) NW (word,) NW (and) NW (this) NW (can) NW (certainly) NW (include) NW (using) NW (a) NW (scaleable) NW (font) NW (if) NW (you) NW (wish.) NW (This) NW (is) NW (described) NW (in) NW (the) NW (hacks) NW (chapter) NW (with) NW (the) NW (command) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (pscmd.) NW
+end
+0 144 translate
+%%BeginProcSet: Freelance Plus
+/Freelance_Plus dup 100 dict def load begin
+[ ] {bind} stopped
+{ (patching the bind operator...) = flush
+/*bind /bind load def /bind { dup xcheck
+{ *bind } if } *bind def } if pop
+/bdf {bind def} bind def
+/ldf {load def} bdf
+/mt /moveto ldf
+/rt /rmoveto ldf
+/l2 /lineto ldf
+/sg /setgray ldf
+/gs /gsave ldf
+/ef /eofill ldf
+/st /stroke ldf
+/gr /grestore ldf
+/np /newpath ldf
+/sv /save ldf
+/su /statusdict ldf
+/rs /restore ldf
+/sw /setlinewidth ldf
+/sd /setdash ldf
+/cp /closepath ldf
+/ed {exch def } bdf
+/cfnt {findfont exch makefont setfont} bdf
+/itr {transform round exch round exch itransform} bdf
+/fres 72 0 matrix currentmatrix dtransform
+exch dup mul exch dup mul add sqrt def
+/res fres def
+/mcm matrix currentmatrix bdf
+/Ich 256 array def StandardEncoding Ich copy pop Ich 7/bullet put
+Ich 20/paragraph put Ich 21/section put Ich 225/germandbls put
+/Ccedilla/udieresis/eacute/acircumflex/adieresis/agrave/aring/ccedilla
+/ecircumflex/edieresis/egrave/idieresis/icircumflex/igrave/Adieresis/Aring
+/Eacute/ae/AE/ocircumflex/odieresis/ograve/ucircumflex/ugrave/ydieresis
+/Odieresis/Udieresis/cent/sterling/yen/space/florin/aacute/iacute/oacute
+/uacute/ntilde/Ntilde/ordfeminine/ordmasculine/questiondown/space/space
+/space/space/exclamdown/guillemotleft/guillemotright
+Ich 128 48 getinterval astore pop
+/Ienc { /ncs Ich def /nfn ed /bfn ed /bfd bfn findfont def
+/nf bfd maxlength dict def bfd{exch dup dup /FID ne exch /Encoding ne and
+{exch nf 3 1 roll put}{pop pop} ifelse }forall nf/FontName nfn put
+nf/Encoding ncs put nfn nf definefont pop}bdf
+/IencO { /ncs Ich def /nfn ed /bfn ed /lnw ed /bfd bfn findfont def
+/nf bfd maxlength 4 add dict def bfd{exch dup dup /FID ne exch
+/Encoding ne and {exch nf 3 1 roll put}{pop pop} ifelse }forall
+nf/FontName nfn put nf/Encoding ncs put nf/PaintType 2 put
+nf/StrokeWidth lnw put nfn nf definefont pop}bdf
+/IencSO { /nfn ed /bfn ed /lnw ed /bfd bfn findfont def
+/nf bfd maxlength 4 add dict def bfd{exch dup /FID ne { exch
+nf 3 1 roll put}{pop pop} ifelse }forall nf/FontName nfn put
+nf/PaintType 2 put nf/StrokeWidth lnw put nfn nf definefont pop}bdf
+
+%%EndProcSet
+end
+%%EndProlog
+%%BeginSetup
+Freelance_Plus begin
+save newpath
+.1 .1 scale
+/ecm matrix currentmatrix bdf
+/sem {ecm setmatrix} bdf
+-720 -720 translate
+2 setlinecap
+0 setlinejoin
+106 45 {dup mul exch dup mul add 1.0 exch sub} setscreen
+%%EndSetup
+
+[] 0 sd
+6 sw
+12 sw
+.0 sg
+gs
+np
+4204 3422 itr mt
+4209 3415 itr l2
+4041 3457 itr l2
+4041 3881 itr l2
+3739 4291 itr l2
+3706 4291 itr l2
+3706 4457 itr l2
+4149 4457 itr l2
+4387 3596 itr l2
+4204 3422 itr l2
+gs
+.72 sg
+ef gr
+.50 sg
+st
+gr
+6 sw
+12 sw
+0 sg
+gs
+np
+3883 2554 itr mt
+3928 2637 itr l2
+3365 2986 itr l2
+3368 3009 itr l2
+3368 3028 itr l2
+3359 3059 itr l2
+3330 3109 itr l2
+3293 3161 itr l2
+3267 3195 itr l2
+3241 3212 itr l2
+3228 3228 itr l2
+3202 3245 itr l2
+3174 3266 itr l2
+3149 3295 itr l2
+3123 3312 itr l2
+3097 3329 itr l2
+3071 3346 itr l2
+3044 3363 itr l2
+3018 3380 itr l2
+3002 3391 itr l2
+2979 3397 itr l2
+3005 3363 itr l2
+3025 3331 itr l2
+3044 3295 itr l2
+3066 3263 itr l2
+3083 3228 itr l2
+3113 3259 itr l2
+3144 3230 itr l2
+3171 3209 itr l2
+3202 3177 itr l2
+3227 3141 itr l2
+3249 3116 itr l2
+3291 3066 itr l2
+3288 3041 itr l2
+3266 3016 itr l2
+3241 3009 itr l2
+3214 3026 itr l2
+3177 3059 itr l2
+3155 3077 itr l2
+3135 3088 itr l2
+3097 3110 itr l2
+3057 3127 itr l2
+3031 3144 itr l2
+3005 3163 itr l2
+3005 3212 itr l2
+2966 3228 itr l2
+2940 3228 itr l2
+2899 3234 itr l2
+2860 3237 itr l2
+2835 3245 itr l2
+2808 3245 itr l2
+2835 3212 itr l2
+2874 3178 itr l2
+2908 3144 itr l2
+2927 3120 itr l2
+2977 3130 itr l2
+2992 3127 itr l2
+3027 3105 itr l2
+3058 3084 itr l2
+3097 3059 itr l2
+3123 3043 itr l2
+3149 3026 itr l2
+3176 3009 itr l2
+3202 2992 itr l2
+3219 2966 itr l2
+3219 2948 itr l2
+3202 2925 itr l2
+3176 2908 itr l2
+3136 2925 itr l2
+3097 2934 itr l2
+3044 2948 itr l2
+3005 2962 itr l2
+2966 2976 itr l2
+2899 3013 itr l2
+2913 3030 itr l2
+2925 3051 itr l2
+2919 3044 itr l2
+2922 3059 itr l2
+2889 3066 itr l2
+2835 3077 itr l2
+2808 3084 itr l2
+2783 3088 itr l2
+2756 3093 itr l2
+2730 3093 itr l2
+2682 3095 itr l2
+2730 3076 itr l2
+2757 3059 itr l2
+2808 3026 itr l2
+2835 3009 itr l2
+2861 2992 itr l2
+2913 2959 itr l2
+2940 2942 itr l2
+2966 2925 itr l2
+2991 2909 itr l2
+3018 2891 itr l2
+3044 2874 itr l2
+3071 2866 itr l2
+3097 2857 itr l2
+3123 2857 itr l2
+3149 2857 itr l2
+3188 2862 itr l2
+3228 2874 itr l2
+3293 2908 itr l2
+3319 2916 itr l2
+3341 2898 itr l2
+3377 2880 itr l2
+3831 2587 itr l2
+3857 2572 itr l2
+3883 2554 itr l2
+gs
+.25 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3765 2874 itr mt
+3750 2822 itr l2
+3742 2725 itr l2
+3910 2621 itr l2
+3896 2587 itr l2
+3869 2560 itr l2
+3863 2560 itr l2
+3833 2583 itr l2
+3806 2602 itr l2
+3785 2599 itr l2
+3747 2564 itr l2
+3726 2520 itr l2
+3711 2503 itr l2
+3700 2470 itr l2
+3702 2445 itr l2
+3726 2419 itr l2
+3739 2385 itr l2
+3755 2353 itr l2
+3779 2335 itr l2
+3806 2311 itr l2
+3831 2301 itr l2
+3857 2292 itr l2
+3883 2284 itr l2
+3910 2284 itr l2
+3910 2251 itr l2
+3936 2234 itr l2
+3962 2234 itr l2
+4001 2234 itr l2
+4027 2234 itr l2
+4054 2251 itr l2
+4067 2234 itr l2
+4093 2234 itr l2
+4119 2251 itr l2
+4146 2267 itr l2
+4172 2301 itr l2
+4198 2335 itr l2
+4224 2368 itr l2
+4251 2385 itr l2
+4277 2385 itr l2
+4303 2402 itr l2
+4329 2419 itr l2
+4355 2436 itr l2
+4382 2453 itr l2
+4408 2487 itr l2
+4434 2504 itr l2
+4447 2520 itr l2
+4447 2554 itr l2
+4434 2587 itr l2
+4421 2621 itr l2
+4421 2689 itr l2
+4408 2740 itr l2
+4382 2807 itr l2
+4368 2840 itr l2
+4342 2891 itr l2
+4316 2925 itr l2
+4316 2959 itr l2
+4303 3009 itr l2
+4303 3043 itr l2
+4316 3076 itr l2
+4342 3110 itr l2
+4382 3161 itr l2
+4436 3207 itr l2
+4473 3245 itr l2
+4528 3304 itr l2
+4560 3346 itr l2
+4578 3380 itr l2
+4598 3415 itr l2
+4618 3498 itr l2
+4636 3548 itr l2
+4644 3582 itr l2
+4657 3616 itr l2
+4663 3652 itr l2
+4669 3700 itr l2
+4670 3751 itr l2
+4670 3818 itr l2
+4669 3860 itr l2
+4644 3936 itr l2
+4630 3987 itr l2
+4604 4037 itr l2
+4591 4088 itr l2
+4591 4105 itr l2
+4618 4139 itr l2
+4644 4172 itr l2
+4669 4201 itr l2
+4709 4240 itr l2
+4733 4284 itr l2
+4749 4324 itr l2
+4755 4375 itr l2
+4760 4423 itr l2
+4760 4457 itr l2
+4760 4506 itr l2
+4761 4526 itr l2
+4761 4594 itr l2
+4749 4644 itr l2
+4749 4678 itr l2
+4744 4743 itr l2
+4735 4796 itr l2
+4723 4847 itr l2
+4709 4880 itr l2
+4683 4931 itr l2
+4657 4948 itr l2
+4663 4895 itr l2
+4657 4826 itr l2
+4647 4778 itr l2
+4630 4745 itr l2
+4614 4694 itr l2
+4591 4661 itr l2
+4565 4628 itr l2
+4539 4577 itr l2
+4501 4528 itr l2
+4484 4506 itr l2
+4447 4476 itr l2
+4408 4459 itr l2
+4382 4444 itr l2
+4355 4459 itr l2
+4316 4476 itr l2
+4277 4492 itr l2
+4251 4509 itr l2
+4211 4526 itr l2
+4166 4541 itr l2
+4119 4543 itr l2
+4079 4541 itr l2
+4054 4543 itr l2
+4027 4543 itr l2
+4015 4541 itr l2
+3976 4528 itr l2
+3944 4521 itr l2
+3922 4560 itr l2
+3901 4583 itr l2
+3890 4611 itr l2
+3870 4661 itr l2
+3857 4712 itr l2
+3847 4764 itr l2
+3844 4796 itr l2
+3836 4847 itr l2
+3842 4882 itr l2
+3852 4930 itr l2
+3863 4972 itr l2
+3844 4931 itr l2
+3831 4914 itr l2
+3779 4864 itr l2
+3752 4830 itr l2
+3733 4805 itr l2
+3706 4771 itr l2
+3686 4745 itr l2
+3674 4712 itr l2
+3647 4678 itr l2
+3621 4628 itr l2
+3620 4611 itr l2
+3608 4560 itr l2
+3608 4526 itr l2
+3595 4492 itr l2
+3595 4459 itr l2
+3621 4459 itr l2
+3647 4442 itr l2
+3674 4425 itr l2
+3701 4409 itr l2
+3728 4388 itr l2
+3739 4375 itr l2
+3782 4388 itr l2
+3791 4408 itr l2
+3809 4430 itr l2
+3844 4442 itr l2
+3874 4457 itr l2
+3912 4457 itr l2
+3936 4459 itr l2
+3975 4459 itr l2
+4015 4442 itr l2
+4041 4425 itr l2
+4080 4358 itr l2
+4106 4324 itr l2
+4119 4290 itr l2
+4146 4256 itr l2
+4172 4206 itr l2
+4185 4156 itr l2
+4211 4122 itr l2
+4224 4088 itr l2
+4237 4037 itr l2
+4237 4004 itr l2
+4251 3953 itr l2
+4263 3903 itr l2
+4277 3852 itr l2
+4277 3801 itr l2
+4285 3749 itr l2
+4277 3717 itr l2
+4277 3684 itr l2
+4277 3650 itr l2
+4263 3599 itr l2
+4251 3548 itr l2
+4241 3513 itr l2
+4237 3481 itr l2
+4224 3464 itr l2
+4211 3448 itr l2
+4185 3464 itr l2
+4132 3481 itr l2
+4106 3481 itr l2
+4080 3498 itr l2
+4052 3484 itr l2
+4027 3481 itr l2
+4001 3481 itr l2
+3975 3464 itr l2
+3949 3464 itr l2
+3922 3448 itr l2
+3896 3431 itr l2
+3870 3414 itr l2
+3844 3397 itr l2
+3818 3397 itr l2
+3798 3402 itr l2
+3755 3402 itr l2
+3712 3429 itr l2
+3686 3448 itr l2
+3674 3481 itr l2
+3647 3515 itr l2
+3621 3548 itr l2
+3595 3582 itr l2
+3582 3616 itr l2
+3555 3650 itr l2
+3555 3684 itr l2
+3555 3717 itr l2
+3555 3734 itr l2
+3555 3751 itr l2
+3555 3784 itr l2
+3569 3818 itr l2
+3582 3825 itr l2
+3614 3867 itr l2
+3595 3920 itr l2
+3595 3953 itr l2
+3595 3987 itr l2
+3595 4020 itr l2
+3608 4071 itr l2
+3634 4105 itr l2
+3663 4159 itr l2
+3674 4189 itr l2
+3679 4221 itr l2
+3686 4256 itr l2
+3712 4291 itr l2
+3733 4326 itr l2
+3739 4341 itr l2
+3733 4360 itr l2
+3728 4305 itr l2
+3686 4240 itr l2
+3674 4273 itr l2
+3660 4307 itr l2
+3634 4307 itr l2
+3608 4307 itr l2
+3582 4290 itr l2
+3555 4256 itr l2
+3529 4223 itr l2
+3516 4189 itr l2
+3503 4139 itr l2
+3477 4105 itr l2
+3464 4071 itr l2
+3450 4020 itr l2
+3438 3987 itr l2
+3438 3953 itr l2
+3438 3920 itr l2
+3464 3920 itr l2
+3490 3903 itr l2
+3516 3886 itr l2
+3529 3852 itr l2
+3529 3835 itr l2
+3529 3801 itr l2
+3539 3769 itr l2
+3529 3734 itr l2
+3529 3700 itr l2
+3529 3667 itr l2
+3516 3633 itr l2
+3503 3599 itr l2
+3477 3599 itr l2
+3464 3599 itr l2
+3438 3599 itr l2
+3411 3616 itr l2
+3398 3582 itr l2
+3372 3565 itr l2
+3346 3531 itr l2
+3333 3498 itr l2
+3319 3464 itr l2
+3319 3431 itr l2
+3477 3212 itr l2
+3333 3414 itr l2
+3477 3212 itr l2
+3503 3195 itr l2
+3528 3165 itr l2
+3555 3144 itr l2
+3595 3127 itr l2
+3621 3110 itr l2
+3647 3093 itr l2
+3674 3088 itr l2
+3700 3076 itr l2
+3727 3068 itr l2
+3752 3059 itr l2
+3779 3043 itr l2
+3813 3034 itr l2
+3844 3026 itr l2
+3870 3026 itr l2
+3883 3026 itr l2
+3910 3026 itr l2
+3936 3026 itr l2
+3910 3026 itr l2
+3883 3026 itr l2
+3857 3009 itr l2
+3831 2992 itr l2
+3809 2977 itr l2
+3782 2942 itr l2
+3765 2908 itr l2
+3765 2874 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+4447 2275 itr mt
+4448 2273 itr l2
+4421 2284 itr l2
+4394 2301 itr l2
+4368 2318 itr l2
+4342 2335 itr l2
+4316 2349 itr l2
+4290 2363 itr l2
+4254 2382 itr l2
+4303 2402 itr l2
+4341 2427 itr l2
+4377 2451 itr l2
+4394 2471 itr l2
+4419 2496 itr l2
+4434 2504 itr l2
+4447 2520 itr l2
+4447 2487 itr l2
+4447 2453 itr l2
+4447 2419 itr l2
+4447 2385 itr l2
+4447 2351 itr l2
+4447 2318 itr l2
+4447 2301 itr l2
+4447 2275 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3634 3565 itr mt
+3621 3582 itr l2
+3647 3565 itr l2
+3674 3565 itr l2
+3700 3599 itr l2
+3700 3633 itr l2
+3700 3667 itr l2
+3713 3700 itr l2
+3713 3734 itr l2
+3713 3768 itr l2
+3700 3801 itr l2
+3686 3818 itr l2
+3674 3852 itr l2
+3647 3869 itr l2
+3621 3869 itr l2
+3595 3869 itr l2
+3569 3835 itr l2
+3569 3801 itr l2
+3555 3768 itr l2
+3543 3734 itr l2
+3543 3700 itr l2
+3543 3667 itr l2
+3555 3633 itr l2
+3582 3599 itr l2
+3608 3582 itr l2
+3634 3565 itr l2
+gs
+ef gr
+st
+gr
+6 sw
+12 sw
+gs
+np
+2835 1643 itr mt
+2822 1643 itr l2
+2847 1660 itr l2
+2871 1682 itr l2
+2920 1721 itr l2
+2964 1744 itr l2
+3013 1762 itr l2
+3056 1784 itr l2
+3096 1796 itr l2
+3137 1807 itr l2
+3176 1824 itr l2
+3212 1835 itr l2
+3241 1846 itr l2
+3287 1852 itr l2
+3326 1864 itr l2
+3344 1864 itr l2
+3358 1863 itr l2
+3438 1863 itr l2
+3516 1863 itr l2
+3555 1863 itr l2
+3593 1863 itr l2
+3647 1863 itr l2
+3686 1863 itr l2
+3713 1863 itr l2
+3739 1863 itr l2
+3765 1863 itr l2
+3752 1896 itr l2
+3739 1930 itr l2
+3726 1964 itr l2
+3713 1998 itr l2
+3703 2034 itr l2
+3700 2065 itr l2
+3703 2096 itr l2
+3713 2132 itr l2
+3700 2149 itr l2
+3686 2183 itr l2
+3674 2200 itr l2
+3664 2233 itr l2
+3660 2267 itr l2
+3650 2301 itr l2
+3647 2335 itr l2
+3647 2368 itr l2
+3647 2402 itr l2
+3637 2437 itr l2
+3634 2487 itr l2
+3633 2506 itr l2
+3633 2523 itr l2
+3634 2554 itr l2
+3634 2587 itr l2
+3642 2608 itr l2
+3674 2621 itr l2
+3700 2604 itr l2
+3712 2585 itr l2
+3747 2568 itr l2
+3735 2534 itr l2
+3726 2520 itr l2
+3713 2504 itr l2
+3700 2470 itr l2
+3699 2448 itr l2
+3699 2443 itr l2
+3725 2426 itr l2
+3739 2385 itr l2
+3752 2352 itr l2
+3774 2335 itr l2
+3779 2329 itr l2
+3805 2301 itr l2
+3832 2301 itr l2
+3858 2307 itr l2
+3871 2295 itr l2
+3885 2290 itr l2
+3911 2284 itr l2
+3925 2244 itr l2
+3947 2233 itr l2
+3973 2239 itr l2
+4000 2233 itr l2
+4026 2239 itr l2
+4053 2250 itr l2
+4079 2233 itr l2
+4106 2234 itr l2
+4132 2251 itr l2
+4158 2284 itr l2
+4172 2318 itr l2
+4198 2301 itr l2
+4224 2284 itr l2
+4251 2267 itr l2
+4265 2256 itr l2
+4291 2239 itr l2
+4316 2217 itr l2
+4342 2200 itr l2
+4366 2193 itr l2
+4382 2183 itr l2
+4393 2181 itr l2
+4406 2170 itr l2
+4408 2115 itr l2
+4408 2082 itr l2
+4401 2051 itr l2
+4408 2015 itr l2
+4421 1981 itr l2
+4428 1949 itr l2
+4434 1913 itr l2
+4434 1879 itr l2
+4447 1846 itr l2
+4460 1812 itr l2
+4473 1779 itr l2
+4499 1745 itr l2
+4526 1711 itr l2
+4552 1677 itr l2
+4539 1643 itr l2
+4499 1610 itr l2
+4473 1593 itr l2
+4446 1585 itr l2
+4421 1576 itr l2
+4380 1556 itr l2
+4342 1543 itr l2
+4303 1526 itr l2
+4265 1517 itr l2
+4237 1509 itr l2
+4211 1492 itr l2
+4185 1488 itr l2
+4146 1475 itr l2
+4106 1475 itr l2
+4067 1475 itr l2
+4041 1475 itr l2
+4004 1471 itr l2
+3942 1466 itr l2
+3896 1458 itr l2
+3857 1458 itr l2
+3818 1458 itr l2
+3791 1458 itr l2
+3752 1458 itr l2
+3726 1458 itr l2
+3700 1458 itr l2
+3674 1458 itr l2
+3660 1458 itr l2
+3633 1466 itr l2
+3606 1471 itr l2
+3575 1471 itr l2
+3555 1475 itr l2
+3516 1475 itr l2
+3490 1475 itr l2
+3464 1475 itr l2
+3424 1492 itr l2
+3385 1492 itr l2
+3359 1492 itr l2
+3333 1492 itr l2
+3319 1492 itr l2
+3282 1500 itr l2
+3251 1500 itr l2
+3213 1505 itr l2
+3189 1506 itr l2
+3163 1506 itr l2
+3136 1509 itr l2
+3127 1512 itr l2
+3123 1517 itr l2
+3137 1529 itr l2
+3190 1590 itr l2
+3136 1593 itr l2
+3110 1593 itr l2
+3071 1593 itr l2
+3031 1610 itr l2
+3018 1610 itr l2
+2992 1613 itr l2
+2966 1610 itr l2
+2939 1619 itr l2
+2913 1627 itr l2
+2887 1627 itr l2
+2872 1630 itr l2
+2850 1636 itr l2
+2835 1643 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+4074 3499 itr mt
+4080 3498 itr l2
+4093 3531 itr l2
+4095 3555 itr l2
+4099 3585 itr l2
+4109 3620 itr l2
+4119 3667 itr l2
+4119 3684 itr l2
+4119 3734 itr l2
+4119 3768 itr l2
+4112 3818 itr l2
+4099 3874 itr l2
+4093 3903 itr l2
+4067 3953 itr l2
+4054 4004 itr l2
+4041 4037 itr l2
+4025 4086 itr l2
+3988 4139 itr l2
+3964 4177 itr l2
+3948 4198 itr l2
+3925 4237 itr l2
+3914 4259 itr l2
+3891 4285 itr l2
+3883 4290 itr l2
+3857 4307 itr l2
+3827 4319 itr l2
+3805 4324 itr l2
+3779 4324 itr l2
+3752 4324 itr l2
+3740 4319 itr l2
+3713 4290 itr l2
+3700 4256 itr l2
+3689 4224 itr l2
+3682 4190 itr l2
+3662 4151 itr l2
+3634 4105 itr l2
+3621 4071 itr l2
+3608 4037 itr l2
+3605 4026 itr l2
+3595 3987 itr l2
+3595 3953 itr l2
+3595 3920 itr l2
+3596 3884 itr l2
+3621 3862 itr l2
+3647 3851 itr l2
+3674 3818 itr l2
+3692 3793 itr l2
+3700 3768 itr l2
+3713 3734 itr l2
+3713 3700 itr l2
+3713 3667 itr l2
+3706 3651 itr l2
+3700 3616 itr l2
+3689 3593 itr l2
+3674 3565 itr l2
+3627 3560 itr l2
+3647 3515 itr l2
+3661 3494 itr l2
+3678 3465 itr l2
+3686 3448 itr l2
+3712 3429 itr l2
+3739 3414 itr l2
+3780 3400 itr l2
+3817 3404 itr l2
+3844 3404 itr l2
+3870 3419 itr l2
+3896 3431 itr l2
+3921 3451 itr l2
+3961 3470 itr l2
+4000 3480 itr l2
+4029 3484 itr l2
+4040 3484 itr l2
+4068 3494 itr l2
+4074 3499 itr l2
+gs
+1 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3621 4459 itr mt
+3626 4457 itr l2
+3608 4459 itr l2
+3593 4457 itr l2
+3571 4451 itr l2
+3544 4444 itr l2
+3516 4408 itr l2
+3503 4358 itr l2
+3484 4326 itr l2
+3474 4298 itr l2
+3468 4270 itr l2
+3464 4240 itr l2
+3464 4206 itr l2
+3464 4172 itr l2
+3464 4139 itr l2
+3477 4105 itr l2
+3503 4139 itr l2
+3516 4172 itr l2
+3529 4206 itr l2
+3543 4240 itr l2
+3555 4263 itr l2
+3582 4291 itr l2
+3604 4298 itr l2
+3621 4307 itr l2
+3647 4290 itr l2
+3674 4273 itr l2
+3674 4240 itr l2
+3674 4206 itr l2
+3700 4240 itr l2
+3713 4273 itr l2
+3726 4290 itr l2
+3739 4324 itr l2
+3726 4375 itr l2
+3700 4408 itr l2
+3674 4425 itr l2
+3647 4442 itr l2
+3634 4459 itr l2
+3621 4459 itr l2
+gs
+.72 sg
+ef gr
+0 sg
+st
+gr
+gs
+np
+3883 3026 itr mt
+3896 3026 itr l2
+3922 3026 itr l2
+3949 3033 itr l2
+3975 3043 itr l2
+4004 3054 itr l2
+4020 3061 itr l2
+4052 3081 itr l2
+4063 3095 itr l2
+4079 3144 itr l2
+4117 3117 itr l2
+4080 3144 itr l2
+4052 3144 itr l2
+4025 3144 itr l2
+st
+gr
+gs
+np
+3875 3016 itr mt
+3917 3009 itr l2
+3934 3001 itr l2
+3961 2986 itr l2
+3988 2971 itr l2
+4015 2959 itr l2
+4025 2949 itr l2
+4054 2947 itr l2
+4083 2944 itr l2
+4119 2959 itr l2
+4143 2974 itr l2
+4167 2986 itr l2
+4247 3040 itr l2
+st
+gr
+6 sw
+12 sw
+gs
+np
+3659 2614 itr mt
+3655 2603 itr l2
+3657 2594 itr l2
+3695 2575 itr l2
+3737 2564 itr l2
+3764 2572 itr l2
+3776 2587 itr l2
+3799 2628 itr l2
+3813 2670 itr l2
+3816 2713 itr l2
+3794 2729 itr l2
+3752 2738 itr l2
+3744 2733 itr l2
+3723 2704 itr l2
+3686 2655 itr l2
+3659 2614 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+4185 2318 itr mt
+4185 2301 itr l2
+4237 2267 itr l2
+4342 2200 itr l2
+4447 2149 itr l2
+4552 2082 itr l2
+4604 2065 itr l2
+4644 2115 itr l2
+4591 2183 itr l2
+4565 2200 itr l2
+4539 2217 itr l2
+4513 2234 itr l2
+4487 2251 itr l2
+4460 2267 itr l2
+4434 2284 itr l2
+4408 2301 itr l2
+4382 2318 itr l2
+4342 2335 itr l2
+4303 2351 itr l2
+4277 2368 itr l2
+4251 2385 itr l2
+4224 2368 itr l2
+4198 2351 itr l2
+4185 2318 itr l2
+gs
+.48 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+4404 2175 itr mt
+4410 2105 itr l2
+4408 2099 itr l2
+4406 2064 itr l2
+4403 2044 itr l2
+4412 2001 itr l2
+4421 1981 itr l2
+4447 1947 itr l2
+4473 1913 itr l2
+4513 1879 itr l2
+4539 1863 itr l2
+4578 1846 itr l2
+4605 1838 itr l2
+4630 1829 itr l2
+4669 1821 itr l2
+4709 1812 itr l2
+4762 1799 itr l2
+4788 1795 itr l2
+4834 1783 itr l2
+4880 1779 itr l2
+4919 1767 itr l2
+4970 1756 itr l2
+5011 1745 itr l2
+5051 1734 itr l2
+5076 1723 itr l2
+5110 1723 itr l2
+5141 1711 itr l2
+5181 1711 itr l2
+5212 1706 itr l2
+5246 1694 itr l2
+5272 1696 itr l2
+5325 1694 itr l2
+5365 1690 itr l2
+5416 1684 itr l2
+5443 1677 itr l2
+5472 1674 itr l2
+5508 1660 itr l2
+5547 1658 itr l2
+5587 1643 itr l2
+5620 1625 itr l2
+5637 1592 itr l2
+5627 1559 itr l2
+5611 1537 itr l2
+5561 1509 itr l2
+5522 1494 itr l2
+5496 1488 itr l2
+5456 1475 itr l2
+5430 1475 itr l2
+5391 1475 itr l2
+5353 1466 itr l2
+5327 1466 itr l2
+5284 1461 itr l2
+5260 1458 itr l2
+5233 1458 itr l2
+5207 1458 itr l2
+5229 1494 itr l2
+5246 1526 itr l2
+5272 1559 itr l2
+5242 1554 itr l2
+5194 1543 itr l2
+5165 1537 itr l2
+5141 1526 itr l2
+5102 1509 itr l2
+5063 1492 itr l2
+4983 1450 itr l2
+4944 1434 itr l2
+4906 1407 itr l2
+4869 1390 itr l2
+4827 1374 itr l2
+4788 1351 itr l2
+4735 1323 itr l2
+4696 1307 itr l2
+4657 1290 itr l2
+4618 1273 itr l2
+4592 1270 itr l2
+4552 1256 itr l2
+4499 1239 itr l2
+4503 1237 itr l2
+4511 1237 itr l2
+4511 1237 itr l2
+4552 1239 itr l2
+4591 1239 itr l2
+4644 1239 itr l2
+4683 1239 itr l2
+4737 1232 itr l2
+4771 1232 itr l2
+4813 1232 itr l2
+4856 1232 itr l2
+4906 1232 itr l2
+4944 1242 itr l2
+4983 1242 itr l2
+5025 1242 itr l2
+5089 1242 itr l2
+5127 1248 itr l2
+5165 1248 itr l2
+5208 1248 itr l2
+5246 1248 itr l2
+5284 1248 itr l2
+5327 1248 itr l2
+5377 1256 itr l2
+5404 1256 itr l2
+5442 1254 itr l2
+5479 1254 itr l2
+5522 1256 itr l2
+5574 1256 itr l2
+5627 1256 itr l2
+5666 1256 itr l2
+5705 1256 itr l2
+5732 1256 itr l2
+5705 1273 itr l2
+5666 1290 itr l2
+5632 1303 itr l2
+5598 1303 itr l2
+5561 1307 itr l2
+5522 1307 itr l2
+5469 1307 itr l2
+5412 1319 itr l2
+5348 1324 itr l2
+5325 1323 itr l2
+5297 1330 itr l2
+5255 1335 itr l2
+5233 1340 itr l2
+5194 1340 itr l2
+5229 1341 itr l2
+5272 1351 itr l2
+5314 1351 itr l2
+5353 1351 itr l2
+5391 1357 itr l2
+5417 1357 itr l2
+5443 1357 itr l2
+5482 1357 itr l2
+5509 1357 itr l2
+5539 1363 itr l2
+5560 1368 itr l2
+5611 1385 itr l2
+5640 1391 itr l2
+5679 1407 itr l2
+5705 1424 itr l2
+5744 1441 itr l2
+5771 1458 itr l2
+5797 1475 itr l2
+5837 1492 itr l2
+5876 1526 itr l2
+5902 1559 itr l2
+5915 1593 itr l2
+5915 1627 itr l2
+5902 1660 itr l2
+5876 1694 itr l2
+5823 1745 itr l2
+5784 1762 itr l2
+5732 1779 itr l2
+5679 1779 itr l2
+5640 1779 itr l2
+5601 1779 itr l2
+5561 1779 itr l2
+5508 1779 itr l2
+5469 1779 itr l2
+5417 1779 itr l2
+5377 1779 itr l2
+5325 1779 itr l2
+5276 1789 itr l2
+5233 1795 itr l2
+5181 1795 itr l2
+5140 1799 itr l2
+5097 1805 itr l2
+5050 1812 itr l2
+4995 1821 itr l2
+4959 1829 itr l2
+4919 1833 itr l2
+4866 1846 itr l2
+4827 1863 itr l2
+4788 1876 itr l2
+4761 1879 itr l2
+4735 1896 itr l2
+4711 1903 itr l2
+4670 1930 itr l2
+4644 1947 itr l2
+4618 1964 itr l2
+4591 1981 itr l2
+4565 1998 itr l2
+4552 2015 itr l2
+4526 2031 itr l2
+4499 2065 itr l2
+4487 2099 itr l2
+4460 2132 itr l2
+4404 2175 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+gs
+np
+4131 1779 itr mt
+4095 1790 itr l2
+4064 1784 itr l2
+4024 1796 itr l2
+4015 1795 itr l2
+3988 1795 itr l2
+3949 1795 itr l2
+3910 1795 itr l2
+3883 1790 itr l2
+3857 1790 itr l2
+3803 1784 itr l2
+3752 1779 itr l2
+3726 1779 itr l2
+3702 1773 itr l2
+3676 1767 itr l2
+3634 1762 itr l2
+3596 1755 itr l2
+3556 1744 itr l2
+3516 1733 itr l2
+3490 1728 itr l2
+3450 1711 itr l2
+3397 1687 itr l2
+3359 1677 itr l2
+3307 1660 itr l2
+3280 1643 itr l2
+3242 1625 itr l2
+3216 1614 itr l2
+3188 1593 itr l2
+3180 1574 itr l2
+3202 1585 itr l2
+3256 1608 itr l2
+3309 1625 itr l2
+3357 1642 itr l2
+3384 1648 itr l2
+3437 1659 itr l2
+3463 1670 itr l2
+3490 1677 itr l2
+st
+gr
+gs
+np
+3698 1631 itr mt
+3662 1625 itr l2
+3634 1627 itr l2
+3609 1619 itr l2
+3583 1614 itr l2
+3543 1610 itr l2
+3516 1593 itr l2
+3490 1585 itr l2
+3450 1559 itr l2
+3424 1543 itr l2
+3384 1517 itr l2
+3370 1506 itr l2
+3362 1495 itr l2
+3353 1500 itr l2
+st
+gr
+gs
+np
+2991 1608 itr mt
+3018 1627 itr l2
+3044 1660 itr l2
+3071 1677 itr l2
+3110 1710 itr l2
+3149 1728 itr l2
+3176 1745 itr l2
+3216 1767 itr l2
+3242 1773 itr l2
+3264 1779 itr l2
+3293 1779 itr l2
+3307 1779 itr l2
+st
+gr
+gs
+np
+4041 2115 itr mt
+4041 2082 itr l2
+4041 2048 itr l2
+4041 2015 itr l2
+4042 1983 itr l2
+4041 1947 itr l2
+4054 1913 itr l2
+4069 1875 itr l2
+4106 1846 itr l2
+4132 1846 itr l2
+4127 1847 itr l2
+4139 1835 itr l2
+4135 1830 itr l2
+4122 1790 itr l2
+st
+gr
+gs
+np
+3713 2132 itr mt
+3737 2114 itr l2
+3765 2099 itr l2
+3791 2082 itr l2
+3818 2065 itr l2
+3844 2052 itr l2
+3870 2048 itr l2
+3896 2048 itr l2
+3901 2052 itr l2
+st
+gr
+gs
+np
+3726 1964 itr mt
+3739 1930 itr l2
+3765 1913 itr l2
+3777 1903 itr l2
+3803 1886 itr l2
+3831 1879 itr l2
+3857 1881 itr l2
+st
+gr
+6 sw
+12 sw
+1 sg
+gs
+np
+3596 3767 itr mt
+3599 3779 itr l2
+3607 3796 itr l2
+3621 3793 itr l2
+3634 3734 itr l2
+3634 3700 itr l2
+3621 3667 itr l2
+3608 3667 itr l2
+3595 3700 itr l2
+3590 3735 itr l2
+3596 3767 itr l2
+gs
+ef gr
+st
+gr
+6 sw
+12 sw
+0 sg
+gs
+np
+3328 3394 itr mt
+3346 3414 itr l2
+3323 3380 itr l2
+3319 3346 itr l2
+3319 3312 itr l2
+3333 3279 itr l2
+3346 3245 itr l2
+3372 3228 itr l2
+3420 3214 itr l2
+3424 3212 itr l2
+3450 3212 itr l2
+3477 3212 itr l2
+3503 3212 itr l2
+3529 3228 itr l2
+3539 3241 itr l2
+3582 3228 itr l2
+3608 3228 itr l2
+3634 3228 itr l2
+3660 3228 itr l2
+3686 3245 itr l2
+3696 3276 itr l2
+3700 3295 itr l2
+3700 3329 itr l2
+3686 3363 itr l2
+3674 3397 itr l2
+3647 3431 itr l2
+3621 3448 itr l2
+3595 3464 itr l2
+3569 3481 itr l2
+3544 3484 itr l2
+3516 3498 itr l2
+3490 3498 itr l2
+3464 3498 itr l2
+3436 3492 itr l2
+3414 3484 itr l2
+3398 3481 itr l2
+3366 3464 itr l2
+3339 3429 itr l2
+3328 3394 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3555 3481 itr mt
+3524 3494 itr l2
+3491 3499 itr l2
+3467 3524 itr l2
+3450 3555 itr l2
+3433 3572 itr l2
+3410 3602 itr l2
+3398 3633 itr l2
+3411 3667 itr l2
+3411 3700 itr l2
+3411 3734 itr l2
+3411 3768 itr l2
+3424 3818 itr l2
+3424 3869 itr l2
+3438 3920 itr l2
+3438 3953 itr l2
+3438 3987 itr l2
+3444 4026 itr l2
+3454 4056 itr l2
+3467 4090 itr l2
+3484 4125 itr l2
+3503 4156 itr l2
+3514 4190 itr l2
+3531 4224 itr l2
+3551 4255 itr l2
+3575 4280 itr l2
+3591 4302 itr l2
+3621 4307 itr l2
+3647 4307 itr l2
+3669 4302 itr l2
+3686 4290 itr l2
+3700 4256 itr l2
+3700 4223 itr l2
+3686 4189 itr l2
+3662 4155 itr l2
+3647 4122 itr l2
+3632 4086 itr l2
+3621 4054 itr l2
+3612 4021 itr l2
+3605 3987 itr l2
+3599 3952 itr l2
+3595 3920 itr l2
+3595 3886 itr l2
+3608 3852 itr l2
+3582 3818 itr l2
+3562 3784 itr l2
+3555 3751 itr l2
+3555 3717 itr l2
+3555 3684 itr l2
+3555 3650 itr l2
+3569 3616 itr l2
+3595 3585 itr l2
+3622 3572 itr l2
+3634 3531 itr l2
+3647 3515 itr l2
+3662 3486 itr l2
+3635 3481 itr l2
+3609 3472 itr l2
+3582 3481 itr l2
+3555 3481 itr l2
+gs
+1 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3438 3920 itr mt
+3438 3936 itr l2
+3424 3903 itr l2
+3398 3869 itr l2
+3385 3835 itr l2
+3385 3801 itr l2
+3372 3768 itr l2
+3372 3734 itr l2
+3372 3700 itr l2
+3385 3667 itr l2
+3398 3633 itr l2
+3424 3599 itr l2
+3450 3599 itr l2
+3477 3599 itr l2
+3503 3599 itr l2
+3516 3633 itr l2
+3529 3667 itr l2
+3529 3700 itr l2
+3529 3734 itr l2
+3529 3768 itr l2
+3529 3801 itr l2
+3529 3835 itr l2
+3516 3852 itr l2
+3516 3886 itr l2
+3490 3903 itr l2
+3464 3920 itr l2
+3438 3920 itr l2
+gs
+ef gr
+st
+gr
+6 sw
+12 sw
+1 sg
+gs
+np
+3463 3833 itr mt
+3452 3833 itr l2
+3438 3818 itr l2
+3424 3786 itr l2
+3424 3750 itr l2
+3429 3724 itr l2
+3450 3700 itr l2
+3477 3717 itr l2
+3490 3751 itr l2
+3490 3784 itr l2
+3482 3818 itr l2
+3463 3833 itr l2
+gs
+ef gr
+st
+gr
+6 sw
+12 sw
+0 sg
+gs
+np
+3725 2820 itr mt
+3738 2887 itr l2
+3725 2920 itr l2
+3712 2938 itr l2
+3686 2955 itr l2
+3660 2963 itr l2
+3633 2966 itr l2
+3607 2971 itr l2
+3581 2971 itr l2
+3553 2963 itr l2
+3529 2947 itr l2
+3515 2921 itr l2
+3520 2890 itr l2
+3541 2871 itr l2
+3567 2859 itr l2
+3594 2847 itr l2
+3621 2828 itr l2
+3645 2813 itr l2
+3672 2803 itr l2
+3699 2803 itr l2
+3720 2825 itr l2
+3725 2820 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3544 2833 itr mt
+3502 2859 itr l2
+3477 2874 itr l2
+3450 2874 itr l2
+3424 2867 itr l2
+3398 2847 itr l2
+3372 2807 itr l2
+3359 2773 itr l2
+3359 2740 itr l2
+3368 2713 itr l2
+3385 2689 itr l2
+3413 2675 itr l2
+3436 2675 itr l2
+3463 2675 itr l2
+3490 2689 itr l2
+3517 2698 itr l2
+3529 2706 itr l2
+3555 2723 itr l2
+3569 2756 itr l2
+3565 2790 itr l2
+3544 2833 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3684 2798 itr mt
+3582 2790 itr l2
+3608 2790 itr l2
+3647 2790 itr l2
+3675 2802 itr l2
+3713 2798 itr l2
+3726 2773 itr l2
+3732 2740 itr l2
+3726 2706 itr l2
+3713 2672 itr l2
+3687 2645 itr l2
+3660 2621 itr l2
+3634 2604 itr l2
+3608 2604 itr l2
+3582 2604 itr l2
+3559 2606 itr l2
+3529 2614 itr l2
+3502 2626 itr l2
+3470 2675 itr l2
+3490 2687 itr l2
+3517 2691 itr l2
+3544 2710 itr l2
+3562 2729 itr l2
+3569 2756 itr l2
+3582 2790 itr l2
+3606 2798 itr l2
+3633 2798 itr l2
+3660 2794 itr l2
+3684 2798 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+gs
+np
+3805 2706 itr mt
+3875 2763 itr l2
+3949 2783 itr l2
+4018 2763 itr l2
+4080 2689 itr l2
+4146 2648 itr l2
+4185 2723 itr l2
+4158 2823 itr l2
+st
+gr
+rs end
+grestoreall
+formatdict begin
+
+NEWPARA
+ (LameTeX) NW (is) NW (very) NW (versatile) NW (about) NW (changing) NW (margins) NW (in) NW (mid-document) NW (and) NW (stuff) NW (like) NW (that.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (5.20) NW
+15 HSpace
+ (Getting) NW (References) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (LameTeX) NW (allows) NW (you) NW (to) NW (use) NW (the) NW (LaTeX) NW (commands) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (ref) NW (and) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (label,) NW (but) NW (not) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (pageref.) NW (If) NW (you) NW (have) NW (forward) NW (references,) NW (you) NW (do) NW
+[ 12 false ] NewFont % /cm10it
+ (not) NW
+[ 1 false ] NewFont % /cm10rm
+ (need) NW (to) NW (run) NW (LameTeX) NW (twice.) NW (LameTeX) NW (is) NW (smart) NW (enough) NW (to) NW (do) NW (its) NW (own) NW (recovery) NW (if) NW (you) NW (have) NW (forward) NW (references.) NW (Pretty) NW (neat,) NW (huh?) NW
+/rightmargin 165.6 def
+
+/leftmargin 90 def
+/rightmargin 90 def
+
+/leftmargin 90 def
+/rightmargin 90 def
+
+/rightmargin -61.2 def
+
+/leftmargin 14.4 def
+/rightmargin 14.4 def
+
+/leftmargin 14.4 def
+/rightmargin 14.4 def
+
+ENDPAGE
+
+end
+%! page_kludge.ps - A replica of the standard LaTeX page
+%% This is a LameTeX Page Description File written in PostScript.
+%% Postscript Code by Jon Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+%% This is a page template for the LameTeX formatter
+%% A normal page for LameTeX output to look like LaTeX output
+
+% Makes a path that desribes the page
+/PageShape
+{
+ 8.5 in 8.5 in moveto 6 in 6.2 in 2.4 in 90 270 arc 8.5 in 4 in lineto
+ currentflat 8 mul
+} bind def
+
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ 20 ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+% Anything to do when a new page is started
+/StartPage
+{
+ /Roach pagenumber startpage
+ sub dup mul 3 mul SprinkleIcon
+ 5 dict begin
+ /bp 1 in def /lp 3.5 in def /hp 10.3 in def /wp 5 in def
+ lp wp 2 div add bp hp 2 div add moveto
+ 45 rotate
+ /Helvetica-Bold findfont 45 scalefont setfont
+ [ (NO KLUDGES) (NO BUGS) (MOSTLY NONE) (OK, A FEW) (NO BUGS!)
+ (NO BIG BUGS) (READ) (MY LIPS) (NO NEW BUGS) (HELP!)
+ (HELP!) (HELP!) (HELP!) (HELP!) ]
+ pagenumber startpage sub get
+ dup stringwidth pop 2 div -1 mul -16 rmoveto
+ show -45 rotate newpath
+ lp wp 2 div add bp hp 2 div add 2 copy moveto wp .45 mul 0 rmoveto
+ wp .45 mul 360 0 arcn closepath
+ lp wp 2 div add bp hp 2 div add 2 copy moveto
+ wp .37 mul dup 53 cos mul exch 53 sin mul rmoveto
+ wp .37 mul 53 217 arc closepath
+ lp wp 2 div add bp hp 2 div add 2 copy moveto
+ wp .37 mul dup 233 cos mul exch 233 sin mul rmoveto
+ wp .37 mul 233 37 arc closepath
+ closepath stroke
+ end
+} bind def
+
+% Anything to do when a new page is ended
+/EndPage
+{
+ pagenumber 4 string cvs
+ dup stringwidth pop 8.5 in
+ formatdict /rightmargin get sub
+ formatdict /leftmargin get sub
+ exch sub 2 div formatdict /leftmargin get add
+ formatdict /bottommargin get 2 div moveto show
+ /pagenumber pagenumber 1 add def
+ showpage % A new page here really does mean start a new page.
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+% Page-specific defaults that describe the page.
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout true def % true means fill outside shape. false is inside.
+
+ /in { 72 mul } def
+ /BM 0 in def % Absolute Bottom Margin for page
+ /TM 11 in def % Absolute Top Margin for page
+ /LM 1 in def % Absolute Left Margin for page
+ /RM 7.5 in def % Absolute Right Margin for page
+
+ userdict /pagenumber known not
+ { /pagenumber 1 def } if % Initialize pagenumber if not done already
+ /startpage pagenumber def
+} bind def
+
+InitPage % Just loading this file initializes the page.
+formatdict begin
+
+STARTPAGE
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+21.6 BASELINESKIP
+
+[ 9 false ] NewFont % /cm18bf
+
+
+/vspace 112.5 def NEWPARA
+ (Chapter) NW (6) NW
+26.4 BASELINESKIP
+
+/vspace 46.6 def NEWPARA
+
+[ 10 false ] NewFont % /cm22bf
+ (Including) NW (Your) NW (Own) NW (PostScript) NW (Hacks) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 118.8 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (Let's) NW (face) NW (it.) NW (This) NW (manual) NW (is) NW (nice,) NW (but) NW (let's) NW (get) NW (into) NW (the) NW (nitty) NW (gritty) NW (of) NW (the) NW (examples) NW (presented) NW (here) NW (and) NW (maybe) NW (I) NW (can) NW (show) NW (you) NW (how) NW (to) NW (do) NW (some) NW (cool) NW (stuff) NW (with) NW (LameTeX.) NW (If) NW (you) NW (have) NW (questions,) NW (we) NW (can) NW (chat) NW (in) NW (person) NW (over) NW (mail.) NW (Here) NW (goes.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (6.21) NW
+15 HSpace
+ (How) NW (to) NW (Use) NW (Include) NW (Files) NW (To) NW (Do) NW (Stuff) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (This) NW (manual) NW (can) NW (be) NW (formatted) NW (by) NW (running) NW (either) NW (LaTeX) NW (or) NW (LameTeX) NW (on) NW (the) NW (file) NW
+[ 14 false ] NewFont % /cm10tt
+ (lametex) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (doc.tex) NW
+[ 1 true ] NewFont % /cm10rm
+ (.) NW (There) NW (are) NW (a) NW (lot) NW (of) NW (other) NW (files,) NW (but) NW
+[ 14 false ] NewFont % /cm10tt
+ (lametex) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (doc.tex) NW
+[ 1 false ] NewFont % /cm10rm
+ (includes) NW (them) NW (using) NW (the) NW (LaTeX) NW (command) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (include.) NW
+NEWPARA
+ (While) NW (reading) NW (this) NW (section) NW (on) NW (examples,) NW (you) NW (will) NW (probably) NW (want) NW (to) NW (run) NW (LameTeX) NW (over) NW (just) NW (one) NW (chapter,) NW (not) NW (all) NW (of) NW (them.) NW (If) NW (you) NW (edit) NW (the) NW (file) NW
+[ 14 false ] NewFont % /cm10tt
+ (lametex) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (doc.tex) NW
+[ 1 false ] NewFont % /cm10rm
+ (you) NW (can) NW (\\comment) NW (out") NW (everything) NW (you) NW (don't) NW (want.) NW (For) NW (example,) NW (if) NW (you) NW (wanted) NW (to) NW (run) NW (LameTeX) NW (over) NW (the) NW (chapter) NW (on) NW (pages,) NW (you) NW (could) NW (edit) NW (the) NW (file) NW (so) NW (that) NW (it) NW (looked) NW (like:) NW
+NEWPARA
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (documentstyle) NW ([) NW (10pt) NW (]) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (report) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (setlength) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (textwidth) NW
+[ 0 true ] NewFont (}) NW
+
+[ 1 true ] NewFont % /cm10rm
+
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (6) NW (in) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (setlength) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (textheight) NW
+[ 0 true ] NewFont (}) NW
+
+[ 1 true ] NewFont % /cm10rm
+
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (9) NW (in) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (setlength) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (topmargin) NW
+[ 0 true ] NewFont (}) NW
+
+[ 1 true ] NewFont % /cm10rm
+
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (0) NW (in) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (setlength) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (oddsidemargin) NW
+[ 0 true ] NewFont (}) NW
+
+[ 1 true ] NewFont % /cm10rm
+
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (0.25) NW (in) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+
+[ 0 false ] NewFont (%) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (begin) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (stealth) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (includeps) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (icons.ps) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (end) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (stealth) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (begin) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (document) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+
+[ 0 false ] NewFont (%) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (include) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (titlepage) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+
+[ 0 false ] NewFont (%) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (include) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (introduction) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+
+[ 0 false ] NewFont (%) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (include) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (starting) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+
+[ 0 false ] NewFont (%) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (include) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (stealth) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (include) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (pages) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+
+[ 0 false ] NewFont (%) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (include) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (normality) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+
+[ 0 false ] NewFont (%) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (include) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (hacks) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+
+[ 0 false ] NewFont (%) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (include) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (future) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+
+[ 0 false ] NewFont (%) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (include) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (errors) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+
+[ 0 false ] NewFont (%) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (include) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (commands) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (end) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (document) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+/vspace 12 def NEWPARA
+ (Notice) NW (how) NW (all) NW (the) NW (chapters,) NW (except) NW (for) NW (pages.tex,) NW (have) NW (been) NW (placed) NW (in) NW (comments) NW (using) NW (the) NW (') NW
+[ 0 true ] NewFont (%) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (') NW (character.) NW (This) NW (means) NW (that) NW (both) NW (LaTeX) NW (and) NW (LameTeX) NW (will) NW (ignore) NW (them.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (6.22) NW
+15 HSpace
+ (White) NW (Text) NW (Hack) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (Look) NW (in) NW (titlepage.tex,) NW (just) NW (before) NW (where) NW (it) NW (says) NW (\\Copyright) NW (1992".) NW (Here) NW (is) NW (a) NW (demonstration) NW (of) NW (changing) NW (the) NW (color) NW (of) NW (the) NW (text) NW (so) NW (that) NW (it) NW (is) NW (white) NW (instead) NW (of) NW (black.) NW (This) NW (is) NW (done) NW (using) NW (the) NW (special) NW (LameTeX) NW (stealth) NW (commands) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (stealth) NW (and) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (postscript.) NW
+NEWPARA
+ (All) NW (the) NW (stealth) NW (commands) NW (are) NW (located) NW (inside) NW (comments) NW (so) NW (that) NW (the) NW (normal) NW (LaTeX) NW (won't) NW (see) NW (them.) NW (So) NW (I) NW (have) NW (to) NW (start) NW (a) NW (stealth) NW (environment,) NW (because) NW (without) NW (that) NW (none) NW (of) NW (the) NW (other) NW (commands) NW (I) NW (type) NW (inside) NW (the) NW (comments) NW (will) NW (be) NW (interpreted.) NW
+NEWPARA
+ (Then) NW (I) NW (start) NW (a) NW (postscript) NW (environment.) NW (From) NW (that) NW (point) NW (on,) NW (everything) NW (in) NW (the) NW (file) NW (gets) NW (dumped) NW (directly) NW (to) NW (the) NW (postscript) NW (output.) NW (So) NW (\\1) NW (setgray") NW (gets) NW (included) NW (directly) NW (in) NW (the) NW (PostScript) NW (output) NW (file.) NW (This) NW (is) NW (the) NW (PostScript) NW (command) NW (to) NW (paint) NW (things) NW (white,) NW (not) NW (black.) NW
+NEWPARA
+ (Naturally) NW (after) NW (the) NW (one) NW (line) NW (has) NW (been) NW (painted) NW (white,) NW (I) NW (must) NW (put) NW (the) NW (default) NW (color) NW (back) NW (to) NW (black) NW (or) NW (else) NW (my) NW (whole) NW (document) NW (will) NW (be) NW (in) NW (white!) NW (The) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (stealth) NW (and) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (postscript) NW (environments) NW (are) NW (special) NW (because) NW (they) NW (don't) NW (as) NW (scope) NW (delimiters) NW (for) NW (internal) NW (changes.) NW
+NEWPARA
+ (So) NW (if) NW (you) NW (did) NW (a) NW (boldface) NW (in) NW (a) NW (Huge) NW (environment) NW (you'd) NW (expect) NW (that) NW (when) NW (the) NW (Huge) NW (environment) NW (ended,) NW (that) NW (the) NW (boldface) NW (would) NW (go) NW (away.) NW (The) NW (\\scope") NW (of) NW (boldface) NW (was) NW (limited) NW (to) NW (the) NW (Huge) NW (environment.) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (stealth) NW (and) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (postscript) NW (don't) NW (limit) NW (scope) NW (like) NW (that.) NW
+NEWPARA
+ (Here's) NW (a) NW (trick) NW (to) NW (try) NW (out.) NW (Try) NW (placing) NW (the) NW (words) NW (\\Copyright) NW (1992") NW (before) NW (the) NW (\\1) NW (setgray") NW (line) NW (and) NW (the) NW (words) NW (\\Jonathan) NW (Monsarrat") NW (afterwards.) NW (What) NW (happens?) NW (Does) NW (\\Copyright) NW (1992") NW (come) NW (out) NW (in) NW (white) NW (or) NW (black?) NW
+NEWPARA
+ (The) NW (answer) NW (is) NW (that) NW (is) NW (comes) NW (out) NW (in) NW (white,) NW (and) NW (if) NW (you) NW (refer) NW (to) NW (the) NW (Page) NW (chapter) NW (I) NW (can) NW (show) NW (you) NW (why.) NW (LameTeX) NW (is) NW (trying) NW (to) NW (center) NW (this) NW (line) NW (on) NW (the) NW (page.) NW (To) NW (do) NW (that) NW (it) NW (needs) NW (to) NW (know) NW (how) NW (long) NW (this) NW (line) NW (is.) NW (So) NW (instead) NW (of) NW (printing) NW (out) NW (the) NW (words) NW (one) NW (at) NW (a) NW (time,) NW (LameTeX) NW (stores) NW (the) NW (words) NW (in) NW (a) NW (big) NW (list,) NW (and) NW (then) NW (prints) NW (them) NW (at) NW (the) NW (end) NW (once) NW (the) NW (line) NW (has) NW (been) NW (completed.) NW (LameTeX) NW (always) NW (does) NW (this.) NW
+NEWPARA
+ (So) NW (in) NW (the) NW (modified) NW (version) NW (I) NW (asked) NW (you) NW (to) NW (make,) NW (first) NW (a) NW (procedure) NW (to) NW (get) NW (the) NW (correct) NW (font) NW (is) NW (put) NW (on) NW (the) NW (word) NW (list.) NW (Then) NW (\\Copyright") NW (is) NW (added) NW (to) NW (the) NW (word) NW (list.) NW (Then) NW (\\1992") NW (is) NW (added.) NW (So) NW (far,) NW (nothing) NW (has) NW (been) NW (printed.) NW (Then) NW (the) NW (\\1) NW (setgray") NW (gets) NW (executed.) NW (Then) NW (\\Jonathan") NW (and) NW (\\Monsarrat") NW (get) NW (added) NW (to) NW (the) NW (word) NW (list.) NW (Finally) NW (we) NW (reach) NW (the) NW (end) NW (of) NW (the) NW (line,) NW (and) NW (when) NW (the) NW (whole) NW (line) NW (prints) NW (out,) NW (all) NW (four) NW (words) NW (are) NW (in) NW (white) NW (because) NW (of) NW (the) NW (\\1) NW (setgray") NW (command.) NW
+NEWPARA
+ (The) NW (word) NW (list,) NW (as) NW (well) NW (as) NW (having) NW (words) NW (and) NW (commands) NW (on) NW (it,) NW (can) NW (also) NW (have) NW (numbers.) NW (A) NW (number) NW (on) NW (a) NW (word) NW (list) NW (means) NW (to) NW (move) NW (over) NW (an) NW (amount) NW (horizontaly.) NW (The) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (hspace) NW (command) NW (and) NW (others) NW (add) NW (in) NW (horizontal) NW (whitespace) NW (in) NW (this) NW (way.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (6.23) NW
+15 HSpace
+ (The) NW (Dagger) NW (Hack) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (LameTeX) NW (is) NW (written) NW (for) NW (PostScript) NW (version) NW (1) NW (because) NW (I) NW (wanted) NW (it) NW (to) NW (work) NW (on) NW (all) NW (PostScript) NW (printers.) NW (I) NW (love) NW (PostScript) NW (but) NW (it) NW (was) NW (very) NW (awkward) NW (to) NW (work) NW (with.) NW (For) NW (one) NW (thing,) NW (PostScript) NW (1) NW (doesn't) NW (have) NW (very) NW (good) NW (memory) NW (management) NW (tools.) NW (If) NW (you're) NW (not) NW (careful,) NW (even) NW (a) NW (simple) NW (hack) NW (like) NW (piping) NW (a) NW (thousand) NW (words) NW (through) NW (a) NW (small) NW (program) NW (and) NW (printing) NW (them) NW (will) NW (take) NW (up) NW (a) NW (lot) NW (of) NW (memory,) NW (because) NW (each) NW (word) NW (is) NW (stored) NW (in) NW (a) NW (string,) NW (and) NW (that) NW (string) NW (is) NW (never) NW (deleted,) NW (not) NW (even) NW (when) NW (the) NW (string) NW (is) NW (printed) NW (and) NW (cannot) NW (be) NW (accessed.) NW
+NEWPARA
+ (Fortunately,) NW (there) NW (is) NW (a) NW (workaround.) NW (LameTeX) NW (uses) NW (the) NW (PostScript) NW (commands) NW
+[ 14 false ] NewFont % /cm10tt
+ (save) NW
+[ 1 false ] NewFont % /cm10rm
+ (and) NW
+[ 14 false ] NewFont % /cm10tt
+ (restore) NW
+[ 1 false ] NewFont % /cm10rm
+ (to) NW (do) NW (memory) NW (cleanup.) NW (If) NW (it) NW (didn't,) NW (it) NW (would) NW (use) NW (up) NW (so) NW (much) NW (memory) NW (that) NW (your) NW (document) NW (could) NW (not) NW (print) NW (out) NW (if) NW (it) NW (were) NW (long.) NW (The) NW
+[ 14 false ] NewFont % /cm10tt
+ (save) NW
+[ 1 false ] NewFont % /cm10rm
+ (command) NW (takes) NW (a) NW (snapshot) NW (of) NW (the) NW (current) NW (state) NW (of) NW (computer) NW (\(or) NW (printer\)) NW (memory) NW (and) NW (the) NW
+[ 14 false ] NewFont % /cm10tt
+ (restore) NW
+[ 1 false ] NewFont % /cm10rm
+ (command) NW (erases) NW (the) NW (current) NW (state) NW (and) NW (returns) NW (the) NW (computer) NW (\(or) NW (printer\)) NW (to) NW (exactly) NW (the) NW (state) NW (it) NW (was) NW (in) NW (whe) NW (the) NW (last) NW
+[ 14 false ] NewFont % /cm10tt
+ (save) NW
+[ 1 false ] NewFont % /cm10rm
+ (command) NW (was) NW (executed.) NW
+NEWPARA
+ (This) NW (happens) NW (at) NW (the) NW (beginning) NW (and) NW (end) NW (of) NW (each) NW (page,) NW (as) NW (mentioned) NW (in) NW (the) NW (chapter) NW (on) NW (Pages.) NW
+NEWPARA
+ (Now) NW (here's) NW (an) NW (interesting) NW (question) NW (for) NW (you.) NW (I) NW (have) NW (this) NW (immense) NW (picture) NW (of) NW (a) NW (dagger) NW (that) NW (I) NW (want) NW (to) NW (include) NW (in) NW (my) NW (PostScript) NW (page.) NW (I) NW (want) NW (text) NW (to) NW (flow) NW (around) NW (the) NW (dagger.) NW (What) NW (should) NW (I) NW (do?) NW
+NEWPARA
+ (Look) NW (in) NW
+[ 14 false ] NewFont % /cm10tt
+ (stealth.tex) NW
+[ 1 false ] NewFont % /cm10rm
+ (and) NW
+[ 14 false ] NewFont % /cm10tt
+ (page) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (dagger.ps) NW
+[ 1 false ] NewFont % /cm10rm
+ (to) NW (find) NW (the) NW (answer.) NW (If) NW (I) NW (were) NW (to) NW (place) NW (the) NW (huge) NW (Dagger) NW (routine) NW (outside) NW (of) NW (a) NW (save-restore) NW (block,) NW (then) NW (it) NW (would) NW (hang) NW (around) NW (in) NW (memory) NW (forever,) NW (even) NW (if) NW (I) NW (didn't) NW (intend) NW (to) NW (use) NW (that) NW (particular) NW (picture) NW (any) NW (more) NW (in) NW (my) NW (document.) NW (This) NW (would) NW (be) NW (unclean.) NW (What) NW (I) NW (really) NW (want) NW (to) NW (do) NW (is) NW (to) NW (insert) NW (the) NW (Dagger) NW (picture,) NW (including) NW (the) NW (definition) NW (-) NW (because) NW (the) NW (definition) NW (takes) NW (up) NW (a) NW (lot) NW (of) NW (room) NW (too) NW (as) NW (well) NW (as) NW (variables) NW (-) NW (inside) NW (the) NW (StartPage) NW (routine.) NW
+NEWPARA
+ (The) NW (StartPage) NW (routine) NW (gets) NW (called) NW (after) NW (the) NW (save) NW (and) NW (before) NW (the) NW (restore.) NW (So) NW (whatever) NW (garbage) NW (I) NW (throw) NW (into) NW (memory) NW (drawing) NW (the) NW (dagger) NW (will) NW (neatly) NW (get) NW (erased) NW (at) NW (the) NW (end) NW (of) NW (the) NW (page.) NW
+NEWPARA
+ (Also) NW (there) NW (is) NW (the) NW (matter) NW (of) NW (the) NW (path) NW (defined) NW (in) NW (PageShape.) NW (The) NW (dagger) NW (itself) NW (is) NW (some) NW (200) NW (lines) NW (of) NW (curveto) NW (commands!) NW (This) NW (is) NW (way) NW (too) NW (much) NW (curviness) NW (and) NW (way) NW (too) NW (detailed) NW (for) NW (something) NW (as) NW (macroscopic) NW (as) NW (placing) NW (text.) NW (So) NW (I) NW (have) NW (drawn) NW (an) NW (irregular) NW (polygon) NW (around) NW (the) NW (dagger.) NW (The) NW (polygon) NW (works) NW (just) NW (as) NW (well) NW (for) NW (the) NW (simple) NW (blocky) NW (task) NW (of) NW (placing) NW (text) NW (around) NW (the) NW (dagger.) NW (Plus) NW (it) NW (is) NW (a) NW (lot) NW (simpler) NW (because) NW (it) NW (is) NW (made) NW (entirely) NW (of) NW (straight) NW (lines.) NW
+NEWPARA
+ (You) NW (can) NW (view) NW (this) NW (path) NW (by) NW (uncommenting) NW (the) NW (line) NW (where) NW (it) NW (says) NW (\\Uncomment) NW (me") NW (in) NW
+[ 14 false ] NewFont % /cm10tt
+ (page) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (dagger.ps) NW
+[ 1 true ] NewFont % /cm10rm
+ (.) NW
+NEWPARA
+ (Actually) NW (the) NW (description) NW (of) NW (the) NW (dagger) NW (itself) NW (gets) NW (thrown) NW (into) NW (the) NW (In-Between) NW (Page) NW (space) NW (that) NW (is) NW (not) NW (cleaned) NW (up,) NW (because) NW (the) NW (StartPage) NW (routine) NW (is) NW (defined) NW (along) NW (with) NW (the) NW (page) NW (itself) NW (in) NW (the) NW (In-Between) NW (Page) NW (space.) NW
+NEWPARA
+ (One) NW (way) NW (to) NW (get) NW (around) NW (this) NW (I) NW (have) NW (implemented) NW (for) NW
+[ 14 false ] NewFont % /cm10tt
+ (page) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (demon.ps) NW
+[ 1 true ] NewFont % /cm10rm
+ (.) NW (That) NW (is) NW (to) NW (have) NW (the) NW (page) NW (description) NW (just) NW (contain) NW (a) NW (small) NW (bounding) NW (box,) NW (just) NW (like) NW (the) NW (description) NW (for) NW (the) NW (dagger.) NW (The) NW (actual) NW (drawing) NW (of) NW (the) NW (fancy) NW (demon) NW (I) NW (include) NW (in) NW (normality.tex,) NW (once) NW (on) NW (each) NW (of) NW (the) NW (three) NW (pages.) NW (Why) NW (would) NW (I) NW (include) NW (the) NW (file) NW (three) NW (times?) NW (Doesn't) NW (that) NW (make) NW (my) NW (PostScript) NW (file) NW (bigger?) NW
+NEWPARA
+ (Yes,) NW (that) NW (is) NW (certainly) NW (true.) NW (But) NW (the) NW (demon) NW (hack) NW (is) NW (immense,) NW (some) NW (25K) NW (of) NW (raw) NW (PostScript) NW (code.) NW (I) NW (really) NW (don't) NW (want) NW (to) NW (define) NW (a) NW (PostScript) NW (routine) NW (to) NW (draw) NW (all) NW (of) NW (that.) NW (If) NW (I) NW (use) NW (the) NW (include) NW (function,) NW (the) NW (routines) NW (that) NW (draw) NW (the) NW (get) NW (demon) NW (are) NW (executed) NW (without) NW (ever) NW (being) NW (saved.) NW (So) NW (it's) NW (OK) NW (to) NW (have) NW (a) NW (very) NW (big) NW (PostScript) NW (file) NW (as) NW (long) NW (as) NW (the) NW (file) NW (is) NW (a) NW (long) NW (stream) NW (of) NW (commands.) NW (You) NW (start) NW (getting) NW (into) NW (trouble) NW (when) NW (you) NW (define) NW (procedures) NW (with) NW (long) NW (streams) NW (of) NW (commands.) NW
+NEWPARA
+ (Unfortunately,) NW (this) NW (does) NW (indeed) NW (mean) NW (that) NW (I) NW (have) NW (to) NW (\\guess") NW (where) NW (to) NW (place) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (include) NW (demon.ps) NW (command,) NW (once) NW (for) NW (each) NW (of) NW (the) NW (three) NW (pages.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (6.24) NW
+15 HSpace
+ (The) NW (Titlebar) NW (Hack) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (The) NW (best) NW (thing) NW (about) NW (LameTeX) NW (is) NW (that) NW (if) NW (you) NW (want) NW (to) NW (do) NW (some) NW (pretty) NW (radical) NW (stuff,) NW (LameTeX) NW (says) NW (\\OK!) NW (Let's) NW (go) NW (for) NW (it!",) NW (whereas) NW (TeX) NW (and) NW (LaTeX) NW (would) NW (probably) NW (say) NW (\\B-B-But,) NW (why) NW (would) NW (you) NW (want) NW (to) NW (do) NW (that?) NW (That) NW (wouldn't) NW (be...) NW (\(trumpet) NW (flare\)) NW
+[ 12 false ] NewFont % /cm10it
+ (professional!) NW
+[ 1 true ] NewFont % /cm10rm
+ (") NW
+NEWPARA
+ (Here's) NW (a) NW (great) NW (example.) NW (On) NW (the) NW (title) NW (page) NW (there) NW (are) NW (two) NW (big) NW (hacks,) NW (/Weird-Stuff) NW (and) NW (/Title.) NW (Both) NW (of) NW (these) NW (PostScript) NW (programs) NW (take) NW (a) NW (string) NW (off) NW (of) NW (the) NW (stack) NW (and) NW (display) NW (it) NW (in) NW (an) NW (unusual) NW (way.) NW
+NEWPARA
+ (Using) NW (these) NW (two) NW (programs) NW (is) NW (as) NW (simple) NW (as) NW (starting) NW (a) NW (stealth) NW (environment,) NW (starting) NW (a) NW (postscript) NW (environment,) NW (and) NW (then) NW (just) NW (inserting) NW (the) NW (commands!) NW
+NEWPARA
+ (NOTE:) NW (Notice) NW (how) NW (the) NW (LameTeX) NW (title) NW (has) NW (holes) NW (in) NW (it!) NW (An) NW (omen?) NW (A) NW (sign) NW (of) NW (portent) NW (about) NW (the) NW (program) NW (itself?) NW
+NEWPARA
+ (Also) NW (note) NW (that) NW (of) NW (course) NW (I) NW (put) NW (all) NW (of) NW (the) NW (major) NW (graphics) NW (coding) NW (into) NW (the) NW (StartPage) NW (routine,) NW (including) NW (the) NW (definitions,) NW (so) NW (that) NW (when) NW (they) NW (are) NW (no) NW (longer) NW (needed) NW (these) NW (definitions) NW (will) NW (be) NW (erased.) NW (The) NW (definitions) NW (persist) NW (between) NW (the) NW (save) NW (and) NW (restore,) NW (and) NW (since) NW (all) NW (the) NW (printed) NW (text) NW (on) NW (the) NW (page) NW (comes) NW (between) NW (the) NW (save) NW (and) NW (restore,) NW (I) NW (can) NW (still) NW (call) NW (these) NW (routines) NW (from) NW (the) NW (LameTeX) NW (document) NW (as) NW (long) NW (as) NW (I) NW (do) NW (it) NW (before) NW (the) NW (restore) NW (command) NW (associated) NW (with) NW (the) NW (EndPage.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (6.25) NW
+15 HSpace
+ (Page) NW (Number) NW (Hack) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (This) NW (hack) NW (is) NW (the) NW (logical) NW (opposite) NW (of) NW (the) NW (dagger) NW (hack.) NW (With) NW (the) NW (dagger) NW (hack,) NW (I) NW (wanted) NW (to) NW (stuff) NW (a) NW (lot) NW (of) NW (PostScript) NW (code) NW (into) NW (the) NW (/StartPage) NW (routine,) NW (get) NW (it) NW (to) NW (draw) NW (some) NW (stuff,) NW (and) NW (then) NW (destroy) NW (it.) NW
+NEWPARA
+ (With) NW (the) NW (page) NW (number,) NW (I) NW (want) NW (the) NW (page) NW (number) NW (to) NW (be) NW (preserved) NW (across) NW (pages.) NW (It) NW (would) NW (be) NW (a) NW (crime) NW (if) NW (I) NW (changed) NW (page) NW (number) NW (2) NW (to) NW (3,) NW (and) NW (then) NW (when) NW (the) NW (restore) NW (command) NW (came) NW (along) NW (it) NW (reverted) NW (back) NW (to) NW (2!) NW (So) NW (instead) NW (of) NW (placing) NW (this) NW (code) NW (in) NW (/StartPage,) NW (it) NW (goes) NW (in) NW (/EndPage) NW (instead.) NW
+NEWPARA
+ (The) NW (/EndPage) NW (routine) NW (gets) NW (called) NW
+[ 12 false ] NewFont % /cm10it
+ (after) NW
+[ 1 false ] NewFont % /cm10rm
+ (the) NW (restore) NW (from) NW (the) NW (previous) NW (page) NW (and) NW
+[ 12 false ] NewFont % /cm10it
+ (before) NW
+[ 1 false ] NewFont % /cm10rm
+ (the) NW (save) NW (from) NW (the) NW (next) NW (page.) NW (It's) NW (in-between) NW (pages,) NW (and) NW (any) NW (variables) NW (changed) NW (here,) NW (like) NW (pagenumber,) NW (will) NW (remain) NW (around.) NW (Also) NW (the) NW (InitPage) NW (routine) NW (gets) NW (called) NW (before) NW (the) NW (first) NW (save) NW (is) NW (done) NW (for) NW (the) NW (page,) NW (so) NW (it) NW (is) NW (in-between) NW (pages) NW (also.) NW
+NEWPARA
+ (Here's) NW (another) NW (quirk) NW (to) NW (inbetween-pages.) NW (When) NW (you're) NW (on) NW (a) NW (page,) NW (a) NW (special) NW (dictionary) NW (is) NW (used) NW (called) NW (formatdict.) NW (A) NW (dictionary) NW (is) NW (just) NW (a) NW (place) NW (to) NW (store) NW (variables) NW (in) NW (PostScript.) NW (These) NW (variables) NW (are) NW (accessed) NW (directly) NW (like) NW (normal) NW (variables) NW (when) NW (you're) NW (on) NW (a) NW (page.) NW (But) NW (in-between,) NW (you) NW (need) NW (a) NW (special) NW (way) NW (to) NW (get) NW (at) NW (the) NW (variables.) NW (One) NW (exception:) NW (InitPage) NW (does) NW (have) NW (access) NW (to) NW (the) NW (variables) NW (directly,) NW (which) NW (is) NW (how) NW (it) NW (sets) NW (formatdict) NW (variables) NW (like) NW (BM) NW (and) NW (evenodd) NW (without) NW (using) NW (dictionaries.) NW
+NEWPARA
+ (For) NW (example,) NW (if) NW (I) NW (want) NW (the) NW (bottommargin,) NW (I) NW (can't) NW (just) NW (say) NW (\\bottommargin") NW (to) NW (put) NW (the) NW (bottommargin) NW (onto) NW (the) NW (stack.) NW (I) NW (have) NW (to) NW (say) NW (\\formatdict) NW (/bottommargin) NW (get",) NW (which) NW (does) NW (the) NW (same) NW (thing.) NW (If) NW (you) NW (are) NW (a) NW (PostScript) NW (expert,) NW (you'll) NW (know) NW (what) NW (I) NW (say) NW (when) NW (I) NW (note) NW (that) NW (I) NW (do) NW (this) NW (to) NW (keep) NW (plenty) NW (of) NW (room) NW (open) NW (in) NW (the) NW (generic) NW (user) NW (dictionary.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (6.26) NW
+15 HSpace
+ (The) NW (Format) NW (Dictionary) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (The) NW (most) NW (important) NW (variables) NW (in) NW (the) NW (format) NW (dictionary) NW (are:) NW
+NEWPARA
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+/parindent 0 def
+
+
+13.68 BASELINESKIP
+
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (baselineskip) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (number) NW (of) NW (lines) NW (to) NW (skip) NW (between) NW (lines.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (bottommargin) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (margin) NW (at) NW (the) NW (bottom) NW (of) NW (the) NW (page.) NW (The) NW (LaTeX) NW (words) NW (textheight) NW (and) NW (textwidth) NW (don't) NW (mean) NW (anything) NW (to) NW (LameTeX.) NW (They) NW (get) NW (translated) NW (into) NW (left,) NW (right,) NW (top,) NW (and) NW (bottom) NW (margins) NW (on) NW (the) NW (assumption) NW (that) NW (the) NW (textheight) NW (and) NW (textwidth) NW (commands) NW (apply) NW (to) NW (a) NW (normal-sized) NW (8.5x11) NW (inch) NW (paper.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (bslot) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (X) NW (coordinate) NW (of) NW (the) NW (left) NW (hand) NW (side) NW (of) NW (the) NW (current) NW (line.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (coords) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (A) NW (very) NW (complex) NW (representation) NW (of) NW (the) NW (page) NW (path.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (eslot) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (X) NW (coordinate) NW (of) NW (the) NW (right) NW (hand) NW (side) NW (of) NW (the) NW (current) NW (line.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (justify) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (An) NW (integer,) NW (can) NW (be) NW (102) NW (\(or) NW ('f'\)) NW (for) NW (full) NW (justify,) NW (99) NW (\(or) NW ('c'\)) NW (for) NW (centered,) NW (114) NW (\(or) NW ('r'\)) NW (for) NW (flush) NW (right,) NW (or) NW (108) NW (\(or) NW ('l'\)) NW (for) NW (flush) NW (left.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (leftmargin) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (margin) NW (at) NW (the) NW (left) NW (hand) NW (side) NW (of) NW (the) NW (page.) NW (There) NW (is) NW (no) NW (distinction) NW (between) NW (evensidemargin) NW (and) NW (oddsidemargin.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (newfontcmd) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (command) NW (of) NW (the) NW (\\currently) NW (used) NW (font",) NW (which) NW (doesn't) NW (really) NW (have) NW (to) NW (be) NW (a) NW (font) NW (command) NW (at) NW (all.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (para) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (Whether) NW (the) NW (end) NW (of) NW (this) NW (line) NW (will) NW (mark) NW (a) NW (new) NW (paragraph.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (parindent) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (amount) NW (of) NW (indentation) NW (for) NW (the) NW (first) NW (line) NW (of) NW (each) NW (paragraph.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (parskip) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (amount) NW (of) NW (vertical) NW (space) NW (to) NW (skip) NW (in-between) NW (paragraphs.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (rightmargin) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (margin) NW (at) NW (the) NW (right) NW (hand) NW (side) NW (of) NW (the) NW (page.) NW (The) NW (LaTeX) NW (words) NW (textheight) NW (and) NW (textwidth) NW (don't) NW (mean) NW (anything) NW (to) NW (LameTeX.) NW (They) NW (get) NW (translated) NW (into) NW (left,) NW (right,) NW (top,) NW (and) NW (bottom) NW (margins) NW (on) NW (the) NW (assumption) NW (that) NW (the) NW (textheight) NW (and) NW (textwidth) NW (commands) NW (apply) NW (to) NW (a) NW (normal-sized) NW (8.5x11) NW (inch) NW (paper.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (savetype) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (currently) NW (saved) NW (state,) NW (saved) NW (by) NW (the) NW (save) NW (command.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (topmargin) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (margin) NW (at) NW (the) NW (top) NW (of) NW (the) NW (page.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (vspace) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (amount) NW (of) NW (vertical) NW (space) NW (to) NW (skip) NW (for) NW (the) NW (next) NW (paragraph.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (welem) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (number) NW (of) NW (elements) NW (in) NW (the) NW (word) NW (list.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (wlen) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (total) NW (length) NW (of) NW (all) NW (the) NW (words) NW (in) NW (the) NW (word) NW (list,) NW (including) NW (a) NW (single) NW (space) NW (between) NW (each) NW (word.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (wlist) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (word) NW (list) NW (itself.) NW (Feel) NW (free) NW (to) NW (mess) NW (around) NW (with) NW (it.) NW (Please) NW (make) NW (sure) NW (to) NW (set) NW (\\welem",) NW (\\wlen",) NW (and) NW (\\woids") NW (to) NW (appropriate) NW (values) NW (or) NW (it'll) NW (break!) NW (The) NW (correct) NW (way) NW (to) NW (add) NW (stuff) NW (to) NW (wlist) NW (is) NW (put) NW (doing) NW (an) NW (indexed) NW (get) NW (and) NW (put) NW (into) NW (the) NW (array.) NW (The) NW (maximum) NW (length) NW (of) NW (wlist) NW (is) NW (100) NW (elements.) NW (It's) NW (defined) NW (at) NW (the) NW (top) NW (of) NW (format.ps) NW (if) NW (you) NW (want) NW (to) NW (change) NW (it.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (woids) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (number) NW (of) NW (elements) NW (in) NW (the) NW (word) NW (list) NW (that) NW (are) NW (actually) NW (words.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (xpos) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (current) NW (X) NW (position.) NW
+NEWPARA
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/leftmargin 14.4 def
+/rightmargin 36.9 def
+
+/rightmargin 14.4 def
+
+/vspace 13.68 def NEWPARA
+
+
+[ 8 false ] NewFont % /cm10bf
+ (ypos) NW
+13.0 HSpace
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+[ 1 true ] NewFont % /cm10rm
+ (The) NW (current) NW (Y) NW (position) NW (of) NW (this) NW (line.) NW
+12 BASELINESKIP
+
+
+/leftmargin 14.4 def
+/rightmargin 14.4 def
+
+/leftmargin 14.4 def
+/rightmargin 14.4 def
+
+/parindent 18 def
+
+/rightmargin 14.4 def
+
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (6.27) NW
+15 HSpace
+ (The) NW (Icon) NW (Hack) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (Notice) NW (how) NW (each) NW (page) NW (description) NW (has) NW (a) NW (different) NW (definition) NW (for) NW (LeftMarginIcon.) NW (This) NW (is) NW (because) NW (each) NW (page) NW (is) NW (a) NW (little) NW (different) NW (and) NW ("where) NW (to) NW (put) NW (icons) NW (in) NW (the) NW (left) NW (margin") NW (varies) NW (a) NW (little.) NW
+NEWPARA
+ (So) NW (putting) NW (the) NW (little) NW (Wizard) NW (in) NW (the) NW (text) NW (is) NW (as) NW (simple) NW (as) NW (starting) NW (a) NW (stealth) NW (environment,) NW (starting) NW (a) NW (postscript) NW (environment,) NW (and) NW (called) NW (the) NW (/LeftMarginIcon) NW (routine) NW (to) NW (display) NW (the) NW (Wizard.) NW
+NEWPARA
+ (Notice) NW (that) NW (the) NW (LeftMarginIcon) NW (uses) NW (one) NW (\(or) NW (two\)) NW (formatdict) NW (variables:) NW (ypos) NW (\(and) NW (maybe) NW (bpos\).) NW (Because) NW (the) NW (LeftMarginIcon) NW (routine) NW (is) NW (being) NW (called) NW (from) NW (inside) NW (the) NW (page,) NW (there) NW (is) NW (no) NW (need) NW (to) NW (do) NW (a) NW (fancy) NW (dictionary) NW (lookupt) NW (to) NW (get) NW (their) NW (values.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (6.28) NW
+15 HSpace
+ (Doing) NW (it) NW (Yourself) NW (in) NW (PostScript) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (If) NW (you) NW (want) NW (to) NW (schlep) NW (a) NW (word) NW (onto) NW (the) NW (wordlist,) NW (say) NW (\\\(elephantine\)) NW (NW") NW (which) NW (is) NW (the) NW (PostScript) NW (command) NW (that) NW (puts) NW (the) NW (word) NW (\\elephantine") NW (onto) NW (the) NW (word) NW (list.) NW (A) NW (space) NW (will) NW (automatically) NW (be) NW (added) NW (for) NW (you.) NW (Do) NW
+[ 12 false ] NewFont % /cm10it
+ (not) NW
+[ 1 false ] NewFont % /cm10rm
+ (put) NW (a) NW (space) NW (in) NW (your) NW (words.) NW (Instead) NW (use) NW (two) NW (PostScript) NW (calls.) NW (For) NW (example,) NW (do) NW
+[ 12 false ] NewFont % /cm10it
+ (not) NW
+[ 1 false ] NewFont % /cm10rm
+ (say) NW (\\\(ice) NW (cream\)) NW (NW".) NW (Instead) NW (say) NW (\\\(ice\)) NW (NW) NW (\(cream\)) NW (NW".) NW
+NEWPARA
+ (If) NW (you) NW (have) NW (a) NW (really) NW (long) NW (sentence,) NW (then) NW (you) NW (can) NW (just) NW (say) NW (\\\(ice) NW (cream\)) NW (Parse".) NW (Parse) NW (is) NW (a) NW (PostScript) NW (routine) NW (that) NW (will) NW (break) NW (a) NW (string) NW (up) NW (by) NW (spacing) NW (into) NW (\\\(ice\)) NW (NW) NW (\(cream\)) NW (NW".) NW
+NEWPARA
+ (If) NW (you) NW (want) NW (to) NW (schlep) NW (some) NW (horizontal) NW (whitespace) NW (onto) NW (the) NW (wordlist,) NW (you) NW (can) NW (use) NW (the) NW (LaTeX) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (hspace) NW (command.) NW (If) NW (you) NW (really) NW (want) NW (to) NW (do) NW (it) NW (in) NW (postscript,) NW (then) NW (\\54.0) NW (HSpace") NW (is) NW (the) NW (PostScript) NW (command) NW (to) NW (add) NW (54) NW (points) NW (of) NW (horizontal) NW (space) NW (to) NW (the) NW (word) NW (list.) NW (There) NW (are) NW (72) NW (points) NW (in) NW (an) NW (inch.) NW
+NEWPARA
+ (Also,) NW (naturally) NW (you) NW (can) NW (gronk) NW (the) NW (value) NW (of) NW (any) NW (of) NW (the) NW (variables) NW (in) NW (the) NW (fontdict) NW (directly.) NW (Grok-p?) NW (Keep) NW (in) NW (mind) NW (that) NW (if) NW (you) NW (change) NW (them) NW (in) NW (PostScript) NW (instead) NW (of) NW (in) NW (LameTeX,) NW (then) NW (LameTeX) NW (will) NW (\\lose) NW (track") NW (of) NW (them) NW (and) NW (may) NW (not) NW (reset) NW (them) NW (for) NW (you.) NW (You) NW (will) NW (have) NW (to) NW (put) NW (them) NW (back) NW (to) NW (their) NW (original) NW (values) NW (yourself.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (6.29) NW
+15 HSpace
+ (Using) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 11 true ] NewFont % /cm13bf
+ (pscmd) NW (to) NW (Do) NW (It) NW (When) NW (You) NW (Want) NW (It) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (the) NW (white-painting) NW (applied) NW (to) NW (the) NW (whole) NW (line,) NW (not) NW (just) NW (parts) NW (of) NW (it.) NW (You) NW (couldn't) NW (paint) NW (just) NW (part) NW (of) NW (a) NW (line) NW (white.) NW
+NEWPARA
+ (Well,) NW (here's) NW (how.) NW (I'm) NW (going) NW (to) NW (tell) NW (you) NW (twice.) NW (This) NW (section) NW (is) NW (the) NW (easy) NW (slick) NW (way.) NW (The) NW (next) NW (section) NW (tells) NW (you) NW (the) NW
+[ 12 false ] NewFont % /cm10it
+ (same) NW (thing) NW
+[ 1 true ] NewFont % /cm10rm
+ (,) NW (if) NW (you) NW (want) NW (to) NW (get) NW (your) NW (hands) NW (dirty,) NW (which) NW (I) NW (encourage.) NW
+NEWPARA
+ (Anyway,) NW (for) NW (the) NW (easy) NW (way,) NW (take) NW (a) NW (look) NW (at) NW
+[ 14 false ] NewFont % /cm10tt
+ (example5.tex) NW
+[ 1 true ] NewFont % /cm10rm
+ (.) NW
+NEWPARA
+ (Here) NW (I) NW (define) NW (a) NW (command) NW (/Smiley) NW (that) NW (alternately) NW (either) NW (draws) NW (a) NW (picture) NW (without) NW (changing) NW (the) NW (currentpoint,) NW (or) NW (calls) NW (READJUST.) NW
+NEWPARA
+ (Sometimes) NW (LameTeX) NW (will) NW (be) NW (building) NW (a) NW (line) NW (made) NW (out) NW (of) NW (10) NW (point) NW (type) NW (when) NW (suddenly) NW (the) NW (user) NW (wants) NW (to) NW (get) NW (30) NW (point) NW (type.) NW (Well,) NW (since) NW (the) NW (line) NW (started) NW (on) NW (this) NW (10) NW (point) NW (line,) NW (all) NW (the) NW (30) NW (point) NW (letters) NW (are) NW (too) NW (tall) NW (and) NW (will) NW (overwrite) NW (the) NW (previous) NW (line) NW (just) NW (above) NW (the) NW (current) NW (line!) NW (There) NW (is) NW (a) NW (PostScript) NW (command) NW (that) NW (LameTeX) NW (calls) NW (automatically) NW (when) NW (such) NW (oopses) NW (occur.) NW (That's) NW (/READJUST.) NW (It) NW (takes) NW (a) NW (vertical) NW (length) NW (to) NW (skip) NW (from) NW (the) NW (stack,) NW (in) NW (points.) NW (There) NW (are) NW (72) NW (points) NW (in) NW (an) NW (inch.) NW (I) NW (have) NW (some) NW (command) NW (\\in") NW (defined) NW (somewhere) NW (that) NW (just) NW (multiplies) NW (any) NW (number) NW (by) NW (72) NW (to) NW (convert) NW (it) NW (into) NW (points.) NW
+NEWPARA
+ (You) NW (can) NW (call) NW (/READJUST) NW (yourself) NW (no) NW (problem.) NW (For) NW (example,) NW (I) NW (do) NW (it) NW (here) NW (in) NW (example5.tex) NW (to) NW (make) NW (the) NW (line) NW (tall) NW (enough) NW (to) NW (accept) NW (the) NW (smiley) NW (face.) NW
+NEWPARA
+ (Don't) NW (forget!) NW (At) NW (the) NW (end) NW (of) NW (every) NW (page,) NW (everything) NW (gets) NW (wiped) NW (by) NW (the) NW (PostScript) NW
+[ 14 false ] NewFont % /cm10tt
+ (restore) NW
+[ 1 false ] NewFont % /cm10rm
+ (routine.) NW (Here) NW (Smiley) NW (is) NW (defined) NW (On-Page) NW (in) NW (the) NW (middle) NW (of) NW (page) NW (1.) NW (On) NW (page) NW (2) NW (it) NW (would) NW (be) NW (undefined.) NW (If) NW (you) NW (want) NW (your) NW (routine) NW (to) NW (hang) NW (around) NW (for) NW (page) NW (two,) NW (you) NW (either) NW (need) NW (to) NW (define) NW (it) NW (In-Between) NW (Pages) NW (\(the) NW (bad) NW (wicked) NW (way\)) NW (or) NW (define) NW (it) NW (in) NW (/StartPage) NW (\(the) NW (good) NW (way) NW (of) NW (lightness) NW (and) NW (being\).) NW
+NEWPARA
+ (Notice) NW (that) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (pscmd) NW (command) NW (in) NW (placed) NW (inside) NW (braces.) NW (This) NW (delimits) NW (what) NW (is) NW (now) NW (the) NW (\\Smiley") NW (environment.) NW (For) NW (example,) NW (if) NW (Smiley) NW (had) NW (changed) NW (the) NW (font,) NW (the) NW (font) NW (change) NW (would) NW (have) NW (remained) NW (in) NW (effect) NW (until) NW (the) NW (end-brace) NW (delimiter.) NW (The) NW (way) NW (this) NW (is) NW (implemented) NW (is) NW (really) NW (for) NW (fonts,) NW (and) NW (being) NW (able) NW (to) NW (add) NW (your) NW (own) NW (PostScript) NW (functions) NW (is) NW (not) NW (something) NW (I) NW (had) NW (envisioned) NW (at) NW (first.) NW (I) NW (will) NW (fix) NW (this) NW (later,) NW (but) NW (for) NW (the) NW (time) NW (being) NW (realize) NW (that) NW (your) NW (function) NW (Smiley,) NW (if) NW (it) NW (not) NW (delimited,) NW (will) NW (be) NW (executed) NW (at) NW (the) NW (beginning) NW (of) NW (each) NW (new) NW (line.) NW (Also,) NW (any) NW (font) NW (changes) NW (like) NW (italics) NW (or) NW (boldface) NW (will) NW (kill) NW (your) NW (Smiley) NW (environment.) NW (Try) NW (taking) NW (out) NW (the) NW (braces) NW (around) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (pscmd) NW (and) NW (you) NW (will) NW (see) NW (what) NW (I) NW (mean.) NW
+NEWPARA
+ (I) NW (hope) NW (you) NW (can) NW (see) NW (how) NW (you) NW (could) NW (use) NW (this) NW (to) NW (include) NW (really) NW (big) NW (pictures,) NW (not) NW (just) NW (small) NW (smiley) NW (faces.) NW (You) NW (get) NW (to) NW (have) NW (complete) NW (control) NW (over) NW (how) NW (big) NW (the) NW (picture) NW (is,) NW (by) NW (passing) NW (its) NW (width) NW (and) NW (height) NW (to) NW (READJUST.) NW (Alternately,) NW (you) NW (can) NW (modify) NW (the) NW (wlist) NW (array) NW (directly) NW (if) NW (you) NW (want) NW (something) NW (special.) NW (In) NW (later) NW (versions,) NW (the) NW (READJUST) NW (command) NW (will) NW (be) NW (able) NW (to) NW (handle) NW (non-rectangular) NW (boundaries) NW (just) NW (like) NW (pages) NW (do.) NW
+NEWPARA
+ (There) NW (is) NW (no) NW (way) NW (to) NW (do) NW (this) NW (currently) NW (unless) NW (you) NW (modify) NW (the) NW (Page) NW (on) NW (the) NW (fly) NW (by) NW (defining) NW (the) NW (\\current) NW (page") NW (as) NW (something) NW (new) NW (\(including) NW (the) NW (box) NW (around) NW (the) NW (Smiley") NW (and) NW (forcing) NW (a) NW (re-assessment) NW (of) NW (the) NW (dimensions) NW (of) NW (the) NW (page.) NW
+NEWPARA
+ (Here) NW (are) NW (the) NW (rules) NW (for) NW (a) NW (routine) NW (that) NW (you) NW (use) NW (with) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (pscmd:) NW
+NEWPARA
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/leftmargin 36.9 def
+/rightmargin -8.10001 def
+
+/rightmargin 14.4 def
+
+
+13.68 BASELINESKIP
+
+/parindent 0 def
+
+/vspace 13.68 def NEWPARA
+
+ (1.) ENUMERATE
+ (When) NW (your) NW (routine) NW (is) NW (called,) NW (the) NW (currentpoint) NW (will) NW (be) NW (set) NW (to) NW (where) NW (the) NW (next) NW (word) NW (would) NW (normally) NW (be) NW (placed.) NW (Make) NW (sure) NW (that) NW (the) NW (currentpoint) NW (is) NW (defined) NW (when) NW (your) NW (routine) NW (is) NW (finished.) NW (You) NW (can) NW (accomplish) NW (this) NW (neatly) NW (by) NW (just) NW (doing) NW (a) NW (Postscript) NW (\\gsave") NW (at) NW (the) NW (beginning) NW (of) NW (your) NW (routine) NW (and) NW (a) NW (\\grestore") NW (afterwards.) NW
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (2.) ENUMERATE
+ (Don't) NW (forget) NW (that) NW (you) NW (have) NW (access) NW (to) NW (the) NW (entire) NW (word) NW (list) NW (and) NW (format) NW (dictionary.) NW
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (3.) ENUMERATE
+ (When) NW (your) NW (routine) NW (gets) NW (called,) NW (either) NW (false) NW (or) NW (true) NW (will) NW (be) NW (on) NW (the) NW (stack.) NW (The) NW (value) NW (will) NW (be) NW (\\false") NW (if) NW (LameTeX) NW (is) NW (building) NW (the) NW (word) NW (list) NW (and) NW (\\true") NW (if) NW (LameTeX) NW (is) NW (printing) NW (the) NW (word) NW (list.) NW (You) NW (gotta) NW (either) NW (use) NW (this) NW (or) NW (pop) NW (if) NW (off) NW (the) NW (stack) NW (by) NW (making) NW (the) NW (first) NW (command) NW (in) NW (your) NW (PostScript) NW (routine) NW (be) NW (\\pop".) NW
+NEWPARA
+
+/vspace 13.68 def NEWPARA
+
+ (4.) ENUMERATE
+ (When) NW (you) NW (split) NW (up) NW (a) NW (word,) NW (like) NW (by) NW (saying) NW
+[ 14 false ] NewFont % /cm10tt
+ (Will) NW (you) NW (be) NW (my) NW (SWEET) NW
+[ 0 false ] NewFont (\\) NW
+
+[ 14 false ] NewFont % /cm10tt
+ (pscmd) NW (/drawheart) NW (HEART?) NW
+[ 1 false ] NewFont % /cm10rm
+ (LameTeX) NW (will) NW (make) NW (an) NW (attempt) NW (to) NW (put) NW (Sweet) NW (and) NW (Heart) NW (all) NW (in) NW (the) NW (same) NW (word.) NW (It) NW (won't) NW (try) NW (really) NW (hard) NW (though.) NW (There) NW (is) NW (no) NW (concept) NW (of) NW (\\glue") NW (in) NW (LameTeX.) NW (I) NW (gotta) NW (add) NW (this) NW (sometime) NW (soon.) NW (So) NW (if) NW (a) NW (pagebreak) NW (occurs,) NW (or) NW (a) NW (line) NW (break,) NW (LameTeX) NW (will) NW (gladly) NW (put) NW (SWEET) NW (at) NW (the) NW (end) NW (of) NW (one) NW (line) NW (and) NW (HEART) NW (at) NW (the) NW (beginning) NW (of) NW (another.) NW (Oops!) NW
+12 BASELINESKIP
+
+
+/leftmargin 14.4 def
+/rightmargin 14.4 def
+
+/leftmargin 14.4 def
+/rightmargin 14.4 def
+
+/parindent 18 def
+
+/rightmargin 14.4 def
+
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (6.30) NW
+15 HSpace
+ (Behind) NW (the) NW (Scenes) NW (of) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 11 true ] NewFont % /cm13bf
+ (pscmd) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (Remember) NW (the) NW (\\Word) NW (List"?) NW (You) NW (too) NW (can) NW (schlep) NW (things) NW (onto) NW (the) NW (word) NW (list.) NW (This) NW (is) NW (exactly) NW (what) NW (the) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (pscmd) NW (does,) NW (but) NW (if) NW (for) NW (some) NW (reason) NW (it) NW (doesn't) NW (work) NW (or) NW (you) NW (want) NW (to) NW (try) NW (fiddling) NW (with) NW (the) NW (PostScript) NW (code) NW (directly,) NW (it's) NW (simple.) NW (Here's) NW (how.) NW
+NEWPARA
+ (The) NW (most) NW (interesting) NW (part) NW (is) NW (schlepping) NW (a) NW (command) NW (onto) NW (the) NW (word) NW (list.) NW (Take) NW (a) NW (look) NW (at) NW (example3.tex.) NW
+NEWPARA
+ (To) NW (schlep) NW (a) NW (command) NW (onto) NW (the) NW (word) NW (list,) NW (I) NW (have) NW (to) NW (first) NW (register) NW (the) NW (command) NW (by) NW (placing) NW (it) NW (onto) NW (the) NW (end) NW (of) NW (the) NW
+[ 8 false ] NewFont % /cm10bf
+ (fontnames) NW
+[ 1 false ] NewFont % /cm10rm
+ (array.) NW (From) NW (now) NW (on) NW (I) NW (just) NW (refer) NW (to) NW (this) NW (command) NW (by) NW (its) NW (number) NW (which) NW (I) NW (store) NW (in) NW (the) NW (variable) NW (FUNKYnum.) NW
+NEWPARA
+ (The) NW (actual) NW (syntax) NW (for) NW (schlepping) NW (a) NW (command) NW (onto) NW (the) NW (world) NW (list) NW (is) NW (to) NW (say) NW (\\) NW ([) NW (FUNKYnum) NW (false) NW (]) NW (NewFont",) NW (where) NW (FUNKYnum) NW (is) NW (an) NW (index) NW (to) NW (my) NW (function) NW (in) NW (the) NW
+[ 8 false ] NewFont % /cm10bf
+ (fontnames) NW
+[ 1 false ] NewFont % /cm10rm
+ (array,) NW (and) NW (the) NW (boolean) NW (is) NW (false) NW (if) NW (I) NW (want) NW (LameTeX) NW (to) NW (add) NW (a) NW (space) NW (after) NW (this) NW (NewFont) NW (command.) NW (If) NW (the) NW (boolean) NW (is) NW (false) NW (then) NW (LameTeX) NW (puts) NW (no) NW (space) NW (between) NW (a) NW (word) NW (before) NW (the) NW (NewFont) NW (command) NW (and) NW (a) NW (word) NW (afterwards.) NW
+NEWPARA
+ (The) NW (line) NW (\\) NW ([) NW (temp) NW (false) NW (]) NW (NewFont") NW (is) NW (important.) NW (Once) NW (I) NW (have) NW (started) NW (playing) NW (God) NW (with) NW (the) NW (LameTeX) NW (PostScript) NW (code,) NW (I) NW (should) NW (remember) NW (to) NW (put) NW (the) NW (font) NW (back) NW (to) NW (the) NW (way) NW (it) NW (was.) NW
+NEWPARA
+ (I) NW (hope) NW (it's) NW (obvious) NW (that) NW (the) NW (routine) NW (would't) NW (have) NW (to) NW (be) NW (a) NW (Font-changing) NW (routine) NW (at) NW (all.) NW (It) NW (could) NW (be) NW (any) NW (routine.) NW (Here) NW (are) NW (some) NW (things) NW (to) NW (keep) NW (in) NW (mind) NW (though.) NW (Remember) NW (the) NW (flow) NW (chart) NW (from) NW (the) NW (chapter) NW (on) NW (pages?) NW (The) NW (routine) NW (will) NW (be) NW (executed) NW
+[ 12 false ] NewFont % /cm10it
+ (twice) NW
+[ 1 true ] NewFont % /cm10rm
+ (,) NW (once) NW (when) NW (the) NW (word) NW (list) NW (is) NW (being) NW (compiled,) NW (and) NW (once) NW (when) NW (the) NW (word) NW (list) NW (is) NW (being) NW (printed.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (6.31) NW
+15 HSpace
+ (The) NW (Wigglies) NW (Hack:) NW (using) NW (SHOWIT) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (I) NW (have) NW (written) NW (a) NW (PostScript) NW (hack) NW (called) NW
+[ 14 false ] NewFont % /cm10tt
+ (format.ps) NW
+[ 1 false ] NewFont % /cm10rm
+ (that) NW (does) NW (all) NW (the) NW (major) NW (formatting) NW (for) NW (LameTeX.) NW (The) NW (command) NW (that) NW (it) NW (uses) NW (to) NW (show) NW (words) NW (is) NW (the) NW (SHOWIT) NW (routine,) NW (which) NW (is) NW (defined) NW (as) NW (follows:) NW (\\/SHOWIT) NW
+[ 0 false ] NewFont ({) NW
+
+[ 1 false ] NewFont % /cm10rm
+ (show) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+ (bind) NW (def".) NW
+NEWPARA
+ (Feel) NW (free) NW (to) NW (redefine) NW (this) NW (routine) NW (if) NW (you) NW (want) NW (to) NW (change) NW (the) NW (way) NW (the) NW (words) NW (look) NW (in) NW (any) NW (way.) NW (The) NW (routine) NW (will) NW (be) NW (called) NW (with) NW (the) NW (currentpoint) NW (set) NW (to) NW (the) NW (appropriate) NW (place) NW (and) NW (the) NW (string) NW (to) NW (be) NW (printed) NW (on) NW (the) NW (stack.) NW
+NEWPARA
+ (I) NW (wrote) NW (a) NW (cool) NW (hack) NW (based) NW (on) NW (this.) NW (Try) NW (it) NW (out) NW (with) NW (example4.tex.) NW (And) NW (don't) NW (forget:) NW
+[ 8 false ] NewFont % /cm10bf
+ (When) NW (you) NW (play) NW (God) NW (with) NW (LameTeX's) NW (PostScript) NW (output,) NW (be) NW (sure) NW (to) NW (put) NW (things) NW (back!) NW
+[ 1 false ] NewFont % /cm10rm
+ (When) NW (I) NW (have) NW (finished) NW (hacking) NW (up) NW (SHOWIT) NW (with) NW (my) NW (own) NW (definition,) NW (I) NW (put) NW (it) NW (back) NW (by) NW (saying) NW (\\/SHOWIT) NW
+[ 0 false ] NewFont ({) NW
+
+[ 1 false ] NewFont % /cm10rm
+ (show) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+ (bind) NW (def".) NW
+NEWPARA
+ (You) NW (can't) NW (do) NW (this) NW (stuff) NW (with) NW (TeX) NW (macros!) NW (\(Although) NW (you) NW (could) NW (argue) NW (I) NW (suppose) NW (that) NW (only) NW (a) NW (loony) NW (would) NW (try...\)) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (6.32) NW
+15 HSpace
+ (Forcing) NW (Word) NW (Positions) NW (with) NW (NW) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (NW) NW (is) NW (defined) NW (as) NW (follows:) NW (\\/NW) NW (NextWord) NW (bind) NW (def".) NW (NextWord) NW (is) NW (the) NW (routine) NW (that) NW (is) NW (called) NW (repeatedly,) NW (once) NW (for) NW (each) NW (word,) NW (to) NW (place) NW (the) NW (words) NW (in) NW (the) NW (word) NW (list.) NW (Feel) NW (free) NW (to) NW (modify) NW (this) NW (routine) NW (too) NW (if) NW (you) NW (want) NW (to) NW (perform) NW (some) NW (operation) NW (to) NW (the) NW (strings) NW (before) NW (they) NW (get) NW (included) NW (in) NW (the) NW (word) NW (list.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (6.33) NW
+15 HSpace
+ (The) NW (Skew) NW (Page) NW (Hack) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (Look) NW (in) NW (the) NW (files) NW
+[ 14 false ] NewFont % /cm10tt
+ (starting.tex) NW
+[ 1 false ] NewFont % /cm10rm
+ (and) NW
+[ 14 false ] NewFont % /cm10tt
+ (page) NW
+[ 0 true ] NewFont (_) NW
+
+[ 14 true ] NewFont % /cm10tt
+ (skew.ps) NW
+[ 1 false ] NewFont % /cm10rm
+ (for) NW (an) NW (example) NW (of) NW (diagonal) NW (text.) NW (LameTeX) NW (is) NW (not) NW (really) NW (capable) NW (of) NW (placing) NW (text) NW (in) NW (any) NW (way) NW (except) NW (horizontally) NW (\(unless) NW (you) NW (redefine) NW (the) NW (SHOWIT) NW (and) NW (NW) NW (routines\).) NW (So) NW (therefore,) NW (in) NW (order) NW (to) NW (get) NW (diagonal) NW (text,) NW (the) NW (page) NW (must) NW (be) NW (slanted.) NW (So) NW (although) NW (it) NW (looks) NW (to) NW (the) NW (user) NW (like) NW (the) NW (text) NW (is) NW (slanted) NW (and) NW (the) NW (page) NW (is) NW (an) NW (upright) NW (rectangle,) NW (to) NW (LameTeX) NW (it) NW (appears) NW (as) NW (if) NW (the) NW (page) NW (is) NW (a) NW (very) NW (wide) NW (page) NW (in) NW (the) NW (shape) NW (of) NW (a) NW (diamond) NW (on) NW (its) NW (end.) NW (And) NW (the) NW (text) NW (appears) NW (horizontally.) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (6.34) NW
+15 HSpace
+ (The) NW (Checkerboard) NW (Hack) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (Check) NW (out) NW
+[ 14 false ] NewFont % /cm10tt
+ (example6.tex) NW
+[ 1 true ] NewFont % /cm10rm
+ (.) NW (Here) NW (is) NW (an) NW (example) NW (of) NW (two) NW (virtual) NW (pages) NW (being) NW (placed) NW (on) NW (a) NW (single) NW (physical) NW (8.5x11) NW (inch) NW (piece) NW (of) NW (paper,) NW (using) NW (a) NW (variable) NW (flip) NW (to) NW (determine) NW (which) NW (virtual) NW (page) NW (comes) NW (\\next".) NW (I) NW (hope) NW (you) NW (can) NW (see) NW (that) NW (it) NW (wouldn't) NW (be) NW (hard) NW (to) NW (define) NW (several) NW (virtual) NW (pages) NW (on) NW (a) NW (single) NW (physical) NW (page) NW (\(like) NW (for) NW (making) NW (index) NW (cards) NW (or) NW (mailing) NW (labels\).) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 11 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (6.35) NW
+15 HSpace
+ (Bugs?) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 56 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (There) NW (are) NW (no) NW (bugs) NW (in) NW (LameTeX.) NW
+/rightmargin 165.6 def
+
+/leftmargin 90 def
+/rightmargin 90 def
+
+/leftmargin 90 def
+/rightmargin 90 def
+
+ENDPAGE
+
+end
+%! page_skew.ps - A page turned at at 30 degree angle
+%% This is a LameTeX Page Description File written in PostScript.
+%% Postscript Code by Jon Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+
+%%%%%%%%%%%%%%%% width height angle left bot Skew-Page %%%%%%%%%%%%%%%%%%%%%%
+% Draws a twisted page at ang degrees, given margins and size
+/Skew-Page
+{
+ % wp hp ang lp bp
+ moveto dup cos exch sin 2 copy % wp hp cosang sinang cosang sinang
+ 5 index mul exch 6 -1 roll mul % hp cosang sinang sinwpang coswpang
+ 5 2 roll 2 index mul neg 3 1 roll mul % sinwpang coswpang -sinhpang coshpang
+ 2 index 4 index rlineto % sinwpang coswpang -sinhpang coshpang
+ rlineto neg exch neg rlineto % -empty-
+ closepath
+} bind def
+
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ bslot 50 sub ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+/PageShape
+{
+ 8.5 in 11 in 30 0 0 Skew-Page
+ currentflat 8 mul
+} bind def
+
+% Anything to do when a new page is started
+/StartPage
+{
+ 0 0 moveto -30 rotate
+} bind def
+
+% Anything to do when a new page is ended
+/EndPage
+{
+ pagenumber 4 string cvs
+ dup stringwidth pop 8.5 in
+ formatdict /rightmargin get sub
+ formatdict /leftmargin get sub
+ exch sub 2 div formatdict /leftmargin get add
+ formatdict /bottommargin get 2 div moveto show
+ /pagenumber pagenumber 1 add def
+ showpage % A new page here really does mean start a new page.
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+% Page-specific defaults that describe the page.
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout false def % true means fill outside shape. false is inside.
+
+ /in {72 mul} def
+ /BM 0 def % Bottom Margin
+ /TM 11 in def % Top Margin
+ /LM 0 def % Left Margin
+ /RM 8.5 in def % Right Margin
+
+ userdict /pagenumber known not % Initialize pagenumber if not done already
+ { userdict begin /pagenumber 1 def end} if
+} bind def
+
+InitPage % Just loading this file initializes the page.
+formatdict begin
+
+STARTPAGE
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+21.6 BASELINESKIP
+
+[ 9 false ] NewFont % /cm18bf
+
+
+/vspace 112.5 def NEWPARA
+ (Chapter) NW (7) NW
+26.4 BASELINESKIP
+
+/vspace 46.6 def NEWPARA
+
+[ 10 false ] NewFont % /cm22bf
+ (The) NW (Future) NW (of) NW (LameTeX) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 118.8 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (Most) NW (of) NW (my) NW (effort) NW (was) NW (to) NW (make) NW (this) NW (understand) NW (LaTeX) NW (code.) NW (Now) NW (I) NW (can) NW (concentrate) NW (on) NW (other) NW (functionality,) NW (like) NW (making) NW (it) NW (work) NW (better,) NW (understand) NW (more) NW (LaTeX) NW (functions,) NW (and) NW (-) NW (best) NW (of) NW (all) NW (-) NW (providing) NW (easier) NW (ways) NW (to) NW (include) NW (PostScript) NW (hacks) NW (into) NW (the) NW (document.) NW
+NEWPARA
+ (I) NW (want) NW (to) NW (try) NW (out) NW (some) NW (experiments) NW (with) NW (on-line) NW (document) NW (viewing.) NW (There's) NW (no) NW (reason) NW (why) NW (a) NW (TeX-like) NW (language) NW (like) NW (the) NW (Stealth) NW (Commands) NW (couldn't) NW (drive) NW (PostScript) NW (animation) NW (through) NW (a) NW (previewer) NW (or) NW (let) NW (the) NW (user) NW (include) NW (audio) NW (in) NW (the) NW (document.) NW
+NEWPARA
+ (Although) NW (I) NW (love) NW (PostScript) NW (dearly,) NW (more) NW (coding) NW (really) NW (should) NW (go) NW (into) NW (C++.) NW (I'll) NW (let) NW (PostScript) NW (do) NW (all) NW (the) NW (fancy) NW (graphics,) NW (but) NW (C++) NW (should) NW (do) NW (more) NW (of) NW (the) NW (decision) NW (making,) NW (because) NW (it) NW (is) NW (very) NW (difficult) NW (to) NW (write) NW (and) NW (maintain) NW (large) NW (programs) NW (in) NW (Postscript) NW (version) NW (1.0.) NW (I) NW (would) NW (make) NW (use) NW (of) NW (some) NW (fancy) NW (PostScript) NW (interpreter) NW (to) NW (do) NW (some) NW (of) NW (the) NW (PostScript) NW (processing) NW (while) NW (processing) NW (the) NW (input) NW (file.) NW
+NEWPARA
+ (LameTeX) NW (should) NW (in) NW (general) NW (produce) NW (a) NW (smaller) NW (output.) NW (I) NW (would) NW (like) NW (to) NW (write) NW (a) NW (compress) NW (mode) NW (to) NW (make) NW (sleek) NW (uncommented) NW (PostScript.) NW
+NEWPARA
+ (There) NW (is) NW (no) NW (glue) NW (in) NW (LameTeX) NW (currently,) NW (which) NW (means) NW (that) NW (two) NW (words) NW (that) NW (happen) NW (to) NW (be) NW (side) NW (by) NW (side) NW (may) NW (have) NW (a) NW (pagebreak) NW (or) NW (a) NW (linebreak) NW (in-between) NW (them.) NW (There) NW (is) NW (no) NW (way) NW (to) NW (prevent) NW (this) NW (in) NW (the) NW (current) NW (version) NW (of) NW (LameTeX.) NW
+NEWPARA
+ (You) NW (can't) NW (use) NW (a) NW (previewer) NW (program) NW (that) NW (looks) NW (for) NW (the) NW (fancy) NW (Adobe) NW (PageBreak) NW (PostScript) NW (comment.) NW (Sorry.) NW (The) NW (PostScript) NW (program) NW (doesn't) NW (\\know") NW (where) NW (the) NW (page) NW (breaks) NW (are) NW (going) NW (to) NW (come) NW (until) NW (run) NW (time.) NW
+NEWPARA
+ (I) NW (would) NW (like) NW (to) NW (write) NW (better) NW (tools) NW (and) NW (better) NW (documentation) NW (so) NW (that) NW (people) NW (unfamiliar) NW (with) NW (PostScript) NW (can) NW (still) NW (try) NW (out) NW (a) NW (few) NW (hacks) NW (like) NW (grayscale) NW (or) NW (font) NW (changing.) NW
+NEWPARA
+ (Obviously,) NW (LameTeX) NW (should) NW (handle) NW (spacing) NW (better.) NW (It) NW (should) NW (do) NW (vertical) NW (alignment.) NW (LameTeX) NW (should) NW (be) NW (smart) NW (enough) NW (to) NW (handle) NW (the) NW (TeX) NW (hyphenation) NW (dictionary) NW (and) NW (be) NW (able) NW (to) NW (handle) NW (the) NW (fonts) NW (directly,) NW (which) NW (are) NW (currently) NW (being) NW (done) NW (in) NW (a) NW (big) NW (hack) NW (that) NW (barely) NW (works.) NW
+NEWPARA
+ (Using) NW (normal) NW (PostScript) NW (scaleable) NW (fonts) NW (should) NW (be) NW (simple) NW (and) NW (let) NW (the) NW (user) NW (save) NW (a) NW (lot) NW (of) NW (room) NW (in) NW (the) NW (PostScript) NW (output) NW (file.) NW
+NEWPARA
+ (The) NW (user) NW (should) NW (be) NW (able) NW (to) NW (define) NW (new) NW (LameTeX) NW (commands.) NW (This) NW (includes) NW (normal) NW (ones) NW (attach) NW (to) NW (LaTeX) NW (made) NW (with) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (newcommand) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (newenvironment) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (newtheorem,) NW (and) NW (special) NW (Stealth) NW (ones) NW (hooked) NW (either) NW (to) NW (C,) NW (C++,) NW (or) NW (PostScript) NW (code.) NW
+NEWPARA
+ (I'm) NW (hoping) NW (to) NW (hear) NW (a) NW (slew) NW (of) NW (requests) NW (for) NW (enhancements) NW (and) NW (\(ahem\)) NW (bug) NW (fixes!) NW (So) NW (I) NW (should) NW (have) NW (plenty) NW (to) NW (do.) NW
+NEWPARA
+ (I'm) NW (going) NW (to) NW (have) NW (to) NW (do) NW (some) NW (investigation) NW (to) NW (see) NW (if) NW (I) NW (can) NW (\\trick") NW (LaTeX) NW (or) NW (TeX) NW (into) NW (giving) NW (me) NW (a) NW (raw) NW (paragraph) NW (with) NW (a) NW (bounding) NW (box.) NW (If) NW (so,) NW (then) NW (I) NW (could) NW (hook) NW (up) NW (a) NW (great) NW (deal) NW (of) NW (functionality) NW (like) NW (math) NW (mode) NW (by) NW (fooling) NW (TeX) NW (into) NW (making) NW (the) NW (output) NW (and) NW (then) NW (snarfing) NW (the) NW (result.) NW
+NEWPARA
+ (The) NW (token) NW (parsing) NW (is) NW (done) NW (all) NW (wrong) NW (and) NW (should) NW (be) NW (cleaned) NW (up) NW (and) NW (made) NW (to) NW (model) NW (LaTeX) NW (parsing.) NW
+NEWPARA
+ (TeX) NW (is) NW (a) NW (trademark) NW (of) NW (the) NW (American) NW (Mathematical) NW (Society.) NW
+/vspace 12 def NEWPARA
+ (PostScript) NW (is) NW (a) NW (trademark) NW (of) NW (Adobe) NW (Systems) NW (Incoporated.) NW
+/vspace 12 def NEWPARA
+ (LameTeX) NW (ain't) NW (a) NW (trademark!) NW
+ENDPAGE
+
+STARTPAGE
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+21.6 BASELINESKIP
+
+[ 9 false ] NewFont % /cm18bf
+
+
+/vspace 112.5 def NEWPARA
+ (Chapter) NW (8) NW
+26.4 BASELINESKIP
+
+/vspace 46.6 def NEWPARA
+
+[ 10 false ] NewFont % /cm22bf
+ (Errors) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 118.8 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (If) NW (you) NW (get) NW (an) NW (error) NW (like) NW (this) NW (\\stackoverflow) NW (offending) NW (command:) NW (pathforall) NW (Stack:) NW ([) NW (/coords) NW (-mark-) NW (.....) NW (]) NW (",) NW (this) NW (means) NW (that) NW (the) NW (path) NW (you) NW (are) NW (using) NW (for) NW (the) NW (page) NW (is) NW (very) NW (curved) NW (and) NW (not) NW (particularly) NW (flat.) NW (PostScript) NW (is) NW (having) NW (trouble) NW (keeping) NW (track) NW (of) NW (all) NW (the) NW (points!) NW (You) NW (should) NW (double) NW (or) NW (triple) NW (the) NW (setflat) NW (value.) NW
+NEWPARA
+ (If) NW (you) NW (get) NW (an) NW (error) NW (undefined) NW (in) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (end,) NW (you) NW (ended) NW (a) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (begin) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (postscript) NW
+[ 0 false ] NewFont (}) NW
+
+[ 1 false ] NewFont % /cm10rm
+ (command) NW (with) NW (something) NW (else) NW (that) NW (was) NW (not) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (end) NW
+[ 0 true ] NewFont ({) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (postscript) NW
+[ 0 true ] NewFont (}) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (.) NW
+NEWPARA
+ (A) NW (lot) NW (of) NW (problems) NW (come) NW (from) NW (having) NW (your) NW (margins) NW (too) NW (wide!) NW (Make) NW (sure) NW (that) NW (you) NW (margins) NW (are) NW (small) NW (enough) NW (so) NW (that) NW (your) NW (text) NW (will) NW (fit) NW (around) NW (the) NW (pictures.) NW
+NEWPARA
+ (If) NW (you) NW (get) NW (an) NW (error) NW (\\false) NW (false) NW (false) NW (false) NW (false) NW (false) NW (false) NW (stack) NW (overflow") NW (then) NW (you're) NW (using) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (pscmd) NW (on) NW (a) NW (routine) NW (that) NW (doesn't) NW (handle) NW (the) NW (incoming) NW (boolean.) NW (Just) NW (add) NW (a) NW (PostScript) NW
+[ 14 false ] NewFont % /cm10tt
+ (pop) NW
+[ 1 false ] NewFont % /cm10rm
+ (to) NW (the) NW (beginning) NW (of) NW (the) NW (PostScript) NW (routine) NW (you) NW (call) NW (with) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (pscmd.) NW
+ENDPAGE
+
+STARTPAGE
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+21.6 BASELINESKIP
+
+[ 9 false ] NewFont % /cm18bf
+
+
+/vspace 112.5 def NEWPARA
+ (Chapter) NW (9) NW
+26.4 BASELINESKIP
+
+/vspace 46.6 def NEWPARA
+
+[ 10 false ] NewFont % /cm22bf
+ (Commands) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 118.8 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (This) NW (is) NW (the) NW (complete) NW (list) NW (of) NW (commands) NW (that) NW (LameTeX) NW (understands.) NW (It's) NW (formatted) NW (in) NW (an) NW (easy) NW (to) NW (read) NW (alphabetically) NW (sorted) NW (list.) NW
+NEWPARA
+ (The) NW (stealth) NW (commands) NW (are:) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (stealth) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (postscript) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (includeps) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (pspage) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (ignore) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (pscmd) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (STEALTH) NW
+NEWPARA
+ (The) NW (normal) NW (LaTeX) NW (commands) NW (are:) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (#) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+
+[ 0 false ] NewFont (%) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (&) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (Huge) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (LARGE) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (Large) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+
+[ 0 false ] NewFont (_) NW
+
+[ 1 false ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (addtolength) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (backslash) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (begin) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (bf) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (bigskip) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (center) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (chapter) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (chapter*) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (clearpage) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (description) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (document) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (documentstyle) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (em) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (end) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (enumerate) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (flushleft) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (flushright) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (footnotesize) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (hspace) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (hspace*) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (huge) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (include) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (it) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (item) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (itemize) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (label) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (large) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (ldots) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (medskip) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (newlength) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (newline) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (normalsize) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (par) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (paragraph) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (paragraph*) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (part) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (part*) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (quotation) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (quote) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (raggedleft) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (raggedright) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (ref) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (rm) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (sc) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (scriptsize) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (section) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (section*) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (setlength) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (sf) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (sl) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (small) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (smallskip) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (subparagraph) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (subparagraph*) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (subsection) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (subsection*) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (subsubsection) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (subsubsection*) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (tiny) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (today) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (tt) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (verse) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (vspace) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+ (vspace*) NW
+[ 0 true ] NewFont (\\) NW
+
+[ 1 true ] NewFont % /cm10rm
+
+[ 0 true ] NewFont (\\) NW
+
+/topmargin 108 def
+/bottommargin 36 def
+
+ENDPAGE
+
+STARTPAGE
+
+[ 1 false ] NewFont % /cm10rm
+
+/parindent 0 def
+
+[ 8 false ] NewFont % /cm10bf
+
+21.6 BASELINESKIP
+
+[ 9 false ] NewFont % /cm18bf
+
+
+/vspace 112.5 def NEWPARA
+ (Chapter) NW (10) NW
+26.4 BASELINESKIP
+
+/vspace 46.6 def NEWPARA
+
+[ 10 false ] NewFont % /cm22bf
+ (Plain) NW (Text) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 118.8 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (If) NW (you) NW (want) NW (to) NW (make) NW (LameTeX) NW (produce) NW (plain) NW (text) NW (output,) NW (which) NW (is) NW (to) NW (say) NW (a) NW (plain) NW (ASCII) NW (output,) NW (it) NW (can) NW (do) NW (that.) NW
+NEWPARA
+ (Just) NW (type) NW (lametex) NW (-t) NW (yourfile.tex) NW (and) NW (the) NW (result) NW (will) NW (be) NW (placed) NW (in) NW (the) NW (file) NW (yourfile.txt.) NW
+/topmargin 72 def
+/bottommargin 72 def
+
+ENDPAGE
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/support/lametex/doc/lametex_doc.tex b/support/lametex/doc/lametex_doc.tex
new file mode 100644
index 0000000000..b7041b563f
--- /dev/null
+++ b/support/lametex/doc/lametex_doc.tex
@@ -0,0 +1,34 @@
+% lametex_doc.tex
+%
+% This is a LameTeX document. You may use the LameTeX text formatter
+% to do fancy graphic formatting from this file into PostScript.
+%
+% Alternatively, this file may be formatted with normal LaTeX.
+%
+% This document describes the LameTeX text formatter, version 1.0.
+%
+% Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+% edit and use as long as this copyright statement remains intact.
+%
+%
+
+\documentstyle[10pt]{report}
+\setlength{\textwidth}{6 in}
+\setlength{\textheight}{9 in}
+\setlength{\topmargin}{-.5 in}
+\setlength{\oddsidemargin}{0.25 in}
+
+% \begin{stealth} \includeps{icons.ps} \end{stealth}
+\begin{document}
+ \include{titlepage}
+ \include{introduction}
+ \include{starting}
+ \include{stealth}
+ \include{pages}
+ \include{normality}
+ \include{hacks}
+ \include{future}
+ \include{errors}
+ \include{commands}
+ \include{plaintext}
+\end{document}
diff --git a/support/lametex/doc/lametex_doc.txt b/support/lametex/doc/lametex_doc.txt
new file mode 100644
index 0000000000..c11edf5382
--- /dev/null
+++ b/support/lametex/doc/lametex_doc.txt
@@ -0,0 +1,1529 @@
+
+
+
+
+
+
+
+ LameTeX
+
+
+ A text formatter for special effects
+
+
+
+
+
+
+ Combining the magic of PostScript with the ease of LaTeX
+
+
+
+ Version 1.1 by Jonathan Monsarrat
+
+ September 8, 1992
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Copyright 1992 Jonathan Monsarrat
+ Permission is granted to freely distribute or edit any
+ portion of this manual.
+
+
+
+ Chapter 1
+
+ Getting to Know LameTeX
+
+ Hackers, just skip to the section "Fast Track".
+
+ 1.1 Copyright
+
+ Don't sell LameTeX or this documentation, or use parts of
+ it in programs you sell. Don't even think about selling it.
+ This isn't about money. It's about cool hacking. Permission
+ granted for everything else. Thank you.
+
+ 1.2 About Text Formatters
+
+ A text formatter is a program that helps you make nice
+ looking reports and documents. You write the document by
+ typing the text into an editor, adding formatting commands
+ as needed. A formatting command is not meant to be printed.
+ Instead it is interpreted by the text formatter program to
+ accomplish special tricks such as centering a line of text,
+ that you would otherwise have to do by laboriously typing
+ the space bar a number of times.
+ LameTeX is a text formatting program that understands
+ many of the most important text formatting commands of a
+ popular text formatter, LaTeX. Although not as powerful for
+ normal text formatting, LameTeX has a number of additional
+ features for special effects.
+
+ 1.3 LameTeX is for Special Effects
+
+ That said, if you want to write a plain report or do some
+ fancy mathematics, you should use LaTeX instead. LaTeX does
+ a better job for normal-looking documents (this page is an
+ example of a normal-looking LaTeX page), and LameTeX
+ version 1.0 is not capable of handling some of the more
+ esoteric LaTeX functionality like mathematics and command
+ definition. That's why it's called "Lame" TeX!
+
+ 1.3.1 What LameTeX Can Do
+
+ LameTeX's specialty is complete versatility of the printed
+ page. The standard model for text formatters is that every
+ page is necessarily rectangular. LameTeX will let you
+ format text inside a triangular page, or a circle page.
+ Just like professional magazine editors, you can include
+ pictures of any shape and ask the text to flow around them
+ or inside them.
+ These flexible arbitrarily-shaped margins are PostScript
+ paths. If you don't know PostScript, there is a big library
+ of interesting LameTeX page margins here. With LameTeX you
+ can fit several "pages" onto one 8.5x11 inch piece of
+ paper, so you can easily make index cards, labels, and
+ half-pages of text.
+ Also, if you know how to write programs in PostScript,
+ LameTeX allows you to very tightly integrate your LameTeX
+ commands with your PostScript code. In fact, the PostScript
+ that LameTeX outputs is nicely formatted and commented so
+ that you can modify it yourself and see how it's done.
+ LameTeX is written with PostScript version 1, so it should
+ run on all PostScript printers.
+ Finally, everything about LameTeX is set up to be
+ compatible with LaTeX. LameTeX can't do everything that
+ LaTeX can, but the special stealth commands guarantee that
+ your fancy LameTeX document can be processed by normal
+ LaTeX. This allows you to share it with anyone who doesn't
+ happen to have LameTeX. (Better yet: give them a copy;
+ LameTeX is free!)
+
+ 1.3.2 What you Need to Know to Learn LameTeX
+
+ LameTeX is a tool to make things simple. You don't have to
+ be a LaTeX expert to use LameTeX, but you should be
+ somewhat familiar with some basic LaTeX commands before
+ reading this document.
+ You don't need to know any PostScript to use LameTeX,
+ although there is a lot extra you can do with LameTeX if
+ you can do just a little.
+ You definitely don't need to know anything about TeX to
+ use LameTeX.
+ LameTeX is written in C++ and PostScript from scratch. It
+ is not based on TeX macros or anything like that. It just
+ happens to know the same language as LaTeX, and also it
+ snarfs fonts from LaTeX.
+
+ 1.4 The Fast Track
+
+
+ If it's 3 a.m. and you are a juggling, tetris-addicted
+ hacker with a taste for reheated Chinese take-out food, you
+ may want to skip to the good parts. Look for the Little
+ Wizard icon for interesting notes for experts who won't
+ need to read this whole manual.
+
+ * The LameTeX code for this document, lametex_doc.tex,
+ and all the files it includes, are good examples of what
+ LameTeX code looks like. Read through it and you will
+ notice it's not hard to make a few special effects. In
+ general, just try lots of LaTeX commands, and LameTeX
+ will either handle them or attempt to skip them
+ gracefully.
+
+ * Look in the appendix to see what commands LameTeX
+ supports if in doubt. Warning! LameTeX lets you write
+ sloppy code. Try writing your document in LaTeX first, to
+ work the bugs out of the "normal look" and then start
+ using LameTeX. Then you're guaranteed that your document
+ will work on both text formatters.
+
+ * Also glance at the section on Stealth Commands, which are
+ LameTeX commands over and above the normal LaTeX
+ commands. The stealth command
+
+ ignore tells LameTeX to ignore LaTeX commands it doesn't
+ know and can't skip gracefully.
+
+ * LameTeX is written in C++, and the code itself is
+ documented separately.
+
+ * The PostScript routine for breaking a PostScript path
+ into tiles is breakpath.ps. And the formatting language
+ is handled by format.ps. You might find these programs
+ useful outside of LameTeX. For example, I wrote a 3D
+ drawing environment which used breakpath.ps for tiling.
+
+ * There is an appendix at the back on installing LameTeX.
+
+ * The author is a nice guy who will be happy to help you
+ out. Send e-mail to jgm@cs.brown.edu. I would like to
+ know what you think of LameTeX and if you found it
+ useful. I am also accumulating a list of enhancements to
+ make to the program and would gratefully receive your
+ ideas on this subject.
+
+ 1.5 Major LaTeX Commands LameTeX Cannot Handle
+
+
+ The most obvious difference between the two programs is
+ that LameTeX will never hyphenate words, and will tend to
+ not have quite as nice spacing as LaTeX does. LameTeX can
+ only produce PostScript code, and the code it does produce
+ is complicated and therefore a little long.
+ LameTeX uses the LaTeX fonts and handles the computer
+ modern font robustly, but it cannot currently handle other
+ font families or normal PostScript fonts. You cannot use
+ fancy non-ascii characters like the heart and the copyright
+ symbol.
+ You cannot define new commands in LameTeX, make boxes
+ around words, or use fancy document formats like
+ "titlepage", or "letter". You cannot do fancy tabbing or
+ horizontal spacing. Math mode is right out.
+ A lot of new functionality will be added in the next
+ version of LameTeX coming late this year, but for the
+ moment keep in mind that LameTeX is meant primarily for
+ placing special effects on rather basic documents. Use
+ normal LaTeX, or cut and paste between the two, if you need
+ math mode or want to nest lots of TeX code in your LaTeX
+ files.
+
+
+
+ Chapter 2
+
+ Simple LameTeX Formatting
+
+
+
+ This chapter introduces to the essentials of running the
+ LameTeX program, but is primarily an overview of LaTeX
+ buzzwords and syntax. Those grossly familiar with LaTeX can
+ just glimpse at the little wizards and skip to the next
+ section.
+
+ 2.6 Running LameTeX
+
+
+
+ 2.6.3 Useful Buzzwords To Know
+
+ A LaTeX file is a text file full of the words of your
+ document, plus some fancy formatting commands. The LaTeX
+ text formatter knows how to interpret the formatting
+ commands from your LaTeX file and produce a printed result.
+ The filename of a LaTeX file usually ends with the suffix
+ ".tex" but this is not required.
+ A LameTeX file is just like a LaTeX file, except that
+ LameTeX has some extra text formatting commands that LaTeX
+ doesn't know. Also, LameTeX doesn't know all of the
+ commands that LaTeX knows. Fortunately, for the basic
+ commands, both programs work fine. For reference, there is
+ a complete list of all text formatting commands that
+ LameTeX understands at the end of this document.
+ LaTeX will understand any well-written LameTeX document
+ because the fancy LameTeX commands are "hidden" inside
+ comments. Any LameTeX command that LaTeX doesn't know is
+ called a stealth command.
+ A big part of LameTeX is being able to make your own very
+ fancy page descriptions. A page description file is a file
+ full of some PostScript page descriptions, written in the
+ PostScript programming language.
+
+ 2.6.4 Example 1 - A Plain Vanilla Text File
+
+ LameTeX comes with a number of example LameTeX files. They
+ all begin with the prefix "example", then a number, and end
+ with the conventional suffix ".tex".
+ Try formatting the LameTeX file example1.tex by typing
+ lametex example1.tex. LameTeX will process the file,
+ converting it to the graphics language PostScript. Your
+ screen should look something like this:
+ vegas % lametex example.tex
+
+ This is LameTeX, C++ Version pre 1.0
+
+ Processing example1.tex...
+
+ Opening example1.PS for temporary output...
+
+ Including PostScript file /home/jgm/PS/Lametex/page/page
+ _latex.ps
+
+ Making dummy file for snarfing LaTeX fonts...
+
+ Snarfing LaTeX fonts...
+
+ This is TeX, C Version 3.0
+
+ (lametex.tex
+
+ LaTeX Version 2.09 (24 May 1989)
+
+ (/cs/lib/tex/inputs/report.sty
+
+ Document Style `report' (13 Nov 89).
+
+ (/cs/lib/tex/inputs/rep10.sty)
+ (/cs/lib/tex/inputs/titlepage.sty)\)
+
+ (/cs/lib/tex/inputs/10pt.sty) (lametex.aux) [ 1 ]
+ (lametex.aux) )
+
+ Output written on lametex.dvi (1 page, 344 bytes).
+
+ Transcript written on lametex.log.
+
+ This is dvips 5.47 Copyright 1986-91 Radical Eye Software
+
+ ' TeX output 1992.08.22:0325' - lametex.ps
+
+ (tex.pro). [ 1 ]
+
+ ** SNARF! **
+
+ Created PostScript file example1.ps
+
+ vegas %
+
+ LameTeX has produced a new file, example1.ps that you can
+ print on any PostScript printer using the lpr command.
+ Alternatively, you can view it on-line by using
+ GhostScript or some other PostScript previewer. It is
+ recommended that you always use a PostScript previewer
+ before printing, just to make sure that you get what you
+ want.
+ As part of the text formatting process, LameTeX must
+ acquire the correct "official" LaTeX fonts, and to do
+ this, it makes a small trojan horse file and tricks LaTeX
+ into interpreting it. The dummy file it creates is
+ lametex.tex which is formatted by LaTeX to become
+ lametex.ps. All temporary files are deleted after
+ they're used.
+ You are welcome to omit the suffix .tex if you wish,
+ just as with LaTeX. For example, you could have typed
+ lametex example1.
+
+ 2.6.5 Specifying the Default Page Description File
+
+ The default page description is the PostScript file that
+ is used to decide what the page should look like, if you
+ don't specify a page description. You can use the -p
+ command line option to specify a new page description.
+ Try typing lametex -p page_skew.ps example1.ps to
+ format the same example LameTeX file with a different
+ page description. You can use any of the page
+ descriptions in the LameTeX page description directory.
+ If you don't specify the default page description, it
+ automatically defaults to page_latex.ps.
+ You can use the -t command to produce plain ASCII text
+ output. Just type lametex -t yourfile.tex and the result
+ will be placed in yourfile.txt.
+
+ 2.7 A Brief Review of LaTeX
+
+
+ Following is a brief review of what normal LaTeX commands
+ look like. You should peek at a real LaTeX manual if this
+ section confuses you.
+ If you formatted example1.tex, you saw that the
+ printed result was placed so that it lined up on both
+ columns. Each new paragraph was indented, and the title
+ was centered on the page.
+ Take a look at example1.tex, and you will see that the
+ plain LameTeX file is not nearly so pretty! LameTeX was
+ responsible for doing the formatting. LameTeX shares
+ responsibility for decision-making with you, the user.
+ For example, there is a special notation that makes
+ LameTeX center the title of the document. A normal
+ LameTeX document is full of such decision-making
+ commands, either to ask for something new, or to override
+ a LameTeX decision (like whether to indent a paragraph).
+
+ 2.7.6\documentstyle
+
+ The most important command in this example is \
+ documentstyle{report}.
+ LaTeX wants to know what kind of document you are
+ trying to produce. LameTeX, it turns out, doesn't really
+ care! All document styles look the same to LameTeX, but
+ unfortunately you must have the\documentstyle command
+ anyway, just because that is the way the cruel world is
+ sometimes. Plus, you need it if you are ever going to run
+ your document through normal LaTeX.
+ There are three alternate versions of this command, \
+ documentstyle [ 10pt ]{report},
+
+ \ documentstyle [ 11pt ]{report},
+
+ and \ documentstyle [ 12pt ]{report}, which specify
+ that the default font size for this document will be 10
+ point, 11 point, or 12 point respectively. The real LaTeX
+ text formatter can do a lot of other fancy things with
+ the\documentstyle command, but this version of LameTeX
+ cannot.
+
+ 2.7.7\begin and\end Delimit Environments
+
+ An environment is an important LaTeX concept. It tells
+ LaTeX where to start and stop doing fancy stuff. For
+ example, in the example LameTeX file example1.tex there
+ are two commands, \ begin{center } and\end{center}
+ . The\begin command says "start doing a fancy thing,
+ which is to center every line.". Likewise, the\end
+ command is very important because it tells LaTeX where to
+ stop centering. We say that the text in-between the\
+ begin and\end command is "in a\center environment".
+ A shorthand notation for an environment is to use
+
+ braces. For example, the line of text
+
+ \ begin{center } this text is centered\end{center
+
+ }
+
+ could be re-written as follows:
+
+ {\center this text is centered}
+
+
+ 2.7.8 Text Goes in the\document Environment
+
+ Whenever you use LaTeX, you must place any text to be
+ printed inside of a\document environment. Don't place
+ text outside of a\document environment, although you
+ may place text formatting commands there.
+ The two commands you will always want to make part of
+ your LameTeX documents are\documentstyle and\
+ document.
+
+ 2.7.9 Example 2 - Environments Can Be Fancy
+
+ Try running the second example file, by typing lametex
+ example2.tex. This LameTeX file doesn't have any stealth
+ commands either. Like example1.tex, it is just a
+ demonstration that LameTeX can handle some pretty
+ complicated normal LaTeX text formatting commands.
+ This file contains some fancy environments. For
+ example, the\verse command modifies the environment in
+ several ways to allow a natural look to poems.
+ The\enumerate environment indents the text and
+ numbers all paragraphs that begin with the\item
+ command.
+
+ 2.7.10 Environments Can Be Nested
+
+ Also notice that the\enumerate commands can be nested
+ inside one another. Also the\bf command for boldface is
+ nested inside the\Huge command for Huge text. Putting
+ the boldface environment inside the Huge environment
+ yields text that is both bold and Huge.
+ In general, when you nest environments, "it does the
+ right thing." In general you can trust LaTeX to do the
+ right thing. Can you trust LameTeX? Well ... you know
+ the old saying: "Trust your mother. But watch her!"
+
+
+
+ Chapter 3
+
+ Stealth Commands
+
+
+
+ LameTeX doesn't understand all the commands that LaTeX does, but it
+ does know a few extra that can be used for special graphics. These
+ commands are called stealth commands, and are used like any other
+ LaTeX command, except that they appear inside comments!
+ Stealth commands are difficult to explain, but easy to demonstrate.
+ Try looking for examples of stealth commands inside lametex_doc.tex
+ and the files it includes.
+
+ 3.8\begin{stealth}
+
+
+ Normally it would be nice if you could make real comments without
+ LameTeX inserting the text into your document. This is especially true
+ if you are converting a LaTeX file to LameTeX and want to make
+ extensive use of the comment symbol to take out commands that LameTeX
+ cannot handle.
+ So, in order to begin a use a stealth command, you have to use a
+ stealth environment by using\begin{stealth}, which is the only
+ command that is interpreted by LameTeX inside a comment but outside of
+ a stealth environment. You cannot just say\stealth. If you want that,
+ use\STEALTH, which will continue the stealth environment to the end
+ of the line, and the revert back to normal. If you begin a\postcript
+ environment then the\STEALTH will wait for it to end and then
+ terminate on the next newline.
+ You are welcome to do a\begin{stealth } at the very beginning of
+ your document and end it with\end{stealth } at the end, but
+ although this will be simpler, it will also mean that all text
+ (including plain text) in your comments will be interpreted and
+ included in your document. So to avoid confusion and mistakes, and to
+ allow you to use real comment, it is best if you actually begin a local
+ stealth environment only when needed, and close it immediately
+ afterwards.
+ The stealth command is useful when you have some plain text that you
+ don't want normally included in LaTeX. For example, in this document
+ whenever it says to "look for the little Wizard icons" found in the
+ LameTeX version, the text referring to the icons is imbedded in a
+ stealth environment in comments, so that normal LaTeX will skip the
+ text.
+ Warning! The stealth command does not really start a delimited
+ environment. For example, if you were to have
+
+ \ begin{Huge }\bf FOO\end{Huge } BAR
+
+ then the FOO would be Huge and boldface, but the BAR would be neither.
+ This is because the Huge environment serves as a delimiter for
+ everything inside of it.
+ The stealth command is different. Unlike every other begin/end
+ combination, if you were to say
+
+ %\begin{stealth }\bf FOO\end{stealth } BAR
+
+ then FOO would be boldface, and BAR would also be boldface.
+
+ 3.9 Including a PostScript file
+
+
+ You can use the\includeps command to include a PostScript file. For
+ example, to include a file of PostScript definitions in gummi.ps you
+ would type the stealth command \ includeps{gummi.ps}.
+
+ 3.10 Choosing a Page Description
+
+
+ You can use the\pspage command to include a new page description. See
+ the chapter on pages to learn more about this command.
+
+ 3.11 For Fancy LaTeX Stuff
+
+
+ You can tell LameTeX to "skip over" some part of your file in which you
+ might, for example, imbed LaTeX commands that LameTeX cannot handle or
+ skip gracefully. You must say\begin{ignore } and use\end{ignore
+ } inside a stealth environment to do this enclosure.
+
+ 3.12 Free text PostScript
+
+
+ You can type any PostScript commands you want directly by using the\
+ postscript command. For example, to change the gray scale of the
+ printed text, you can type \ begin{postscript } .6 setgray\end{
+ postscript}.
+ You cannot just say\postscript.
+ There are a lot of special things to learn about exactly where a
+ postscript command (like a grayscale) that you supply will be applied.
+
+ 3.13 Hacks Just Like Mom Used To Make
+
+
+ Here's a fancier way to get your PostScript commands executed exactly
+ where you want them to. Use the\pscmd command to specify a PostScript
+ function to run, and the function will be run exactly in the text where
+ you have specified.
+ You would use this command only inside a line of text. Between lines
+ of text, just using the\postscript environment is appropriate.
+ Everything you type in a PostScript environment gets dumped to
+ PostScript, except for the first comment character ' you want to make a
+ comment in your PostScript, make sure to use two '
+ Read the chapter on pages to learn how to use this "direct
+ stranglehold" on PostScript correctly -- unless you enjoy surprises!
+
+
+
+ Chapter 4
+
+ How Pages are Handled in LameTeX
+
+
+
+ If you're going to use the fancy pages included with this
+ release of LameTeX, but not try to design your own or make
+ any PostScript hacks, then you don't need to read about
+ LameTeX pages. However, if you are going to try your own
+ hand at designing pages and fancy graphics, you should
+ learn a little bit about how LameTeX works so that things
+ fit together smoothly.
+ I'd love to hear what you've used LameTeX for. Please
+ send e-mail to jgm@cs.brown.edu.
+
+ 4.14 Behind the Scenes of LameTeX
+
+
+
+ 4.14.11 The Page Description
+
+ A Page Description is a short program written in PostScript
+ that defines some standard stuff about the page that text
+ gets placed on.
+ Take a look at page_latex.ps, which is the standard
+ plain vanilla LaTeX-looking page. Here are the routines
+ defined in this file:
+
+ PageShape
+ is a required routine that defines a PostScript path for
+ the page. A path is basically a squiggle on the page that
+ never gets drawn. It is a closed loop of arbitrary shape.
+ It is pretty easy to make a simple path out of straight
+ lines using the PostScript moveto and lineto commands,
+ but it is possible to define a very complex path with
+ curves and fancy wiggles also. You can read more about
+ paths in the PostScript blue book, or chapter 4 of the
+ red book.
+ The PageShape routine should leave a number on the stack
+ called a setflat value. If your path contains fancy
+ curves, it is going to get flattened into a series of
+ lines using the PostScript flattenpath operator. Usually
+ "currentflat 8 mul" works fine, although if you want more
+ preciseness and think your printer can handle it, try
+ smaller values. If you don't understand this, just use
+ "currenflat 8 mul" and you should be fine.
+
+ StartPage
+ is a required routine that draws anything or sets up
+ anything required at the beginning of a page. Feel free
+ to put some fancy graphics here.
+
+ EndPage
+ is a required routine that draws anything or sets up
+ anything required at the end of the page. For example,
+ the one in page_latex.ps prints
+
+ InitPage
+ is not required. It is just a simple enclosure for
+ defining some variables that are all required:
+
+ fillout
+ tells LameTeX whether you want to place text inside
+ the defined path, or outside of it. If you set fillout
+ to true LameTeX will not place any text inside your
+ path.
+
+ evenodd
+ is a fancy PostScript way of determining what is
+ inside and what is outside of a path. If this is true
+ then it uses the evenodd rules; false means use the
+ winding rule. There's a description of what the heck
+ this means in the PostScript red book in Chapter 4,
+ section 6. Basically setting this variable to true
+ means that every part of the path delimits an
+ outside-inside boundary.
+
+ BM
+ In the event that fillout is true, this is the bottom
+ of the bounding rectangle that will be filled with
+ text. If parts of the path extend below this given
+ number, it will be reset to be below the path.
+
+ TM
+ In the event that fillout is true, this is the top of
+ the bounding rectangle that will be filled with text.
+ If parts of the path extend above this given number,
+ it will be reset to be above the path.
+
+ LM
+ In the event that fillout is true, this is the left of
+ the bounding rectangle that will be filled with text.
+ If parts of the path extend to the left of this given
+ number, it will be reset to be to the left of the
+ path.
+
+ RM
+ In the event that fillout is true, this is the right
+ of the bounding rectangle that will be filled with
+ text. If parts of the path extend to the right of this
+ given number, it will be reset to be to the right of
+ the path.
+
+ LeftMarginIcon
+ is not required. I just use it do define where the left
+ margin is, in case I want to place an Icon there.
+
+ 4.14.12 The Page Cycle
+
+ LameTeX has three modes that it can be in:
+
+ 1. In-Between Pages
+
+ 2. On a Page, In-Between Lines
+
+ 3. On a Page, On a Line
+ The cycle generally goes like this:
+
+ 1. LameTeX starts off in "In-Between Pages" mode.
+
+ 2. In-Between Pages mode processes commands until it
+ encounters any plain text or LameTeX command that might
+ require that a new page be started. When this happens it
+ does the following:
+
+ 3. Execute the save command
+
+ (a) Start a page by calling the /StartPage routine.
+
+ (b) Do some internal initialization and call the
+ /PageShape routine
+
+ (c) Change to "On a Page, In-Between Lines" Mode.
+
+ (d) On a Page, In-Between Lines mode processes commands
+ until it encounters any plain text or LameTeX command
+ that might require that a new line be started. When
+ this happens it does the following:
+
+ i. Change to "On a Page, On a Line" mode.
+
+ ii. Find a new line. NOTE: If you have broken the page
+ up into two or more horizontal regions (like page_
+ dagger.ps does, then know that a "newline" really
+ means a new "open space to put words". It's possible
+ to have "two new lines" horizontally next to one
+ another. One goes on the left side of the dagger
+ page description. The next new line starts on the
+ right side at the same horizontal position. If you
+ don't like this functionality, then don't define
+ regions that have two sides like the page_
+ dagger.ps. Instead define "two pages" like how page
+ _check.ps works. The first page will get filled
+ before the second is begun.
+
+ iii. Initialize a word list that will contain information
+ about this line. The very first item on this word
+ list will be a command to change to what is
+ considered the proper font when this line was begun.
+
+ iv. If appropriate for each new word or command read in,
+ it will either add the word to the word list or add
+ the command itself to the word list. For example, a
+ boldface command in between the words FOO and BAR
+ gets inserted in the word list between FOO and BAR.
+ It also get executed immediately.
+
+ v. Also for each new word read in, it checks to see if
+ the word list it is building overflows the width of
+ the current line (as defined in a very fancy way by
+ the PostScript Page Definition file and the
+ PostScript path given by /PageShape). If there is an
+ overflow, or a natural end of line given by a text
+ formatting command, then it does the following:
+
+ A. Go through the word list from the beginning to
+ the end and for each element, either print it if
+ it is a word, or execute it if it is a command.
+ Since the word list was initialized with a
+ font-setting command, the first thing this loop
+ will do is choose the proper font. Add a little
+ space between words if text is supposed to be
+ fully justified.
+
+ B. If the cause of printing this line was a natural
+ end of line, then go to step 3.3.
+
+ C. Otherwise, create a new word list, and keep
+ cycling in "On a Page, On a Line" mode.
+
+ (e) Eventually, going to a new line means falling off of
+ the bottom of the page, and a we change back to
+ "In-Between pages mode", and do the following:
+
+ 4. Execute the restore command
+
+ 5. End a Page by calling the /EndPage routine.
+
+ 6. Go to step 2.
+ LameTeX horizontally aligns the words by remembering all
+ the words on the current line, and then printing the whole
+ line at once when the line gets filled up. Printing all the
+ words at once means that it can be smart enough to justify
+ the text to exactly match both margins.
+ There is no concept of vertical alignment. Unlike LaTeX,
+ LameTeX does not remember all the lines in a paragraph and
+ then print the paragraph all at once in the right place.
+ The save and restore commands are PostScript operators to
+ do memory management. Basically what happens is that when
+ the restore command is encountered, the entire current
+ memory of the printer is replaced with what it was like
+ when the save command was executed.
+ This means that if you set a variable in your StartPage
+ routine, you will be able to access that variable
+ throughout the length of the page, but you will not be able
+ to access it in the EndPage routine. If you want to have
+ some always-changing always-remembered variable like the
+ page number, use the InitPage and EndPage routines instead.
+ Note that the InitPage and EndPage routines are outside
+ of the save-restore loop. So anything that happens in these
+ two routines stays around forever.
+ Which Commands Force A New Page Or A New Line?
+
+ Check it out in Operator.C. Yes, that's a C++ source file.
+ Don't be afraid of it - it won't hurt you. In this file at
+ the top is a huge table of command names. The first row is
+ the command name, the second is a boolean (either a 0 or a
+ 1) saying whether this command is a stealth command. The
+ third is a boolean (either a 0 or 1) saying whether or not
+ a new page or new line should be started if this command is
+ executed In-Between Pages or Not-On-A-Line.
+ Also, all plain text words force On-A-Line-ness and
+ On-A-Page-ness.
+ Specifying the Page Description Directories
+
+ LameTeX will look in the current directory to find page
+ description files or any other postscript files, but if it
+ cannot find them you must tell it where to look. You can
+ use the -p command, explained in the startup chapter, or
+ set your environment variable LAMETEX_PS_PATH to some
+ path which will be searched for postscript files. The
+ current directory and the LameTeX main library directory
+ will always be searched.
+ There is a great deal more about this in the PostScript
+ chapter.
+
+
+
+ Chapter 5
+
+ How to Get Normal LaTeX Stuff
+
+
+
+
+ 5.15 A Note to TeX Professionals
+
+
+ I love LaTeX. It's great. I just learned it as I was writing LameTeX. I'm
+ sure TeX is cool too, although I have not gotten around to learning it yet. I
+ was a Scribe Math hacker and have done lots of letterpress printing. TeX has
+ a bad reputation though. I thought that learning it would be so hard that I
+ might as well write my own formatter! Others think that TeX kind of
+ straight-jackets you into professional documents.
+ Normally that's great. My Mom isn't around any more to clean my room and
+ tell me how to write professionally. And a letterpress doesn't care if you
+ place your letters upside down.
+ But occasionally (or often if you're strange like me) I get the urge to
+ splash 100 point type or stick random bugs all over the page. Once to
+ advertise an event I hung up a huge 18 foot poster taped together out of
+ PostScript pages. You ever get that urge?
+ Anyway, LameTeX is a fun toy. Just don't take it too seriously.
+ And no, it's not written in TeX macros!
+
+ 5.16 The LaTeX Length Parameters
+
+
+ If LaTeX is royalty, then LameTeX is a prostitute. If you want to change the
+ margins in the middle of the page using\textwidth, LaTeX kind of sticks its
+ nose up at you and says to go implement your own margin library font program
+ hierarchy system out of TeX macros. LameTeX just says "OKAY!" and hops in the
+ sack with you. No questions.
+ So feel free to change a lot of stuff. LameTeX won't care. I really urge
+ you to put random stuff inside of a stealth environment, however, so that
+ normal LaTeX won't balk at it and refuse to serve you.
+ It's like playing an adventure game. If you die, who cares, it's just a
+ program. But if you don't try various things, you won't have any fun.
+ There is no "textwidth" in LameTeX. When you set textwidth it just sets the
+ right margin to 8.5 inches minus the textwidth given minus the left margin.
+ Similarly there is no "textheight". When you set textheight it just sets
+ the bottom margin to 11 inches minus the textheight given minus the top
+ margin.
+ Please note that just like LaTeX, LameTeX defaults to ridiculous margins.
+ There's a good chance that if your margins are large at all, that the text
+ may not fit inside the page description path! This is especially true of the
+ page_check.ps page description, which breaks the page into boxes that are
+ only and inch wide or so.
+
+ 5.17 Tiny Differences from LaTeX
+
+
+ You can't use fine-tune spacing commands. You won't get a table of contents
+ anywhere, and you can't do table and figures.
+ \vspace is meant to give the absolute vertical distance between the
+ current line and the last line (or top of page). If you use two of them in a
+ sequence, you're likely to have the larger one apply only, not both together.
+ There is no concept of "glue" in LameTeX. I bent over backwards trying to
+ make it possible to put a backslash next to a command when I want to type
+ something like\myfancycommand. Unfortunately, LameTeX views these as two
+ tokens from which the space in-between has been "deleted". It's happy to
+ break a line in the middle. You'll probably see that scattered throughout
+ this document. It only happens when you print the special characters\% ,\
+ _ , and the like. This "ungluing" will also occur if you change fonts or
+ change environments in any way in the middle of a word. So if my sentence is
+ in italic but the period at the end of the sentence is in roman type, the
+ period might be placed on a newline by itself!
+ In general, LameTeX will occasionally screw up the spacing. Oops. No, it
+ doesn't do kerning! Geez ...
+ To avoid this it's best to include sentence punctuation in whatever
+ environment happens to precede it. For example, use "Pay me in {\em cash.}
+ " instead of "Pay me in {\em cash}."
+ You can't make small caps, typewriter, or sans serif font into italic or
+ bold face. I didn't know it was possible until recently so I didn't put it
+ into the program.
+ LameTeX is quite happy to give you widows and orphans. If this sort of
+ thing keeps you awake at night, you are taking LameTeX too seriously and
+ should go play Tetris until you go insane (this doesn't take long). If you
+ don't know what widows and orphans are, good. I won't tell you.
+
+ 5.18 PostScript is a Great Language, Too Bad it Sux
+
+
+ I love PostScript. LameTeX makes extensive use of the PostScript programming
+ language. I think PostScript is great. However, when a PostScript program
+ breaks, your printer is more likely to say "ARGH" or silently start whining
+ rather than to print out some message like "I say, old man. You've got a spot
+ of trouble on line 36 you see. It seems (if I may venture to take a liberty)
+ that you made a misspelling error in the word 'sux'." If it's a LameTeX bug
+ then get in touch with me and I'll try to fix it. But if you're hacking
+ PostScript through LameTeX it's very easy to screw things up. The solution is
+ not to get scared and stop playing with it. Send me some mail and we'll work
+ it out together. Chances are I forget to document some assumption I'm making
+ somewhere about how to use the cool PostScript routines. Once I tell you
+ about it things will be fine.
+
+ 5.19 LameTeX Fonts
+
+
+ To get different fonts in LameTeX, you can just use the normal LaTeX
+ font-changing operators. It is not possible right now to get normal
+ PostScript fonts using a LameTeX operator. However there is a cool workaround
+ if you want to try it out. The program originally worked that way on
+ PostScript fonts but then I figured that people would really really want the
+ normal LaTeX fonts, so I put those in, instead. For sure the next version of
+ LameTeX will allow the user to choose "normal" scaleable PostScript fonts
+ instead of the somewhat tedious LaTeX bitmaps. Documents which used only the
+ scaleable fonts would be much smaller and compile faster.
+ It is possible for you to make your own PostScript hack to change the
+ appearance of a word, and this can certainly include using a scaleable font
+ if you wish. This is described in the hacks chapter with the command\pscmd.
+ LameTeX is very versatile about changing margins in mid-document and stuff
+ like that.
+
+ 5.20 Getting References
+
+
+ LameTeX allows you to use the LaTeX commands\ref and\label, but not\
+ pageref. If you have forward references, you do not need to run LameTeX
+ twice. LameTeX is smart enough to do its own recovery if you have forward
+ references. Pretty neat, huh?
+
+
+
+ Chapter 6
+
+ Including Your Own PostScript Hacks
+
+
+
+ Let's face it. This manual is nice, but let's get into the nitty gritty of
+ the examples presented here and maybe I can show you how to do some cool
+ stuff with LameTeX. If you have questions, we can chat in person over mail.
+ Here goes.
+
+ 6.21 How to Use Include Files To Do Stuff
+
+
+ This manual can be formatted by running either LaTeX or LameTeX on the file
+ lametex_doc.tex. There are a lot of other files, but lametex_doc.tex
+ includes them using the LaTeX command\include.
+ While reading this section on examples, you will probably want to run
+ LameTeX over just one chapter, not all of them. If you edit the file lametex
+ _doc.tex you can "comment out" everything you don't want. For example, if
+ you wanted to run LameTeX over the chapter on pages, you could edit the file
+ so that it looked like:
+ \documentstyle [ 10pt ]{report }
+
+ \setlength{\textwidth}{6 in }
+
+ \setlength{\textheight}{9 in }
+
+ \setlength{\topmargin}{0 in }
+
+ \setlength{\oddsidemargin}{0.25 in }
+
+ %\begin{stealth }\includeps{icons.ps }\end{stealth }
+
+ \begin{document }
+
+ %\include{titlepage }
+
+ %\include{introduction }
+
+ %\include{starting }
+
+ %\include{stealth }
+
+ \include{pages }
+
+ %\include{normality }
+
+ %\include{hacks }
+
+ %\include{future }
+
+ %\include{errors }
+
+ %\include{commands }
+
+ \end{document }
+
+ Notice how all the chapters, except for pages.tex, have been placed in
+ comments using the '%' character. This means that both LaTeX and LameTeX
+ will ignore them.
+
+ 6.22 White Text Hack
+
+
+ Look in titlepage.tex, just before where it says "Copyright 1992". Here is a
+ demonstration of changing the color of the text so that it is white instead
+ of black. This is done using the special LameTeX stealth commands\stealth
+ and\postscript.
+ All the stealth commands are located inside comments so that the normal
+ LaTeX won't see them. So I have to start a stealth environment, because
+ without that none of the other commands I type inside the comments will be
+ interpreted.
+ Then I start a postscript environment. From that point on, everything in
+ the file gets dumped directly to the postscript output. So "1 setgray" gets
+ included directly in the PostScript output file. This is the PostScript
+ command to paint things white, not black.
+ Naturally after the one line has been painted white, I must put the default
+ color back to black or else my whole document will be in white! The\stealth
+ and\postscript environments are special because they don't as scope
+ delimiters for internal changes.
+ So if you did a boldface in a Huge environment you'd expect that when the
+ Huge environment ended, that the boldface would go away. The "scope" of
+ boldface was limited to the Huge environment.\stealth and\postscript
+ don't limit scope like that.
+ Here's a trick to try out. Try placing the words "Copyright 1992" before
+ the "1 setgray" line and the words "Jonathan Monsarrat" afterwards. What
+ happens? Does "Copyright 1992" come out in white or black?
+ The answer is that is comes out in white, and if you refer to the Page
+ chapter I can show you why. LameTeX is trying to center this line on the
+ page. To do that it needs to know how long this line is. So instead of
+ printing out the words one at a time, LameTeX stores the words in a big list,
+ and then prints them at the end once the line has been completed. LameTeX
+ always does this.
+ So in the modified version I asked you to make, first a procedure to get
+ the correct font is put on the word list. Then "Copyright" is added to the
+ word list. Then "1992" is added. So far, nothing has been printed. Then the
+ "1 setgray" gets executed. Then "Jonathan" and "Monsarrat" get added to the
+ word list. Finally we reach the end of the line, and when the whole line
+ prints out, all four words are in white because of the "1 setgray" command.
+ The word list, as well as having words and commands on it, can also have
+ numbers. A number on a word list means to move over an amount horizontaly.
+ The\hspace command and others add in horizontal whitespace in this way.
+
+ 6.23 The Dagger Hack
+
+
+ LameTeX is written for PostScript version 1 because I wanted it to work on
+ all PostScript printers. I love PostScript but it was very awkward to work
+ with. For one thing, PostScript 1 doesn't have very good memory management
+ tools. If you're not careful, even a simple hack like piping a thousand words
+ through a small program and printing them will take up a lot of memory,
+ because each word is stored in a string, and that string is never deleted,
+ not even when the string is printed and cannot be accessed.
+ Fortunately, there is a workaround. LameTeX uses the PostScript commands
+ save and restore to do memory cleanup. If it didn't, it would use up so much
+ memory that your document could not print out if it were long. The save
+ command takes a snapshot of the current state of computer (or printer) memory
+ and the restore command erases the current state and returns the computer (or
+ printer) to exactly the state it was in whe the last save command was
+ executed.
+ This happens at the beginning and end of each page, as mentioned in the
+ chapter on Pages.
+ Now here's an interesting question for you. I have this immense picture of
+ a dagger that I want to include in my PostScript page. I want text to flow
+ around the dagger. What should I do?
+ Look in stealth.tex and page_dagger.ps to find the answer. If I were to
+ place the huge Dagger routine outside of a save-restore block, then it would
+ hang around in memory forever, even if I didn't intend to use that particular
+ picture any more in my document. This would be unclean. What I really want to
+ do is to insert the Dagger picture, including the definition - because the
+ definition takes up a lot of room too as well as variables - inside the
+ StartPage routine.
+ The StartPage routine gets called after the save and before the restore. So
+ whatever garbage I throw into memory drawing the dagger will neatly get
+ erased at the end of the page.
+ Also there is the matter of the path defined in PageShape. The dagger
+ itself is some 200 lines of curveto commands! This is way too much curviness
+ and way too detailed for something as macroscopic as placing text. So I have
+ drawn an irregular polygon around the dagger. The polygon works just as well
+ for the simple blocky task of placing text around the dagger. Plus it is a
+ lot simpler because it is made entirely of straight lines.
+ You can view this path by uncommenting the line where it says "Uncomment
+ me" in page_dagger.ps.
+ Actually the description of the dagger itself gets thrown into the
+ In-Between Page space that is not cleaned up, because the StartPage routine
+ is defined along with the page itself in the In-Between Page space.
+ One way to get around this I have implemented for page_demon.ps. That is
+ to have the page description just contain a small bounding box, just like the
+ description for the dagger. The actual drawing of the fancy demon I include
+ in normality.tex, once on each of the three pages. Why would I include the
+ file three times? Doesn't that make my PostScript file bigger?
+ Yes, that is certainly true. But the demon hack is immense, some 25K of raw
+ PostScript code. I really don't want to define a PostScript routine to draw
+ all of that. If I use the include function, the routines that draw the get
+ demon are executed without ever being saved. So it's OK to have a very big
+ PostScript file as long as the file is a long stream of commands. You start
+ getting into trouble when you define procedures with long streams of
+ commands.
+ Unfortunately, this does indeed mean that I have to "guess" where to place
+ the\include demon.ps command, once for each of the three pages.
+
+ 6.24 The Titlebar Hack
+
+
+ The best thing about LameTeX is that if you want to do some pretty radical
+ stuff, LameTeX says "OK! Let's go for it!", whereas TeX and LaTeX would
+ probably say "B-B-But, why would you want to do that? That wouldn't be...
+ (trumpet flare) professional!"
+ Here's a great example. On the title page there are two big hacks,
+ /Weird-Stuff and /Title. Both of these PostScript programs take a string off
+ of the stack and display it in an unusual way.
+ Using these two programs is as simple as starting a stealth environment,
+ starting a postscript environment, and then just inserting the commands!
+ NOTE: Notice how the LameTeX title has holes in it! An omen? A sign of
+ portent about the program itself?
+ Also note that of course I put all of the major graphics coding into the
+ StartPage routine, including the definitions, so that when they are no longer
+ needed these definitions will be erased. The definitions persist between the
+ save and restore, and since all the printed text on the page comes between
+ the save and restore, I can still call these routines from the LameTeX
+ document as long as I do it before the restore command associated with the
+ EndPage.
+
+ 6.25 Page Number Hack
+
+
+ This hack is the logical opposite of the dagger hack. With the dagger hack, I
+ wanted to stuff a lot of PostScript code into the /StartPage routine, get it
+ to draw some stuff, and then destroy it.
+ With the page number, I want the page number to be preserved across pages.
+ It would be a crime if I changed page number 2 to 3, and then when the
+ restore command came along it reverted back to 2! So instead of placing this
+ code in /StartPage, it goes in /EndPage instead.
+ The /EndPage routine gets called after the restore from the previous page
+ and before the save from the next page. It's in-between pages, and any
+ variables changed here, like pagenumber, will remain around. Also the
+ InitPage routine gets called before the first save is done for the page, so
+ it is in-between pages also.
+ Here's another quirk to inbetween-pages. When you're on a page, a special
+ dictionary is used called formatdict. A dictionary is just a place to store
+ variables in PostScript. These variables are accessed directly like normal
+ variables when you're on a page. But in-between, you need a special way to
+ get at the variables. One exception: InitPage does have access to the
+ variables directly, which is how it sets formatdict variables like BM and
+ evenodd without using dictionaries.
+ For example, if I want the bottommargin, I can't just say "bottommargin" to
+ put the bottommargin onto the stack. I have to say "formatdict /bottommargin
+ get", which does the same thing. If you are a PostScript expert, you'll know
+ what I say when I note that I do this to keep plenty of room open in the
+ generic user dictionary.
+
+ 6.26 The Format Dictionary
+
+
+ The most important variables in the format dictionary are:
+
+ baselineskip
+ The number of lines to skip between lines.
+
+ bottommargin
+ The margin at the bottom of the page. The LaTeX words textheight and
+ textwidth don't mean anything to LameTeX. They get translated into left,
+ right, top, and bottom margins on the assumption that the textheight and
+ textwidth commands apply to a normal-sized 8.5x11 inch paper.
+
+ bslot
+ The X coordinate of the left hand side of the current line.
+
+ coords
+ A very complex representation of the page path.
+
+ eslot
+ The X coordinate of the right hand side of the current line.
+
+ justify
+ An integer, can be 102 (or 'f') for full justify, 99 (or 'c') for
+ centered, 114 (or 'r') for flush right, or 108 (or 'l') for flush left.
+
+ leftmargin
+ The margin at the left hand side of the page. There is no distinction
+ between evensidemargin and oddsidemargin.
+
+ newfontcmd
+ The command of the "currently used font", which doesn't really have to be
+ a font command at all.
+
+ para
+ Whether the end of this line will mark a new paragraph.
+
+ parindent
+ The amount of indentation for the first line of each paragraph.
+
+ parskip
+ The amount of vertical space to skip in-between paragraphs.
+
+ rightmargin
+ The margin at the right hand side of the page. The LaTeX words textheight
+ and textwidth don't mean anything to LameTeX. They get translated into
+ left, right, top, and bottom margins on the assumption that the textheight
+ and textwidth commands apply to a normal-sized 8.5x11 inch paper.
+
+ savetype
+ The currently saved state, saved by the save command.
+
+ topmargin
+ The margin at the top of the page.
+
+ vspace
+ The amount of vertical space to skip for the next paragraph.
+
+ welem
+ The number of elements in the word list.
+
+ wlen
+ The total length of all the words in the word list, including a single
+ space between each word.
+
+ wlist
+ The word list itself. Feel free to mess around with it. Please make sure
+ to set "welem", "wlen", and "woids" to appropriate values or it'll break!
+ The correct way to add stuff to wlist is put doing an indexed get and put
+ into the array. The maximum length of wlist is 100 elements. It's defined
+ at the top of format.ps if you want to change it.
+
+ woids
+ The number of elements in the word list that are actually words.
+
+ xpos
+ The current X position.
+
+ ypos
+ The current Y position of this line.
+
+ 6.27 The Icon Hack
+
+
+ Notice how each page description has a different definition for
+ LeftMarginIcon. This is because each page is a little different and "where to
+ put icons in the left margin" varies a little.
+ So putting the little Wizard in the text is as simple as starting a stealth
+ environment, starting a postscript environment, and called the
+ /LeftMarginIcon routine to display the Wizard.
+ Notice that the LeftMarginIcon uses one (or two) formatdict variables: ypos
+ (and maybe bpos). Because the LeftMarginIcon routine is being called from
+ inside the page, there is no need to do a fancy dictionary lookupt to get
+ their values.
+
+ 6.28 Doing it Yourself in PostScript
+
+
+ If you want to schlep a word onto the wordlist, say "(elephantine) NW" which
+ is the PostScript command that puts the word "elephantine" onto the word
+ list. A space will automatically be added for you. Do not put a space in your
+ words. Instead use two PostScript calls. For example, do not say "(ice cream)
+ NW". Instead say "(ice) NW (cream) NW".
+ If you have a really long sentence, then you can just say "(ice cream)
+ Parse". Parse is a PostScript routine that will break a string up by spacing
+ into "(ice) NW (cream) NW".
+ If you want to schlep some horizontal whitespace onto the wordlist, you can
+ use the LaTeX\hspace command. If you really want to do it in postscript,
+ then "54.0 HSpace" is the PostScript command to add 54 points of horizontal
+ space to the word list. There are 72 points in an inch.
+ Also, naturally you can gronk the value of any of the variables in the
+ fontdict directly. Grok-p? Keep in mind that if you change them in PostScript
+ instead of in LameTeX, then LameTeX will "lose track" of them and may not
+ reset them for you. You will have to put them back to their original values
+ yourself.
+
+ 6.29 Using\pscmd to Do It When You Want It
+
+
+ the white-painting applied to the whole line, not just parts of it. You
+ couldn't paint just part of a line white.
+ Well, here's how. I'm going to tell you twice. This section is the easy
+ slick way. The next section tells you the same thing, if you want to get
+ your hands dirty, which I encourage.
+ Anyway, for the easy way, take a look at example5.tex.
+ Here I define a command /Smiley that alternately either draws a picture
+ without changing the currentpoint, or calls READJUST.
+ Sometimes LameTeX will be building a line made out of 10 point type when
+ suddenly the user wants to get 30 point type. Well, since the line started on
+ this 10 point line, all the 30 point letters are too tall and will overwrite
+ the previous line just above the current line! There is a PostScript command
+ that LameTeX calls automatically when such oopses occur. That's /READJUST. It
+ takes a vertical length to skip from the stack, in points. There are 72
+ points in an inch. I have some command "in" defined somewhere that just
+ multiplies any number by 72 to convert it into points.
+ You can call /READJUST yourself no problem. For example, I do it here in
+ example5.tex to make the line tall enough to accept the smiley face.
+ Don't forget! At the end of every page, everything gets wiped by the
+ PostScript restore routine. Here Smiley is defined On-Page in the middle of
+ page 1. On page 2 it would be undefined. If you want your routine to hang
+ around for page two, you either need to define it In-Between Pages (the bad
+ wicked way) or define it in /StartPage (the good way of lightness and being).
+ Notice that the\pscmd command in placed inside braces. This delimits what
+ is now the "Smiley" environment. For example, if Smiley had changed the font,
+ the font change would have remained in effect until the end-brace delimiter.
+ The way this is implemented is really for fonts, and being able to add your
+ own PostScript functions is not something I had envisioned at first. I will
+ fix this later, but for the time being realize that your function Smiley, if
+ it not delimited, will be executed at the beginning of each new line. Also,
+ any font changes like italics or boldface will kill your Smiley environment.
+ Try taking out the braces around the\pscmd and you will see what I mean.
+ I hope you can see how you could use this to include really big pictures,
+ not just small smiley faces. You get to have complete control over how big
+ the picture is, by passing its width and height to READJUST. Alternately, you
+ can modify the wlist array directly if you want something special. In later
+ versions, the READJUST command will be able to handle non-rectangular
+ boundaries just like pages do.
+ There is no way to do this currently unless you modify the Page on the fly
+ by defining the "current page" as something new (including the box around the
+ Smiley" and forcing a re-assessment of the dimensions of the page.
+ Here are the rules for a routine that you use with\pscmd:
+
+1. When your routine is called, the currentpoint will be set to where the next
+ word would normally be placed. Make sure that the currentpoint is defined
+ when your routine is finished. You can accomplish this neatly by just doing
+ a Postscript "gsave" at the beginning of your routine and a "grestore"
+ afterwards.
+
+2. Don't forget that you have access to the entire word list and format
+ dictionary.
+
+3. When your routine gets called, either false or true will be on the stack.
+ The value will be "false" if LameTeX is building the word list and "true" if
+ LameTeX is printing the word list. You gotta either use this or pop if off
+ the stack by making the first command in your PostScript routine be "pop".
+
+4. When you split up a word, like by saying Will you be my SWEET \ pscmd
+ /drawheart HEART? LameTeX will make an attempt to put Sweet and Heart all in
+ the same word. It won't try really hard though. There is no concept of
+ "glue" in LameTeX. I gotta add this sometime soon. So if a pagebreak occurs,
+ or a line break, LameTeX will gladly put SWEET at the end of one line and
+ HEART at the beginning of another. Oops!
+
+ 6.30 Behind the Scenes of\pscmd
+
+
+ Remember the "Word List"? You too can schlep things onto the word list. This
+ is exactly what the\pscmd does, but if for some reason it doesn't work or
+ you want to try fiddling with the PostScript code directly, it's simple.
+ Here's how.
+ The most interesting part is schlepping a command onto the word list. Take
+ a look at example3.tex.
+ To schlep a command onto the word list, I have to first register the
+ command by placing it onto the end of the fontnames array. From now on I just
+ refer to this command by its number which I store in the variable FUNKYnum.
+ The actual syntax for schlepping a command onto the world list is to say \
+ [ FUNKYnum false ] NewFont", where FUNKYnum is an index to my function in the
+ fontnames array, and the boolean is false if I want LameTeX to add a space
+ after this NewFont command. If the boolean is false then LameTeX puts no
+ space between a word before the NewFont command and a word afterwards.
+ The line \ [ temp false ] NewFont" is important. Once I have started
+ playing God with the LameTeX PostScript code, I should remember to put the
+ font back to the way it was.
+ I hope it's obvious that the routine would't have to be a Font-changing
+ routine at all. It could be any routine. Here are some things to keep in mind
+ though. Remember the flow chart from the chapter on pages? The routine will
+ be executed twice, once when the word list is being compiled, and once when
+ the word list is being printed.
+
+ 6.31 The Wigglies Hack: using SHOWIT
+
+
+ I have written a PostScript hack called format.ps that does all the major
+ formatting for LameTeX. The command that it uses to show words is the SHOWIT
+ routine, which is defined as follows: "/SHOWIT { show } bind def".
+ Feel free to redefine this routine if you want to change the way the words
+ look in any way. The routine will be called with the currentpoint set to the
+ appropriate place and the string to be printed on the stack.
+ I wrote a cool hack based on this. Try it out with example4.tex. And don't
+ forget: When you play God with LameTeX's PostScript output, be sure to put
+ things back! When I have finished hacking up SHOWIT with my own definition, I
+ put it back by saying "/SHOWIT { show } bind def".
+ You can't do this stuff with TeX macros! (Although you could argue I
+ suppose that only a loony would try...)
+
+ 6.32 Forcing Word Positions with NW
+
+
+ NW is defined as follows: "/NW NextWord bind def". NextWord is the routine
+ that is called repeatedly, once for each word, to place the words in the word
+ list. Feel free to modify this routine too if you want to perform some
+ operation to the strings before they get included in the word list.
+
+ 6.33 The Skew Page Hack
+
+
+ Look in the files starting.tex and page_skew.ps for an example of diagonal
+ text. LameTeX is not really capable of placing text in any way except
+ horizontally (unless you redefine the SHOWIT and NW routines). So therefore,
+ in order to get diagonal text, the page must be slanted. So although it looks
+ to the user like the text is slanted and the page is an upright rectangle, to
+ LameTeX it appears as if the page is a very wide page in the shape of a
+ diamond on its end. And the text appears horizontally.
+
+ 6.34 The Checkerboard Hack
+
+
+ Check out example6.tex. Here is an example of two virtual pages being placed
+ on a single physical 8.5x11 inch piece of paper, using a variable flip to
+ determine which virtual page comes "next". I hope you can see that it
+ wouldn't be hard to define several virtual pages on a single physical page
+ (like for making index cards or mailing labels).
+
+ 6.35 Bugs?
+
+
+ There are no bugs in LameTeX.
+
+
+
+ Chapter 7
+
+ The Future of LameTeX
+
+
+
+ Most of my effort was to make this understand LaTeX code.
+ Now I can concentrate on other functionality, like making
+ it work better, understand more LaTeX functions, and - best
+ of all - providing easier ways to include PostScript hacks
+ into the document.
+ I want to try out some experiments with on-line document
+ viewing. There's no reason why a TeX-like language like the
+ Stealth Commands couldn't drive PostScript animation
+ through a previewer or let the user include audio in the
+ document.
+ Although I love PostScript dearly, more coding really
+ should go into C++. I'll let PostScript do all the fancy
+ graphics, but C++ should do more of the decision making,
+ because it is very difficult to write and maintain large
+ programs in Postscript version 1.0. I would make use of
+ some fancy PostScript interpreter to do some of the
+ PostScript processing while processing the input file.
+ LameTeX should in general produce a smaller output. I
+ would like to write a compress mode to make sleek
+ uncommented PostScript.
+ There is no glue in LameTeX currently, which means that
+ two words that happen to be side by side may have a
+ pagebreak or a linebreak in-between them. There is no way
+ to prevent this in the current version of LameTeX.
+ You can't use a previewer program that looks for the
+ fancy Adobe PageBreak PostScript comment. Sorry. The
+ PostScript program doesn't "know" where the page breaks are
+ going to come until run time.
+ I would like to write better tools and better
+ documentation so that people unfamiliar with PostScript can
+ still try out a few hacks like grayscale or font changing.
+ Obviously, LameTeX should handle spacing better. It
+ should do vertical alignment. LameTeX should be smart
+ enough to handle the TeX hyphenation dictionary and be able
+ to handle the fonts directly, which are currently being
+ done in a big hack that barely works.
+ Using normal PostScript scaleable fonts should be simple
+ and let the user save a lot of room in the PostScript
+ output file.
+ The user should be able to define new LameTeX commands.
+ This includes normal ones attach to LaTeX made with\
+ newcommand\newenvironment\newtheorem, and special
+ Stealth ones hooked either to C, C++, or PostScript code.
+ I'm hoping to hear a slew of requests for enhancements
+ and (ahem) bug fixes! So I should have plenty to do.
+ I'm going to have to do some investigation to see if I
+ can "trick" LaTeX or TeX into giving me a raw paragraph
+ with a bounding box. If so, then I could hook up a great
+ deal of functionality like math mode by fooling TeX into
+ making the output and then snarfing the result.
+ The token parsing is done all wrong and should be cleaned
+ up and made to model LaTeX parsing.
+ TeX is a trademark of the American Mathematical Society.
+
+ PostScript is a trademark of Adobe Systems Incoporated.
+
+ LameTeX ain't a trademark!
+
+
+
+ Chapter 8
+
+ Errors
+
+
+
+ If you get an error like this "stackoverflow offending
+ command: pathforall Stack: [ /coords -mark- ..... ] ", this
+ means that the path you are using for the page is very
+ curved and not particularly flat. PostScript is having
+ trouble keeping track of all the points! You should double
+ or triple the setflat value.
+ If you get an error undefined in\end, you ended a\
+ begin{postscript } command with something else that was
+ not\end{postscript}.
+ A lot of problems come from having your margins too wide!
+ Make sure that you margins are small enough so that your
+ text will fit around the pictures.
+ If you get an error "false false false false false false
+ false stack overflow" then you're using\pscmd on a
+ routine that doesn't handle the incoming boolean. Just add
+ a PostScript pop to the beginning of the PostScript routine
+ you call with\pscmd.
+
+
+
+ Chapter 9
+
+ Commands
+
+
+
+ This is the complete list of commands that LameTeX
+ understands. It's formatted in an easy to read
+ alphabetically sorted list.
+ The stealth commands are:\stealth\postscript\
+ includeps\pspage\ignore\pscmd\STEALTH
+ The normal LaTeX commands are:\#\%\&\Huge\LARGE
+ \Large\\\_\addtolength\backslash\begin\bf\
+ bigskip\center\chapter\chapter*\clearpage\
+ description\document\documentstyle\em\end\
+ enumerate\flushleft\flushright\footnotesize\hspace
+ \hspace*\huge\include\it\item\itemize\label\
+ large\ldots\medskip\newlength\newline\normalsize
+ \par\paragraph\paragraph*\part\part*\quotation\
+ quote\raggedleft\raggedright\ref\rm\sc\
+ scriptsize\section\section*\setlength\sf\sl\
+ small\smallskip\subparagraph\subparagraph*\
+ subsection\subsection*\subsubsection\subsubsection*\
+ tiny\today\tt\verse\vspace\vspace*\\
+
+
+
+ Chapter 10
+
+ Plain Text
+
+
+
+ If you want to make LameTeX produce plain text output,
+ which is to say a plain ASCII output, it can do that.
+ Just type lametex -t yourfile.tex and the result will be
+ placed in the file yourfile.txt.
diff --git a/support/lametex/doc/normality.tex b/support/lametex/doc/normality.tex
new file mode 100644
index 0000000000..289c15d90b
--- /dev/null
+++ b/support/lametex/doc/normality.tex
@@ -0,0 +1,169 @@
+% normality.tex
+%
+% This is a LameTeX document. You may use the LameTeX text formatter
+% to do fancy graphic formatting from this file into PostScript.
+%
+% Alternatively, this file may be formatted with normal LaTeX.
+%
+% This document describes the LameTeX text formatter, version 1.0.
+%
+% Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+% edit and use as long as this copyright statement remains intact.
+%
+% \begin{stealth}
+% \setlength{\textwidth}{8.1 in}
+% \setlength{\oddsidemargin}{-.8 in}
+% \pspage{page_demon.ps}
+%
+% \end{stealth}
+
+\chapter{How to Get Normal LaTeX Stuff}
+
+\section{A Note to TeX Professionals}
+% \STEALTH \includeps{demon.ps}
+I love LaTeX. It's great. I just learned it as I was writing LameTeX. I'm
+sure TeX is cool too, although I have not gotten around to learning it
+yet. I was a Scribe Math hacker and have done lots of letterpress
+printing. TeX has a bad reputation though. I thought that learning
+it would be so hard that I might as well write my own formatter!
+Others think that TeX kind of straight-jackets you into professional
+documents.
+
+Normally that's great. My Mom isn't around any more to clean my room
+and tell me how to write professionally. And a letterpress doesn't
+care if you place your letters upside down.
+
+But occasionally (or {\em often} if you're strange like me) I get the
+urge to splash 100 point type or stick random bugs all over the page.
+Once to advertise an event I hung up a huge 18 foot poster taped
+together out of PostScript pages. You ever get that urge?
+
+Anyway, LameTeX is a fun toy. Just don't take it too seriously.
+
+{\em And no, it's not written in TeX macros!}
+
+\section{The LaTeX Length Parameters}
+
+If LaTeX is royalty, then LameTeX is a prostitute. If you want to
+change the margins {\em in the middle of the page} using
+$\backslash$textwidth, LaTeX kind of sticks its nose up at you and
+says to go implement your own margin library font program hierarchy
+system out of TeX macros. LameTeX just says ``OKAY!'' and hops in the
+sack with you. No questions.
+
+So feel free to change a lot of stuff. LameTeX won't care. I really
+urge you to put random stuff inside of a stealth environment, however,
+so that normal LaTeX won't balk at it and refuse to serve you.
+
+It's like playing an adventure game. If you die, who cares, it's just
+a program. But if you don't try various things, you won't have any fun.
+
+There is no ``textwidth'' in LameTeX. When you set textwidth it just
+sets the right margin to 8.5 inches minus the textwidth given minus the left
+margin.
+
+Similarly there is no ``textheight''. When you set textheight it just
+sets the bottom margin to 11 inches minus the textheight given minus
+the top margin.
+
+Please note that just like LaTeX, LameTeX defaults to ridiculous
+margins. There's a good chance that if your margins are large at all,
+that the text may not fit inside the page description path! This is
+especially true of the {\tt page\_check.ps} page description, which
+breaks the page into boxes that are only and inch wide or so.
+
+\section{Tiny Differences from LaTeX}
+
+You can't use fine-tune spacing commands. You won't get a table of
+contents anywhere, and you can't do table and figures.
+
+$\backslash$vspace is meant to give the absolute vertical distance
+between the current line and the last line (or top of page). If you
+use two of them in a sequence, you're likely to have the larger one
+apply only, not both together.
+
+There is no concept of ``glue'' in LameTeX. I bent over backwards
+trying to make it possible to put a backslash next to a command when I
+want to type something like $\backslash$myfancycommand. Unfortunately,
+LameTeX views these as two tokens from which the space in-between has
+been ``deleted''. It's happy to break a line in the middle. You'll
+probably see that scattered throughout this document. It only happens
+when you print the special characters $\backslash$\% , $\backslash$\_ ,
+and the like. This ``ungluing'' will
+also occur if you change fonts or change environments in any way in
+the middle of a word. So if my sentence is in italic but the period at
+the end of the sentence is in roman type, the period might be placed
+on a newline by itself!
+
+% \STEALTH \includeps{demon.ps}
+
+In general, LameTeX will occasionally screw up the spacing. Oops. No,
+it doesn't do kerning! Geez\ldots
+
+To avoid this it's best to include sentence punctuation in whatever
+environment happens to precede it. For example, use ``Pay me in
+\{ $\backslash$em cash. \}'' instead of ``Pay me in
+\{ $\backslash$em cash \}.''
+
+You can't make small caps, typewriter, or sans serif font into italic
+or bold face. I didn't know it was possible until recently so I didn't
+put it into the program.
+
+LameTeX is quite happy to give you widows and orphans. If this sort of
+thing keeps you awake at night, you are taking LameTeX too seriously
+and should go play Tetris until you go insane (this doesn't take long).
+If you don't know what widows and orphans are, good. I won't tell you.
+
+\section{PostScript is a Great Language, Too Bad it Sux}
+
+I love PostScript. LameTeX makes extensive use of the PostScript
+programming language. I think PostScript is great. However, when a
+PostScript program breaks, your printer is more likely to say ``ARGH''
+or silently start whining rather than to print out some message like
+``I say, old man. You've got a spot of trouble on line 36 you see. It
+seems (if I may venture to take a liberty) that you made a misspelling
+error in the word 'sux'.'' If it's a LameTeX bug then get in touch with me
+and I'll try to fix it. But if you're hacking PostScript through
+LameTeX it's very easy to screw things up. The solution is not to get
+scared and stop playing with it. Send me some mail and we'll work it
+out together. Chances are I forget to document some assumption I'm
+making somewhere about how to use the cool PostScript routines. Once I
+tell you about it things will be fine.
+
+\section{LameTeX Fonts}
+
+To get different fonts in LameTeX, you can just use the normal LaTeX
+font-changing operators. It is not possible right now to get normal
+PostScript fonts using a LameTeX operator. However there is a cool
+workaround if you want to try it out. The program originally worked
+that way on PostScript fonts but then I figured that people would {\it
+really really} want the normal LaTeX fonts, so I put those in,
+instead. For sure the next version of LameTeX will allow the user to
+choose ``normal'' scaleable PostScript fonts instead of the somewhat
+tedious LaTeX bitmaps. Documents which used only the scaleable fonts
+would be much smaller and compile faster.
+
+It is possible for you to make your own PostScript hack to change the
+appearance of a word, and this can certainly include using a scaleable
+font if you wish. This is described in the hacks chapter with the
+command $\backslash$pscmd.
+
+% \STEALTH \includeps{demon.ps}
+
+LameTeX is very versatile about changing margins in mid-document and
+stuff like that.
+
+\section{Getting References}
+
+LameTeX allows you to use the LaTeX commands $\backslash$ref and
+$\backslash$label, but not $\backslash$pageref. If you have forward
+references, you do {\em not} need to run LameTeX twice. LameTeX is
+smart enough to do its own recovery if you have forward references.
+Pretty neat, huh?
+
+% Replace the current small margins with the wider margins.
+% \begin{stealth}
+% \setlength{\textwidth}{6 in}
+% \setlength{\oddsidemargin}{0.25 in}
+% \pspage{page_demon.ps}
+% \end{stealth}
diff --git a/support/lametex/doc/pages.tex b/support/lametex/doc/pages.tex
new file mode 100644
index 0000000000..4aef4b12da
--- /dev/null
+++ b/support/lametex/doc/pages.tex
@@ -0,0 +1,251 @@
+% pages.tex
+%
+% \begin{stealth} \pspage{page_shake.ps} \end{stealth}
+
+\chapter{How Pages are Handled in LameTeX}
+
+If you're going to use the fancy pages included with this release of
+LameTeX, but not try to design your own or make any PostScript hacks,
+then you don't need to read about LameTeX pages. However, if you are
+going to try your own hand at designing pages and fancy graphics, you
+should learn a little bit about how LameTeX works so that things fit
+together smoothly.
+
+I'd love to hear what you've used LameTeX for. Please send e-mail to
+{\tt jgm@cs.brown.edu}.
+
+\section{Behind the Scenes of LameTeX}
+
+\subsection{The Page Description}
+
+A Page Description is a short program written in PostScript that
+defines some standard stuff about the page that text gets placed on.
+
+Take
+% \begin{stealth} \begin{postscript}
+% /Wizard LeftMarginIcon \end{postscript} \end{stealth}
+a look at {\tt page\_latex.ps}, which is the standard plain
+vanilla LaTeX-looking page. Here are the routines defined in this file:
+
+\begin{description}
+
+\item[PageShape]
+ is a {\bf required} routine that defines a PostScript
+path for the page. A path is basically a squiggle on the page that
+never gets drawn. It is a closed loop of arbitrary shape. It is pretty
+% \begin{stealth} \begin{postscript}
+% /Wizard LeftMarginIcon \end{postscript} \end{stealth}
+easy to make a simple path out of straight lines using the PostScript
+{\tt moveto} and {\tt lineto} commands, but it is possible to define a
+very complex path with curves and fancy wiggles also. You can read
+more about paths in the PostScript blue book, or chapter 4 of the red book.
+
+The PageShape routine should leave a number on the stack called a {\em
+setflat value}. If your path contains fancy curves, it is going to get
+flattened into a series of lines using the PostScript {\bf
+flattenpath} operator. Usually ``currentflat 8 mul'' works fine,
+although if you want more preciseness and think your printer can
+handle it, try smaller values. If you don't understand this, just use
+``currenflat 8 mul'' and you should be fine.
+
+\item[StartPage] is a {\bf required} routine that draws anything or
+sets up anything required at the beginning of a page. Feel free to put
+some fancy graphics here.
+
+\item[EndPage] is a {\bf required} routine that draws anything or sets
+up anything required at the end of the page. For example, the one in
+{\tt page\_latex.ps} prints
+
+\item[InitPage] is not required. It is just a simple enclosure for
+defining some variables that {\em are} all required:
+
+\begin{description}
+\item[fillout] tells LameTeX whether you want to place text {\em
+inside} the defined path, or {\em outside} of it. If you set fillout to true
+LameTeX will not place any text inside your path.
+
+\item[evenodd] is a fancy PostScript way of determining what is inside
+and what is outside of a path. If this is true then it uses the
+evenodd rules; false means use the winding rule. There's a description
+of what the heck this means in the PostScript red book in Chapter 4,
+section 6. Basically setting this variable to true means that every
+part of the path delimits an outside-inside boundary.
+
+\item[BM] In the event that fillout is true, this is the bottom of the
+bounding rectangle that will be filled with text. If parts of the path
+extend below this given number, it will be reset to be below the path.
+
+\item[TM] In the event that fillout is true, this is the top of the
+bounding rectangle that will be filled with text. If parts of the path
+extend above this given number, it will be reset to be above the path.
+
+\item[LM] In the event that fillout is true, this is the left of the
+bounding rectangle that will be filled with text. If parts of the path
+extend to the left of this given number, it will be reset to be to the
+left of the path.
+
+\item[RM] In the event that fillout is true, this is the right of the
+bounding rectangle that will be filled with text. If parts of the path
+extend to the right of this given number, it will be reset to be to
+the right of the path.
+
+\end{description}
+
+\item[LeftMarginIcon] is not required. I just use it do define where
+the left margin is, in case I want to place an Icon there.
+
+\end{description}
+
+\subsection{The Page Cycle}
+LameTeX has three modes that it can be in:
+\begin{enumerate}
+\item
+% \begin{stealth} \begin{postscript}
+% /Wizard LeftMarginIcon \end{postscript} \end{stealth}
+ In-Between Pages
+\item On a Page, In-Between Lines
+\item On a Page, On a Line
+\end{enumerate}
+
+The cycle generally goes like this:
+
+\begin{enumerate}
+
+\item LameTeX starts off in ``In-Between Pages'' mode.
+
+\item In-Between Pages mode processes commands until it encounters any
+plain text or LameTeX command that might require that a new page be
+started. When this happens it does the following:
+
+\item Execute the {\tt save} command
+
+\begin{enumerate}
+\item Start a page by calling the /StartPage routine.
+
+\item Do some internal initialization and call the /PageShape routine
+
+\item Change to ``On a Page, In-Between Lines'' Mode.
+
+\item On a Page, In-Between Lines mode processes commands until it
+encounters any plain text or LameTeX command that might require that a
+new line be started. When this happens it does the following:
+
+\begin{enumerate}
+
+\item Change to ``On a Page, On a Line'' mode.
+
+\item Find a new line. NOTE: If you have broken the page up into two
+or more horizontal regions (like {\tt page\_dagger.ps} does, then know
+that a ``newline'' really means a new ``open space to put words''.
+It's possible to have ``two new lines'' horizontally next to one
+another. One goes on the left side of the dagger page description. The
+next new line starts on the right side at the same horizontal
+position. If you don't like this functionality, then don't define
+regions that have two sides like the {\tt page\_dagger.ps}. Instead
+define ``two pages'' like how {\tt page\_check.ps} works. The first
+page will get filled before the second is begun.
+
+\item Initialize a word list
+that will contain information about this line. The very first item on
+this word list will be a command to change to what is considered the
+proper font when this line was begun.
+
+\item If appropriate for each new word or command read in, it will
+either add the word to the word list or add the {\em command itself}
+to the word list. For example, a boldface command in between the words
+FOO and BAR gets inserted in the word list between FOO and BAR. It
+also get executed immediately.
+
+\item Also for each new word read in, it checks to see if the word
+list it is building overflows the width of the current line (as
+defined in a very fancy way by the PostScript Page Definition file and
+the PostScript path given by /PageShape). If there is an overflow, or
+a natural end of line given by a text formatting command, then it does
+the following:
+
+\begin{enumerate}
+
+\item Go through the word list from the beginning to the end and for each
+element, either print it if it is a word, or execute it if it is a
+command. Since the word list was initialized with a font-setting
+command, the first thing this loop will do is choose the proper font.
+Add a little space between words if text is supposed to be fully
+justified.
+
+\item If the cause of printing this line was a natural end of line,
+then go to step 3.3.
+
+\item Otherwise, create a new word list, and keep cycling in ``On a Page,
+On a Line'' mode.
+
+\end{enumerate}
+
+\end{enumerate}
+
+\item Eventually, going to a new line means falling off of the bottom
+of the page, and a we change back to ``In-Between pages mode'', and do
+the following:
+
+\end{enumerate}
+
+\item Execute the {\tt restore} command
+
+\item End a Page by calling the /EndPage routine.
+
+\item Go to step 2.
+
+\end{enumerate}
+
+LameTeX horizontally aligns the words by remembering all the words on
+the current line, and then printing the whole line at once when the
+line gets filled up. Printing all the words at once means that it can
+be smart enough to justify the text to exactly match both margins.
+
+There
+% \begin{stealth} \begin{postscript}
+% /Wizard LeftMarginIcon \end{postscript} \end{stealth}
+is no concept of vertical alignment. Unlike LaTeX, LameTeX does {\bf not}
+remember all the lines in a paragraph and then print the paragraph all
+at once in the right place.
+
+The {\bf save} and {\bf restore} commands are PostScript operators to do
+memory management. Basically what happens is that when the {\tt restore}
+command is encountered, the entire current memory of the printer is
+replaced with what it was like when the {\tt save} command was
+executed.
+
+This means that if you set a variable in your StartPage routine, you
+will be able to access that variable throughout the length of the
+page, but you will not be able to access it in the EndPage routine. If
+you want to have some always-changing always-remembered variable like
+the page number, use the InitPage and EndPage routines instead.
+
+Note
+% \begin{stealth} \begin{postscript}
+% /Wizard LeftMarginIcon \end{postscript} \end{stealth}
+that the InitPage and EndPage routines are {\em outside} of the
+save-restore loop. So anything that happens in these two routines
+stays around forever.
+
+\subsubsection{Which Commands Force A New Page Or A New Line?}
+
+Check it out in {\tt Operator.C}. Yes, that's a C++ source file. Don't
+be afraid of it - it won't hurt you. In this file at the top is a huge
+table of command names. The first row is the command name, the second
+is a boolean (either a 0 or a 1) saying whether this command is a
+stealth command. The third is a boolean (either a 0 or 1) saying
+whether or not a new page or new line should be started if this
+command is executed In-Between Pages or Not-On-A-Line.
+
+Also, all plain text words force On-A-Line-ness and On-A-Page-ness.
+
+\subsubsection{Specifying the Page Description Directories}
+
+LameTeX will look in the current directory to find page description
+files or any other postscript files, but if it cannot find them you
+must tell it where to look. You can use the -p command, explained in
+the startup chapter, or set your environment variable LAMETEX\_PS\_PATH
+to some path which will be searched for postscript files. The current
+directory and the LameTeX main library directory will always be searched.
+
+There is a great deal more about this in the PostScript chapter.
diff --git a/support/lametex/doc/plaintext.tex b/support/lametex/doc/plaintext.tex
new file mode 100644
index 0000000000..2b4549d129
--- /dev/null
+++ b/support/lametex/doc/plaintext.tex
@@ -0,0 +1,7 @@
+\chapter{Plain Text}
+
+If you want to make LameTeX produce plain text output, which is to say
+a plain ASCII output, it can do that.
+
+Just type lametex -t yourfile.tex and the result will be placed in
+the file yourfile.txt.
diff --git a/support/lametex/doc/starting.tex b/support/lametex/doc/starting.tex
new file mode 100644
index 0000000000..35f0473073
--- /dev/null
+++ b/support/lametex/doc/starting.tex
@@ -0,0 +1,219 @@
+% starting.tex
+%
+% \begin{stealth} \pspage{page_skew.ps} \end{stealth}
+
+\chapter{Simple LameTeX Formatting}
+
+This chapter introduces to the essentials of running the
+LameTeX program, but is primarily an overview of LaTeX buzzwords and
+syntax.
+% The below text should only be printed in the LameTeX version. When
+% running LaTeX there are no little wizards to see!
+% \begin{stealth} Those grossly familiar with LaTeX can just glimpse at the
+% little wizards and skip to the next section. \end{stealth}
+
+\section{Running LameTeX}
+
+\subsection{Useful Buzzwords To Know}
+
+A {\em LaTeX file} is a text file full of the words of your document,
+plus some fancy formatting commands. The LaTeX text formatter knows
+how to interpret the formatting commands from your LaTeX file and
+produce a printed result. The filename of a LaTeX file usually ends
+with the suffix ``.tex'' but this is not required.
+
+A {\em LameTeX file} is just like a LaTeX file, except that LameTeX
+has some extra text formatting commands that LaTeX doesn't know. Also,
+LameTeX doesn't know all of the commands that LaTeX knows.
+Fortunately, for the basic commands, both programs work fine. For
+reference, there is a complete list of all text formatting commands
+that LameTeX understands at the end of this document.
+
+LaTeX will understand any well-written LameTeX document because the
+fancy LameTeX commands are ``hidden'' inside comments. Any LameTeX
+command that LaTeX doesn't know is called a {\em stealth command}.
+
+A big part of LameTeX is being able to make your own very fancy
+page descriptions. A {\em page description file} is a file
+full of some PostScript page descriptions, written in the PostScript
+programming language.
+
+\subsection{Example 1 - A Plain Vanilla Text File}
+
+LameTeX comes with a number of example LameTeX files. They all
+begin with the prefix ``example'', then a number, and end with the
+conventional suffix ``.tex''.
+
+Try formatting the LameTeX file {\tt example1.tex} by typing {\tt
+lametex example1.tex}. LameTeX will process the file, converting it to
+the graphics language PostScript. Your screen should look something
+like this:
+
+\begin{tt}\begin{flushleft}
+vegas\% {\bf lametex example.tex} \\
+This is LameTeX, C++ Version pre 1.0 \\
+Processing example1.tex... \\
+Opening example1.PS for temporary output... \\
+Including PostScript file /home/jgm/PS/Lametex/page/page\_latex.ps \\
+Making dummy file for snarfing LaTeX fonts... \\
+Snarfing LaTeX fonts... \\
+This is TeX, C Version 3.0 \\
+(lametex.tex \\
+LaTeX Version 2.09 (24 May 1989) \\
+(/cs/lib/tex/inputs/report.sty \\
+Document Style `report' (13 Nov 89). \\
+(/cs/lib/tex/inputs/rep10.sty) (/cs/lib/tex/inputs/titlepage.sty)) \\
+(/cs/lib/tex/inputs/10pt.sty) (lametex.aux) [1] (lametex.aux) ) \\
+Output written on lametex.dvi (1 page, 344 bytes). \\
+Transcript written on lametex.log. \\
+This is dvips 5.47 Copyright 1986-91 Radical Eye Software \\
+' TeX output 1992.08.22:0325' - lametex.ps \\
+(tex.pro). [1] \\
+\hspace{1 cm} ** SNARF! ** \\
+Created PostScript file example1.ps \\
+vegas\% \\
+\end{flushleft}\end{tt}
+
+LameTeX has produced a new file, {\tt example1.ps} that you can print
+on any PostScript printer using the {\tt lpr} command. Alternatively,
+you can view it on-line by using GhostScript or some other PostScript
+previewer. It is recommended that you {\em always} use a PostScript
+previewer before printing, just to make sure that you get what you
+want.
+
+As part of the text formatting process, LameTeX must acquire the
+correct ``official'' LaTeX fonts, and to do this, it makes a small
+trojan horse file and tricks LaTeX into interpreting it. The dummy
+file it creates is {\it lametex.tex}
+% \begin{stealth} \begin{postscript}
+% /Wizard LeftMarginIcon \end{postscript} \end{stealth}
+which is formatted by LaTeX to
+become {\it lametex.ps}. All temporary files are deleted after they're
+used.
+
+You are welcome to omit the suffix {\em .tex} if you wish, just as
+with LaTeX. For example, you could have typed {\tt lametex example1}.
+
+\subsection{Specifying the Default Page Description File}
+
+% \begin{stealth} \begin{postscript}
+% /Wizard LeftMarginIcon \end{postscript} \end{stealth}
+
+The {\em default page description} is the PostScript file that is used
+to decide what the page should look like, if you don't specify a page
+description. You can use the -p command line option to specify a new
+page description. Try typing {\tt lametex -p page\_skew.ps
+example1.ps} to format the same example LameTeX file with a different
+page description. You can use any of the page descriptions in the
+LameTeX page description directory.
+
+If you don't specify the default page description, it automatically
+defaults to {\tt page\_latex.ps}.
+
+You can use the -t command to produce plain ASCII text output. Just
+type {\tt lametex -t yourfile.tex} and the result will be
+placed in yourfile.txt.
+
+\section{A Brief Review of LaTeX}
+
+Following is a brief review of what normal LaTeX commands look like.
+You should peek at a real LaTeX manual if this section confuses you.
+
+If you formatted {\tt example1.tex}, you saw that the printed result was
+placed so that it lined up on both columns. Each new paragraph was
+indented, and the title was centered on the page.
+
+Take a look at {\tt example1.tex}, and you will see that the plain
+LameTeX file is not nearly so pretty! LameTeX was responsible for
+doing the formatting. LameTeX shares responsibility for
+decision-making with you, the user. For example, there is a special
+notation that makes LameTeX center the title of the document. A normal
+LameTeX document is full of such decision-making commands, either to
+ask for something new, or to override a LameTeX decision (like whether
+to indent a paragraph).
+
+\subsection{$\backslash$documentstyle}
+
+The most important command in this example is {\tt
+$\backslash$documentstyle\{report\}}.
+
+LaTeX wants to know what kind of document you are trying to produce.
+LameTeX, it turns out, doesn't really care! All document styles look
+the same to LameTeX, but unfortunately you must have the
+$\backslash$documentstyle command anyway, just because that is the way
+the cruel world is sometimes. Plus, you need it if you are ever going
+to run your document through normal LaTeX.
+
+There are three alternate versions of this command, {\tt
+$\backslash$documentstyle[10pt]\{report\}},\\ {\tt
+$\backslash$documentstyle[11pt]\{report\}},\\ and {\tt
+$\backslash$documentstyle[12pt]\{report\}}, which specify that the default
+font size for this document will be 10 point, 11 point, or 12 point
+respectively. The real LaTeX text formatter can do a lot of other
+fancy things with the $\backslash$documentstyle command, but this version of
+LameTeX cannot.
+
+\subsection{$\backslash$begin and $\backslash$end Delimit Environments}
+
+An {\em environment} is an important LaTeX concept. It tells LaTeX
+where to start and stop doing fancy stuff. For example, in the example
+LameTeX file {\tt example1.tex} there are two commands, {\tt
+$\backslash$begin\{center\} and $\backslash$end\{center\}} . The
+$\backslash$begin command says ``start doing a fancy thing, which is
+to center every line.''. Likewise, the $\backslash$end command is
+very important because it tells LaTeX where to {\bf stop} centering.
+We say that the text in-between the $\backslash$begin and
+$\backslash$end command is ``in a $\backslash$center environment''.
+
+\newlength{\baselinetemp}
+\setlength{\baselinetemp}{\baselineskip}
+\setlength{\baselineskip}{20pt}
+A shorthand notation for an environment is to use braces. For example,
+the line of text
+
+{\tt $\backslash$begin\{center\} this text is
+centered $\backslash$end\{center\}}
+
+could be re-written as follows:
+
+{\tt\{ $\backslash$center this text is centered \}}
+
+\setlength{\baselineskip}{\baselinetemp}
+
+\subsection{Text Goes in the $\backslash$document Environment}
+
+Whenever you use LaTeX, you must place any text to be printed inside
+of a $\backslash$document environment. Don't place text outside of a
+$\backslash$document environment, although you may place text formatting
+commands there.
+
+The two commands you will {\em always} want to make part of your
+LameTeX documents are $\backslash$documentstyle and $\backslash$document.
+
+\subsection{Example 2 - Environments Can Be Fancy}
+
+Try running the second example file, by typing {\tt lametex example2.tex}.
+This LameTeX file doesn't have any stealth commands either. Like {\tt
+example1.tex}, it is just a demonstration that LameTeX can handle some
+pretty complicated normal LaTeX text formatting commands.
+
+This file contains some fancy environments. For example, the
+$\backslash$verse command modifies the environment in several ways to
+allow a natural look to poems.
+
+The $\backslash$enumerate environment indents the text and numbers all
+paragraphs that begin with the $\backslash$item command.
+
+\subsection{Environments Can Be Nested}
+
+Also notice that the $\backslash$enumerate commands can be nested
+inside one another. Also the $\backslash$bf command for {\bf boldface}
+is nested inside the $\backslash$Huge command for {\Huge Huge} text.
+Putting the boldface environment inside the Huge environment yields
+text that is {\bf\Huge both bold and Huge}.
+
+In general, when you nest environments, ``it does the right thing.''
+In general you can trust LaTeX to {\it do the right thing}. Can you
+trust LameTeX? Well\ldots you know the old saying: ``Trust your
+mother. But watch her!''
+
diff --git a/support/lametex/doc/stealth.tex b/support/lametex/doc/stealth.tex
new file mode 100644
index 0000000000..ae2068d3c6
--- /dev/null
+++ b/support/lametex/doc/stealth.tex
@@ -0,0 +1,124 @@
+% stealth.tex
+%
+% \begin{stealth}
+% \setlength{\textwidth}{7.5 in}
+% \setlength{\oddsidemargin}{-.5 in}
+% \pspage{page_dagger.ps}
+% \end{stealth}
+
+\chapter{Stealth Commands}
+
+LameTeX doesn't understand all the commands that LaTeX does, but it
+does know a few extra that can be used for special graphics. These
+commands are called {\em stealth commands}, and are used like any
+other LaTeX command, except that they appear inside comments!
+
+Stealth commands are difficult to explain, but easy to demonstrate.
+Try looking for examples of stealth commands inside {\tt
+lametex\_doc.tex} and the files it includes.
+
+%A comment in LaTeX is any place where a '\%' character occurs. The
+%rest of the line after the '\%' character will be ignored by LaTeX.
+%However, LameTeX reads everything inside a comment, looking for these
+%special commands.
+
+\section{$\backslash$begin\{stealth\}}
+Normally it would be nice if you could make real comments without
+LameTeX inserting the text into your document. This is especially true
+if you are converting a LaTeX file to LameTeX and want to make
+extensive use of the comment symbol to take out commands that LameTeX
+cannot handle.
+
+So, in order to begin a use a stealth command, you have to use a
+stealth environment by using $\backslash$begin\{stealth\}, which is
+the only command that is interpreted by LameTeX inside a comment but
+outside of a stealth environment. You cannot just say
+$\backslash$stealth. If you want that, use $\backslash$STEALTH, which
+will continue the stealth environment to the end of the line, and the
+revert back to normal. If you begin a $\backslash$postcript
+environment then the $\backslash$STEALTH will wait for it to end and
+then terminate on the next newline.
+
+You are welcome to do a $\backslash$begin\{stealth\} at the very
+beginning of your document and end it with $\backslash$end\{stealth\}
+at the end, but although this will be simpler, it will also mean that
+all text (including plain text) in your comments will be interpreted
+and included in your document. So to avoid confusion and mistakes, and
+to allow you to use real comment, it is best if you actually begin a
+local stealth environment only when needed, and close it immediately
+afterwards.
+
+The stealth command is useful when you have some plain text that you
+don't want normally included in LaTeX. For example, in this document
+whenever it says to ``look for the little Wizard icons'' found in the
+LameTeX version, the text referring to the icons is imbedded in a
+stealth environment in comments, so that normal LaTeX will skip the text.
+
+Warning! The stealth command does not really start a delimited
+environment. For example, if you were to have \\ {\tt
+$\backslash$begin\{Huge\} $\backslash$bf FOO $\backslash$end\{Huge\}
+ BAR } \\ then the FOO would be Huge and boldface, but the BAR would be
+neither. This is because the Huge environment serves as a delimiter
+for everything inside of it.
+
+The stealth command is different. Unlike every other begin/end
+combination, if you were to say \\ {\tt \% $\backslash$begin\{stealth\}
+$\backslash$bf FOO $\backslash$end\{stealth\} BAR } \\ then FOO would be
+boldface, and BAR would also be boldface.
+
+\section{Including a PostScript file}
+
+You can use the $\backslash$includeps command to include a PostScript
+file. For example, to include a file of PostScript definitions in {\bf
+gummi.ps} you would type the stealth command {\tt
+$\backslash$includeps\{gummi.ps\}}.
+
+\section{Choosing a Page Description}
+
+You can use the $\backslash$pspage command to include a new page
+description. See the chapter on pages to learn more about this
+command.
+
+\section{For Fancy LaTeX Stuff}
+You can tell LameTeX to ``skip over'' some part of your file in which
+you might, for example, imbed LaTeX commands that LameTeX cannot
+handle or skip gracefully. You must say $\backslash$begin\{ignore\}
+and use $\backslash$end\{ignore\} inside a stealth environment to do
+this enclosure.
+
+\section{Free text PostScript}
+
+You can type any PostScript commands you want directly by using the
+$\backslash$postscript command. For example, to change the
+gray scale of the printed text, you can type {\tt
+$\backslash$begin\{postscript\} .6 setgray
+$\backslash$end\{postscript\}}.
+
+You {\bf cannot} just say $\backslash$postscript.
+
+There are a lot of special things to learn about exactly where a
+postscript command (like a grayscale) that you supply will be applied.
+
+\section{Hacks Just Like Mom Used To Make}
+Here's a fancier way to get your PostScript commands executed exactly
+where you want them to. Use the $\backslash$pscmd command to specify
+a PostScript function to run, and the function will be run exactly in
+the text where you have specified.
+
+You would use this command only inside a line of text. Between lines
+of text, just using the $\backslash$postscript environment is
+appropriate.
+
+Everything you type in a PostScript environment gets dumped to
+PostScript, except for the first comment character '%' on a line. If
+you want to make a comment in your PostScript, make sure to use two
+'%' characters, the first one of which will be ignored.
+
+Read the chapter on pages to learn how to use this ``direct
+stranglehold'' on PostScript correctly -- unless you enjoy surprises!
+
+% Replace the current small margins with the wider margins.
+% \begin{stealth}
+% \setlength{\textwidth}{6 in}
+% \setlength{\oddsidemargin}{0.25 in}
+% \end{stealth}
diff --git a/support/lametex/doc/template.tex b/support/lametex/doc/template.tex
new file mode 100644
index 0000000000..ffdbe265f0
--- /dev/null
+++ b/support/lametex/doc/template.tex
@@ -0,0 +1,32 @@
+\documentstyle[10pt]{report}
+\begin{document}
+
+ : ;
+
+ = ? @
+
+ [ ]
+
+ \^ `
+
+
+ ~
+
+
+ \# \$ \% \& ! ' `` ''
+
+ * + | - . /
+
+ 0 1 2 3 4 5 6 7 8 9 ( )
+
+ A B C D E F G H I J K L M N O
+
+ P Q R S T U V W X Y Z
+
+ a b c d e f g h i j k l m n o p q r s t
+
+ u v w x y z
+
+} }
+
+\end{document}
diff --git a/support/lametex/doc/titlepage.tex b/support/lametex/doc/titlepage.tex
new file mode 100644
index 0000000000..dcdc838946
--- /dev/null
+++ b/support/lametex/doc/titlepage.tex
@@ -0,0 +1,36 @@
+% The introduction to the LameTeX document
+%
+% \begin{stealth}
+% \pspage{page_title.ps}
+% \begin{postscript}
+% (LATEX) Weird-Stuff (LameTeX) Title
+% \end{postscript}
+% \end{stealth}
+
+\begin{center}
+\begin{Huge}
+\vspace{3 cm}
+LameTeX
+
+\end{Huge}
+\vspace{0.3 in}
+{\Large A text formatter for special effects }
+
+\vspace{1 in}
+{\large Combining the magic of {\sf PostScript} with the ease
+of {\sc LaTeX}}
+
+\vspace{1 cm}
+{\large \it Version 1.1 by Jonathan Monsarrat \\ \today}
+
+\vspace{22 \baselineskip} % twenty-two lines in the current font
+
+% \begin{stealth} \begin{postscript} 1 setgray \end{postscript} \end{stealth}
+Copyright 1992 Jonathan Monsarrat
+
+Permission is granted to freely distribute or edit
+any portion of this manual.
+
+% \begin{stealth} \begin{postscript} 0 setgray \end{postscript} \end{stealth}
+
+\end{center}
diff --git a/support/lametex/man/man1/lametex.1 b/support/lametex/man/man1/lametex.1
new file mode 100644
index 0000000000..a0a574cf76
--- /dev/null
+++ b/support/lametex/man/man1/lametex.1
@@ -0,0 +1,170 @@
+.TH lametex 1
+.SH NAME
+lametex \- The LameTeX Text Formatting System
+.SH SYNOPSIS
+.nf
+lametex [ -p file ] [ -d directory ] [ -t ] yourtexfile.tex
+.fi
+.SH DESCRIPTION
+LameTeX is a text formatting program that understands much of the LaTeX
+text formatting language. However, because LameTeX is not built on TeX
+macros, it is free to do whatever it pleases directly with PostScript.
+
+You can use LameTeX to format text on a page of arbitrary shape. For
+example, you could place text inside a circle shape, or a triangle, or
+a picture of a big duck.
+
+The -p option allows you to set the default page shape by specifying a
+postscript file.
+
+The -d option allows you to add additional directories that LameTeX
+should search in to find PostScript files. LameTeX searches it's own
+"src" postscript directory, the current directory, and any directories
+you have defined in an environment variable path LAMETEX_PS_PATH.
+
+The -t option specifies that LameTeX should make a plain textfile
+output. LameTeX should not make PostScript output.
+
+There is also an extensive facility for you to add your own PostScript
+additions to make your documents look extra-spiffy. You don't have to know
+much PostScript to this.
+
+The directory /cs/src/lametex/page contains LameTeX page descriptions,
+many of them spiffy. There is also page_latex.ps which emulates LaTeX
+without any flashy special effects.
+
+The documentation is in /cs/src/lametex/doc/lametex_doc.ps, which you
+can try formatting yourself with either LameTeX or LaTeX from
+/cs/src/lametex/doc/lametex_doc.tex. To view the PostScript documentation
+file type "/cs/bin/gnu/gs /cs/src/lametex/doc/lametex_doc.ps".
+
+There are lots of examples, especially of the cool stuff. The documentation
+will step you through it no problem.
+
+.SH WHY USE IT?
+LameTeX is a fancy toy, and a lot of fun. If that's not reason enough,
+don't use it! Take a peek at the fancy pictures, at least. Who knows?
+You might find a real application for it.
+
+The author, jgm@cs.brown.edu is around for
+quick tips and advice, and would love to hear what cool stuff you've
+done with the program.
+
+.SH LAMETEX SPECIAL STEALTH COMMANDS
+
+\\stealth \- Allows LameTeX to execute commands inside the comments.
+You must do \\begin{stealth} and \\end{stealth}. You cannot just say
+\\stealth.
+
+\\postscript \- All text in this environment gets dumped directly in
+the PostScript output. You must say \\begin{postscript} and
+\\end{postscript}.
+
+\\includeps \- Includes a PostScript file in the current position in
+the PostScript output.
+
+\\pspage \- Registers a new Page Description to be loaded upon
+encountering the next page break (a Page Description is in some
+PostScript file).
+
+\\ignore \- Do a \\begin{ignore} to tell LameTeX to ignore everything
+until it sees \\end{ignore}. Use this to include fancy LaTeX commands
+in your document that LameTeX cannot handle. You cannot just use
+\\ignore.
+
+\\pscmd \- Registers a PostScript command to be executed in this exact
+place in the word fitting and word printing routines.
+
+\\STEALTH \- Defines a stealth environment to the end of the line. You
+must do \\STEALTH. You cannot say \\begin{STEALTH}.
+
+.SH SUPPORTED LATEX COMMANDS
+
+.nf
+\\#
+\\$
+\\%
+\\&
+\\Huge
+\\LARGE
+\\Large
+\\\\
+\\\\_
+\\addtolength
+\\backslash
+\\begin
+\\bf
+\\bigskip
+\\center
+\\chapter
+\\chapter*
+\\clearpage
+\\description
+\\document
+\\documentstyle
+\\em
+\\end
+\\enumerate
+\\flushleft
+\\flushright
+\\footnotesize
+\\hspace
+\\hspace*
+\\huge
+\\include
+\\it
+\\item
+\\itemize
+\\label
+\\large
+\\ldots
+\\medskip
+\\newlength
+\\newline
+\\normalsize
+\\par
+\\paragraph
+\\paragraph*
+\\part
+\\part*
+\\quotation
+\\quote
+\\raggedleft
+\\raggedright
+\\ref
+\\rm
+\\sc
+\\scriptsize
+\\section
+\\section*
+\\setlength
+\\sf
+\\sl
+\\small
+\\smallskip
+\\subparagraph
+\\subparagraph*
+\\subsection
+\\subsection*
+\\subsubsection
+\\subsubsection*
+\\tiny
+\\today
+\\tt
+\\verse
+\\vspace
+\\vspace*
+\\{
+\\}
+.fi
+
+.SH BUGS
+There are no bugs in LameTeX. However, style points are being awarded
+by this author for finding interesting ways of making LameTeX emulate
+a bug. There is a section in the documentation which discusses LameTeX's
+(ahem) limitations.
+
+.SH AUTHORS
+Jonathan Monsarrat
+.fi
+
diff --git a/support/lametex/page/dagger.ps b/support/lametex/page/dagger.ps
new file mode 100644
index 0000000000..5e3307f6b8
--- /dev/null
+++ b/support/lametex/page/dagger.ps
@@ -0,0 +1,213 @@
+%!The MIT Assassin's Guild Dagger, 8/13/87 by Jonathan Monsarrat
+%% Yes, I really did do this entirely by hand, not with a drawing program!
+%% Comment: There are no comments. Why: What would I say? left hilt,
+%% middle bump near the right side of the blade right next to
+%% the shiny part?
+/dag1 {newpath 408 9 moveto
+390 18 383 27 376 40 curveto
+374.25 43.25 368 50 361 53 curveto
+357.5 54.5 353 62 350 72 curveto
+344 92 340 93 334 98 curveto
+322 108 313 112 308 115 curveto
+303 118 300 120 298 126 curveto
+296 132 294 134 289 139 curveto
+279 149 277 148 275 156 curveto
+271 172 265 176 261 182 curveto
+257 188 253 203 250 213 curveto
+248.5 218 247 222 244 228 curveto
+241 234 233 268 229 283 curveto
+227 290.5 225 302 220 307 curveto
+217.5 309.5 210 330 208 337 curveto
+202 358 199 361 192 366 curveto
+188.5 368.5 184 372 182 376 curveto
+181 378 180 380 177 382 curveto
+171 386 160 400 140 433 curveto
+137.5 437 134 443 130 441 curveto
+126 437 118 408 119 401 curveto
+120 394 125 392 130 391 curveto
+140 389 143 387 130 382 curveto
+123.5 379.5 118 373 109 372 curveto
+106 367 101 367 98 375 curveto
+97 374 91 373 88 372 curveto
+82 370 80 375 87 379 curveto
+90.5 381 83 388 79 391 curveto
+59 406 60 436 63 451 curveto
+66 466 68 468 72 472 curveto
+75 480 89 504 92 515 curveto
+93.5 520.5 93 521 90 526 curveto
+84 536 83 554 86 565 curveto
+89 576 82 578 80 582 curveto
+66 610 67 605 69 615 curveto
+70 620 70 627 69 629 curveto
+68 631 67 631 68 632 curveto
+69 633 63 637 62 638 curveto
+50 646 52 648 51 650 curveto
+36 680 39 695 29 704 curveto
+0 731 17 775 24 784 curveto
+27.5 788.5 42 792 46 796 curveto
+50 800 58 802 63 801 curveto
+83 797 94 789 97 775 curveto
+100 761 87 753 86 770 curveto
+85 787 83 789 71 788 curveto
+65 787 62 786 61 784 curveto
+59 780 59 779 52 778 curveto
+38 776 31 764 32 750 curveto
+33 745 35 756 37 755 curveto
+41 753 40 740 39 732 curveto
+45 718 57 719 61 734 curveto
+66 753 70 748 91 751 curveto
+94.5 751.5 97 752 100 756 curveto
+103 760 110 760 111 752 curveto
+112 744 113 742 118 737 curveto
+123 732 128 720 129 712 curveto
+130 704 133 702 140 697 curveto
+147 692 152 682 155 667 curveto
+158 652 161 650 171 641 curveto
+176 635.5 177 637 176 634 curveto} def
+
+/dag2 {175 631 178 627 181 621 curveto
+184 615 183 611 177 615 curveto
+183 599 188 600 185 606 curveto
+184 608 190 609 192 604 curveto
+228 627 233 631 234 636 curveto
+234.5 638.5 240 638 242 637 curveto
+244 636 253 636 260 642 curveto
+267 648 294 649 304 644 curveto
+314 639 328 622 322 609 curveto
+316 596 312 580 297 571 curveto 307 570 lineto
+289 541 283 540 279 554 curveto
+275 568 276 577 280 586 curveto
+282 590.5 283 593 278 591 curveto
+268 587 254 565 251 551 curveto
+250 546 249 538 239 536 curveto
+229 534 225 530 228 509 curveto
+229 502 230 500 242 480 curveto
+232 492 230 491 236 473 curveto
+249 451 280 395 297 370 curveto
+305.5 357.5 313 332 309 316 curveto
+305 300 329 238 327 226 curveto
+325 214 328 210 331 203 curveto
+334 196 345 188 348 178 curveto
+349 175 350 168 363 161 curveto
+367 159 371 158 369 147 curveto
+367 136 375 132 380 127 curveto
+395 112 408 78 405 62 curveto
+402 58 412 28 419 23 curveto
+422.5 20.5 420 12 416 10 curveto
+414 9 406 8 408 9 curveto closepath} def
+
+/dag3 {1 setgray 382 73 moveto
+377 102 368 110 353 126 curveto
+348 130 342 150 331 153 curveto
+323 155 311 170 305 184 curveto
+299 198 290 210 285 241 curveto
+280 272 265 270 258 329 curveto
+257 340 250 349 238 362 curveto
+226 375 227 379 226 389 curveto
+225 399 225 407 219 410 curveto
+213 413 199 422 159 480 curveto
+152 490 151 500 167 512 curveto
+199 536 209 537 210 528 curveto
+211 519 220 474 245 444 curveto
+255 432 243 432 251 420 curveto
+259 408 265 392 278 387 curveto 283 372 lineto
+295 348 296 354 293 310 curveto
+292 295 292 277 300 267 curveto
+304 262 305 257 308 245 curveto
+318 197 326 174 361 139 curveto
+385 115 392 93 390 75 curveto
+388 57 385.5 58.5 382 73 curveto} def
+
+/dag4 {368 60 moveto
+360 65 351 84 349 93 curveto
+347 102 340 115 303 148 curveto
+295 155 290 163 284 181 curveto
+278 199 239 298 238 314 curveto
+237.5 322 228 325 225 327 curveto
+222 329 219 335 218 339 curveto
+214 355 195 378 187 388 curveto
+185 390 187 400 153 442 curveto
+136 463 157 463 163 453 curveto
+166 448 175 442 180 434 curveto
+235 346 252 333 253.5 313 curveto
+255 293 255 275 269 248 curveto
+270.5 245 277 241 281 223 curveto
+285 214 293 180 302 168 curveto
+320 144 325 139 335 128 curveto
+355 110 361 97 371 62 curveto
+372 57 376 55 368 60 curveto} def
+
+/dag5 {82 426 moveto
+81 440 87 452 92 462 curveto
+89.5 467 100 469 96 477 curveto
+92 485 101 511 149 555 curveto
+147 557 154 564 147 566 curveto
+144 566 143 567 143 572 curveto
+144 574 144 575 140 573 curveto
+136 571 135 578 141 582 curveto
+139 594 142 597 159 608 curveto
+167.5 613.5 171 610 172 604 curveto
+170 598 175 592 173 585 curveto
+171 580 179 575 181 582 curveto
+183 589 191 599 205 600 curveto
+208 601 210 603 211 610 curveto
+232 620 240 629 243 630 curveto
+241 621 257 628 266 635 curveto
+275 642 282 637 281 625 curveto
+280 617 277 612 252 594 curveto
+244 588 239 573 235 555 curveto
+233 546 232 540 225 539 curveto
+221.5 538 218 549 220 558 curveto
+221 561 218 565 189 547 curveto
+174 538 174 538 173 531 curveto
+172 524 164 522 151 520 curveto
+144.5 519 142 516 141 511 curveto
+141 510 142 509 138 505 curveto
+134 501 134 498 138 487 curveto
+139 484 140 475 139 471 curveto
+139 470 124 468 120 453 curveto
+118 445 120 440 112 433 curveto
+104 426 103 421 102 412 curveto
+101 403 94 404 93 410 curveto
+92 416 83 412 82 426 curveto} def
+
+/dag6 {99 567 moveto
+97 577 99 583 104 590 curveto
+114 604 120 616 139 632 curveto
+144 636 148 637 147 639 curveto
+146 641 140 640 111 617 curveto
+106 613 100 607 94 593 curveto
+91 586 87 588 84 596 curveto
+81 604 82 609 83 618 curveto
+85 636 85 641 79 640 curveto
+73 639 69 642 72 656 curveto
+73.5 663 72 670 71 677 curveto
+70 684 79 694 91 697 curveto
+90 703 93 707 100 708 curveto
+107 709 109 709 109 698 curveto
+109 691 112 690 116 700 curveto
+122 715 114 720 111 720 curveto
+110 720 105 715 100 712 curveto
+80 700 72 702 70 692 curveto
+62 715 69 731 80 738 curveto
+98 749.5 106 743 119 720 curveto
+125 710 126 701 130 700 curveto
+134 699 136 693 129 691 curveto 123 687 lineto
+110 680 105 672 99 658 curveto
+96 651 101 643 104 650 curveto
+107 657 109 657 111 658 curveto
+113 659 117 657 119 662 curveto
+125 670 127 673 125 680 curveto
+137 690 141 689 142 678 curveto
+143 667 143 659 149 653 curveto
+155 647 152 640 160 639 curveto
+168 638 170 630 171 625 curveto
+160 625 155 622 162 620 curveto
+152 612 150 610 131 593 curveto
+127 590 126 585 130 580 curveto
+134 575 132 565 120 560 curveto
+114 557.5 110 551 105 558 curveto
+100 565 101 557 99 567 curveto
+} def
+
+/dagger {dag1 dag2 fill dag3 fill dag4 fill dag5 fill dag6 fill} def
diff --git a/support/lametex/page/demon.ps b/support/lametex/page/demon.ps
new file mode 100644
index 0000000000..936e92c77d
--- /dev/null
+++ b/support/lametex/page/demon.ps
@@ -0,0 +1,1627 @@
+0 144 translate
+%%BeginProcSet: Freelance Plus
+/Freelance_Plus dup 100 dict def load begin
+[ ] {bind} stopped
+{ (patching the bind operator...) = flush
+/*bind /bind load def /bind { dup xcheck
+{ *bind } if } *bind def } if pop
+/bdf {bind def} bind def
+/ldf {load def} bdf
+/mt /moveto ldf
+/rt /rmoveto ldf
+/l2 /lineto ldf
+/sg /setgray ldf
+/gs /gsave ldf
+/ef /eofill ldf
+/st /stroke ldf
+/gr /grestore ldf
+/np /newpath ldf
+/sv /save ldf
+/su /statusdict ldf
+/rs /restore ldf
+/sw /setlinewidth ldf
+/sd /setdash ldf
+/cp /closepath ldf
+/ed {exch def } bdf
+/cfnt {findfont exch makefont setfont} bdf
+/itr {transform round exch round exch itransform} bdf
+/fres 72 0 matrix currentmatrix dtransform
+exch dup mul exch dup mul add sqrt def
+/res fres def
+/mcm matrix currentmatrix bdf
+/Ich 256 array def StandardEncoding Ich copy pop Ich 7/bullet put
+Ich 20/paragraph put Ich 21/section put Ich 225/germandbls put
+/Ccedilla/udieresis/eacute/acircumflex/adieresis/agrave/aring/ccedilla
+/ecircumflex/edieresis/egrave/idieresis/icircumflex/igrave/Adieresis/Aring
+/Eacute/ae/AE/ocircumflex/odieresis/ograve/ucircumflex/ugrave/ydieresis
+/Odieresis/Udieresis/cent/sterling/yen/space/florin/aacute/iacute/oacute
+/uacute/ntilde/Ntilde/ordfeminine/ordmasculine/questiondown/space/space
+/space/space/exclamdown/guillemotleft/guillemotright
+Ich 128 48 getinterval astore pop
+/Ienc { /ncs Ich def /nfn ed /bfn ed /bfd bfn findfont def
+/nf bfd maxlength dict def bfd{exch dup dup /FID ne exch /Encoding ne and
+{exch nf 3 1 roll put}{pop pop} ifelse }forall nf/FontName nfn put
+nf/Encoding ncs put nfn nf definefont pop}bdf
+/IencO { /ncs Ich def /nfn ed /bfn ed /lnw ed /bfd bfn findfont def
+/nf bfd maxlength 4 add dict def bfd{exch dup dup /FID ne exch
+/Encoding ne and {exch nf 3 1 roll put}{pop pop} ifelse }forall
+nf/FontName nfn put nf/Encoding ncs put nf/PaintType 2 put
+nf/StrokeWidth lnw put nfn nf definefont pop}bdf
+/IencSO { /nfn ed /bfn ed /lnw ed /bfd bfn findfont def
+/nf bfd maxlength 4 add dict def bfd{exch dup /FID ne { exch
+nf 3 1 roll put}{pop pop} ifelse }forall nf/FontName nfn put
+nf/PaintType 2 put nf/StrokeWidth lnw put nfn nf definefont pop}bdf
+
+%%EndProcSet
+end
+%%EndProlog
+%%BeginSetup
+Freelance_Plus begin
+save newpath
+.1 .1 scale
+/ecm matrix currentmatrix bdf
+/sem {ecm setmatrix} bdf
+-720 -720 translate
+2 setlinecap
+0 setlinejoin
+106 45 {dup mul exch dup mul add 1.0 exch sub} setscreen
+%%EndSetup
+
+[] 0 sd
+6 sw
+12 sw
+.0 sg
+gs
+np
+4204 3422 itr mt
+4209 3415 itr l2
+4041 3457 itr l2
+4041 3881 itr l2
+3739 4291 itr l2
+3706 4291 itr l2
+3706 4457 itr l2
+4149 4457 itr l2
+4387 3596 itr l2
+4204 3422 itr l2
+gs
+.72 sg
+ef gr
+.50 sg
+st
+gr
+6 sw
+12 sw
+0 sg
+gs
+np
+3883 2554 itr mt
+3928 2637 itr l2
+3365 2986 itr l2
+3368 3009 itr l2
+3368 3028 itr l2
+3359 3059 itr l2
+3330 3109 itr l2
+3293 3161 itr l2
+3267 3195 itr l2
+3241 3212 itr l2
+3228 3228 itr l2
+3202 3245 itr l2
+3174 3266 itr l2
+3149 3295 itr l2
+3123 3312 itr l2
+3097 3329 itr l2
+3071 3346 itr l2
+3044 3363 itr l2
+3018 3380 itr l2
+3002 3391 itr l2
+2979 3397 itr l2
+3005 3363 itr l2
+3025 3331 itr l2
+3044 3295 itr l2
+3066 3263 itr l2
+3083 3228 itr l2
+3113 3259 itr l2
+3144 3230 itr l2
+3171 3209 itr l2
+3202 3177 itr l2
+3227 3141 itr l2
+3249 3116 itr l2
+3291 3066 itr l2
+3288 3041 itr l2
+3266 3016 itr l2
+3241 3009 itr l2
+3214 3026 itr l2
+3177 3059 itr l2
+3155 3077 itr l2
+3135 3088 itr l2
+3097 3110 itr l2
+3057 3127 itr l2
+3031 3144 itr l2
+3005 3163 itr l2
+3005 3212 itr l2
+2966 3228 itr l2
+2940 3228 itr l2
+2899 3234 itr l2
+2860 3237 itr l2
+2835 3245 itr l2
+2808 3245 itr l2
+2835 3212 itr l2
+2874 3178 itr l2
+2908 3144 itr l2
+2927 3120 itr l2
+2977 3130 itr l2
+2992 3127 itr l2
+3027 3105 itr l2
+3058 3084 itr l2
+3097 3059 itr l2
+3123 3043 itr l2
+3149 3026 itr l2
+3176 3009 itr l2
+3202 2992 itr l2
+3219 2966 itr l2
+3219 2948 itr l2
+3202 2925 itr l2
+3176 2908 itr l2
+3136 2925 itr l2
+3097 2934 itr l2
+3044 2948 itr l2
+3005 2962 itr l2
+2966 2976 itr l2
+2899 3013 itr l2
+2913 3030 itr l2
+2925 3051 itr l2
+2919 3044 itr l2
+2922 3059 itr l2
+2889 3066 itr l2
+2835 3077 itr l2
+2808 3084 itr l2
+2783 3088 itr l2
+2756 3093 itr l2
+2730 3093 itr l2
+2682 3095 itr l2
+2730 3076 itr l2
+2757 3059 itr l2
+2808 3026 itr l2
+2835 3009 itr l2
+2861 2992 itr l2
+2913 2959 itr l2
+2940 2942 itr l2
+2966 2925 itr l2
+2991 2909 itr l2
+3018 2891 itr l2
+3044 2874 itr l2
+3071 2866 itr l2
+3097 2857 itr l2
+3123 2857 itr l2
+3149 2857 itr l2
+3188 2862 itr l2
+3228 2874 itr l2
+3293 2908 itr l2
+3319 2916 itr l2
+3341 2898 itr l2
+3377 2880 itr l2
+3831 2587 itr l2
+3857 2572 itr l2
+3883 2554 itr l2
+gs
+.25 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3765 2874 itr mt
+3750 2822 itr l2
+3742 2725 itr l2
+3910 2621 itr l2
+3896 2587 itr l2
+3869 2560 itr l2
+3863 2560 itr l2
+3833 2583 itr l2
+3806 2602 itr l2
+3785 2599 itr l2
+3747 2564 itr l2
+3726 2520 itr l2
+3711 2503 itr l2
+3700 2470 itr l2
+3702 2445 itr l2
+3726 2419 itr l2
+3739 2385 itr l2
+3755 2353 itr l2
+3779 2335 itr l2
+3806 2311 itr l2
+3831 2301 itr l2
+3857 2292 itr l2
+3883 2284 itr l2
+3910 2284 itr l2
+3910 2251 itr l2
+3936 2234 itr l2
+3962 2234 itr l2
+4001 2234 itr l2
+4027 2234 itr l2
+4054 2251 itr l2
+4067 2234 itr l2
+4093 2234 itr l2
+4119 2251 itr l2
+4146 2267 itr l2
+4172 2301 itr l2
+4198 2335 itr l2
+4224 2368 itr l2
+4251 2385 itr l2
+4277 2385 itr l2
+4303 2402 itr l2
+4329 2419 itr l2
+4355 2436 itr l2
+4382 2453 itr l2
+4408 2487 itr l2
+4434 2504 itr l2
+4447 2520 itr l2
+4447 2554 itr l2
+4434 2587 itr l2
+4421 2621 itr l2
+4421 2689 itr l2
+4408 2740 itr l2
+4382 2807 itr l2
+4368 2840 itr l2
+4342 2891 itr l2
+4316 2925 itr l2
+4316 2959 itr l2
+4303 3009 itr l2
+4303 3043 itr l2
+4316 3076 itr l2
+4342 3110 itr l2
+4382 3161 itr l2
+4436 3207 itr l2
+4473 3245 itr l2
+4528 3304 itr l2
+4560 3346 itr l2
+4578 3380 itr l2
+4598 3415 itr l2
+4618 3498 itr l2
+4636 3548 itr l2
+4644 3582 itr l2
+4657 3616 itr l2
+4663 3652 itr l2
+4669 3700 itr l2
+4670 3751 itr l2
+4670 3818 itr l2
+4669 3860 itr l2
+4644 3936 itr l2
+4630 3987 itr l2
+4604 4037 itr l2
+4591 4088 itr l2
+4591 4105 itr l2
+4618 4139 itr l2
+4644 4172 itr l2
+4669 4201 itr l2
+4709 4240 itr l2
+4733 4284 itr l2
+4749 4324 itr l2
+4755 4375 itr l2
+4760 4423 itr l2
+4760 4457 itr l2
+4760 4506 itr l2
+4761 4526 itr l2
+4761 4594 itr l2
+4749 4644 itr l2
+4749 4678 itr l2
+4744 4743 itr l2
+4735 4796 itr l2
+4723 4847 itr l2
+4709 4880 itr l2
+4683 4931 itr l2
+4657 4948 itr l2
+4663 4895 itr l2
+4657 4826 itr l2
+4647 4778 itr l2
+4630 4745 itr l2
+4614 4694 itr l2
+4591 4661 itr l2
+4565 4628 itr l2
+4539 4577 itr l2
+4501 4528 itr l2
+4484 4506 itr l2
+4447 4476 itr l2
+4408 4459 itr l2
+4382 4444 itr l2
+4355 4459 itr l2
+4316 4476 itr l2
+4277 4492 itr l2
+4251 4509 itr l2
+4211 4526 itr l2
+4166 4541 itr l2
+4119 4543 itr l2
+4079 4541 itr l2
+4054 4543 itr l2
+4027 4543 itr l2
+4015 4541 itr l2
+3976 4528 itr l2
+3944 4521 itr l2
+3922 4560 itr l2
+3901 4583 itr l2
+3890 4611 itr l2
+3870 4661 itr l2
+3857 4712 itr l2
+3847 4764 itr l2
+3844 4796 itr l2
+3836 4847 itr l2
+3842 4882 itr l2
+3852 4930 itr l2
+3863 4972 itr l2
+3844 4931 itr l2
+3831 4914 itr l2
+3779 4864 itr l2
+3752 4830 itr l2
+3733 4805 itr l2
+3706 4771 itr l2
+3686 4745 itr l2
+3674 4712 itr l2
+3647 4678 itr l2
+3621 4628 itr l2
+3620 4611 itr l2
+3608 4560 itr l2
+3608 4526 itr l2
+3595 4492 itr l2
+3595 4459 itr l2
+3621 4459 itr l2
+3647 4442 itr l2
+3674 4425 itr l2
+3701 4409 itr l2
+3728 4388 itr l2
+3739 4375 itr l2
+3782 4388 itr l2
+3791 4408 itr l2
+3809 4430 itr l2
+3844 4442 itr l2
+3874 4457 itr l2
+3912 4457 itr l2
+3936 4459 itr l2
+3975 4459 itr l2
+4015 4442 itr l2
+4041 4425 itr l2
+4080 4358 itr l2
+4106 4324 itr l2
+4119 4290 itr l2
+4146 4256 itr l2
+4172 4206 itr l2
+4185 4156 itr l2
+4211 4122 itr l2
+4224 4088 itr l2
+4237 4037 itr l2
+4237 4004 itr l2
+4251 3953 itr l2
+4263 3903 itr l2
+4277 3852 itr l2
+4277 3801 itr l2
+4285 3749 itr l2
+4277 3717 itr l2
+4277 3684 itr l2
+4277 3650 itr l2
+4263 3599 itr l2
+4251 3548 itr l2
+4241 3513 itr l2
+4237 3481 itr l2
+4224 3464 itr l2
+4211 3448 itr l2
+4185 3464 itr l2
+4132 3481 itr l2
+4106 3481 itr l2
+4080 3498 itr l2
+4052 3484 itr l2
+4027 3481 itr l2
+4001 3481 itr l2
+3975 3464 itr l2
+3949 3464 itr l2
+3922 3448 itr l2
+3896 3431 itr l2
+3870 3414 itr l2
+3844 3397 itr l2
+3818 3397 itr l2
+3798 3402 itr l2
+3755 3402 itr l2
+3712 3429 itr l2
+3686 3448 itr l2
+3674 3481 itr l2
+3647 3515 itr l2
+3621 3548 itr l2
+3595 3582 itr l2
+3582 3616 itr l2
+3555 3650 itr l2
+3555 3684 itr l2
+3555 3717 itr l2
+3555 3734 itr l2
+3555 3751 itr l2
+3555 3784 itr l2
+3569 3818 itr l2
+3582 3825 itr l2
+3614 3867 itr l2
+3595 3920 itr l2
+3595 3953 itr l2
+3595 3987 itr l2
+3595 4020 itr l2
+3608 4071 itr l2
+3634 4105 itr l2
+3663 4159 itr l2
+3674 4189 itr l2
+3679 4221 itr l2
+3686 4256 itr l2
+3712 4291 itr l2
+3733 4326 itr l2
+3739 4341 itr l2
+3733 4360 itr l2
+3728 4305 itr l2
+3686 4240 itr l2
+3674 4273 itr l2
+3660 4307 itr l2
+3634 4307 itr l2
+3608 4307 itr l2
+3582 4290 itr l2
+3555 4256 itr l2
+3529 4223 itr l2
+3516 4189 itr l2
+3503 4139 itr l2
+3477 4105 itr l2
+3464 4071 itr l2
+3450 4020 itr l2
+3438 3987 itr l2
+3438 3953 itr l2
+3438 3920 itr l2
+3464 3920 itr l2
+3490 3903 itr l2
+3516 3886 itr l2
+3529 3852 itr l2
+3529 3835 itr l2
+3529 3801 itr l2
+3539 3769 itr l2
+3529 3734 itr l2
+3529 3700 itr l2
+3529 3667 itr l2
+3516 3633 itr l2
+3503 3599 itr l2
+3477 3599 itr l2
+3464 3599 itr l2
+3438 3599 itr l2
+3411 3616 itr l2
+3398 3582 itr l2
+3372 3565 itr l2
+3346 3531 itr l2
+3333 3498 itr l2
+3319 3464 itr l2
+3319 3431 itr l2
+3477 3212 itr l2
+3333 3414 itr l2
+3477 3212 itr l2
+3503 3195 itr l2
+3528 3165 itr l2
+3555 3144 itr l2
+3595 3127 itr l2
+3621 3110 itr l2
+3647 3093 itr l2
+3674 3088 itr l2
+3700 3076 itr l2
+3727 3068 itr l2
+3752 3059 itr l2
+3779 3043 itr l2
+3813 3034 itr l2
+3844 3026 itr l2
+3870 3026 itr l2
+3883 3026 itr l2
+3910 3026 itr l2
+3936 3026 itr l2
+3910 3026 itr l2
+3883 3026 itr l2
+3857 3009 itr l2
+3831 2992 itr l2
+3809 2977 itr l2
+3782 2942 itr l2
+3765 2908 itr l2
+3765 2874 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+4447 2275 itr mt
+4448 2273 itr l2
+4421 2284 itr l2
+4394 2301 itr l2
+4368 2318 itr l2
+4342 2335 itr l2
+4316 2349 itr l2
+4290 2363 itr l2
+4254 2382 itr l2
+4303 2402 itr l2
+4341 2427 itr l2
+4377 2451 itr l2
+4394 2471 itr l2
+4419 2496 itr l2
+4434 2504 itr l2
+4447 2520 itr l2
+4447 2487 itr l2
+4447 2453 itr l2
+4447 2419 itr l2
+4447 2385 itr l2
+4447 2351 itr l2
+4447 2318 itr l2
+4447 2301 itr l2
+4447 2275 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3634 3565 itr mt
+3621 3582 itr l2
+3647 3565 itr l2
+3674 3565 itr l2
+3700 3599 itr l2
+3700 3633 itr l2
+3700 3667 itr l2
+3713 3700 itr l2
+3713 3734 itr l2
+3713 3768 itr l2
+3700 3801 itr l2
+3686 3818 itr l2
+3674 3852 itr l2
+3647 3869 itr l2
+3621 3869 itr l2
+3595 3869 itr l2
+3569 3835 itr l2
+3569 3801 itr l2
+3555 3768 itr l2
+3543 3734 itr l2
+3543 3700 itr l2
+3543 3667 itr l2
+3555 3633 itr l2
+3582 3599 itr l2
+3608 3582 itr l2
+3634 3565 itr l2
+gs
+ef gr
+st
+gr
+6 sw
+12 sw
+gs
+np
+2835 1643 itr mt
+2822 1643 itr l2
+2847 1660 itr l2
+2871 1682 itr l2
+2920 1721 itr l2
+2964 1744 itr l2
+3013 1762 itr l2
+3056 1784 itr l2
+3096 1796 itr l2
+3137 1807 itr l2
+3176 1824 itr l2
+3212 1835 itr l2
+3241 1846 itr l2
+3287 1852 itr l2
+3326 1864 itr l2
+3344 1864 itr l2
+3358 1863 itr l2
+3438 1863 itr l2
+3516 1863 itr l2
+3555 1863 itr l2
+3593 1863 itr l2
+3647 1863 itr l2
+3686 1863 itr l2
+3713 1863 itr l2
+3739 1863 itr l2
+3765 1863 itr l2
+3752 1896 itr l2
+3739 1930 itr l2
+3726 1964 itr l2
+3713 1998 itr l2
+3703 2034 itr l2
+3700 2065 itr l2
+3703 2096 itr l2
+3713 2132 itr l2
+3700 2149 itr l2
+3686 2183 itr l2
+3674 2200 itr l2
+3664 2233 itr l2
+3660 2267 itr l2
+3650 2301 itr l2
+3647 2335 itr l2
+3647 2368 itr l2
+3647 2402 itr l2
+3637 2437 itr l2
+3634 2487 itr l2
+3633 2506 itr l2
+3633 2523 itr l2
+3634 2554 itr l2
+3634 2587 itr l2
+3642 2608 itr l2
+3674 2621 itr l2
+3700 2604 itr l2
+3712 2585 itr l2
+3747 2568 itr l2
+3735 2534 itr l2
+3726 2520 itr l2
+3713 2504 itr l2
+3700 2470 itr l2
+3699 2448 itr l2
+3699 2443 itr l2
+3725 2426 itr l2
+3739 2385 itr l2
+3752 2352 itr l2
+3774 2335 itr l2
+3779 2329 itr l2
+3805 2301 itr l2
+3832 2301 itr l2
+3858 2307 itr l2
+3871 2295 itr l2
+3885 2290 itr l2
+3911 2284 itr l2
+3925 2244 itr l2
+3947 2233 itr l2
+3973 2239 itr l2
+4000 2233 itr l2
+4026 2239 itr l2
+4053 2250 itr l2
+4079 2233 itr l2
+4106 2234 itr l2
+4132 2251 itr l2
+4158 2284 itr l2
+4172 2318 itr l2
+4198 2301 itr l2
+4224 2284 itr l2
+4251 2267 itr l2
+4265 2256 itr l2
+4291 2239 itr l2
+4316 2217 itr l2
+4342 2200 itr l2
+4366 2193 itr l2
+4382 2183 itr l2
+4393 2181 itr l2
+4406 2170 itr l2
+4408 2115 itr l2
+4408 2082 itr l2
+4401 2051 itr l2
+4408 2015 itr l2
+4421 1981 itr l2
+4428 1949 itr l2
+4434 1913 itr l2
+4434 1879 itr l2
+4447 1846 itr l2
+4460 1812 itr l2
+4473 1779 itr l2
+4499 1745 itr l2
+4526 1711 itr l2
+4552 1677 itr l2
+4539 1643 itr l2
+4499 1610 itr l2
+4473 1593 itr l2
+4446 1585 itr l2
+4421 1576 itr l2
+4380 1556 itr l2
+4342 1543 itr l2
+4303 1526 itr l2
+4265 1517 itr l2
+4237 1509 itr l2
+4211 1492 itr l2
+4185 1488 itr l2
+4146 1475 itr l2
+4106 1475 itr l2
+4067 1475 itr l2
+4041 1475 itr l2
+4004 1471 itr l2
+3942 1466 itr l2
+3896 1458 itr l2
+3857 1458 itr l2
+3818 1458 itr l2
+3791 1458 itr l2
+3752 1458 itr l2
+3726 1458 itr l2
+3700 1458 itr l2
+3674 1458 itr l2
+3660 1458 itr l2
+3633 1466 itr l2
+3606 1471 itr l2
+3575 1471 itr l2
+3555 1475 itr l2
+3516 1475 itr l2
+3490 1475 itr l2
+3464 1475 itr l2
+3424 1492 itr l2
+3385 1492 itr l2
+3359 1492 itr l2
+3333 1492 itr l2
+3319 1492 itr l2
+3282 1500 itr l2
+3251 1500 itr l2
+3213 1505 itr l2
+3189 1506 itr l2
+3163 1506 itr l2
+3136 1509 itr l2
+3127 1512 itr l2
+3123 1517 itr l2
+3137 1529 itr l2
+3190 1590 itr l2
+3136 1593 itr l2
+3110 1593 itr l2
+3071 1593 itr l2
+3031 1610 itr l2
+3018 1610 itr l2
+2992 1613 itr l2
+2966 1610 itr l2
+2939 1619 itr l2
+2913 1627 itr l2
+2887 1627 itr l2
+2872 1630 itr l2
+2850 1636 itr l2
+2835 1643 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+4074 3499 itr mt
+4080 3498 itr l2
+4093 3531 itr l2
+4095 3555 itr l2
+4099 3585 itr l2
+4109 3620 itr l2
+4119 3667 itr l2
+4119 3684 itr l2
+4119 3734 itr l2
+4119 3768 itr l2
+4112 3818 itr l2
+4099 3874 itr l2
+4093 3903 itr l2
+4067 3953 itr l2
+4054 4004 itr l2
+4041 4037 itr l2
+4025 4086 itr l2
+3988 4139 itr l2
+3964 4177 itr l2
+3948 4198 itr l2
+3925 4237 itr l2
+3914 4259 itr l2
+3891 4285 itr l2
+3883 4290 itr l2
+3857 4307 itr l2
+3827 4319 itr l2
+3805 4324 itr l2
+3779 4324 itr l2
+3752 4324 itr l2
+3740 4319 itr l2
+3713 4290 itr l2
+3700 4256 itr l2
+3689 4224 itr l2
+3682 4190 itr l2
+3662 4151 itr l2
+3634 4105 itr l2
+3621 4071 itr l2
+3608 4037 itr l2
+3605 4026 itr l2
+3595 3987 itr l2
+3595 3953 itr l2
+3595 3920 itr l2
+3596 3884 itr l2
+3621 3862 itr l2
+3647 3851 itr l2
+3674 3818 itr l2
+3692 3793 itr l2
+3700 3768 itr l2
+3713 3734 itr l2
+3713 3700 itr l2
+3713 3667 itr l2
+3706 3651 itr l2
+3700 3616 itr l2
+3689 3593 itr l2
+3674 3565 itr l2
+3627 3560 itr l2
+3647 3515 itr l2
+3661 3494 itr l2
+3678 3465 itr l2
+3686 3448 itr l2
+3712 3429 itr l2
+3739 3414 itr l2
+3780 3400 itr l2
+3817 3404 itr l2
+3844 3404 itr l2
+3870 3419 itr l2
+3896 3431 itr l2
+3921 3451 itr l2
+3961 3470 itr l2
+4000 3480 itr l2
+4029 3484 itr l2
+4040 3484 itr l2
+4068 3494 itr l2
+4074 3499 itr l2
+gs
+1 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3621 4459 itr mt
+3626 4457 itr l2
+3608 4459 itr l2
+3593 4457 itr l2
+3571 4451 itr l2
+3544 4444 itr l2
+3516 4408 itr l2
+3503 4358 itr l2
+3484 4326 itr l2
+3474 4298 itr l2
+3468 4270 itr l2
+3464 4240 itr l2
+3464 4206 itr l2
+3464 4172 itr l2
+3464 4139 itr l2
+3477 4105 itr l2
+3503 4139 itr l2
+3516 4172 itr l2
+3529 4206 itr l2
+3543 4240 itr l2
+3555 4263 itr l2
+3582 4291 itr l2
+3604 4298 itr l2
+3621 4307 itr l2
+3647 4290 itr l2
+3674 4273 itr l2
+3674 4240 itr l2
+3674 4206 itr l2
+3700 4240 itr l2
+3713 4273 itr l2
+3726 4290 itr l2
+3739 4324 itr l2
+3726 4375 itr l2
+3700 4408 itr l2
+3674 4425 itr l2
+3647 4442 itr l2
+3634 4459 itr l2
+3621 4459 itr l2
+gs
+.72 sg
+ef gr
+0 sg
+st
+gr
+gs
+np
+3883 3026 itr mt
+3896 3026 itr l2
+3922 3026 itr l2
+3949 3033 itr l2
+3975 3043 itr l2
+4004 3054 itr l2
+4020 3061 itr l2
+4052 3081 itr l2
+4063 3095 itr l2
+4079 3144 itr l2
+4117 3117 itr l2
+4080 3144 itr l2
+4052 3144 itr l2
+4025 3144 itr l2
+st
+gr
+gs
+np
+3875 3016 itr mt
+3917 3009 itr l2
+3934 3001 itr l2
+3961 2986 itr l2
+3988 2971 itr l2
+4015 2959 itr l2
+4025 2949 itr l2
+4054 2947 itr l2
+4083 2944 itr l2
+4119 2959 itr l2
+4143 2974 itr l2
+4167 2986 itr l2
+4247 3040 itr l2
+st
+gr
+6 sw
+12 sw
+gs
+np
+3659 2614 itr mt
+3655 2603 itr l2
+3657 2594 itr l2
+3695 2575 itr l2
+3737 2564 itr l2
+3764 2572 itr l2
+3776 2587 itr l2
+3799 2628 itr l2
+3813 2670 itr l2
+3816 2713 itr l2
+3794 2729 itr l2
+3752 2738 itr l2
+3744 2733 itr l2
+3723 2704 itr l2
+3686 2655 itr l2
+3659 2614 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+4185 2318 itr mt
+4185 2301 itr l2
+4237 2267 itr l2
+4342 2200 itr l2
+4447 2149 itr l2
+4552 2082 itr l2
+4604 2065 itr l2
+4644 2115 itr l2
+4591 2183 itr l2
+4565 2200 itr l2
+4539 2217 itr l2
+4513 2234 itr l2
+4487 2251 itr l2
+4460 2267 itr l2
+4434 2284 itr l2
+4408 2301 itr l2
+4382 2318 itr l2
+4342 2335 itr l2
+4303 2351 itr l2
+4277 2368 itr l2
+4251 2385 itr l2
+4224 2368 itr l2
+4198 2351 itr l2
+4185 2318 itr l2
+gs
+.48 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+4404 2175 itr mt
+4410 2105 itr l2
+4408 2099 itr l2
+4406 2064 itr l2
+4403 2044 itr l2
+4412 2001 itr l2
+4421 1981 itr l2
+4447 1947 itr l2
+4473 1913 itr l2
+4513 1879 itr l2
+4539 1863 itr l2
+4578 1846 itr l2
+4605 1838 itr l2
+4630 1829 itr l2
+4669 1821 itr l2
+4709 1812 itr l2
+4762 1799 itr l2
+4788 1795 itr l2
+4834 1783 itr l2
+4880 1779 itr l2
+4919 1767 itr l2
+4970 1756 itr l2
+5011 1745 itr l2
+5051 1734 itr l2
+5076 1723 itr l2
+5110 1723 itr l2
+5141 1711 itr l2
+5181 1711 itr l2
+5212 1706 itr l2
+5246 1694 itr l2
+5272 1696 itr l2
+5325 1694 itr l2
+5365 1690 itr l2
+5416 1684 itr l2
+5443 1677 itr l2
+5472 1674 itr l2
+5508 1660 itr l2
+5547 1658 itr l2
+5587 1643 itr l2
+5620 1625 itr l2
+5637 1592 itr l2
+5627 1559 itr l2
+5611 1537 itr l2
+5561 1509 itr l2
+5522 1494 itr l2
+5496 1488 itr l2
+5456 1475 itr l2
+5430 1475 itr l2
+5391 1475 itr l2
+5353 1466 itr l2
+5327 1466 itr l2
+5284 1461 itr l2
+5260 1458 itr l2
+5233 1458 itr l2
+5207 1458 itr l2
+5229 1494 itr l2
+5246 1526 itr l2
+5272 1559 itr l2
+5242 1554 itr l2
+5194 1543 itr l2
+5165 1537 itr l2
+5141 1526 itr l2
+5102 1509 itr l2
+5063 1492 itr l2
+4983 1450 itr l2
+4944 1434 itr l2
+4906 1407 itr l2
+4869 1390 itr l2
+4827 1374 itr l2
+4788 1351 itr l2
+4735 1323 itr l2
+4696 1307 itr l2
+4657 1290 itr l2
+4618 1273 itr l2
+4592 1270 itr l2
+4552 1256 itr l2
+4499 1239 itr l2
+4503 1237 itr l2
+4511 1237 itr l2
+4511 1237 itr l2
+4552 1239 itr l2
+4591 1239 itr l2
+4644 1239 itr l2
+4683 1239 itr l2
+4737 1232 itr l2
+4771 1232 itr l2
+4813 1232 itr l2
+4856 1232 itr l2
+4906 1232 itr l2
+4944 1242 itr l2
+4983 1242 itr l2
+5025 1242 itr l2
+5089 1242 itr l2
+5127 1248 itr l2
+5165 1248 itr l2
+5208 1248 itr l2
+5246 1248 itr l2
+5284 1248 itr l2
+5327 1248 itr l2
+5377 1256 itr l2
+5404 1256 itr l2
+5442 1254 itr l2
+5479 1254 itr l2
+5522 1256 itr l2
+5574 1256 itr l2
+5627 1256 itr l2
+5666 1256 itr l2
+5705 1256 itr l2
+5732 1256 itr l2
+5705 1273 itr l2
+5666 1290 itr l2
+5632 1303 itr l2
+5598 1303 itr l2
+5561 1307 itr l2
+5522 1307 itr l2
+5469 1307 itr l2
+5412 1319 itr l2
+5348 1324 itr l2
+5325 1323 itr l2
+5297 1330 itr l2
+5255 1335 itr l2
+5233 1340 itr l2
+5194 1340 itr l2
+5229 1341 itr l2
+5272 1351 itr l2
+5314 1351 itr l2
+5353 1351 itr l2
+5391 1357 itr l2
+5417 1357 itr l2
+5443 1357 itr l2
+5482 1357 itr l2
+5509 1357 itr l2
+5539 1363 itr l2
+5560 1368 itr l2
+5611 1385 itr l2
+5640 1391 itr l2
+5679 1407 itr l2
+5705 1424 itr l2
+5744 1441 itr l2
+5771 1458 itr l2
+5797 1475 itr l2
+5837 1492 itr l2
+5876 1526 itr l2
+5902 1559 itr l2
+5915 1593 itr l2
+5915 1627 itr l2
+5902 1660 itr l2
+5876 1694 itr l2
+5823 1745 itr l2
+5784 1762 itr l2
+5732 1779 itr l2
+5679 1779 itr l2
+5640 1779 itr l2
+5601 1779 itr l2
+5561 1779 itr l2
+5508 1779 itr l2
+5469 1779 itr l2
+5417 1779 itr l2
+5377 1779 itr l2
+5325 1779 itr l2
+5276 1789 itr l2
+5233 1795 itr l2
+5181 1795 itr l2
+5140 1799 itr l2
+5097 1805 itr l2
+5050 1812 itr l2
+4995 1821 itr l2
+4959 1829 itr l2
+4919 1833 itr l2
+4866 1846 itr l2
+4827 1863 itr l2
+4788 1876 itr l2
+4761 1879 itr l2
+4735 1896 itr l2
+4711 1903 itr l2
+4670 1930 itr l2
+4644 1947 itr l2
+4618 1964 itr l2
+4591 1981 itr l2
+4565 1998 itr l2
+4552 2015 itr l2
+4526 2031 itr l2
+4499 2065 itr l2
+4487 2099 itr l2
+4460 2132 itr l2
+4404 2175 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+gs
+np
+4131 1779 itr mt
+4095 1790 itr l2
+4064 1784 itr l2
+4024 1796 itr l2
+4015 1795 itr l2
+3988 1795 itr l2
+3949 1795 itr l2
+3910 1795 itr l2
+3883 1790 itr l2
+3857 1790 itr l2
+3803 1784 itr l2
+3752 1779 itr l2
+3726 1779 itr l2
+3702 1773 itr l2
+3676 1767 itr l2
+3634 1762 itr l2
+3596 1755 itr l2
+3556 1744 itr l2
+3516 1733 itr l2
+3490 1728 itr l2
+3450 1711 itr l2
+3397 1687 itr l2
+3359 1677 itr l2
+3307 1660 itr l2
+3280 1643 itr l2
+3242 1625 itr l2
+3216 1614 itr l2
+3188 1593 itr l2
+3180 1574 itr l2
+3202 1585 itr l2
+3256 1608 itr l2
+3309 1625 itr l2
+3357 1642 itr l2
+3384 1648 itr l2
+3437 1659 itr l2
+3463 1670 itr l2
+3490 1677 itr l2
+st
+gr
+gs
+np
+3698 1631 itr mt
+3662 1625 itr l2
+3634 1627 itr l2
+3609 1619 itr l2
+3583 1614 itr l2
+3543 1610 itr l2
+3516 1593 itr l2
+3490 1585 itr l2
+3450 1559 itr l2
+3424 1543 itr l2
+3384 1517 itr l2
+3370 1506 itr l2
+3362 1495 itr l2
+3353 1500 itr l2
+st
+gr
+gs
+np
+2991 1608 itr mt
+3018 1627 itr l2
+3044 1660 itr l2
+3071 1677 itr l2
+3110 1710 itr l2
+3149 1728 itr l2
+3176 1745 itr l2
+3216 1767 itr l2
+3242 1773 itr l2
+3264 1779 itr l2
+3293 1779 itr l2
+3307 1779 itr l2
+st
+gr
+gs
+np
+4041 2115 itr mt
+4041 2082 itr l2
+4041 2048 itr l2
+4041 2015 itr l2
+4042 1983 itr l2
+4041 1947 itr l2
+4054 1913 itr l2
+4069 1875 itr l2
+4106 1846 itr l2
+4132 1846 itr l2
+4127 1847 itr l2
+4139 1835 itr l2
+4135 1830 itr l2
+4122 1790 itr l2
+st
+gr
+gs
+np
+3713 2132 itr mt
+3737 2114 itr l2
+3765 2099 itr l2
+3791 2082 itr l2
+3818 2065 itr l2
+3844 2052 itr l2
+3870 2048 itr l2
+3896 2048 itr l2
+3901 2052 itr l2
+st
+gr
+gs
+np
+3726 1964 itr mt
+3739 1930 itr l2
+3765 1913 itr l2
+3777 1903 itr l2
+3803 1886 itr l2
+3831 1879 itr l2
+3857 1881 itr l2
+st
+gr
+6 sw
+12 sw
+1 sg
+gs
+np
+3596 3767 itr mt
+3599 3779 itr l2
+3607 3796 itr l2
+3621 3793 itr l2
+3634 3734 itr l2
+3634 3700 itr l2
+3621 3667 itr l2
+3608 3667 itr l2
+3595 3700 itr l2
+3590 3735 itr l2
+3596 3767 itr l2
+gs
+ef gr
+st
+gr
+6 sw
+12 sw
+0 sg
+gs
+np
+3328 3394 itr mt
+3346 3414 itr l2
+3323 3380 itr l2
+3319 3346 itr l2
+3319 3312 itr l2
+3333 3279 itr l2
+3346 3245 itr l2
+3372 3228 itr l2
+3420 3214 itr l2
+3424 3212 itr l2
+3450 3212 itr l2
+3477 3212 itr l2
+3503 3212 itr l2
+3529 3228 itr l2
+3539 3241 itr l2
+3582 3228 itr l2
+3608 3228 itr l2
+3634 3228 itr l2
+3660 3228 itr l2
+3686 3245 itr l2
+3696 3276 itr l2
+3700 3295 itr l2
+3700 3329 itr l2
+3686 3363 itr l2
+3674 3397 itr l2
+3647 3431 itr l2
+3621 3448 itr l2
+3595 3464 itr l2
+3569 3481 itr l2
+3544 3484 itr l2
+3516 3498 itr l2
+3490 3498 itr l2
+3464 3498 itr l2
+3436 3492 itr l2
+3414 3484 itr l2
+3398 3481 itr l2
+3366 3464 itr l2
+3339 3429 itr l2
+3328 3394 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3555 3481 itr mt
+3524 3494 itr l2
+3491 3499 itr l2
+3467 3524 itr l2
+3450 3555 itr l2
+3433 3572 itr l2
+3410 3602 itr l2
+3398 3633 itr l2
+3411 3667 itr l2
+3411 3700 itr l2
+3411 3734 itr l2
+3411 3768 itr l2
+3424 3818 itr l2
+3424 3869 itr l2
+3438 3920 itr l2
+3438 3953 itr l2
+3438 3987 itr l2
+3444 4026 itr l2
+3454 4056 itr l2
+3467 4090 itr l2
+3484 4125 itr l2
+3503 4156 itr l2
+3514 4190 itr l2
+3531 4224 itr l2
+3551 4255 itr l2
+3575 4280 itr l2
+3591 4302 itr l2
+3621 4307 itr l2
+3647 4307 itr l2
+3669 4302 itr l2
+3686 4290 itr l2
+3700 4256 itr l2
+3700 4223 itr l2
+3686 4189 itr l2
+3662 4155 itr l2
+3647 4122 itr l2
+3632 4086 itr l2
+3621 4054 itr l2
+3612 4021 itr l2
+3605 3987 itr l2
+3599 3952 itr l2
+3595 3920 itr l2
+3595 3886 itr l2
+3608 3852 itr l2
+3582 3818 itr l2
+3562 3784 itr l2
+3555 3751 itr l2
+3555 3717 itr l2
+3555 3684 itr l2
+3555 3650 itr l2
+3569 3616 itr l2
+3595 3585 itr l2
+3622 3572 itr l2
+3634 3531 itr l2
+3647 3515 itr l2
+3662 3486 itr l2
+3635 3481 itr l2
+3609 3472 itr l2
+3582 3481 itr l2
+3555 3481 itr l2
+gs
+1 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3438 3920 itr mt
+3438 3936 itr l2
+3424 3903 itr l2
+3398 3869 itr l2
+3385 3835 itr l2
+3385 3801 itr l2
+3372 3768 itr l2
+3372 3734 itr l2
+3372 3700 itr l2
+3385 3667 itr l2
+3398 3633 itr l2
+3424 3599 itr l2
+3450 3599 itr l2
+3477 3599 itr l2
+3503 3599 itr l2
+3516 3633 itr l2
+3529 3667 itr l2
+3529 3700 itr l2
+3529 3734 itr l2
+3529 3768 itr l2
+3529 3801 itr l2
+3529 3835 itr l2
+3516 3852 itr l2
+3516 3886 itr l2
+3490 3903 itr l2
+3464 3920 itr l2
+3438 3920 itr l2
+gs
+ef gr
+st
+gr
+6 sw
+12 sw
+1 sg
+gs
+np
+3463 3833 itr mt
+3452 3833 itr l2
+3438 3818 itr l2
+3424 3786 itr l2
+3424 3750 itr l2
+3429 3724 itr l2
+3450 3700 itr l2
+3477 3717 itr l2
+3490 3751 itr l2
+3490 3784 itr l2
+3482 3818 itr l2
+3463 3833 itr l2
+gs
+ef gr
+st
+gr
+6 sw
+12 sw
+0 sg
+gs
+np
+3725 2820 itr mt
+3738 2887 itr l2
+3725 2920 itr l2
+3712 2938 itr l2
+3686 2955 itr l2
+3660 2963 itr l2
+3633 2966 itr l2
+3607 2971 itr l2
+3581 2971 itr l2
+3553 2963 itr l2
+3529 2947 itr l2
+3515 2921 itr l2
+3520 2890 itr l2
+3541 2871 itr l2
+3567 2859 itr l2
+3594 2847 itr l2
+3621 2828 itr l2
+3645 2813 itr l2
+3672 2803 itr l2
+3699 2803 itr l2
+3720 2825 itr l2
+3725 2820 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3544 2833 itr mt
+3502 2859 itr l2
+3477 2874 itr l2
+3450 2874 itr l2
+3424 2867 itr l2
+3398 2847 itr l2
+3372 2807 itr l2
+3359 2773 itr l2
+3359 2740 itr l2
+3368 2713 itr l2
+3385 2689 itr l2
+3413 2675 itr l2
+3436 2675 itr l2
+3463 2675 itr l2
+3490 2689 itr l2
+3517 2698 itr l2
+3529 2706 itr l2
+3555 2723 itr l2
+3569 2756 itr l2
+3565 2790 itr l2
+3544 2833 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+6 sw
+12 sw
+gs
+np
+3684 2798 itr mt
+3582 2790 itr l2
+3608 2790 itr l2
+3647 2790 itr l2
+3675 2802 itr l2
+3713 2798 itr l2
+3726 2773 itr l2
+3732 2740 itr l2
+3726 2706 itr l2
+3713 2672 itr l2
+3687 2645 itr l2
+3660 2621 itr l2
+3634 2604 itr l2
+3608 2604 itr l2
+3582 2604 itr l2
+3559 2606 itr l2
+3529 2614 itr l2
+3502 2626 itr l2
+3470 2675 itr l2
+3490 2687 itr l2
+3517 2691 itr l2
+3544 2710 itr l2
+3562 2729 itr l2
+3569 2756 itr l2
+3582 2790 itr l2
+3606 2798 itr l2
+3633 2798 itr l2
+3660 2794 itr l2
+3684 2798 itr l2
+gs
+.50 sg
+ef gr
+0 sg
+st
+gr
+gs
+np
+3805 2706 itr mt
+3875 2763 itr l2
+3949 2783 itr l2
+4018 2763 itr l2
+4080 2689 itr l2
+4146 2648 itr l2
+4185 2723 itr l2
+4158 2823 itr l2
+st
+gr
+rs end
+grestoreall
diff --git a/support/lametex/page/icons.ps b/support/lametex/page/icons.ps
new file mode 100644
index 0000000000..6204fe4e05
--- /dev/null
+++ b/support/lametex/page/icons.ps
@@ -0,0 +1,223 @@
+% This PostScript file defines a few simple operators for throwing
+% icons onto the page.
+
+%% All icons are expected to fit into a 1"x1" square, but they don't have to.
+
+%%%%%%%%%%% icon-name OutsideTopIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the top outside corner.
+/OutsideTopIcon
+{
+} bind def
+
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ bslot 72 sub ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+%%%%%%%%%%%% icon-name number SprinkleIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/SprinkleIcon
+{
+ dup 0 eq
+ {
+ pop
+ }
+ {
+ 0 1 3 -1 roll Random
+ {
+ pop
+ gsave
+ 8.5 in Random 11 in Random translate 0 0 moveto dup cvx exec
+ grestore
+ } for
+ pop
+ } ifelse
+} bind def
+
+/BIG 1073741824 def
+
+% Gives a random number between 0 and N
+% N Random random-number
+/Random
+{
+ rand BIG div mul 2 div
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% THE FOLLOWING ROUTINES ARE USED IN THE ROACH ICON
+%%%%%%%%%%%%%%%%%%%% - Roach - %%%%%%%%%%%%%%%%%%%%
+
+/Body
+{
+ -1 0 moveto -5 2 lineto -11 15 -9 25 -10 40 curveto
+ -1 30 lineto closepath fill
+} bind def
+
+/Legs
+{
+ -15 0 moveto -8 5 lineto -7 10 lineto stroke
+ -16 25 moveto -13 20 lineto -7 17 lineto stroke
+ -21 40 moveto -15 30 lineto -10 30 lineto -7 25 lineto stroke
+} bind def
+
+/Head
+{
+ 0 31 moveto 0 31 15 90 135 arc fill
+ 0 42 moveto 0 42 8 90 200 arc fill
+ 0 50 moveto 0 50 3 90 200 arc fill
+ -4 45 moveto -7 65 lineto stroke
+} bind def
+
+/Roach
+{
+ newpath
+ gsave
+ 0.7 setgray
+ 30 30 translate
+ .7 .7 scale
+ 360 Random rotate
+ Body Legs Head
+ -1 1 scale
+ Body Legs Head
+ grestore
+} bind def
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% END OF ROUTINES FOR THE ROACH ICON
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% THE FOLLOWING ROUTINES ARE USED IN THE WIZARD ICON
+%%%%%%%%%%%%%%%% - Wizard - %%%%%%%%%%%%%%%%%%
+
+/Hat
+{
+ gsave
+ 25 54 moveto
+ 35 51 lineto
+ 35 Random
+ 15 add /x exch def % Hat tilt randomness
+ x 5 add 68 x 70 3 arcto pop pop pop pop
+ x 5 sub 68 x 2 sub 65 2 arcto pop pop pop pop
+ x 2 add 66 lineto
+ closepath
+ 1 setlinejoin
+ gsave dup setgray fill grestore gsave stroke grestore
+ % Add the while circles
+ clip
+ .7 gt { 0 } { 1 } ifelse setgray
+ newpath
+ 0 1 20
+ {
+ pop 40 Random 20 add 20 Random 50 add 1.5 0 360 arc fill
+ } for
+ grestore
+} bind def
+
+% Takes two angles for the arms.
+/Clothes
+{
+ gsave
+ 1 setlinejoin
+ % Robes
+ 25 30 moveto
+ 25 20 20 10 17 3 curveto
+ 30 0 40 5 50 2 curveto
+ 38 25 34 32 36 35 curveto
+
+ % Right arm
+ 40 Random 10 add % Right arm randomness
+ 50 exch lineto 5 15 rlineto
+ currentpoint 5 70 -110 arcn
+ 10 20 rlineto -10 -18 rlineto
+ 40 43 lineto
+ 26 43 lineto
+ 22 42 lineto
+
+ % Left arm
+ 45 Random 20 add dup dup % Left arm randomness
+ 10 exch lineto 15 sub 10 exch lineto
+ 10 exch lineto
+ -5 1 -6 -10 0 -10 rcurveto
+ 0 -5 rlineto
+ closepath
+ % Add the while circles
+ gsave dup setgray fill grestore gsave stroke grestore clip
+ .7 gt { 0 } { 1 } ifelse setgray
+ newpath
+ 0 1 50
+ {
+ pop 60 Random 10 add 50 Random 1.5 0 360 arc fill
+ } for
+ grestore
+} bind def
+
+/Face
+{
+ gsave
+ % setgray
+ 1 setgray
+ 25 54 moveto 25 33 37 33 35 52 curveto fill
+ % currentgray .7 gt { 0 } { 1 } ifelse setgray
+ 0 setgray
+ 25 54 moveto 25 33 37 33 35 52 curveto stroke
+ newpath .3 setlinewidth
+ 28 49 1 0 360 arc stroke
+ 32 48 1 0 360 arc stroke
+ 30 45 1 0 360 arc fill
+
+ % Whiskers
+ .7 gt { 0 } { 1 } ifelse setgray
+ 0 1 10
+ {
+ 25 add
+ 0 1 5
+ {
+ pop dup 10 Random 36 add
+ moveto -3 Random -1 1 -3 Random 0 -5 Random rcurveto stroke
+ } for
+ pop
+ } for
+ grestore
+} bind def
+
+% draws a picture of a wizard in a 1"x1" square
+/Wizard
+{
+ newpath .5 setlinewidth
+ 1 Random dup Clothes
+ Face
+ 1 Random Hat
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% END OF ROUTINES FOR THE WIZARD ICON
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+/in {72 mul} def
+
+/IconDemo
+{
+ /icon exch def
+ 1 1 11
+ {
+ pop
+ 1 1 8
+ {
+% Uncomment this line to see the icon boxes.
+% 0 0 moveto 72 0 lineto 72 72 lineto 0 72 lineto closepath stroke
+ icon cvx exec
+ pop 1 in 0 translate
+ } for
+ -8 in 1 in translate
+ } for
+} bind def
+
+%% To do a demo of one of the icons, uncomment one of these lines.
+% /Wizard IconDemo showpage
+% /Roach IconDemo showpage
diff --git a/support/lametex/page/page_check.ps b/support/lametex/page/page_check.ps
new file mode 100644
index 0000000000..b6afc88062
--- /dev/null
+++ b/support/lametex/page/page_check.ps
@@ -0,0 +1,118 @@
+%! page_check.ps - A replica of the standard LaTeX page
+%% This is a LameTeX Page Description File written in PostScript.
+%% Postscript Code by Jon Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+%% This is a page template for the LameTeX formatter
+%% A checkerboard page for LameTeX output to look like LaTeX output
+
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ 20 ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+%%%%%%%%%%%%%%%%% Box %%%%%%%%%%%%%%%%%%%%%%
+% One of many generic Box algorithms I have written in my life. Deal.
+/Box
+{
+ wp 4 div 0 rlineto 0 hp 4 div rlineto wp -4 div 0 rlineto
+ 0 hp -4 div rlineto
+} bind def
+
+%%%%%%%%%%%%%%%% width height left bot Check-Page %%%%%%%%%%%%%%%%%%%%%%
+% Check-Page draws a checkerboard page, given margins and size
+/Check-Page
+{
+ /bp exch def /lp exch def /hp exch def /wp exch def
+ lp bp moveto Box
+ lp bp hp 2 div add moveto Box
+ lp wp 2 div add bp moveto Box
+ lp wp 2 div add bp hp 2 div add moveto Box
+ lp wp 4 div add bp hp 4 div add moveto Box
+ lp wp .75 mul add bp hp 4 div add moveto Box
+ lp wp 4 div add bp hp .75 mul add moveto Box
+ lp wp .75 mul add bp hp .75 mul add moveto Box
+ closepath
+} bind def
+
+%%%%%%%%%%%%%%%% width height left bot Check-Page2 %%%%%%%%%%%%%%%%%%%%%%
+% Check-Page2 draws a checkerboard page, given margins and size
+/Check-Page2
+{
+ /bp exch def /lp exch def /hp exch def /wp exch def
+ lp wp 4 div add bp moveto Box
+ lp wp .75 mul add bp moveto Box
+ lp bp hp 4 div add moveto Box
+ lp wp 2 div add bp hp 4 div add moveto Box
+ lp wp 4 div add bp hp 2 div add moveto Box
+ lp wp .75 mul add bp hp 2 div add moveto Box
+ lp bp hp .75 mul add moveto Box
+ lp wp 2 div add bp hp .75 mul add moveto Box
+ closepath
+} bind def
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+% Makes a path that desribes the page
+/PageShape
+{
+ flip 1 eq
+ {
+ 6.75 in 9.2 in 1.25 in .5 in Check-Page
+ }
+ {
+ 6.75 in 9.2 in 1.25 in .5 in Check-Page2
+ } ifelse
+ currentflat 8 mul
+} bind def
+
+% Anything to do when a new page is started
+/StartPage
+{
+ grestoreall
+ flip 1 eq
+ {
+ 180 rotate
+ -9.1 in -10.2 in translate
+ } if
+} bind def
+
+% Anything to do when a new page is ended
+/EndPage
+{
+ flip 1 eq
+ {
+ pagenumber 4 string cvs
+ dup stringwidth pop 8.5 in
+ formatdict /rightmargin get sub
+ formatdict /leftmargin get sub
+ exch sub 2 div formatdict /leftmargin get add
+ formatdict /bottommargin get 2 div moveto show
+ /pagenumber pagenumber 1 add def
+ showpage
+ } if
+ /flip 1 flip sub def
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+% Page-specific defaults that describe the page.
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout false def % true means fill outside shape. false is inside.
+
+ /in { 72 mul } def
+ /BM 0 in def % Absolute Bottom Margin for page
+ /TM 11 in def % Absolute Top Margin for page
+ /LM 0 in def % Absolute Left Margin for page
+ /RM 8.5 in def % Absolute Right Margin for page
+
+ /flip 0 def
+ userdict /pagenumber known not
+ { /pagenumber 1 def } if % Initialize pagenumber if not done already
+} bind def
+
+InitPage % Just loading this file initializes the page.
diff --git a/support/lametex/page/page_dagger.ps b/support/lametex/page/page_dagger.ps
new file mode 100644
index 0000000000..4449dcddc3
--- /dev/null
+++ b/support/lametex/page/page_dagger.ps
@@ -0,0 +1,304 @@
+%! page_dagger.ps - A dagger on a standard rectangular page.
+%% This is a LameTeX Page Description File written in PostScript.
+%% Postscript Code by Jon Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+%% This is a page template for the LameTeX formatter
+%% A normal page with a dagger in the middle for LameTeX output to look like
+%% LaTeX output
+
+%% Use this in conjunction with dagger.ps!
+
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ 20 ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+/DaggerBox
+{
+ xlm xrm xlm sub .9 mul add ybm moveto
+ xlm xrm xlm sub 4 div add ybm ytm ybm sub .4 mul add lineto
+ xlm xrm xlm sub 6 div add ybm ytm ybm sub .45 mul add lineto
+ xlm ytm lineto xlm xrm xlm sub .2 mul add ytm lineto
+ xlm xrm xlm sub .5 mul add ybm ytm ybm sub .85 mul add lineto
+ xlm xrm xlm sub .8 mul add ybm ytm ybm sub .8 mul add lineto
+ xlm xrm xlm sub .7 mul add ybm ytm ybm sub .6 mul add lineto
+ xrm ybm lineto
+ closepath
+} bind def
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+% Makes a path that desribes the page
+/PageShape
+{
+ /xlm xlm .6 mul 3 in add def /xrm xrm .6 mul 3 in add def
+ /ybm ybm .6 mul 2 in add def /ytm ytm .6 mul 2 in add def
+ DaggerBox % gsave stroke grestore % Uncomment me to show the margin path
+% gsave stroke grestore
+ currentflat 8 mul
+} bind def
+
+% Anything to do when a new page is started
+/StartPage
+{
+ % I enclose this huge definition here for a very good reason!
+ % This is because this routine is called in-between PostScript
+ % save and restore commands and therefore all this memory I'm
+ % wasting here will be cleaned up.
+
+%!The MIT Assassin's Guild Dagger, 8/13/87 by Jonathan Monsarrat
+%% Yes, I really did do this entirely by hand, not with a drawing program!
+%% Comment: There are no comments. Why: What would I say? left hilt,
+%% middle bump near the right side of the blade right next to
+%% the shiny part?
+/dag1 {newpath 408 9 moveto
+390 18 383 27 376 40 curveto
+374.25 43.25 368 50 361 53 curveto
+357.5 54.5 353 62 350 72 curveto
+344 92 340 93 334 98 curveto
+322 108 313 112 308 115 curveto
+303 118 300 120 298 126 curveto
+296 132 294 134 289 139 curveto
+279 149 277 148 275 156 curveto
+271 172 265 176 261 182 curveto
+257 188 253 203 250 213 curveto
+248.5 218 247 222 244 228 curveto
+241 234 233 268 229 283 curveto
+227 290.5 225 302 220 307 curveto
+217.5 309.5 210 330 208 337 curveto
+202 358 199 361 192 366 curveto
+188.5 368.5 184 372 182 376 curveto
+181 378 180 380 177 382 curveto
+171 386 160 400 140 433 curveto
+137.5 437 134 443 130 441 curveto
+126 437 118 408 119 401 curveto
+120 394 125 392 130 391 curveto
+140 389 143 387 130 382 curveto
+123.5 379.5 118 373 109 372 curveto
+106 367 101 367 98 375 curveto
+97 374 91 373 88 372 curveto
+82 370 80 375 87 379 curveto
+90.5 381 83 388 79 391 curveto
+59 406 60 436 63 451 curveto
+66 466 68 468 72 472 curveto
+75 480 89 504 92 515 curveto
+93.5 520.5 93 521 90 526 curveto
+84 536 83 554 86 565 curveto
+89 576 82 578 80 582 curveto
+66 610 67 605 69 615 curveto
+70 620 70 627 69 629 curveto
+68 631 67 631 68 632 curveto
+69 633 63 637 62 638 curveto
+50 646 52 648 51 650 curveto
+36 680 39 695 29 704 curveto
+0 731 17 775 24 784 curveto
+27.5 788.5 42 792 46 796 curveto
+50 800 58 802 63 801 curveto
+83 797 94 789 97 775 curveto
+100 761 87 753 86 770 curveto
+85 787 83 789 71 788 curveto
+65 787 62 786 61 784 curveto
+59 780 59 779 52 778 curveto
+38 776 31 764 32 750 curveto
+33 745 35 756 37 755 curveto
+41 753 40 740 39 732 curveto
+45 718 57 719 61 734 curveto
+66 753 70 748 91 751 curveto
+94.5 751.5 97 752 100 756 curveto
+103 760 110 760 111 752 curveto
+112 744 113 742 118 737 curveto
+123 732 128 720 129 712 curveto
+130 704 133 702 140 697 curveto
+147 692 152 682 155 667 curveto
+158 652 161 650 171 641 curveto
+176 635.5 177 637 176 634 curveto} def
+
+/dag2 {175 631 178 627 181 621 curveto
+184 615 183 611 177 615 curveto
+183 599 188 600 185 606 curveto
+184 608 190 609 192 604 curveto
+228 627 233 631 234 636 curveto
+234.5 638.5 240 638 242 637 curveto
+244 636 253 636 260 642 curveto
+267 648 294 649 304 644 curveto
+314 639 328 622 322 609 curveto
+316 596 312 580 297 571 curveto 307 570 lineto
+289 541 283 540 279 554 curveto
+275 568 276 577 280 586 curveto
+282 590.5 283 593 278 591 curveto
+268 587 254 565 251 551 curveto
+250 546 249 538 239 536 curveto
+229 534 225 530 228 509 curveto
+229 502 230 500 242 480 curveto
+232 492 230 491 236 473 curveto
+249 451 280 395 297 370 curveto
+305.5 357.5 313 332 309 316 curveto
+305 300 329 238 327 226 curveto
+325 214 328 210 331 203 curveto
+334 196 345 188 348 178 curveto
+349 175 350 168 363 161 curveto
+367 159 371 158 369 147 curveto
+367 136 375 132 380 127 curveto
+395 112 408 78 405 62 curveto
+402 58 412 28 419 23 curveto
+422.5 20.5 420 12 416 10 curveto
+414 9 406 8 408 9 curveto closepath} def
+
+/dag3 {1 setgray 382 73 moveto
+377 102 368 110 353 126 curveto
+348 130 342 150 331 153 curveto
+323 155 311 170 305 184 curveto
+299 198 290 210 285 241 curveto
+280 272 265 270 258 329 curveto
+257 340 250 349 238 362 curveto
+226 375 227 379 226 389 curveto
+225 399 225 407 219 410 curveto
+213 413 199 422 159 480 curveto
+152 490 151 500 167 512 curveto
+199 536 209 537 210 528 curveto
+211 519 220 474 245 444 curveto
+255 432 243 432 251 420 curveto
+259 408 265 392 278 387 curveto 283 372 lineto
+295 348 296 354 293 310 curveto
+292 295 292 277 300 267 curveto
+304 262 305 257 308 245 curveto
+318 197 326 174 361 139 curveto
+385 115 392 93 390 75 curveto
+388 57 385.5 58.5 382 73 curveto} def
+
+/dag4 {368 60 moveto
+360 65 351 84 349 93 curveto
+347 102 340 115 303 148 curveto
+295 155 290 163 284 181 curveto
+278 199 239 298 238 314 curveto
+237.5 322 228 325 225 327 curveto
+222 329 219 335 218 339 curveto
+214 355 195 378 187 388 curveto
+185 390 187 400 153 442 curveto
+136 463 157 463 163 453 curveto
+166 448 175 442 180 434 curveto
+235 346 252 333 253.5 313 curveto
+255 293 255 275 269 248 curveto
+270.5 245 277 241 281 223 curveto
+285 214 293 180 302 168 curveto
+320 144 325 139 335 128 curveto
+355 110 361 97 371 62 curveto
+372 57 376 55 368 60 curveto} def
+
+/dag5 {82 426 moveto
+81 440 87 452 92 462 curveto
+89.5 467 100 469 96 477 curveto
+92 485 101 511 149 555 curveto
+147 557 154 564 147 566 curveto
+144 566 143 567 143 572 curveto
+144 574 144 575 140 573 curveto
+136 571 135 578 141 582 curveto
+139 594 142 597 159 608 curveto
+167.5 613.5 171 610 172 604 curveto
+170 598 175 592 173 585 curveto
+171 580 179 575 181 582 curveto
+183 589 191 599 205 600 curveto
+208 601 210 603 211 610 curveto
+232 620 240 629 243 630 curveto
+241 621 257 628 266 635 curveto
+275 642 282 637 281 625 curveto
+280 617 277 612 252 594 curveto
+244 588 239 573 235 555 curveto
+233 546 232 540 225 539 curveto
+221.5 538 218 549 220 558 curveto
+221 561 218 565 189 547 curveto
+174 538 174 538 173 531 curveto
+172 524 164 522 151 520 curveto
+144.5 519 142 516 141 511 curveto
+141 510 142 509 138 505 curveto
+134 501 134 498 138 487 curveto
+139 484 140 475 139 471 curveto
+139 470 124 468 120 453 curveto
+118 445 120 440 112 433 curveto
+104 426 103 421 102 412 curveto
+101 403 94 404 93 410 curveto
+92 416 83 412 82 426 curveto} def
+
+/dag6 {99 567 moveto
+97 577 99 583 104 590 curveto
+114 604 120 616 139 632 curveto
+144 636 148 637 147 639 curveto
+146 641 140 640 111 617 curveto
+106 613 100 607 94 593 curveto
+91 586 87 588 84 596 curveto
+81 604 82 609 83 618 curveto
+85 636 85 641 79 640 curveto
+73 639 69 642 72 656 curveto
+73.5 663 72 670 71 677 curveto
+70 684 79 694 91 697 curveto
+90 703 93 707 100 708 curveto
+107 709 109 709 109 698 curveto
+109 691 112 690 116 700 curveto
+122 715 114 720 111 720 curveto
+110 720 105 715 100 712 curveto
+80 700 72 702 70 692 curveto
+62 715 69 731 80 738 curveto
+98 749.5 106 743 119 720 curveto
+125 710 126 701 130 700 curveto
+134 699 136 693 129 691 curveto 123 687 lineto
+110 680 105 672 99 658 curveto
+96 651 101 643 104 650 curveto
+107 657 109 657 111 658 curveto
+113 659 117 657 119 662 curveto
+125 670 127 673 125 680 curveto
+137 690 141 689 142 678 curveto
+143 667 143 659 149 653 curveto
+155 647 152 640 160 639 curveto
+168 638 170 630 171 625 curveto
+160 625 155 622 162 620 curveto
+152 612 150 610 131 593 curveto
+127 590 126 585 130 580 curveto
+134 575 132 565 120 560 curveto
+114 557.5 110 551 105 558 curveto
+100 565 101 557 99 567 curveto
+} def
+
+/dagger {dag1 dag2 fill dag3 fill dag4 fill dag5 fill dag6 fill} def
+
+gsave
+ 3 in 2 in translate .6 .6 scale dagger
+ dag1 dag2 closepath
+ pathbbox /ytm exch def /xrm exch def /ybm exch def /xlm exch def
+grestore
+} bind def
+
+% Anything to do when a new page is ended
+/EndPage
+{
+ pagenumber 4 string cvs
+ dup stringwidth pop 8.5 in
+ formatdict /rightmargin get sub
+ formatdict /leftmargin get sub
+ exch sub 2 div formatdict /leftmargin get add
+ formatdict /bottommargin get 2 div moveto show
+ /pagenumber pagenumber 1 add def
+ showpage % A new page here really does mean start a new page.
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+% Page-specific defaults that describe the page.
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout true def % true means fill outside shape. false is inside.
+
+ /in { 72 mul } def
+ /BM 0 in def % Absolute Bottom Margin for page
+ /TM 11 in def % Absolute Top Margin for page
+ /LM 0 in def % Absolute Left Margin for page
+ /RM 8.5 in def % Absolute Right Margin for page
+
+ userdict /pagenumber known not
+ { /pagenumber 1 def } if % Initialize pagenumber if not done already
+} bind def
+
+InitPage % Just loading this file initializes the page.
diff --git a/support/lametex/page/page_demon.ps b/support/lametex/page/page_demon.ps
new file mode 100644
index 0000000000..e3d60abf88
--- /dev/null
+++ b/support/lametex/page/page_demon.ps
@@ -0,0 +1,82 @@
+%! This is a PostScript library meant to be included in other files %%%
+%% Postscript Code by Jon Monsarrat Copyright 1991
+%% permission given for anything except selling this or deleting the header.
+%% This is a page template for the SCRATCH formatter
+%% A normal page for the ASYLUM assassin game
+
+% A margin path that goes around the picture of the BSD daemon. The daemon
+% itself is rather complex to be the margin path itself, but this is possible.
+/DemonBox
+{
+ 3 in 3 in moveto
+ 2.8 in 3.7 in lineto
+ 4.1 in 3.7 in lineto
+ 4.1 in 4.3 in lineto
+ 2.7 in 5.2 in lineto
+ 2.6 in 5.7 in lineto
+ 3.4 in 5.9 in lineto
+ 4.1 in 8 in lineto
+ 5.8 in 8 in lineto
+ 5.4 in 4 in lineto
+ 7.3 in 3.5 in lineto
+ 7.3 in 2.6 in lineto
+ 5.1 in 2.6 in lineto
+ closepath
+} bind def
+
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ 20 ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+% Makes a path that desribes the page
+/PageShape
+{
+% 0 0 moveto 8.5 in 0 lineto 8.5 in 11 in lineto 0 11 in lineto closepath
+ DemonBox
+ currentflat 8 mul
+} bind def
+
+% Anything to do when a new page is started
+/StartPage
+{
+} bind def
+
+% Anything to do when a new page is ended
+/EndPage
+{
+ pagenumber 4 string cvs
+ dup stringwidth pop 8.5 in
+ formatdict /rightmargin get sub
+ formatdict /leftmargin get sub
+ exch sub 2 div formatdict /leftmargin get add
+ formatdict /bottommargin get 2 div moveto show
+ /pagenumber pagenumber 1 add def
+ showpage % A new page here really does mean start a new page.
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+% Page-specific defaults that describe the page.
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout true def % true means fill outside shape. false is inside.
+
+ /in { 72 mul } def
+ /BM 0 in def % Absolute Bottom Margin for page
+ /TM 11 in def % Absolute Top Margin for page
+ /LM .5 in def % Absolute Left Margin for page
+ /RM 8 in def % Absolute Right Margin for page
+
+ userdict /pagenumber known not
+ { /pagenumber 1 def } if % Initialize pagenumber if not done already
+} bind def
+
+InitPage % Just loading this file initializes the page.
+
diff --git a/support/lametex/page/page_kludge.ps b/support/lametex/page/page_kludge.ps
new file mode 100644
index 0000000000..19d45e083c
--- /dev/null
+++ b/support/lametex/page/page_kludge.ps
@@ -0,0 +1,85 @@
+%! page_kludge.ps - A replica of the standard LaTeX page
+%% This is a LameTeX Page Description File written in PostScript.
+%% Postscript Code by Jon Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+%% This is a page template for the LameTeX formatter
+%% A normal page for LameTeX output to look like LaTeX output
+
+% Makes a path that desribes the page
+/PageShape
+{
+ 8.5 in 8.5 in moveto 6 in 6.2 in 2.4 in 90 270 arc 8.5 in 4 in lineto
+ currentflat 8 mul
+} bind def
+
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ 20 ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+% Anything to do when a new page is started
+/StartPage
+{
+ /Roach pagenumber startpage
+ sub dup mul 3 mul SprinkleIcon
+ 5 dict begin
+ /bp 1 in def /lp 3.5 in def /hp 10.3 in def /wp 5 in def
+ lp wp 2 div add bp hp 2 div add moveto
+ 45 rotate
+ /Helvetica-Bold findfont 45 scalefont setfont
+ [ (NO KLUDGES) (NO BUGS) (MOSTLY NONE) (OK, A FEW) (NO BUGS!)
+ (NO BIG BUGS) (READ) (MY LIPS) (NO NEW BUGS) (HELP!)
+ (HELP!) (HELP!) (HELP!) (HELP!) ]
+ pagenumber startpage sub get
+ dup stringwidth pop 2 div -1 mul -16 rmoveto
+ show -45 rotate newpath
+ lp wp 2 div add bp hp 2 div add 2 copy moveto wp .45 mul 0 rmoveto
+ wp .45 mul 360 0 arcn closepath
+ lp wp 2 div add bp hp 2 div add 2 copy moveto
+ wp .37 mul dup 53 cos mul exch 53 sin mul rmoveto
+ wp .37 mul 53 217 arc closepath
+ lp wp 2 div add bp hp 2 div add 2 copy moveto
+ wp .37 mul dup 233 cos mul exch 233 sin mul rmoveto
+ wp .37 mul 233 37 arc closepath
+ closepath stroke
+ end
+} bind def
+
+% Anything to do when a new page is ended
+/EndPage
+{
+ pagenumber 4 string cvs
+ dup stringwidth pop 8.5 in
+ formatdict /rightmargin get sub
+ formatdict /leftmargin get sub
+ exch sub 2 div formatdict /leftmargin get add
+ formatdict /bottommargin get 2 div moveto show
+ /pagenumber pagenumber 1 add def
+ showpage % A new page here really does mean start a new page.
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+% Page-specific defaults that describe the page.
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout true def % true means fill outside shape. false is inside.
+
+ /in { 72 mul } def
+ /BM 0 in def % Absolute Bottom Margin for page
+ /TM 11 in def % Absolute Top Margin for page
+ /LM 1 in def % Absolute Left Margin for page
+ /RM 7.5 in def % Absolute Right Margin for page
+
+ userdict /pagenumber known not
+ { /pagenumber 1 def } if % Initialize pagenumber if not done already
+ /startpage pagenumber def
+} bind def
+
+InitPage % Just loading this file initializes the page.
diff --git a/support/lametex/page/page_latex.ps b/support/lametex/page/page_latex.ps
new file mode 100644
index 0000000000..a64086535d
--- /dev/null
+++ b/support/lametex/page/page_latex.ps
@@ -0,0 +1,62 @@
+%! page_latex.ps - A replica of the standard LaTeX page
+%% This is a LameTeX Page Description File written in PostScript.
+%% Postscript Code by Jon Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+%% This is a page template for the LameTeX formatter
+%% A normal page for LameTeX output to look like LaTeX output
+
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ 20 ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+% Makes a path that desribes the page
+/PageShape
+{
+ 0 0 moveto 8.5 in 0 lineto 8.5 in 11 in lineto 0 11 in lineto closepath
+ currentflat 8 mul
+} bind def
+
+% Anything to do when a new page is started
+/StartPage
+{
+} bind def
+
+% Anything to do when a new page is ended
+/EndPage
+{
+ pagenumber 4 string cvs
+ dup stringwidth pop 8.5 in
+ formatdict /rightmargin get sub
+ formatdict /leftmargin get sub
+ exch sub 2 div formatdict /leftmargin get add
+ formatdict /bottommargin get 2 div moveto show
+ /pagenumber pagenumber 1 add def
+ showpage % A new page here really does mean start a new page.
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+% Page-specific defaults that describe the page.
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout false def % true means fill outside shape. false is inside.
+
+ /in { 72 mul } def
+ /BM 0 in def % Absolute Bottom Margin for page
+ /TM 11 in def % Absolute Top Margin for page
+ /LM 0 in def % Absolute Left Margin for page
+ /RM 8.5 in def % Absolute Right Margin for page
+
+ userdict /pagenumber known not % Initialize pagenumber if not done already
+ { userdict begin /pagenumber 1 def end} if
+} bind def
+
+InitPage % Just loading this file initializes the page.
+
diff --git a/support/lametex/page/page_shake.ps b/support/lametex/page/page_shake.ps
new file mode 100644
index 0000000000..1513d36a3e
--- /dev/null
+++ b/support/lametex/page/page_shake.ps
@@ -0,0 +1,84 @@
+%! page_shake.ps - A replica of the standard LaTeX page
+%% This is a LameTeX Page Description File written in PostScript.
+%% Postscript Code by Jon Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+%% This is a page template for the LameTeX formatter
+%% A page with wavy margins for LameTeX output.
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ 20 ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+%%%%%%%%%%%%%%%% PageShape %%%%%%%%%%%%%%%%%%%%%%
+% PageShape draws a wavy page, given margins.
+/PageShape
+{
+ 4 dict begin
+ /bp 0 in def /lp -.5 in def /hp 11 in def /wp 9.5 in def
+ lp .5 in add bp moveto
+ wp .8 in sub 0 rlineto
+ 1 1 4
+ {
+ pop
+ currentpoint hp 16 div add hp 16 div
+ 270 90 arc
+ currentpoint hp 16 div add hp 16 div
+ 270 90 arcn
+ } for
+ wp .8 in sub -1 mul 0 rlineto
+
+ 1 1 4
+ {
+ pop
+ currentpoint hp 16 div sub hp 16 div
+ 90 270 arc
+ currentpoint hp 16 div sub hp 16 div
+ 90 270 arcn
+ } for
+ end
+ closepath
+ currentflat 8 mul
+} bind def
+
+% Anything to do when a new page is started
+/StartPage
+{
+} bind def
+
+% Anything to do when a new page is ended
+/EndPage
+{
+ pagenumber 4 string cvs
+ dup stringwidth pop 8.5 in
+ formatdict /rightmargin get sub
+ formatdict /leftmargin get sub
+ exch sub 2 div formatdict /leftmargin get add
+ formatdict /bottommargin get 2 div moveto show
+ /pagenumber pagenumber 1 add def
+ showpage % A new page here really does mean start a new page.
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+% Page-specific defaults that describe the page.
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout false def % true means fill outside shape. false is inside.
+
+ /in { 72 mul } def
+ /BM 0 in def % Absolute Bottom Margin for page
+ /TM 11 in def % Absolute Top Margin for page
+ /LM 0 in def % Absolute Left Margin for page
+ /RM 8.5 in def % Absolute Right Margin for page
+
+ userdict /pagenumber known not
+ { /pagenumber 1 def } if % Initialize pagenumber if not done already
+} bind def
+
+InitPage % Just loading this file initializes the page.
diff --git a/support/lametex/page/page_skew.ps b/support/lametex/page/page_skew.ps
new file mode 100644
index 0000000000..c49e0dbf7c
--- /dev/null
+++ b/support/lametex/page/page_skew.ps
@@ -0,0 +1,72 @@
+%! page_skew.ps - A page turned at at 30 degree angle
+%% This is a LameTeX Page Description File written in PostScript.
+%% Postscript Code by Jon Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+
+%%%%%%%%%%%%%%%% width height angle left bot Skew-Page %%%%%%%%%%%%%%%%%%%%%%
+% Draws a twisted page at ang degrees, given margins and size
+/Skew-Page
+{
+ % wp hp ang lp bp
+ moveto dup cos exch sin 2 copy % wp hp cosang sinang cosang sinang
+ 5 index mul exch 6 -1 roll mul % hp cosang sinang sinwpang coswpang
+ 5 2 roll 2 index mul neg 3 1 roll mul % sinwpang coswpang -sinhpang coshpang
+ 2 index 4 index rlineto % sinwpang coswpang -sinhpang coshpang
+ rlineto neg exch neg rlineto % -empty-
+ closepath
+} bind def
+
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ bslot 50 sub ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+/PageShape
+{
+ 8.5 in 11 in 30 0 0 Skew-Page
+ currentflat 8 mul
+} bind def
+
+% Anything to do when a new page is started
+/StartPage
+{
+ 0 0 moveto -30 rotate
+} bind def
+
+% Anything to do when a new page is ended
+/EndPage
+{
+ pagenumber 4 string cvs
+ dup stringwidth pop 8.5 in
+ formatdict /rightmargin get sub
+ formatdict /leftmargin get sub
+ exch sub 2 div formatdict /leftmargin get add
+ formatdict /bottommargin get 2 div moveto show
+ /pagenumber pagenumber 1 add def
+ showpage % A new page here really does mean start a new page.
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+% Page-specific defaults that describe the page.
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout false def % true means fill outside shape. false is inside.
+
+ /in {72 mul} def
+ /BM 0 def % Bottom Margin
+ /TM 11 in def % Top Margin
+ /LM 0 def % Left Margin
+ /RM 8.5 in def % Right Margin
+
+ userdict /pagenumber known not % Initialize pagenumber if not done already
+ { userdict begin /pagenumber 1 def end} if
+} bind def
+
+InitPage % Just loading this file initializes the page.
diff --git a/support/lametex/page/page_title.ps b/support/lametex/page/page_title.ps
new file mode 100644
index 0000000000..7fe2593b61
--- /dev/null
+++ b/support/lametex/page/page_title.ps
@@ -0,0 +1,221 @@
+%! page_title.ps - A fancy titlepage for a document
+%% This is a LameTeX Page Description File written in PostScript.
+%% Postscript Code by Jon Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+%% This is a page template for the LameTeX formatter
+%% A normal page for LameTeX output to look like LaTeX output
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+% Makes a path that desribes the page and leaves a setflat value on the stack.
+/PageShape
+{
+ 0 0 moveto 8.5 in 0 lineto 8.5 in 11 in lineto 0 11 in lineto closepath
+ currentflat 8 mul
+} bind def
+
+/StartPage
+{
+ %%%%%%%%%%%%%%%% string Weird-Stuff %%%%%%%%%%%%%%%%%%%%%%%%%%
+ % Weird-Stuff puts some fancy border stuff in around a given string
+ /Weird-Stuff
+ {
+ save
+ %%%%%%%%%%%%%%%% num num block %%%%%%%%%%%
+ % width and X position
+ /Block
+ {
+ 0 moveto dup 0 rlineto
+ .35 in .7 in rlineto -1 mul 0 rlineto
+ closepath 1 setgray fill 0 setgray
+ } bind def
+ %%%%%% end of Block %%%%%%%%%%%%%%%%
+
+ 0.6 setgray
+ exch /name exch def
+ 90 rotate 0 -1.1 in translate
+ /bit {.02 in} def
+ gsave
+
+ 2 in 0 translate
+ .7 in dup scale
+ 1 3 in div setlinewidth
+
+ /Thick 1 8 div def
+ /Tall 1 def
+ /HalfThick Thick .5 mul def
+
+ newpath
+ HalfThick Thick moveto
+ Thick 0 lineto
+ 1 Thick sub 0 lineto
+ 1 HalfThick sub Thick lineto
+ .5 HalfThick add Tall Thick sub lineto
+
+ 1 Thick sub 0 moveto
+ .5 HalfThick add Tall 3 Thick mul sub lineto
+ Thick 3 mul Thick 2 mul lineto
+
+ 1 Thick 2.5 mul sub Thick moveto
+ .5 Tall Thick 4 mul sub lineto
+ stroke
+
+ newpath
+ HalfThick Thick moveto
+ 1 Thick 2.5 mul sub Thick lineto
+ HalfThick neg Thick rlineto
+ Thick Thick add Thick Thick add lineto
+ .5 HalfThick add Tall Thick sub lineto
+ Thick neg 0 rlineto
+ closepath
+ fill
+ grestore
+ /Times-BoldItalic findfont 90 scalefont setfont
+ gsave 2.65 in 0 moveto 1 .5 scale
+ -.07 in 0 name ashow grestore
+ gsave 2.65 in .625 in moveto 1 -.22 scale
+ -.07 in 0 name ashow grestore
+ newpath .3 in 0 moveto 1.9 in 0 lineto
+ 2.25 in .64 in lineto .3 in .64 in lineto
+ .5 in .32 in lineto closepath fill
+ 6.4 in 0 moveto 8.9 in 0 lineto 8.8 in -.2 in lineto
+ 9.5 in .32 in lineto 8.8 in .84 in lineto
+ 8.9 in .64 in lineto 6.75 in .64 in lineto closepath fill
+ .05 in .7 in Block
+ .08 in 1.1 in Block
+ .11 in 1.5 in Block
+ .1 in 6.8 in Block
+ .15 in 7.3 in Block
+ .2 in 7.7 in Block
+ .2 in 8 in Block
+ .1 in 8.25 in Block
+ restore
+ } bind def
+
+ %%%%%%%%%%%%% num num circle - %%%%%%%%%%%%%%%%%%%%%%%%
+ % circle fills & strokes a small white circle around current point
+ /circle { currentpoint .1 in 0 rmoveto .1 in 0 360 arc
+ 1 setgray fill } def
+
+ /StringBuffer 10 string def
+
+ %%%%%%%%%%%%%%%% string Shade - %%%%%%%%%%%%%%%%%%%%%%%%
+ % Shade prints a shaded character at the current position
+ % .8 top .1 bot gray
+ /Shade
+ {
+ currentpoint /aty exch def /atx exch def
+ gsave
+ dup true charpath clip (Mg) true charpath pathbbox
+ exch 4 -1 roll sub /wid exch def exch sub /hit exch def
+ /pl aty hit .3 mul sub def /ph aty hit add .1 in sub def
+ pl .1 in ph
+ {
+ dup pl sub ph pl sub div .7 mul .1 add setgray
+ atx exch moveto wid 0 rlineto 0 hit rlineto
+ wid -1 mul 0 rlineto closepath fill
+ } for
+ grestore
+ dup 0 setgray true charpath stroke
+ atx aty moveto stringwidth pop 0 rmoveto
+ } bind def
+
+ %%%%%%%%%%%%%%%% string Title - %%%%%%%%%%%%%%%%%%%%%%%%
+ % Title prints a string in the title position of the page,
+ % and shoots it full of holes!
+ /Title
+ {
+ save
+ exch /str exch def /border .2 in def /hit 40 def
+ /NewCenturySchlbk-Bold findfont hit 1.5 mul scalefont setfont
+ str stringwidth pop /lg exch def
+ newpath 8.5 in lg sub 2 div 9.7 in moveto
+ gsave
+ currentpoint border sub exch border sub exch moveto
+ lg border 2 mul add 0 rlineto 0 hit border 2 mul add rlineto
+ lg -1 mul border 2 mul sub 0 rlineto closepath
+ gsave .8 setgray fill grestore 2 setlinewidth 0 setgray stroke
+ .5 setlinewidth
+ grestore
+ str length 1 sub 0 1 3 -1 roll
+ { rand pop
+ str exch 1 getinterval Shade
+ } for
+ 1 1 30
+ {
+ pop rand BIG div 2 div
+ lg border 4 mul add mul 8.5 in lg sub 2 div add border sub
+ rand BIG div 2 div
+ hit border 4 mul add mul 10.1 in add border sub moveto
+ circle
+ } for
+ 1 setlinewidth 0 setgray
+ restore
+ } bind def
+
+ /Web
+ {
+ newpath
+ 0 0 moveto
+ 1 1 8 { pop 0.5 in 0 -3 in -3 in -2 in 0.5 in rcurveto 45 rotate } for
+ } bind def
+
+ %%%%%% xlow ylow width height grain ShadeBox - %%%%%%%%%%%%%%%%%%
+ % shades in a box with increasingly darker horizontal rectangles.
+ /ShadeBox
+ {
+ newpath
+ 6 dict begin
+ /grain exch def
+ /height exch def
+ /width exch def
+ /ylow exch def
+ /xlow exch def
+ newpath
+ ylow grain ylow height add grain sub
+ {
+ dup ylow sub height div .9 mul .1 add setgray % How dark to stop?
+ xlow exch moveto width 0 rlineto
+ 0 grain rlineto width neg 0 rlineto
+ closepath fill
+ } for
+ end
+ } bind def
+
+ 1.5 in 1 in 6.5 in 5 in .05 in ShadeBox
+
+ 8 in 4 in translate
+ 0 setgray Web fill
+ .2 in .2 in translate
+ .5 setgray 10 setlinewidth Web fill
+ .8 setgray 3 setlinewidth Web stroke
+ grestoreall % Don't want all this to have an effect on text printing
+} bind def
+
+/EndPage
+{
+ /pagenumber pagenumber 1 add def % Don't print a page number on titlepage
+ showpage % A new page here really does mean start a new page.
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout false def % true means fill outside shape. false is inside.
+
+ % Page Defaults
+ /in { 72 mul } def
+ /BM 0 in def % Absolute Bottom Margin for page
+ /TM 11 in def % Absolute Top Margin for page
+ /LM 0 in def % Absolute Left Margin for page
+ /RM 8.5 in def % Absolute Right Margin for page
+
+ userdict /pagenumber known not
+ { /pagenumber 1 def } if % Initialize pagenumber if not done already
+
+ /BIG 1073741824 def
+} bind def
+
+InitPage % Just loading this file initializes the page.
diff --git a/support/lametex/page/wigglies.ps b/support/lametex/page/wigglies.ps
new file mode 100644
index 0000000000..8f54b6bfb3
--- /dev/null
+++ b/support/lametex/page/wigglies.ps
@@ -0,0 +1,26 @@
+formatdict begin
+
+/BIG 1073741824 def
+
+% Gives a random number between 0 and N
+% N Random random-number
+/Random
+{
+ rand BIG div mul 2 div
+} bind def
+
+/foo 0 def
+
+/SHOWIT
+{
+ dup stringwidth pop dup 2 div
+ gsave
+ dup 0 rmoveto
+ /foo foo 1 add def
+ foo 15 div dup Random exch 2 div sub rotate
+ neg 0 rmoveto exch show
+ grestore
+ 0 rmoveto
+} bind def
+
+end
diff --git a/support/lametex/src/Counter.C b/support/lametex/src/Counter.C
new file mode 100644
index 0000000000..ca38a78c67
--- /dev/null
+++ b/support/lametex/src/Counter.C
@@ -0,0 +1,527 @@
+/* Counter.C
+ *
+ * LameTeX needs to keep track of a number of counters, just like LaTeX does,
+ * for things like tables, footnotes, chapters and sections, and enumerations.
+ * Since all counters need to be handled in much the same way, the Counter
+ * derived class under the Parameters class has been defined.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+#include "Operator.h"
+#include "Global.h"
+#include "Counter.h"
+#include "Document.h"
+#include "Font.h"
+#include <string.h>
+#include <stdio.h>
+
+Counter::Counter()
+{
+ for(int x=0; x < LastType; x++)
+ counters[x] = 0;
+}
+
+Counter::Counter(Counter *base)
+{
+ for(int x=0; x < LastType; x++)
+ counters[x] = base->counters[x];
+}
+
+Param *Counter::copy()
+{
+ return new Counter(this);
+}
+
+int Counter::set(int subtype, float print_number, char *)
+{
+ char number[10];
+ char message[20];
+ char output[20];
+ if(subtype >= Part && subtype <= Subparagraph) {
+ Token openbrace;
+ if(!openbrace.match("{"))
+ Global::files->fatal_error("Expecting '{' after section statement");
+ if(print_number) {
+ counters[subtype]++;
+ switch(subtype) {
+ case Part:
+ counters[Chapter]=0;
+ case Chapter:
+ counters[Section]=0;
+ case Section:
+ counters[Subsection]=0;
+ case Subsection:
+ counters[Subsubsection]=0;
+ case Subsubsection:
+ counters[Paragraph]=0;
+ case Paragraph:
+ counters[Subparagraph]=0;
+ case Subparagraph:
+ default:
+ break;
+ }
+ } else
+ counters[subtype] = -1;
+ }
+
+ float fontsize = Global::stack->get(Environment::PFont, Font::Size, "");
+
+ switch(subtype) {
+ case Part:
+ Global::files->outfile << endl;
+ if(print_number) {
+ Operator::plaintext("Part");
+ upcase_roman(counters[Part], number);
+ Operator::plaintext(number);
+ }
+ Operator::do_vspace(0, 0, 200.0, "");
+ break;
+ case Chapter:
+ Global::files->outfile << endl;
+ if(Global::files->plain_text_output)
+ Operator::do_vspace(0, 0, 13.0, "");
+ else
+ Operator::do_vspace(0, 0, 112.5 + (fontsize-18.0) * 0.85, "");
+ if(print_number) {
+ Operator::plaintext("Chapter");
+ arabic(counters[Chapter], number);
+ Operator::plaintext(number);
+
+ if(Global::files->plain_text_output)
+ Operator::do_vspace(0, 0, 13.0, "");
+ else
+ Operator::do_vspace(0, 0, 50.0 + (fontsize-22.0) * 0.85, "");
+ }
+ Stack::set(Environment::PFont, Font::Huge, 0.0, "");
+ break;
+ case Section:
+ Global::files->outfile << endl;
+ if(Global::files->plain_text_output)
+ Operator::do_vspace(0, 0, 8.0, "");
+ else
+ Operator::do_vspace(0, 0, 20.7 + (fontsize-13.0) * 3.4, "");
+ if(print_number) {
+ sprintf(number,"%d.%d",counters[Chapter],counters[Section]);
+ Operator::plaintext(number);
+ Global::files->outfile << endl;
+ Global::files->outfile << 15.0 + (fontsize-13.0) * 1.1
+ << " HSpace" << endl;
+ }
+ break;
+ case Subsection:
+ Global::files->outfile << endl;
+ Operator::do_vspace(0, 0, 4.5 + (fontsize-11.0) * 3.4, "");
+ if(print_number) {
+ sprintf(number,"%d.%d.%d",counters[Chapter],counters[Section],
+ counters[Subsection]);
+ Operator::plaintext(number);
+ Global::files->outfile << endl;
+ Global::files->outfile << 15.0 + (fontsize-11.0) * 1.1
+ << " HSpace" << endl;
+ }
+ break;
+ case Subsubsection:
+ case Paragraph:
+ case Subparagraph:
+ break;
+ case Page:
+ break;
+ case Equation:
+ break;
+ case Figure:
+ break;
+ case Table:
+ break;
+ case Footnote:
+ break;
+ case Mpfootnote:
+ break;
+ case Description:
+ counters[Item] = Description; // Mark Description most recent
+ counters[Description]=0;
+ break;
+ case Itemize:
+ counters[Item] = Itemize; // Mark Itemize most recent
+ break;
+ case Enum:
+ if(++counters[Enum] > 4)
+ Global::files->fatal_error(
+ "Can't have more than four nested enumerates");
+ counters[Item] = Enum; // Mark Enumerate most recent
+ switch(counters[Enum]) {
+ case 1:
+ counters[Enumi]=0;
+ break;
+ case 2:
+ counters[Enumii]=0;
+ break;
+ case 3:
+ counters[Enumiii]=0;
+ break;
+ case 4:
+ counters[Enumiv]=0;
+ break;
+ }
+ break;
+ case Enumi:
+ break;
+ case Enumii:
+ break;
+ case Enumiii:
+ break;
+ case Enumiv:
+ break;
+ case Item:
+ switch(counters[Item]) {
+ case Description:
+ description();
+ break;
+ case Itemize:
+ Stack::set(Environment::PDocument, Document::NewLine, 0.0, "");
+ Global::files->force_start_page();
+ Global::files->outfile << endl;
+ Global::files->outfile << "BULLET" << endl;
+ break;
+ case Enum:
+ Stack::set(Environment::PDocument, Document::NewLine, 0.0, "");
+ Global::files->force_start_page();
+ Global::files->outfile << endl;
+ switch(counters[Enum]) {
+ case 1:
+ arabic(++counters[Enumi], message);
+ strcat(message, ".");
+ break;
+ case 2:
+ message[0]='(';
+ downcase_alpha(++counters[Enumii], &message[1]);
+ strcat(message, ")");
+ break;
+ case 3:
+ downcase_roman(++counters[Enumiii], message);
+ strcat(message, ".");
+ break;
+ case 4:
+ upcase_alpha(++counters[Enumiv], message);
+ strcat(message, ".");
+ break;
+ }
+ Global::files->force_start_page();
+ Operator::registrar(message, output);
+ Global::files->outfile << " " << output << " ENUMERATE" << endl;
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+ return TRUE;
+}
+
+/* Handles the \item command in a description. If the item is the 0th
+ * item, then make an indentation.
+ */
+void Counter::description()
+{
+ Stack::relative_set(Environment::PLength, Length::Parameter,
+ -22.5, "\\oddsidemargin");
+ Stack::relative_set(Environment::PLength, Length::Parameter,
+ 22.5, "\\textwidth");
+ Stack::set(Environment::PDocument, Document::NewLine, 0.0, "");
+ Global::files->force_start_page();
+ Global::files->outfile << endl;
+
+ Token openbrace;
+ if(!openbrace.match("["))
+ Global::files->fatal_error("Expecting '[' after \\item");
+ Stack::set(Environment::PFont, Font::Bold, 0.0, "");
+
+ for(Token description; !description.match("]"); description=Token())
+ description.handle();
+
+ Global::files->outfile << endl << "13.0 HSpace" << endl;
+ Stack::set(Environment::PFont, Font::Roman, 0.0, "");
+
+ Stack::relative_set(Environment::PLength, Length::Parameter,
+ 22.5, "\\oddsidemargin");
+ Stack::relative_set(Environment::PLength, Length::Parameter,
+ -22.5, "\\textwidth");
+}
+
+float Counter::get(int subtype, char *)
+{
+ return counters[subtype];
+}
+
+void Counter::postscript_set(int subtype)
+{
+ switch(subtype) {
+ default:
+ break;
+ }
+}
+
+void Counter::revert(Param *from)
+{
+ int count;
+ for(int subtype=0; subtype < LastType; subtype++)
+ if((count = (int)from->get(subtype,"revert")) != counters[subtype]) {
+ if(count > 0)
+ counters[subtype] = count;
+ switch(subtype) {
+ case Part:
+ Stack::set(Environment::PDocument, Document::NewLine, 0.0, "");
+ case Chapter:
+ if(Global::files->plain_text_output)
+ Operator::do_vspace(0, 0, 13.0, "");
+ else
+ Operator::do_vspace(0, 0, 52, "");
+ break;
+ case Section:
+ if(Global::files->plain_text_output)
+ Operator::do_vspace(0, 0, 8.0, "");
+ else
+ Operator::do_vspace(0, 0, 22.4, "");
+ break;
+ case Subsection:
+ if(Global::files->plain_text_output)
+ Operator::do_vspace(0, 0, 8.0, "");
+ else
+ Operator::do_vspace(0, 0, 18.0, "");
+ break;
+ case Subsubsection:
+ case Paragraph:
+ case Subparagraph:
+ Stack::set(Environment::PDocument, Document::NewLine, 0.0, "");
+ break;
+ case Page:
+ break;
+ case Equation:
+ break;
+ case Figure:
+ break;
+ case Table:
+ break;
+ case Footnote:
+ break;
+ case Mpfootnote:
+ break;
+ case Enum:
+ counters[Enum]--;
+ break;
+ case Enumi:
+ break;
+ case Enumii:
+ break;
+ case Enumiii:
+ break;
+ case Enumiv:
+ break;
+ case Itemize:
+ break;
+ }
+ }
+}
+
+void Counter::downcase_roman(int count, char *number)
+{
+ switch(count/100) {
+ case 1:
+ strcpy(number,"c");
+ break;
+ case 2:
+ strcpy(number,"cc");
+ break;
+ case 3:
+ strcpy(number,"ccc");
+ break;
+ case 4:
+ strcpy(number,"cd");
+ break;
+ case 5:
+ strcpy(number,"d");
+ break;
+ case 0:
+ default:
+ strcpy(number,"");
+ break;
+ }
+
+ switch(count%100/10) {
+ case 0:
+ break;
+ case 1:
+ strcat(number,"x");
+ break;
+ case 2:
+ strcat(number,"xx");
+ break;
+ case 3:
+ strcat(number,"xxx");
+ break;
+ case 4:
+ strcat(number,"xl");
+ break;
+ case 5:
+ strcat(number,"l");
+ break;
+ case 6:
+ strcat(number,"lx");
+ break;
+ case 7:
+ strcat(number,"lxx");
+ break;
+ case 8:
+ strcat(number,"lxxx");
+ break;
+ case 9:
+ strcat(number,"xc");
+ break;
+ }
+
+ switch(count%10) {
+ case 0:
+ break;
+ case 1:
+ strcat(number,"i");
+ break;
+ case 2:
+ strcat(number,"ii");
+ break;
+ case 3:
+ strcat(number,"iii");
+ break;
+ case 4:
+ strcat(number,"iv");
+ break;
+ case 5:
+ strcat(number,"v");
+ break;
+ case 6:
+ strcat(number,"vi");
+ break;
+ case 7:
+ strcat(number,"vii");
+ break;
+ case 8:
+ strcat(number,"viii");
+ break;
+ case 9:
+ strcat(number,"ix");
+ break;
+ }
+};
+
+void Counter::upcase_roman(int count, char *number)
+{
+ switch(count/100) {
+ case 1:
+ strcpy(number,"C");
+ break;
+ case 2:
+ strcpy(number,"CC");
+ break;
+ case 3:
+ strcpy(number,"CCC");
+ break;
+ case 4:
+ strcpy(number,"CD");
+ break;
+ case 5:
+ strcpy(number,"D");
+ break;
+ case 0:
+ default:
+ strcpy(number,"");
+ break;
+ }
+
+ switch(count%100/10) {
+ case 0:
+ break;
+ case 1:
+ strcat(number,"X");
+ break;
+ case 2:
+ strcat(number,"XX");
+ break;
+ case 3:
+ strcat(number,"XXX");
+ break;
+ case 4:
+ strcat(number,"XL");
+ break;
+ case 5:
+ strcat(number,"L");
+ break;
+ case 6:
+ strcat(number,"LX");
+ break;
+ case 7:
+ strcat(number,"LXX");
+ break;
+ case 8:
+ strcat(number,"LXXX");
+ break;
+ case 9:
+ strcat(number,"XC");
+ break;
+ }
+
+ switch(count%10) {
+ case 0:
+ break;
+ case 1:
+ strcat(number,"I");
+ break;
+ case 2:
+ strcat(number,"II");
+ break;
+ case 3:
+ strcat(number,"III");
+ break;
+ case 4:
+ strcat(number,"IV");
+ break;
+ case 5:
+ strcat(number,"V");
+ break;
+ case 6:
+ strcat(number,"VI");
+ break;
+ case 7:
+ strcat(number,"VII");
+ break;
+ case 8:
+ strcat(number,"VIII");
+ break;
+ case 9:
+ strcat(number,"IX");
+ break;
+ }
+};
+
+void Counter::arabic(int count, char *number)
+{
+ sprintf(number,"%d",count);
+};
+
+void Counter::downcase_alpha(int count, char *number)
+{
+ if(count >= 26) {
+ sprintf(number,"%c%c",('a'+count/26-1),('a'+count%26-1));
+ }
+ sprintf(number,"%c",('a'+count%26-1));
+};
+
+void Counter::upcase_alpha(int count, char *number)
+{
+ if(count >= 26) {
+ sprintf(number,"%c%c",('A'+count/26-1),('A'+count%26-1));
+ }
+ sprintf(number,"%c",('A'+count%26-1));
+};
diff --git a/support/lametex/src/Counter.h b/support/lametex/src/Counter.h
new file mode 100644
index 0000000000..f0ae40954c
--- /dev/null
+++ b/support/lametex/src/Counter.h
@@ -0,0 +1,56 @@
+/* Counter.h
+ *
+ * LameTeX needs to keep track of a number of counters, just like LaTeX does,
+ * for things like tables, footnotes, chapters and sections, and enumerations.
+ * Since all counters need to be handled in much the same way, the Counter
+ * derived class under the Parameters class has been defined.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+class Counter : public Param {
+ public:
+ enum CounterType { // The official LaTeX counters. All start at zero.
+ Part,
+ Chapter,
+ Section,
+ Subsection,
+ Subsubsection,
+ Paragraph,
+ Subparagraph,
+ Page,
+ Equation,
+ Figure,
+ Table,
+ Footnote,
+ Mpfootnote,
+ Description,
+ Enum,
+ Enumi,
+ Enumii,
+ Enumiii,
+ Enumiv,
+ Itemize,
+ Item,
+ LastType
+ };
+
+ Counter();
+ Counter(Counter *);
+ Param *copy();
+ int set(int, float, char*);
+ float get(int, char*);
+ void postscript_set(int);
+ void revert(Param *);
+ void downcase_roman(int, char*);
+ void upcase_roman(int, char*);
+ void arabic(int, char*);
+ void downcase_alpha(int, char*);
+ void upcase_alpha(int, char*);
+ private:
+ int counters[LastType];
+ void description();
+};
+
diff --git a/support/lametex/src/Document.C b/support/lametex/src/Document.C
new file mode 100644
index 0000000000..329212052a
--- /dev/null
+++ b/support/lametex/src/Document.C
@@ -0,0 +1,299 @@
+/* Document.C
+ *
+ * Of all the parameters, those in the derived class Document are probably
+ * the most basic. Calls to class Document routines can usually be resolved
+ * directly into some simple PostScript output involving no nesting.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+#include "Operator.h"
+#include "Global.h"
+#include "Document.h"
+#include "Font.h"
+#include <string.h>
+#include <stdio.h>
+
+float Document::start_page;
+
+Document::Document()
+{
+ for(int x=0; x < LastType; x++)
+ values[x] = 0.0;
+ begin_command[0] = '\0';
+ start_page = 0;
+}
+
+Document::Document(Document *base)
+{
+ for(int x=0; x < LastType; x++)
+ values[x] = base->values[x];
+ strcpy(begin_command, base->begin_command);
+}
+
+Param *Document::copy()
+{
+ Document *doc = new Document(this);
+ doc->set(End, 0.0, begin_command);
+ return doc;
+}
+
+int Document::set(int subtype, float value, char *replacestr)
+{
+ switch(subtype) {
+ case Begin:
+ strcpy(begin_command,replacestr);
+ break;
+ case DocumentStart:
+ values[DocumentStart] = value;
+ break;
+ case End:
+ if(strcmp(begin_command,replacestr) != 0) {
+ char message[MAXSTRING];
+ sprintf(message, "\\end{%s} does not match a \\begin{%s}",
+ replacestr, begin_command);
+ Global::files->fatal_error(message);
+ }
+ begin_command[0] = '\0';
+ break;
+ case NewLine:
+ Operator::do_vspace(0, 0,
+ Global::stack->get(Environment::PLength, Length::Parameter,
+ "\\baselineskip"), "");
+ break;
+ case StartPage:
+ start_page = value;
+ break;
+ case Stealth:
+ if(!Stack::get(Environment::PDocument, Document::Comment, ""))
+ Global::files->fatal_error(
+ "\\stealth must go on a comment line to be compatible with LaTeX");
+ values[Stealth] = value;
+ break;
+ default:
+ values[subtype] = value;
+ break;
+ }
+ return TRUE;
+}
+
+float Document::get(int subtype, char *comparestr)
+{
+ switch(subtype) {
+ case CloseBrace:
+ if(begin_command[0] != '\0') {
+ char message[MAXSTRING];
+ sprintf(message, "\\begin{%s} closed with '}' instead of \\end{%s}",
+ begin_command, begin_command);
+ Global::files->fatal_error(message);
+ }
+ break;
+ case Begin:
+ case End:
+ return !strcmp(comparestr, begin_command);
+ case ShutDown: // only happens in Stack::shutdown()
+ if(begin_command[0] != '\0') {
+ char message[MAXSTRING];
+ sprintf(message, "\\begin{%s} not closed at end of input",
+ begin_command);
+ Global::files->fatal_error(message);
+ }
+ break;
+ case StartPage:
+ return start_page;
+ default:
+ break;
+ }
+ return values[subtype];
+}
+
+void Document::revert(Param *from)
+{
+ for(int subtype=0; subtype < LastType; subtype++) {
+ switch(subtype) {
+ case End:
+ case Begin:
+ case CloseBrace:
+ case ShutDown:
+ break;
+ default:
+ if(values[subtype] != from->get(subtype,"revert"))
+ postscript_set(subtype);
+ break;
+ }
+ }
+}
+
+void Document::postscript_set(int subtype)
+{
+ switch(subtype) {
+ case DocumentStart: // No postscript output needed
+ default:
+ break;
+ }
+}
+
+/* Begins an environment */
+void Document::begin(int paramtype, int subtype, float value,
+ char *replacestr)
+{
+ Token openbrace;
+ if(!openbrace.match("{"))
+ Global::files->fatal_error("Expecting '{' after \\begin statement");
+
+ Token command;
+ if(command.match("}"))
+ Global::files->
+ fatal_error("Expecting command before closing '}' in \\begin");
+
+ if(!command.match("stealth"))
+ Stack::push(paramtype, subtype, value, replacestr);
+
+ Token closebrace;
+ if(!closebrace.match("}"))
+ Global::files->
+ fatal_error("More than one word before closing '}' in \\begin");
+
+ char begin_command[MAXSTRING];
+ strcpy(begin_command,"\\"); // Make the token "foo" into command "\foo"
+ char *tokentext = command.get_text();
+
+ // One of the values in parameter "Document" keeps track of the
+ // command executed by the last \begin command, to that when the \end
+ // command is called, we can check it against the \begin command.
+ if(!command.match("stealth"))
+ Stack::set(Environment::PDocument, Document::Begin, 0.0, tokentext);
+
+ strcat(begin_command,tokentext);
+ command.make_text(begin_command);
+ command.handle(); // Handle the command.
+
+}
+
+/* Ends an environment */
+void Document::end(int, int, float, char *)
+{
+ Token openbrace;
+ if(!openbrace.match("{"))
+ Global::files->fatal_error("Expecting '{' after \\end");
+
+ Token command; // Assume it's the same as the last begin command
+ if(command.match("}"))
+ Global::files->fatal_error(
+ "Expecting command before '}' in \\end statement");
+ if(!command.match("stealth")) {
+ char *begin_command = command.get_text();
+ Stack::set(Environment::PDocument, Document::End, 0.0, begin_command);
+ }
+
+ Token closebrace;
+ if(!closebrace.match("}"))
+ Global::files->
+ fatal_error("More than one word before closing '}' in \\end");
+
+ if(command.match("stealth"))
+ Stack::set(Environment::PDocument, Document::Stealth, 0.0, "");
+ else
+ Stack::pop(0, Document::End, 0.0, "");
+}
+
+void Document::documentstyle(int, int, float, char *)
+{
+ Token openbrace;
+ if(openbrace.match("[")) {
+ Global::files->comma_delimiter(TRUE); // Commas are valid delimiters
+
+ for(Token option = Token(); !option.match("]"); option = Token()) {
+ if(option.match(""))
+ continue;
+
+ if(option.match("10pt")) {
+ // Do nothing. This is the default.
+ } else if(option.match("11pt")) {
+ // Makes 11 point type the default size
+ Stack::set(Environment::PFont, Font::Base11pt, 0.0, "");
+ Stack::set(Environment::PLength, Length::Parameter, 23.5,
+ "\\bigskipamount");
+ Stack::set(Environment::PLength, Length::Parameter, 18.6,
+ "\\medskipamount");
+ Stack::set(Environment::PLength, Length::Parameter, 16.0,
+ "\\smallskipamount");
+ } else if(option.match("12pt")) {
+ // Makes 12 point type the default size
+ Stack::set(Environment::PFont, Font::Base12pt, 0.0, "");
+ Stack::set(Environment::PLength, Length::Parameter, 25.7,
+ "\\bigskipamount");
+ Stack::set(Environment::PLength, Length::Parameter, 20.3,
+ "\\medskipamount");
+ Stack::set(Environment::PLength, Length::Parameter, 17.4,
+ "\\smallskipamount");
+ } else if(option.match("twoside")) {
+ // Formats the output for printing on both sides of a page
+ Global::files->warning("twoside option not supported in LameTeX");
+ } else if(option.match("twocolumn")) {
+ // Makes two-column pages
+ Global::files->warning(
+ "twocolumn option not supported in LameTeX");
+ } else if(option.match("titlepage")) {
+ // article option only!
+ Global::files->warning("twoside option not supported in LameTeX");
+ } else if(option.match("openbib")) {
+ Global::files->warning("openbib option not supported in LameTeX");
+ } else if(option.match("leqno")) {
+ Global::files->warning("leqno option not supported in LameTeX");
+ } else if(option.match("fleqn")) {
+ Global::files->warning("fleqn option not supported in LameTeX");
+ } else
+ Global::files->warning("Unknown option in \\documentstyle[]");
+ }
+ Global::files->comma_delimiter(FALSE); // Commas not valid delimiters
+ openbrace = Token(); // An openbrace should come now
+ }
+
+ if(openbrace.match("{")) {
+ } else
+ Global::files->fatal_error("Expecting '{' or '[' in \\documentstyle");
+
+ Token style;
+ if(style.match("}"))
+ Global::files->fatal_error(
+ "Expecting style before '}' in \\documentstyle");
+
+ if(style.match("article")) {
+ // the article style does not have a \chapter command
+ // the default pagestyle is plain
+ // \flushbottom if [twoside], else \raggedbottom
+ // numbers figures and tables consecutively throughout
+ // if [titlepage] is used \abstract looks like normal article paragraph
+ // \parskip is zero
+ } else if(style.match("book")) {
+ // \flushbottom
+ // numbers figures and tables by chapter
+ // there is no \abstract environment
+ // \parskip is zero
+ } else if(style.match("letter")) {
+ // same as the \letter command. Very complex.
+ // special commands \opening, \address, \signature, \cc, \encl, etc.
+ // \raggedbottom
+ // \parskip is non-zero
+ Global::files->warning("letter style not supported in LameTeX");
+ } else if(style.match("report")) {
+ // the default pagestyle is plain
+ // \flushbottom if [twoside], else \raggedbottom
+ // numbers figures and tables by chapter
+ // \abstract is placed on a separate page
+ // \parskip is zero
+ } else if(style.match("slides")) {
+ // same as the \slide command. Very complex.
+ Global::files->warning("slides style not supported in LameTeX");
+ } else
+ Global::files->warning(
+ "Unknown style in \\documentstyle. User-defined styles not supported.");
+
+ Token closebrace;
+ if(!closebrace.match("}"))
+ Global::files->fatal_error(
+ "Only one word allowed between braces in \\documentstyle");
+}
diff --git a/support/lametex/src/Document.h b/support/lametex/src/Document.h
new file mode 100644
index 0000000000..d707e57f4f
--- /dev/null
+++ b/support/lametex/src/Document.h
@@ -0,0 +1,44 @@
+/* Document.h
+ *
+ * Of all the parameters, those in the derived class Document are probably
+ * the most basic. Calls to class Document routines can usually be resolved
+ * directly into some simple PostScript output involving no nesting.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+class Document : public Param {
+ public:
+ enum DocumentType {
+ Begin, // The command last executed by \begin, or null
+ CloseBrace, // If the token is a closebrace (not \end)
+ Comment, // If the token is part of a comment
+ DocumentStart, // Whether we're inside a \document{ } command
+ End, // \end flushes the last command executed by \begin
+ Ignore, // Entering an "ignore mode" for pure LaTeX stuff
+ JustDidSection, // Don't indent the first paragraph in a section
+ NewLine, // The newline was found in the document
+ PostScript, // Whether we're inside a \postscript environment
+ ShutDown, // We're shutting down the main stack
+ StartPage, // Has this page been started with "StartPage"?
+ Stealth, // If the token is part of a stealth environment
+ LastType
+ };
+
+ Document();
+ Document(Document *);
+ Param *copy();
+ int set(int, float, char *);
+ float get(int, char *);
+ void postscript_set(int);
+ void revert(Param *);
+ static void begin(int, int, float, char *);
+ static void end(int, int, float, char *);
+ static void documentstyle(int, int, float, char *);
+ private:
+ float values[LastType];
+ char begin_command[MAXSTRING];
+ static float start_page;
+};
diff --git a/support/lametex/src/Environment.C b/support/lametex/src/Environment.C
new file mode 100644
index 0000000000..011dd86316
--- /dev/null
+++ b/support/lametex/src/Environment.C
@@ -0,0 +1,59 @@
+/* Environment.C
+ *
+ * The environment is the current set up of the page in terms of font type,
+ * page number, and many other general numbers to keep track of.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+#include "Environment.h"
+#include "Counter.h"
+#include "Document.h"
+#include "Font.h"
+#include "Justify.h"
+#include "Length.h"
+
+Environment::Environment()
+{
+ // Same order as enumerator ParamTypes
+ params[PCounter] = new Counter();
+ params[PDocument] = new Document();
+ params[PFont] = new Font();
+ params[PJustify] = new Justify();
+ params[PLength] = new Length();
+}
+
+Environment::~Environment()
+{
+ for(int x=0; x < LastType; x++)
+ delete params[x];
+}
+
+Environment::Environment(Environment *e)
+{
+ for(int paramtype=0; paramtype < LastType; paramtype++)
+ params[paramtype] = e->get_param(paramtype)->copy();
+}
+
+void Environment::revert(Environment *from)
+{
+ for(int paramtype=0; paramtype < LastType; paramtype++)
+ params[paramtype]->revert(from->get_param(paramtype));
+}
+
+void Environment::set(int paramtype, int subtype, float value, char *replacestr)
+{
+ params[paramtype]->set(subtype, value, replacestr);
+}
+
+float Environment::get(int paramtype, int subtype, char *comparestr)
+{
+ return params[paramtype]->get(subtype, comparestr);
+}
+
+Param* Environment::get_param(int paramtype)
+{
+ return params[paramtype];
+}
diff --git a/support/lametex/src/Environment.h b/support/lametex/src/Environment.h
new file mode 100644
index 0000000000..f9c913ac4b
--- /dev/null
+++ b/support/lametex/src/Environment.h
@@ -0,0 +1,32 @@
+/* Environment.h
+ *
+ * The environment is the current set up of the page in terms of font type,
+ * page number, and many other general numbers to keep track of.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+#include "Parameter.h"
+
+class Environment {
+ public:
+ // MAKE SURE TO UPDATE THE parms[] array initialization
+ // in Environment::Environment
+ enum ParamTypes { // "Counter" must be first so it "reverts" first.
+ PCounter, PDocument, PFont, PJustify, PLength, LastType
+ };
+
+ Environment();
+ Environment(Environment *);
+ ~Environment();
+ void set(int, int, float, char *);
+ void revert(Environment *);
+ Param* get_param(int);
+
+ float get(int, int, char *);
+ private:
+ // Same order as enumerator ParamTypes
+ Param *params[LastType];
+};
diff --git a/support/lametex/src/FileInput.C b/support/lametex/src/FileInput.C
new file mode 100644
index 0000000000..1c56c517b7
--- /dev/null
+++ b/support/lametex/src/FileInput.C
@@ -0,0 +1,705 @@
+/* FileInput.C
+ *
+ * FileInput holds a series of routines to fetch tokens or free text from
+ * the user LaTeX input.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+#include <ctype.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include "Global.h"
+#include "Document.h"
+#include "Font.h"
+
+static int comma_delimiter_valid = 0;
+static int parsing_length = FALSE;
+static int parsing_command = FALSE;
+
+static void usage()
+{
+ cout << "Usage: lametex [-p psfile] [-d psdir] [ -t ] texfile" << endl;
+ cout
+ << "Use -p psfile to specify the name of the default LameTeX page to use."
+ << endl;
+ cout << "Use -d psdir to specify an additional directory in which" << endl;
+ cout << " to search for LameTeX page definitions." << endl;
+ cout << "Use -t to specify that LameTeX should produce a plain text output"
+ << endl;
+}
+
+FileInput::FileInput(int argc, char *argv[])
+{
+ filename[0] = '\0';
+ pspage[0] = '\0';
+ current_pspage[0] = '\0';
+ blankline_area = 1; // Suppress any new paragraphs
+ newline_in_this_blankline_area = 0;
+ vspace_in_this_blankline_area = 0.0;
+ readjust_vspace = 0.0;
+ plain_text_output = 0;
+
+ // Make an array of directories to look in for LameTeX page descriptions
+ num_pagedirs = 0;
+ add_pagedir("./"); // current directory
+ add_pagedir(PAGEDIR); // compiled-in directory from Makefile
+
+ char pagedir_names[MAXSTRING]; // Read in environment variable.
+ char *environment_variable;
+ if((environment_variable = getenv("LAMETEX_PS_PATH")) != NULL)
+ strcpy(pagedir_names, environment_variable);
+
+ // Get all the pagedir paths from the environment variable.
+ char *start = pagedir_names;
+ char *p = strstr(start,":");
+ while(p) {
+ (*p) = '\0';
+ add_pagedir(start);
+ start = p+1;
+ p = strstr(start,":");
+ }
+ add_pagedir(start);
+
+ for(int arg=1; arg<argc; arg++) {
+ if(argv[arg][0] == '-') {
+ switch (argv[arg][1]) {
+ case 'd':
+ case 'D':
+ add_pagedir(argv[++arg]);
+ case 'p':
+ case 'P':
+ strcpy(pspage,argv[++arg]); // -p gives default pspage
+ break;
+ case 't':
+ case 'T':
+ plain_text_output = 1;
+ break;
+ default:
+ usage ();
+ }
+ }
+ else
+ strcpy(filename,argv[arg]);
+ }
+
+ if(!filename[0]) {
+ cerr << "No files given to process." << endl;
+ exit(0);
+ }
+
+ filenum = 0;
+
+ if(!pspage[0]) // The default page template
+ strcpy(pspage,"page_latex.ps");
+
+ /* Parse input file name to get output file name */
+ strcpy(outfileroot,filename);
+ p = strstr(outfileroot,".");
+ if(p)
+ (*p)='\0';
+ p = strrchr(outfileroot,'/');
+ if(p)
+ sprintf(outfilename,"%s.PS",p+1);
+ else
+ sprintf(outfilename,"%s.PS",outfileroot);
+
+ /* Open files for reading and writing */
+ file[0] = new TextFile(filename);
+ cerr << "Opening " << outfilename << " for temporary output..." << endl;
+ outfile.open(outfilename);
+}
+
+// Gets a new token from a list of files. If impossible, marks token invalid.
+void FileInput::get_token(Token &token)
+{
+ while(!token.isvalid()) {
+ if(!file[filenum]->isvalid()) {
+ delete file[filenum];
+ if(filenum == 0) /* Done processing the original file */
+ return;
+ filenum--; /* Pop up to parent file */
+ }
+ file[filenum]->get_token(token);
+ }
+}
+
+// Include a file at this point in the flow
+void FileInput::include_file(char *filename)
+{
+ /* Has this include file been opened before? */
+ for(int x=0; x <= filenum; x++)
+ if(file[filenum]->match(filename)) {
+ char message[MAXSTRING];
+ sprintf(message, "Circular include loop while including file %s",
+ filename);
+ fatal_error(message);
+ }
+
+ /* Are there too many files currently being processed? */
+ if(filenum >= MAXFILES-1) {
+ char message[MAXSTRING];
+ sprintf(message, "Too much include file nesting while including %s",
+ filename);
+ fatal_error(message);
+ }
+
+ file[++filenum] = new TextFile(filename);
+}
+
+// Prints an error message giving the current file and linenumber, and exits
+void FileInput::fatal_error(char *errormsg)
+{
+ file[filenum]->fatal_error(errormsg);
+}
+
+// Prints a warning message giving the current file and linenumber
+void FileInput::warning(char *errormsg)
+{
+ file[filenum]->warning(errormsg);
+}
+
+void FileInput::comma_delimiter(int value)
+{
+ comma_delimiter_valid = value;
+}
+
+void FileInput::set_parsing_length(int value)
+{
+ parsing_length = value;
+}
+
+void FileInput::add_pagedir(char *dirname)
+{
+ pagedir[num_pagedirs] = new char [ strlen(dirname) + 1 ];
+ strcpy(pagedir[num_pagedirs], dirname);
+
+ // Take off a trailing '/' if needed
+ int length = strlen(pagedir[num_pagedirs]) -1;
+ if(pagedir[num_pagedirs][length] == '/')
+ pagedir[num_pagedirs][length] = '\0';
+
+ num_pagedirs++;
+}
+
+void FileInput::use_pspage(char *psname)
+{
+ strcpy(pspage, psname);
+}
+
+// Force any pending vertical space or newlines to be printed
+void FileInput::force_space()
+{
+ float parindent;
+ if(Global::files->newline_in_this_blankline_area > 0) {
+ // If this is a new section, don't indent the first line
+ if(Global::stack->get(Environment::PDocument,
+ Document::JustDidSection,"")) {
+ parindent = Global::stack->get(Environment::PLength,
+ Length::Parameter, "\\parindent");
+ Global::stack->set(Environment::PLength, Length::Parameter, 0.0,
+ "\\parindent");
+ }
+
+ if(Global::files->vspace_in_this_blankline_area > 0.0)
+ Global::files->outfile << endl << "/vspace "
+ << Global::files->vspace_in_this_blankline_area
+ << " def NEWPARA" << endl;
+ else
+ Global::files->outfile << endl << "NEWPARA" << endl;
+
+
+ if(Global::stack->get(Environment::PDocument,
+ Document::JustDidSection,""))
+ Global::stack->set(Environment::PLength, Length::Parameter,
+ parindent, "\\parindent");
+
+ Global::files->readjust_vspace = 0.0;
+ }
+ Global::files->blankline_area = 0;
+ Global::files->newline_in_this_blankline_area = 0;
+ Global::files->vspace_in_this_blankline_area = 0.0;
+}
+
+// Check to see if a page has been started, and if not, start one.
+void FileInput::force_start_page()
+{
+ // Load new page description (if one has been defined)
+ include_file_ps(pspage, TRUE);
+
+ // Start new page?
+ if(!Stack::get(Environment::PDocument, Document::StartPage, "")) {
+ outfile << endl;
+ outfile << "STARTPAGE" << endl;
+ Stack::set(Environment::PDocument, Document::StartPage, 1.0, "");
+ blankline_area = 1; // Suppress any new paragraphs
+ newline_in_this_blankline_area = 0;
+ vspace_in_this_blankline_area = 0.0;
+ Global::files->readjust_vspace = 0.0;
+ } else
+ force_space();
+
+ // Force a pending Font command to be executed, if there is one.
+ Stack::set(Environment::PFont, Font::Pending, 0.0, "");
+}
+
+/* Includes a postscript file in the current output stream. Handles
+ * page definitions properly if it is being asked to load a postscript
+ * file that is a page definition.
+ */
+void FileInput::include_file_ps(char *filename, int page_definition)
+{
+ if(!filename[0] || plain_text_output)
+ return;
+
+ if(page_definition)
+ if(strcmp(filename, Global::files->current_pspage)==0) {
+ pspage[0] = '\0';
+ return;
+ }
+ else
+ strcpy(current_pspage, pspage);
+
+ // First, end the current "formatdict" dictionary on top of the stack
+ outfile << endl << "end" << endl;
+
+
+ // Convert the given filename into a full path filename
+ char full_filename[MAXSTRING]; // Get the full pagename path.
+ class stat fileinfo;
+ int x;
+
+ if(strstr(filename,"/")) { // Does this have any directories specified?
+ if(full_filename[0]=='/')
+ strcpy(full_filename, filename);
+ else
+ sprintf(full_filename, "./%s", filename);
+ } else { // Look for the file in the all given PostScript directories
+ for(x=0; x < num_pagedirs; x++) {
+ sprintf(full_filename, "%s/%s", pagedir[x], filename);
+ if(stat(full_filename,&fileinfo)==0) // Does this file exist?
+ break;
+ }
+
+ if(x >= num_pagedirs) { // Did not find postscript file
+ char message[MAXSTRING];
+ sprintf(message, "Cannot find PostScript file %s using path",
+ filename);
+ fatal_error(message);
+ }
+ }
+
+ // Open the file for reading
+ cerr << "Including PostScript file " << full_filename << endl;
+ ifstream psfile(full_filename);
+ if(!psfile) { // Open file failed?
+ cerr << "Unable to open postscript file " << full_filename << endl;
+ exit (-1);
+ }
+
+ // Include the PostScript file in the current output
+ char psline[MAXSTRING];
+
+ psfile.getline(psline, MAXSTRING, '\n');
+ while(!psfile.eof() && !psfile.fail()) {
+ outfile << psline << endl;
+ psfile.getline(psline, MAXSTRING, '\n');
+ }
+
+ if(page_definition)
+ pspage[0] = '\0';
+
+ // Now, start the current "formatdict" dictionary again
+ outfile << "formatdict begin" << endl;
+}
+
+void FileInput::got_whitespace()
+{
+ file[filenum]->got_whitespace();
+}
+
+int FileInput::whitespace_next()
+{
+ return file[filenum]->whitespace_next();
+}
+
+int FileInput::whitespace_prev()
+{
+ return file[filenum]->whitespace_prev();
+}
+
+TextFile::TextFile(char *name)
+{
+ if(!name) {
+ valid = FALSE;
+ return;
+ }
+
+ char *p = strstr(name,".");
+ if(!p)
+ sprintf(filename,"%s.tex",name);
+ else
+ strcpy(filename,name);
+ current_file.open(filename);
+ if(!current_file) { // Open file failed?
+ cerr << "Unable to open LaTeX file " << filename << endl;
+ exit (-1);
+ }
+
+ cerr << "Processing " << filename << "..." << endl;
+
+ linenum=1;
+ token_on_this_line = FALSE;
+ just_got_a_newline = FALSE;
+ just_got_whitespace = TRUE;
+ previous_got_whitespace = TRUE;
+ parsing_command = FALSE;
+ valid = TRUE;
+}
+
+TextFile::~TextFile()
+{
+ current_file.close();
+}
+
+/* Gets a new token from a file.
+ * If impossible, leaves token marked "invalid".
+ */
+void TextFile::get_token(Token& token)
+{
+ char ch;
+
+ // We want to set these two flags for every newline, but only
+ // after the token flagged by the newline has been processed!
+
+ if(just_got_a_newline) {
+ Stack::set(Environment::PDocument, Document::Comment, 0.0, "");
+ linenum++;
+ just_got_a_newline = FALSE;
+ }
+
+ if(!isvalid())
+ return;
+
+ /* If we're in a postscript environment, dump postscript 'til it closes */
+ if(Global::stack->get(Environment::PDocument, Document::PostScript, "")) {
+ Global::files->force_start_page(); // Start a new page if not started.
+ char commentline[MAXSTRING];
+ char *end;
+ int x, stop, comments;
+ comments=0;
+ do {
+ for(x=0, stop=FALSE; x < MAXSTRING && !stop; x++) {
+ current_file.get(ch);
+ switch(ch) {
+ case '\n':
+ comments=0;
+ just_got_a_newline = TRUE;
+ linenum++;
+ commentline[x] = '\0';
+ stop = TRUE;
+ break;
+ case ' ':
+ just_got_a_newline = FALSE;
+ commentline[x] = '\0';
+ stop = TRUE;
+ break;
+ default:
+ just_got_a_newline = FALSE;
+ commentline[x] = ch;
+ break;
+ }
+ }
+
+ end = strstr(commentline,"\\end{postscript}");
+ if(end) {
+ (*end) = '\0';
+ }
+ if(commentline[0] == '%' && !comments) {
+ Global::files->outfile << &commentline[1]; // Skip initial '%'
+ comments++;
+ }
+ else
+ Global::files->outfile << commentline;
+ Global::files->outfile << (char) ch;
+ }
+ while(!end && !current_file.eof() && !current_file.fail());
+ Stack::pop(0, Document::End, 0.0, "\\postscript");
+ }
+
+ /* If we're in an ignore environment, do nothing 'til it closes */
+ if(Global::stack->get(Environment::PDocument, Document::Ignore, "")) {
+ char commentline[MAXSTRING];
+ char *end;
+ int x, stop, comments;
+ comments=0;
+ do {
+ for(x=0, stop=FALSE; x < MAXSTRING && !stop; x++) {
+ current_file.get(ch);
+ switch(ch) {
+ case '\n':
+ comments=0;
+ just_got_a_newline = TRUE;
+ linenum++;
+ commentline[x] = '\0';
+ stop = TRUE;
+ break;
+ case ' ':
+ just_got_a_newline = FALSE;
+ commentline[x] = '\0';
+ stop = TRUE;
+ break;
+ default:
+ just_got_a_newline = FALSE;
+ commentline[x] = ch;
+ break;
+ }
+ }
+
+ end = strstr(commentline,"\\end{ignore}");
+ }
+ while(!end && !current_file.eof() && !current_file.fail());
+ Stack::pop(0, Document::End, 0.0, "\\ignore");
+ }
+
+ int pos = 0;
+ int token_started = FALSE;
+ int in_a_number = FALSE;
+ previous_got_whitespace = just_got_whitespace;
+
+ // Loop through characters in the file unless some file error occurs.
+ for(current_file.get(ch); ch && !current_file.eof() && !current_file.fail();
+ current_file.get(ch)){
+ if(just_got_a_newline) {
+ Stack::set(Environment::PDocument, Document::Comment, 0.0, "");
+ linenum++;
+ just_got_a_newline = FALSE;
+ }
+
+ switch(ch) {
+ case '\\':
+ case '{':
+ case '}':
+ case '[':
+ case ']':
+ break;
+ default:
+ if(!parsing_command && ch != '\\')
+ just_got_whitespace = isspace(ch);
+ break;
+ }
+ switch(ch) { // What is the character?
+ case '%': // The special comment character
+ if(token_started) { // If currently inside a token, it's
+ current_file.putback(ch);
+ token_text[pos++] = '\0'; // interpreted as an end-token
+ token.make_text(token_text); // Successfully got a token.
+ return;
+ } else
+ Stack::set(Environment::PDocument, Document::Comment, 1.0, "");
+ break;
+ case '\n':
+ just_got_a_newline = TRUE;
+ // End a \STEALTH with a newline
+ if(Stack::get(Environment::PDocument, Document::Stealth, "")==2.0)
+ Stack::set(Environment::PDocument, Document::Stealth, 0.0, "");
+
+ if(!token_on_this_line) { // Is this text line entirely whitespace
+ token_text[0] = '\0'; // If so, return the blank line token "".
+ token.make_text(token_text);
+ return;
+ }
+ token_on_this_line = FALSE;
+ case ' ':
+ case '\t':
+ if(token_started) { // Marks back or front of token?
+ token_text[pos++] = '\0';
+ token.make_text(token_text); // Successfully got a token.
+ return;
+ }
+ parsing_command = FALSE;
+ break;
+ case '{':
+ case '[':
+ case '}':
+ case ']':
+ token_on_this_line = TRUE;
+ if(token_started) // Marks back or front of token?
+ if(pos==1 && token_text[0] == '\\') // Is the token "\{" or "\{" ?
+ token_text[pos++] = ch;
+ else { // We must do look-ahead to set just_got_whitespace.
+ // What is the first character after the '}' character(s)?
+ current_file.putback(ch);
+ }
+ else {
+ token_text[pos++] = ch;
+ if(ch == '}' && !parsing_command) {
+ for(int x=0; ch == '}'; x++)
+ current_file.get(ch);
+ just_got_whitespace = isspace(ch);
+ current_file.putback(ch);
+
+ for(int y=0; y < x-1; y++)
+ current_file.putback('}');
+ }
+ }
+ parsing_command = FALSE;
+ token_text[pos++] = '\0';
+ token.make_text(token_text); // Successfully got a token.
+ return;
+ case '\\':
+ parsing_command = TRUE;
+ if(token_started) {
+ current_file.putback(ch);
+ token_text[pos++] = '\0';
+ token.make_text(token_text); // Successfully got a token.
+ return;
+ }
+ token_started = TRUE;
+ token_text[pos++] = ch;
+ current_file.get(ch); // Look for special 2 character commands.
+ switch(ch) {
+ case '\\':
+ case '&':
+ case '%':
+ case '#':
+ case '{':
+ case '}':
+ case '_':
+ token_text[pos++] = ch;
+ token_text[pos++] = '\0';
+ token.make_text(token_text); // Successfully got a token.
+ current_file.get(ch);
+ just_got_whitespace = isspace(ch);
+ current_file.putback(ch);
+ return;
+ default:
+ current_file.putback(ch);
+ break;
+ }
+ break;
+ case ',':
+ if(comma_delimiter_valid && token_started) {
+ token_text[pos++] = '\0';
+ token.make_text(token_text); // Successfully got a token.
+ return;
+ }
+ case '0': case '1': case '2': case '3': case '4': case '5': case '6':
+ case '7': case '8': case '9': case '.': case '-':
+ if(parsing_length && token_started && !in_a_number) {
+ token_text[pos++] = '\0';
+ token.make_text(token_text); // Successfully got a token.
+ current_file.putback(ch);
+ return;
+ }
+ in_a_number = TRUE;
+ token_on_this_line = TRUE;
+ if(!token_started)
+ token_started = TRUE;
+ if(pos < MAXSTRING - 1)
+ token_text[pos++] = ch;
+ else {
+ cerr << "File contains words that are longer than "
+ << MAXSTRING << " characters!" << endl;
+ exit(-1);
+ }
+ break;
+ // These are characters we want to skip, but they can define
+ // the ends of tokens.
+ case '$': case '#': case '~': case '&': case '^':
+
+ if(token_started) {
+ token_text[pos++] = '\0';
+ token.make_text(token_text); // Successfully got a token.
+ parsing_command = FALSE;
+ return;
+ }
+ break;
+ case ':': case ';': case '?': case '!': case '`': case '_':
+ case '\'': case '(': case ')': case '/': case '*': case '@':
+ case '+': case '=': case '|': case '<': case '>': case '"':
+ parsing_command = FALSE;
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G':
+ case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N':
+ case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U':
+ case 'V': case 'W': case 'X': case 'Y': case 'Z':
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g':
+ case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n':
+ case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u':
+ case 'v': case 'w': case 'x': case 'y': case 'z':
+ if(parsing_length && token_started && in_a_number) {
+ token_text[pos++] = '\0';
+ token.make_text(token_text); // Successfully got a token.
+ current_file.putback(ch);
+ return;
+ }
+ token_on_this_line = TRUE;
+ if(!token_started)
+ token_started = TRUE;
+ if(pos < MAXSTRING - 1)
+ token_text[pos++] = ch;
+ else {
+ cerr << "File contains words that are longer than "
+ << MAXSTRING << " characters!" << endl;
+ exit(-1);
+ }
+ break;
+ default:
+ cerr << "File contains illegal character " << (int) ch << endl;
+ exit(-1);
+ break;
+ }
+ }
+ valid = FALSE; // Reached END OF FILE
+ if(token_started) {
+ token_text[pos++] = '\0';
+ token.make_text(token_text); // Successfully got a token.
+ }
+}
+
+int TextFile::isvalid()
+{
+ return(valid);
+}
+
+int TextFile::match(char *name)
+{
+ return(!strcmp(name, filename));
+}
+
+void TextFile::fatal_error(char *errormsg)
+{
+ cerr << "\"" << filename
+ << "\", line " << linenum
+ << ": error at \"" << token_text
+ << "\": " << errormsg << endl;
+ exit(-1);
+}
+
+void TextFile::warning(char *errormsg)
+{
+ cerr << "\"" << filename
+ << "\", line " << linenum
+ << ": warning at \"" << token_text
+ << "\": " << errormsg << endl;
+}
+
+void TextFile::got_whitespace()
+{
+ just_got_whitespace = 1;
+}
+
+int TextFile::whitespace_next()
+{
+ return just_got_whitespace;
+}
+
+int TextFile::whitespace_prev()
+{
+ return previous_got_whitespace;
+}
diff --git a/support/lametex/src/FileInput.h b/support/lametex/src/FileInput.h
new file mode 100644
index 0000000000..73e042576e
--- /dev/null
+++ b/support/lametex/src/FileInput.h
@@ -0,0 +1,75 @@
+/* FileInput.h
+ *
+ * The text to be parsed is broken into fundamental units called tokens.
+ * This file defines the Token class.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+#include <fstream.h>
+#include "Token.h"
+const MAXFILES = 10;
+const MAXPAGES = 100;
+
+class TextFile {
+ int valid; // Is file ready & open for reading, not at EOF?
+ int token_on_this_line;
+ int linenum;
+ char filename[MAXSTRING];
+ char token_text[MAXSTRING];
+ ifstream current_file; // The stream pointer from the input file
+ int just_got_a_newline;
+ int just_got_whitespace;
+ int previous_got_whitespace;
+
+ void handle_comment();
+ public:
+ TextFile(char *);
+ ~TextFile();
+ void get_token(Token& token);
+ int isvalid();
+ int match(char *);
+ void fatal_error(char *);
+ void warning(char *);
+ void got_whitespace();
+ int whitespace_next();
+ int whitespace_prev();
+};
+
+class FileInput {
+ char filename[MAXSTRING]; // Main LaTeX file to read input from.
+ int filenum;
+ TextFile *file[MAXFILES];
+ void add_pagedir(char *);
+ char pspage[MAXSTRING]; // Next pspage to use
+ char current_pspage[MAXSTRING]; // Current pspage being used.
+ char *pagedir[MAXPAGES];
+ int num_pagedirs;
+
+public:
+ ofstream outfile;
+ char outfileroot[MAXSTRING];
+ int blankline_area;
+ int newline_in_this_blankline_area;
+ float vspace_in_this_blankline_area;
+ float readjust_vspace;
+ char outfilename[MAXSTRING];
+ int plain_text_output;
+
+ FileInput(int argc, char *argv[]);
+ void get_token(Token &token); // Prepare to parse tokens.
+ void include_file(char *);
+ void fatal_error(char *);
+ void warning(char *);
+ void comma_delimiter(int);
+ void set_parsing_length(int);
+ void use_pspage(char *);
+ void force_space();
+ void force_start_page();
+ void include_file_ps(char *, int);
+ void got_whitespace();
+ int whitespace_next();
+ int whitespace_prev();
+};
diff --git a/support/lametex/src/Font.C b/support/lametex/src/Font.C
new file mode 100644
index 0000000000..c7e6a8570a
--- /dev/null
+++ b/support/lametex/src/Font.C
@@ -0,0 +1,490 @@
+/* Font.C
+ *
+ * Anything having to do with changing the style, family, or size of the
+ * fonts is handled through this Font class.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+#include "Global.h"
+#include "Font.h"
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+FontUsed *Font::_fonts_used[MAXFONTS];
+int Font::_num_fonts_used;
+
+// Build a list of fonts actually used, along with the characters
+// used for each font.
+FontUsed::FontUsed(char *style, char *petname, int font)
+{
+ strcpy(_style, style);
+ strcpy(_petname, petname);
+ _font = font;
+ for(int x=0; x<256; x++)
+ _charused[x] = (x >= '0' && x <= '9') ? 1 : 0;
+}
+
+void FontUsed::used(char *textstr)
+{
+ for(int x=0; textstr[x]; x++)
+ _charused[textstr[x]] = 1;
+}
+
+int FontUsed::font()
+{
+ return _font;
+}
+
+void FontUsed::dump(ofstream &outfile)
+{
+ outfile << "{" << _style << endl;
+
+ int num=0;
+ for(int x=0; x < 256; x++)
+ if(_charused[x]) {
+ if(num++ > 25) {
+ outfile << endl << endl;
+ num=0;
+ }
+ switch(x) {
+ case '&':
+ case '#':
+ case '{':
+ case '}':
+ case '_':
+ case '%':
+ case '$':
+ outfile << '\\';
+ default:
+ outfile << (char) x << " ";
+ break;
+ }
+ }
+
+ outfile << "`` '' ." << endl;
+ outfile << "}" << endl;
+}
+
+int FontUsed::match(char *textstr)
+{
+ return !strcmp(textstr,_petname);
+}
+
+char *FontUsed::petname()
+{
+ return _petname;
+}
+
+Font::Font()
+{
+ _basesize = 10;
+ _fontsize = 10;
+ strcpy(_fontstyle,"rm");
+ strcpy(_fontsizecmd,"\\normalsize");
+ _fonts_used[0] = new FontUsed("\\normalsize\\rm", "/cm10rm", 1);
+ _num_fonts_used = 1;
+ Global::files->outfile << endl;
+ _currentused = 0;
+ _pending = 1;
+ _pending_whitespace = 1;
+}
+
+Font::Font(Font *base)
+{
+ _basesize = base->_basesize;
+ _fontsize = base->_fontsize;
+ strcpy(_fontstyle, base->_fontstyle);
+ strcpy(_fontsizecmd, base->_fontsizecmd);
+ _currentused = base->_currentused;
+ _pending = base->_pending;
+ _pending_whitespace = base->_pending_whitespace;
+}
+
+Font::~Font()
+{
+ for(int x=0; x < _num_fonts_used; x++)
+ delete _fonts_used[x];
+}
+
+Param *Font::copy()
+{
+ return new Font(this);
+}
+
+
+void Font::newsize(float val)
+{
+ if(_fontsize != val) {
+ _fontsize = (int) val;
+
+ /* We are updating the size of the font, so we had better update
+ * also the amount of space to skip between lines. This is done
+ * by doing a set statement on \baselinestretch.
+ */
+ if(!Global::files->plain_text_output) {
+ Stack::set(Environment::PLength, 0,
+ Stack::get(Environment::PLength, Length::Parameter,
+ "\\baselinestretch"), "\\baselinestretch");
+ }
+ _pending = 1; // Print the postscript command for this.
+ _pending_whitespace = Global::files->whitespace_next();
+ }
+}
+
+void Font::set_fontstyle(char *style)
+{
+ if(strcmp(_fontstyle,style)!=0) {
+ strcpy(_fontstyle,style);
+ _pending = 1; // Print the postscript command for this.
+ _pending_whitespace = Global::files->whitespace_next();
+ }
+}
+
+int Font::set(int subtype, float value, char *textstr)
+{
+ /* The Font Family is hard-coded to "cm" for Computer Modern */
+ switch(subtype) {
+ /* Base sizes */
+ case Base10pt: // Do nothing; this is the default.
+ break;
+ case Base11pt:
+ delete _fonts_used[0];
+ _fonts_used[0] = new FontUsed("\\normalsize\\rm", "/cm11rm", 1);
+ Global::files->outfile << endl;
+ Global::files->outfile << "/basefont /cm11rm def" << endl;
+ _basesize = 11;
+ _fontsize = 11;
+ _pending = 1;
+ _pending_whitespace = Global::files->whitespace_next();
+ break;
+ case Base12pt:
+ delete _fonts_used[0];
+ _fonts_used[0] = new FontUsed("\\normalsize\\rm", "/cm12rm", 1);
+ Global::files->outfile << endl;
+ Global::files->outfile << "/basefont /cm12rm def" << endl;
+ _basesize = 12;
+ _fontsize = 12;
+ _pending = 1;
+ _pending_whitespace = Global::files->whitespace_next();
+ break;
+
+ /* _Font styles */
+ case Italic:
+ if(strcmp(_fontstyle,"it")==0)
+ strcpy(_fontstyle,"rm"); // Double Italic is Roman!
+ else
+ strcpy(_fontstyle,"it");
+ _pending = 1; // Print the postscript command for this.
+ _pending_whitespace = Global::files->whitespace_next();
+ break;
+ case Bold:
+ set_fontstyle("bf");
+ break;
+ case Roman:
+ set_fontstyle("rm");
+ break;
+ case SansSerif:
+ set_fontstyle("sf");
+ break;
+ case Slant:
+ set_fontstyle("sl");
+ break;
+ case SmallCaps:
+ set_fontstyle("sc");
+ break;
+ case Typewriter:
+ set_fontstyle("tt");
+ break;
+
+ /* Sizes relative to the base size */
+ case Tiny:
+ strcpy(_fontsizecmd,"\\tiny");
+ switch(_basesize) {
+ case 10:
+ default:
+ newsize(4);
+ break;
+ case 11:
+ case 12:
+ newsize(6);
+ break;
+ }
+ break;
+ case Scriptsize:
+ strcpy(_fontsizecmd,"\\scriptsize");
+ switch(_basesize) {
+ case 10:
+ default:
+ newsize(6);
+ break;
+ case 11:
+ case 12:
+ newsize(7);
+ break;
+ }
+ break;
+ case Footnotesize:
+ strcpy(_fontsizecmd,"\\footnotesize");
+ switch(_basesize) {
+ case 10:
+ default:
+ newsize(7);
+ break;
+ case 11:
+ newsize(8);
+ break;
+ case 12:
+ newsize(10);
+ break;
+ }
+ break;
+ case Small:
+ strcpy(_fontsizecmd,"\\small");
+ switch(_basesize) {
+ case 10:
+ default:
+ newsize(8);
+ break;
+ case 11:
+ newsize(10);
+ break;
+ case 12:
+ newsize(11);
+ break;
+ }
+ break;
+ case Normalsize:
+ strcpy(_fontsizecmd,"\\normalsize");
+ newsize(_basesize);
+ break;
+ case large:
+ strcpy(_fontsizecmd,"\\large");
+ switch(_basesize) {
+ case 10:
+ default:
+ newsize(11);
+ break;
+ case 11:
+ newsize(12);
+ break;
+ case 12:
+ newsize(13);
+ break;
+ }
+ break;
+ case Large:
+ strcpy(_fontsizecmd,"\\Large");
+ switch(_basesize) {
+ case 10:
+ case 11:
+ default:
+ newsize(13);
+ break;
+ case 12:
+ newsize(15);
+ break;
+ }
+ break;
+ case LARGE:
+ strcpy(_fontsizecmd,"\\LARGE");
+ switch(_basesize) {
+ case 10:
+ case 11:
+ default:
+ newsize(15);
+ break;
+ case 12:
+ newsize(18);
+ break;
+ }
+ break;
+ case huge:
+ strcpy(_fontsizecmd,"\\huge");
+ switch(_basesize) {
+ case 10:
+ case 11:
+ default:
+ newsize(18);
+ break;
+ case 12:
+ newsize(22);
+ break;
+ }
+ break;
+ case Huge:
+ strcpy(_fontsizecmd,"\\Huge");
+ newsize(22);
+ break;
+ case Currentused:
+ _currentused = do_command(textstr, textstr,
+ Global::files->whitespace_next(), 0);
+ break;
+ case Pending:
+ if(_pending) {
+ postscript_set(0);
+ _pending = 0;
+ }
+ break;
+ case Size:
+ set_fontstyle("");
+ newsize(value);
+ break;
+ /* These font styles aren't handled right now */
+ case Used:
+ _fonts_used[_currentused]->used(textstr);
+ break;
+ case FunnyPrint:
+ Global::files->outfile << endl << "[ 0";
+ if(Global::files->whitespace_next())
+ Global::files->outfile << " false";
+ else
+ Global::files->outfile << " true";
+ Global::files->outfile << " ] NewFont " << textstr << " NW " << endl;
+ _pending = 1; // Print the postscript command for this.
+ _pending_whitespace = Global::files->whitespace_next();
+// postscript_set(0);
+ break;
+ default:
+ break;
+ }
+ return TRUE;
+}
+
+float Font::get(int subtype, char *comparestr)
+{
+ switch(subtype) {
+ case Base:
+ return(_basesize);
+ case Currentused:
+ return(_currentused);
+ case Pending:
+ return(_pending);
+ case Style:
+ return(!strcmp(comparestr,_fontstyle));
+ case ShutDown:
+ if(!Global::files->plain_text_output)
+ shutdown();
+ break;
+ case Size:
+ default:
+ break;
+ }
+ return(_fontsize);
+}
+
+void Font::revert(Param *from)
+{
+ int size = (int)from->get(Size,"");
+
+ if(size != _fontsize || !from->get(Style,_fontstyle)
+ || from->get(Pending,"") || _currentused != from->get(Currentused,""))
+ _pending = 1; // Print the postscript command for this.
+ _pending_whitespace = Global::files->whitespace_next();
+}
+
+void Font::use_command(char *style, char *petname, int font)
+{
+ _fonts_used[_num_fonts_used++] = new FontUsed(style,petname, font);
+}
+
+int Font::do_command(char *style, char *petname, int whitespace, int font)
+{
+ for(int used=0; used < _num_fonts_used; used++)
+ if(_fonts_used[used]->match(petname))
+ break;
+ if(_num_fonts_used >= MAXFONTS)
+ Global::files->fatal_error("Too many fonts");
+ if(used >= _num_fonts_used)
+ use_command(style, petname, font);
+
+ Global::files->outfile << endl << "[ " << used+1;
+
+ if(whitespace)
+ Global::files->outfile << " false";
+ else
+ Global::files->outfile << " true";
+
+ Global::files->outfile << " ] NewFont % " << petname << endl;
+ return(used);
+}
+
+void Font::postscript_set(int)
+{
+ /* The Font Family is hard-coded to "cm" for Computer Modern */
+ char petname[MAXSTRING];
+
+ sprintf(petname,"/cm%d%s",_fontsize,_fontstyle);
+ char style[MAXSTRING];
+ sprintf(style,"%s\\%s",_fontsizecmd,_fontstyle);
+ _currentused = do_command(style, petname, _pending_whitespace, 1);
+}
+
+// This is an important routine which builds a dummy latex files
+// Just to trick LaTeX into giving us the proper fonts.
+void Font::shutdown()
+{
+ cerr << "Making dummy file for snarfing LaTeX fonts..." << endl;
+ ofstream dummy("lametex.tex");
+ dummy << "\\documentstyle[" << _basesize << "pt]{report}" << endl;
+ dummy << "\\pagestyle{empty}" << endl;
+ dummy << "\\begin{document}" << endl;
+ for(int x=0; x < _num_fonts_used; x++)
+ _fonts_used[x]->dump(dummy);
+ dummy << "\\end{document}" << endl;
+ dummy.close();
+ cerr << "Snarfing LaTeX fonts..." << endl;
+ system( LATEX );
+ system( DVIPS );
+
+ ifstream latex_postscript("lametex.ps");
+ if(!latex_postscript) { // Open file failed?
+ cerr << "Unable to open postscript temp file lametex.ps for reading"
+ << endl;
+ exit (-1);
+ }
+
+ ofstream lametex_postscript("lametex.PS");
+ if(!lametex_postscript) { // Open file failed?
+ cerr << "Unable to open postscript temp file lametex.PS for writing"
+ << endl;
+ exit (-1);
+ }
+
+ char line[MAXSTRING];
+ while(!latex_postscript.eof()) {
+ latex_postscript.getline(line, MAXSTRING, '\n');
+ if(strstr(line,"TeXDict begin")==line)
+ break;
+ }
+
+ lametex_postscript << line << endl;
+ while(!latex_postscript.eof()) {
+ latex_postscript.getline(line, MAXSTRING, '\n');
+ lametex_postscript << line << endl;
+ if(strstr(line,"%%EndSetup"))
+ break;
+ }
+
+ int y;
+ for(x=_num_fonts_used-1, y=0; x >= 0 ; x--)
+ if(_fonts_used[x]->font())
+ lametex_postscript << _fonts_used[x]->petname()
+ << "{ pop F" << (char) ('a' + y++)
+ << " } bind def" << endl;
+
+ lametex_postscript << "/fontnames [" << endl;
+ lametex_postscript << "/TIMESROMAN" << endl;
+
+ for(x=0; x < _num_fonts_used; x++)
+ lametex_postscript << _fonts_used[x]->petname() << endl;
+ lametex_postscript << "] def" << endl;
+
+ latex_postscript.close();
+ lametex_postscript.close();
+ system("rm lametex.tex lametex.dvi lametex.ps");
+ cerr << " ** SNARF! **" << endl;
+}
diff --git a/support/lametex/src/Font.h b/support/lametex/src/Font.h
new file mode 100644
index 0000000000..7f691d3f24
--- /dev/null
+++ b/support/lametex/src/Font.h
@@ -0,0 +1,97 @@
+/* Font.h
+ *
+ * Anything having to do with changing the style, family, or size of the
+ * fonts is handled through this Font class.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+#include <fstream.h>
+
+const MAXFONTS = 100;
+/* The list of what fonts are used, and in what order and with what
+ * characters
+ */
+class FontUsed {
+ char _style[MAXSTRING]; // combines font style and font size
+ char _petname[MAXSTRING]; // The name we use for this font
+ int _charused[256];
+ int _font;
+
+ public:
+ FontUsed(char *, char *, int);
+ void used(char *);
+ int font();
+ int match(char *);
+ char *petname();
+ void dump(ofstream &);
+};
+
+
+/* Any change to the font type, size, or style */
+class Font : public Param {
+ public:
+ enum FontTypes {
+ // Base Sizes
+ Base10pt,
+ Base11pt,
+ Base12pt,
+
+ // Font Styles
+ Bold,
+ Italic,
+ Roman,
+ SansSerif,
+ Slant,
+ SmallCaps,
+ Typewriter,
+
+ // Font Sizes
+ Tiny,
+ Scriptsize,
+ Footnotesize,
+ Small,
+ Normalsize,
+ large,
+ Large,
+ LARGE,
+ huge,
+ Huge,
+
+ // Font Commands
+ Base,
+ Currentused,
+ FunnyPrint,
+ Pending,
+ Size,
+ Style,
+ ShutDown,
+ Used
+ };
+
+ Font();
+ Font(Font *);
+ ~Font();
+ Param *copy();
+ int set(int, float, char*);
+ float get(int, char*);
+ static FontUsed *_fonts_used[MAXFONTS];
+ static int _num_fonts_used;
+ int do_command(char *, char *, int, int);
+ void postscript_set(int);
+ void revert(Param *);
+ void shutdown();
+ void use_command(char *, char *, int);
+ private:
+ int _basesize;
+ int _fontsize;
+ char _fontstyle[3];
+ char _fontsizecmd[15];
+ int _currentused;
+ int _pending;
+ int _pending_whitespace;
+ void newsize(float);
+ void set_fontstyle(char *);
+};
diff --git a/support/lametex/src/Global.h b/support/lametex/src/Global.h
new file mode 100644
index 0000000000..a44c3c0a4c
--- /dev/null
+++ b/support/lametex/src/Global.h
@@ -0,0 +1,9 @@
+#include "FileInput.h"
+#include "Stack.h"
+#include "Label.h"
+
+struct Global {
+ static FileInput *files;
+ static Stack *stack;
+ static Labels *labels;
+};
diff --git a/support/lametex/src/Justify.C b/support/lametex/src/Justify.C
new file mode 100644
index 0000000000..7f71ff15de
--- /dev/null
+++ b/support/lametex/src/Justify.C
@@ -0,0 +1,78 @@
+/* Justify.C
+ *
+ * When the user wants flushright, flushleft, centered, or the normal
+ * full justification, this class is used.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+#include "Global.h"
+#include "Justify.h"
+#include "Document.h"
+#include <fstream.h>
+
+Justify::Justify()
+{
+ justifytype = Normal;
+ postscript_set(-justifytype);
+}
+
+Justify::Justify(Justify *base)
+{
+ justifytype = base->justifytype;
+}
+
+Param *Justify::copy()
+{
+ return new Justify(this);
+}
+
+/* What kind of justification will the following text in this environment
+ * have? Set the justifytype variable as appropriate.
+ */
+int Justify::set(int subtype, float, char *)
+{
+ if(justifytype != subtype) {
+ justifytype = subtype; // Set the internal placeholder for reference
+ // Print the postscript command for this.
+ postscript_set(subtype);
+ }
+ return TRUE;
+}
+
+float Justify::get(int, char *)
+{
+ return (float)justifytype;
+}
+
+void Justify::postscript_set(int subtype)
+{
+ if(subtype>0 && Stack::get(Environment::PDocument,Document::StartPage, ""))
+ Global::files->outfile << endl << "NEWPARA ";
+ else
+ subtype = -subtype;
+ switch(subtype) {
+ case Center:
+ Global::files->outfile << "/justify " << (int)'c' << " def";
+ break;
+ case FlushLeft:
+ Global::files->outfile << "/justify " << (int)'l' << " def";
+ break;
+ case FlushRight:
+ Global::files->outfile << "/justify " << (int)'r' << " def";
+ break;
+ case Normal:
+ Global::files->outfile << "/justify " << (int)'f' << " def";
+ break;
+ }
+ Global::files->outfile << endl;
+}
+
+void Justify::revert(Param *from)
+{
+ int subtype = (int)from->get(0,"");
+ if(subtype != justifytype)
+ postscript_set(justifytype);
+}
diff --git a/support/lametex/src/Justify.h b/support/lametex/src/Justify.h
new file mode 100644
index 0000000000..d0d2a4f573
--- /dev/null
+++ b/support/lametex/src/Justify.h
@@ -0,0 +1,29 @@
+/* Justify.h
+ *
+ * When the user wants flushright, flushleft, centered, or the normal
+ * full justification, this class is used.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+class Justify : public Param {
+ public:
+ enum JustifyType {
+ Center,
+ FlushLeft,
+ FlushRight,
+ Normal
+ };
+
+ Justify();
+ Justify(Justify *);
+ Param *copy();
+ int set(int, float, char*);
+ float get(int, char*);
+ void postscript_set(int);
+ void revert(Param *);
+ private:
+ int justifytype;
+};
diff --git a/support/lametex/src/Label.C b/support/lametex/src/Label.C
new file mode 100644
index 0000000000..86be6230dd
--- /dev/null
+++ b/support/lametex/src/Label.C
@@ -0,0 +1,130 @@
+/* Label.C
+ *
+ * Stores user-defined labels for backwards and forwards referencing with
+ * the \ref and \pageref commands.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+#include <ctype.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "Global.h"
+#include "Counter.h"
+#include "Operator.h"
+
+Label::Label(char *name, int chapter, int section)
+{
+ _name = strdup(name);
+ _chapter = chapter;
+ _section = section;
+ _referenced = 0;
+}
+
+Label::~Label()
+{
+ delete _name;
+}
+
+Label::match(char *name)
+{
+ return !strcmp(name, _name);
+}
+
+Labels::Labels()
+{
+ numlabels = 0;
+ unknown_references = 0;
+}
+
+Labels::~Labels()
+{
+ for(int x=0; x < numlabels; x++)
+ delete label[x];
+}
+
+void Labels::add_label(char *labelname)
+{
+ if(numlabels > MAXLABELS - 2)
+ Global::files->fatal_error("Too many labels defined");
+ for(int x=0; x < numlabels; x++)
+ if(label[x]->match(labelname)) {
+ char message[50];
+ sprintf(message, "Same label name %s defined twice", labelname);
+ Global::files->fatal_error(message);
+ }
+
+ label[numlabels++] =
+ new Label(labelname,
+ (int)Stack::get(Environment::PCounter,
+ Counter::Chapter, ""),
+ (int)Stack::get(Environment::PCounter,
+ Counter::Section, ""));
+}
+
+
+/* Print a reference to a given labelname done from the \ref command.
+ * Must handle forward referencing as a special case.
+ */
+void Labels::print_ref(char *labelname)
+{
+ for(int x=0; x < numlabels; x++)
+ if(label[x]->match(labelname)) {
+ char printout[MAXSTRING];
+ sprintf(printout,"%d.%d",label[x]->_chapter,label[x]->_section);
+ Operator::plaintext(printout);
+ label[x]->_referenced = 1;
+ return;
+ }
+
+ /* Label is undefined. We assume it is a forward referencing problem */
+ unknown_references = 1;
+ Global::files->outfile << endl << "LAMETEXLABELREF" << labelname << endl;
+}
+
+/* Shutdown the program by going through the file and changing all the
+ * undone label references to the correct information.
+ */
+void Labels::shutdown()
+{
+ ifstream outfile;
+ ofstream tempfile;
+ char buffer[MAXSTRING];
+ char *p;
+ char *labelname;
+
+ if(!unknown_references)
+ return;
+ cerr << "Handling forward references..." << endl;
+ outfile.open(Global::files->outfilename);
+ tempfile.open("lametex.temp");
+ outfile.getline(buffer, MAXSTRING, '\n');
+ while(!outfile.eof() && !outfile.fail()) {
+ if((p = strstr(buffer, "LAMETEXLABELREF"))!=NULL) {
+ labelname = (char *)(p + 15);
+ for(int x=0; x < numlabels; x++)
+ if(label[x]->match(labelname)) {
+ tempfile << "(" << label[x]->_chapter
+ << "." << label[x]->_section
+ << ") NW" << endl;
+ label[x]->_referenced = 1;
+ break;
+ }
+ if(x >= numlabels) {
+ cerr << "No match found for label " << labelname << endl;
+ exit(-1);
+ }
+ } else {
+ tempfile << buffer << endl;
+ }
+ outfile.getline(buffer, MAXSTRING, '\n');
+ }
+
+ outfile.close();
+ tempfile.close();
+ sprintf(buffer, "mv lametex.temp %s", Global::files->outfilename);
+ system(buffer);
+}
diff --git a/support/lametex/src/Label.h b/support/lametex/src/Label.h
new file mode 100644
index 0000000000..a1a7f92bb8
--- /dev/null
+++ b/support/lametex/src/Label.h
@@ -0,0 +1,40 @@
+/* Label.h
+ *
+ * Stores user-defined labels for backwards and forwards referencing with
+ * the \ref and \pageref commands.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+const MAXLABELS = 100;
+
+class Label {
+ public:
+ char *_name;
+ int _chapter;
+ int _section;
+ int _referenced;
+
+ Label(char *,int,int);
+ ~Label();
+ match(char *);
+};
+
+class Labels {
+ enum LabelContents {
+ Chapter,
+ Section
+ };
+ int numlabels;
+ Label *label[MAXLABELS];
+ int unknown_references;
+
+public:
+ Labels();
+ ~Labels();
+ void add_label(char *);
+ void print_ref(char *);
+ void shutdown();
+};
diff --git a/support/lametex/src/LameTeX.C b/support/lametex/src/LameTeX.C
new file mode 100644
index 0000000000..30eccd40f6
--- /dev/null
+++ b/support/lametex/src/LameTeX.C
@@ -0,0 +1,32 @@
+/* LameTeX.C
+ *
+ * A LaTeX compatible text formatter that can handle arbitrary-shaped margins
+ * described in PostScript.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ * PreVersion 1.0 begun 7/28/92
+ * Version 1.0 8/31/92 -- major LaTeX features, stealth commands, fonts
+ * Version 1.1 9/7/92 -- added \ref and ASCII formatting
+ */
+
+#include "Global.h"
+
+FileInput *Global::files;
+Stack *Global::stack;
+Labels *Global::labels;
+
+/* The main entry point to LameTeX. */
+main(int argc, char *argv[])
+{
+ cerr << "This is LameTeX, C++ Version 1.1" << endl;
+ Global::files = new FileInput(argc,argv);
+ Global::stack = new Stack();
+ Global::labels = new Labels();
+
+ for(Token token = Token(); token.isvalid(); token = Token())
+ token.handle();
+
+ Global::stack->shutdown();
+}
diff --git a/support/lametex/src/LameTeX.h b/support/lametex/src/LameTeX.h
new file mode 100644
index 0000000000..c97d9f9282
--- /dev/null
+++ b/support/lametex/src/LameTeX.h
@@ -0,0 +1,17 @@
+/* LameTeX.h
+ *
+ * A LaTeX compatible text formatter that can handle arbitrary-shaped margins
+ * described in PostScript.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+#ifndef LAMETEX_H
+#define LAMETEX_H
+
+const TRUE = 1;
+const FALSE = 0;
+const MAXSTRING = 1024;
+
+#endif
diff --git a/support/lametex/src/Length.C b/support/lametex/src/Length.C
new file mode 100644
index 0000000000..4251d61428
--- /dev/null
+++ b/support/lametex/src/Length.C
@@ -0,0 +1,341 @@
+/* Length.C
+ *
+ * The official LaTeX length parameters are implemented here. They control
+ * variables such as the paragraph indentation and the space to skip between
+ * lines.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+#include "Global.h"
+#include "Font.h"
+#include <string.h>
+#include <search.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+LengthParam::LengthParam(LengthParam *lp, Length *parent)
+{
+ _value = lp->_value;
+ _tokentext = lp->_tokentext;
+ _parent = parent;
+}
+
+LengthParam::LengthParam(float value, char *tokentext, Length *parent)
+{
+ _value = value;
+ _tokentext = new char [strlen(tokentext)+1];
+ strcpy(_tokentext,tokentext);
+ _parent = parent;
+}
+
+LengthParam::~LengthParam()
+{
+ delete _tokentext;
+}
+
+int LengthParam::compare(const void *length1, const void *length2)
+{
+ LengthParam **len1;
+ LengthParam **len2;
+
+ len1 = (LengthParam **) length1;
+ len2 = (LengthParam **) length2;
+
+ return strcmp((*len1)->_tokentext, (*len2)->_tokentext);
+}
+
+void LengthParam::set(float value)
+{
+ if(_value != value) {
+ if(value > _value && match("\\baselineskip"))
+ Global::files->readjust_vspace = value;
+ _value = value;
+ postscript_set();
+ }
+}
+
+float LengthParam::get()
+{
+ return _value;
+}
+
+void LengthParam::revert(Length *from)
+{
+ LengthParam **lp;
+ lp = from->fetch(_tokentext);
+ if(_value != (*lp)->get())
+ postscript_set();
+}
+
+void LengthParam::postscript_set()
+{
+ LengthParam **lp;
+ Global::files->outfile << endl;
+
+ if(match("\\baselineskip"))
+ Global::files->outfile << _value << " BASELINESKIP" << endl;
+ else if(match("\\parindent"))
+ Global::files->outfile << "/parindent " << _value << " def" << endl;
+ else if(match("\\parskip"))
+ Global::files->outfile << "/parskip " << _value << " def" << endl;
+ else if(match("\\textheight")) {
+ lp = _parent->fetch("\\topmargin");
+ Global::files->outfile << "/bottommargin "
+ << 684.0 - _value - (*lp)->get() << " def" << endl;
+ }
+ else if(match("\\textwidth") || match("\\linewidth")) {
+ lp = _parent->fetch("\\oddsidemargin");
+ Global::files->outfile << "/rightmargin "
+ << 540.0 - _value - (*lp)->get() << " def" << endl;
+ }
+ else if(match("\\topmargin")) {
+ Global::files->outfile << "/topmargin " << _value+108 << " def" << endl;
+ lp = _parent->fetch("\\textheight");
+ Global::files->outfile << "/bottommargin "
+ << 684.0 - _value - (*lp)->get() << " def" << endl;
+ }
+ else if(match("\\oddsidemargin") || match("\\evensidemargin")) {
+ Global::files->outfile << "/leftmargin " << _value+72 << " def" << endl;
+ lp = _parent->fetch("\\textwidth");
+ Global::files->outfile << "/rightmargin "
+ << 540.0 - _value - (*lp)->get() << " def" << endl;
+ }
+}
+
+int LengthParam::match(char *tokentext)
+{
+ return !strcmp(_tokentext,tokentext);
+}
+
+Length::Length()
+{
+ /* The LaTeX defaults for the LaTeX Length Parameters */
+ numvalues = 0;
+ makeparam( 12.0, "\\baselineskip"); // space between lines
+ makeparam( 1.0, "\\baselinestretch"); // ditto, in units of lines
+ makeparam(126.0, "\\linewidth"); // same as textwidth
+ makeparam( 18.0, "\\parindent"); // paragraph indentation
+ makeparam( 0.0, "\\parskip"); // space between paragraphs
+ makeparam(540.0, "\\textheight"); // height of the page
+ makeparam(360.0, "\\textwidth"); // width of the page
+ makeparam( 54.0, "\\topmargin"); // top margin
+ makeparam( 54.0, "\\oddsidemargin"); // left margin, basically
+ makeparam( 54.0, "\\evensidemargin"); // left margin, basically
+ makeparam( 21.4, "\\bigskipamount"); // big vertical skip
+ makeparam( 16.9, "\\medskipamount"); // medium vertical skip
+ makeparam( 14.5, "\\smallskipamount"); // small vertical skip
+ makeparam( 28.34,"cm"); // centimeters (28 pts)
+ makeparam( 10.0, "em"); // width of letter M in current font
+ makeparam( 8.0, "ex"); // width of letter X in current font
+ makeparam( 72.0, "in"); // inches (72 pts)
+ makeparam( 12.0, "pc"); // Picas (1pc = 12pt)
+ makeparam( 1.0, "pt"); // Points
+ makeparam( 2.83,"mm"); // millimeters
+ for(int x=0; x < numvalues; x++) // Initialize the variables
+ postscript_set(x);
+}
+
+/* The class Length contains an array of pointers. The automatic definition
+ * created by the C++ compiler just copies over these pointers to the new
+ * Length. But we want the new Length being created to actually have copies
+ * of all the LengthParams in *values[], not pointers to the same ones!
+ * So an explicit definition is written here.
+ */
+Length::Length(Length *base)
+{
+ numvalues = base->numvalues;
+ for(int index=0; index < numvalues; index++)
+ values[index] = new LengthParam(base->values[index], this);
+}
+
+Length::~Length()
+{
+ for(int x=0; x < numvalues; x++)
+ delete values[x];
+}
+
+Param *Length::copy()
+{
+ return new Length(this);
+}
+
+// Fetches the LengthParam in array values with given name
+LengthParam **Length::fetch(char *tokenstr)
+{
+ LengthParam key(0.0, tokenstr, this);
+ LengthParam *keyptr = &key;
+ LengthParam **keyptrptr = &keyptr;
+ LengthParam **lp = (LengthParam **)
+ bsearch((char *)keyptrptr, (char *) values,
+ numvalues, sizeof(LengthParam *), LengthParam::compare);
+ return lp;
+}
+
+void Length::makeparam(float value, char *tokentext)
+{
+ values[numvalues++] = new LengthParam(value, tokentext, this);
+ qsort((char*)values, numvalues,
+ sizeof(LengthParam *), LengthParam::compare);
+}
+
+void Length::set_lp(LengthParam *lp, float value)
+{
+ LengthParam **skip;
+ lp->set(value);
+ if(lp->match("\\baselinestretch")) {
+ skip = fetch("\\baselineskip");
+ float fontsize = Stack::get(Environment::PFont, Font::Size, "");
+ (*skip)->set(value * fontsize * 1.2); // 1.2 is magic spacing number
+ } else if(lp->match("\\oddsidemargin")) {
+ skip = fetch("\\evensidemargin");
+ (*skip)->set(value);
+ } else if(lp->match("\\evensidemargin")) {
+ skip = fetch("\\oddsidemargin");
+ (*skip)->set(value);
+ }
+}
+
+// Set the value of the LengthParam in the values array with given name
+// to the given value. Returns success boolean.
+int Length::set(int, float value, char *tokentext)
+{
+ LengthParam **lp;
+ if((lp=fetch(tokentext)) == NULL)
+ return FALSE;
+
+ set_lp(*lp,value);
+ return TRUE;
+}
+
+float Length::get(int subtype, char *tokentext)
+{
+ if(subtype == Parse_Length)
+ return length_argument();
+
+ LengthParam **lp; // Get parameter value
+ if((lp=fetch(tokentext)) == NULL) {
+ char message[MAXSTRING];
+ sprintf(message, "No length parameter %s defined", tokentext);
+ Global::files->fatal_error(message);
+ }
+ return (*lp)->get();
+}
+
+void Length::postscript_set(int index)
+{
+ values[index]->postscript_set();
+}
+
+void Length::revert(Param *from)
+{
+ for(int index=0; index < numvalues; index++)
+ values[index]->revert((Length *)from);
+}
+
+/* Parses an argument between braces to be used in a length function
+ * such as \addtolength and \setlength. Returns the length in points.
+ */
+float Length::length_argument()
+{
+ char *tokenname;
+ LengthParam **lp;
+ float val = 1.0;
+ Global::files->set_parsing_length(TRUE);
+ for(Token command; !command.match("}"); command = Token()) {
+ if(command.match(""))
+ continue;
+ tokenname = command.get_text();
+ if(tokenname[0] >= '0' && tokenname[0] <= '9'
+ || tokenname[0]=='-' || tokenname[0]=='.') {
+ float t; // A number
+ sscanf(tokenname,"%f",&t);
+ val *= t;
+ } else { // A variable
+ lp = fetch(tokenname);
+ if(!lp) {
+ char message[MAXSTRING];
+ sprintf(message, "Undefined length parameter %s", tokenname);
+ Global::files->fatal_error(message);
+ }
+ val *= (*lp)->get();
+ }
+ }
+
+ Global::files->set_parsing_length(FALSE);
+ return val;
+}
+
+void Length::addtolength(int, int, float, char *)
+{
+ Token openbrace;
+ if(!openbrace.match("{"))
+ Global::files->fatal_error(
+ "Expecting '{' after \\addtolength statement");
+
+ Token lengthparam;
+ if(lengthparam.match("}"))
+ Global::files->fatal_error(
+ "Expecting lengthparam before closing '}' in \\addtolength");
+
+ LengthParam **lp = fetch(lengthparam.get_text());
+
+ Token closebrace;
+ if(!closebrace.match("}"))
+ Global::files->fatal_error(
+ "More than one word before closing '}' in \\addtolength");
+
+ openbrace = Token();
+ if(!openbrace.match("{"))
+ Global::files->fatal_error(
+ "Expecting second '{' after \\addtolength statement");
+
+ set_lp(*lp,(*lp)->get()+Length::length_argument());
+}
+
+void Length::newlength(int, int, float, char *)
+{
+ Token openbrace;
+ if(!openbrace.match("{"))
+ Global::files->fatal_error("Expecting '{' after \\newlength statement");
+
+ Token lengthparam;
+ if(lengthparam.match("}"))
+ Global::files->fatal_error(
+ "Expecting lengthparam before closing '}' in \\newlength");
+
+ makeparam(0.0,lengthparam.get_text());
+
+ Token closebrace;
+ if(!closebrace.match("}"))
+ Global::files->fatal_error(
+ "More than one word before closing '}' in \\newlength");
+}
+
+void Length::setlength(int, int, float, char *)
+{
+ Token openbrace;
+ if(!openbrace.match("{"))
+ Global::files->fatal_error("Expecting '{' after \\setlength statement");
+
+ Token lengthparam;
+ if(lengthparam.match("}"))
+ Global::files->fatal_error(
+ "Expecting lengthparam before closing '}' in \\setlength");
+
+ LengthParam **lp = fetch(lengthparam.get_text());
+
+ Token closebrace;
+ if(!closebrace.match("}"))
+ Global::files->fatal_error(
+ "More than one word before closing '}' in \\setlength");
+
+ openbrace = Token();
+ if(!openbrace.match("{"))
+ Global::files->fatal_error(
+ "Expecting second '{' after \\setlength statement");
+
+ set_lp(*lp,Length::length_argument());
+}
diff --git a/support/lametex/src/Length.h b/support/lametex/src/Length.h
new file mode 100644
index 0000000000..3dc6f2528e
--- /dev/null
+++ b/support/lametex/src/Length.h
@@ -0,0 +1,57 @@
+/* Length.h
+ *
+ * The official LaTeX length parameters are implemented here. They control
+ * variables such as the paragraph indentation and the space to skip between
+ * lines.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+const MAXLENGTHPARAMS = 100;
+class Length;
+// The class for the official LaTeX Length variables,
+// plus any user-defined ones.
+class LengthParam {
+ float _value;
+ char *_tokentext;
+ Length *_parent;
+ public:
+ LengthParam(LengthParam *, Length *);
+ LengthParam(float, char *, Length *);
+ ~LengthParam();
+ void set(float);
+ float get();
+ static int compare(const void *, const void *);
+ void revert(Length *);
+ void postscript_set();
+ int match(char *);
+};
+
+// The official LaTeX Length variables are stored here
+class Length : public Param {
+ public:
+ enum LengthTypes {
+ Parameter,
+ Parse_Length
+ };
+ Length();
+ Length(Length *);
+ ~Length();
+ Param *copy();
+ void revert(Param *);
+ void addtolength(int, int, float, char *);
+ void newlength(int, int, float, char *);
+ void setlength(int, int, float, char *);
+ float length_argument();
+ LengthParam **fetch(char *);
+ private:
+ LengthParam *values[MAXLENGTHPARAMS];
+ int set(int, float, char*);
+ float get(int, char*);
+ void postscript_set(int);
+ void makeparam(float, char *);
+ void set_lp(LengthParam *, float);
+ int numvalues;
+};
diff --git a/support/lametex/src/Makefile b/support/lametex/src/Makefile
new file mode 100644
index 0000000000..7ab9723805
--- /dev/null
+++ b/support/lametex/src/Makefile
@@ -0,0 +1,60 @@
+# The LameTeX Makefile
+
+# Make the correct directories for the following.
+#
+EXEC = /cs/src/lametex/src/lametex
+SRCDIR = /cs/src/lametex/src/
+PAGEDIR = /cs/src/lametex/page/
+
+# Below should be the command that on your system transforms a file
+# lametex.tex into a file lametex.dvi. Use your version of LaTeX for this.
+# You MUST put \040 in place of the space character. For example,
+# "latex lametex.tex" turns into "latex\040lametex.tex"
+LATEX = latex\040lametex.tex
+
+# Below should be the command that on your system transforms a file
+# lametex.dvi into a file lametex.ps. Use your version of dvips for this.
+# You MUST put \040 in place of the space character. For example,
+# "dvips lametex.dvi -o" turns into "dvips\040lametex.dvi\040-o"
+DVIPS = dvips\040lametex.dvi\040-o
+
+# List of other libraries the test files use
+LDFLAGS =
+
+### List of include directories to look for file included with #include<..>
+INC =
+
+
+C++FLAGS = -g -DPAGEDIR=\"${PAGEDIR}\" -DSRCDIR=\"${SRCDIR}\" \
+ '-DDVIPS="${DVIPS}"' '-DLATEX="${LATEX}"'
+
+# Choose the appropriate C++ compiler and make sure the pathname is correct
+#CC = /pro/mia/bin/CC-3.0.1 -DATT_CC30 -D_CC30 $(C++FLAGS)
+#CC = /cs/bin/gcc $(C++FLAGS)
+#CC = /cs/bin/g++ $(C++FLAGS)
+#CC = /usr/lang/CC $(C++FLAGS)
+CC = /cs/bin/CC $(C++FLAGS)
+
+### Command to compile a .C file into a .o file
+CCC = $(CC) $(DEFINES) -c $(INC)
+
+### Command to compile a .C file into an executable
+CCL = $(CC) $(LDFLAGS)
+
+all : lametex
+
+### How to make a .C file into a .o file if it has a .h file
+%.o :: %.C
+ $(CCC) $<
+
+### How to make a .C file into a .o file if it does not have a .h file
+%.o :: %.C
+ $(CCC) $<
+
+### main program
+
+lametex_objs = LameTeX.o FileInput.o Token.o Stack.o Environment.o \
+ Operator.o Counter.o Document.o Font.o Justify.o Length.o Label.o
+
+lametex : $(lametex_objs)
+ $(CCL) -o $(EXEC) $(lametex_objs) $(LIBS)
diff --git a/support/lametex/src/Operator.C b/support/lametex/src/Operator.C
new file mode 100644
index 0000000000..111e229232
--- /dev/null
+++ b/support/lametex/src/Operator.C
@@ -0,0 +1,669 @@
+/* Operator.C
+ *
+ * Some tokens like the curly braces have many meanings in many places.
+ * However, for most tokens there is a simple one-to-one mapping between
+ * the token and some operation to be performed. There are a number of
+ * common types of Operators, and then some special purpose ones.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <search.h>
+#include <time.h>
+#include "Operator.h"
+#include "Global.h"
+#include "Counter.h"
+#include "Document.h"
+#include "Font.h"
+#include "Justify.h"
+
+Operator::Operator(char *tokentext, int page_specific, int stealth,
+ int paramtype, int subtype, float value, char *replacestr,
+ void (*handle)(int, int, float, char *))
+{
+ _tokentext = tokentext;
+ _page_specific = page_specific;
+ _stealth = stealth;
+ _paramtype = paramtype;
+ _subtype = subtype;
+ _value = value;
+ _replacestr = replacestr;
+ _handle = handle;
+
+ _valid = TRUE;
+}
+
+Operator::Operator(const int array_ender)
+{
+ _valid = array_ender; // Invalid operator marks the end of the array.
+}
+
+/* A list of all the token versus their Operators. Some tokens like "\quote"
+ * have more than one Operator because they involve more than one simple
+ * parameter change, like a change to both leftmargin and textwidth.
+ * DO NOT USE M-x sort-lines TO SORT THIS! Some of the operators have multiple
+ * lines, which must be kept preserved in a certain order.
+ */
+static Operator operators[] =
+{
+ Operator("", 0,0,0, 0, 0.0, "", Operator::new_paragraph), // handled
+ Operator("\\#", 1,0,0, 0, 0.0, "#", Operator::replace), // handled
+ Operator("\\$", 1,0,0, 0, 0.0, "$", Operator::replace), // handled
+ Operator("\\%", 1,0,Environment::PFont, Font::FunnyPrint, 0.0, "(%)", Stack::set), // handled
+ Operator("\\&", 1,0,0, 0, 0.0, "&", Operator::replace), // handled
+ Operator("\\Huge", 0,0,Environment::PFont, Font::Huge, 0.0, "", Stack::set), // handled
+ Operator("\\LARGE", 0,0,Environment::PFont, Font::LARGE, 0.0, "", Stack::set), // handled
+ Operator("\\Large", 0,0,Environment::PFont, Font::Large, 0.0, "", Stack::set), // handled
+ Operator("\\STEALTH", 0,0,Environment::PDocument, Document::Stealth, 2.0, "", Stack::set), // handled
+ Operator("\\\\", 1,0,Environment::PDocument, Document::NewLine, 0.0, "", Stack::set), // handled
+ Operator("\\\\*", 1,0,Environment::PDocument, Document::NewLine, 0.0, "", Stack::set), // handled
+ Operator("\\_", 1,0,Environment::PFont, Font::FunnyPrint, 0.0, "(_)", Stack::set), // handled
+ Operator("\\addtolength", 0,0,0, 0, 0.0, "", Operator::addtolength), // handled
+ Operator("\\backslash", 1,0,Environment::PFont, Font::FunnyPrint, 0.0, "(\\\\)", Stack::set), // handled
+ Operator("\\begin", 0,0,0, 0, 0.0, "", Document::begin), // handled
+ Operator("\\bf", 0,0,Environment::PFont, Font::Bold, 0.0, "", Stack::set), // handled
+ Operator("\\bigskip", 1,0,0, 0, 0.0, "\\bigskipamount", Operator::do_vspace),
+ Operator("\\center", 0,0,Environment::PJustify, Justify::Center, 0.0, "", Stack::set), // handled
+ Operator("\\chapter", 0,0,0, 0, 0.0, "", Operator::clearpage), // handled
+ Operator("\\chapter", 1,0,Environment::PDocument, Document::JustDidSection, 1.0, "", Stack::set), // handled
+ Operator("\\chapter", 1,0,0, 0, 0.0, "", Stack::push), // handled
+ Operator("\\chapter", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set), // handled
+ Operator("\\chapter", 1,0,Environment::PFont, Font::Bold, 0.0, "", Stack::set), // handled
+ Operator("\\chapter", 1,0,Environment::PFont, Font::huge, 0.0, "", Stack::set), // handled
+ Operator("\\chapter", 1,0,Environment::PCounter, Counter::Chapter, 1.0, "", Stack::set), // handled
+ Operator("\\chapter*", 0,0,0, 0, 0.0, "", Operator::clearpage), // handled
+ Operator("\\chapter*", 1,0,Environment::PDocument, Document::JustDidSection, 1.0, "", Stack::set), // handled
+ Operator("\\chapter*", 1,0,0, 0, 0.0, "", Stack::push), // handled
+ Operator("\\chapter*", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set), // handled
+ Operator("\\chapter*", 1,0,Environment::PFont, Font::Bold, 0.0, "", Stack::set), // handled
+ Operator("\\chapter*", 1,0,Environment::PFont, Font::huge, 0.0, "", Stack::set), // handled
+ Operator("\\chapter*", 1,0,Environment::PCounter, Counter::Chapter, 0.0, "", Stack::set), // handled
+ Operator("\\clearpage", 0,0,0, 0, 0.0, "", Operator::clearpage), // handled
+ Operator("\\description", 1,0,Environment::PCounter, Counter::Description, 0.0, "", Stack::set), // handled
+ Operator("\\description", 1,0,Environment::PLength, Length::Parameter, 22.5, "\\oddsidemargin", Stack::relative_set), // handled
+ Operator("\\description", 1,0,Environment::PLength, Length::Parameter, -22.5, "\\textwidth", Stack::relative_set), // handled
+ Operator("\\description", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set), // handled
+ Operator("\\description", 1,0,Environment::PLength, Length::Parameter, 1.14, "\\baselinestretch", Stack::set), // handled
+ Operator("\\document", 0,0,Environment::PDocument, Document::DocumentStart, 1.0, "", Stack::set), // handled
+ Operator("\\documentstyle", 0,0,0, 0, 0.0, "", Document::documentstyle), // handled
+ Operator("\\em", 0,0,Environment::PFont, Font::Italic, 0.0, "", Stack::set), // handled
+ Operator("\\end", 0,0,0, 0, 0.0, "", Document::end), // handled
+ Operator("\\enumerate", 1,0,Environment::PCounter, Counter::Enum, 0.0, "", Stack::set), // handled
+ Operator("\\enumerate", 1,0,Environment::PLength, Length::Parameter, 22.5, "\\oddsidemargin", Stack::relative_set), // handled
+ Operator("\\enumerate", 1,0,Environment::PLength, Length::Parameter, -22.5, "\\textwidth", Stack::relative_set), // handled
+ Operator("\\enumerate", 1,0,Environment::PLength, Length::Parameter, 1.14, "\\baselinestretch", Stack::set), // handled
+ Operator("\\enumerate", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set), // handled
+ Operator("\\flushleft", 0,0,Environment::PJustify, Justify::FlushLeft, 0.0, "", Stack::set), // handled
+ Operator("\\flushright", 0,0,Environment::PJustify, Justify::FlushRight, 0.0, "", Stack::set), // handled
+ Operator("\\footnotesize", 0,0,Environment::PFont, Font::Footnotesize, 0.0, "", Stack::set), // handled
+ Operator("\\hspace", 1,0,0, 0, 0.0, "", Operator::hspace), // handled
+ Operator("\\hspace*", 1,0,0, 0, 0.0, "", Operator::hspace), // handled
+ Operator("\\huge", 0,0,Environment::PFont, Font::huge, 0.0, "", Stack::set), // handled
+ Operator("\\hyphenation", 0,0,0, 0, 0.0, "", Operator::skip), // skipped
+ Operator("\\ignore", 1,1,Environment::PDocument, Document::Ignore, 1.0, "", Stack::set), // handled
+ Operator("\\include", 0,0,0, 0, 0.0, "", Operator::include_file), // handled
+ Operator("\\includeps", 0,1,0, 0, 0.0, "", Operator::includeps), // handled
+ Operator("\\it", 0,0,Environment::PFont, Font::Italic, 0.0, "", Stack::set), // handled
+ Operator("\\item", 1,0,Environment::PCounter, Counter::Item, 0.0, "", Stack::set), // handled
+ Operator("\\itemize", 1,0,Environment::PCounter, Counter::Itemize, 0.0, "", Stack::set), // handled
+ Operator("\\itemize", 1,0,Environment::PLength, Length::Parameter, 22.5, "\\oddsidemargin", Stack::relative_set), // handled
+ Operator("\\itemize", 1,0,Environment::PLength, Length::Parameter, -22.5, "\\textwidth", Stack::relative_set), // handled
+ Operator("\\itemize", 1,0,Environment::PLength, Length::Parameter, 1.0, "\\baselinestretch", Stack::set), // handled
+ Operator("\\itemize", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set), // handled
+ Operator("\\label", 1,0,0, 0, 0.0, "", Operator::label), // handled
+ Operator("\\large", 0,0,Environment::PFont, Font::large, 0.0, "", Stack::set), // handled
+ Operator("\\ldots", 1,0,0, 0, 0.0, "...", Operator::replace), // handled
+ Operator("\\medskip", 1,0,0, 0, 0.0, "\\medskipamount", Operator::do_vspace),
+ Operator("\\newlength", 0,0,0, 0, 0.0, "", Operator::newlength), // handled
+ Operator("\\newline", 1,0,Environment::PDocument, Document::NewLine, 0.0, "", Stack::set), // handled
+ Operator("\\normalsize", 0,0,Environment::PFont, Font::Normalsize, 0.0, "", Stack::set), // handled
+ Operator("\\par", 1,0,Environment::PDocument, Document::NewLine, 0.0, "", Stack::set), // handled
+ Operator("\\paragraph", 1,0,Environment::PDocument, Document::JustDidSection, 1.0, "", Stack::set),
+ Operator("\\paragraph", 1,0,0, 0, 0.0, "", Stack::push), // handled
+ Operator("\\paragraph", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set), // handled
+ Operator("\\paragraph", 1,0,Environment::PFont, Font::Bold, 0.0, "", Stack::set), // handled
+ Operator("\\paragraph", 1,0,Environment::PFont, Font::Normalsize, 0.0, "", Stack::set), // handled
+ Operator("\\paragraph", 1,0,Environment::PCounter, Counter::Paragraph, 1.0, "", Stack::set), // handled
+ Operator("\\paragraph*", 1,0,Environment::PDocument, Document::JustDidSection, 1.0, "", Stack::set),
+ Operator("\\paragraph*", 1,0,0, 0, 0.0, "", Stack::push), // handled
+ Operator("\\paragraph*", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set), // handled
+ Operator("\\paragraph*", 1,0,Environment::PFont, Font::Bold, 0.0, "", Stack::set), // handled
+ Operator("\\paragraph*", 1,0,Environment::PFont, Font::Normalsize, 0.0, "", Stack::set), // handled
+ Operator("\\paragraph*", 1,0,Environment::PCounter, Counter::Paragraph, 0.0, "", Stack::set), // handled
+ Operator("\\part", 0,0,0, 0, 0.0, "", Operator::clearpage),
+ Operator("\\part", 1,0,Environment::PDocument, Document::JustDidSection, 1.0, "", Stack::set),
+ Operator("\\part", 1,0,0, 0, 0.0, "", Stack::push),
+ Operator("\\part", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set),
+ Operator("\\part", 1,0,Environment::PFont, Font::Bold, 0.0, "", Stack::set),
+ Operator("\\part", 1,0,Environment::PFont, Font::Huge, 0.0, "", Stack::set),
+ Operator("\\part", 1,0,Environment::PCounter, Counter::Part, 1.0, "", Stack::set),
+ Operator("\\part*", 0,0,0, 0, 0.0, "", Operator::clearpage),
+ Operator("\\part*", 1,0,Environment::PDocument, Document::JustDidSection, 1.0, "", Stack::set),
+ Operator("\\part*", 1,0,0, 0, 0.0, "", Stack::push),
+ Operator("\\part*", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set),
+ Operator("\\part*", 1,0,Environment::PFont, Font::Bold, 0.0, "", Stack::set),
+ Operator("\\part*", 1,0,Environment::PFont, Font::Huge, 0.0, "", Stack::set),
+ Operator("\\part*", 1,0,Environment::PCounter, Counter::Part, 0.0, "", Stack::set),
+ Operator("\\postscript", 1,1,Environment::PDocument, Document::PostScript, 1.0, "", Stack::set), // handled
+ Operator("\\pscmd", 0,1,0, 0, 0.0, "", Operator::pscmd), // handled
+ Operator("\\pspage", 0,1,0, 0, 0.0, "", Operator::pspage), // handled
+ Operator("\\quotation", 1,0,Environment::PDocument, Document::NewLine, 0.0, "", Stack::set), // handled
+ Operator("\\quotation", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set), // handled
+ Operator("\\quotation", 1,0,Environment::PLength, Length::Parameter, 1.0, "\\baselinestretch", Stack::set), // handled
+ Operator("\\quotation", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parskip", Stack::set), // handled
+ Operator("\\quotation", 1,0,Environment::PLength, Length::Parameter, 72.0, "\\oddsidemargin", Stack::relative_set), // handled
+ Operator("\\quotation", 1,0,Environment::PLength, Length::Parameter, -72.0, "\\textwidth", Stack::relative_set), // handled
+ Operator("\\quote", 1,0,Environment::PDocument, Document::NewLine, 0.0, "", Stack::set), // handled
+ Operator("\\quote", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set), // handled
+ Operator("\\quote", 1,0,Environment::PLength, Length::Parameter, 1.0, "\\baselinestretch", Stack::set), // handled
+ Operator("\\quote", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parskip", Stack::set), // handled
+ Operator("\\quote", 1,0,Environment::PLength, Length::Parameter, 72.0, "\\oddsidemargin", Stack::relative_set), // handled
+ Operator("\\quote", 1,0,Environment::PLength, Length::Parameter, -72.0, "\\textwidth", Stack::relative_set), // handled
+ Operator("\\raggedleft", 0,0,Environment::PJustify, Justify::FlushRight, 0.0, "", Stack::set), // handled
+ Operator("\\raggedright", 0,0,Environment::PJustify, Justify::FlushLeft, 0.0, "", Stack::set), // handled
+ Operator("\\ref", 1,0,0, 0, 0.0, "", Operator::ref), // handled
+ Operator("\\rm", 0,0,Environment::PFont, Font::Roman, 0.0, "", Stack::set), // handled
+ Operator("\\sc", 0,0,Environment::PFont, Font::SmallCaps, 0.0, "", Stack::set), // handled
+ Operator("\\scriptsize", 0,0,Environment::PFont, Font::Scriptsize, 0.0, "", Stack::set), // handled
+ Operator("\\section", 1,0,Environment::PDocument, Document::JustDidSection, 1.0, "", Stack::set), // handled
+ Operator("\\section", 1,0,0, 0, 0.0, "", Stack::push), // handled
+ Operator("\\section", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set), // handled
+ Operator("\\section", 1,0,Environment::PFont, Font::Bold, 0.0, "", Stack::set), // handled
+ Operator("\\section", 1,0,Environment::PFont, Font::Large, 0.0, "", Stack::set), // handled
+ Operator("\\section", 1,0,Environment::PCounter, Counter::Section, 1.0, "", Stack::set), // handled
+ Operator("\\section*", 1,0,Environment::PDocument, Document::JustDidSection, 1.0, "", Stack::set), // handled
+ Operator("\\section*", 1,0,0, 0, 0.0, "", Stack::push), // handled
+ Operator("\\section*", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set), // handled
+ Operator("\\section*", 1,0,Environment::PFont, Font::Bold, 0.0, "", Stack::set), // handled
+ Operator("\\section*", 1,0,Environment::PFont, Font::Large, 0.0, "", Stack::set), // handled
+ Operator("\\section*", 1,0,Environment::PCounter, Counter::Section, 0.0, "", Stack::set), // handled
+ Operator("\\setlength", 0,0,0, 0, 0.0, "", Operator::setlength), // handled
+ Operator("\\sf", 0,0,Environment::PFont, Font::SansSerif, 0.0, "", Stack::set), // handled
+ Operator("\\sl", 0,0,Environment::PFont, Font::Slant, 0.0, "", Stack::set), // handled
+ Operator("\\small", 0,0,Environment::PFont, Font::Small, 0.0, "", Stack::set), // handled
+ Operator("\\smallskip", 1,0,0, 0, 0.0, "\\smallskipamount", Operator::do_vspace),
+ Operator("\\stealth", 0,0,Environment::PDocument, Document::Stealth, 1.0, "", Stack::set), // handled
+ Operator("\\subparagraph", 1,0,Environment::PDocument, Document::JustDidSection, 1.0, "", Stack::set), // handled
+ Operator("\\subparagraph", 1,0,0, 0, 0.0, "", Stack::push), // handled
+ Operator("\\subparagraph", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set), // handled
+ Operator("\\subparagraph", 1,0,Environment::PFont, Font::Bold, 0.0, "", Stack::set), // handled
+ Operator("\\subparagraph", 1,0,Environment::PFont, Font::Normalsize, 0.0, "", Stack::set), // handled
+ Operator("\\subparagraph", 1,0,Environment::PCounter, Counter::Subparagraph, 1.0, "", Stack::set), // handled
+ Operator("\\subparagraph*", 1,0,Environment::PDocument, Document::JustDidSection, 1.0, "", Stack::set), // handled
+ Operator("\\subparagraph*", 1,0,0, 0, 0.0, "", Stack::push), // handled
+ Operator("\\subparagraph*", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set), // handled
+ Operator("\\subparagraph*", 1,0,Environment::PFont, Font::Bold, 0.0, "", Stack::set), // handled
+ Operator("\\subparagraph*", 1,0,Environment::PFont, Font::Normalsize, 0.0, "", Stack::set), // handled
+ Operator("\\subparagraph*", 1,0,Environment::PCounter, Counter::Subparagraph, 0.0, "", Stack::set), // handled
+ Operator("\\subsection", 1,0,Environment::PDocument, Document::JustDidSection, 1.0, "", Stack::set), // handled
+ Operator("\\subsection", 1,0,0, 0, 0.0, "", Stack::push), // handled
+ Operator("\\subsection", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set), // handled
+ Operator("\\subsection", 1,0,Environment::PFont, Font::Bold, 0.0, "", Stack::set), // handled
+ Operator("\\subsection", 1,0,Environment::PFont, Font::large, 0.0, "", Stack::set), // handled
+ Operator("\\subsection", 1,0,Environment::PCounter, Counter::Subsection, 1.0, "", Stack::set), // handled
+ Operator("\\subsection*", 1,0,Environment::PDocument, Document::JustDidSection, 1.0, "", Stack::set), // handled
+ Operator("\\subsection*", 1,0,0, 0, 0.0, "", Stack::push), // handled
+ Operator("\\subsection*", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set), // handled
+ Operator("\\subsection*", 1,0,Environment::PFont, Font::Bold, 0.0, "", Stack::set), // handled
+ Operator("\\subsection*", 1,0,Environment::PFont, Font::large, 0.0, "", Stack::set), // handled
+ Operator("\\subsection*", 1,0,Environment::PCounter, Counter::Subsection, 0.0, "", Stack::set), // handled
+ Operator("\\subsubsection", 1,0,Environment::PDocument, Document::JustDidSection, 1.0, "", Stack::set), // handled
+ Operator("\\subsubsection", 1,0,0, 0, 0.0, "", Stack::push), // handled
+ Operator("\\subsubsection", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set), // handled
+ Operator("\\subsubsection", 1,0,Environment::PFont, Font::Bold, 0.0, "", Stack::set), // handled
+ Operator("\\subsubsection", 1,0,Environment::PFont, Font::Normalsize, 0.0, "", Stack::set), // handled
+ Operator("\\subsubsection", 1,0,Environment::PCounter, Counter::Subsubsection, 1.0, "", Stack::set), // handled
+ Operator("\\subsubsection*", 1,0,Environment::PDocument, Document::JustDidSection, 1.0, "", Stack::set), // handled
+ Operator("\\subsubsection*", 1,0,0, 0, 0.0, "", Stack::push), // handled
+ Operator("\\subsubsection*", 1,0,Environment::PLength, Length::Parameter, 0.0, "\\parindent", Stack::set), // handled
+ Operator("\\subsubsection*", 1,0,Environment::PFont, Font::Bold, 0.0, "", Stack::set), // handled
+ Operator("\\subsubsection*", 1,0,Environment::PFont, Font::Normalsize, 0.0, "", Stack::set), // handled
+ Operator("\\subsubsection*", 1,0,Environment::PCounter, Counter::Subsubsection, 0.0, "", Stack::set), // handled
+ Operator("\\tiny", 0,0,Environment::PFont, Font::Tiny, 0.0, "", Stack::set), // handled
+ Operator("\\today", 1,0,0, 0, 0.0, "", Operator::today), // handled
+ Operator("\\tt", 0,0,Environment::PFont, Font::Typewriter, 0.0, "", Stack::set), // handled
+ Operator("\\verse", 1,0,Environment::PDocument, Document::NewLine, 0.0, "", Stack::set), // handled
+ Operator("\\verse", 1,0,Environment::PLength, Length::Parameter, 45.0, "\\oddsidemargin", Stack::relative_set), // handled
+ Operator("\\verse", 1,0,Environment::PLength, Length::Parameter, -22.5, "\\parindent", Stack::set), // handled
+ Operator("\\verse", 1,0,Environment::PLength, Length::Parameter, 1.0, "\\baselinestretch", Stack::set), // handled
+ Operator("\\verse", 1,0,Environment::PLength, Length::Parameter, 11.0, "\\parskip", Stack::set), // handled
+ Operator("\\vspace", 1,0,0, 0, 0.0, "", Operator::vspace), // handled
+ Operator("\\vspace*", 1,0,0, 0, 0.0, "", Operator::vspace), // handled
+ Operator("\\{", 1,0,Environment::PFont, Font::FunnyPrint, 0.0, "({)", Stack::set), // handled
+ Operator("\\}", 1,0,Environment::PFont, Font::FunnyPrint, 0.0, "(})", Stack::set), // handled
+ Operator("{", 0,0,0, 0, 0.0, "", Stack::push), // handled
+ Operator("}", 0,0,0, Document::CloseBrace, 0.0, "", Stack::pop), // handled
+ 0
+};
+
+static int operator_size = 0; // Size of the operators array
+
+int Operator::compare(const void *op1, const void *op2)
+{
+ Operator *oper1;
+ Operator *oper2;
+ oper1 = (Operator *) op1;
+ oper2 = (Operator *) op2;
+ return strcmp(oper1->_tokentext, oper2->_tokentext);
+}
+
+/* Do a binary search through the alphabetically sorted array of operators
+ * for the first operator (there may be many) that matches this token name
+ * Return a pointer to the first operator, or NULL if no match found.
+ */
+Operator* Operator::get_operator(char *tokenstr)
+{
+ if(!operator_size) // Has the operator_size variable been initialized?
+ while(operators[operator_size++].isvalid())
+ ;
+ Operator key(tokenstr, 0, 0, 0, 0, 0.0, "", NULL);
+ Operator *op = (Operator *)
+ bsearch((char *)&key, (char *) operators,
+ operator_size, sizeof(Operator), Operator::compare);
+ if(op != NULL && !op->match("")) { // Found a non-null match?
+ while((--op)->match(tokenstr)) // Backpeddle until first match found.
+ ;
+ op++;
+ }
+ return op;
+}
+
+/* Execute the given operator, which is a pointer into the array of operators
+ * "operators". Since there could be more than one operator for a token name,
+ * the pointer is incremented and executed until the token name doesn't match.
+ */
+void Operator::execute()
+{
+ // Skip the operation if we're in a comment, unless this is a
+ // stealth environment or the command is "\stealth" or "\begin".
+
+ if(Stack::get(Environment::PDocument, Document::Comment, "")) { // Comment?
+ if(!match("\\stealth") && !match("\\STEALTH") && !match("\\begin")
+ && !Stack::get(Environment::PDocument, Document::Stealth, ""))
+ return;
+ }
+ else // Don't put stealth comments outside of a comment line,
+ if(is_stealth()) // because then normal LaTeX cannot process this file.
+ Global::files->fatal_error(
+ "Cannot execute stealth command outside of stealth environment in comment line.");
+
+ // We are prepared to handle the Operator. But first, check to see if the
+ // page description needs to be defined or if the current page needs to be
+ // started with StartPage
+ if(_page_specific)
+ Global::files->force_start_page();
+
+ _handle(_paramtype, _subtype, _value, _replacestr); // Execute the operator
+}
+
+/* Returns true if the given token string matches the Operator's token string
+ */
+int Operator::match(char *tokenstr)
+{
+ return !strcmp(_tokentext,tokenstr);
+}
+
+void Operator::addtolength(int paramtype, int subtype, float value,
+ char *replacestr)
+{
+ Length *length;
+ length = Global::stack->get_length();
+ length->addtolength(paramtype, subtype, value, replacestr);
+}
+
+void Operator::clearpage(int, int, float, char *)
+{
+ if(Stack::get(Environment::PDocument, Document::StartPage, "")) {
+ Global::files->outfile << endl;
+ Global::files->outfile << "ENDPAGE" << endl;
+ // We don't start a new page unless we have to! This is just a marker
+ // that a new page has not been started.
+ Stack::set(Environment::PDocument, Document::StartPage, 0.0, "");
+ }
+}
+
+void Operator::document(int, int, float, char *)
+{
+ Global::files->outfile << "in document()" << endl;
+}
+
+void Operator::do_vspace(int, int, float height, char *length_param)
+{
+ if(length_param[0])
+ height = Global::stack->get(Environment::PLength,
+ Length::Parameter, length_param);
+
+ // Suppress any new paragraphs before text
+ Global::files->blankline_area = 1;
+ Global::files->newline_in_this_blankline_area = 1;
+ Global::files->vspace_in_this_blankline_area += height;
+ Global::files->got_whitespace();
+}
+
+void Operator::hspace(int, int, float, char *)
+{
+ Token openbrace;
+ if(!openbrace.match("{"))
+ Global::files->fatal_error("Expecting '{' after \\vspace");
+
+ float width = Stack::get(Environment::PLength, Length::Parse_Length, "");
+ Global::files->outfile << endl;
+ Global::files->outfile << width << " HSpace" << endl;
+}
+
+/* Handle the LaTeX command \include, which includes a file at the current
+ * place in the filestream.
+ */
+void Operator::include_file(int, int, float, char *)
+{
+ Token openbrace;
+ if(!openbrace.match("{"))
+ Global::files->fatal_error("Expecting '{' after \\include statement");
+
+ Token filename;
+ if(filename.match("}"))
+ Global::files->warning(
+ "Expecting filename before closing '}' in \\include");
+
+ Token closebrace;
+ if(!closebrace.match("}"))
+ Global::files->fatal_error(
+ "More than one word before closing '}' in \\include");
+
+ Global::files->include_file(filename.get_text());
+}
+
+/* Handle the LameTeX stealth command \includeps, which includes a
+ * postscript file at the current place in the filestream.
+ */
+void Operator::includeps(int, int, float, char *)
+{
+ Token openbrace;
+ if(!openbrace.match("{"))
+ Global::files->fatal_error("Expecting '{' after \\includeps statement");
+
+ Token filename;
+ if(filename.match("}"))
+ Global::files->warning(
+ "Expecting filename before closing '}' in \\includeps");
+
+ Token closebrace;
+ if(!closebrace.match("}"))
+ Global::files->fatal_error(
+ "More than one word before closing '}' in \\includeps");
+
+ Global::files->include_file_ps(filename.get_text(), FALSE);
+}
+
+
+void Operator::label(int, int, float, char *)
+{
+ Token openbrace;
+ if(!openbrace.match("{"))
+ Global::files->fatal_error("Expecting '{' after \\label statement");
+
+ Token labelname;
+ if(labelname.match("}"))
+ Global::files->warning(
+ "Expecting label name before closing '}' in \\label");
+
+ Token closebrace;
+ if(!closebrace.match("}"))
+ Global::files->fatal_error(
+ "More than token before closing '}' in \\label. Sorry, you must rename your label.");
+
+ Global::labels->add_label(labelname.get_text());
+}
+
+void Operator::newlength(int paramtype, int subtype, float value,
+ char *replacestr)
+{
+ Length *length;
+ length = Global::stack->get_length();
+ length->newlength(paramtype, subtype, value, replacestr);
+}
+
+void Operator::new_paragraph(int, int, float, char *)
+{
+ if(Global::files->blankline_area)
+ return;
+
+ // Suppress more new paragraphs.
+ Global::files->newline_in_this_blankline_area = 1;
+}
+
+/* LaTeX Fonts are bulky, and in LameTeX (just like LaTeX) the fonts
+ * are included one character at a time, not one fontfamily at a time.
+ * A fontfamily is much too large to load in if we're only going to
+ * use a couple of characters from the font type.
+ *
+ * So, whenever we send to PostScript a character meant to be part of a string
+ * we should register that the font description for this character in the
+ * current font type should be included.
+ *
+ * This routine performs this registration. Also it adds the syntax
+ * necessary for PostScript to print this string, returning it in textout.
+ */
+void Operator::registrar(char *textin, char *textout)
+{
+ Stack::set(Environment::PFont, Font::Used, 0.0, textin);
+
+ textout[0]='(';
+ for(int in=0,out=1; textin[in]; in++,out++) {
+ switch(textin[in]) {
+ case '\n':
+ textout[out++]='\\';
+ textout[out]='n';
+ break;
+ case '\t':
+ textout[out++]='\\';
+ textout[out]='t';
+ break;
+ case '\r':
+ textout[out++]='\\';
+ textout[out]='r';
+ break;
+ case '`':
+ if(textin[in+1]=='`') {
+ in++;
+ textout[out++]='\\';
+ textout[out]='\\';
+ }
+ else
+ textout[out]='`';
+ break;
+ case '\'':
+ if(textin[in+1]=='\'') {
+ in++;
+ textout[out]='\"';
+ }
+ else
+ textout[out]='\'';
+ break;
+ case '\\':
+ case ')':
+ case '(':
+ textout[out++]='\\';
+ default:
+ textout[out]=textin[in];
+ }
+ }
+ textout[out++]=')';
+ textout[out]='\0';
+}
+
+/* If we are inside the middle of the document, then print this plaintext
+ * normally.
+ */
+void Operator::plaintext(char *text)
+{
+ // Plaintext is not valid in a comment that's not in a stealth environment.
+ if(Stack::get(Environment::PDocument, Document::Comment, "")
+ && !Stack::get(Environment::PDocument, Document::Stealth, ""))
+ return;
+
+ if(!Stack::get(Environment::PDocument,Document::DocumentStart,"")) {
+ Global::files->warning("Missing \\begin{document}.");
+ return;
+ }
+
+ Global::files->force_start_page(); // Start a new page if not started.
+
+ // This is NOT just after a new section.
+ Global::stack->set(Environment::PDocument,
+ Document::JustDidSection, 0.0, "");
+
+ if(Global::files->readjust_vspace > 0.0) {
+ Global::files->outfile << endl
+ << Global::files->readjust_vspace
+ << " woids 1 gt { 0 exch READJUST } { pop } ifelse" << endl;
+ Global::files->readjust_vspace = 0.0;
+ }
+
+ // Must process for special characters!
+ char output[MAXSTRING];
+ Operator::registrar(text, output);
+ Global::files->outfile << " " << output << " NW";
+}
+
+/* Shleps a PostScript operator into the word list */
+void Operator::pscmd(int, int, float, char *)
+{
+ char commandline[MAXSTRING+5];
+ char buildline[MAXSTRING];
+
+ Token openbrace;
+ if(!openbrace.match("{"))
+ Global::files->fatal_error("Expecting '{' after \\pscmd statement");
+
+ strcpy(buildline,"");
+
+ int x=0;
+ for(Token command; !command.match("}"); command = Token()) {
+ if(x++>0)
+ strcat(buildline, " ");
+ strcat(buildline, command.get_text());
+ }
+
+ if(x>1 || buildline[0]!='/')
+ sprintf(commandline,"{ %s }", buildline);
+ else
+ strcpy(commandline, buildline);
+
+ Stack::set(Environment::PFont, Font::Currentused, 0.0, commandline);
+}
+
+
+/* Gives the postscript file describing parameters for the next page */
+void Operator::pspage(int, int, float, char *)
+{
+ Token openbrace;
+ if(!openbrace.match("{"))
+ Global::files->fatal_error("Expecting '{' after \\pspage statement");
+
+ Token filename;
+ if(filename.match("}"))
+ Global::files->warning(
+ "Expecting filename before closing '}' in \\pspage");
+
+ Token closebrace;
+ if(!closebrace.match("}"))
+ Global::files->fatal_error(
+ "More than one word before closing '}' in \\pspage");
+
+ // Use the new pspage.
+ Global::files->use_pspage(filename.get_text());
+}
+
+void Operator::ref(int, int, float, char *)
+{
+ Token openbrace;
+ if(!openbrace.match("{"))
+ Global::files->fatal_error("Expecting '{' after \\ref statement");
+
+ Token labelname;
+ if(labelname.match("}"))
+ Global::files->warning(
+ "Expecting label name before closing '}' in \\ref");
+
+ Token closebrace;
+ if(!closebrace.match("}"))
+ Global::files->fatal_error(
+ "More than token before closing '}' in \\ref. Sorry, you must rename your label.");
+
+ Global::labels->print_ref(labelname.get_text());
+}
+
+void Operator::replace(int, int, float, char *replacestr)
+{
+ if(replacestr[0]) // A null string means there is no replacement
+ plaintext(replacestr);
+}
+
+void Operator::setlength(int paramtype, int subtype, float value,
+ char *replacestr)
+{
+ Length *length;
+ length = Global::stack->get_length();
+ length->setlength(paramtype, subtype, value, replacestr);
+}
+
+// Skip the contents of the next brace set
+void Operator::skip(int paramtype, int subtype, float value,
+ char *replacestr)
+{
+ Token openbrace;
+ if(!openbrace.match("{"))
+ Global::files->fatal_error("Missing {");
+
+ Token token;
+ while(!token.match("}")) {
+ token = Token();
+ if(token.match("\\end"))
+ Operator::skip(paramtype, subtype, value, replacestr);
+ }
+}
+
+void Operator::today(int, int, float, char*)
+{
+ char buffer[20];
+ time_t clock;
+
+ time(&clock);
+ struct tm *tm = localtime(&clock);
+
+ strftime(buffer, 20, "%B", tm);
+ Operator::plaintext(buffer);
+ strftime(buffer, 20, "%d,", tm);
+ if(buffer[0]=='0')
+ Operator::plaintext(&buffer[1]);
+ else
+ Operator::plaintext(buffer);
+ strftime(buffer, 20, "%Y", tm);
+ Operator::plaintext(buffer);
+}
+
+void Operator::vspace(int, int, float, char *)
+{
+ Token openbrace;
+ if(!openbrace.match("{"))
+ Global::files->fatal_error("Expecting '{' after \\vspace");
+
+ float height = Stack::get(Environment::PLength, Length::Parse_Length, "");
+ Operator::do_vspace(0, 0, height, "");
+}
+
+int Operator::isvalid()
+{
+ return _valid;
+}
+
+int Operator::is_stealth()
+{
+ return _stealth;
+}
diff --git a/support/lametex/src/Operator.h b/support/lametex/src/Operator.h
new file mode 100644
index 0000000000..3a69c0ed42
--- /dev/null
+++ b/support/lametex/src/Operator.h
@@ -0,0 +1,58 @@
+/* Operator.h
+ *
+ * Some tokens like the curly braces have many meanings in many places.
+ * However, for most tokens there is a simple one-to-one mapping between
+ * the token and some operation to be performed. There are a number of
+ * common types of operators, and then some special purpose ones.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+const MAXNAMES = 10;
+class Operator {
+ char *_tokentext; // The text of the token for this Op-ator
+ char *_replacestr; // A description of the change to be made.
+ float _value; // An alternate description of what to change
+ int _paramtype; // Which Parameter derived class to call
+ int _subtype; // Inside the Param class, what type is this?
+ void (*_handle)(int, int, float, char *); // The function to call for token
+ int _valid;
+ int _stealth; // Is this a LameTeX stealth command?
+ int _page_specific; // Can this command be executed
+ // before an StartPage?
+
+ public:
+ static void addtolength(int, int, float, char *);
+ static void clearpage(int, int, float, char *);
+ static void document(int, int, float, char *);
+ static void do_vspace(int, int, float, char *);
+ static void hspace(int, int, float, char *);
+ static void include_file(int, int, float, char *);
+ static void includeps(int, int, float, char *);
+ static void label(int, int, float, char *);
+ static void new_paragraph(int, int, float, char *);
+ static void newlength(int, int, float, char *);
+ static void postscript(int, int, float, char *);
+ static void pscmd(int, int, float, char *);
+ static void pspage(int, int, float, char *);
+ static void ref(int, int, float, char *);
+ static void replace(int, int, float, char *);
+ static void setlength(int, int, float, char *);
+ static void skip(int, int, float, char *);
+ static void stealth(int, int, float, char *);
+ static void today(int, int, float, char *);
+ static void vspace(int, int, float, char *);
+ Operator(const int);
+ Operator(char*, int, int, int, int, float, char*,
+ void (*f)(int, int, float, char *));
+ static void registrar(char *, char *);
+ static void plaintext(char *);
+ static Operator* get_operator(char *);
+ static int compare(const void *, const void *);
+ int match(char *);
+ void execute();
+ int isvalid();
+ int is_stealth();
+};
diff --git a/support/lametex/src/Parameter.h b/support/lametex/src/Parameter.h
new file mode 100644
index 0000000000..2e105ee61b
--- /dev/null
+++ b/support/lametex/src/Parameter.h
@@ -0,0 +1,23 @@
+/* Parameter.h
+ *
+ * Formatting a file means keeping track of a lot of things, like the current
+ * font, the size of the margins, and the chapter number.
+ * We call these "parameters" and group them under one class because the ways
+ * they are altered recursively or incrementally are very similar.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+#include "LameTeX.h"
+#include <iostream.h>
+
+class Param{
+ public:
+ virtual Param *copy() = 0;
+ virtual int set(int, float, char *) = 0;
+ virtual float get(int, char *) = 0;
+ virtual void postscript_set(int) = 0;
+ virtual void revert(Param *) = 0;
+};
diff --git a/support/lametex/src/Stack.C b/support/lametex/src/Stack.C
new file mode 100644
index 0000000000..ac21d44d7d
--- /dev/null
+++ b/support/lametex/src/Stack.C
@@ -0,0 +1,145 @@
+/* Stack.C
+ *
+ * Adjusting the look and feel of the document in a recursive way is done
+ * with a stack of Environments, where each environment holds variables such
+ * as the current font and margin sizes. This describes the stack.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+#include "Global.h"
+#include "Document.h"
+#include "Font.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+Environment *Stack::environments[MAXNESTING];
+int Stack::level;
+
+Stack::Stack()
+{
+ level=0;
+ for(int x=0; x < MAXNESTING; x++)
+ environments[x] = NULL;
+ environments[0] = new Environment(); // Initialize the root environment
+}
+
+void Stack::push(int, int, float, char *)
+{
+ if(level > MAXNESTING)
+ Global::files->fatal_error("Too much nesting");
+
+ environments[level+1] = new Environment(environments[level]);
+ level++;
+}
+
+void Stack::pop(int, int subtype, float, char *)
+{
+ if(level == 0)
+ Global::files->fatal_error("Too many \\end or } tokens");
+
+ Stack::get(Environment::PDocument, subtype, "");
+
+ environments[level-1]->revert(environments[level]);
+ delete environments[level];
+ level--;
+}
+
+/* This functions sets a parameter in the current environment. When the '}'
+ * character or the \end command is encountered, the current environment
+ * will popped off the stack and this parameter will be reset to its former
+ * value (the value previous to the last '{' character or \begin command
+ * or the default value)
+ */
+void Stack::set(int paramtype, int subtype, float value, char *replacestr)
+{
+ environments[level]->set(paramtype,subtype,value,replacestr);
+}
+
+/* This functions sets a parameter in the current environment, relative
+ * to its current value.
+ */
+void Stack::relative_set(int paramtype, int subtype, float value,
+ char *replacestr)
+{
+ environments[level]->
+ set(paramtype, subtype,
+ value + environments[level]->get(paramtype, subtype, replacestr),
+ replacestr);
+}
+
+
+
+/* This function gets a parameter value from the current environment,
+ * as indexed by the parameter type and subtype.
+ */
+float Stack::get(int paramtype, int subtype, char *comparestr)
+{
+ return environments[level]->get(paramtype, subtype, comparestr);
+}
+
+void Stack::shutdown()
+{
+ char commandname[MAXSTRING];
+ if(level > 0)
+ Global::files->fatal_error("Missing \\end or }");
+ Global::files->outfile << endl;
+ Global::files->outfile << "ENDPAGE" << endl;
+
+ Stack::get(Environment::PDocument, Document::ShutDown, "");
+ Global::files->outfile.close();
+ Global::labels->shutdown();
+ char realname[MAXSTRING];
+
+ char srcdir[MAXSTRING]; // Take a trailing / off the source
+ strcpy(srcdir,SRCDIR); // directory pathname, if needed.
+ int last = strlen(srcdir) - 1;
+ if(srcdir[last]=='/')
+ srcdir[last]='\0';
+ strcpy(realname, Global::files->outfilename);
+ char *p = strchr(realname,'.');
+ *p='\0';
+
+ if(Global::files->plain_text_output) {
+ sprintf(commandname, "perl %s/plaintext.pl < %s > %s.txt", srcdir,
+ Global::files->outfilename, Global::files->outfileroot);
+ system(commandname);
+ sprintf(commandname, "Output has been placed in %s.txt",
+ Global::files->outfileroot);
+ cerr << commandname << endl;
+ sprintf(commandname,"rm %s", Global::files->outfilename);
+ system(commandname);
+ return;
+ }
+ Stack::get(Environment::PFont, Font::ShutDown, "");
+
+ /* A number of files have been created. It's time to merge them
+ together into one big file */
+
+
+
+ // Concatenate all these library and temporary files into
+ // the final rootname.ps file.
+
+ sprintf(commandname,
+ "cat %s/latex.header lametex.PS %s/format.ps %s/breakpath.ps %s %s/latex.footer > %s.ps",
+ srcdir, srcdir, srcdir, Global::files->outfilename, srcdir,
+ realname);
+
+
+ system(commandname); // Execute the concatenate command
+ cerr << "Created PostScript file " << realname
+ << ".ps" << endl;
+
+ sprintf(commandname,"rm lametex.PS lametex.aux lametex.log %s", Global::files->outfilename);
+ system(commandname); // Execute the concatenate command
+}
+
+Length *Stack::get_length()
+{
+ return (Length *)environments[level]->get_param(Environment::PLength);
+}
+
diff --git a/support/lametex/src/Stack.h b/support/lametex/src/Stack.h
new file mode 100644
index 0000000000..a5f66fa89b
--- /dev/null
+++ b/support/lametex/src/Stack.h
@@ -0,0 +1,30 @@
+/* Stack.h
+ *
+ * Adjusting the look and feel of the document in a recursive way is done
+ * with a stack of Environments, where each environment holds variables such
+ * as the current font and margin sizes. This describes the stack.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+#include "Environment.h"
+#include "Length.h"
+
+const MAXNESTING = 100;
+class Stack {
+ static int level;
+ static Environment *environments[MAXNESTING];
+
+ public:
+ Stack();
+ static void push(int, int, float, char *);
+ static void pop(int, int, float, char *);
+ static void set(int, int, float, char *);
+ static void relative_set(int, int, float, char *);
+
+ static float get(int, int, char*);
+ static void shutdown();
+ Length *get_length();
+};
diff --git a/support/lametex/src/Token.C b/support/lametex/src/Token.C
new file mode 100644
index 0000000000..a890c39034
--- /dev/null
+++ b/support/lametex/src/Token.C
@@ -0,0 +1,67 @@
+/* Token.C
+ *
+ * The text to be parsed is broken into fundamental units called tokens.
+ * To parse the LaTeX files, the program interprets and handles these tokens.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include "Operator.h"
+#include "Global.h"
+#include "Document.h"
+
+/* Gets a new token from the last line read from a file. If no such line
+ * exists, it gets a new line from the open file. If no file is open, it
+ * opens a new file. If no more files are left to open, returns failure. */
+Token::Token()
+{
+ _valid = FALSE;
+ Global::files->get_token(*this); // Reads a new token from a file
+}
+
+/* Deal correctly with this new token. */
+void Token::handle()
+{
+// cerr << "Token: " << _text << endl;
+ // Look up the appropriate operator from an array of operators.
+ Operator *op = Operator::get_operator(_text);
+ if(op)
+ do
+ op->execute(); // Execute the operator.
+ while((++op)->isvalid() && op->match(_text));
+ else {
+ if(_text[0] == '\\' && // Found unknown command and not in a comment
+ !Stack::get(Environment::PDocument, Document::Comment, "")) {
+ char message[MAXSTRING]; // It's a LaTeX command I don't understand!
+ sprintf(message,"Skipping unknown LaTeX command %s", _text);
+ Global::files->warning(message);
+ return;
+ }
+ Operator::plaintext(_text); // If no operator, it must be plain text.
+ }
+}
+
+int Token::isvalid()
+{
+ return(_valid);
+}
+
+void Token::make_text(char *token_text)
+{
+ strcpy(_text,token_text);
+ _valid = TRUE;
+}
+
+int Token::match(char *str)
+{
+ return !strcmp(str,_text);
+}
+
+char *Token::get_text()
+{
+ return _text;
+}
diff --git a/support/lametex/src/Token.h b/support/lametex/src/Token.h
new file mode 100644
index 0000000000..ebf5e151e9
--- /dev/null
+++ b/support/lametex/src/Token.h
@@ -0,0 +1,26 @@
+/* Token.h
+ *
+ * The text to be parsed is broken into fundamental units called tokens.
+ * To parse the LaTeX files, the program interprets and handles these tokens.
+ *
+ * Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+ * edit and use as long as this copyright statement remains intact.
+ *
+ */
+
+#include "LameTeX.h"
+
+class Token {
+ char _text[MAXSTRING];
+ int _valid;
+ static int _comment; // Is this token placed inside a comment?
+
+ public:
+ Token(); // Retrieve a new token from a file.
+
+ void handle(); // Deal with this token appropriately.
+ int isvalid(); // Is this token valid?
+ void make_text(char *);
+ char *get_text();
+ int match(char *);
+};
diff --git a/support/lametex/src/breakpath.ps b/support/lametex/src/breakpath.ps
new file mode 100644
index 0000000000..ebc63744c6
--- /dev/null
+++ b/support/lametex/src/breakpath.ps
@@ -0,0 +1,190 @@
+%! This is a PostScript library meant to be included in other files %%%
+%% Postscript Code by Jon Monsarrat Copyright 1991
+%% permission given for anything except selling this or deleting the header.
+%%%%%%%%%%% - Approx array %%%%%%%%%%%%%%%%%
+% Approx flattens a path into a series of lines.
+% This new flattened path is returned as a triple-array path representation.
+% The path is broken into sub-paths which have a double-array representation.
+% Each sub-path breaks into vertices which have a single-array representation.
+% Each vertex is of the form X Y. We're doing a fill here so any
+% unclosed subpaths get closed. That's how postscript normally handles fill.
+% It would be easier to use [ X Y ] vertices, but that would waste memory!
+/Approx
+ {
+ [ [ { /Y exch def /X exch def ] [ X Y }
+ { } { } { X Y } pathforall ] ]
+ } bind def
+
+%%%%%%%%%%%%%%%%%%% array num bool SortArray array %%%%%%%%%%%%%%%
+% SortArray bubble sorts "array" of packets in increasing order, packets are
+% groups of numbers and a packet is of size "num". Sorting is done based
+% on the value of the first item in each packet. When sorting is done,
+% SortArray goes through and deletes all equal packets if "bool" is true.
+/SortArray
+{
+ 10 dict begin
+ /DelEquals exch def /Pack exch def
+ /newlist exch def
+ 0 Pack newlist length 2 Pack mul sub
+ {
+ /anum exch def
+ anum Pack add Pack newlist length 1 Pack mul sub
+ {
+ /bnum exch def
+ newlist anum get newlist bnum get ge
+ {
+ /flag true def
+ newlist anum get newlist bnum get eq Pack 2 eq and
+ {
+ /flag false def
+ newlist anum 1 add get newlist bnum 1 add get add 0 eq
+ {
+ newlist anum 1 add get 1 eq ontop xor { /flag true def } if
+ } if
+ } if
+ flag
+ {
+ 0 1 Pack 1 sub
+ {
+ /ind exch def
+ /temp newlist anum ind add get def
+ newlist anum ind add newlist bnum ind add get put
+ newlist bnum ind add temp put
+ } for
+ } if
+ } if
+ } for
+ } for
+
+ DelEquals % if this boolean is true, delete all equal packs
+ {
+ [
+ 0 Pack newlist length 2 Pack mul sub
+ {
+ /anum exch def
+ newlist anum get newlist anum Pack add get ne
+ {
+ 0 1 Pack 1 sub
+ {
+ anum add newlist exch get
+ } for
+ } if
+ } for
+ 0 1 Pack 1 sub
+ {
+ /ind exch def
+ newlist newlist length Pack sub ind add get
+ } for
+ ]
+ }
+ {
+ newlist
+ } ifelse
+ end % temp dict 10
+} bind def
+
+%%%%%%%%%%%%%%%%%% bool CheeseY X1 W1 or nothing %%%%%%%%%%
+% CheeseY uses defined variables Y1 (a number), oldx, oldy, newx, newy.
+% CheeseY asks "does the line segment bounded by oldxy, newxy cross y=Y1?
+% If so, CheeseY leaves X1 W on the stack, where (X1,Y1) is the point of
+% intersection. The winding value W is calculated from the sign of the slope.
+% CheeseY takes one argument which is a boolean value. This boolean is
+% true is the Y1 value is "on top" of the region of interest, false if "below".
+% This is to deal correctly with line segments which end on the y=Y1 line.
+% These special line segments are ignored if they don't pass through the
+% region of interest. It would be easier to use [ X W ] but memory wasteful.
+/CheeseY
+{
+ /top exch def
+ oldy newy 2 copy gt { exch } if
+ Y1 ge exch Y1 le and
+ {
+ oldy newy ne
+ {
+ oldx newx sub oldy newy sub div
+ oldy Y1 sub mul oldx exch sub
+ oldy newy lt { 1 } { -1 } ifelse
+ }
+ {
+ newx 0
+ } ifelse
+
+ % If the line segment does NOT go through region of interest
+ % but rather just happens to end on line y=Y1, don't use it.
+ oldy Y1 eq
+ {
+ dup top { -1 } { 1 } ifelse ne { pop pop } if
+ }
+ {
+ newy Y1 eq
+ {
+ dup top { 1 } { -1 } ifelse ne { pop pop } if
+ } if
+ } ifelse
+ } if
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%% array num bool CheeseWhiz array %%%%%%%%%%%%%%%%%
+% CheeseWhiz traverses the flattened path as computed by Approx to find
+% any points of intersection with the line y=Y1, where Y1 is it's num argument.
+% It's boolean argument is true if y=Y1 bounds the region of interest "on top".
+% For all points of intersection X1 goes on the stack, where [ X1 Y1 ]
+% is the point, BUT ONLY IF the winding value or evenodd calculation says
+% to. The winding value is complex and calculated from the sign of the slope.
+% CheeseWhiz does this by breaking the path into line segments and passing
+% it to CheeseY. The final array of X1 values is sorted, keeping duplicates.
+/CheeseWhiz
+{
+ 15 dict begin
+ /ontop exch def
+ /Y1 exch def
+ [ exch
+ {
+ /oldx (Begin) def
+ /flag false def
+ {
+ flag
+ {
+ /newy exch def
+ oldx (Begin) eq
+ { /firstx newx def /firsty newy def} { ontop CheeseY } ifelse
+ /oldx newx def /oldy newy def
+ }
+ {
+ /newx exch def
+ } ifelse
+ /flag flag not def
+ } forall
+ oldx (Begin) ne
+ {
+ /newx firstx def % Even if the subpath is not closed, PostScript
+ /newy firsty def % fill methodology says close it. So wrap around.
+ ontop CheeseY
+ } if
+ } forall
+ ]
+ % Sort the array of X W values
+ 2 false SortArray
+ % Now go through and take out X's where there is no inside/outside change
+ [ exch
+ fillout { LM exch } if
+ /winding 0 def
+ /inside false def % always start off outside
+ /flag false def
+ {
+ flag
+ {
+ winding add /winding exch def
+ evenodd not
+ {
+ winding 0 eq inside xor
+ { pop } { /inside inside not def } ifelse
+ } if
+ } if
+ /flag flag not def
+ } forall
+ fillout { RM } if
+ ]
+ end % temp dict 15
+} def
+%% End of PostScript Path-breaking Library
diff --git a/support/lametex/src/example1.ps b/support/lametex/src/example1.ps
new file mode 100644
index 0000000000..c381eb63af
--- /dev/null
+++ b/support/lametex/src/example1.ps
@@ -0,0 +1,1722 @@
+%!PS-Adobe-2.0
+%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
+%%Title: lametex.dvi
+%%Pages: 1 1
+%%BoundingBox: 0 0 612 792
+%%EndComments
+%%BeginProcSet: tex.pro
+/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
+load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
+isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
+Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
+round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
+N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
+/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
+statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
+/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
+/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
+/BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2
+array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
+B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
+setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup
+length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{
+ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B
+/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
+N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N
+
+/FMat [ 0.24 0 0 0.24 0 0 ] def
+/CharBuilder % fontdict ascii
+{
+ 1 index % fontdict ascii fontdict
+ /base get % fontdict ascii base
+ exch get % fontdict asciiequiv
+ exch /BitMaps get % asciiequiv BitMaps
+ exch get % bitmapstring
+ % ch-data becomes the bitmapstring for the ascii character
+ /ch-data exch def %
+ /ctr 0 def
+ % The next line is the "ch-dx" algorithm
+ ch-data dup length 1 sub get % ch-data last-char
+ 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
+ setcachedevice
+ ch-width ch-height true
+ [ 1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add ]
+ { ch-image } imagemask
+} bind def
+
+ /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr
+put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf
+div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook
+known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore
+showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
+known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
+array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N
+/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
+/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0
+7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
+TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
+-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{
+moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{
+S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B
+/j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w
+}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
+a}B /bos{/SS save N}B /eos{clear SS restore}B end
+%%EndProcSet
+TeXDict begin 1000 300 300 @start /Fa 26 118 df<3803807C07C0FE0FE0FF0FF0FF0FF0
+7F07F03B03B00300300300300700700600600600600C00C01C01C018018070070020020014117E
+A21D>34 D<387CFEFEFE7C3807077C8610>46 D<00FE0007FFC00F83E01F01F03E00F83E00F87C
+007C7C007C7C007CFC007CFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC
+007EFC007EFC007EFC007E7C007C7C007C7C007C3E00F83E00F81F01F00F83E007FFC000FE0017
+207E9F1C>48 D<00180000780001F800FFF800FFF80001F80001F80001F80001F80001F80001F8
+0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
+0001F80001F80001F80001F80001F80001F8007FFFE07FFFE013207C9F1C>I<03FC000FFF003C
+1FC07007E07C07F0FE03F0FE03F8FE03F8FE01F87C01F83803F80003F80003F00003F00007E000
+07C0000F80001F00003E0000380000700000E01801C0180380180700180E00380FFFF01FFFF03F
+FFF07FFFF0FFFFF0FFFFF015207D9F1C>I<00FE0007FFC00F07E01E03F03F03F03F81F83F81F8
+3F81F81F03F81F03F00003F00003E00007C0001F8001FE0001FF000007C00001F00001F80000FC
+0000FC3C00FE7E00FEFF00FEFF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC001FE0017207E
+9F1C>I<0000E00001E00003E00003E00007E0000FE0001FE0001FE00037E00077E000E7E001C7
+E00187E00307E00707E00E07E00C07E01807E03807E07007E0E007E0FFFFFEFFFFFE0007E00007
+E00007E00007E00007E00007E00007E000FFFE00FFFE17207E9F1C>I<1000201E01E01FFFC01F
+FF801FFF001FFE001FF8001BC00018000018000018000018000019FC001FFF001E0FC01807E018
+03E00003F00003F00003F80003F83803F87C03F8FE03F8FE03F8FC03F0FC03F07007E03007C01C
+1F800FFF0003F80015207D9F1C>I<001F8000FFE003F07007C0F00F01F81F01F83E01F83E01F8
+7E00F07C00007C0000FC0800FC7FC0FCFFE0FD80F0FF00F8FE007CFE007CFC007EFC007EFC007E
+FC007E7C007E7C007E7C007E3C007C3E007C1E00F80F00F00783E003FFC000FF0017207E9F1C>
+I<6000007800007FFFFE7FFFFE7FFFFC7FFFF87FFFF87FFFF0E00060E000C0C00180C00300C003
+00000600000C00001C0000180000380000780000780000F00000F00000F00001F00001F00001F0
+0003F00003F00003F00003F00003F00003F00003F00001E00017227DA11C>I<00FE0003FFC006
+01E00C00701800701800383800383C00383F00383F80783FE0701FF8E01FFFC00FFF8007FFC003
+FFE007FFF01E7FF83C1FFC7807FC7801FEF000FEF0003EF0001EF0001EF0001CF8001C7800383C
+00381F01F00FFFC001FF0017207E9F1C>I<01FE0007FF800F83E01E01F03E00F07C00F87C0078
+FC007CFC007CFC007CFC007EFC007EFC007EFC007E7C00FE7C00FE3E01FE1E037E0FFE7E07FC7E
+00207E00007C00007C1E007C3F00F83F00F83F00F03F01E01E03C01C0F800FFE0003F80017207E
+9F1C>I<0400400E00E0180180380380300300600600600600E00E00C00C00C00C00DC0DC0FE0F
+E0FF0FF0FF0FF07F07F03E03E01C01C014117AA21D>92 D<07FC001FFF803F07C03F03E03F01E0
+3F01F01E01F00001F00001F0003FF003FDF01FC1F03F01F07E01F0FC01F0FC01F0FC01F0FC01F0
+7E02F07E0CF81FF87F07E03F18167E951B>97 D<00FF8007FFE00F83F01F03F03E03F07E03F07C
+01E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00007E00003E00301F00600F
+C0E007FF8000FE0014167E9519>99 D<0001FE000001FE0000003E0000003E0000003E0000003E
+0000003E0000003E0000003E0000003E0000003E0000003E0000003E0001FC3E0007FFBE000F81
+FE001F007E003E003E007E003E007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC
+003E00FC003E00FC003E007C003E007C003E003E007E001E00FE000F83BE0007FF3FC001FC3FC0
+1A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8FFFFF8FFFF
+F8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003FFC000FF0015167E951A
+>I<03FC1E0FFF7F1F0F8F3E07CF3C03C07C03E07C03E07C03E07C03E07C03E03C03C03E07C01F
+0F801FFF0013FC003000003000003800003FFF801FFFF00FFFF81FFFFC3800FC70003EF0001EF0
+001EF0001EF0001E78003C7C007C3F01F80FFFE001FF0018217E951C>103
+D<FF000000FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00
+00001F0000001F0000001F0000001F07E0001F1FF8001F307C001F403C001F803E001F803E001F
+003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E00
+1F003E001F003E001F003E001F003E00FFE1FFC0FFE1FFC01A237EA21F>I<1C003F007F007F00
+7F003F001C000000000000000000000000000000FF00FF001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B247EA310>I<FF00FF001F001F
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
+1F001F001F001F001F001F001F001F001F001F00FFE0FFE00B237EA210>108
+D<FF07F007F000FF1FFC1FFC001F303E303E001F403E403E001F801F801F001F801F801F001F00
+1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
+1F001F00FFE0FFE0FFE0FFE0FFE0FFE02B167E9530>I<FF07E000FF1FF8001F307C001F403C00
+1F803E001F803E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E
+001F003E001F003E001F003E001F003E001F003E001F003E00FFE1FFC0FFE1FFC01A167E951F>
+I<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC00
+7EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE0017167E951C>I<01800001
+80000180000180000380000380000780000780000F80003F8000FFFF00FFFF000F80000F80000F
+80000F80000F80000F80000F80000F80000F80000F80000F80000F81800F81800F81800F81800F
+81800F830007C30003FE0000F80011207F9F16>116 D<FF01FE00FF01FE001F003E001F003E00
+1F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E
+001F003E001F003E001F003E001F007E001F00FE000F81BE0007FF3FC001FC3FC01A167E951F>
+I E /Fb 33 120 df<1C0038007F00FE00FF81FF00FF81FF00FFC1FF80FFC1FF80FFC1FF807FC0
+FF801CC0398000C0018000C0018001C0038001800300018003000380070007000E0006000C000E
+001C001C003800380070003000600019157EA924>34 D<1C007F00FF80FF80FF80FF80FF807F00
+1C0009097B8813>46 D<003F800001FFF00007E0FC000FC07E001F803F001F803F003F001F803F
+001F807F001FC07F001FC07F001FC07F001FC0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0
+FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001F
+E07F001FC07F001FC07F001FC07F001FC03F001F803F001F801F803F001F803F000FC07E0007E0
+FC0001FFF000003F80001B277DA622>48 D<000E00001E00007E0007FE00FFFE00FFFE00F8FE00
+00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
+00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
+00FE0000FE0000FE007FFFFE7FFFFE7FFFFE17277BA622>I<00FF800003FFF0000FFFFC003F03
+FF007C00FF807C007FC0FE007FC0FF003FE0FF003FE0FF003FE0FF001FE07E001FE03C003FE000
+003FE000003FC000003FC000007F8000007F800000FF000001FE000001FC000003F0000007E000
+000FC000001F0000003E0000007C00E0007800E000F000E001E001C0038001C0070001C00FFFFF
+C01FFFFFC03FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F800003FFF0
+0007FFFC001F81FE001F00FF003F80FF003F807F803FC07F803F807F803F807F801F007F800000
+FF800000FF000000FF000001FE000003F8000007F00000FFC00000FFF0000001FC000000FF0000
+007F8000007FC000003FC000003FE000003FE000003FE03C003FE07E003FE0FF003FE0FF003FE0
+FF003FC0FF007FC0FE007F807C00FF803F01FF001FFFFC0007FFF00000FF80001B277DA622>I<
+00000E0000001E0000003E0000007E000000FE000000FE000001FE000003FE0000077E00000E7E
+00000E7E00001C7E0000387E0000707E0000E07E0000E07E0001C07E0003807E0007007E000E00
+7E000E007E001C007E0038007E0070007E00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE0000
+00FE000000FE000000FE000000FE000000FE000000FE000000FE00007FFFF8007FFFF8007FFFF8
+1D277EA622>I<0C0003000F803F000FFFFE000FFFFE000FFFFC000FFFF8000FFFE0000FFFC000
+0FFE00000E0000000E0000000E0000000E0000000E0000000E0000000E7FC0000FFFF8000F80FE
+000E007F000C003F8000003F8000001FC000001FC000001FE000001FE018001FE07E001FE0FE00
+1FE0FE001FE0FE001FE0FE001FE0FE001FC078003FC078003F803C007F001F01FE000FFFFC0003
+FFF00000FF80001B277DA622>I<0007F000003FFC0000FFFF0001FC0F0007F01F800FE03F800F
+C03F801FC03F803F803F803F801F007F8000007F0000007F0000007F000000FF000000FF0FC000
+FF3FF800FF70FE00FFE03F00FFC03F80FF801FC0FF801FC0FF801FC0FF001FE0FF001FE0FF001F
+E0FF001FE07F001FE07F001FE07F001FE07F001FE03F801FC03F801FC01F803F800FC03F8007E0
+FF0003FFFC0000FFF000003FC0001B277DA622>I<380000003E0000003FFFFFF03FFFFFF03FFF
+FFF07FFFFFE07FFFFFC07FFFFFC07FFFFF8070000F0070001E0070003C00E0003800E0007800E0
+00F0000001E0000003C0000003C0000007800000078000000F0000001F0000001F0000001F0000
+003F0000003F0000003E0000007E0000007E0000007E0000007E000000FE000000FE000000FE00
+0000FE000000FE000000FE000000FE000000FE000000FE0000003800001C297CA822>I<003FC0
+0001FFF00003FFFC000FC07E000F003F001F001F001E001F803E000F803E000F803F000F803F80
+0F803FC01F803FF01F003FFC3F001FFE7E001FFFF8000FFFE00007FFF80001FFFC0001FFFF0007
+FFFF801F8FFF803F03FFC07E01FFC07C007FE0FC001FE0F8000FE0F80007E0F80003E0F80003E0
+F80003E0FC0003C07C0007C07E0007803F000F801FC03F000FFFFC0003FFF800007FC0001B277D
+A622>I<007F800001FFF00007FFF8000FE0FE001FC07E003F803F007F003F807F003F80FF001F
+C0FF001FC0FF001FC0FF001FC0FF001FE0FF001FE0FF001FE0FF001FE07F003FE07F003FE07F00
+3FE03F807FE01F80FFE00FE1DFE003FF9FE0007E1FE000001FE000001FC000001FC000001FC000
+003FC01F003F803F803F803F807F003F807F003F80FE003F01FC001E03F8000FFFE00007FF8000
+01FE00001B277DA622>I<0000FFE000000007FFFC0000003FC07F8000007F001FC00001FC0007
+F00003F80003F80007F00001FC000FF00001FE001FE00000FF001FE00000FF003FC000007F803F
+C000007F807FC000007FC07F8000003FC07F8000003FC07F8000003FC0FF8000003FE0FF800000
+3FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF
+8000003FE0FF8000003FE07F8000003FC07FC000007FC07FC000007FC03FC000007F803FC00000
+7F801FE00000FF001FE00000FF000FF00001FE0007F00001FC0003F80003F80001FC0007F00000
+FF001FE000003FC07F8000000FFFFE00000000FFE000002B297CA834>79
+D<FFFFE07FFFF007FFF0FFFFE07FFFF007FFF0FFFFE07FFFF007FFF003FC0001FE00001C0003FC
+0001FE00001C0001FE0001FF0000380001FE0000FF0000380001FF0000FF0000780000FF0000FF
+8000700000FF0000FF8000700000FF8000FF8000F000007F8001FFC000E000007F8001FFC000E0
+00003FC003FFE001C000003FC0039FE001C000003FE0039FE003C000001FE0070FF0038000001F
+E0070FF0038000001FF00F0FF0078000000FF00E07F8070000000FF00E07F80700000007F81E07
+FC0E00000007F81C03FC0E00000007FC1C03FC1E00000003FC3801FE1C00000003FC3801FE1C00
+000001FE7801FF3800000001FE7000FF3800000001FE7000FF3800000000FFF000FFF000000000
+FFE0007FF000000000FFE0007FF0000000007FC0003FE0000000007FC0003FE0000000003FC000
+3FC0000000003F80001FC0000000003F80001FC0000000001F80001F80000000001F00000F8000
+0000001F00000F80000000000E00000700000044297FA847>87 D<0300060007000E000E001C00
+1C00380018003000380070007000E0006000C0006000C000E001C000C0018000C0018000CE019C
+00FF81FF00FFC1FF80FFC1FF80FFC1FF807FC0FF807FC0FF803F807F000E001C00191578A924>
+92 D<01FF800007FFF0000F81FC001FC0FE001FC07F001FC07F001FC03F800F803F8000003F80
+00003F8000003F80000FFF8000FFFF8007FC3F801FE03F803F803F807F803F807F003F80FE003F
+80FE003F80FE003F80FE007F80FF007F807F00FFC03F83DFFC0FFF0FFC01FC03FC1E1B7E9A21>
+97 D<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE00000000FE00000000F
+E00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000000
+0FE1FE00000FE7FF80000FFE07E0000FF803F8000FF001FC000FE000FE000FE000FE000FE0007F
+000FE0007F000FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE000
+7F800FE0007F800FE0007F800FE0007F000FE000FF000FE000FE000FF000FE000FF001FC000FF8
+03F8000F9E07E0000F0FFF80000E01FC0000212A7EA926>I<001FF80000FFFE0003F01F000FE0
+3F801FC03F803F803F803F803F807F801F007F000000FF000000FF000000FF000000FF000000FF
+000000FF000000FF000000FF000000FF0000007F0000007F8000003F8001C03FC001C01FC003C0
+0FE0078003F01F0000FFFC00001FE0001A1B7E9A1F>I<00003FF80000003FF80000003FF80000
+0003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F800
+000003F800000003F800000003F800000003F800001FE3F80000FFFBF80003F03FF8000FE00FF8
+001FC007F8003F8003F8003F8003F8007F8003F8007F0003F800FF0003F800FF0003F800FF0003
+F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F00
+03F8003F8003F8003F8007F8001FC00FF8000FE01FF80003F03FFF8000FFF3FF80003FC3FF8021
+2A7EA926>I<003FE00001FFF80003F07E000FE03F001FC01F803F800FC03F800FC07F000FC07F
+0007E0FF0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF000000FF000000
+7F0000007F8000003F8000E03F8001E01FC001C00FE003C003F81F8000FFFE00001FF0001B1B7E
+9A20>I<0007F0003FFC00FE3E01FC7F03F87F03F87F07F07F07F03E07F00007F00007F00007F0
+0007F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F0
+0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
+0007F0007FFF807FFF807FFF80182A7EA915>I<FFE0000000FFE0000000FFE00000000FE00000
+000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000
+00000FE00000000FE00000000FE00000000FE07F00000FE1FFC0000FE787E0000FEE07F0000FFC
+03F8000FF803F8000FF003F8000FF003F8000FF003F8000FE003F8000FE003F8000FE003F8000F
+E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800
+0FE003F8000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80212A7DA9
+26>104 D<07001FC01FE03FE03FE03FE01FE01FC007000000000000000000000000000000FFE0
+FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
+E00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>I<FFE00000FFE00000FFE000000FE000000FE000
+000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0
+00000FE01FFC0FE01FFC0FE01FFC0FE007C00FE00F800FE01E000FE07C000FE0F8000FE1F0000F
+E3E0000FE7C0000FEFE0000FFFF0000FFFF0000FFFF8000FF3FC000FE1FE000FC0FE000FC0FF00
+0FC07F800FC03F800FC03FC00FC01FE00FC00FF0FFFC3FFEFFFC3FFEFFFC3FFE1F2A7EA924>
+107 D<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
+0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
+E00FE0FFFEFFFEFFFE0F2A7DA914>I<FFC07F800FF000FFC1FFE03FFC00FFC783F0F07E000FCE
+03F9C07F000FDC01FB803F000FF801FF003F800FF001FE003F800FF001FE003F800FF001FE003F
+800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001
+FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F80
+0FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F80FFFE1FFFC3FFF8FFFE1FFF
+C3FFF8FFFE1FFFC3FFF8351B7D9A3C>I<003FE00001FFFC0003F07E000FC01F801F800FC03F80
+0FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF
+0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800FE01F800FC00FC01F8007F07F00
+01FFFC00003FE0001D1B7E9A22>111 D<FFE1FE0000FFE7FF8000FFFE07E0000FF803F8000FF0
+01FC000FE001FE000FE000FE000FE000FF000FE000FF000FE0007F800FE0007F800FE0007F800F
+E0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE000FF000FE000FF00
+0FE000FE000FF001FE000FF003FC000FF803F8000FFE0FE0000FEFFF80000FE1FC00000FE00000
+000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000
+0000FFFE000000FFFE000000FFFE00000021277E9A26>I<FFC1F0FFC7FCFFCE3E0FDC7F0FD87F
+0FF87F0FF07F0FF03E0FF0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000
+0FE0000FE0000FE0000FE0000FE0000FE000FFFF00FFFF00FFFF00181B7E9A1C>114
+D<03FE300FFFF03E03F07800F07000F0F00070F00070F80070FC0000FFE000FFFE007FFFC03FFF
+E01FFFF007FFF800FFFC0003FC0000FCE0007CE0003CF0003CF0003CF80078FC0078FF01F0F7FF
+C0C1FF00161B7E9A1B>I<00700000700000700000700000F00000F00000F00001F00003F00003
+F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F00007F00007F00007F00007F00007F00007
+F00007F00007F00007F00007F00007F03807F03807F03807F03807F03807F03807F03803F87001
+F8F000FFE0001F8015267FA51B>I<FFE03FF800FFE03FF800FFE03FF8000FE003F8000FE003F8
+000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
+F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
+07F8000FE007F8000FE00FF80007E01FF80003F03BFF8001FFF3FF80003FC3FF80211B7D9A26>
+I<FFFE7FFC0FFEFFFE7FFC0FFEFFFE7FFC0FFE0FE007E000E007F003F001C007F003F001C007F8
+07F803C003F807F8038003F807F8038001FC0EFC070001FC0EFC070001FE1EFC0F0000FE1C7E0E
+0000FE1C7E0E0000FF383F1E00007F383F1C00007F783F3C00003FF01FB800003FF01FB800003F
+F01FF800001FE00FF000001FE00FF000000FC007E000000FC007E000000FC007E00000078003C0
+0000078003C0002F1B7F9A32>119 D E /Fc 23 122 df<07E00001F8001FF80007FE003FFC00
+0FFF007FFE001FFF807FFF001FFFC0FFFF003FFFC0FFFF803FFFE0FFFF803FFFE0FFFF803FFFE0
+FFFFC03FFFF0FFFFC03FFFF07FFFC01FFFF07FFFC01FFFF03FFFC00FFFF01FFBC007FEF007E3C0
+01F8F00003C00000F00003C00000F00007800001E00007800001E00007800001E0000F000003C0
+000F000003C0000F000003C0001E00000780003E00000F80003C00000F00007C00001F0000F800
+003E0001F000007C0003E00000F80007E00001F8000FC00003F0001F800007E0001E0000078000
+0C00000300002C247CC73E>34 D<07E00FF03FFC3FFC7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE3F
+FC3FFC0FF007E01010788F21>46 D<00001FF800000001FFFF80000007FFFFE000001FFFFFF800
+003FF81FFC0000FFE007FF0001FF8001FF8003FF0000FFC003FF0000FFC007FE00007FE007FE00
+007FE00FFC00003FF00FFC00003FF01FFC00003FF81FFC00003FF83FFC00003FFC3FF800001FFC
+3FF800001FFC7FF800001FFE7FF800001FFE7FF800001FFE7FF800001FFE7FF800001FFE7FF800
+001FFEFFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFF
+FFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800
+001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFFFFF800001FFF
+FFF800001FFFFFF800001FFF7FF800001FFE7FF800001FFE7FF800001FFE7FF800001FFE7FF800
+001FFE7FF800001FFE3FF800001FFC3FFC00003FFC3FFC00003FFC1FFC00003FF81FFC00003FF8
+1FFC00003FF80FFC00003FF00FFE00007FF007FE00007FE003FF0000FFC003FF8001FFC001FFC0
+03FF8000FFE007FF00007FF81FFE00001FFFFFF8000007FFFFE0000001FFFF800000001FF80000
+30457BC33B>48 D<000001E00000000003F0000000000FF0000000003FF000000000FFF0000000
+0FFFF0000003FFFFF00000FFFFFFF00000FFFFFFF00000FFFFFFF00000FFF0FFF00000FC00FFF0
+00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000
+00FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0
+00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000
+00FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0
+00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000
+00FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0
+00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000
+00FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000003FFFFFFF
+FFC03FFFFFFFFFC03FFFFFFFFFC03FFFFFFFFFC03FFFFFFFFFC02A4478C33B>I<0000FFE00000
+000FFFFE0000003FFFFFC00000FFFFFFF00003FFFFFFFC0007FC01FFFE000FE0007FFF001FC000
+1FFF803F80000FFFC03FE00007FFE07FF80007FFE07FFC0003FFF0FFFC0003FFF0FFFE0001FFF8
+FFFE0001FFF8FFFE0001FFF8FFFE0000FFFCFFFE0000FFFC7FFC0000FFFC7FFC0000FFFC3FF800
+00FFFC1FF00000FFFC0FE00000FFFC00000001FFFC00000001FFF800000001FFF800000001FFF0
+00000003FFF000000003FFE000000003FFE000000007FFC000000007FF800000000FFF80000000
+1FFF000000001FFE000000003FFC000000007FF8000000007FE000000000FFC000000001FF8000
+000003FF0000000007FC000000000FF8000000001FF0000000003FC0000000007F80007C0000FF
+00007C0000FE00007C0001FC00007C0003F00000F80007E00000F8000FC00000F8001F800000F8
+003F000001F8007C000003F800FFFFFFFFF801FFFFFFFFF003FFFFFFFFF007FFFFFFFFF00FFFFF
+FFFFF01FFFFFFFFFF03FFFFFFFFFF07FFFFFFFFFF07FFFFFFFFFF0FFFFFFFFFFE0FFFFFFFFFFE0
+FFFFFFFFFFE0FFFFFFFFFFE02E447AC33B>I<00007FF800000003FFFF8000000FFFFFF000003F
+FFFFFC0000FFC03FFF0001FE000FFF8003F80007FFC003F00003FFE007F80003FFE00FFE0003FF
+F00FFF0001FFF00FFF8001FFF81FFF8001FFF81FFF8001FFF81FFF8001FFF81FFF8001FFF81FFF
+8001FFF80FFF8001FFF80FFF0003FFF007FF0003FFF003FE0003FFF001F80003FFE000000003FF
+E000000007FFC000000007FF800000000FFF000000001FFE000000001FFC000000007FF8000000
+01FFE0000001FFFF80000001FFFE00000001FFFFC0000001FFFFF0000000003FFC000000000FFF
+0000000007FFC000000003FFE000000003FFF000000001FFF800000001FFF800000001FFFC0000
+0000FFFC00000000FFFE00000000FFFE03C00000FFFF0FF00000FFFF3FFC0000FFFF3FFC0000FF
+FF7FFE0000FFFF7FFE0000FFFFFFFF0000FFFFFFFF0000FFFFFFFF0000FFFEFFFF0000FFFEFFFF
+0000FFFEFFFE0001FFFC7FFE0001FFFC7FFC0001FFF83FF80003FFF83FE00003FFF01FC00007FF
+E00FF8000FFFC007FF803FFF8003FFFFFFFE0000FFFFFFFC00003FFFFFF0000007FFFF80000000
+7FF8000030457BC33B>I<000000000F8000000000001FC000000000003FC000000000003FC000
+000000007FC00000000000FFC00000000001FFC00000000003FFC00000000003FFC00000000007
+FFC0000000000FFFC0000000001FFFC0000000001FFFC0000000003FFFC0000000007FFFC00000
+0000FFFFC000000001FBFFC000000001F3FFC000000003E3FFC000000007E3FFC00000000FC3FF
+C00000001F83FFC00000001F03FFC00000003E03FFC00000007E03FFC0000000FC03FFC0000001
+F803FFC0000001F003FFC0000003E003FFC0000007E003FFC000000FC003FFC000001F8003FFC0
+00001F0003FFC000003E0003FFC000007E0003FFC00000FC0003FFC00000F80003FFC00001F000
+03FFC00003F00003FFC00007E00003FFC0000FC00003FFC0000F800003FFC0001F000003FFC000
+3F000003FFC0007E000003FFC000FC000003FFC000FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFF
+FFFFF0FFFFFFFFFFFFF0FFFFFFFFFFFFF000000007FFC00000000007FFC00000000007FFC00000
+000007FFC00000000007FFC00000000007FFC00000000007FFC00000000007FFC00000000007FF
+C00000000007FFC00000000007FFC00000000007FFC00000007FFFFFFFF000007FFFFFFFF00000
+7FFFFFFFF000007FFFFFFFF000007FFFFFFFF034447DC33B>I<03000000038007F000001F8007
+FF0003FF8007FFFFFFFF8007FFFFFFFF0007FFFFFFFE0007FFFFFFFC0007FFFFFFF80007FFFFFF
+F00007FFFFFFE00007FFFFFFC00007FFFFFF000007FFFFFE000007FFFFF8000007FFFFC0000007
+DFFC00000007C00000000007C00000000007C00000000007C00000000007C00000000007C00000
+000007C00000000007C00000000007C00000000007C00000000007C07FF8000007C3FFFF000007
+CFFFFFE00007FFFFFFF00007FFC03FFC0007FE000FFE0007F80007FF0007E00007FF8007C00003
+FFC003800003FFE000000003FFE000000001FFF000000001FFF000000001FFF800000001FFF800
+000001FFF800000001FFF800000001FFFC07800001FFFC1FE00001FFFC3FF00001FFFC7FF80001
+FFFC7FF80001FFFCFFFC0001FFFCFFFC0001FFFCFFFC0001FFFCFFFC0001FFF8FFF80001FFF8FF
+F80001FFF87FF00001FFF07FE00003FFF07F800003FFE03F000003FFE03F000007FFC01F80000F
+FF800FE0001FFF0007F0003FFE0003FE00FFFC0001FFFFFFF80000FFFFFFE000003FFFFF800000
+0FFFFC00000001FFC000002E457AC33B>I<0000007FE000000007FFFC0000003FFFFF000000FF
+FFFF800003FFE03FC00007FF0007E0000FFC0003E0003FF8001FF0007FF0003FF000FFE0007FF8
+00FFC0007FF801FF8000FFF803FF8000FFF807FF0000FFF807FF0000FFF80FFF00007FF00FFE00
+007FF01FFE00003FE01FFE00001FC01FFE000000003FFE000000003FFC000000003FFC00000000
+7FFC000000007FFC004000007FFC07FF80007FFC1FFFF000FFFC3FFFFC00FFFC7FFFFE00FFFCF0
+03FF80FFFDE001FFC0FFFFC000FFE0FFFF80007FE0FFFF80007FF0FFFF00007FF8FFFF00003FF8
+FFFE00003FFCFFFE00003FFCFFFE00003FFEFFFE00003FFEFFFC00003FFEFFFC00003FFFFFFC00
+003FFFFFFC00003FFF7FFC00003FFF7FFC00003FFF7FFC00003FFF7FFC00003FFF7FFC00003FFF
+7FFC00003FFF3FFC00003FFF3FFC00003FFF3FFC00003FFE1FFE00003FFE1FFE00003FFE0FFE00
+003FFC0FFE00003FFC07FE00007FF807FF00007FF803FF00007FF003FF8000FFE001FFC001FFE0
+00FFE003FFC0007FF80FFF80003FFFFFFE00000FFFFFFC000003FFFFF0000000FFFFC00000001F
+FC000030457BC33B>I<1F0000000000001F8000000000001FFF00000000001FFFFFFFFFFF801F
+FFFFFFFFFF801FFFFFFFFFFF801FFFFFFFFFFF803FFFFFFFFFFF003FFFFFFFFFFE003FFFFFFFFF
+FE003FFFFFFFFFFC003FFFFFFFFFF8003FFFFFFFFFF0003FFFFFFFFFE0003FFFFFFFFFC0007FFF
+FFFFFFC0007F0000001F80007E0000003F00007C0000007E00007C000000FC00007C000000F800
+007C000001F80000FC000003F00000F8000007E00000F800000FC00000F800001F800000000000
+1F0000000000003F0000000000007E000000000000FE000000000000FC000000000001FC000000
+000003F8000000000003F8000000000007F8000000000007F000000000000FF000000000000FF0
+00000000001FF000000000001FE000000000003FE000000000003FE000000000007FE000000000
+007FE000000000007FE00000000000FFE00000000000FFE00000000000FFC00000000001FFC000
+00000001FFC00000000001FFC00000000003FFC00000000003FFC00000000003FFC00000000003
+FFC00000000003FFC00000000003FFC00000000007FFC00000000007FFC00000000007FFC00000
+000007FFC00000000007FFC00000000007FFC00000000007FFC00000000007FFC00000000007FF
+C00000000007FFC00000000003FF800000000001FF000000000000FE0000000000007C00000000
+314779C53B>I<00001FFC00000001FFFFC0000007FFFFF000001FFFFFFC00003FC007FF0000FE
+0001FF8001FC00007FC001F800003FE003F000001FE007E000000FF007E000000FF00FE000000F
+F00FE0000007F80FE0000007F81FE0000007F81FF0000007F81FF8000007F81FFC000007F81FFE
+000007F81FFF80000FF01FFFE0000FF01FFFF8000FE00FFFFC001FE00FFFFF003FC00FFFFFC07F
+C007FFFFF0FF8007FFFFFDFE0003FFFFFFFC0003FFFFFFF80001FFFFFFE00000FFFFFFF800007F
+FFFFFC00003FFFFFFF00000FFFFFFF80000FFFFFFFC0003FFFFFFFE000FFFFFFFFF001FF1FFFFF
+F803FE07FFFFF807FC01FFFFFC0FF800FFFFFC1FF0003FFFFE3FE0000FFFFE3FE00003FFFE7FC0
+0001FFFF7FC000007FFF7FC000001FFFFF8000000FFFFF80000007FFFF80000003FFFF80000003
+FFFF80000001FFFF80000001FFFF80000001FEFF80000001FE7FC0000001FE7FC0000001FC7FC0
+000003FC3FE0000003F83FF0000007F81FF800000FF00FFC00001FE007FF00007FC003FFE003FF
+8001FFFFFFFF00007FFFFFFC00001FFFFFF0000007FFFFC00000003FFC000030457BC33B>I<00
+003FF800000003FFFF8000000FFFFFE000003FFFFFF800007FF00FFC0000FFC007FE0003FF8003
+FF0007FF0001FF8007FE0000FFC00FFE0000FFC01FFE00007FE01FFE00007FF03FFC00007FF03F
+FC00007FF87FFC00003FF87FFC00003FF87FFC00003FFCFFFC00003FFCFFFC00003FFCFFFC0000
+3FFEFFFC00003FFEFFFC00003FFEFFFC00003FFEFFFC00003FFEFFFC00003FFFFFFC00003FFFFF
+FC00003FFFFFFC00003FFF7FFC00007FFF7FFC00007FFF7FFC00007FFF3FFC00007FFF3FFC0000
+7FFF1FFC0000FFFF1FFE0000FFFF0FFE0001FFFF07FE0001FFFF07FF0003FFFF03FF8007BFFF00
+FFC00F3FFF007FFFFE3FFF003FFFFC3FFF000FFFF83FFE0001FFE03FFE000002003FFE00000000
+3FFE000000003FFC000000003FFC000000007FFC000000007FFC03F800007FF807FC00007FF80F
+FE00007FF00FFE0000FFF01FFF0000FFE01FFF0000FFE01FFF0001FFC01FFF0001FF801FFE0003
+FF801FFE0007FF000FFC000FFE000FF8001FFC0007F0003FF80007FC01FFF00003FFFFFFC00001
+FFFFFF0000007FFFFC0000001FFFF000000003FF00000030457BC33B>I<FFFFFFFFFFFFE00000
+FFFFFFFFFFFFFE0000FFFFFFFFFFFFFFC000FFFFFFFFFFFFFFF000FFFFFFFFFFFFFFF800001FFF
+800001FFFE00001FFF8000007FFF00001FFF8000003FFF80001FFF8000001FFFC0001FFF800000
+0FFFC0001FFF80000007FFE0001FFF80000007FFF0001FFF80000007FFF0001FFF80000003FFF0
+001FFF80000003FFF8001FFF80000003FFF8001FFF80000003FFF8001FFF80000003FFF8001FFF
+80000003FFF8001FFF80000003FFF8001FFF80000003FFF8001FFF80000003FFF8001FFF800000
+03FFF0001FFF80000007FFF0001FFF80000007FFE0001FFF8000000FFFE0001FFF8000000FFFC0
+001FFF8000001FFF80001FFF8000003FFF00001FFF8000007FFE00001FFF800001FFFC00001FFF
+800007FFF000001FFFFFFFFFFFC000001FFFFFFFFFFE0000001FFFFFFFFFFF8000001FFFFFFFFF
+FFF000001FFF800000FFFC00001FFF8000003FFF00001FFF8000000FFFC0001FFF80000007FFE0
+001FFF80000003FFF0001FFF80000003FFF8001FFF80000001FFF8001FFF80000001FFFC001FFF
+80000000FFFC001FFF80000000FFFE001FFF80000000FFFE001FFF80000000FFFE001FFF800000
+00FFFF001FFF800000007FFF001FFF800000007FFF001FFF800000007FFF001FFF800000007FFF
+001FFF80000000FFFF001FFF80000000FFFF001FFF80000000FFFF001FFF80000000FFFE001FFF
+80000000FFFE001FFF80000001FFFE001FFF80000001FFFC001FFF80000003FFFC001FFF800000
+07FFF8001FFF80000007FFF0001FFF8000001FFFE0001FFF8000003FFFE0001FFF800001FFFF80
+FFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFF000FFFFFFFFFFFFFFC000FFFFFF
+FFFFFFF8000048477CC654>66 D<000C00000300001E00000780007E00001F8000FC00003F0001
+F800007E0001F000007C0003E00000F80007C00001F0000F800003E0000F000003C0001F000007
+C0001E00000780003C00000F00003C00000F00003C00000F00007800001E00007800001E000078
+00001E0000F000003C0000F000003C0000F1F8003C7E00F7FE003DFF80FFFF003FFFC0FFFF803F
+FFE0FFFF803FFFE0FFFFC03FFFF0FFFFC03FFFF07FFFC01FFFF07FFFC01FFFF07FFFC01FFFF03F
+FFC00FFFF03FFF800FFFE01FFF8007FFE00FFF0003FFC007FE0001FF8001F800007E002C2473C7
+3E>92 D<0007FFFC000000007FFFFFC0000001FFFFFFF8000003FFFFFFFE000007FE001FFF0000
+07FF0003FFC0000FFF8001FFE0000FFF8000FFF0000FFF80007FF0000FFF80007FF8000FFF8000
+7FF80007FF00003FFC0007FF00003FFC0003FE00003FFC0000F800003FFC00000000003FFC0000
+0000003FFC00000000003FFC00000000003FFC00000007FFFFFC000000FFFFFFFC000007FFFFFF
+FC00003FFFE03FFC0000FFFE003FFC0003FFF0003FFC0007FFC0003FFC000FFF00003FFC001FFE
+00003FFC003FFC00003FFC007FF800003FFC007FF800003FFC00FFF000003FFC00FFF000003FFC
+00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000007FFC007FF80000FFFC007FF800
+01EFFC003FFC0003EFFC003FFF0007CFFF000FFFC03F8FFFF807FFFFFF07FFFC01FFFFFC03FFFC
+007FFFF001FFFC0003FF80007FF8362E7DAD3A>97 D<00001FFFC0000000FFFFF8000007FFFFFE
+00001FFFFFFF80007FFC00FFC000FFE001FFC001FFC003FFE003FF8003FFE007FF0003FFE00FFE
+0003FFE00FFE0003FFE01FFC0001FFC01FFC0001FFC03FFC0000FF803FFC00003E007FF8000000
+007FF8000000007FF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8
+00000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8000000007FF8000000
+007FF8000000007FFC000000003FFC000000003FFC000000001FFC000000F81FFE000000F80FFE
+000000F80FFF000001F007FF800003F003FFC00007E001FFE0000FC000FFF0001F80007FFE00FF
+00001FFFFFFE000007FFFFF8000000FFFFE00000001FFE00002D2E7CAD35>99
+D<00001FFE00000001FFFFE0000007FFFFF800001FFFFFFE00007FFC07FF0000FFE001FF8001FF
+C0007FC003FF80003FE007FF00003FF00FFE00001FF01FFE00000FF81FFC00000FF83FFC00000F
+FC3FFC000007FC7FFC000007FC7FF8000007FC7FF8000007FE7FF8000007FEFFF8000007FEFFF8
+000007FEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFCFFF800000000FFF8000000
+00FFF800000000FFF8000000007FF8000000007FF8000000007FFC000000003FFC000000003FFC
+000000003FFC0000001C1FFE0000003E0FFE0000003E07FF0000007E07FF000000FC03FF800001
+F801FFC00003F0007FF0001FE0003FFE00FFC0001FFFFFFF800007FFFFFE000000FFFFF8000000
+0FFF80002F2E7DAD36>101 D<007FC00000000000FFFFC00000000000FFFFC00000000000FFFF
+C00000000000FFFFC00000000000FFFFC0000000000003FFC0000000000001FFC0000000000001
+FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000000000
+01FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000000000
+0001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000
+000001FFC0000000000001FFC0000000000001FFC0000000000001FFC001FFC0000001FFC00FFF
+F8000001FFC03FFFFE000001FFC0FFFFFF000001FFC1FC07FF800001FFC3E003FFC00001FFC7C0
+01FFC00001FFCF0001FFE00001FFDE0000FFE00001FFDC0000FFE00001FFFC0000FFF00001FFF8
+0000FFF00001FFF00000FFF00001FFF00000FFF00001FFF00000FFF00001FFE00000FFF00001FF
+E00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001
+FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF000
+01FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0
+0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF
+F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000
+FFF000FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC0
+7FFFFFE03B487CC742>104 D<00FC0001FF0003FF8007FFC00FFFC01FFFE01FFFE01FFFE01FFF
+E01FFFE01FFFE00FFFC007FFC003FF8001FF0000FC000000000000000000000000000000000000
+00000000000000000000000000000000007FC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC003FFC001FF
+C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
+C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
+C001FFC001FFC001FFC001FFC001FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1849
+7CC820>I<007FC001FFC00000FFFFC00FFFF80000FFFFC03FFFFE0000FFFFC0FFFFFF0000FFFF
+C1FC07FF8000FFFFC3E003FFC00003FFC7C001FFC00001FFCF0001FFE00001FFDE0000FFE00001
+FFDC0000FFE00001FFFC0000FFF00001FFF80000FFF00001FFF00000FFF00001FFF00000FFF000
+01FFF00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0
+0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF
+F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000
+FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE000
+00FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0
+0000FFF00001FFE00000FFF00001FFE00000FFF000FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFF
+FFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE03B2E7CAD42>110
+D<00FF803F8000FFFF80FFF000FFFF83FFFC00FFFF87FFFE00FFFF8FC3FF00FFFF8F07FF0003FF
+9E0FFF8001FFBC0FFF8001FFB80FFF8001FFF80FFF8001FFF00FFF8001FFF007FF0001FFF007FF
+0001FFE003FE0001FFE000F80001FFE000000001FFE000000001FFC000000001FFC000000001FF
+C000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000
+0001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FF
+C000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000
+0001FFC000000001FFC0000000FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFF
+FFE00000292E7CAD31>114 D<FFFFFF07FFFFE007FFFEFFFFFF07FFFFE007FFFEFFFFFF07FFFF
+E007FFFEFFFFFF07FFFFE007FFFEFFFFFF07FFFFE007FFFE03FFC0001FFC00003FC003FFE0000F
+FC00001F8001FFE0000FFC00001F0001FFE0000FFE00001F0001FFF00007FE00003F0000FFF000
+0FFF00003E0000FFF8000FFF00007E00007FF8000FFF00007C00007FF8001FFF80007C00003FFC
+001FFF8000F800003FFC003FFFC000F800003FFE003EFFC001F800001FFE003EFFC001F000001F
+FE007EFFE003F000000FFF007C7FE003E000000FFF00FC7FF003E000000FFF80F83FF007E00000
+07FF80F83FF007C0000007FF81F83FF80FC0000003FFC1F01FF80F80000003FFC3F01FFC0F8000
+0003FFE3E00FFC1F80000001FFE3E00FFC1F00000001FFE7E00FFE3F00000000FFF7C007FE3E00
+000000FFFFC007FF3E00000000FFFF8003FF7E000000007FFF8003FF7C000000007FFF8003FFFC
+000000003FFF0001FFF8000000003FFF0001FFF8000000003FFE0000FFF8000000001FFE0000FF
+F0000000001FFE0000FFF0000000000FFC00007FE0000000000FFC00007FE0000000000FF80000
+3FE00000000007F800003FC00000000007F800003FC00000000003F000001F800000000001E000
+000F0000004F2E7DAD56>119 D<7FFFFFC000FFFF807FFFFFC000FFFF807FFFFFC000FFFF807F
+FFFFC000FFFF807FFFFFC000FFFF8000FFF000000FE00000FFF800000FC00000FFF800000FC000
+007FFC00000F8000007FFC00001F8000003FFC00001F0000003FFE00003F0000001FFE00003E00
+00001FFF00007E0000000FFF00007C0000000FFF8000FC00000007FF8000F800000007FFC001F8
+00000003FFC001F000000003FFE003F000000003FFE003F000000001FFF003E000000001FFF007
+E000000000FFF007C000000000FFF80FC0000000007FF80F80000000007FFC1F80000000003FFC
+1F00000000003FFE3F00000000001FFE3E00000000001FFF7E00000000000FFF7C00000000000F
+FFFC00000000000FFFFC000000000007FFF8000000000007FFF8000000000003FFF00000000000
+03FFF0000000000001FFE0000000000001FFE0000000000000FFC0000000000000FFC000000000
+00007F800000000000007F800000000000003F000000000000003F000000000000003F00000000
+0000003E000000000000007E000000000000007C00000000000000FC000000001F8000F8000000
+003FC001F8000000007FE001F000000000FFF003F000000000FFF003E000000000FFF007E00000
+0000FFF00FC000000000FFF01F8000000000FFF03F80000000007FE07F00000000007F43FE0000
+0000003FFFF800000000001FFFF0000000000007FFC0000000000001FE00000000000039427EAD
+3F>121 D E /Fd 20 117 df<0F80007C003FE001FF007FF003FF807FF003FF80FFF807FFC0FF
+F807FFC0FFFC07FFE0FFFC07FFE0FFFC07FFE07FFC03FFE07FFC03FFE03FFC01FFE00F9C007CE0
+001C0000E0001C0000E0003C0001E000380001C000380001C000780003C0007000038000F00007
+8000F000078001E0000F0001C0000E0003C0001E000780003C000F000078001E0000F0003C0001
+E000180000C000231E7DBB34>34 D<0F803FE07FF07FF0FFF8FFF8FFF8FFF8FFF87FF07FF03FE0
+0F800D0D798C1B>46 D<0001FF8000000FFFF000003FFFFC0000FF81FF0001FE007F8003FC003F
+C007F8001FE00FF8001FF00FF0000FF01FF0000FF81FF0000FF83FF0000FFC3FE00007FC3FE000
+07FC7FE00007FE7FE00007FE7FE00007FE7FE00007FE7FE00007FEFFE00007FFFFE00007FFFFE0
+0007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFF
+E00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FF
+FFE00007FF7FE00007FE7FE00007FE7FE00007FE7FE00007FE7FE00007FE3FE00007FC3FF0000F
+FC3FF0000FFC1FF0000FF81FF0000FF80FF0000FF00FF8001FF007F8001FE003FC003FC001FE00
+7F8000FF81FF00003FFFFC00000FFFF0000001FF800028397CB731>48 D<00001E000000003E00
+000000FE00000003FE0000003FFE0000FFFFFE0000FFFFFE0000FFFFFE0000FFCFFE0000000FFE
+0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000F
+FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000
+0FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000
+000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00
+00000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE
+0000000FFE0000000FFE0000000FFE00007FFFFFFFC07FFFFFFFC07FFFFFFFC07FFFFFFFC02238
+79B731>I<0007FE0000007FFFE00001FFFFF80003FFFFFE000FF01FFF001FC007FFC03F0003FF
+E07E0001FFE07FC000FFF07FE000FFF8FFF0007FF8FFF0007FF8FFF0003FFCFFF0003FFCFFF000
+3FFCFFF0003FFC7FE0003FFC7FE0003FFC1F80003FFC0000003FFC0000003FF80000007FF80000
+007FF80000007FF0000000FFE0000000FFE0000001FFC0000003FF80000003FF00000007FE0000
+000FF80000001FF00000001FE00000003F800000007F00000000FE00000001FC00000003F0003C
+0007E0003C000FC0003C001F800078003F000078007C00007800F80000F800F00000F801FFFFFF
+F803FFFFFFF007FFFFFFF00FFFFFFFF01FFFFFFFF03FFFFFFFF07FFFFFFFF0FFFFFFFFF0FFFFFF
+FFE0FFFFFFFFE0FFFFFFFFE026387BB731>I<0003FF8000001FFFF000007FFFFE0000FE03FF00
+03F001FFC007E000FFE007C0007FF00FF0007FF00FFC007FF81FFC007FF81FFE007FF81FFE007F
+F81FFE007FF81FFE007FF81FFE007FF80FFC007FF80FFC007FF003F000FFF0000000FFE0000000
+FFE0000001FFC0000001FF80000003FF00000007FC0000001FF800000FFFC000000FFF8000000F
+FFF800000003FE00000001FF80000000FFE00000007FF00000003FF80000003FFC0000003FFE00
+00001FFE0000001FFE0200001FFF1FC0001FFF3FE0001FFF7FF0001FFFFFF8001FFFFFF8001FFF
+FFF8001FFFFFF8001FFFFFF8001FFEFFF8003FFEFFF0003FFC7FE0003FFC7FC0007FF83F80007F
+F01FE000FFE00FFC03FFC003FFFFFF8001FFFFFE00003FFFF0000007FF800028397CB731>I<00
+000007C0000000000FC0000000000FC0000000001FC0000000003FC0000000007FC000000000FF
+C000000000FFC000000001FFC000000003FFC000000007FFC00000000FFFC00000000FFFC00000
+001EFFC00000003CFFC00000007CFFC0000000F8FFC0000000F0FFC0000001E0FFC0000003C0FF
+C0000007C0FFC000000F80FFC000000F00FFC000001E00FFC000003C00FFC000007C00FFC00000
+F800FFC00000F000FFC00001E000FFC00003C000FFC00007C000FFC0000F8000FFC0000F0000FF
+C0001E0000FFC0003C0000FFC0007C0000FFC000F80000FFC000FFFFFFFFFFC0FFFFFFFFFFC0FF
+FFFFFFFFC0FFFFFFFFFFC0000001FFC000000001FFC000000001FFC000000001FFC000000001FF
+C000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0000007FFFFFFC000
+07FFFFFFC00007FFFFFFC00007FFFFFFC02A377DB631>I<0C000000C00F800007C00FF8007FC0
+0FFFFFFF800FFFFFFF800FFFFFFF000FFFFFFE000FFFFFFC000FFFFFF0000FFFFFE0000FFFFF80
+000FFFFE00000FFFF800000F800000000F800000000F800000000F800000000F800000000F8000
+00000F800000000F800000000F81FF00000F8FFFE0000FBFFFF8000FFE03FE000FF001FF800FC0
+00FFC00F80007FC00F00007FE00700007FF00000003FF00000003FF80000003FF80000003FF800
+00003FFC0000003FFC0600003FFC3F80003FFC7FE0003FFCFFE0003FFCFFF0003FFCFFF0003FFC
+FFF0003FFCFFF0003FF8FFE0003FF8FFE0003FF87FC0007FF07F00007FF07C00007FE03E0000FF
+E01F0001FFC01FC003FF800FF00FFE0003FFFFFC0001FFFFF000007FFFC000000FFC000026397B
+B731>I<00000FF80000007FFF000003FFFF80000FFC07C0001FE003E0007FC001F000FF800FF0
+01FF001FF803FE003FF807FE003FF807FC003FF80FFC003FF81FF8003FF81FF8003FF81FF8001F
+F03FF8000FE03FF80000007FF00000007FF00000007FF00000007FF0000000FFF07FF000FFF1FF
+FE00FFF3F7FF00FFF7807FC0FFF7003FE0FFFE001FF0FFFC001FF8FFFC001FFCFFFC000FFCFFF8
+000FFEFFF8000FFEFFF8000FFEFFF0000FFFFFF0000FFFFFF0000FFFFFF0000FFF7FF0000FFF7F
+F0000FFF7FF0000FFF7FF0000FFF7FF0000FFF3FF0000FFF3FF0000FFF3FF0000FFE1FF8000FFE
+1FF8000FFE0FF8000FFC0FF8001FFC07FC001FF803FE003FF003FF007FE001FF80FFC0007FFFFF
+80003FFFFE000007FFF8000000FFC00028397CB731>I<1E00000000001F00000000001FF00000
+00001FFFFFFFFFC01FFFFFFFFFC01FFFFFFFFFC03FFFFFFFFFC03FFFFFFFFF803FFFFFFFFF003F
+FFFFFFFE003FFFFFFFFC003FFFFFFFF8003FFFFFFFF0007FFFFFFFF0007C000007E0007C00000F
+C0007800001F80007800001F00007800003E0000F000007E0000F00000FC0000F00001F8000000
+0003F00000000003E00000000007E0000000000FC0000000000F80000000001F80000000003F80
+000000003F00000000007F00000000007F0000000000FF0000000000FE0000000001FE00000000
+01FE0000000003FE0000000003FE0000000003FE0000000007FC0000000007FC0000000007FC00
+0000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000001FFC00000000
+1FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00
+0000001FFC000000000FF80000000007F00000000003E00000002A3B7BB931>I<0001FF800000
+0FFFF800003FFFFE0000FF00FF8001F8003FC003F0001FE007E0000FE007E00007F00FC00007F0
+0FC00007F80FC00003F81FC00003F81FE00003F81FE00003F81FF00003F81FF80003F81FFE0007
+F81FFF0007F01FFFC00FF00FFFF00FE00FFFFC1FC00FFFFF3F8007FFFFFF0003FFFFFC0003FFFF
+F80001FFFFFE00007FFFFF00003FFFFFC0003FFFFFE000FFFFFFF003FDFFFFF807F07FFFFC0FE0
+1FFFFC1FC007FFFE3FC001FFFE3F8000FFFE7F00003FFF7F00000FFFFF000007FFFE000001FFFE
+000001FFFE000000FFFE0000007FFE0000007FFE0000007FFF0000007E7F0000007E7F000000FC
+7F800000FC3FC00001F81FE00003F81FF80007F007FE007FC003FFFFFF8000FFFFFE00003FFFF8
+000003FF800028397CB731>I<0001FF8000001FFFF000007FFFFC0000FF81FF0003FE00FF8007
+FC007FC00FF8003FE01FF8001FE03FF8001FF03FF0001FF87FF0000FF87FF0000FFC7FF0000FFC
+FFF0000FFCFFF0000FFEFFF0000FFEFFF0000FFEFFF0000FFEFFF0000FFEFFF0000FFFFFF0000F
+FFFFF0000FFFFFF0000FFFFFF0000FFF7FF0001FFF7FF0001FFF7FF0001FFF3FF0003FFF1FF800
+3FFF1FF8003FFF0FF8007FFF07FC00EFFF03FE01EFFF00FFEFCFFF007FFF8FFF000FFE0FFE0000
+000FFE0000000FFE0000000FFE0000000FFE0000001FFC07F0001FFC0FF8001FFC1FFC001FF81F
+FC001FF81FFC003FF01FFC003FE01FFC007FE01FFC007FC01FF800FF800FF001FF000FC003FE00
+07F01FFC0003FFFFF00001FFFFC000007FFF0000000FF8000028397CB731>I<0000001FFF0000
+70000001FFFFE000F000000FFFFFFC01F000007FFFFFFF03F00001FFFE007F87F00007FFE0000F
+EFF0000FFF000003FFF0003FFE000001FFF0007FF8000000FFF000FFF00000007FF001FFE00000
+003FF003FFC00000001FF003FF800000001FF007FF800000000FF00FFF0000000007F00FFF0000
+000007F01FFE0000000007F01FFE0000000003F03FFC0000000003F03FFC0000000003F07FFC00
+00000001F07FFC0000000001F07FFC0000000001F07FF8000000000000FFF8000000000000FFF8
+000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FF
+F8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000
+FFF8000000000000FFF80000000000007FF80000000000007FFC0000000000007FFC0000000000
+F07FFC0000000000F03FFC0000000000F03FFC0000000000F01FFE0000000000F01FFE00000000
+01F00FFF0000000001E00FFF0000000003E007FF8000000003E003FF8000000007C003FFC00000
+0007C001FFE00000000F8000FFF00000001F00007FF80000003E00003FFE0000007C00000FFF00
+0001F8000007FFE00007F0000001FFFE003FC00000007FFFFFFF800000000FFFFFFC0000000001
+FFFFF000000000001FFF0000003C3D7BBB47>67 D<006000030000F000078001E0000F0003C000
+1E000780003C000F000078000E000070001E0000F0003C0001E0003C0001E000380001C0007800
+03C00070000380007000038000F000078000E000070000E000070000E7C0073E00FFF007FF80FF
+F807FFC0FFF807FFC0FFFC07FFE0FFFC07FFE0FFFC07FFE07FFC03FFE07FFC03FFE03FF801FFC0
+3FF801FFC01FF000FF8007C0003E00231E73BB34>92 D<001FFF00000001FFFFF0000007FFFFFC
+00000FF807FF00001FF801FF80001FFC00FFC0001FFC007FE0001FFC007FE0001FFC007FF0001F
+FC003FF0000FF8003FF00007F0003FF00001C0003FF0000000003FF0000000003FF0000000003F
+F0000000FFFFF000000FFFFFF000007FF83FF00003FF803FF00007FE003FF0001FFC003FF0003F
+F8003FF0007FF0003FF0007FE0003FF000FFE0003FF000FFC0003FF000FFC0003FF000FFC0003F
+F000FFC0007FF000FFC0007FF000FFE000FFF0007FF001DFF0003FF803DFF8001FFC0F8FFFF00F
+FFFE0FFFF001FFFC07FFF0003FE000FFF02C267DA530>97 D<0001FFC000000FFFF800003FFFFE
+0000FF80FF0001FE003F8007FC001FC00FF8000FE00FF8000FF01FF00007F03FF00007F83FF000
+07F87FE00007F87FE00003FC7FE00003FC7FE00003FCFFE00003FCFFFFFFFFFCFFFFFFFFFCFFFF
+FFFFFCFFE0000000FFE0000000FFE0000000FFE00000007FE00000007FE00000007FE00000003F
+E00000003FF000003C1FF000003C1FF000003C0FF800007807FC0000F803FE0001F001FF0007E0
+00FFC03FC0003FFFFF000007FFFC000000FFE00026267DA52D>101 D<00FF00000000FFFF0000
+0000FFFF00000000FFFF00000000FFFF0000000007FF0000000003FF0000000003FF0000000003
+FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000
+000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003
+FF0000000003FF007FC00003FF01FFF80003FF07FFFE0003FF1F03FF0003FF3C01FF0003FF7801
+FF8003FF7000FF8003FFE000FFC003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FFC003
+FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000
+FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003
+FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000
+FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF30
+3C7CBB37>104 D<00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFFFE03FF00FFFFF001FFC003
+FFE0007FE003FF80007FF003FF80003FF803FF00001FF803FF00001FFC03FF00000FFC03FF0000
+0FFE03FF00000FFE03FF00000FFE03FF000007FF03FF000007FF03FF000007FF03FF000007FF03
+FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF0000
+0FFE03FF00000FFE03FF00000FFE03FF00001FFC03FF00001FFC03FF00001FF803FF80003FF003
+FFC0007FF003FFE000FFE003FFF001FF8003FFFC07FF0003FF3FFFFC0003FF0FFFF00003FF01FF
+000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003
+FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000
+0000FFFFFC000000FFFFFC000000FFFFFC000000FFFFFC00000030377DA537>112
+D<00FE03F000FFFE0FFE00FFFE3FFF80FFFE3C7FC0FFFE707FC007FEF0FFE003FEE0FFE003FEC0
+FFE003FFC0FFE003FF80FFE003FF807FC003FF803F8003FF800E0003FF00000003FF00000003FF
+00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003
+FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000
+03FF00000003FF00000003FF000000FFFFFE0000FFFFFE0000FFFFFE0000FFFFFE000023267DA5
+29>114 D<0007800000078000000780000007800000078000000F8000000F8000000F8000000F
+8000001F8000001F8000003F8000003F8000007F800000FF800001FF800007FF80001FFFFFF0FF
+FFFFF0FFFFFFF0FFFFFFF001FF800001FF800001FF800001FF800001FF800001FF800001FF8000
+01FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF80
+0001FF800001FF800001FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF
+803C00FF807800FFC078007FC0F8007FE1F0001FFFE00007FFC00001FF001E377EB626>116
+D E /Fe 13 93 df<781E00FC3F00FC3F00FE3F80FE3F807A1E80020080020080040100040100
+080200080200300C00401000110E7E9C19>34 D<78FCFCFCFC7806067D850D>46
+D<03F8000F1E001C07003C07803803807803C07803C07803C0F803E0F803E0F803E0F803E0F803
+E0F803E0F803E0F803E0F803E0F803E0F803E0F803E07803C07803C03803803C07801C07000F1E
+0003F800131B7E9A18>48 D<00600001E0000FE000FFE000F3E00003E00003E00003E00003E000
+03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
+03E00003E00003E0007FFF807FFF80111B7D9A18>I<07F8001FFE00383F80780FC0FC07C0FC07
+E0FC03E0FC03E07803E00007E00007C00007C0000F80001F00001E0000380000700000E0000180
+600300600600600800E01FFFC03FFFC07FFFC0FFFFC0FFFFC0131B7E9A18>I<03F8001FFE003C
+1F003C0F807C07C07E07C07C07C03807C0000F80000F80001E00003C0003F800001E00000F8000
+07C00007C00007E03007E07807E0FC07E0FC07E0FC07C0780F80781F001FFE0007F800131B7E9A
+18>I<000180000380000780000F80001F80003F80006F8000CF80008F80018F80030F80060F80
+0C0F80180F80300F80600F80C00F80FFFFF8FFFFF8000F80000F80000F80000F80000F80000F80
+01FFF801FFF8151B7F9A18>I<1801801FFF001FFE001FFC001FF8001FC0001800001800001800
+0018000019F8001E0E00180F801007800007C00007E00007E00007E07807E0F807E0F807E0F807
+C0F007C0600F80381F001FFE0007F000131B7E9A18>I<007E0003FF000781800F03C01E07C03C
+07C03C0380780000780000F80000F8F800FB0E00FA0780FC0380FC03C0F803E0F803E0F803E0F8
+03E07803E07803E07803C03C03C03C07801E0F0007FE0003F800131B7E9A18>I<6000007FFFE0
+7FFFE07FFFC07FFF807FFF80E00300C00600C00C00C0180000300000300000600000E00000E000
+01E00001C00003C00003C00003C00003C00007C00007C00007C00007C00007C00007C000038000
+131C7D9B18>I<03F8000FFF001C07803003803001C07001C07801C07E01C07F83807FC3003FF6
+001FFC000FFE0007FF801DFF80387FC0781FE0F007E0F003E0F001E0F001E0F001E07801C07803
+803E07801FFE0003F800131B7E9A18>I<03F8000FFE001E0F003C07807807807803C0F803C0F8
+03C0F803E0F803E0F803E0F803E07807E03807E03C0BE00E1BE003E3E00003E00003C00003C038
+07C07C07807C0700780F00383C001FF8000FE000131B7E9A18>I<040100180600200800200800
+401000401000802000802000BC2F00FE3F80FE3F807E1F807E1F803C0F00110E7B9C19>92
+D E /Ff 57 123 df<6060F0F0F8F86868080808080808101010102020404080800D0C7F9C15>
+34 D<60F0F8680808081010204080050C7C9C0C>39 D<004000800100020006000C000C001800
+1800300030007000600060006000E000E000E000E000E000E000E000E000E000E000E000E00060
+0060006000700030003000180018000C000C00060002000100008000400A2A7D9E10>I<800040
+002000100018000C000C000600060003000300038001800180018001C001C001C001C001C001C0
+01C001C001C001C001C001C0018001800180038003000300060006000C000C0018001000200040
+0080000A2A7E9E10>I<60F0F0701010101020204080040C7C830C>44 D<FFE0FFE00B0280890E>
+I<60F0F06004047C830C>I<03C00C301818300C300C700E60066006E007E007E007E007E007E0
+07E007E007E007E007E007E007E00760066006700E300C300C18180C3007E0101D7E9B15>48
+D<030007003F00C700070007000700070007000700070007000700070007000700070007000700
+07000700070007000700070007000F80FFF80D1C7C9B15>I<07C01830201C400C400EF00FF80F
+F807F8077007000F000E000E001C001C00380070006000C00180030006010C01180110023FFE7F
+FEFFFE101C7E9B15>I<07E01830201C201C781E780E781E381E001C001C00180030006007E000
+30001C001C000E000F000F700FF80FF80FF80FF00E401C201C183007E0101D7E9B15>I<000C00
+000C00001C00003C00003C00005C0000DC00009C00011C00031C00021C00041C000C1C00081C00
+101C00301C00201C00401C00C01C00FFFFC0001C00001C00001C00001C00001C00001C00001C00
+01FFC0121C7F9B15>I<300C3FF83FF03FC020002000200020002000200023E024302818301C20
+0E000E000F000F000F600FF00FF00FF00F800E401E401C2038187007C0101D7E9B15>I<00F003
+0C06040C0E181E301E300C700070006000E3E0E430E818F00CF00EE006E007E007E007E007E007
+600760077006300E300C18180C3003E0101D7E9B15>I<4000007FFF807FFF007FFF0040020080
+040080040080080000100000100000200000600000400000C00000C00001C00001800001800003
+8000038000038000038000078000078000078000078000078000078000030000111D7E9B15>I<
+03E00C301008200C20066006600660067006780C3E083FB01FE007F007F818FC307E601E600FC0
+07C003C003C003C00360026004300C1C1007E0101D7E9B15>I<03C00C301818300C700C600EE0
+06E006E007E007E007E007E0076007700F300F18170C2707C700060006000E300C780C78187010
+203030C00F80101D7E9B15>I<60F0F0600000000000000000000060F0F06004127C910C>I<0006
+00000006000000060000000F0000000F0000000F00000017800000178000001780000023C00000
+23C0000023C0000041E0000041E0000041E0000080F0000080F0000180F8000100780001FFF800
+03007C0002003C0002003C0006003E0004001E0004001E000C001F001E001F00FF80FFF01C1D7F
+9C1F>65 D<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F
+00780F01F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F000F0F000F0F000F0F001E0F
+001E0F003C0F0078FFFFE0181C7E9B1D>I<001F808000E0618001801980070007800E0003801C
+0003801C00018038000180780000807800008070000080F0000000F0000000F0000000F0000000
+F0000000F0000000F0000000F0000000700000807800008078000080380000801C0001001C0001
+000E000200070004000180080000E03000001FC000191E7E9C1E>I<FFFFFC0F003C0F000C0F00
+040F00040F00060F00020F00020F02020F02000F02000F02000F06000FFE000F06000F02000F02
+000F02000F02010F00010F00020F00020F00020F00060F00060F000C0F003CFFFFFC181C7E9B1C
+>69 D<FFFFF80F00780F00180F00080F00080F000C0F00040F00040F02040F02000F02000F0200
+0F06000FFE000F06000F02000F02000F02000F02000F00000F00000F00000F00000F00000F0000
+0F00000F8000FFF800161C7E9B1B>I<FFF3FFC00F003C000F003C000F003C000F003C000F003C
+000F003C000F003C000F003C000F003C000F003C000F003C000F003C000FFFFC000F003C000F00
+3C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F
+003C000F003C00FFF3FFC01A1C7E9B1F>72 D<FFF00F000F000F000F000F000F000F000F000F00
+0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF00C1C7F
+9B0F>I<FF007FC00F800E000F8004000BC0040009E0040009E0040008F0040008F80400087804
+00083C0400083C0400081E0400080F0400080F0400080784000807C4000803C4000801E4000801
+E4000800F40008007C0008007C0008003C0008003C0008001C0008000C001C000C00FF8004001A
+1C7E9B1F>78 D<003F800000E0E0000380380007001C000E000E001C0007003C00078038000380
+780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001
+E0F00001E0700001C0780003C0780003C0380003803C0007801C0007000E000E0007001C000380
+380000E0E000003F80001B1E7E9C20>I<07E0801C1980300580700380600180E00180E00080E0
+0080E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C000
+01C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>83
+D<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F0020000F
+0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
+0F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B
+1E>I<08081010202040404040808080808080B0B0F8F8787830300D0C7A9C15>92
+D<0810204040808080B0F87830050C7D9C0C>96 D<1FC000307000783800781C00301C00001C00
+001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E801F870012127E
+9115>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C
+001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C00C01C01
+C01C01801E030019060010F800131D7F9C17>I<07E00C301878307870306000E000E000E000E0
+00E000E00060007004300418080C3007C00E127E9112>I<003F00000700000700000700000700
+00070000070000070000070000070000070003E7000C1700180F00300700700700600700E00700
+E00700E00700E00700E00700E00700600700700700300700180F000C370007C7E0131D7E9C17>
+I<03E00C301818300C700E6006E006FFFEE000E000E000E00060007002300218040C1803E00F12
+7F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E00
+0E000E000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<00038003C4C00C38
+C01C3880181800381C00381C00381C00381C001818001C38000C300013C0001000003000001800
+001FF8001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C
+7F9215>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C
+7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
+03801C03801C03801C0380FF9FF0141D7F9C17>I<18003C003C00180000000000000000000000
+00000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF
+80091D7F9C0C>I<00C001E001E000C000000000000000000000000000000FE000E000E000E000
+E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0F0C0F1C0
+61803E000B25839C0D>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C
+00001C00001C3FC01C0F001C0C001C08001C10001C20001C40001CE0001DE0001E70001C78001C
+38001C3C001C1C001C0E001C0F001C0F80FF9FE0131D7F9C16>I<FC001C001C001C001C001C00
+1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
+001C001C00FF80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E01C001C01C01C00
+1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C
+001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>I<FC7C001C8700
+1D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
+1C03801C0380FF9FF014127F9117>I<03F0000E1C00180600300300700380600180E001C0E001
+C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F00012127F9115>I<FC
+7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C
+01C01C01801E03001D06001CF8001C00001C00001C00001C00001C00001C00001C0000FF800013
+1A7F9117>I<03C1000C3300180B00300F00700700700700E00700E00700E00700E00700E00700
+E00700600700700700300F00180F000C370007C700000700000700000700000700000700000700
+000700003FE0131A7E9116>I<FCE01D301E781E781C301C001C001C001C001C001C001C001C00
+1C001C001C001C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F803FE00FF000F8
+80388018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C003C00FFE0
+1C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F9910
+>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
+03801C03801C07800C07800E1B8003E3F014127F9117>I<FF07E03C03801C01001C01000E0200
+0E020007040007040007040003880003880003D80001D00001D00000E00000E00000E000004000
+13127F9116>I<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B82000E118200
+0711C4000711C4000720C40003A0E80003A0E80003C0680001C0700001C0700001803000008020
+001B127F911E>I<7F8FF00F03800F030007020003840001C80001D80000F00000700000780000
+F800009C00010E00020E000607000403801E07C0FF0FF81512809116>I<FF07E03C03801C0100
+1C01000E02000E020007040007040007040003880003880003D80001D00001D00000E00000E000
+00E000004000004000008000008000F08000F10000F300006600003C0000131A7F9116>I<7FFC
+70386038407040F040E041C003C0038007000F040E041C043C0C380870087038FFF80E127F9112
+>I E end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300
+TeXDict begin
+%%EndSetup
+/cm11bf{ pop Fa } bind def
+/cm13bf{ pop Fb } bind def
+/cm22bf{ pop Fc } bind def
+/cm18bf{ pop Fd } bind def
+/cm10bf{ pop Fe } bind def
+/cm10rm{ pop Ff } bind def
+/fontnames [
+/TIMESROMAN
+/cm10rm
+/cm10bf
+/cm18bf
+/cm22bf
+/cm13bf
+/cm11bf
+] def
+%! This is a PostScript library meant to be printed only with other files %%%
+%% Postscript Code by Jonathan Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+%% This is the LameTeX Formatter, uses the LaTeX language
+% Depends on "EndPage" and "StartPage" to be set up by a page formatter
+
+/formatdict 100 dict def % This should be 77?
+
+formatdict begin
+/wlist 100 array def % Maximum of 100 words on a line
+%% Better give these variables default values in case we try to
+%% do an EndPage but they have not yet been defined
+
+/baselineskip 200 def /wlen 0 def /baselineskip 0 def /bottommargin 0 def
+/parindent 0 def /justify 0 def /rightmargin 0 def /leftmargin 0 def
+/topmargin 0 def /parskip 0 def /newfontcmd 1 def /para 0 def
+/vtotal 0 def /wordlen 0 def /ypos 0 def /ytemp 0 def
+
+%%%%%%%%%%%%%%%% num InitWord - %%%%%%%%%%%%%%%%%%%%%%%
+% InitWord takes an setflat values and flattens the current path
+% It also defines some globals that will get "NextWord" up and running
+/InitWord
+{
+ /xpos currentflat def % Save current flatness
+ PageShape setflat flattenpath
+ % gsave stroke grestore % Uncomment this line to show the margin path
+ /coords Approx def
+ pathbbox % It the current path is bigger than the margins, widen them!
+ dup TM gt { /TM exch def } { pop } ifelse
+ dup RM gt { /RM exch def } { pop } ifelse
+ dup BM lt { /BM exch def } { pop } ifelse
+ dup LM lt { /LM exch def } { pop } ifelse
+
+ xpos setflat % Restore flatness.
+ false fontnames newfontcmd get cvx exec
+ /xlocs [ ] def
+ /welem 1 def /wlen 0 def /woids 0 def
+ /eslot LM def
+ /ypos TM topmargin sub def
+ /vtotal 0 def
+ /xpos 0 def /nxpos 0 def
+ wlist 0 [ newfontcmd false ] put
+ /wtemp 0 def
+ NextSpace pop
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%% - NewXSpace bool %%%%%%%%%%%%%%%%%%%%%%
+% If there's "room on the bottom" as defined by xlocs, check to see if
+% there's "room on the top" as defined by NewXSpace. Returns success boolean.
+/NewXSpace
+{
+ nxpos newxlocs length 1 sub lt
+ {
+ newxlocs nxpos 2 getinterval {} forall exch
+ /nxpos nxpos 2 add def
+% If there's any intersection of top and bottom 'good places' set bslot, eslot
+ dup xa le { pop xa } if leftmargin add /bslot exch def
+ dup xb ge { pop xb } if rightmargin sub /eslot exch def
+ bslot eslot lt { true } { NewXSpace } ifelse
+ }
+ {
+ false
+ } ifelse
+} bind def
+
+%%%%%%%%%%%%%%% - NextSpace bool %%%%%%%%%%%%%%%%%%%%%%
+% NextSpace defines the next space available for writing by
+% setting ypos to the Y location and bslot and eslot to the beginning
+% and end of the next open text writing area. Returns success boolean.
+/NextSpace
+{
+ xpos xlocs length 1 sub lt % are there any X's left on current line
+ {
+ /xa xlocs xpos get def
+ /xb xlocs xpos 1 add get def
+ NewXSpace
+ { true }
+ {
+ /nxpos 0 def
+ /xpos xpos 2 add def
+ NextSpace
+ } ifelse
+ }
+ {
+ ypos % Leave on the stack for later comparison
+ /ypos ypos
+ vspace 0 eq
+ {
+ baselineskip para { parskip add } if /vtotal baselineskip def
+ }
+ {
+ vspace /vspace 0 def
+ } ifelse
+ sub def
+ ypos BM bottommargin add ge
+ {
+ /newxlocs coords 3 -1 roll 4 add true CheeseWhiz def
+ /xlocs coords ypos 4 sub true CheeseWhiz def
+ /xpos 0 def /nxpos 0 def
+ NextSpace
+ }
+ {
+ pop false
+ } ifelse
+ } ifelse
+ % if we're doing a paragraph and the NextSpace isn't big enough
+ % for the indentation, then choose a new space.
+ % if found-space and para and justify
+ dup para justify 102 eq and and % 102 is ascii 'f' for FULL JUSTIFY
+ { /bslot bslot parindent add def bslot eslot gt
+ { pop NextSpace pop
+ } if
+ } if
+ /para false def
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%%%% - PrintWordList - %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% PrintWordList prints the words stored in array "wlist" at Y location ypos
+% with full justification between X locations bslot and eslot.
+/PrintWordList
+{
+ /vtotal 0 def
+ woids 0 ne
+ {
+ % Legal values for /justify are (l)eft (r)ight (f)ull (c)enter in ASCII
+ justify 99 eq % 99 is ascii 'c' for CENTERED
+ {
+ bslot eslot bslot sub wlen sub 2 div add ypos moveto
+ }
+ {
+ bslot justify 114 eq { eslot bslot sub wlen sub add } if % 114 is 'r'
+ ypos moveto
+ } ifelse
+ /sp eslot bslot sub wlen sub woids div def
+ 0 1 welem 1 sub
+ {
+ wlist exch get
+ dup type /stringtype eq
+ {
+ SHOWIT ( ) stringwidth pop 0 rmoveto
+ justify 102 eq { sp 0 rmoveto } if % 102 is ascii 'f'
+ }
+ {
+ dup type /arraytype eq
+ {
+ { } forall
+ {
+ ( ) stringwidth pop neg 0 rmoveto
+ justify 102 eq { sp neg 0 rmoveto } if % 102 is ascii 'f'
+ } if
+ fontnames exch get cvx true exch exec
+ }
+ {
+ 0 rmoveto
+ } ifelse
+ } ifelse
+ } for
+ wlist 0 [ newfontcmd false ] put
+ /welem 1 def /wlen 0 def /woids 0 def
+ } if
+} def
+
+%%%%%%%%%%%%%%%%%%%%%%%%% - PrintClose - %%%%%%%%%%%%%%%%%%%%%%%%
+% PrintClose prints the words stored in the array "wlist" at Y location ypos
+% starting at X location bslot with left justification.
+/PrintClose
+{
+ justify 102 eq % 102 is ascii 'f'
+ {
+ /justify 108 def % 108 is ascii 'l' for flushleft
+ PrintWordList
+ /justify 102 def
+ }
+ {
+ PrintWordList
+ } ifelse
+} bind def
+
+%%%%%%%%%%%%%%%% string Parse - %%%%%%%%%%%%%%%%%%%%%%%%
+% Parse breaks a string into words based on spaces, passing each to NextWord
+/Parse
+{
+ dup length 0 eq % kill extra spaces by shaving them until null string
+ { pop }
+ { ( ) search { Parse pop Parse } { NW } ifelse } ifelse
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%%%% string NextWord - %%%%%%%%%%%%%%%%%%%%%%
+% NextWord appends the string to an array of words
+% and tries to place the text inside an arbitrary path (which was analyzed
+% by InitWord). It's meant to be an iterative part of a long list of
+% "string NextWord" sets which justifies text inside any closed path.
+/NextWord
+{
+ /word exch def word stringwidth pop /wordlen exch def
+ GrabSpace
+} bind def
+
+%%%%%%%%%% Takes a horizontal distance and a string for positioning
+/GrabSpace
+{
+ wordlen wlen add
+ eslot bslot sub gt
+ {
+ PrintWordList word type /stringtype ne { /welem 0 def } if
+ NextSpace
+ {
+ GrabSpace
+ }
+ {
+ % Have reached end of page
+ ENDPAGE STARTPAGE
+ /ypos baselineskip ypos add def /vtotal baselineskip def NEWLINE
+ GrabSpace
+ } ifelse
+ }
+ {
+ word type /stringtype eq
+ {
+ wlist welem word put /welem welem 1 add def
+ /wlen wlen ( ) stringwidth pop add def
+ /woids woids 1 add def
+ } if
+ /wlen wlen wordlen add def
+ } ifelse
+} def
+
+%%%%%%%%%%%%%%%% xwidth HSpace - %%%%%%%%%%%%%%
+% Adds to the current wlen and adds the right thing in the wlist array
+/HSpace
+{
+ dup wlen add /wlen exch def
+ wlist welem 3 -1 roll put /welem welem 1 add def
+} bind def
+
+
+%%%%%%%%%%%%%%%%% size type NewFont %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% NewFont sets a new font, given a type and size
+/NewFont
+{
+ { } forall /word exch def /newfontcmd exch def
+ word wlist welem [ newfontcmd 5 -1 roll ] put /welem welem 1 add def
+ false fontnames newfontcmd get cvx exec
+ word true eq woids 0 gt and
+ {
+ /wlen wlen ( ) stringwidth pop sub def
+ } if
+} bind def
+
+%%%%%%%%%%%%%% x y READJUST %%%%%%%%%%%%%%
+% Readjusts the line down by given amountif big fonts are being placed
+% in a small vertical space, and across if a horizontal space is being added.
+/READJUST
+{
+ wtemp type /arraytype eq % Don't do recursive READJUSTs
+ {
+ pop pop
+ }
+ {
+ /vspace exch def /wordlen exch def
+ /welem welem 1 sub def
+ GrabSpace vspace 0 ne { SKIPLINE } if % Skip to a new page if needed
+ /wtemp wlist def /woids 0 def /wlen 0 def
+ 0 1 welem /welem 0 def
+ {
+ wtemp exch get
+ dup type /stringtype eq
+ {
+ NextWord
+ }
+ {
+ dup type /arraytype eq
+ {
+ NewFont
+ }
+ {
+ HSpace
+ } ifelse
+ } ifelse
+ } for
+ wordlen HSpace
+ /wtemp 0 def
+ } ifelse
+} bind def
+
+%%%% Skipline skips a given amount of vertical space
+/SKIPLINE
+{
+ vspace 0 eq vspace vtotal gt or
+ {
+ vspace vtotal gt
+ {
+ /vspace vspace vtotal sub /vtotal vspace def def
+ } if
+
+ /ytemp ypos def
+ true
+ 20 % repeat
+ {
+ NextSpace not % did it get a new line successfully?
+ {
+ ENDPAGE STARTPAGE
+ /ypos baselineskip ypos add def /vtotal baselineskip def NEWLINE
+ } if
+ ypos ytemp ne { pop false exit } if
+ } repeat
+
+ { % Did the repeat "fail" by falling off the end?
+ erasepage
+ grestoreall
+ /Times-Roman findfont 20 scalefont setfont
+ 50 100 moveto
+ (Could not place words anywhere on the virtual page) show
+ showpage
+ quit
+ } if
+ } if
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%%
+% Some startup definitions
+/para true def
+/vspace 0 def
+
+% User command definitions, meant to be called from outside
+/NW { NextWord } bind def
+/SHOWIT { show } bind def
+/NEWLINE { PrintWordList NextSpace pop } def
+/NEWPARA
+{
+ PrintClose
+ /para true def
+ SKIPLINE
+} bind def
+
+/ENUMERATE { dup stringwidth pop 9 add
+ bslot exch sub ypos moveto show } bind def
+/BULLET
+{
+ newpath bslot 9 sub
+ ( ) stringwidth pop 1.7 div dup ypos add exch
+ 0 360 arc currentgray 0 setgray fill setgray
+} bind def
+
+/TIMESROMAN
+{
+ pop /Times-Roman findfont 10 scalefont setfont
+} bind def
+
+/BASELINESKIP
+{
+ /baselineskip exch def
+} bind def
+
+/STARTPAGE
+{
+ end
+ /savetype save def
+ StartPage
+ formatdict begin
+ InitWord
+} def
+
+/ENDPAGE
+{
+ PrintClose
+ % Put all the variables we want to save on the stack
+ baselineskip bottommargin parindent justify rightmargin leftmargin
+ topmargin parskip newfontcmd para wordlen ypos ytemp
+ word type /stringtype eq
+ {
+ mark word {} forall true
+ }
+ {
+ word false
+ } ifelse
+ end
+
+ savetype restore
+
+ formatdict
+ begin
+ {
+ counttomark string /word exch def
+ counttomark 1 sub -1 0
+ {
+ exch word 3 1 roll put % Builds word out of individual characters
+ } for
+ pop
+ }
+ {
+ /word exch def
+ } ifelse
+
+ % Recover all the variables
+ /ytemp exch def /ypos exch def /wordlen exch def
+ /para exch def /newfontcmd exch def
+ /parskip exch def /topmargin exch def /leftmargin exch def
+ /rightmargin exch def /justify exch def /parindent exch def
+ /bottommargin exch def /baselineskip exch def
+ end
+ EndPage
+ formatdict begin
+} def
+%! This is a PostScript library meant to be included in other files %%%
+%% Postscript Code by Jon Monsarrat Copyright 1991
+%% permission given for anything except selling this or deleting the header.
+%%%%%%%%%%% - Approx array %%%%%%%%%%%%%%%%%
+% Approx flattens a path into a series of lines.
+% This new flattened path is returned as a triple-array path representation.
+% The path is broken into sub-paths which have a double-array representation.
+% Each sub-path breaks into vertices which have a single-array representation.
+% Each vertex is of the form X Y. We're doing a fill here so any
+% unclosed subpaths get closed. That's how postscript normally handles fill.
+% It would be easier to use [ X Y ] vertices, but that would waste memory!
+/Approx
+ {
+ [ [ { /Y exch def /X exch def ] [ X Y }
+ { } { } { X Y } pathforall ] ]
+ } bind def
+
+%%%%%%%%%%%%%%%%%%% array num bool SortArray array %%%%%%%%%%%%%%%
+% SortArray bubble sorts "array" of packets in increasing order, packets are
+% groups of numbers and a packet is of size "num". Sorting is done based
+% on the value of the first item in each packet. When sorting is done,
+% SortArray goes through and deletes all equal packets if "bool" is true.
+/SortArray
+{
+ 10 dict begin
+ /DelEquals exch def /Pack exch def
+ /newlist exch def
+ 0 Pack newlist length 2 Pack mul sub
+ {
+ /anum exch def
+ anum Pack add Pack newlist length 1 Pack mul sub
+ {
+ /bnum exch def
+ newlist anum get newlist bnum get ge
+ {
+ /flag true def
+ newlist anum get newlist bnum get eq Pack 2 eq and
+ {
+ /flag false def
+ newlist anum 1 add get newlist bnum 1 add get add 0 eq
+ {
+ newlist anum 1 add get 1 eq ontop xor { /flag true def } if
+ } if
+ } if
+ flag
+ {
+ 0 1 Pack 1 sub
+ {
+ /ind exch def
+ /temp newlist anum ind add get def
+ newlist anum ind add newlist bnum ind add get put
+ newlist bnum ind add temp put
+ } for
+ } if
+ } if
+ } for
+ } for
+
+ DelEquals % if this boolean is true, delete all equal packs
+ {
+ [
+ 0 Pack newlist length 2 Pack mul sub
+ {
+ /anum exch def
+ newlist anum get newlist anum Pack add get ne
+ {
+ 0 1 Pack 1 sub
+ {
+ anum add newlist exch get
+ } for
+ } if
+ } for
+ 0 1 Pack 1 sub
+ {
+ /ind exch def
+ newlist newlist length Pack sub ind add get
+ } for
+ ]
+ }
+ {
+ newlist
+ } ifelse
+ end % temp dict 10
+} bind def
+
+%%%%%%%%%%%%%%%%%% bool CheeseY X1 W1 or nothing %%%%%%%%%%
+% CheeseY uses defined variables Y1 (a number), oldx, oldy, newx, newy.
+% CheeseY asks "does the line segment bounded by oldxy, newxy cross y=Y1?
+% If so, CheeseY leaves X1 W on the stack, where (X1,Y1) is the point of
+% intersection. The winding value W is calculated from the sign of the slope.
+% CheeseY takes one argument which is a boolean value. This boolean is
+% true is the Y1 value is "on top" of the region of interest, false if "below".
+% This is to deal correctly with line segments which end on the y=Y1 line.
+% These special line segments are ignored if they don't pass through the
+% region of interest. It would be easier to use [ X W ] but memory wasteful.
+/CheeseY
+{
+ /top exch def
+ oldy newy 2 copy gt { exch } if
+ Y1 ge exch Y1 le and
+ {
+ oldy newy ne
+ {
+ oldx newx sub oldy newy sub div
+ oldy Y1 sub mul oldx exch sub
+ oldy newy lt { 1 } { -1 } ifelse
+ }
+ {
+ newx 0
+ } ifelse
+
+ % If the line segment does NOT go through region of interest
+ % but rather just happens to end on line y=Y1, don't use it.
+ oldy Y1 eq
+ {
+ dup top { -1 } { 1 } ifelse ne { pop pop } if
+ }
+ {
+ newy Y1 eq
+ {
+ dup top { 1 } { -1 } ifelse ne { pop pop } if
+ } if
+ } ifelse
+ } if
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%% array num bool CheeseWhiz array %%%%%%%%%%%%%%%%%
+% CheeseWhiz traverses the flattened path as computed by Approx to find
+% any points of intersection with the line y=Y1, where Y1 is it's num argument.
+% It's boolean argument is true if y=Y1 bounds the region of interest "on top".
+% For all points of intersection X1 goes on the stack, where [ X1 Y1 ]
+% is the point, BUT ONLY IF the winding value or evenodd calculation says
+% to. The winding value is complex and calculated from the sign of the slope.
+% CheeseWhiz does this by breaking the path into line segments and passing
+% it to CheeseY. The final array of X1 values is sorted, keeping duplicates.
+/CheeseWhiz
+{
+ 15 dict begin
+ /ontop exch def
+ /Y1 exch def
+ [ exch
+ {
+ /oldx (Begin) def
+ /flag false def
+ {
+ flag
+ {
+ /newy exch def
+ oldx (Begin) eq
+ { /firstx newx def /firsty newy def} { ontop CheeseY } ifelse
+ /oldx newx def /oldy newy def
+ }
+ {
+ /newx exch def
+ } ifelse
+ /flag flag not def
+ } forall
+ oldx (Begin) ne
+ {
+ /newx firstx def % Even if the subpath is not closed, PostScript
+ /newy firsty def % fill methodology says close it. So wrap around.
+ ontop CheeseY
+ } if
+ } forall
+ ]
+ % Sort the array of X W values
+ 2 false SortArray
+ % Now go through and take out X's where there is no inside/outside change
+ [ exch
+ fillout { LM exch } if
+ /winding 0 def
+ /inside false def % always start off outside
+ /flag false def
+ {
+ flag
+ {
+ winding add /winding exch def
+ evenodd not
+ {
+ winding 0 eq inside xor
+ { pop } { /inside inside not def } ifelse
+ } if
+ } if
+ /flag flag not def
+ } forall
+ fillout { RM } if
+ ]
+ end % temp dict 15
+} def
+%% End of PostScript Path-breaking Library
+
+/justify 102 def
+
+12 BASELINESKIP
+
+
+
+/leftmargin 126 def
+/rightmargin 126 def
+
+/rightmargin 360 def
+
+
+/leftmargin 126 def
+/rightmargin 126 def
+
+/parindent 18 def
+
+/parskip 0 def
+
+
+/bottommargin 90 def
+
+/rightmargin 126 def
+
+/topmargin 162 def
+/bottommargin 90 def
+
+
+
+
+
+
+
+
+/rightmargin 54 def
+
+/bottommargin -18 def
+
+/topmargin 72 def
+/bottommargin 72 def
+
+/leftmargin 90 def
+/rightmargin 90 def
+
+/leftmargin 90 def
+/rightmargin 90 def
+/justify 99 def
+
+end
+%! page_latex.ps - A replica of the standard LaTeX page
+%% This is a LameTeX Page Description File written in PostScript.
+%% Postscript Code by Jon Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+%% This is a page template for the LameTeX formatter
+%% A normal page for LameTeX output to look like LaTeX output
+
+%%%%%%%%%%% icon-name LeftMarginIcon - %%%%%%%%%%%%
+% Given the name of an icon, executes the icon in the left margin.
+/LeftMarginIcon
+{
+ gsave
+ 20 ypos 72 sub translate cvx exec
+ grestore
+} bind def
+
+%% REQUIRED DEFINITIONS START HERE %%
+
+% Makes a path that desribes the page
+/PageShape
+{
+ 0 0 moveto 8.5 in 0 lineto 8.5 in 11 in lineto 0 11 in lineto closepath
+ currentflat 8 mul
+} bind def
+
+% Anything to do when a new page is started
+/StartPage
+{
+} bind def
+
+% Anything to do when a new page is ended
+/EndPage
+{
+ pagenumber 4 string cvs
+ dup stringwidth pop 8.5 in
+ formatdict /rightmargin get sub
+ formatdict /leftmargin get sub
+ exch sub 2 div formatdict /leftmargin get add
+ formatdict /bottommargin get 2 div moveto show
+ /pagenumber pagenumber 1 add def
+ showpage % A new page here really does mean start a new page.
+} bind def
+
+%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
+% Page-specific defaults that describe the page.
+/InitPage
+{
+ /evenodd true def % if true use even-odd rule; false means winding rule
+ /fillout false def % true means fill outside shape. false is inside.
+
+ /in { 72 mul } def
+ /BM 0 in def % Absolute Bottom Margin for page
+ /TM 11 in def % Absolute Top Margin for page
+ /LM 0 in def % Absolute Left Margin for page
+ /RM 8.5 in def % Absolute Right Margin for page
+
+ userdict /pagenumber known not % Initialize pagenumber if not done already
+ { userdict begin /pagenumber 1 def end} if
+} bind def
+
+InitPage % Just loading this file initializes the page.
+
+formatdict begin
+
+STARTPAGE
+
+[ 1 false ] NewFont % /cm10rm
+ (An) NW (Analysis) NW (of) NW (Simultaneous) NW (Self-evaluation) NW
+NEWPARA
+ (of) NW (a) NW (Thesis) NW (by) NW (example.) NW
+NEWPARA /justify 102 def
+
+NEWPARA
+
+[ 1 false ] NewFont % /cm10rm
+ (One) NW (of) NW (the) NW (more) NW (difficult) NW (things) NW (for) NW (students) NW (to) NW (do) NW (in) NW (their) NW (last) NW (semester) NW (of) NW (college) NW (is) NW (to) NW (prepare) NW (a) NW (written) NW (thesis.) NW (Such) NW (theses) NW (need) NW (ideas) NW (which) NW (can) NW (come) NW (without) NW (too) NW (much) NW (consideration,) NW (but) NW (which) NW (need) NW (compilation) NW (into) NW (a) NW (presentable) NW (form.) NW (Therein) NW (lies) NW (the) NW (difficulty) NW (of) NW
+ENDPAGE
+
+STARTPAGE
+
+/parindent 0 def
+
+[ 2 false ] NewFont % /cm10bf
+
+21.6 BASELINESKIP
+
+[ 3 false ] NewFont % /cm18bf
+
+
+26.4 BASELINESKIP
+
+/vspace 112.5 def NEWPARA
+
+[ 4 false ] NewFont % /cm22bf
+ (Barney) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 52 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (writing) NW (a) NW (thesis.) NW (The) NW (writer) NW (must) NW (present) NW (his) NW (or) NW (her) NW (ideas) NW (by) NW (forming) NW (them) NW (in) NW (his) NW (or) NW (her) NW (mind,) NW (revising) NW (them) NW (and) NW (self-evaluating) NW (them,) NW (and) NW (then) NW (putting) NW (them) NW (on) NW (paper.) NW (It) NW (is) NW (this) NW (constant) NW (self-evaluation) NW (which) NW (makes) NW (thesis) NW (writing) NW (a) NW (hated) NW (activity.) NW
+NEWPARA
+ (As) NW (an) NW (example,) NW (the) NW (last) NW (paragraph) NW (was) NW (written) NW (in) NW (a) NW (fairly) NW (poor) NW
+/parindent 0 def
+
+[ 2 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 5 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (0.1) NW
+15 HSpace
+ (had) NW (a) NW (little) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 22.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (style.) NW (Although) NW (it) NW (conveyed) NW (the) NW (basic) NW (ideas) NW (of) NW (the) NW (self-evaluating) NW (thesis,) NW (it) NW (did) NW (not) NW (do) NW (so) NW (in) NW (a) NW (constructive) NW (manner.) NW (In) NW (two) NW (of) NW (the) NW (sentences) NW (the) NW (same) NW (concept) NW (is) NW (stated:) NW (why) NW (a) NW (thesis) NW (is) NW (difficult.) NW (The) NW
+/parindent 0 def
+
+[ 2 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 5 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (problem) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 22.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (third) NW (sentence) NW (asserts) NW (that) NW (the) NW (compilation) NW (is) NW (\\what) NW (it) NW (is") NW (that) NW (makes) NW (a) NW (thesis) NW (difficult,) NW (and) NW (the) NW (fourth) NW (says) NW (it) NW (is) NW (rather) NW (constant) NW (self-evaluation.) NW (Clearly) NW (the) NW (writer) NW (has) NW (an) NW (idea) NW (what) NW (he) NW (is) NW (writing) NW (about,) NW (but) NW (the) NW (ideas) NW (become) NW (confused) NW (when) NW (put) NW (on) NW (paper.) NW
+NEWPARA
+ (In) NW (the) NW (second) NW (paragraph) NW (of) NW (this) NW (thesis,) NW (the) NW (writer) NW (leaves) NW (his) NW (topic) NW
+ENDPAGE
+
+STARTPAGE
+
+/parindent 0 def
+
+[ 2 false ] NewFont % /cm10bf
+
+21.6 BASELINESKIP
+
+[ 3 false ] NewFont % /cm18bf
+
+
+/vspace 112.5 def NEWPARA
+ (Chapter) NW (1) NW
+26.4 BASELINESKIP
+
+/vspace 46.6 def NEWPARA
+
+[ 4 false ] NewFont % /cm22bf
+ (which) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 74.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (of) NW (the) NW (troubles) NW (of) NW (theses) NW (and) NW (presents) NW (an) NW (example) NW (of) NW (self-evaluation.) NW (There) NW (seems) NW (to) NW (be) NW (a) NW (discontinuity) NW (as) NW (in) NW (one) NW (place) NW (the) NW (author) NW (is) NW (building) NW (a) NW (case) NW (for) NW (self-evaluation) NW (as) NW (the) NW (difficult) NW (part) NW (of) NW (thesis) NW (writing) NW (and) NW (then) NW (switches) NW (to) NW (an) NW (example) NW (of) NW (such) NW (self-evaluation) NW (without) NW (attempting) NW (to) NW (tie) NW (it) NW (in) NW (to) NW (the) NW (relevant) NW (subject.) NW (He) NW (needs) NW (to) NW (make) NW (a) NW (statement) NW (of) NW (how) NW (the) NW (example) NW (proves) NW (his) NW (argument.) NW (Fortunately) NW
+/parindent 0 def
+
+[ 2 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 5 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (was) NW (that) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 22.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (he) NW (does) NW (so) NW (in) NW (the) NW (third) NW (paragraph) NW (by) NW (saying) NW (\\This) NW (is) NW (an) NW (example) NW (of) NW (self-evaluation.) NW (Clearly) NW (it) NW (is) NW (confusing,) NW (and) NW (therefore) NW (a) NW (real) NW (mental) NW (challenge) NW (when) NW (the) NW (thesis) NW (is) NW (being) NW (written.") NW (This) NW (is) NW (an) NW (example) NW (of) NW (self-evaluation.) NW (Clearly) NW (it) NW (is) NW (confusing,) NW (and) NW (therefore) NW (a) NW (real) NW (mental) NW (challenge) NW (when) NW (the) NW (thesis) NW (is) NW (being) NW (written.) NW
+NEWPARA
+ (The) NW (author) NW (goes) NW (on) NW (to) NW (discuss) NW (his) NW (thesis) NW (in) NW (general.) NW (He) NW (states) NW (that) NW
+NEWPARA
+
+/parindent 0 def
+
+[ 2 false ] NewFont % /cm10bf
+
+13.2 BASELINESKIP
+
+[ 6 false ] NewFont % /cm11bf
+
+
+/vspace 4.5 def NEWPARA
+ (althuogh) NW (he) NW (had) NW (a) NW (nice) NW (mom) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 18 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (although) NW (a) NW (thesis) NW (must) NW (be) NW (of) NW (a) NW (certain) NW (quality,) NW (the) NW (student) NW (may) NW (choose) NW (to) NW (simply) NW (write) NW (without) NW (quality,) NW (and) NW (then) NW (later) NW (revise) NW (the) NW (script.) NW (Self-evaluation) NW (need) NW (not) NW (be) NW (simultaneous.) NW (In) NW (saying) NW (this,) NW (the) NW (author) NW (takes) NW (a) NW (most) NW (roundabout) NW (manner.) NW (He) NW (uses) NW (such) NW (words) NW (as) NW (\\roundabout") NW (and) NW (\\liveliness") NW (to) NW (give) NW (his) NW (sentences) NW (liveliness,) NW (words) NW (which) NW (are) NW (inappropriate) NW (in) NW (a) NW (formal) NW (thesis.) NW (For) NW (instance,) NW (in) NW (the) NW (last) NW (paragraph) NW
+/parindent 0 def
+
+[ 2 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 5 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (1.2) NW
+15 HSpace
+ (her) NW (was) NW (toall) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 22.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (the) NW (author) NW (uses) NW (the) NW (trite) NW (clause) NW (\\putting) NW (his) NW (foot) NW (in) NW (his) NW (mouth",) NW (and) NW (in) NW (his) NW (analysis) NW (of) NW (that) NW (statement) NW (mistakenly) NW (describes) NW (it) NW (as) NW (a) NW (\\clause".) NW (Towards) NW (the) NW (end) NW (of) NW (his) NW (analysis) NW (he) NW (fails) NW (to) NW (comment) NW (on) NW (the) NW (concluding) NW (paragraph,) NW (merely) NW (tossing) NW (it) NW (off) NW (as) NW (\\straightforward".) NW (The) NW (entire) NW (thesis) NW (seems) NW (to) NW (be) NW (written) NW (on) NW (a) NW (downhill) NW (slope:) NW (the) NW (author) NW
+/parindent 0 def
+
+[ 2 false ] NewFont % /cm10bf
+
+15.6 BASELINESKIP
+
+[ 5 false ] NewFont % /cm13bf
+
+
+/vspace 20.7 def NEWPARA
+ (Out) NW (of) NW (Whack) NW
+12 BASELINESKIP
+
+/parindent 18 def
+
+/parindent 0 def
+
+/vspace 22.4 def NEWPARA
+
+/parindent 18 def
+
+[ 1 false ] NewFont % /cm10rm
+ (begins) NW (by) NW (analyzing) NW (sentence) NW (by) NW (sentence,) NW (then) NW (continues) NW (analyzing) NW (the) NW (thesis) NW (paragraph) NW (by) NW (paragraph,) NW (and) NW (at) NW (one) NW (point) NW (even) NW (simply) NW (generalizing) NW (the) NW (entire) NW (thesis) NW (as) NW (\\written) NW (on) NW (a) NW (downhill) NW (slope".) NW (There) NW (are) NW (even) NW (some) NW (times) NW (when) NW (the) NW (author) NW (seems) NW (to) NW (make) NW (references) NW (to) NW (sections) NW (of) NW (the) NW (thesis) NW (without) NW (stating) NW (where) NW (those) NW (places) NW (are.) NW (These) NW (mistakes) NW (are) NW (an) NW (intentional) NW (attempt) NW (to) NW (show) NW (how) NW (simultaneous) NW (self-evaluation) NW (is) NW (worth) NW (the) NW (confusion) NW (it) NW (causes.) NW (True,) NW (a) NW (student) NW (can) NW (evade) NW (the) NW (hardship) NW (of) NW (thesis) NW (writing) NW (by) NW (first) NW (making) NW (a) NW (rough) NW (draft) NW (of) NW (low) NW (quality,) NW (and) NW (then) NW (later) NW (evaluating) NW (and) NW (finishing) NW (it,) NW (but) NW (in) NW (the) NW (second) NW (pass) NW (over) NW (the) NW (student) NW (may) NW (not) NW (spot) NW (a) NW (mistake.) NW (Simultaneous) NW (self-evaluation) NW (guarantees) NW (good) NW (quality) NW (because) NW (the) NW (author's) NW (mind) NW (is) NW (currently) NW (engaged) NW (in) NW (creation) NW (-) NW (a) NW (later) NW (reading) NW (may) NW (not) NW (put) NW (the) NW (writer) NW (in) NW (the) NW (proper) NW (state) NW (of) NW (mind) NW (to) NW (find) NW (flaws,) NW (for) NW (instance) NW (the) NW (words) NW (\\criticizing") NW (and) NW (\\misspelled") NW (are) NW (spelled) NW (incorrectly,) NW (the) NW (quote) NW (\\clearly) NW (it) NW (is) NW (confusing") NW (is) NW (used) NW (three) NW (times,) NW (and) NW (at) NW (two) NW (points) NW (the) NW (author) NW (avoids) NW (saying) NW (a) NW (certain) NW (word,) NW (using) NW (instead) NW (\\spelled) NW (incorrectly") NW (and) NW (\\a) NW (certain) NW (word") NW (because) NW (he) NW (is) NW (too) NW (lazy) NW (to) NW (look) NW (missspelled) NW (up.) NW
+NEWPARA
+ (This) NW (sentence,) NW (for) NW (instance,) NW (despite) NW (its) NW (being) NW (intentional,) NW (makes) NW (absolutely) NW (no) NW (sense) NW (at) NW (all.) NW (The) NW (author) NW (for) NW (unknown) NW (reasons) NW (has) NW (chosen) NW (to) NW (begin) NW (one) NW (of) NW (his) NW (paragraphs) NW (with) NW (a) NW (meaningless) NW (sentence,) NW (and) NW (then) NW (attempt) NW (to) NW (extract) NW (significance.) NW (He) NW (uses) NW (a) NW (quote) NW (from) NW (an) NW (earlier) NW (section) NW (of) NW (the) NW (work) NW (which) NW (was) NW (quoted) NW (as) NW (being) NW (in) NW (\\fairly) NW (poor) NW (style",) NW (and) NW (then) NW (for) NW (unknown) NW (reasons) NW (admits) NW (his) NW (ignorance) NW (of) NW (the) NW (motivating) NW (forces) NW (behind) NW (the) NW (new) NW (topic.) NW (Not) NW (being) NW (satisfied) NW (with) NW (his) NW (choice) NW (of) NW (words,) NW (the) NW (author) NW (then) NW (simply) NW (gives) NW (up) NW (and) NW (quotes) NW (himself) NW (\(in) NW (better) NW (words) NW (than) NW (I) NW (could) NW (use\)) NW (\\clearly) NW (it) NW (is) NW (confusing".) NW (Note) NW (that) NW (as) NW (some) NW (sort) NW (of) NW (afterthought) NW (the) NW (author) NW (asks) NW (the) NW (reader) NW (to) NW (pay) NW (attention) NW (to) NW (some) NW (insignificant) NW (trifle.) NW
+NEWPARA
+ (The) NW (beginning) NW (of) NW (the) NW (thesis) NW (seems) NW (to) NW (be) NW (a) NW (list) NW (of) NW (examples) NW (that) NW (the) NW (author) NW (makes) NW (as) NW (a) NW (base) NW (to) NW (work) NW (with) NW (to) NW (form) NW (his) NW (speculations.) NW (In) NW (fact,) NW (he) NW (states) NW (this) NW (in) NW (the) NW (middle) NW (of) NW (the) NW (thesis) NW (as) NW (he) NW (is) NW (about) NW (to) NW (move) NW (on,) NW (and) NW (then) NW (suddenly) NW (decides) NW (that) NW (the) NW (portions) NW (of) NW (the) NW (thesis) NW (not) NW (yet) NW (reviewed.) NW (are) NW (irrelevant,) NW (and) NW (begins) NW (his) NW (conclusion.) NW (The) NW (closing) NW (of) NW (the) NW (thesis) NW (is) NW (straightforward) NW (and) NW (not) NW (particularly) NW (related) NW (to) NW (the) NW (subject) NW (matter,) NW (so) NW (it) NW (will) NW (not) NW (be) NW (discussed) NW (here.) NW
+NEWPARA
+ (In) NW (all,) NW (the) NW (process) NW (of) NW (self-evaluation,) NW (though) NW (producing) NW (the) NW (higher) NW (quality) NW (work,) NW (has) NW (significant) NW (drawbacks.) NW (At) NW (times) NW (it) NW (can) NW (be) NW (so) NW (confusing) NW (as) NW (to) NW (scare) NW (the) NW (writer) NW (off,) NW (which) NW (is) NW (something) NW (I) NW (won't) NW (get) NW (into) NW (now.) NW (For) NW (instance,) NW (in) NW (this) NW (work) NW (the) NW (author) NW (has) NW (become) NW (so) NW (confused) NW (that) NW (at) NW (the) NW (end) NW (the) NW (conclusion,) NW (as) NW (he) NW (himself) NW (admits,) NW (is) NW (\\not) NW (particularly) NW (related) NW (to) NW (the) NW (subject) NW (matter.") NW (He) NW (seems) NW (to) NW (feel) NW (that) NW (the) NW (process) NW (of) NW (self-evaluation,) NW (while) NW (it) NW (has) NW (allowed) NW (him) NW (to) NW (complete) NW (an) NW (otherwise) NW (poorer) NW (thesis) NW (in) NW (good) NW (form,) NW (has) NW (destroyed) NW (his) NW (paths) NW (of) NW (thought) NW (such) NW (that) NW (he) NW (merely) NW (ends) NW (the) NW (thesis) NW (in) NW (completely) NW (unacceptable) NW (style,) NW (saying) NW (\\Not) NW (that) NW (I) NW (would) NW (ever) NW (do) NW (this.) NW (The) NW (End.") NW (By) NW (doing) NW (this) NW (he) NW (shows) NW (that) NW (what) NW (he) NW (originally) NW (thought) NW (was) NW (a) NW (good) NW (idea) NW (may) NW (have) NW (turned) NW (out) NW (to) NW (instead) NW (be) NW (something) NW (he) NW (finds) NW (himself) NW (criticizing,) NW (and) NW (towards) NW (the) NW (end) NW (he) NW (seems) NW (to) NW (come) NW (to) NW (a) NW (decision) NW (that) NW (he) NW (is) NW (simply) NW (putting) NW (his) NW (foot) NW (in) NW (his) NW (mouth) NW (and) NW (had) NW (better) NW (stop.) NW (Not) NW (that) NW (I) NW (would) NW (ever) NW (do) NW (this.) NW (The) NW (End.) NW
+ENDPAGE
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/support/lametex/src/format.ps b/support/lametex/src/format.ps
new file mode 100644
index 0000000000..a00cecf7dd
--- /dev/null
+++ b/support/lametex/src/format.ps
@@ -0,0 +1,404 @@
+%! This is a PostScript library meant to be printed only with other files %%%
+%% Postscript Code by Jonathan Monsarrat Copyright 1992
+%% permission given for anything except selling this or deleting the header.
+%% This is the LameTeX Formatter, uses the LaTeX language
+% Depends on "EndPage" and "StartPage" to be set up by a page formatter
+
+/formatdict 100 dict def % This should be 77?
+
+formatdict begin
+/wlist 100 array def % Maximum of 100 words on a line
+%% Better give these variables default values in case we try to
+%% do an EndPage but they have not yet been defined
+
+/baselineskip 200 def /wlen 0 def /baselineskip 0 def /bottommargin 0 def
+/parindent 0 def /justify 0 def /rightmargin 0 def /leftmargin 0 def
+/topmargin 0 def /parskip 0 def /newfontcmd 1 def /para 0 def
+/vtotal 0 def /wordlen 0 def /ypos 0 def /ytemp 0 def
+
+%%%%%%%%%%%%%%%% num InitWord - %%%%%%%%%%%%%%%%%%%%%%%
+% InitWord takes an setflat values and flattens the current path
+% It also defines some globals that will get "NextWord" up and running
+/InitWord
+{
+ /xpos currentflat def % Save current flatness
+ PageShape setflat flattenpath
+ % gsave stroke grestore % Uncomment this line to show the margin path
+ /coords Approx def
+ pathbbox % It the current path is bigger than the margins, widen them!
+ dup TM gt { /TM exch def } { pop } ifelse
+ dup RM gt { /RM exch def } { pop } ifelse
+ dup BM lt { /BM exch def } { pop } ifelse
+ dup LM lt { /LM exch def } { pop } ifelse
+
+ xpos setflat % Restore flatness.
+ false fontnames newfontcmd get cvx exec
+ /xlocs [ ] def
+ /welem 1 def /wlen 0 def /woids 0 def
+ /eslot LM def
+ /ypos TM topmargin sub def
+ /vtotal 0 def
+ /xpos 0 def /nxpos 0 def
+ wlist 0 [ newfontcmd false ] put
+ /wtemp 0 def
+ NextSpace pop
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%% - NewXSpace bool %%%%%%%%%%%%%%%%%%%%%%
+% If there's "room on the bottom" as defined by xlocs, check to see if
+% there's "room on the top" as defined by NewXSpace. Returns success boolean.
+/NewXSpace
+{
+ nxpos newxlocs length 1 sub lt
+ {
+ newxlocs nxpos 2 getinterval {} forall exch
+ /nxpos nxpos 2 add def
+% If there's any intersection of top and bottom 'good places' set bslot, eslot
+ dup xa le { pop xa } if leftmargin add /bslot exch def
+ dup xb ge { pop xb } if rightmargin sub /eslot exch def
+ bslot eslot lt { true } { NewXSpace } ifelse
+ }
+ {
+ false
+ } ifelse
+} bind def
+
+%%%%%%%%%%%%%%% - NextSpace bool %%%%%%%%%%%%%%%%%%%%%%
+% NextSpace defines the next space available for writing by
+% setting ypos to the Y location and bslot and eslot to the beginning
+% and end of the next open text writing area. Returns success boolean.
+/NextSpace
+{
+ xpos xlocs length 1 sub lt % are there any X's left on current line
+ {
+ /xa xlocs xpos get def
+ /xb xlocs xpos 1 add get def
+ NewXSpace
+ { true }
+ {
+ /nxpos 0 def
+ /xpos xpos 2 add def
+ NextSpace
+ } ifelse
+ }
+ {
+ ypos % Leave on the stack for later comparison
+ /ypos ypos
+ vspace 0 eq
+ {
+ baselineskip para { parskip add } if /vtotal baselineskip def
+ }
+ {
+ vspace /vspace 0 def
+ } ifelse
+ sub def
+ ypos BM bottommargin add ge
+ {
+ /newxlocs coords 3 -1 roll 4 add true CheeseWhiz def
+ /xlocs coords ypos 4 sub true CheeseWhiz def
+ /xpos 0 def /nxpos 0 def
+ NextSpace
+ }
+ {
+ pop false
+ } ifelse
+ } ifelse
+ % if we're doing a paragraph and the NextSpace isn't big enough
+ % for the indentation, then choose a new space.
+ % if found-space and para and justify
+ dup para justify 102 eq and and % 102 is ascii 'f' for FULL JUSTIFY
+ { /bslot bslot parindent add def bslot eslot gt
+ { pop NextSpace pop
+ } if
+ } if
+ /para false def
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%%%% - PrintWordList - %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% PrintWordList prints the words stored in array "wlist" at Y location ypos
+% with full justification between X locations bslot and eslot.
+/PrintWordList
+{
+ /vtotal 0 def
+ woids 0 ne
+ {
+ % Legal values for /justify are (l)eft (r)ight (f)ull (c)enter in ASCII
+ justify 99 eq % 99 is ascii 'c' for CENTERED
+ {
+ bslot eslot bslot sub wlen sub 2 div add ypos moveto
+ }
+ {
+ bslot justify 114 eq { eslot bslot sub wlen sub add } if % 114 is 'r'
+ ypos moveto
+ } ifelse
+ /sp eslot bslot sub wlen sub woids div def
+ 0 1 welem 1 sub
+ {
+ wlist exch get
+ dup type /stringtype eq
+ {
+ SHOWIT ( ) stringwidth pop 0 rmoveto
+ justify 102 eq { sp 0 rmoveto } if % 102 is ascii 'f'
+ }
+ {
+ dup type /arraytype eq
+ {
+ { } forall
+ {
+ ( ) stringwidth pop neg 0 rmoveto
+ justify 102 eq { sp neg 0 rmoveto } if % 102 is ascii 'f'
+ } if
+ fontnames exch get cvx true exch exec
+ }
+ {
+ 0 rmoveto
+ } ifelse
+ } ifelse
+ } for
+ wlist 0 [ newfontcmd false ] put
+ /welem 1 def /wlen 0 def /woids 0 def
+ } if
+} def
+
+%%%%%%%%%%%%%%%%%%%%%%%%% - PrintClose - %%%%%%%%%%%%%%%%%%%%%%%%
+% PrintClose prints the words stored in the array "wlist" at Y location ypos
+% starting at X location bslot with left justification.
+/PrintClose
+{
+ justify 102 eq % 102 is ascii 'f'
+ {
+ /justify 108 def % 108 is ascii 'l' for flushleft
+ PrintWordList
+ /justify 102 def
+ }
+ {
+ PrintWordList
+ } ifelse
+} bind def
+
+%%%%%%%%%%%%%%%% string Parse - %%%%%%%%%%%%%%%%%%%%%%%%
+% Parse breaks a string into words based on spaces, passing each to NextWord
+/Parse
+{
+ dup length 0 eq % kill extra spaces by shaving them until null string
+ { pop }
+ { ( ) search { Parse pop Parse } { NW } ifelse } ifelse
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%%%% string NextWord - %%%%%%%%%%%%%%%%%%%%%%
+% NextWord appends the string to an array of words
+% and tries to place the text inside an arbitrary path (which was analyzed
+% by InitWord). It's meant to be an iterative part of a long list of
+% "string NextWord" sets which justifies text inside any closed path.
+/NextWord
+{
+ /word exch def word stringwidth pop /wordlen exch def
+ GrabSpace
+} bind def
+
+%%%%%%%%%% Takes a horizontal distance and a string for positioning
+/GrabSpace
+{
+ wordlen wlen add
+ eslot bslot sub gt
+ {
+ PrintWordList word type /stringtype ne { /welem 0 def } if
+ NextSpace
+ {
+ GrabSpace
+ }
+ {
+ % Have reached end of page
+ ENDPAGE STARTPAGE
+ /ypos baselineskip ypos add def /vtotal baselineskip def NEWLINE
+ GrabSpace
+ } ifelse
+ }
+ {
+ word type /stringtype eq
+ {
+ wlist welem word put /welem welem 1 add def
+ /wlen wlen ( ) stringwidth pop add def
+ /woids woids 1 add def
+ } if
+ /wlen wlen wordlen add def
+ } ifelse
+} def
+
+%%%%%%%%%%%%%%%% xwidth HSpace - %%%%%%%%%%%%%%
+% Adds to the current wlen and adds the right thing in the wlist array
+/HSpace
+{
+ dup wlen add /wlen exch def
+ wlist welem 3 -1 roll put /welem welem 1 add def
+} bind def
+
+
+%%%%%%%%%%%%%%%%% size type NewFont %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% NewFont sets a new font, given a type and size
+/NewFont
+{
+ { } forall /word exch def /newfontcmd exch def
+ word wlist welem [ newfontcmd 5 -1 roll ] put /welem welem 1 add def
+ false fontnames newfontcmd get cvx exec
+ word true eq woids 0 gt and
+ {
+ /wlen wlen ( ) stringwidth pop sub def
+ } if
+} bind def
+
+%%%%%%%%%%%%%% x y READJUST %%%%%%%%%%%%%%
+% Readjusts the line down by given amountif big fonts are being placed
+% in a small vertical space, and across if a horizontal space is being added.
+/READJUST
+{
+ wtemp type /arraytype eq % Don't do recursive READJUSTs
+ {
+ pop pop
+ }
+ {
+ /vspace exch def /wordlen exch def
+ /welem welem 1 sub def
+ GrabSpace vspace 0 ne { SKIPLINE } if % Skip to a new page if needed
+ /wtemp wlist def /woids 0 def /wlen 0 def
+ 0 1 welem /welem 0 def
+ {
+ wtemp exch get
+ dup type /stringtype eq
+ {
+ NextWord
+ }
+ {
+ dup type /arraytype eq
+ {
+ NewFont
+ }
+ {
+ HSpace
+ } ifelse
+ } ifelse
+ } for
+ wordlen HSpace
+ /wtemp 0 def
+ } ifelse
+} bind def
+
+%%%% Skipline skips a given amount of vertical space
+/SKIPLINE
+{
+ vspace 0 eq vspace vtotal gt or
+ {
+ vspace vtotal gt
+ {
+ /vspace vspace vtotal sub /vtotal vspace def def
+ } if
+
+ /ytemp ypos def
+ true
+ 20 % repeat
+ {
+ NextSpace not % did it get a new line successfully?
+ {
+ ENDPAGE STARTPAGE
+ /ypos baselineskip ypos add def /vtotal baselineskip def NEWLINE
+ } if
+ ypos ytemp ne { pop false exit } if
+ } repeat
+
+ { % Did the repeat "fail" by falling off the end?
+ erasepage
+ grestoreall
+ /Times-Roman findfont 20 scalefont setfont
+ 50 100 moveto
+ (Could not place words anywhere on the virtual page) show
+ showpage
+ quit
+ } if
+ } if
+} bind def
+
+%%%%%%%%%%%%%%%%%%%%%
+% Some startup definitions
+/para true def
+/vspace 0 def
+
+% User command definitions, meant to be called from outside
+/NW { NextWord } bind def
+/SHOWIT { show } bind def
+/NEWLINE { PrintWordList NextSpace pop } def
+/NEWPARA
+{
+ PrintClose
+ /para true def
+ SKIPLINE
+} bind def
+
+/ENUMERATE { dup stringwidth pop 9 add
+ bslot exch sub ypos moveto show } bind def
+/BULLET
+{
+ newpath bslot 9 sub
+ ( ) stringwidth pop 1.7 div dup ypos add exch
+ 0 360 arc currentgray 0 setgray fill setgray
+} bind def
+
+/TIMESROMAN
+{
+ pop /Times-Roman findfont 10 scalefont setfont
+} bind def
+
+/BASELINESKIP
+{
+ /baselineskip exch def
+} bind def
+
+/STARTPAGE
+{
+ end
+ /savetype save def
+ StartPage
+ formatdict begin
+ InitWord
+} def
+
+/ENDPAGE
+{
+ PrintClose
+ % Put all the variables we want to save on the stack
+ baselineskip bottommargin parindent justify rightmargin leftmargin
+ topmargin parskip newfontcmd para wordlen ypos ytemp
+ word type /stringtype eq
+ {
+ mark word {} forall true
+ }
+ {
+ word false
+ } ifelse
+ end
+
+ savetype restore
+
+ formatdict
+ begin
+ {
+ counttomark string /word exch def
+ counttomark 1 sub -1 0
+ {
+ exch word 3 1 roll put % Builds word out of individual characters
+ } for
+ pop
+ }
+ {
+ /word exch def
+ } ifelse
+
+ % Recover all the variables
+ /ytemp exch def /ypos exch def /wordlen exch def
+ /para exch def /newfontcmd exch def
+ /parskip exch def /topmargin exch def /leftmargin exch def
+ /rightmargin exch def /justify exch def /parindent exch def
+ /bottommargin exch def /baselineskip exch def
+ end
+ EndPage
+ formatdict begin
+} def
diff --git a/support/lametex/src/lametex b/support/lametex/src/lametex
new file mode 100755
index 0000000000..e6a2081e13
--- /dev/null
+++ b/support/lametex/src/lametex
Binary files differ
diff --git a/support/lametex/src/latex.footer b/support/lametex/src/latex.footer
new file mode 100644
index 0000000000..5b1cb7a68d
--- /dev/null
+++ b/support/lametex/src/latex.footer
@@ -0,0 +1,4 @@
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/support/lametex/src/latex.header b/support/lametex/src/latex.header
new file mode 100644
index 0000000000..a928069226
--- /dev/null
+++ b/support/lametex/src/latex.header
@@ -0,0 +1,64 @@
+%!PS-Adobe-2.0
+%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
+%%Title: lametex.dvi
+%%Pages: 1 1
+%%BoundingBox: 0 0 612 792
+%%EndComments
+%%BeginProcSet: tex.pro
+/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
+load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
+isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
+Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
+round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
+N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
+/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
+statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
+/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
+/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
+/BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2
+array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
+B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
+setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup
+length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{
+ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B
+/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
+N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N
+
+/FMat [ 0.24 0 0 0.24 0 0 ] def
+/CharBuilder % fontdict ascii
+{
+ 1 index % fontdict ascii fontdict
+ /base get % fontdict ascii base
+ exch get % fontdict asciiequiv
+ exch /BitMaps get % asciiequiv BitMaps
+ exch get % bitmapstring
+ % ch-data becomes the bitmapstring for the ascii character
+ /ch-data exch def %
+ /ctr 0 def
+ % The next line is the "ch-dx" algorithm
+ ch-data dup length 1 sub get % ch-data last-char
+ 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
+ setcachedevice
+ ch-width ch-height true
+ [ 1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add ]
+ { ch-image } imagemask
+} bind def
+
+ /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr
+put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf
+div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook
+known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore
+showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
+known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
+array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N
+/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
+/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0
+7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
+TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
+-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{
+moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{
+S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B
+/j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w
+}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
+a}B /bos{/SS save N}B /eos{clear SS restore}B end
+%%EndProcSet
diff --git a/support/lametex/src/latex.hfooter b/support/lametex/src/latex.hfooter
new file mode 100644
index 0000000000..4c3576c27a
--- /dev/null
+++ b/support/lametex/src/latex.hfooter
@@ -0,0 +1,6 @@
+ end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300
+TeXDict begin
+%%EndSetup
diff --git a/support/lametex/src/plaintext.pl b/support/lametex/src/plaintext.pl
new file mode 100755
index 0000000000..bf6230614f
--- /dev/null
+++ b/support/lametex/src/plaintext.pl
@@ -0,0 +1,175 @@
+#!/usr/local/bin/perl -P
+# This program converts a PostScript file written by lametex -t and converts it
+# into a plain text file.
+#
+# Copyright 1992 Jonathan Monsarrat. Permission given to freely distribute,
+# edit and use as long as this copyright statement remains intact.
+
+# Cycle through all the input, breaking everything apart into word. Interpret
+# each word, building together a line of word and accumulating information
+# about the margins, line spacing, indentation, and justification.
+$justify = 102;
+$firstpage=1;
+while(<>)
+{
+ split; # Breaks this line up into tokens by whitespace.
+ foreach (@_) {
+ if(/^def$/) { &FLUSHLINE; &DEFINE; }
+ elsif(/^NW$/) { &NEXTWORD; }
+ elsif(/^NEWPARA$/) { &NEWPARA; }
+ elsif(/^BASELINESKIP$/) { &FLUSHLINE; $baselineskip = $last; }
+ elsif(/^NewFont$/) { if ($lastlast eq "true") { $glue = 1;} }
+ elsif(/^ENDPAGE/) { &FLUSHLINE;}
+ elsif(/^STARTPAGE/) {
+ if($firstpage==1) { $firstpage=0; }
+ else { printf("\n\014\n");} }
+ elsif(/^BULLET/) { $bullet=1; }
+ elsif(/^ENUMERATE/) {
+ $_ = substr($last,1,length($last)-2); # Take off parenthesis.
+ s/\\\\/"/;
+ s/\\\(/\(/;
+ s/\\\)/\)/;
+ $enum = $_; }
+
+
+ $lastlast=$last;
+ $last=$_;
+ }
+}
+
+&FLUSHLINE; # Don't forget to print the last line!
+
+###############################################
+# Handle the "def" keyword.
+sub DEFINE
+{
+ $lastlast = substr($lastlast,1);
+ eval("\$$lastlast = $last");
+}
+
+###############################################
+# Handle the next word to be printed.
+sub NEXTWORD
+{
+ $_ = $last;
+ if($last =~ /^\((\\\\)\)$/) {
+ $_ = "\\";
+ } else {
+ $_ = substr($_,1,length($_)-2); # Take off parenthesis
+ }
+ s/\\\\/\"/;
+ s/\\\(/\(/;
+ s/\\\)/\)/;
+ $word = $_;
+ if(length($word) + $linelength + 1 >
+ 80 - int($leftmargin/9) - int($rightmargin/9)) {
+ &PRINTLINE($justify);
+ }
+ if($glue) {
+ $glue = pop(@line);
+ push(@line, $glue.$word);
+ $glue = 0;
+ } else {
+ push(@line, $word);
+ }
+ $linelength += length($word)+1;
+}
+
+###############################################
+# Forces a print of the world list before margin space filled
+sub FLUSHLINE
+{
+ if($linelength > 0) {
+ if($justify == 102) {
+ &PRINTLINE(108); # Don't fully justify this line.
+ } else {
+ &PRINTLINE($justify);
+ }
+ }
+}
+
+###############################################
+# Make a new paragraph
+sub NEWPARA
+{
+ &FLUSHLINE;
+ if($vspace > 0) {
+ for($x=0; $x < $vspace/14; $x++) {
+ print "\n";
+ }
+ $vspace = 0;
+ if($para > 0) {
+ $leftmargin -= $para;
+ $para = 0;
+ }
+ } else {
+ for($x=0; $x < $parskip/14; $x++) {
+ print "\n";
+ }
+ if($justify != 99) {
+ $para=$parindent;
+ $leftmargin += $para;
+ }
+ }
+}
+
+###############################################
+# Print the current line to stdout with the given justification.
+sub PRINTLINE {
+ $justification = shift;
+
+ for($x=0; $x < int($leftmargin/9) - length($enum) - 1;
+ $x++) {
+ if($bullet && $x == int($leftmargin/9) - 2) {
+ print "*";
+ $bullet=0;
+ } else {
+ print " ";
+ }
+ }
+ if($enum) {
+ print $enum;
+ $enum="";
+ }
+ print " ";
+ if($justification == 114) { # flushright
+ for($x=0; $x <
+ 80 - int($rightmargin/9) - int($leftmargin/9) - $linelength; $x++) {
+ print " ";
+ }
+ } elsif($justification == 99) { # centered
+ for($x=0;$x <
+ (80 - int($rightmargin/9) - int($leftmargin/9) - $linelength)/2;
+ $x++) {
+ print " ";
+ }
+ }
+
+ $slack = 80 - int($leftmargin/9) - int($rightmargin/9) - $linelength;
+ $spaces = 1;
+ $count = 0;
+ foreach (@line) {
+ $count++; # fully justified?
+ if($justification == 102 && $slack > 0 && $count > 1) {
+ while($count > $spaces / ($slack+1) * ($#line + 1)) {
+ print " ";
+ $spaces++;
+ }
+ }
+ print;
+ print " ";
+ }
+
+ for($x=0; $x < $baselineskip/14; $x++) {
+ print "\n";
+ }
+
+ if($para > 0) {
+ $leftmargin -= $para;
+ $para = 0;
+ }
+
+ $linelength = 0; # Empty the current line variable.
+ $#line = -1;
+}
+