[comp.sys.mac.misc] printing captured Mac PostScript files

jprice@magnus.acs.ohio-state.edu (Jeffrey R Price) (05/29/91)

I had posted this once before...so please be patient ;)

We're trying to collect PostScript files from different Mac and PC software,
and then print off selected files.  We are using an HP LaserJet II with
Adobe's PostScript cartridge to do the job.

Unfortunately, Mac generated PostScript files won't print.  I captured the
Mac PostScript files by using either the Command-F or Command-K keys when I
clicked on "OK" in the print box.

When the Command-K file prints I get the error:
%%[ Error: invalidaccess; OffendingCommand: setdefaulttimeouts ]%%

I changed the timeouts to zeros and got the error:
%%[ Error: undefined; OffendingCommand: ct ]%%

When the Command-F file prints I get the error:
%%[ Error: undefined; OffendingCommand: md ]%%

I called Adobe and they werre no help.  PC support said "It won't work
because of some 8-bit problem".  Mac support said "It should work".

I'm out of ideas here.  Any help or suggestions would be greatly
appreciated!

Jeff
**************************************************************************
                  Jeffrey R. Price                 | Systems Analyst
---------------------------------------------------| Computing Services
Opinions expressed are my own, and are regularly   | 1775 College Road
ignored by my employer...so beware!................| Columbus, OH  43210
---------------------------------------------------| Tel: (614) 292-1741
email: jprice@Prime.CoB.Ohio-State.edu             | Fax: (614) 292-1651
**************************************************************************

kevind@pogo.WV.TEK.COM (Kevin Draz) (05/29/91)

>
>Unfortunately, Mac generated PostScript files won't print.  I captured the
>Mac PostScript files by using either the Command-F or Command-K keys when I
>clicked on "OK" in the print box.
>
>When the Command-K file prints I get the error:
>%%[ Error: invalidaccess; OffendingCommand: setdefaulttimeouts ]%%
>

This is a bug with version 70 of the Apple Prep file.  The problem is that
the prep checks the timeouts to see if they are as it wishes (300, 60, 0)
and then attempts to change these parameters if they are not "correct".
Unfortunately, the command "setdefaulttimeouts" is privilged, and must be
executed from outside the server context (i.e., exitserver).  The Mac issues
the appropriate exitserver sequence when interactively printing to a
LaserWriter.  It does not include these commands when printing to disk,
however.

The solution is easy.  Use a text editor to locate the line in the prep file
which begins with "wtkey", and comment out the entire line by adding a %
character in front of it.

You might save this file as a "fixed" prep, and use only command-F to print
files.  Then, to print the file, just prefix the job with the new prep.  You
could also define the setdefaulttimeouts command to be a no-op with the
following code:

^D
serverdict begin 0 exitserver
/setdefaulttimeouts {pop pop pop}bind def
^D

This job must be sent each time the printer is restarted.

The version 7.0 LaserWriter driver is compatible with version 6.x system
software, and has version 71 of the prep file, which solves the problem.

As for binary data, some Mac applications generate it, however most do not.
The only exceptions I think of at the moment are ColorStudio and PhotoShop.
If I recall, one of these allows you a choice of hex or binary.

KevinD

f85-bli@byse.nada.kth.se (Bengt Lidgard) (05/30/91)

In article <1991May28.173012.17306@magnus.acs.ohio-state.edu> jprice@magnus.acs.ohio-state.edu (Jeffrey R Price) writes:
>
>When the Command-F file prints I get the error:
>%%[ Error: undefined; OffendingCommand: md ]%%

md is a dictionnary

>I called Adobe and they werre no help.  PC support said "It won't work
>because of some 8-bit problem".  Mac support said "It should work".

It works! But Apples laserprep is very strange.... (bugs bugs & more bugs)

Send this file to the printer first. It will become resident.
All Cmd-F files shall work in the future.
This program is a modified laserprep from apple. Since their blasting
junk doesn't work I feel free to redistribute something that does.
BTW some comments will appear on your standard outputfile.
Tell me how things work out,

Bengt

------------------------- cut here ------------------------------------------
%!
%%BeginProcSet: "(AppleDict md)" 68 0
(Start\n) print flush
userdict /md known
	{
	(AppleDict already loaded\n) print (End\n) print flush stop
	}if
serverdict begin 0 exitserver
/sc 
	{
	60 45 
		{
		abs exch abs 2 copy add 1 gt
			{
			1.0 sub dup mul exch 1.0 sub dup mul add 1.0 sub
			}
			{
			dup mul exch dup mul add 1.0 exch sub
			}
		ifelse
		}setscreen
	} bind def statusdict begin product(LaserWriter II)anchorsearch end
	{
	pop pop/letter [/letter load /exec load /sc load /exec load]cvx def/legal [/legal load /exec load /sc load /exec load]cvx def/a4 [/a4 load /exec load /sc load /exec load]cvx def/b5 [/b5 load /exec load /sc load /exec load]cvx def
	/lettersmall [/lettersmall load /exec load /sc load /exec load]cvx def/a4small [/a4small load /exec load /sc load /exec load]cvx def/note [/note load /exec load /sc load /exec load]cvx def
	}
	{
	pop
	}ifelse
systemdict/currentpacking known
	{
	currentpacking true setpacking
	}if
/LW
	{
	save statusdict/product get(LaserWriter)anchorsearch
	exch pop
		{
		length 0 eq
			{
			1
			}
			{
			2
			}ifelse
		}
		{
		0
		}ifelse exch restore
	}bind def
/LW+
	{
	LW 2 eq
	}bind def
/ok
	{
	systemdict/statusdict known dup
		{
		LW 0 gt and
		}if
	}bind def
/md 250 dict def md begin
/av 0 def
/T true def/F false def/mtx matrix def/s75 75 string def/s8 8 string def/s1 ( ) def/pxs 1 def/pys 1 def
1 0 mtx defaultmatrix dtransform exch atan/pa exch def/nlw .24 def/ppr [-32 -29.52 762 582.48] def
/pgs 1 def/por true def/xb 500 array def/so true def/tso true def/fillflag false def/pnm 1 def/fmv true def
/sfl false def/ma 0 def/invertflag false def/dbinvertflag false def/xflip false def/yflip false def/noflips true def/scaleby96 false def/fNote true def/fBitStretch true def
/fg (Rvd\001\001\000\000\177) def
/bdf
	{
	bind def
	}bind def
/xdf
	{
	exch def
	}bdf
/xl
	{
	neg exch neg translate
	}bdf
/fp
	{
	pnsh 0 ne pnsv 0 ne and
	}bdf
/nop
	{
	}bdf/lnop[/nop load]cvx bdf
/vrb[
{fp{fg 6 get 0 ne{gsave stroke grestore}{gsave 1 setlinewidth pnsh pnsv scale stroke grestore}ifelse}if newpath}bind
(.) print flush	
/eofill load
dup
/newpath load
2 index
dup
{clip newpath}bind
{}bind
dup
2 copy
]def
currentscreen/spf xdf/rot xdf/freq xdf
/doop
	{
	vrb exch get exec
	}bdf
/psu
	{
	/tso xdf /fNote xdf/fBitStretch xdf/scaleby96 xdf/yflip xdf/xflip xdf
	/invertflag xdf/dbinvertflag invertflag statusdict begin version cvr 47.0 ge product (LaserWriter) eq not and end invertflag and 
		{
		not
		}if def
	xflip yflip or
		{
		/noflips false def
		}if
	/pgs xdf 2 index .72 mul exch div/pys xdf div .72 mul/pxs xdf ppr astore pop/por xdf sn and/so xdf
	}bdf
/tab
	{
	statusdict /11x17 known
		{
		statusdict begin /11x17 load end
		}
		{
		statusdict /setpage known
			{
			statusdict begin 792 1224 1 setpage end
			}
			{
			statusdict /setpageparams known
				{
				statusdict begin 792 1224 0 1 setpageparams end
				}if
			}ifelse
		}ifelse
	}bdf
/txpose
	{
	fNote
		{
		smalls
		}
		{
		bigs
		}ifelse pgs get exec pxs pys scale ppr aload pop por
		{
		noflips
			{
			pop exch neg exch translate pop 1 -1 scale
			}if
		xflip yflip and
			{
			pop exch neg exch translate 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg translate
			}if 
		xflip yflip not and
			{
			pop exch neg exch translate pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 translate
			}if yflip xflip not and
			{
			ppr 1 get neg ppr 0 get neg translate
			}if
		}
		{
		noflips
			{
			translate pop pop 270 rotate 1 -1 scale
			}if xflip yflip and
			{
			translate pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg translate
			}if
		xflip yflip not and
			{
			translate pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 translate
			}if yflip xflip not and
			{
			translate pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 exch translate
			}if
		}ifelse
	scaleby96
		{
		ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy translate .96 dup scale neg exch neg exch translate
		}if
	}bdf
(.) print flush	
/fr
	{
	4 copy ppr aload pop 3 -1 roll add 3 1 roll exch add 6 2 roll 3 -1 roll
	sub 3 1 roll exch sub 3 -1 roll exch div 3 1 roll div exch scale pop pop xl
	}bdf
/obl
	{
		{
		0.212557 mul
		}
		{
		pop 0
		}ifelse
	}bdf
/sfd
	{
	ps fg 5 -1 roll get mul 100 div 0 ps 5 -1 roll obl ps neg 0 0 6a astore makefont setfont
	}bdf
/fnt
	{
	findfont sfd
	}bdf
/bt
	{
	sa 3 1 roll 3 index and put
	}bdf
/sa(\000\000\000\000\000\000\000\000\000\000)def
/fs
	{
	0 1 bt 1 2 bt 2 4 bt 3 8 bt 4 16 bt 5 32 bt 6 64 bt 7 128 bt sa exch 8 exch put
	}bdf
/mx1 matrix def
/mx2 matrix def
/mx3 matrix def
/bu
	{
	currentpoint currentgray currentlinewidth currentlinecap currentlinejoin currentdash exch aload length
	fg 5 sfl
		{
		1
		}
		{
		0
		}ifelse put pnsv pnsh
	2t aload pop 3a aload pop mx2 aload pop mx1 aload pop mtx currentmatrix aload pop
	mx3 aload pop ps pm restore/ps xdf mx3 astore pop
	}bdf
/bn
	{
	/pm save def mx3 setmatrix newpath 0 0 moveto ct dup 39 get 0 exch getinterval cvx exec
	mtx astore setmatrix mx1 astore pop mx2 astore pop 3a astore pop
	2t astore pop/pnsh xdf/pnsv xdf gw
	/sfl fg 5 get 0 ne def array astore exch setdash setlinejoin setlinecap
	setlinewidth setgray moveto
	}bdf
/fc
	{
	save vmstatus exch sub 50000 lt
		{
		(%%[|0|]%%)=print flush
		}if pop restore
	}bdf
/tc
	{
	32768 div add 3 1 roll 32768 div add 2t astore pop
	}bdf
/3a [0 0 0] def
/2t 2 array def
/tp
	{
	3a astore pop
	}bdf
/tt
	{
	mx2 currentmatrix pop currentpoint 2 copy 2t aload pop qa 2 copy translate 3a aload pop exch dup 0 eq
		{
		pop
		}
		{
		1 eq
			{
			-1 1
			}
			{
			1 -1
			}ifelse scale
		}ifelse rotate pop neg exch neg exch translate moveto
	}bdf
/te
	{
	mx2 setmatrix
	}bdf
/th
	{
	3 -1 roll div 3 1 roll exch div 2 copy mx1 scale pop scale/sfl true def
	}bdf
/tu
	{
	1 1 mx1 itransform scale/sfl false def
	}bdf
/ts
	{
	1 1 mx1 transform scale/sfl true def
	}bdf
/fz
	{
	/ps xdf
	}bdf
/dv
	{
	dup 0 ne
		{
		div
		}
		{
		pop
		}ifelse
	}bdf
(.) print flush	
/pop4
	{
	pop pop pop pop
	}bdf
/it
	{
	sfl
		{
		mx1 itransform
		}if
	}bdf
/gm
	{
	exch it moveto
	}bdf/rm
	{
	it rmoveto
	}bdf
/lm
	{
	currentpoint sfl
		{
		mx1 transform
		}if exch pop sub 0 exch it rmoveto
	}bdf
/fm
	{
	statusdict/manualfeed known
	}bdf
/se
	{
	statusdict exch/manualfeed exch put
	}bdf
/mf
	{
	dup/ma exch def 0 gt
		{
		fm se/t1 5 st ok ma 1 gt and
			{
			/t2 0 st/t3 0 st
			statusdict/manualfeedtimeout 3600 put
			}if
		}if
	}bdf
/jn
	{
	dup (document:) search
		{
		pop pop (Printing:) print
		}if = flush
	/statusdict where exch pop
		{
		statusdict exch /jobname exch put
		}if
	}bdf
/pen
	{
	pnm mul/pnsh xdf pnm mul/pnsv xdf pnsh setlinewidth
	}bdf
/min
	{
	2 copy gt
		{
		exch
		}if pop
	}bdf
/max
	{
	2 copy lt
		{
		exch
		}if pop
	}bdf
/dh
	{
	fg 6 1 put array astore dup 
		{
		1 pxs div mul exch
		}forall astore exch pop exch pop exch setdash
	}bdf
/ih[currentdash]def
/rh
	{
	fg 6 0 put ih aload pop setdash
	}bdf
/dl
	{
	gsave nlw pys div setlinewidth 0 setgray
	}bdf
/dlin
	{
	exch currentpoint currentlinewidth 2 div dup
	translate newpath moveto lineto currentpoint stroke grestore moveto
	}bdf
/lin
	{
	fg 6 get 0 ne
		{
		exch lineto currentpoint 0 doop moveto
		}
		{
		exch currentpoint/pnlv xdf/pnlh xdf gsave newpath/@1 xdf/@2 xdf fp
			{
			pnlh @2 lt
				{
				pnlv @1 ge
					{
					pnlh pnlv moveto @2 @1 lineto pnsh 0 rlineto
					0 pnsv rlineto pnlh pnsh add pnlv pnsv add lineto pnsh neg 0 rlineto
					}
					{
					pnlh pnlv moveto pnsh 0 rlineto @2 pnsh add @1 lineto 0 pnsv rlineto
					pnsh neg 0 rlineto pnlh pnlv pnsv add lineto
					}ifelse
				}
				{
				pnlv @1 gt
					{
					@2 @1 moveto pnsh 0 rlineto pnlh pnsh add pnlv lineto 0 pnsv rlineto
					pnsh neg 0 rlineto @2 @1 pnsv add lineto
					}
					{
					pnlh pnlv moveto pnsh 0 rlineto
					0 pnsv rlineto @2 pnsh add @1 pnsv add lineto pnsh neg 0 rlineto
					0 pnsv neg rlineto
					}ifelse
				}ifelse
			closepath fill
			}if @2 @1 grestore moveto
		}ifelse
	}bdf
(.) print flush	
/gw
	{
	/pnm fg 3 get fg 4 get div def
	}bdf
/lw
	{
	fg exch 4 exch put fg exch 3 exch put gw pnsv pnsh pen
	}bdf
/barc
	{
	/@1 xdf/@2 xdf/@3 xdf/@4 xdf/@5 xdf
	/@6 xdf/@7 xdf/@8 xdf gsave
	@5 @7 add 2 div @6 @8 add 2 div translate newpath 0 0 moveto
	@5 @7 sub @6 @8 sub mtx currentmatrix pop scale @1
		{
		newpath
		}if
	0 0 0.5 @4 @3 arc @4 @3 sub abs 360 ge
		{
		closepath
		}if
	mtx setmatrix @2 doop grestore
	}bdf
/ar
	{
	dup 0 eq barc
	}bdf
/ov
	{
	0 exch 360 exch true barc
	}bdf
/rc
	{
	/@t xdf currentpoint 6 2 roll newpath 4 copy 4 2 roll exch moveto
	6 -1 roll lineto lineto lineto closepath @t doop moveto
	}bdf
/mup
	{
	dup pnsh 2 div le exch pnsv 2 div le or
	}bdf
/rr
	{
	/@1 xdf 2. div/@2 xdf 2. div/@3 xdf
	/@4 xdf/@5 xdf/@6 xdf/@7 xdf
	@7 @5 eq @6 @4 eq @2 mup or or
		{
		@7 @6 @5 @4 @1 rc
		}
		{
		@4 @6 sub 2. div dup @2 lt
			{
			/@2 xdf
			}
			{
			pop
			}ifelse
		@5 @7 sub 2. div dup @2 lt
			{
			/@2 xdf
			}
			{
			pop
			}ifelse
		@1 0 eq
			{
			/@2 @2 pnsh 2 div 2 copy gt
				{
				sub def
				}
				{
				0 pop4
				}ifelse
			}if
		currentpoint newpath
		@4 @6 add 2. div @7 moveto
		@4 @7 @4 @5 @2 arcto pop4
		@4 @5 @6 @5 @2 arcto pop4
		@6 @5 @6 @7 @2 arcto pop4
		@6 @7 @4 @7 @2 arcto pop4
		closepath @1 doop moveto
		}ifelse
	}bdf
/pr
	{
	gsave newpath/pl
		{
		exch moveto/pl
			{
			exch lineto
			}def
		}def
	}bdf
(.) print flush	
/pl
	{
	exch lineto
	}bdf
/ep
	{
	dup 0 eq
		{
			{
			moveto
			}
			{
			exch lin
			}
			{
			}
			{
			(%%[|1|]%%)= flush
			}pathforall
		pop grestore
		}
		{
		doop grestore
		}ifelse currentpoint newpath moveto
	}bdf
/gr
	{
	64. div setgray
	}bdf
/pat
	{
	s8 copy pop 9.375 pa por not
		{
		90 add
		}if
		{
		1 add 4 mul cvi s8 exch get exch 1 add 4 mul cvi 7 sub bitshift 1 and
		}setscreen gr
	}bdf
/sg
	{
	freq rot/spf load setscreen gr
	}bdf
/dc
	{
	transform round .5 sub exch round .5 sub exch itransform
	}bdf
/sn
	{
	userdict/smooth4 known
	}bdf
/x8
	{
	3 bitshift
	}bdf
/x4
	{
	2 bitshift
	}bdf
/d4
	{
	-2 bitshift
	}bdf
/d8
	{
	-3 bitshift
	}bdf
/rb
	{
	15 add -4 bitshift 1 bitshift
	}bdf
/db
	{
	/@7 save def/@1 xdf/@2 xdf/@3 xdf/@4 xdf/@5 xdf/@6 @5 @3 4 add mul def
	dc translate scale/xdbit 1 1 idtransform abs/ydbit exch def abs def
		{
		0 0 1 ydbit add 1 10 rc clip
		}if
	@1 0 eq @1 4 eq or
		{
		1 setgray ydbit 0 1 ydbit add 1 2 rc
		}if
	@1 3 eq @1 7 eq or
		{
		1
		}
		{
		0
		}ifelse setgray/@9 @1 0 eq @1 1 eq @1 3 eq or or dbinvertflag xor def/@13 @6 def
	@2 fBitStretch or
		{
		/@10 @4 x4 def/@11 @3 x4 def/@12 @10 rb def/@13 @12 @11 mul def/@15 1 1 dtransform abs/calcY 1 index def round cvi/@14 exch def
		abs/calcX 1 index def round cvi scaleby96 not
			{
			1 add
			}if def/@16 @15 rb def/@17 @16 @14 mul def
		}if
	sn @13 60000 lt and @2 fBitStretch or and
		{
		mtx currentmatrix dup 1 get exch 2 get 0. eq exch 0. eq and @17 60000 lt and fBitStretch and
			{
			@16 3 bitshift @14 @9 [calcX 0 0 calcY 0 0]
				{
				@17 string @13 string
				currentfile @6 string readhexstring pop 1 index @4 @3 @5 @12 @2 smooth4
				@10 @11 @12 dup string 5 index @15 @14 @16 dup string stretch
				}imagemask
			}
			{
			@12 x8 @11 @9 [@10 0 0 @11 0 0]
				{
				@13 string
				currentfile @6 string readhexstring pop 1 index @4 @3 @5 @12 @2 smooth4
				}imagemask
			}ifelse
		}
		{
		@5 3 bitshift @3 4 add @9 [@4 0 0 @3 0 2]
			{
			currentfile @6 string readhexstring pop
			}imagemask
		}ifelse
	@7 restore
	}bdf
(.) print flush	
/multibit
	{
	/mbdeep exch def/mbY exch def/mbX exch def
	save mbX mbY mbdeep[mbX 0 0 mbY 0 0]
		{
		currentfile picstr readhexstring pop
		}image
	restore
	}bdf
/wd 16 dict def
/mfont 14 dict def
/mdf
	{
	mfont wcheck not
		{
		/mfont 14 dict def
		}if mfont begin xdf end
	}bdf
/cf
	{
		{
		1 index/FID ne
			{
			def
			}
			{
			pop pop
			}ifelse
		}forall
	}bdf/rf
	{
	/@1 exch def/@2 exch def
	FontDirectory @2 known
		{
		cleartomark pop
		}
		{
		findfont dup begin dup length @1 add dict begin
		cf
			{
			/Encoding macvec def
			}
			{
			Encoding dup length array copy/Encoding exch def
			counttomark 2 idiv
				{
				Encoding 3 1 roll put
				}repeat
			}ifelse
		pop
		exec currentdict end end @2 exch definefont pop
		}ifelse
	}bdf
/bmbc
	{
	exch begin wd begin
	/cr xdf
	save
	CharTable cr 6 mul 6 getinterval
		{
		}forall
	/bitheight xdf/bitwidth xdf
	.96 div/width xdf
	Gkernmax add/XOffset xdf Gdescent add/YOffset xdf/rowbytes xdf
	rowbytes 255 eq
		{
		0 0 0 0 0 0 setcachedevice
		}
		{
		Gnormsize dup scale
		width 0 XOffset YOffset bitwidth XOffset add bitheight YOffset add
		setcachedevice
		rowbytes 0 ne
			{
			XOffset YOffset translate newpath 0 0 moveto
			bitwidth bitheight scale
			sn
				{
				/xSmt bitwidth x4 def
				/ySmt bitheight x4 def
				/rSmt xSmt rb def
				rSmt x8 ySmt true
				[xSmt 0 0 ySmt neg 0 ySmt]
					{
					rSmt ySmt mul string CharData cr get
					1 index bitwidth bitheight rowbytes rSmt tso smooth4
					}
				}
				{
				rowbytes 3 bitshift bitheight 4 add true
				[bitwidth 0 0 bitheight neg 0 bitheight 2 add]
					{
					CharData cr get
					}
				}ifelse
			imagemask
			}if
		}ifelse
	restore
	end end
	}bdf
(.) print flush	
/bb
	{
	.96 exch div/Gnormsize mdf 2 index
	/Gkernmax mdf 1 index/Gdescent mdf
	3 index div 4 1 roll
	2 index div 1. 5 2 roll
	exch div 4 1 roll
	4 array astore/FontBBox mdf
	}bdf
/cdf
	{
	mfont/CharData get 3 1 roll put
	}bdf
/bf
	{
	mfont begin
	/FontType 3 def
	/FontMatrix [1 0 0 1 0 0] def
	/Encoding macvec def
	/BuildChar/bmbc load def
	end
	mfont definefont pop
	}bdf
/wi LW 1 eq
	{
		{
		gsave 0 0 0 0 0 0 0 0 moveto lineto lineto lineto closepath clip stringwidth grestore
		}bind
	}
	{
	/stringwidth load
	}ifelse def
/aps
	{
	0 get 124 eq
	}bdf
/xc
	{
	s75 cvs dup
	}bdf
/xp
	{
	put cvn
	}bdf
/scs
	{
	xc 3 67 put dup 0 95 xp
	}bdf
/sos
	{
	xc 3 79 xp
	}bdf
/sbs
	{
	xc 1 66 xp
	}bdf
/sis
	{
	xc 2 73 xp
	}bdf
/sob
	{
	xc 2 79 xp
	}bdf
/sss
	{
	xc 4 83 xp
	}bdf
/dd
	{
	exch 1 index add 3 1 roll add exch
	}bdf
/smc
	{
	moveto dup show
	}bdf
/kwn
	{
	FontDirectory 1 index known
		{
		findfont exch pop
		}
	}bdf
/gl
	{
	1 currentgray sub setgray
	}bdf
/mm
	{
	/mfont 10 dict def mfont begin
	/FontMatrix [1 0 0 1 0 0] def
	/FontType 3 def
	/Encoding macvec def
	/df 4 index findfont def
	/FontBBox [0 0 1 1] def
	/xda xdf/mbc xdf
	/BuildChar
		{
		wd begin/cr xdf/fd xdf/cs s1 dup 0 cr put def fd/mbc get exec end
		}def
	exec end mfont definefont
	}bdf
(.) print flush	
/ac
	{
	dup scs kwn
		{
		exch findfont dup length 1 add dict begin
			{
			1 index/FID ne 2 index/UniqueID ne and
				{
				def
				}
				{
				pop pop
				}ifelse
			}forall
		fmv
			{
			/Encoding macvec def
			}if/StrokeWidth nlw 1000 mul pys div ps div dup 12 lt
			{
			pop 12
			}if def
		/PaintType 2 def currentdict end definefont
		}ifelse
	}bdf
/mb
	{
	dup sbs kwn
		{
		exch
			{
			pop
			}
			{
			bbc
			}
			{
			}mm
		}ifelse sfd
	}bdf
/mo
	{
	dup sos kwn
		{
		exch
			{
			pop
			}
			{
			boc
			}
			{
			}mm
		}ifelse sfd
	}bdf
/ms
	{
	dup sss kwn
		{
		exch
			{
			pop
			}
			{
			bsc
			}
			{
			}mm
		}ifelse sfd
	}bdf
/ou
	{
	dup sos kwn
		{
		exch dup ac pop
			{
			scs findfont /df2 xdf
			}
			{
			aoc
			}
			{
			}mm
		}ifelse sfd
	}bdf
/su
	{
	dup sss kwn
		{
		exch dup ac pop
			{
			scs findfont /df2 xdf
			}
			{
			asc
			}
			{
			}mm
		}ifelse sfd
	}bdf
/ao
	{
	/fmv true def ou
	}bdf/as
	{
	/fmv true def su
	}bdf
/vo
	{
	/fmv false def ou
	}bdf/vs
	{
	/fmv false def su
	}bdf
(.) print flush	
/bbc
	{
	/da .03 def fd/df get setfont
	gsave cs wi 1 index 0 ne
		{
		exch da add exch
		}if grestore setcharwidth
	cs 0 0 smc da 0 smc da da smc 0 da moveto show
	}bdf
/boc
	{
	/da 1 ps div def fd/df get setfont
	gsave cs wi 1 index 0 ne
		{
		exch da add exch
		}if grestore setcharwidth
	cs 0 0 smc da 0 smc da da smc 0 da smc gl da 2. div dup moveto show
	}bdf
/bsc
	{
	/da 1 ps div def
	/ds .05 def/da2 da 2. div def fd/df get setfont
	gsave cs wi 1 index 0 ne
		{
		exch ds add da2 add exch
		}if grestore setcharwidth
	cs ds da2 add .01 add 0 smc 0 ds da2 sub translate 0 0 smc
	da 0 smc da da smc 0 da smc gl da 2. div dup moveto show
	}bdf
/aoc
	{
	fd/df get setfont
	gsave cs wi grestore setcharwidth
	gl cs 0 0 smc fd/df2 get setfont gl 0 0 moveto show
	}bdf
/asc
	{
	/da .05 def fd/df get setfont
	gsave cs wi 1 index 0 ne
		{
		exch da add exch
		}if grestore setcharwidth
	cs da .01 add 0 smc 0 da translate gl 0 0 smc gl fd/df2 get setfont 0 0 moveto show
	}bdf
/st
	{
	1000 mul usertime add dup 2147483647 gt
		{
		2147483647 sub
		}if def
	}bdf
/the
	{
	usertime sub dup 0 lt exch -2147483648 gt and
	}bdf
/6a 6 array def
/2a 2 array def
/3q 3 array def
/qs
	{
	3 -1 roll sub exch 3 -1 roll sub exch
	}bdf
/qa
	{
	3 -1 roll add exch 3 -1 roll add exch
	}bdf
/qm
	{
	3 -1 roll 1 index mul 3 1 roll mul
	}bdf
/qn
	{
	6a exch get mul
	}bdf
/qA .166667 def/qB .833333 def/qC .5 def
/qx
	{
	6a astore pop
	qA 0 qn qB 2 qn add   qA 1 qn qB 3 qn add
	qB 2 qn qA 4 qn add   qB 3 qn qA 5 qn add
	qC 2 qn qC 4 qn add   qC 3 qn qC 5 qn add
	}bdf
/qp
	{
	6 copy 12 -2 roll pop pop
	}bdf
/qc
	{
	exch qp qx curveto
	}bdf
/qi
	{
		{
		exch 4 copy 2a astore aload pop qa .5 qm newpath moveto
		}
		{
		exch 2 copy 6 -2 roll 2 qm qs 4 2 roll
		}ifelse
	}bdf
/qq
	{
		{
		qc 2a aload pop qx curveto
		}
		{
		exch 4 copy qs qa qx curveto
		}ifelse
	}bdf
(.) print flush	
/pt
	{
	currentpoint newpath moveto
	}bdf
/qf
	{
	/fillflag true def
	}bdf
/ec
	{
	1 and 0 ne
		{
		0 doop
		}if grestore currentpoint newpath moveto/fillflag false def
	}bdf
/eu
	{
	currentpoint fp
		{
		0 ep
		}
		{
		grestore newpath
		}ifelse moveto/fillflag false def
	}bdf
/bp
	{
	currentpoint newpath 2 copy moveto
	}bdf
/ef
	{
	gsave fillflag
		{
		gsave eofill grestore
		}if
	}bdf
/sm
	{
	0 exch
		{
		@1 eq
			{
			1 add
			}if
		}forall
	}bdf
/lshow
	{
	4 1 roll exch/@1 exch def
		{
		1 index wi pop sub 1 index sm dv 0 @1 4 -1 roll widthshow
		}
		{
		1 index wi pop sub
		1 index dup sm 10 mul exch length 1 sub add dv dup 10. mul 0 @1 4 -1 roll 0 6 -1 roll awidthshow
		}ifelse
	}bdf
/setTxMode
	{
	sa 9 2 index put 3 eq
		{
		1
		}
		{
		0
		}ifelse setgray
	}bdf
/SwToSym
	{
		{
		}mark false/Symbol/|______Symbol 0 rf 0 sa 6 get 0 ne
		{
		pop 1
		}
		{
		sa 7 get 0 eq
			{
			pop 2
			}if
		}ifelse
	sa 1 get 0 ne/|______Symbol
	sa 4 get 0 ne
		{
		vs
		}
		{
		sa 3 get 0 ne
			{
			vo
			}
			{
			fnt
			}ifelse
		}ifelse
	}bdf
/mc
	{
	0 3 1 roll transform neg exch pop
	}bdf
/ul
	{
	dup 0 ne sa 2 get 0 ne and
		{
		gsave 0 0
		/UnderlinePosition kif
			{
			mc
			}
			{
			ps -10 div
			}ifelse/UnderlineThickness kif
			{
			mc
			}
			{
			ps 15 div
			}ifelse
		abs setlinewidth neg rmoveto
		sa 4 get 0 ne
			{
			gsave currentlinewidth 2. div dup rmoveto currentpoint newpath moveto
			2 copy rlineto stroke grestore
			}if
		sa 3 get sa 4 get or 0 ne
			{
			gsave gl 2 copy rlineto stroke grestore rlineto strokepath nlw pys div setlinewidth
			}
			{
			rlineto
			}ifelse
		stroke grestore
		}
		{
		pop
		}ifelse
	}bdf
(.) print flush	
/sgt
	{
	2 copy known
		{
		get true
		}
		{
		pop pop false
		}ifelse
	}bdf
/kif
	{
	currentfont dup/FontMatrix get exch/FontInfo sgt
		{
		true
		}
		{
		currentfont/df sgt
			{
			dup/FontInfo sgt
				{
				3 1 roll/FontMatrix get mtx concatmatrix exch true
				}
				{
				pop pop pop false
				}
			ifelse
			}
			{
			pop pop false
			}ifelse
		}ifelse
		{
		3 -1 roll sgt
			{
			exch true
			}
			{
			pop false
			}ifelse
		}
		{
		false
		}ifelse
	}bdf
(.) print flush	
/blank/Times-Roman findfont/CharStrings get/space get def
/macvec 256 array def
/NUL/SOH/STX/ETX/EOT/ENQ/ACK/BEL/BS/HT/LF/VT/FF/CR/SO/SI
/DLE/DC1/DC2/DC3/DC4/NAK/SYN/ETB/CAN/EM/SUB/ESC/FS/GS/RS/US
macvec 0 32 getinterval astore pop
macvec 32/Times-Roman findfont/Encoding get
32 96 getinterval putinterval macvec dup 39/quotesingle put 96/grave put
(.) print flush	
/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/degree/cent/sterling/section/bullet/paragraph/germandbls
/registered/copyright/trademark/acute/dieresis/notequal/AE/Oslash
/infinity/plusminus/lessequal/greaterequal/yen/mu/partialdiff/summation
/product/pi/integral/ordfeminine/ordmasculine/Omega/ae/oslash
/questiondown/exclamdown/logicalnot/radical/florin/approxequal/Delta
/guillemotleft/guillemotright/ellipsis/blank/Agrave/Atilde/Otilde/OE/oe
/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide/lozenge
/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright/fi/fl
/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex/Idieresis
/Igrave/Oacute/Ocircumflex/apple/Ograve/Uacute/Ucircumflex/Ugrave/dotlessi
/circumflex/tilde/macron/breve/dotaccent/ring/cedilla/hungarumlaut/ogonek/caron
(.) print flush	
macvec 128 128 getinterval astore pop
	{
	}mark true/Courier/|______Courier 0 rf
	{
	/Metrics 21 dict begin/zero 600 def/one 600 def/two 600 def/three 600 def/four 600 def/five 600 def/six 600 def/seven 600 def/eight 600 def
	/nine 600 def/comma 600 def/period 600 def/dollar 600 def/numbersign 600 def/percent 600 def/plus 600 def/hyphen 600 def/E 600 def/parenleft 600 def/parenright 600 def/space 600 def
	currentdict end def currentdict/UniqueID known
		{
		/UniqueID 16#800000 def
		}if/FontBBox FontBBox 4 array astore def
	}mark true/Helvetica/|______Seattle 1 rf
(.) print flush	
/oldsettransfer/settransfer load def
/concatprocs
	{
	/proc2 exch cvlit def/proc1 exch cvlit def/newproc proc1 length proc2 length add array def
	newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx
	}def
/settransfer
	{
	currenttransfer concatprocs oldsettransfer
	}def
(.) print flush	
/PaintBlack
	{
		{
		1 exch sub
		}settransfer gsave newpath clippath 1 setgray fill grestore
	}def
(.) print flush	
/od
	{
	(Rvd\001\001\000\000\177) fg copy pop txpose
	1 0 mtx defaultmatrix dtransform exch atan/pa exch def
	newpath clippath mark
		{
		transform
			{
			itransform moveto
			}
		}
		{
		transform
			{
			itransform lineto
			}
		}
		{
		6 -2 roll transform 6 -2 roll transform 6 -2 roll transform
			{
			itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto
			}
		}
		{
			{
			closepath
			}
		}pathforall newpath counttomark array astore/gc xdf pop ct 39 0 put
	10 fz 0 fs 2 F/|______Courier fnt invertflag
		{
		PaintBlack
		}if
	}bdf
/cd
	{
	(\n) print (Finished!) = flush
	}bdf
/op
	{
	/sfl false def/pm save def
	}bdf
(.) print flush	
/pgcnt 0 def
/cp
	{
	not
		{
		userdict/#copies 0 put
		}if ma 0 gt
		{
			{
			t1 the
				{
				exit
				}if
			}loop
		}if
		{
		copypage
		}
		{
		showpage
		}ifelse pm restore
	pgcnt 1 add dup /pgcnt exch def = flush
	}bdf
/px
	{
	0 3 1 roll tp tt
	}bdf
/psb
	{
	/us save def
	}bdf
/pse
	{
	us restore
	}bdf
/ct 40 string def
/nc
	{
	currentpoint initclip newpath gc
		{
		dup type dup/arraytype eq exch/packedarraytype eq or
			{
			exec
			}if
		}
	forall clip newpath moveto
	}def
/kp
	{
	ct 0 2 index length 2 index 39 2 index put getinterval copy cvx exec mx3 currentmatrix pop
	}bdf
/av 68 def
end
LW 1 eq userdict/a4small known not and
	{
	/a4small
	[[300 72 div 0 0 -300 72 div -120 3381]
	280 3255
		{
		statusdict/jobstate (printing) put 0 setblink
		margins
		exch 196 add exch 304 add 8 div round cvi frametoroket
		statusdict/jobstate (busy) put
		1 setblink
		}
	/framedevice load
	60 45
		{
		dup mul exch dup mul add 1.0 exch sub
		}/setscreen load
		{
		}/settransfer load/initgraphics load/erasepage load]cvx
	statusdict begin bind end readonly def
	}if
md begin/bigs[lnop userdict/letter known{/letter load}{lnop}ifelse userdict/legal known{/legal load}{lnop}ifelse userdict/a4 known{/a4 load}{lnop}ifelse userdict/b5 known{/b5 load}{lnop}ifelse 
	lnop lnop lnop /tab load]def
/smalls[lnop userdict/lettersmall known{/lettersmall load}{userdict/note known{/note load}{lnop}ifelse}ifelse
	userdict/legal known{/legal load}{lnop}ifelse userdict/a4small known{/a4small load}{lnop}ifelse 
	userdict/b5 known{/b5 load}{userdict/note known{/note load}{lnop}ifelse}ifelse lnop lnop lnop /tab load]def end
systemdict/currentpacking known
	{
	setpacking
	}if
(\n) print flush	
(End\n) print flush
%%EndProcSet
%%EOF