diff options
Diffstat (limited to 'graphics/pstex/examples')
-rw-r--r-- | graphics/pstex/examples/fullpage.sty | 16 | ||||
-rw-r--r-- | graphics/pstex/examples/leftpar.sty | 21 | ||||
-rw-r--r-- | graphics/pstex/examples/postscri.sty | 117 | ||||
-rw-r--r-- | graphics/pstex/examples/psfigs/coffee.ps | 24 | ||||
-rw-r--r-- | graphics/pstex/examples/psfigs/flow.ps | 697 | ||||
-rw-r--r-- | graphics/pstex/examples/psfigs/screen.ps | 549 | ||||
-rw-r--r-- | graphics/pstex/examples/pstex.tex | 493 |
7 files changed, 1917 insertions, 0 deletions
diff --git a/graphics/pstex/examples/fullpage.sty b/graphics/pstex/examples/fullpage.sty new file mode 100644 index 0000000000..52f6468abd --- /dev/null +++ b/graphics/pstex/examples/fullpage.sty @@ -0,0 +1,16 @@ +% fullpage option style. - Neil Hunt, Teleos, 5/31/89
+
+% Vertical alignment
+
+\topmargin -0.5in % distance to headers
+\headheight 0.2in % height of header box
+\headsep 0.3in % distance to top line
+\textheight 9.0in % height of text
+\footskip 0.3in % distance from bottom line
+\footheight 0.2in % height of footer box
+
+% Horizontal alignment
+
+\oddsidemargin 0.in
+\evensidemargin 0.in
+\textwidth 6.5in
diff --git a/graphics/pstex/examples/leftpar.sty b/graphics/pstex/examples/leftpar.sty new file mode 100644 index 0000000000..591f312ba0 --- /dev/null +++ b/graphics/pstex/examples/leftpar.sty @@ -0,0 +1,21 @@ +%
+% Left paragraph stuff.
+%
+\parindent 0mm
+\parskip 2ex plus .5ex minus .5ex
+\parskip \baselinestretch\parskip
+
+%
+% List spacing; this stuff changes mode i definitions.
+%
+\itemsep 0mm % parskip + itemsep between items.
+\topsep 0mm % parskip + topsep at top and bottom of items.
+\partopsep 1.5ex plus .5ex minus .5ex
+ % parskip + topsep + partopsep when list starts para.
+%
+% Footnote stuff
+%
+\footnotesep 2ex
+\long\def\@makefntext#1{$^{\@thefnmark}$
+ {\def\baselinestretch{1.0}\normalsize\footnotesize #1 \par}}
+\skip\footins 3ex plus 1ex minus 1ex
diff --git a/graphics/pstex/examples/postscri.sty b/graphics/pstex/examples/postscri.sty new file mode 100644 index 0000000000..10d284b368 --- /dev/null +++ b/graphics/pstex/examples/postscri.sty @@ -0,0 +1,117 @@ +%
+% Postscriptbox and psbox macros for use with dvips and pstex.
+%
+% Neil Hunt, Schlumberger Palo Alto Research.
+% hunt@spar.slb.com
+%
+% HISTORY
+%
+% $Log: postscript.sty,v $
+% Revision 1.5 89/01/09 13:05:38 hunt
+% Updated to use a single .psz file per job rather than a .tps file
+% for each included figure.
+%
+% Revision 1.4 88/09/20 13:12:18 hunt
+% Cosmetic changes
+%
+% Revision 1.3 88/08/04 12:33:19 hunt
+% A new psbox feature has been added for use with pstex:
+% This replaces the old psbox, and simplifies things a lot.
+%
+% Revision 1.2 88/08/04 09:50:46 hunt
+% Added RXB's psbox hacks:
+% {1} 18-Apr-88 Rafael Bracho (rxb) at Schlumberger Austin Systems Center
+% The postscriptbox macros were created by Neil Hunt at SPAR, I've
+% added the psbox ones to use the InsertFile special. Since I
+% fixed InsertFile, I don't know if we still need the postscriptbox
+% special, though.
+%
+% Revision 1.1 88/08/04 09:41:01 hunt
+% Initial revision - useful with early embed program versions.
+%
+
+%
+% Primitive: postscriptbox macros.
+% ===============================
+%
+% \postscriptbox{w}{h}{file} Box of size w, h.
+% \postscriptbox(w,h){file} Picture env. box of size w, h.
+%
+
+\def \postscriptbox{\@ifnextchar ({\@postscriptpicbox}{\@postscriptbox}}
+
+\def \@postscriptpicbox(#1,#2)#3{%
+\@postscriptbox{#1\unitlength}{#2\unitlength}{#3}}
+
+\def \@postscriptbox#1#2#3{% <width> <height> <file>
+\@xdim=#1\divide\@xdim 1000\multiply\@xdim\mag%
+\@ydim=#2\divide\@ydim 1000\multiply\@ydim\mag%
+\mbox{\vbox to #2{\vfil\hbox to #1%
+{\special{postscriptbox {\the\@xdim}{\the\@ydim}{#3}}\hfil}}}}
+
+%
+% Higher level macros.
+% ===================
+%
+% \psbox[dimensions-options]{psfile}
+% 1 \psbox writes to .aux ``\psboxaux[dimensions-options]{psfile}''
+% 2 pstex reads .aux files, writes \pssize macros to .psz file.
+% 3 .psz file is input, defines size macros by figure name.
+% 4 \psbox invokes size macros for each figure.
+%
+
+% Counters to disambiguate multiple references to the same figure.
+% t@psctr counts multiple occurrences of psboxaux's in .aux file.
+% f@psctr counts multiple occurrences of pssize's in .psz file.
+\newcounter{t@psctr}
+\newcounter{f@psctr}
+
+\def\psbox{\@ifnextchar [{\@psbox}{\@psbox[]}}
+
+%
+% First we write an entry on the aux file: psboxaux[args]{filename}
+% Next we generate the handle f@name used for this figure:
+% we check whether the tag `t@<filename>' is defined:
+% If not, this is the first time PS file <filename> has been used,
+% so we def \f@name = f@<filename>, and define the tag t@<filename>.
+% Otherwise, this filename has been used before, and we will add
+% a unique number to the name to disambiguate:
+% we def \f@name = fN@<filename> where N is the value of t@psctr++.
+% Now we try to access the \postscriptbox macro which is the expansion
+% of \f@name. If \f@name is undefined, we write a warning, and a placeholder.
+%
+
+\def\@psbox[#1]#2{%
+\if@filesw\immediate\write\@auxout{\string\psboxaux{#1}{#2}}\fi
+\@ifundefined{t@#2}%
+{\def\f@name{f@#2}\global\@namedef{t@#2}{\relax}}% % t@#2 undef'ed
+{\def\f@name{f\arabic{t@psctr}@#2}\stepcounter{t@psctr}}% t@#2 defined
+\@ifundefined{\f@name}{%
+\framebox[2in]{Figure {\tt #2}\rule[-1in]{0in}{2in}}% % \f@name undef
+\@warning{Figure `#2' on page \thepage \space undefined}}%
+{\csname \f@name \endcsname}} % \f@name def'd
+
+%
+% Prepare to read the .aux file:
+% Define psboxaux as null; it is only used as a flag for pstex.
+%
+
+\let\psboxaux\@gobbletwo
+
+%
+% Prepare to read the .psz file:
+% Define \pssize as a macro to build f@name in an identical manner to
+% above, and then define \f@name as the proper \postscriptbox macro.
+%
+
+\def\pssize#1#2#3{%
+\@ifundefined{f@#3}%
+{\def\f@name{f@#3}}% % f@#2 undef'ed
+{\def\f@name{f\arabic{f@psctr}@#3}\stepcounter{f@psctr}}% f@#2 defined
+\global\@namedef{\f@name}{\postscriptbox{#1}{#2}{#3}}}
+
+%
+% Read the .psz file to define the sizes for each figure.
+%
+
+\@input{\jobname.psz}
diff --git a/graphics/pstex/examples/psfigs/coffee.ps b/graphics/pstex/examples/psfigs/coffee.ps new file mode 100644 index 0000000000..a3a69c1e19 --- /dev/null +++ b/graphics/pstex/examples/psfigs/coffee.ps @@ -0,0 +1,24 @@ +%!
+%%BoundingBox: 95 95 195 195
+gsave
+100 100 translate
+10 setlinewidth
+1 setlinejoin
+0 setgray
+newpath
+0 0 moveto
+50 0 lineto
+50 90 lineto
+0 90 lineto
+0 0 lineto
+closepath
+gsave stroke grestore
+fill
+newpath
+50 20 moveto
+90 10
+90 80
+50 70 curveto
+stroke
+showpage
+grestore
diff --git a/graphics/pstex/examples/psfigs/flow.ps b/graphics/pstex/examples/psfigs/flow.ps new file mode 100644 index 0000000000..3b3e3014f8 --- /dev/null +++ b/graphics/pstex/examples/psfigs/flow.ps @@ -0,0 +1,697 @@ +%!
+%%Pages: (atend)
+%%DocumentFonts: (atend)
+%%EndComments
+%
+% Frame Maker PostScript Prolog 1.10, for use with Maker 1.10
+% Copyright (c) 1986,87 by Frame Technology, Inc. All rights reserved.
+%
+% Known Problems:
+% Due to bugs in Transcript the 'PS-Adobe-' is omitted from line 1
+% "Bites" out of patterns on LaserWriter
+% Filled areas (w/setpattern) come out different on typesetter
+/FrameDict 30 dict def
+% The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk
+FrameDict /tmprangecheck errordict /rangecheck get put
+errordict /rangecheck {FrameDict /bug true put} put
+FrameDict /bug false put
+mark
+% Some PS machines read past the CR, so keep the following 3 lines together!
+currentfile 5 string readline
+00
+0000000000
+cleartomark
+errordict /rangecheck FrameDict /tmprangecheck get put
+FrameDict /bug get {
+ /readline {
+ /gstring exch def
+ /gfile exch def
+ /gindex 0 def
+ {
+ gfile read pop
+ dup 10 eq {exit} if
+ dup 13 eq {exit} if
+ gstring exch gindex exch put
+ /gindex gindex 1 add def
+ } loop
+ pop
+ gstring 0 gindex getinterval true
+ } def
+ } if
+/savematrix {
+ orgmatrix currentmatrix pop
+ } bind def
+/restorematrix {
+ orgmatrix setmatrix
+ } bind def
+/dmatrix matrix def
+/dpi 72 0 dmatrix defaultmatrix dtransform
+ dup mul exch dup mul add sqrt
+def
+/max {2 copy lt {exch} if pop} bind def
+/min {2 copy gt {exch} if pop} bind def
+/fonts 95 array def
+/DiacriticEncoding [
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl
+/numbersign /dollar /percent /ampersand /quotesingle /parenleft
+/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
+/two /three /four /five /six /seven /eight /nine /colon /semicolon
+/less /equal /greater /question /at /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 /bracketleft /backslash
+/bracketright /asciicircum /underscore /grave /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 /braceleft /bar
+/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute
+/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis
+/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis
+/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve
+/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex
+/udieresis /dagger /.notdef /cent /sterling /section /bullet
+/paragraph /germandbls /registered /copyright /trademark /acute
+/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef
+/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown
+/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef
+/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde
+/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright
+/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis
+/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl
+/periodcentered /quotesinglbase /quotedblbase /perthousand
+/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute
+/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve
+/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron
+/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
+] def
+/DiacriticEncode {
+ /basefontdict exch def
+ /newfontdict basefontdict maxlength dict def
+ basefontdict
+ {exch dup /FID ne
+ {dup /Encoding eq
+ {exch pop DiacriticEncoding}
+ {exch}
+ ifelse
+ newfontdict 3 1 roll put
+ }
+ {pop pop}
+ ifelse
+ } forall
+ newfontdict
+ } bind def
+/NonDiacriticEncode {
+ /basefontdict exch def
+ /newfontdict basefontdict maxlength dict def
+ basefontdict
+ {exch dup /FID ne
+ {exch newfontdict 3 1 roll put}
+ {pop pop}
+ ifelse
+ } forall
+ newfontdict
+ } bind def
+/setpattern {
+ /$freq exch def
+ /$bwidth exch def
+ /$bpside exch def
+ /$bstring exch def
+ /$onbits 0 def /$offbits 0 def
+ $freq 0 {/$y exch def
+ /$x exch def
+ /$xindex $x 1 add 2 div $bpside mul cvi def
+ /$yindex $y 1 add 2 div $bpside mul cvi def
+ $bstring $yindex $bwidth mul $xindex 8 idiv add get
+ 1 7 $xindex 8 mod sub bitshift and 0 ne
+ {/$onbits $onbits 1 add def 1}
+ {/$offbits $offbits 1 add def 0}
+ ifelse
+ }
+ setscreen
+ {} settransfer
+ $offbits $offbits $onbits add div setgray
+ } bind def
+/grayness {
+ setgray
+ orgxfer cvx settransfer
+ orgfreq organgle orgproc cvx setscreen
+ } bind def
+/normalize {
+ transform cvi exch cvi exch itransform
+ } bind def
+/dnormalize {
+ dtransform cvi exch cvi exch idtransform
+ } bind def
+/lnormalize {
+ 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop
+ } def
+/linewidths [
+ 0.5 lnormalize
+ 1.0 lnormalize
+ 3.0 lnormalize
+ 4.0 lnormalize
+ ] def
+/fillprocs
+ [{0.00 grayness}
+ {0.10 grayness}
+ {0.30 grayness}
+ {0.50 grayness}
+ {0.70 grayness}
+ {0.90 grayness}
+ {0.97 grayness}
+ {1.00 grayness}
+ {<0F1E3C78F0E1C387> 8 1 dpi 16 div setpattern}
+ {<0F87C3E1F0783C1E> 8 1 dpi 16 div setpattern}
+ {<CCCCCCCCCCCCCCCC> 8 1 dpi 16 div setpattern}
+ {<FFFF0000FFFF0000> 8 1 dpi 16 div setpattern}
+ {<8142241818244281> 8 1 dpi 16 div setpattern}
+ {<03060C183060C081> 8 1 dpi 16 div setpattern}
+ {<8040201008040201> 8 1 dpi 16 div setpattern}
+ {}
+ {1.00 grayness}
+ {0.90 grayness}
+ {0.70 grayness}
+ {0.50 grayness}
+ {0.30 grayness}
+ {0.10 grayness}
+ {0.03 grayness}
+ {0.00 grayness}
+ {<F0E1C3870F1E3C78> 8 1 dpi 16 div setpattern}
+ {<F0783C1E0F87C3E1> 8 1 dpi 16 div setpattern}
+ {<3333333333333333> 8 1 dpi 16 div setpattern}
+ {<0000FFFF0000FFFF> 8 1 dpi 16 div setpattern}
+ {<7EBDDBE7E7DBBD7E> 8 1 dpi 16 div setpattern}
+ {<FCF9F3E7CF9F3F7E> 8 1 dpi 16 div setpattern}
+ {<7FBFDFEFF7FBFDFE> 8 1 dpi 16 div setpattern}
+ {}
+ ] def
+/DOCUMENT {
+ /#copies exch def
+ 0 ne /landscape exch def
+ /docheight exch def
+ /docwidth exch def
+ scale
+ landscape {
+ 90 rotate
+ 0 docheight neg translate
+ } if
+ 2 setlinecap
+ currenttransfer cvlit /orgxfer exch def
+ currentscreen cvlit /orgproc exch def
+ /organgle exch def /orgfreq exch def
+ /orgmatrix matrix def
+ } bind def
+/H {
+ linewidths exch get setlinewidth
+ } bind def
+/X {
+ fillprocs exch get exec
+ } bind def
+/V {
+ gsave eofill grestore
+ } bind def
+/N {
+ gsave stroke grestore
+ } bind def
+/L {
+ /n exch def
+ newpath
+ normalize
+ moveto
+ 2 1 n {pop normalize lineto} for
+ } bind def
+/Y {
+ L
+ closepath
+ } bind def
+/K {
+ /n exch def
+ newpath
+ moveto
+ 3 1 n {pop curveto} for
+ } bind def
+/J {
+ /n exch def
+ newpath
+ moveto
+ 1 1 n {pop curveto} for
+ } bind def
+/R {
+ /y2 exch def
+ /x2 exch def
+ /y1 exch def
+ /x1 exch def
+ x1 y1
+ x2 y1
+ x2 y2
+ x1 y2
+ 4 Y
+ } bind def
+/BEGINPAGE {
+ /pagesave save def
+ gsave
+ } bind def
+/ENDPAGE {
+ grestore
+ showpage
+ pagesave restore
+ } bind def
+/C {
+ grestore
+ gsave
+ R
+ clip
+ } bind def
+/U {
+ grestore
+ gsave
+ } bind def
+/DEFINEFONT {
+ /fontname exch def
+ /fontscale exch def
+ /fontnum exch def
+ /fontdict fontname findfont fontscale scalefont def
+ fontdict /Encoding get StandardEncoding eq
+ {
+ fontdict DiacriticEncode
+ /fontdict exch def
+ } {
+ fontdict NonDiacriticEncode
+ /fontdict exch def
+ } ifelse
+ fonts fontnum
+ fontnum fontdict definefont
+ put
+ } bind def
+/F {
+ fonts exch get
+ setfont
+ } bind def
+/T {
+ moveto show
+ } bind def
+/P {
+ moveto
+ 0 32 3 2 roll widthshow
+ } bind def
+/S {
+ moveto
+ 0 exch ashow
+ } bind def
+/B {
+ moveto
+ 0 32 4 2 roll 0 exch awidthshow
+ } bind def
+/Q {
+ moveto
+ gsave show grestore
+ } bind def
+/W {
+ dnormalize
+ /$dy exch def
+ /$dx exch def
+ normalize
+ /$y exch def
+ /$x exch def
+ /$t currentlinewidth def
+ savematrix
+ /$dl $dx $dx mul $dy $dy mul add sqrt def
+ $dl 0.0 le {/$dl 1.0 def} if
+ /$cos $dx $dl div def
+ /$sin $dy $dl div def
+ /$r [$cos $sin $sin neg $cos 0.0 0.0] def
+ /$t2 $t 2.5 mul 3.5 max def
+ newpath
+ $x $y translate
+ $r concat
+ 0.0 0.0 moveto
+ $dl $t 2.7 mul sub 0.0 rlineto
+ stroke
+ restorematrix
+ $x $dx add $y $dy add translate
+ $r concat
+ $t 0.67 mul setlinewidth
+ $t 1.61 mul neg 0.0 translate
+ 0.0 0.0 moveto
+ $t2 1.7 mul neg $t2 2.0 div moveto
+ 0.0 0.0 lineto
+ $t2 1.7 mul neg $t2 2.0 div neg lineto
+ stroke
+ $t setlinewidth
+ restorematrix
+ } bind def
+/G {
+ gsave
+ newpath
+ normalize translate 0.0 0.0 moveto
+ dnormalize scale
+ 0.0 0.0 1.0 5 3 roll arc
+ closepath eofill
+ grestore
+ } bind def
+/A {
+ /y exch def
+ /x exch def
+ /h exch def
+ /w exch def
+ x y normalize /yy exch def /xx exch def
+ w h dnormalize /hh exch def /ww exch def
+ ww abs hh abs xx ww add yy hh sub
+ gsave
+ savematrix
+ newpath
+ translate
+ scale
+ 0.0 0.0 1.0 5 3 roll arc
+ 0 setlinecap
+ restorematrix
+ stroke
+ grestore
+ } bind def
+/BEGINPRINTCODE {
+ /print_saveobject save def
+ /showpage {} def
+ newpath
+ translate
+ 0.0 0.0 moveto
+ } bind def
+/ENDPRINTCODE {
+ clear
+ print_saveobject restore
+ } bind def
+FrameDict begin
+/gn {
+ 0
+ { 46 mul
+ cf read pop
+ 32 sub
+ dup 46 lt {exit} if
+ 46 sub add
+ } loop
+ add
+ } bind def
+/cfs {
+ /str sl string def
+ 0 1 sl 1 sub {str exch val put} for
+ str def
+ } bind def
+/ic [
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
+ 0
+ {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx}
+ {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx}
+ {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12}
+ {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh}
+ {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh}
+ {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl}
+ {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl}
+ {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl}
+ {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl}
+ ] def
+/ms {
+ /sl exch def
+ /val 255 def
+ /ws cfs
+ /im cfs
+ /val 0 def
+ /bs cfs
+ /cs cfs
+ } bind def
+400 ms
+/ip {
+ is
+ 0
+ cf cs readline pop
+ { ic exch get exec
+ add
+ } forall
+ pop
+
+ } bind def
+/wh {
+ /len exch def
+ /pos exch def
+ ws 0 len getinterval im pos len getinterval copy pop
+ pos len
+ } bind def
+/bl {
+ /len exch def
+ /pos exch def
+ bs 0 len getinterval im pos len getinterval copy pop
+ pos len
+ } bind def
+/s1 1 string def
+/fl {
+ /len exch def
+ /pos exch def
+ /val cf s1 readhexstring pop 0 get def
+ pos 1 pos len add 1 sub {im exch val put} for
+ pos len
+ } bind def
+/hx {
+ 3 copy getinterval
+ cf exch readhexstring pop pop
+ } bind def
+end
+/BEGINBITMAP {
+ gsave
+ FrameDict begin
+ translate scale /h exch def /w exch def
+ /lb w 7 add 8 idiv def
+ sl lb lt {lb ms} if
+ /is im 0 lb getinterval def
+ ws 0 lb getinterval is copy pop
+ /cf currentfile def
+ w h 1 [w 0 0 h neg 0 h]
+ {ip} image
+ end
+ grestore
+ } bind def
+/ENDBITMAP {
+ } bind def
+%%EndProlog
+%%BeginSetup
+1. 1. 612. 792. 0 1 DOCUMENT
+0 12. /Helvetica DEFINEFONT
+%%EndSetup
+%%BoundingBox: 9 414 603 756
+%%Page: "1" 1
+BEGINPAGE
+9. 414. 603. 756. C
+9. 414. 603. 756. R
+6 X
+V
+91. 648. 136. 684. R
+7 X
+V
+0 H
+0 X
+N
+7 X
+90. 450. 22.5 18. 50.5 720. G
+0 X
+90. 90.1 -22.5 18. 73. 738. A
+90. 180.1 22.5 18. 28. 738. A
+180. 270.1 22.5 -18. 28. 702. A
+270. 0.1 -22.5 -18. 73. 702. A
+0. 90. -22.5 18. 73. 738. A
+7 X
+90. 450. 22.5 18. 59.5 549. G
+0 X
+90. 90.1 -22.5 18. 82. 567. A
+90. 180.1 22.5 18. 37. 567. A
+180. 270.1 22.5 -18. 37. 531. A
+270. 0.1 -22.5 -18. 82. 531. A
+0. 90. -22.5 18. 82. 567. A
+7 X
+90. 450. 22.5 18. 50.5 558. G
+0 X
+90. 90.1 -22.5 18. 73. 576. A
+90. 180.1 22.5 18. 28. 576. A
+180. 270.1 22.5 -18. 28. 540. A
+270. 0.1 -22.5 -18. 73. 540. A
+0. 90. -22.5 18. 73. 576. A
+7 X
+90. 450. 22.5 18. 176.5 666. G
+1 H
+0 X
+90. 90.1 -22.5 18. 199. 684. A
+90. 180.1 22.5 18. 154. 684. A
+180. 270.1 22.5 -18. 154. 648. A
+270. 0.1 -22.5 -18. 199. 648. A
+0. 90. -22.5 18. 199. 684. A
+217. 594. 262. 630. R
+7 X
+V
+0 X
+N
+7 X
+% 90. 450. 22.5 18. 311.5 603. G
+% 0 X
+% 90. 90.1 -22.5 18. 334. 621. A
+% 90. 180.1 22.5 18. 289. 621. A
+% 180. 270.1 22.5 -18. 289. 585. A
+% 270. 0.1 -22.5 -18. 334. 585. A
+% 0. 90. -22.5 18. 334. 621. A
+7 X
+90. 450. 22.5 18. 302.5 612. G
+0 X
+90. 90.1 -22.5 18. 325. 630. A
+90. 180.1 22.5 18. 280. 630. A
+180. 270.1 22.5 -18. 280. 594. A
+270. 0.1 -22.5 -18. 325. 594. A
+0. 90. -22.5 18. 325. 630. A
+0 F
+(LaTeX) 95. 663. T
+(pstex) 225. 609. T
+(file.tex) 33. 717. T
+(files.ps) 31. 555. T
+(file.aux) 157. 663. T
+(file.psz) 283. 609. T
+343. 648. 388. 684. R
+7 X
+V
+0 X
+N
+(LaTeX) 347. 663. T
+469. 567. 514. 603. R
+7 X
+V
+0 H
+0 X
+N
+7 X
+90. 450. 22.5 18. 428.5 612. G
+0 X
+90. 90.1 -22.5 18. 451. 630. A
+90. 180.1 22.5 18. 406. 630. A
+180. 270.1 22.5 -18. 406. 594. A
+270. 0.1 -22.5 -18. 451. 594. A
+0. 90. -22.5 18. 451. 630. A
+(file.dvi) 410. 609. T
+(dvips) 476. 582. T
+523. 567. 568. 567. 586. 603. 541. 603. 4 Y
+7 X
+V
+0 X
+N
+(output) 537. 582. T
+82. 675. 9. 0. W
+1 H
+145. 666. 9. 0. W
+208. 621. 9. 0. W
+262. 612. 18. 0. W
+334. 675. 9. 0. W
+0 H
+397. 612. 9. 0. W
+460. 576. 9. 0. W
+514. 585. 18. 0. W
+73. 720. 334. 720. 2 L
+N
+82. 675. 82. 720. 2 L
+N
+145. 738. 396. 738. 2 L
+1 H
+N
+397. 657. 397. 612. 2 L
+0 H
+N
+208. 666. 208. 621. 2 L
+1 H
+N
+325. 612. 334. 612. 2 L
+N
+334. 612. 334. 657. 2 L
+N
+396. 738. 396. 675. 2 L
+N
+73. 558. 460. 558. 2 L
+0 H
+N
+208. 603. 208. 558. 2 L
+N
+208. 603. 9. 0. W
+451. 612. 460. 612. 2 L
+N
+460. 612. 460. 594. 2 L
+N
+460. 594. 9. 0. W
+460. 576. 460. 558. 2 L
+N
+1 H
+144. 738. 0. -72. W
+136. 666. 145. 666. 2 L
+0 H
+N
+199. 666. 208. 666. 2 L
+1 H
+N
+208. 666. 334. 666. 2 L
+0 H
+N
+1 H
+334. 666. 9. 0. W
+334. 675. 334. 720. 2 L
+0 H
+N
+1 H
+334. 657. 9. 0. W
+396. 675. 388. 675. 2 L
+N
+397. 657. 388. 657. 2 L
+0 H
+N
+7 X
+90. 450. 22.5 18. 346.5 513. G
+0 X
+90. 90.1 -22.5 18. 369. 531. A
+90. 180.1 22.5 18. 324. 531. A
+180. 270.1 22.5 -18. 324. 495. A
+270. 0.1 -22.5 -18. 369. 495. A
+0. 90. -22.5 18. 369. 531. A
+324. 435. 369. 471. R
+7 X
+V
+0 X
+N
+(Program) 376. 450. T
+(File) 376. 510. T
+477. 513. 18. 0. W
+1 H
+477. 453. 18. 0. W
+1.99 (Data Flow) 502. 510. P
+(Principal) 502. 456. T
+(Iteration) 502. 444. T
+(Text) 18. 668. T
+(Source) 18. 656. T
+(File) 18. 644. T
+0 H
+36. 679. 9. 18. W
+36. 597. 9. -16. W
+0.66 (DVI Format) 452. 648. P
+(Output) 540. 648. T
+(Figure) 360. 582. T
+0.98 (Size Data) 360. 570. P
+358. 583. -21. 9. W
+450. 648. -16. -11. W
+(Document) 540. 636. T
+530. 645. 28. -33. W
+(Figure) 18. 623. T
+(Source) 18. 611. T
+(Files) 18. 599. T
+(LaTeX) 204. 700. T
+1.64 (Intermediate File) 204. 688. P
+201. 700. -16. -8. W
+(File) 452. 636. T
+530. 645. 536. 647. 2 L
+N
+9. 414. 603. 756. R
+N
+U
+ENDPAGE
+%%Trailer
+%%Pages: 1 -1
+%%DocumentFonts:
+%%+ Helvetica
diff --git a/graphics/pstex/examples/psfigs/screen.ps b/graphics/pstex/examples/psfigs/screen.ps new file mode 100644 index 0000000000..d236c90338 --- /dev/null +++ b/graphics/pstex/examples/psfigs/screen.ps @@ -0,0 +1,549 @@ +%!PS-Adobe-2.0 EPSF-1.2
+%%BoundingBox:95 152 517 639
+%%Creator: DECW$PRINTSCREEN
+%%Title: printscr.ps
+%%CreationDate: 16-AUG-1989
+%%Pages: 1
+%%EndComments
+%%EndProlog
+%%Page: 1 1
+5 dict begin
+/savobj save def
+/picstr 58 string def
+95 152 translate
+422 487 scale
+458 528 1 [458 0 0 -528 0 528]
+{ currentfile picstr readhexstring pop }
+image
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03fffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01fffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00fffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc007ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe003ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffff001fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03fffffffff800fffffffffffffff
+fffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffe01fffffffffc003ffffffffffffff
+fffffffffffffffffffffffffffffffff81fffffffffffffffffffffffffffffffffffffffffffffffffffe01fffffffffc001ffffffffffffff
+ffffffffffffff0003fffffffffffffff00fffffffffffffffffffffffffffffffffffffffffffffffffffc00fffffffffe001ffffffffffffff
+fffffffffff8000000000ffffffffffff007ffffffffffffffffffffffffffffffffffffffffffffffffffe00ffffe7ffff8007fffffffffffff
+fffffcffffc000000000003fffffffffe007ffffffffffffffffffffffffffffffffffffffffffffffffffe00ffff81ffffc001fffffffffffff
+fffff000e00000000000000ffffffffff003fffffffffffffffffffffffffffffffffffffffffffffffffff007fff00ffffe000fffffffffffff
+ffffe0000000000000000007fffffffff003fffffffffffffffffffffffffffffffffffffffffffffffffff007fff00fffff800fffffffffffff
+ffffe0000000000000000007fffffffff803fffffffffffffffffff9fffffffffffffffffffffffffffffff807ffe007ffff8007ffffffffffff
+ffffc0000000000000000007fffffffffc03ffffffffffffffffffe07ffffffffffffffffffffffffffffff807fff001ffffc007ffffffffffff
+ffffe0000000000000000003fffffffffc03ffffffffffffffffffc03ffffffffffffffffffffffffffffff807fff000ffffe007ffffffffffff
+ffffe0000000003fe0000001fffffffffc03ffffffffffffffffffc03ffffffffffffffffffffffffffffff803fff8003ffff807ffffffffffff
+fffff0000000ffffffffc001fffffffffc03ffffffffffffffffff801ffffffffffffffffffffffffffffffc03fff8000ffffc07ffffffffffff
+fffff800000ffffffffff000fffffffffc01ffffffffffffffffffc03ffffffffffffffffffffffffffffffc03fffc0003fffe0fffffffffffff
+fffffffc07fffffffffff0007ffffffffc01ffffffffffffffffffc03ffffffffffffffffffffffffffffffc03fffe0001ffffffffffffffffff
+fffffffffffffffffffff8007ffffffffe00ffffffffffffffffffc03fffcffffffffffffffffffffffffffc03ffff8000ffffffffffffffffff
+fffffffffffffffffffffe007ff9fffffe00ffffffffffffffffffc03fff03fffffffffffffffffffffffffc01ffffe0003fffffffffffffffff
+fffffffffffffffffffffe007fe07fffff00ffffffffffffffffffc03ffe01fffffffffffffffffff7fffffe01fffff8000fffffffffffffffff
+fffffffffffffffffffffe007fc03fffff00ffffffffffffffffffc03ffe00ffffffffffffffffffc1fffffe01fffffc0007ffffffffffffffff
+fffffffffffffffffffffe007fc03fffff00ffffffffffffffffffc03ffc00ffffffffffffffffff80fffffe01ffffff0007ffffffffffffffff
+fffffffffffffffffffffc007f801fffff00ffffffffffffffffffc03ffe00ffffffffffffffffff80fffffe01ffffffc007ffffffffffffffff
+fffffffffffffffffffffc007fc03fffff00ffffffffffffffffffc03ffe003fffffffffffffffff00fffffe01ffffffe007ffffffffffffffff
+fffffffffffffffffffff8007fc03fffff00ffffffffffffffffffc03fff001fffffffffffffffff00fffffe01fffffff007ffffffffffffffff
+fffffffffffffffffffff8007fc03fffff00ffffffffffffffffffc03fff801fffffffffffffffff00fffffe01fffffffc0fffffffffffffffff
+fffffffffffffffffffff8007fc03fffff00ffffffffffffffffffc03fffc00fffffffffffffffff00fffffe01ffffffffffffffffffffffffff
+fffffffffffffffffffff8007fc03fffff00fffffffff801ffffffc03fffc00ffffffff9ffffffff00fffffe01ffffffffffffffffffffffffff
+fffffffffffffffffffffc007fc03fffff00ffffffff00007fffffc03fffe007ffffffe07fffffff00fffffe01ffffffffffffffffffffffffff
+fffffffffffffffffffffc007fc03fffff00ffffffe000001fffffc03ffff803ffffffc03fffffff00fffffe01ffffffffffffffffffffffffff
+fffffffffffffffffffff8007fc03fffff00ffffff80000007ffffc03ffff803ffffffc00ffffffe00fffffe007fffffffffffffffffffffffff
+fffffffffffffffffffff8007fc03fffff00fffffe00000003ffffc03ffffc01ffffff8001fffffe00ffffff001fffffffffffffffffffffffff
+fffffffffffffffffffff8007fc03fffff00ffffc000000001ffffc03ffffc00ffffffc0003ffffc01ffffff000fffffffffffffffffffffffff
+fffffffffffffffffffff800ffc03fffff00fffc0000000000ffffc03ffffe007fffffc0000ffffc01ffffff00007fffffffffffffffffffffff
+fffffffffffffffffffff000ffc03fffff00fff00000000000ffffc03fffff003fffffe00007fffc03ffffff000000ffffffffffffffffffffff
+ffffffffffffffffffffe000ffc03fffff00ffe0000001f000ffffc03fffff001ffffff80007fff803ffffff8000001fffffffffffffffffffff
+ffffffffffffffffffffe000ffc03fffff00ffe000003ffc00ffffc03fffff800ffffffc0007fff803ffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffc001ffc03fffff00ffc0000fffff00ffffc03fffffc00fffffff0007fff007ffffff800000000fffffffffffffffffff
+ffffffffffffffffffff8007ffc03fffff00ffe0003fffff81ffffc03fffffe007ffffffc007fff007ffffff8000000003ffffffffffffffffff
+fffffffffffffffffffe000fffc03fffff00ffe000ffffffffffffc03ffffff003fffffff807fff00fffffff8000000001ffffffffffffffffff
+fffffffffffffffffffc001fffc03fffff00fff00fffffffffffffc03ffffff003fffffffc0fffe00fffffff8060000001ffffffffffffffffff
+fffffffffffffffffffc003fffc03fffff00fffcffffffffffffffc03ffffff801ffffffffffffe00fffffff807e000001ffffffffffffffffff
+fffffffffffffffffff8007fffc03fffff00ffffffffffffffffffc03ffffff800ffffffffffffc00fffffff807ffe0001ffffffffffffffffff
+fffffffffffffffffff000ffffc03fffff00ffffffffffffffffffc03ffffffc00ffffffffffffc01fffffff807fffc001ffffffffffffffffff
+ffffffffffffffffffe001ffffc01fffff00ffffffffffffffffffc03ffffffe00ffffffffffff803fffffff807ffffc03ffffffffffffffffff
+ffffffffffffffffffc003ffffc01fffff00ffffffffffffffffffc03fffffff007fffffffffff803fffffff807fffffffffffffffffffffffff
+ffffffffffffffffffc007ffffe00fffff00ffffffffffffffffffc03fffffff003fffffffffff007fffffff803fffffffffffffffffffffffff
+ffffffffffffffffff800fffffe00fffff00ffffffffffffffffffc03fffffff803fffffffffff007fffffffc03fffffffffffffffffffffffff
+ffffffffffffffffff001ffffff00fffff00ffffffffffffffffffc03fffffff803ffffffffffe00ffffffffc03fffffffffffffffffffffffff
+fffffffffffffffffe003ffffff00fffff00ffffffffffffffffffc03fffffffc01ffffffffffc00ffffffffc03fffffffffffffffffffffffff
+fffffffffffffffffc007ffffff00fffff00ffffffffffffffffffc03fffffffc01ffffffffff800ffffffffc03fffffffffffffffffffffffff
+fffffffffffffffff8007ffffff80fffff00ffffffffffffffffffc03fffffffc00ffffffffff801ffffffffc03fffffffffffffffffffffffff
+fffffffffffffffff000fffffff80fffff00ffffffffffffffffffc03fffffffe00ffffffffff003ffffffffc01fffffffffffffffffffffffff
+ffffffffffffffffe001fffffffc1fffff00ffffffffffffffffffc03fffffffe00fffffffffe007ffffffffe01fffffffffffffffffffffffff
+ffffffffffffffffc003fffffffffffffe00ffffffffffffffffffc03ffffffff00fffffffffe00fffffffffe01fffffffffffffffffffffffff
+ffffffffffe7ffff8007fffffffffffffe00ffffffffffffffffffc03ffffffff007ffffffffc00fffffffffe01fffffffffffffffffffffffff
+ffffffffff80001e0007fffffffffffffc00ffffffffffffffffffc03ffffffff007ffffffffc01fffffffffe01fffffffffffffffffffffffff
+fffffffffe000004000ffffffffffffffc01ffffffffffffffffffc03ffffffff803ffffffff003fffffffffe01fffffffffffffffffffffffff
+fffffffff8000000003ffffffffffffffc01ffffffffffffffffffc03ffffffff803fffffffc003fffffffffe00fffffffffffffffffffffffff
+fffffffff0000000007ffffffffffffffc03ffffffffffffffffffc03ffffffffc03fffffff8007ffffffffff00fffffffffffffffffffffffff
+fffffffff000000000fffffffffffffff803ffffffffffffffffffc03ffffffffc03fffffff000fffffffffff007ffffffffffffffffffffffff
+ffffffffe000000001fffffffffffffff803ffffffffffffffffffc03ffffffffc01ffffe00000fffffffffff807ffffffffffffffffffffffff
+ffffffffe000000007fffffffffffffff003ffffffffffffffffff803ffffffffc01ffff800001fffffffffff807ffffffffffffffffffffffff
+ffffffffc00000000fffffffffffffffe007ffffffffffffffffff803ffffffffc00ffff000003fffffffffff807ffffffffffffffffffffffff
+ffffffffc00000003fffffffffffffffe00fffffffffffffffffff007ffffffffe00ffff000007fffffffffff803ffffffffffffffffffffffff
+ffffffffe0000000ffffffffffffffffc00fffffffffffffffffff00fffffffffe00fffe00001ffffffffffff801ffffffffffffffffffffffff
+ffffffffe0000007ffffffffffffffff800ffffffffffffffffffe00ffffffffff00ffff00007ffffffffffff801ffffffffffffffffffffffff
+fffffffff000001fffffffffffffffff001ffffffffffffffffffc00ffffffffff007fff0000fffffffffffffc00ffffffffffffffffffffffff
+fffffffff80000fffffffffffffffffe003ffffffffffffffffffc00ffffffffff003fff8001fffffffffffffc00ffffffffffffffffffffffff
+ffffffffff0007fffffffffffffffffc003ffffffffffffffffff801ffffffffff003fffe7fffffffffffffffe007fffffffffffffffffffffff
+fffffffffffffffffffffffffffffff0007ffffffffffffffffff003ffffffffff803fffffffffffffffffffff007fffffffffffffffffffffff
+ffffffffffffffffffffffffffffffe000ffffffffffffffffffe003ffffffffff803fffffffffffffffffffff807fffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc001ffffffffffffffffffc007ffffffffffc03fffffffffffffffffffff807fffffffffffffffffffffff
+ffffffffffffffffffffffffffffff0003fffffffffffffffffd000fffffffffffc03fffffffffffffffffffff807fffffffffffffffffffffff
+fffffffffffffffffffffffffffffa0007fffffffffffffffff0001fffffffffffe03fffffffffffffffffffffc07fffffffffffffffffffffff
+ffffffffffffffffffffffffffffe0000fffffffffffffffffe0003fffffffffffe03fffffffffffffffffffffc07fffffffffffffffffffffff
+ffffffffffffffffffffffffffffc0001fffffffffffffffffe0007ffffffffffff07fffffffffffffffffffffe0ffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80007fffffffffffffffffc000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff8000ffffffffffffffffffc001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff0001ffffffffffffffffffe007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff0007ffffffffffffffffffe01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff800ffffffffffffffffffff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff801fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdebffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf7ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf7ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf7ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf7ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf7ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf7ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf7ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf7ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf7ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf7ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf7ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf7ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf7ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf7ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdebffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffff
+feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff
+fe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff007007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff007007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff007007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff007007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff007007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff007007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff007007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff007007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff007007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff007007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff007007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff007007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff007007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febff000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febfffffffffffffffffffffffffffffffffffffffffe7fffffe7fffffffff9fffe3ffffffffff9fcffffffffd7fffffffffffffffffffffffff
+febfffffe0ffffffffffffffffffdfeffffffffffffee7fffffe7fefffffff9fffcfffffffffff9dcffffe3ffd7fffffffffffffffffffffffff
+febfffffe67fffffffffffffffff9fcffffffffffffce7ffffffffcfffffff9fffcffffffffffff9fffffd9ffd7fffffffffffffffffffffffff
+febfffffe7387f39c399f9f9c39307830ff0e1cce1f824f0fe4e7182664c3f93c3830e4c3fc399904c9e0f9ffd7fffffffffffffffffffffffff
+febfffffe7333f399999f99999899fce67e7ccccccfce2667e2664ce66499f8999ce66499f999999cc4ccf3ffd7fffffffffffffffffffffffff
+febfffffe7333f3b9999fc93f9999fce67e3fcccccfce6667e6667ce66399f9999ce66399f99cb99ccccce7ffd7fffffffffffffffffffffffff
+febfffffe7333f939999fc93c1999fce67f1e0e5c0fce6607e6667ce66781f9981ce66781f81e799ccccce7ffd7fffffffffffffffffffffffff
+febfffffe7333f979999fc0399999fce67f8cce5cffce667fe6667ce6679ff999fce6679ff9fd399cccc8ffffd7fffffffffffffffffffffffff
+febfffffe6733fc79991fe6799999fce67fcccf3cefce6677e6666ce4679df999dce6679df9d9999ccce4e7ffd7fffffffffffffffffffffffff
+febfffffe0f87fcfc3c9fe67c499c7e30fe1e273e1fe2670fe0e71e3267c3f83c3cf0e7c3fc3999c4ccfce7ffd7fffffffffffffffffffffffff
+febfffffffffff9ffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffccffffd7fffffffffffffffffffffffff
+febfffffffffff9ffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffe1ffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffff800000000000fff8000000000fff80000000000000003fffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffbffffffffffe7ffbffffffffe7ffbfffffffffffffff9fffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffa000000000023ffbffffffffe3ffbfffffffffffffff8fffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffaffffffffffa1ffbffffffffe1ffbfffffffffffffff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffaffffffffffa1ffbffffffffe1ffbfffffffffffffff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffaffffffffffa1ffbffffffffe1ffbfffffffffffffff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffaffffffffffa1ffbffffffffe1ffbfffffffffffffff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffaffffffffffa1ffbffffffffe1ffbffffffffffff3ff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffaff9e7fffffa1ffbff8effffe1ffbffe1ffffffff3ff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffaff9e7fffffa1ffbff8effffe1ffbffccffffffff3ff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffaffcef0f0ffa1ffbffa6e1ffe1ffbff9fc393c7873ff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffaffcce667ffa1ffbffa6ccffe1ffbff9f998993333ff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffaffe5e663ffa1ffbffb2ccffe1ffbff9ff9999f333ff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffafff3e071ffa1ffbffb2ccffe1ffbff9fc1999f033ff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffafff3e7f8ffa1ffbffb8ccffe1ffbff9f99999f3f3ff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffafff3e77cffa1ffbffb8ccffe1ffbffce99999b3b3ff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffafff3f0e1ffa1ffbffbce1ffe1ffbffe1c499c7873ff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffaffffffffffa1ffbffffffffe1ffbfffffffffffffff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffaffffffffffa1ffbffffffffe1ffbfffffffffffffff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffaffffffffffa1ffbffffffffe1ffbfffffffffffffff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffaffffffffffa1ffbffffffffe1ffbfffffffffffffff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffa000000000021ffbffffffffe1ffbfffffffffffffff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffbffffffffffe1ffbffffffffe1ffbfffffffffffffff87ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffff8000000000001ff80000000001ff800000000000000007ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffc000000000001ffc0000000001ffc00000000000000007ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffe000000000001ffe0000000001ffe00000000000000007ffffffffffffffffffd7fffffffffffffffffffffffff
+febfffffffffffffffffffffff000000000001fff0000000001fff00000000000000007ffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffe7ffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7fffffffffffffffffffffffff
+febffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7ffffff9ffffffffffffffffff
+fe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffff
+feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffe7ffffffffffff
+fe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffcfffffffffcfffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffff9fffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3e7fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffff9fffffffff
+fffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9cffffffffffff
+fffffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffcf3ffffff9ff3fffffffff
+ffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffff8fffffff3ffe7fffffffff
+ffffffffffffffffffffffffffffffffffffffff3fe7fffffffffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffff
+fffffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffff
+ffffffffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffff
+fffffffffffffffffffffffffffffffffffffffffe61ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffff
+fffffffffffffffffff9ffffffffffffffffffffff9fffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffcffffffffffff
+ffffffffffffffffcf9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffff
+fffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff9f3900ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffe733f0cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff039c49ffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffc1909e67ffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffcf3ffffffffe4301ff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffc3e3e6333fffffff87ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffcffffffffe010f879fffffffc7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffff3fff9ffff0f8cfe0cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffce67f9fe7f3ce100c7ffffff81ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffff
+ffffffffffffffff9fe4843021ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffff
+fffffffffffe73fffff9e0039ffffff84f3fffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffff
+ffffffffffffffffffff9306003ffffcf9f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffff
+fffffffffcfffffffce3f03c003ffff83fc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe727ff9ffffffff
+fffffff9fe4fffffffe79f87e0c7ffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffcfffffffffff3f90cfffff3cfe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe733fffffffffff
+ffffffffffffffffffff9ff3e47ffff3cc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8ffffffffffff
+fffffffffffffffffffffff1087fffffe39ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7cffffffffff
+ffffffffffffffffffffffc073ffffff249fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7cfffffffffff
+fffffffffffffffffffffff93c0fffffc09fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffccf9ffffffffff
+fffffffffffffffffffffff2679fffc3263ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffff
+fffffffffffffffffffffffe39fffffce7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc009fffff1f3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffff
+ffffffffffffffffffffffe001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc900fffffcff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffe387ffffff3f9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffff207ffffffc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc803fffffff3ffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffe79cffffff3f3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff21ffffffff99fffffffffffffffffffffffffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffff07e7fffff907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffe3fe3ffff39fffffffffffffffffffffffffffffffffffffffffffffff03ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff23fffffce7fffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffff3f9e0ffffffffcffffffffffffffffffffffffffffffffffe7ffffffffcffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffff8fffffffc821fffffffffffffffffffffffffffffffffffe7fffffffff927ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffe1fffffff0c87fffffffffffffffffffffffffffffcfffffffffffffffcfc98fffffffffffffffffffffffffffffff
+fffffffffffffffffffffc7fc3fffffcf3ffffffffffffffffffffffffffffff27fffe7f9fffffff8fcf93ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff0fffffc8cfffffffffffffffffffffffffffffffc3ffffffffffffff0cfff3ffffffffffffffffffffffffffffff
+fffffffffffffffffffffff01ffffff067fffffffffffffffffffffffffffffe73ffffffcfffffffff99ffffffffffffff9ffffffffffffff9ff
+fffffffffffffffffffffce64fffffc67fffffffffffffffffffffffffffffcf9ffffff9ffffffff2262393fffffffff3fffffcfffffe7ffffff
+ffffffffffffffffffffffffffffffff9ffffffffffffffffffffffffffffff3c4fffffffffffffc112704ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffff067fffffffffffffc3860ffffffffffffcfffcffffffffffffff
+ffffffffffffffffffffffcffffffffe667ffffffffffffffffffffffffffff273ffff3cffffffffe4003fffffffffffffe7fffffcffffffffff
+ffffffffffffffffffffcfe7ffffffe7ccffffffffffffffffffffffffffffffc27fff9fffffffff9f338fffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffff9ffffffffffffffffffffffffffffff98fe7ffff3ffffffff81ce19ffffffffffffffffffffffffffffff
+ffffffffffffffffffff3ffffffffff3ff3fffffffffffffffffffffffffffce047fff9fffffffffffe11f3fffffffffe7e7ffffffffff3fffff
+ffffffffffffffffffffff9fffffffff87fffffffffffffffffffffffffffffc007fffffffffffffccc0fffffffffffffe7fffffffffffffffff
+ffffffffffffffffffffe7c33ffffffffffffffffffffffffffffffffffffff8f9fffff9fffffffffc1fff9ffffffffff3ffffffffffffffffff
+fffffffffffffffffffffc9cffffffffcfffffffffffffffffffffffffffffff071ffffffffffffffffffcfffffffffffffffffcffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc903ffffffe7fffffffff9fe7fffffffe7fffffffffffffffffff
+fffffffffffffffffffffe1fffffffffffffffffffffffffffffffffffffffff98fffffffffffffffffff9fffffffffffffffffffcffffffffff
+ffffffffffffffffffff198ffffffffffffffffffffffffffffffffffffffffff87ffffcffffffffffffcfffffffffff93ffffffffffffffffff
+ffffffffffffffffffffc7fffffffffffffffffff9ffffffffffffffffffffffffffffffe7fffffffff9ffffffffffffe79fffffffffffffffff
+ffffffffffffffffffff3f33fffffffffffffffffffffffffffffffffffffff840ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffff863ffffffffffffffffffff3ffffffffffffffffffffffffffff
+fffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffe0fffffffffffffffffffffcfffffffffffffffffffffffffffff
+ffffffffffffffffffffc3ffffffffffffffffffffffffffffffffffffffffff20cffffffffffffffffffffffffffffffffcffffffffffffffff
+ffffffffffffffffffc8cf39ffffffffffffffffffffffffffffffffffffffffc093ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffcfffffffffffffffffffffffffffff9fffe3fffffe7fccfffffcfffffffffffe67fffffffffffffffffffffffffffff
+fffffffffffffffffcc0007fffffffffffffffffffffffffff0fffff3ffffff84e4ffff3ffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffc7e7ffffffffffffffffffffffffffcf3cffcfffffff9ff1fffffffffffffff3fffffffffffffffffffffffffffffffff
+ffffffffffffffffff279ffffffffffffffffffffffffffffffe7cffffcffffff23fffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffff9ff121fffffffffffffffffffffffffffffcf024cffffffff913fffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffc80fc3ffffffffffffffffffffffffffffe7c7ff3fffffffcf9ffffffffffffff1ffffffffffffffffffffffffffffffffff
+fffffffffffffffc3e13f9fffffffffffffffffffffffffffc7fc0ff3ffffffc90ffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffcc3810fffffffffffffffffffffffffffff01ffce7ffffffcf0fffffffffcffffffffffffffffffffffffffffffffffffffff
+fffffffffffff864130ffffffffffffffffffffffff3fffff9fffc3ffffffffe7fcfffffffcfffffff0fffffffffffffffffffffffffffffffff
+fffffffffffffc3c7fcc8ffffffffffffffffffffffffffffe7f1fe1cfffffff9c7ffffffe7f3fffff39ffffffffffffff3fffffffffffffffff
+fffffffffffffcffe1984ffffffffffffffffffffffffffff1ff9c9f3ffffffff03fffffe3f9ffffffffcfffffffffffffffffffffffffffffff
+fffffffffffff08718e3ffffffffffffffffffffffffffffff99fe7fe3fffff3c0ffffffff873fffffe7ffffffffffffffffffffffffffffffff
+ffffffffffff39c199cf9fffffffffffffffffffffffffffff273ff333fffffcffcfffffffffe7fffe7fffffffffffffffffffffffffffffffff
+fffffffffffffc4038ff9fffffffffffffffffffffffffffff3e67ff3f3ffffff87ffffffc3e1fffffffffffffffffffffffffffffffffffffff
+fffffffffffff0e0ffffffffffffffffffffffffffffffffffffff81fffffff81fe7fffffe0e7ffffe7fffffffffffffffffffffffffffffffff
+fffffffffffffc820c7ffffffffffffffffffffffffffffffffffffffffffff9987ffffffe1f93ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffe1ffffffffffffffffffffffffffffffffff9ffffffffffff3cffffff098ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffe60ffcfffffffffffffffffffffffffffffffffffffffffffffcc03fffffcc0e7fffe7ffffffffffffffffffffffffffffffffff
+fffffffffffffe39e7fffffffffffffffffffffffffffffffffffffff3fffffff9ffffffe60e7fff99ffffffffffffffffffffffffffffffffff
+ffffffffffffffff87fffffffffffffffffffffffffffffffffffffffffffffff8fffffffcf9cfffffffffffffffffffffffffffffffffffffff
+fffffffffffffe09ffffffffffffffffffffffffffffffffffffffffffffffff30fffffffff3cffffffffffffffffffff9ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff33ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98ffffffcffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1fffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffe3fffffffffcfffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffe1fffffffffffffffffffffff9ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf3ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8278fffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99cf3ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc2679ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04f0fffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffcf139ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3e67fffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f3ffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf8cfffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc004fffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe27fffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc9f3fffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffe39e7fffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff3fff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffcfe7fffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffcffffffffffffffcf27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff9ff3fffffffff3fffcff39ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff89fce7ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffe73ff0fffc3fffff9c3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffe3f1ffff9ffe7fcfffe73fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffff9fc9fcfcfffffffffc43fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffcce67fff9fff03fffe4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffe7fffffff3fffffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffe39f0ffe7cffffff99fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffff39fcfff3ffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffe7c19fffffcfe7fffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffcf9ffffffffffff9f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffff3fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffe7ff3fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffff3cffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+savobj restore
+end
+showpage
+%%Trailer
diff --git a/graphics/pstex/examples/pstex.tex b/graphics/pstex/examples/pstex.tex new file mode 100644 index 0000000000..621e561a1b --- /dev/null +++ b/graphics/pstex/examples/pstex.tex @@ -0,0 +1,493 @@ +\documentstyle[postscript,fullpage,leftpar]{article}
+\sloppy
+
+\begin{document}
+
+\title{Including Figures into Typeset Documents}
+
+\author{Neil Hunt \\
+ Teleos Research \\
+ 576 Middlefield Road \\
+ Palo Alto \\
+ California 94301}
+\maketitle
+
+\section{Introduction}
+
+While typesetting languages like \TeX\ \cite{Knuth:texbook}
+and \LaTeX\ \cite{Lamport:latex} have
+facilities for making line drawings by describing them in
+words,
+the procedure is very slow and error prone,
+and the quality of the results can be disappointing.
+Such illustrations are more quickly prepared using
+a graphical editor.
+
+An alternative is to prepare the whole document
+using a
+``What You See Is What You Get''
+system such as Macdraw or FrameMaker.
+Unfortunately these have their own limitations --
+typesetting mathematics in these systems is very hard,
+for example.
+
+A lot of users prefer to prepare the {\em text} of documents
+using a typesetting language,
+and the {\em figures} using a graphical editor.
+The cut and paste operation which is then required to put the
+final document together is very undesirable.
+
+In all three of these cases, the problems with incorporating
+figures into a document make authors
+reluctant to add figures when they would be helpful,
+and delay making corrections and changes.
+
+I describe a system
+by which separate figures
+can be incorporated into a typeset document
+at the time of printing.
+The system permits a variety of ways of sizing the illustrations,
+either scaling the illustration to the
+space available in the text,
+or setting the size of the space in the text
+to match the original size of the figure.
+
+Apart from illustrations created on a graphical editor,
+digitised photographs, processed images, screendumps, and a variety
+of other types of figures can be merged into
+a document by this system.
+
+The main issues to be addressed by such a system are:
+\begin{itemize}
+\item The size of the figure and the space left in the flow of
+ text must be the same.
+\item When the figure is updated, its size may change;
+ the size of the space left in the text must change to match.
+\item If the author is responsible for measuring the size of the
+ illustration and typing it into the typesetter source text,
+ most of the figures will {\em not} fit in the spaces left for them.
+\item When a user creates a figure in a graphical editor,
+ he draws it with a particular size.
+ Usually, this will be the size it should have in the final document.
+ Sometimes it is appropriate to scale figures,
+ either by a fixed amount, or perhaps
+ to make all the figures as wide as the width of the column of text.
+ A useful system {\em must} provide for the size of the illustration
+ to be set in a variety of ways.
+\end{itemize}
+
+The problem breaks down into two parts:
+First, there is the problem of merging the figure description
+and the textual description into a single stream sent to the printer.
+Second, there is the problem of communicating the size and scaling
+information between the systems used to prepare the illustrations,
+and the typesetter.
+
+Fortunately, much of the problem is solved automatically
+by the use of PostScript \cite{Adobe:postscript} as a page description language
+for both the text and the illustrations.
+It is relatively easy to merge the PostScript streams,
+and the PostScript itself provides the medium for
+communicating the document sizes,
+by means of the meta comment
+\verb|%%BoundingBox|.
+We shall now examine how to put the various pieces together
+to make a useful system.
+
+\section{Merging PostScript Figures into \TeX\ and \LaTeX}
+
+The \TeX\ typesetter
+generates device independent {\tt DVI} output,
+which is subsequently converted into a printer language.
+By focusing on PostScript as the printer language,
+we lose the device independence;
+however, with the proliferation of PostScript printers,
+this is becoming less of an issue.
+
+The \verb|\special| command of \TeX\
+allows an arbitrary string to be passed from the
+document source language into the {\tt DVI} file,
+where it can be interpreted as a command to merge in a separate file.
+The focus of the merging operation is thus the {\tt dvips} postprocessor
+which performs the conversion from {\tt DVI} to PostScript.
+I defined a \verb|\special| command
+which conveys a filename, a width, and a height to the {\tt dvips}
+program.
+{\tt DVI} has the notion of a {\em current position}
+on the page; this supplies the position at which the figure is to
+be placed, which the width and height from the
+\verb|\special|
+command used to control the size of the figure.
+
+For the figures to be included,
+I chose to use a standard called Encapsulated PostScript (EPS),
+which is a set of guidelines on how to structure a PostScript
+program to facilitate this kind of merging.
+The most important feature of EPS in this application
+is the meta comment
+``\verb|%%BoundingBox:| $x1$ $y1$ $x2$ $y2$''
+which delimits the rectangle on the page within which all marks
+made by the program will lie,
+expressed in the coordinate system in effect when the program
+is executed.
+By inserting appropriate {\tt translate} and {\tt scale} commands
+into the PostScript ahead of the program,
+the figure may be fitted into any part of the page.
+The other requirement for merging is to cancel the
+command {\tt showpage} of the merged document,
+which would otherwise cause the page to be printed
+prematurely,
+before all the required marks had been made upon it.
+
+Sadly, the bounding box meta comment is not required for a conforming
+EPS program, and many programs do not produce one.
+Without some way of knowing the region of the page covered by
+the figure, it is impossible to meet the goals stated above
+for including figures in documents.
+For figures produced by FrameMaker,
+which do not include a bounding box comment,
+the size can be deduced by scanning the PostScript
+for a command sequence defining a ``frame'' within which the
+figure can be drawn.
+If the user adopts the convention of always drawing within a frame,
+this works satisfactorily.
+Another sad example is MacDraw,
+which produces PostScript which is far from conforming to EPS conventions,
+and so far all attempts to include Macdraw diagrams have failed.
+Fortunately Adobe Illustrate is a better program which generates
+conforming EPS, with a bounding box comment.
+
+I added code to {\tt dvips} which responds to a
+\verb|\special|
+command.
+The indicated PostScript file is opened,
+the
+\verb|%%BoundingBox|
+comment is located and read,
+the translation and scaling required to cause
+the corners of the bounding box to match the position and size
+is determined.
+PostScript is then emitted which redefines the {\tt showpage}
+command as null and performs the transformations,
+and the included PostScript program is copied to the output.
+
+I then created a macro\\
+\verb|\postscriptbox{width}{height}{filename}|
+which creates a \TeX\ ``box'' of the indicated width and height,
+with the current point set to the bottom left corner.
+A box is a primitive in \TeX\ which may be used exactly
+like a character; it can be included in a line of text,
+stacked in an equation or array,
+or included within a
+\verb|\center| and a \verb|\figure|
+environment to make a centred, floating figure.
+
+This solves the first part of the problem: merging figures
+into the \TeX\ or \LaTeX\ document.
+It also ensures that the figure is always scaled
+to the size of the space left in the flow of text in the document
+(the size of the box).
+However, the communication of size which it affords is one directional;
+there is no way for the user to include a figure
+at its natural or designed size.
+Of course, this missing capability is the one most required
+for including figures.
+
+\def\mug{\raisebox{-0.5ex}{\postscriptbox{2ex}{2.5ex}{psfigs/coffee}}}
+
+The \verb|\postscriptbox| macro on its own is useful for defining new
+symbols or characters without going to {\sc METAFONT}
+\cite{Knuth:tex-metafont}.
+For example, the macro
+\verb|\def\mug{\postscriptbox{2ex}{2.5ex}{coffee}}|
+defines a coffee mug character (\,\mug) which tracks the size of
+the current font:
+{\tiny tiny mug \mug}
+{\small small mug \mug}
+{\normalsize normal mug \mug}
+{\Large large mug \mug}.
+
+\section{Communicating Size from Figure to \TeX\ or \LaTeX}
+
+\begin{figure*}
+ \begin{center}
+ \psbox[width=0.95\textwidth]{psfigs/flow}
+ \end{center}
+ \caption{The process of typesetting a \LaTeX\ document with PostScript
+ figures.
+ This figure was included at 95\% of the width of the text.}
+ \label{fig:flow}
+\end{figure*}
+The second part of the problem is communicating
+the original design size of the figure from the system
+on which it was created into \TeX.
+Clearly this information is carried in the PostScript
+as the bounding box;
+however, there is no way to get \TeX\ or \LaTeX\ to parse
+the PostScript to obtain this data
+without making significant extensions
+to the typesetter program itself,
+which is not practical.
+
+The use of a preprocessor is the obvious solution.
+Such a tool could parse the typesetter source text
+to detect a meta-command indicating the inclusion of a figure,
+read the figure file to obtain its size,
+and replace the meta command in the source text stream
+with a
+\verb|\postscriptbox| command.
+
+There are a few problems with this approach.
+First, it is not easy to convince \TeX\ or \LaTeX\ to
+operate in a pipeline appropriate for a preprocessor.
+If this could be solved, the preprocessor would
+have to understand not only its own meta command,
+but also recognise and act upon
+\verb|\input|, \verb|\include|, and \verb|\includeonly|
+commands.
+It would also have to understand conditional commands
+and indeed the full syntax of defining new macros,
+in case some other command of interest is buried within another macro.
+
+Fortunately, an alternative mechanism exists,
+as exploited by other facilities such as
+BiB\TeX.
+The procedure is to use the {\tt .aux} file to drive the
+processor.
+This file is created by \LaTeX\ as it processes the document;
+there is no hierarchy (commands are not buried within other macros)
+and all conditional expressions are resolved.
+The job of the processor is now much simpler,
+as it only has to recognise the figure inclusion meta command,
+and the the \verb|\input| command.
+(\TeX\ does not automatically generate such a file;
+however it is easy to add the macros required to make
+it behave in a similar way as \LaTeX,
+and enable the same figure facilities to be used.)
+
+I have created a program called {\tt pstex}
+which scans the {\.aux} file created by \LaTeX,
+locating figure inclusion meta commands.
+When it finds a figure to be included,
+it reads the PostScript of the figure
+to determine its size,
+and writes an additional file
+called the {\tt .tps} file,
+which contains just a \verb|\postscriptbox| command,
+with the size filled in according to the size read from the PostScript.
+
+To go with this, there is an additional \LaTeX\ macro,
+called \verb|\psbox[options]{filename}|
+This macro performs two tasks;
+first it causes an entry to be made in the
+{\tt .aux} file containing the options string and the filename,
+and then it searches for the {\tt .tps} file with a name corresponding
+to that in the argument.
+On the first run of \LaTeX, there will be no such file,
+and the \verb|\psbox| macro will generate an \verb|\fbox|
+(a framed box) as a placeholder.
+After {\tt pstex} has been run over the {\tt .aux} file,
+in subsequent passes of \LaTeX\ the \verb|\psbox|
+macro {\em will} find the {\tt .tps} file,
+containing the primitive \verb|\postscriptbox|
+command with the sizes as derived from the PostScript,
+which it then executes.
+
+This mechanism allows an author to include a figure file
+at the size at which it was designed,
+without having to type that size into the source text
+for the typesetter at any time.
+Furthermore,
+whenever the figure is altered,
+any size change is reflected in the document simply
+by making one pass with {\tt pstex} and one pass with \LaTeX.
+
+\subsection{The Options String}
+
+\begin{figure*}
+ \begin{center}
+ \psbox[scale=0.5]{psfigs/screen}
+ \end{center}
+ \caption{Example screendump, included at 0.5 $\times$ nominal scale.}
+ \label{fig:screen}
+\end{figure*}
+
+The \verb|\psbox| command accepts an optional argument,
+which is passed on directly to {\tt pstex}.
+This argument is used to control how {\tt pstex}
+converts the size obtained from the PostScript
+into the width and height in the \verb|\postscriptbox| command.
+Currently {\tt pstex} understands options
+{\tt width=X},
+{\tt height=X},
+{\tt scale=Y},
+and {\tt aspect=Y},
+where {\tt X} is a string or macro which expands into any length
+command valid
+within a \verb|\setlength| command
+(such as \verb|2in| or \verb|0.9\columnwidth|),
+and {\tt Y} is a floating point number or a macro which expands into
+a floating pointer number.
+The {\tt width} and {\tt height} options override the
+natural width and height obtained from the PostScript file;
+if only one is specified,
+then the natural aspect ratio of the PostScript is preserved,
+unless overridden by an {\tt aspect} option.
+The {\tt scale} option scales both dimensions whether obtained
+from the PostScript, or overridden by one of the other options.
+
+Since the options string is passed unchanged to {\tt pstex},
+new capabilities can be added very easily;
+for example an option could be made which adds a fixed amount of
+additional margin around each figure.
+A more elaborate option could cause {\tt pstex}
+to include a conditional in flagged {\tt .tps}
+files so that large time consuming figures
+could be omitted from the printing process on draft printings.
+
+An advantage of having the width and height be arbitrary
+\TeX\ length specifications is that they may contain
+{\em glue}, or stretchable dimensions,
+allowing \TeX\ to vary the lengths to fit optimally
+into the page layout.
+An additional type of option which might be implemented in {\tt pstex}
+could allow a degree of stretch to be added to the natural
+size of the figure.
+
+\subsection{Examples}
+
+Figure \ref{fig:flow} shows the complete process
+of typesetting a document starting from
+\LaTeX\ source text and PostScript source figures,
+producing a final printed output.
+Heavy lines show the major iteration which is repeated
+as the document is modified and refined.
+This figure was created using FrameMaker,
+and included with the command
+\verb|\psbox[width=0.95\textwidth]{psfigs/flow}|.
+
+Figure \ref{fig:screen} is a portion of a screendump from a Sun
+showing the same process,
+included with the command \verb|\psbox[scale=3]{psfigs/screen}|,
+making each pixel of the display screen appear
+as a block of $3 \times 3$ pixels on
+the final output.
+
+\begin{table*}[p]
+ \begin{center}
+ \begin{tabular}{lp{3.5in}}
+ \hline
+ \\
+ \multicolumn{2}{c}{\Large\bf Quick Reference Chart} \\
+ \\
+ \hline
+ \\
+ \verb|\postscriptbox{1.2in}{2in}{file}| &
+ Incorporates figure {\tt file.ps} into the document as a box
+ (character-like object) with size 1.2 inches $\times$ 2 inches. \\
+ \\
+ \verb|\psbox{file}| &
+ Incorporates figure {file.ps} into the document as a box
+ with its natural or design size. \\
+ \\
+ \verb|\psbox[scale=0.7]{file}| &
+ Incorporates figure {file.ps} into the document as a box
+ with its natural or design size scaled by 0.7. \\
+ \\
+ \verb|\psbox[scale=2]{file}| &
+ Incorporates figure {file.ps} into the document as a box
+ with its natural or design size scaled by 2;
+ integer scale factors are useful for bitmaps which don't scale
+ well with factional scales. \\
+ \\
+ \verb|\psbox[width=3cm]{file}| &
+ Incorporates figure {file.ps} into the document as a box
+ with width 3cm, and height in accordance
+ with its aspect ratio. \\
+ \\
+ \verb|\psbox[width=\columnwidth]{file}| &
+ Incorporates figure {file.ps} into the document as a box
+ stretched as wide as the column,
+ and with its natural aspect ratio;
+ useful for single column figures. \\
+ \\
+ \verb|\psbox[width=\textwidth]{file}| &
+ Incorporates figure {file.ps} into the document as a box
+ stretched as wide as the page,
+ and with its natural aspect ratio;
+ useful for double column figures. \\
+ \\
+ \verb|\psbox[width=\textwidth,scale=.9]{file}| &
+ Incorporates figure {file.ps} into the document as a box
+ stretched as wide as the page, and then scaled by 0.9. \\
+ \\
+ \verb|\psbox[height=\textheight]{file}| &
+ Incorporates figure {file.ps} into the document as a box
+ stretched as high as the page, with its natural aspect
+ ratio. Useful for tall thin figures. \\
+ \\
+ \verb|\psbox[width=\textwidth,aspect=1.0]{file}| &
+ Incorporates figure {file.ps} into the document as a box
+ stretched as wide as the page, with unity aspect ratio. \\
+ \\
+ \hline
+ \\
+ \verb|\begin{figure}| \\
+ \verb| \begin{center}| \\
+ \verb| \psbox{file}| \\
+ \verb| \caption{Title of figure}|
+ & Macros for a floating centered figure. \\
+ \verb| \label{fig:file}| \\
+ \verb| \end{center}| \\
+ \verb|\end{figure}| \\
+ \\
+ \hline
+ \end{tabular}
+ \end{center}
+\end{table*}
+
+\section{Conclusions}
+
+I have described a system for merging PostScript figures into
+documents prepared under \LaTeX\ and \TeX.
+The author has a great deal of flexibility in
+specifying how the figures are to be sized,
+and in particular can specify that a figure be included
+at its natural or design size, or some scale multiple thereof.
+The figure always fits the space left in the flow of text,
+without any need for the user to copy sizes from
+the program used to generate the figure into the document source text,
+and changes to the figure which alter its size
+are reflected in the document automatically when it is next typeset.
+
+These facilities are in use at SPAR,
+and are available immediately for distribution to other Schlumberger sites.
+Also available are some programs for converting digitised photographs,
+screendumps, and other images into EPS style PostScript programs
+with suitable bounding box comments.
+
+\begin{thebibliography}{xx}
+
+\bibitem[Adobe Systems Inc., 1985]{Adobe:postscript}
+Adobe Systems Inc.
+{\it PostScript Language Reference Manual}.
+Addison Wesley, 1985.
+
+\bibitem[Knuth, 1979]{Knuth:tex-metafont}
+Donald~E.~Knuth.
+{\it \TeX\ and METAFONT}.
+Digital Press, 1979.
+
+\bibitem[Knuth, 1984]{Knuth:texbook}
+Donald~E.~Knuth.
+{\it The \TeX\ book}.
+American Mathematical Society, 1984.
+
+\bibitem[Lamport, 1986]{Lamport:latex}
+Leslie~Lamport.
+{\it \LaTeX: A Document Preparation System}.
+Addison Wesley, 1986.
+
+\end{thebibliography}
+
+\end{document}
|