home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / mac / misc / document / laserpre.txt < prev    next >
Text File  |  1992-11-05  |  24KB  |  771 lines

  1. %!Laser Prep version 12.  
  2. % Decompiled with rekamr and then cleaned up and slightly modified
  3. % for downloading over rs232 by Alan Crosswell,  Columbia U.
  4. % The main modification is to check to see if the "md" dictionary
  5. % is already installed.  This file takes about 25 seconds to run
  6. % over a 9600 baud line (using TranScript).  We make sure it is always
  7. % installed in the printer the same way that "ehandler.ps" is done;
  8. % an entry in crontab submits it once an hour.  If it's not installed,
  9. % then you will get an error complainging that md is an undefinedcommand.
  10.  
  11. %*** If you've changed your server loop password then edit the next line ***
  12. 0                                       % server loop password
  13.  
  14. %----------------------------------------------------------------------
  15. % Check if the "md" dictionary is already installed.
  16. /md where                               % stacks: [dict true] or [false]
  17. { %true: already installed -- nothing more to do
  18.     pop                                 % pop the dict
  19.     pop                                 % pop the password (not needed)
  20.     (\%\%[ Mac dictionary already installed... ]\%\%\n) print flush
  21.     stop                                % all done
  22. }
  23. { %false: install it now but first check password (stack contains password)
  24.     serverdict begin 
  25.     statusdict begin
  26.     dup                                 % make a copy of the password
  27.     checkpassword                       % check password (eats it)
  28.     { %true: you gave the right password
  29.         (\%\%[ Mac dictionary will be installed. ]\%\%\n) print flush
  30.         exitserver                      % exit server (eats copy of password)
  31.     }
  32.     { %false: you gave the wrong password
  33.         (\%\%[ Bad password!!! ]\%\%\n) print flush
  34.         pop                             % pop extra copy of password
  35.         stop                            % all done
  36.     } ifelse
  37.     end %statusdict
  38. } ifelse
  39.  
  40. %----------------------------------------------------------------------
  41. %{appledict version #12
  42. /md 200 dict def md begin
  43. /av 12 def
  44. /mtx matrix currentmatrix def
  45. /s30 30 string def
  46. /s1 ( ) def
  47. /pys 1 def
  48. /pxs 1 def
  49. /pyt 760 def
  50. /pxt 29.5 def
  51. /por true def
  52. /xl{translate}def
  53. /fp{pnsh 0 ne pnsv 0 ne and}def
  54. /vrb [
  55. {fp{gsave 1 setlinewidth pnsh pnsv scale stroke grestore}if newpath}
  56. {eofill}
  57. dup
  58. {newpath}
  59. 2 index
  60. dup
  61. {initclip eoclip newpath}
  62. {}
  63. dup
  64. 2 copy
  65. ] def
  66. /xdf{exch def}def
  67. currentscreen /spf xdf /rot xdf /freq xdf
  68. /doop {vrb exch get exec} def
  69. /psu{2 index .72 mul exch div /pys xdf div .72 mul /pxs xdf /pyt xdf /pxt xdf /por xdf}def
  70. /txpose{dup 1680 eq userdict /note known{{legal}{note}ifelse}{pop}ifelse
  71. dup 1212 eq{54 32.4 xl}if 1321 eq{8.64 -.6 xl}if
  72. pxs pys scale pxt pyt xl por not{270 rotate}if 1 -1 scale}def
  73. /obl {{0.212557 mul}{pop 0} ifelse} def
  74. /sfd {[ps 0 ps 6 -1 roll obl ps neg 0 0] makefont dup setfont} def
  75. /fnt{findfont sfd}def
  76. /bt{1 index and 0 ne exch}def
  77. /sa 6 array def
  78. /fs{1 bt
  79.     2 bt
  80.     4 bt
  81.     8 bt
  82.    16 bt
  83.    sa astore pop
  84. }def
  85. /mx1 matrix def
  86. /mx2 matrix def
  87. /gf{currentfont}def
  88.  
  89. /tc{32768 div add 3 1 roll 32768 div add 2t astore pop}def
  90. /3a [0 0 0] def
  91. /2t 2 array def
  92. /tp{3a astore pop}def
  93. /ee{}def
  94. /tt{gsave currentpoint 2 copy 2t aload pop qa 2 copy xl 3a aload pop exch dup 0 eq
  95. {pop}{1 eq{-1 1}{1 -1}ifelse scale}ifelse rotate pop neg exch neg exch xl moveto}def
  96. /te{currentpoint currentfont grestore setfont moveto}def
  97. /tb{/tg currentgray def 3 -1 roll 3 eq{1 setgray}if /ml 0 def /al 0 def}def
  98. /am{ml add /ml xdf}def
  99. /aa{[currentgray /setgray cvx]cvx exch dup wi pop dup al add /al xdf exch}def
  100. /th{3 -1 roll div 3 1 roll exch div 2 copy mx1 scale pop scale /scaleflag true def}def
  101. /tu{1 1 mx1 itransform scale /scaleflag false def}def
  102. /ts{1 1 mx1 transform scale /scaleflag true def}def
  103. /fz{/ps xdf}def
  104. /fx{dup exec}def
  105. /st{show pop pop}def
  106. /tm{
  107.       {
  108.       dup type dup /integertype eq exch /realtype eq or
  109.          {
  110.          dup ml mul
  111.          }
  112.          {
  113.          dup type /stringtype eq
  114.             {
  115.             rs
  116.             }
  117.             {
  118.             dup type /dicttype eq
  119.                {
  120.                setfont
  121.                }
  122.                {
  123.                dup type /arraytype eq
  124.                   {
  125.                   exec
  126.                   }
  127.                   {
  128.                   pop
  129.                   }ifelse
  130.                }ifelse
  131.             }ifelse
  132.          }ifelse
  133.       }forall
  134.    }def
  135. /es{3 -1 roll dup sa 5 get dup type /nulltype eq
  136. {pop4 pop}
  137. {
  138. sa 1 get {/ml ml .2 ps mul sub def}if  %Italic Hack Hack Hack
  139.    ne{fs}{pop}ifelse exch
  140.    dup 1 eq
  141.    {pop
  142.       al ml gt{/tv{ll}/ml ml al dup 0 ne{div}{pop}ifelse def}{/tv{st}/ml 1 def}ifelse def
  143.       tm
  144.    }
  145.    {
  146.    dup 3 eq
  147.    {pop
  148.    al ml gt{/tv{ll}/ml ml al dup 0 ne{div}{pop}ifelse def}{ml al sub 0 rmoveto /tv{st}/ml 1 def}ifelse def
  149.       tm
  150.    }
  151.    {
  152.    2 eq
  153.    {
  154.    al ml gt{/tv{ll}/ml ml al dup 0 ne{div}{pop}ifelse def}{ml al sub 2 div 0 rmoveto /tv{st}/ml 1 def}ifelse def
  155.       tm
  156.    }
  157.    {
  158.    /tv{ll}def
  159.    /ml ml al dup 0 ne{div}{pop}ifelse def
  160.       tm
  161.    }ifelse}ifelse}ifelse
  162.    }ifelse
  163. tg setgray
  164. }def
  165.  
  166. /pop4 {pop pop pop pop} def
  167. /gm{scaleflag{mx1 itransform}if moveto}def
  168. /ly{exch pop currentpoint exch pop sub 0 exch rmoveto}def
  169. /page{1 add /#copies xdf showpage}def
  170. /sk{systemdict /statusdict known}def
  171. /jn{sk{statusdict /jobname 3 -1 roll put}{pop}ifelse}def
  172. /pen {/pnsv xdf /pnsh xdf pnsh setlinewidth} def
  173. /dlin{currentpoint newpath moveto lineto currentpoint stroke grestore moveto}def
  174. /lin {currentpoint /pnlv xdf /pnlh xdf gsave newpath /@y xdf /@x xdf fp{pnlh @x lt {pnlv @y ge
  175. {pnlh pnlv moveto @x @y lineto pnsh 0 rlineto
  176. 0 pnsv rlineto pnlh pnsh add pnlv pnsv add lineto pnsh neg 0 rlineto}
  177. {pnlh pnlv moveto pnsh 0 rlineto @x pnsh add @y lineto 0 pnsv rlineto
  178. pnsh neg 0 rlineto pnlh pnlv pnsv add lineto} ifelse} {pnlv @y gt
  179. {@x @y moveto pnsh 0 rlineto pnlh pnsh add pnlv lineto 0 pnsv rlineto
  180. pnsh neg 0 rlineto @x @y pnsv add lineto} {pnlh pnlv moveto pnsh 0 rlineto
  181. 0 pnsv rlineto @x pnsh add @y pnsv add lineto pnsh neg 0 rlineto
  182. 0 pnsv neg rlineto} ifelse} ifelse
  183. closepath fill}if @x @y grestore moveto} def
  184. /barc {/@f xdf /@op xdf /@e xdf /@s xdf /@r xdf
  185. /@b xdf /@l xdf /@t xdf gsave
  186. @r @l add 2 div @b @t add 2 div xl 0 0 moveto
  187. @r @l sub @b @t sub mtx currentmatrix pop scale @f {newpath} if
  188. 0 0 0.5 @s @e arc
  189. mtx setmatrix @op doop grestore} def
  190. /doarc {dup 0 eq barc} def
  191. /doval {0 exch 360 exch true barc} def
  192. /dorect {/@op xdf currentpoint 6 2 roll newpath 4 copy
  193. 4 2 roll exch moveto 6 -1 roll lineto lineto lineto closepath
  194. @op doop moveto} def
  195. /dorrect {/@op xdf 2. div /@h xdf 2. div /@w xdf
  196. /@r xdf /@b xdf /@l xdf /@t xdf
  197. @t @b eq @l @r eq or{@t @l @b @r @op dorect}
  198.    {
  199.    @r @l sub 2. div dup @w lt{/@w xdf}{pop}ifelse
  200.    @b @t sub 2. div dup @w lt{/@w xdf}{pop}ifelse
  201.    @op 0 eq{/@w @w pnsh 2 div sub def}if    %this helps solve overlap gap for wide line widths
  202.    currentpoint
  203.    newpath
  204.    @r @l add 2. div @t moveto
  205.    @r @t @r @b @w arcto pop4
  206.    @r @b @l @b @w arcto pop4
  207.    @l @b @l @t @w arcto pop4
  208.    @l @t @r @t @w arcto pop4
  209.    closepath @op doop
  210.    moveto
  211.    }ifelse
  212. } def
  213. /pr{gsave newpath /pl{moveto /pl{lineto}def}def}def
  214. /pl{lineto}def
  215. /ep{dup 0 eq
  216.    {
  217.    {moveto}{lin}{}{}pathforall  %nothing but movetos and linetos should be called
  218.    pop grestore
  219.    }
  220.    {
  221.    doop grestore
  222.    }ifelse
  223. }def
  224. /bs 8 string def
  225. /bd{/bs xdf}def
  226. /bit {bs exch get exch 7 sub bitshift 1 and} def
  227. /bix {1 add 4 mul cvi} def
  228. /pp{exch bix exch bix bit}def
  229. /grlevel {64. div setgray} def
  230. /setpat {/bs xdf 9.375 0{pp}setscreen grlevel} def
  231. /setgry {freq rot {spf} setscreen grlevel} def
  232. /x4 {2 bitshift} def
  233. /d4 {-2 bitshift} def
  234. /xf {.96 mul exch 2 sub .96 mul exch} def
  235. /dobits
  236. {
  237. /bmode xdf
  238. save 9 1 roll
  239.    {
  240.    x4 /@dy xdf 2 sub x4 /@dx xdf /@idx xdf
  241.    .96 mul exch 2 sub exch xl 0 0 moveto xf
  242.    0 2 2 index 4 index 1.759 add 10 dorect clip newpath 0 0 moveto scale
  243.    bmode 0 eq bmode 4 eq or{1 setgray 1 @dy div 1 @dx div 1 1 2 dorect}if
  244.    bmode 3 eq bmode 7 eq or{1}{0}ifelse setgray
  245.    @idx 5 bitshift @dy bmode 4 eq bmode 5 eq bmode 7 eq or or [@dx 0 0 @dy 0 0]
  246.      {(%stdin)(r) file @dy d4 4 add @idx mul string readhexstring pop
  247.      dup length @idx x4 sub 4 bitshift string
  248.      dup 3 1 roll @dx 8 add d4 smooth} imagemask
  249.    }
  250.    {
  251.    /@dy xdf 2 sub /@dx xdf /@idx xdf
  252.    /@xs @idx string def
  253.    /@f (%stdin)(r) file def
  254.    /@p{@f @xs readhexstring pop}def
  255.    .96 mul xl 0 0 moveto xf scale
  256.    0 0 1 1 10 dorect clip newpath 0 0 moveto
  257.    bmode 0 eq bmode 4 eq or{1 setgray .25 @dy div .25 @dx div 1 1 2 dorect}if
  258.    bmode 3 eq bmode 7 eq or{1}{0}ifelse setgray
  259.    @p @p
  260.    @idx 3 bitshift @dy bmode 0 eq bmode 1 eq bmode 3 eq or or [@dx 0 0 @dy 0 0]
  261.    {@p} imagemask
  262.    @p @p pop4
  263.    }ifelse
  264. restore
  265. } bind def
  266.  
  267. /mfont 14 dict def
  268. /wd 14 dict def
  269. /mdef {mfont wcheck not{/mfont 14 dict def}if mfont begin xdf end} def
  270. /dc {transform round .5 sub exch round .5 sub exch itransform} def
  271. /cf{{1 index /FID ne {tmp 3 1 roll put}{pop pop}ifelse}forall}def
  272. /mv{tmp /Encoding macvec put}def
  273. /bf{
  274. mfont begin
  275. /FontType 3 def
  276. /FontMatrix [1 0 0 1 0 0] def
  277. /FontBBox [0 0 1 1] def
  278. /Encoding macvec def
  279. /BuildChar
  280.   {
  281.   wd begin
  282.     /cr xdf
  283.     /fd xdf
  284.     fd /low get cr get 2 get -1 ne
  285.     {
  286.     fd begin
  287.       low cr get aload pop
  288.       sd
  289.       low cr 1 add get 0 get
  290.       sh
  291.       sw
  292.     end
  293.     /sw xdf
  294.     /sh xdf
  295.     sw div /clocn xdf
  296.     dup 0 ne {0 exch sh div neg dc xl}{pop}ifelse
  297.     exch sw div /coff xdf
  298.     exch sw div /cloc xdf
  299.     /bitw clocn cloc sub def
  300.     sw sh div 1 scale
  301.     sw div 0 coff 0 bitw coff add 1 setcachedevice
  302.     coff cloc sub 0 dc xl
  303.     cloc .5 sw div add 0 dc newpath moveto
  304.     bitw 0 ne
  305.       {0 1 rlineto bitw .5 sw div sub 0 rlineto 0 -1 rlineto
  306.         closepath clip
  307.       sw sh false [sw 0 0 sh neg 0 sh]{fd /hm get}imagemask}if
  308.     } if
  309.   end
  310.   } def
  311. end
  312. mfont definefont pop
  313. } def
  314. /wi{save exch /show{pop}def
  315. stringwidth 3 -1 roll restore}def
  316. /aps {0 get 124 eq}def
  317. /apn {s30 cvs aps} def
  318. /xc{s30 cvs dup}def
  319. /xp{put cvn}def
  320. /scs{xc 3 67 put dup 0 95 xp}def
  321. /sos{xc 3 79 xp}def
  322. /sbs{xc 1 66 xp}def
  323. /sis{xc 2 73 xp}def
  324. /sob{xc 2 79 xp}def
  325. /sss{xc 4 83 xp}def
  326. /dd{exch 1 index add 3 1 roll add exch} def
  327. /smc{moveto dup show} def
  328. /kwn{dup FontDirectory exch known{findfont exch pop}}def
  329. /fb{/ps ps 1 add def}def
  330.  
  331. /mb
  332. {dup sbs kwn
  333.    {
  334.    exch{pop}{bbc}{} mm
  335.    }ifelse
  336. sfd
  337. }def
  338. /mo
  339. {dup sos kwn
  340.    {
  341.    exch{pop}{boc}{} mm
  342.    }ifelse
  343. sfd
  344. }def
  345. /ms
  346. {dup sss kwn
  347.    {
  348.    exch{pop}{bsc}{} mm
  349.    }ifelse
  350. sfd
  351. }def
  352. /ao
  353. {dup sos kwn
  354.    {
  355.    exch dup ac pop
  356.    {scs findfont /df2 xdf}{aoc}{} mm
  357.    }ifelse
  358. sfd
  359. }def
  360. /as
  361. {dup sss kwn
  362.    {
  363.    exch dup ac pop
  364.    {scs findfont /df2 xdf}{asc}{} mm
  365.    }ifelse
  366. sfd
  367. }def
  368. /ac
  369.    {
  370.    dup scs kwn
  371.       {exch /ofd exch findfont def
  372.       /tmp ofd maxlength 1 add dict def
  373.       ofd cf mv
  374.       tmp /PaintType 1 put
  375.       tmp definefont}ifelse
  376.    }def
  377. /mm{
  378. /mfont 10 dict def
  379. mfont begin
  380. /FontMatrix [1 0 0 1 0 0] def
  381. /FontType 3 def
  382. /Encoding macvec def
  383. /df 4 index findfont def
  384. /FontBBox [0 0 1 1] def
  385. /xda xdf
  386. /mbc xdf
  387. /BuildChar { wd begin
  388.   /cr xdf
  389.   /fd xdf
  390.   /cs s1 dup 0 cr put def
  391.   fd /mbc get exec
  392.   end
  393. } def
  394. exec
  395. end
  396. mfont definefont} def
  397. /bbc
  398. {
  399.   /da .03 def
  400.   fd /df get setfont
  401.   gsave
  402.     cs wi exch da add exch
  403.   grestore
  404.   setcharwidth
  405.   cs 0  0 smc
  406.     da  0 smc
  407.     da da smc
  408.      0 da moveto show
  409. } def
  410. /boc
  411. {
  412.   /da 1 ps div def
  413.   fd /df get setfont
  414.   gsave
  415.     cs wi
  416.     exch da add exch
  417.   grestore
  418.   setcharwidth
  419.   cs 0  0 smc
  420.     da  0 smc
  421.     da da smc
  422.      0 da smc
  423.   1 setgray
  424.      da 2. div dup moveto show
  425. } def
  426. /bsc
  427. {
  428.   /da 1 ps div def
  429.   /ds .05 def %da dup .03 lt {pop .03}if def
  430.   /da2 da 2. div def
  431.   fd /df get setfont
  432.   gsave
  433.     cs wi
  434.     exch ds add da2 add exch
  435.   grestore
  436.   setcharwidth
  437.   cs ds da2 add .01 add 0 smc
  438.       0 ds da2 sub xl
  439.       0  0 smc
  440.      da  0 smc
  441.      da da smc
  442.       0 da smc
  443.   1 setgray
  444.       da 2. div dup moveto show
  445. } def
  446. /aoc
  447. {
  448.   fd /df get setfont
  449.   gsave
  450.     cs wi
  451.   grestore
  452.   setcharwidth
  453.   1 setgray
  454.   cs 0 0 smc
  455.   fd /df2 get setfont
  456.   0 setgray
  457.   0 0 moveto show
  458. }def
  459. /asc
  460. {
  461.   /da .05 def
  462.   fd /df get setfont
  463.   gsave
  464.     cs wi
  465.     exch da add exch
  466.   grestore
  467.   setcharwidth
  468.   cs da .01 add 0 smc
  469.       0 da xl
  470.   1 setgray
  471.       0 0 smc
  472.   0 setgray
  473.   fd /df2 get setfont
  474.       0 0 moveto show
  475. }def
  476.  
  477. /mf{gsave
  478. 32 760 xl 1 -1 scale
  479. 1 1 pen
  480. 128 152 moveto
  481. 27.5 27.5 693.5 522.5 0 dorect
  482. 6 6 pen
  483. 63. 63. 657. 486. 0 dorect
  484. 48 fz F /|B---1Times fnt pop
  485. (Manual Feed)show
  486. 118 275 moveto
  487. 14 fz F /|----1Times fnt pop
  488. (document: )show
  489. sk{statusdict /jobname get dup null ne{show}{pop}ifelse}if
  490. 118 362 moveto
  491. (Manual Feed Instructions)show
  492. 127 398 moveto
  493. (1.  Wait until the yellow light on the front of your)show
  494. 145 416 moveto
  495. (LaserWriter comes on steadily \(not flashing\).)show
  496. 127 458 moveto
  497. (2.  Insert your paper or envelope in the manual feed)show
  498. 145 478 moveto
  499. (guide on the right side of the LaserWriter.)show
  500. 127 517 moveto
  501. (3.  Repeat steps 1 and 2 until your document is)show
  502. 145 537 moveto
  503. (completed.)show
  504. 0 page
  505. sk{statusdict /manualfeed true put 5 dly}if
  506. grestore}def
  507. /dly{
  508. usertime exch 1000 mul add
  509.    {
  510.    dup usertime le{exit}if
  511.    }loop
  512. pop
  513. }def
  514. /lsf {FontDirectory {pop dup apn{= flush}{pop}ifelse}forall /* = flush}def
  515. /dl{gsave 0 setlinewidth 0 setgray}def
  516.  
  517. /T true def
  518. /F false def
  519. /6a 6 array def
  520. /2a 2 array def
  521. /5a 5 array def
  522. /qs{3 -1 roll sub exch 3 -1 roll sub exch}def
  523. /qa{3 -1 roll add exch 3 -1 roll add exch}def
  524. %multiply point: pt factor qm newpt
  525. /qm{3 -1 roll 1 index mul 3 1 roll mul}def
  526. /qn{6a exch get mul}def
  527. /qA .166667 def /qB .833333 def /qC .5 def
  528. /qx{
  529.    6a astore pop
  530.    qA 0 qn qB 2 qn add   qA 1 qn qB 3 qn add
  531.    qB 2 qn qA 4 qn add   qB 3 qn qA 5 qn add
  532.    qC 2 qn qC 4 qn add   qC 3 qn qC 5 qn add
  533. }def
  534. /qp{6 copy 12 -2 roll pop pop}def
  535. /qc{qp qx curveto}def
  536. /qi{{4 copy 2a astore aload pop qa .5 qm newpath moveto}{2 copy 6 -2 roll 2 qm qs 4 2 roll}ifelse}def
  537. /qq{{qc 2a aload pop qx curveto}{4 copy qs qa qx curveto}ifelse}def
  538. /pt{gsave currentpoint newpath moveto}def
  539. /qf{gsave eofill grestore}def
  540. /tr{currentgray currentscreen bs 5a astore pop /fillflag 1 def}def
  541. /bc{/fillflag 0 def}def
  542. /ec{
  543.    1 and 0 ne
  544.    {currentgray currentscreen bs 5a aload pop bd setscreen setgray 0 doop bd setscreen setgray}
  545.    {newpath}ifelse
  546. }def
  547. /bp{currentpoint newpath 2 copy moveto currentgray currentscreen bs 5a astore pop}def
  548. /eu{
  549.    fillflag 0 ne
  550.    {
  551.    gsave currentgray currentscreen bs
  552.    5a aload pop bd setscreen setgray
  553.    4 ep
  554.    bd setscreen setgray
  555.    }if
  556.    fp{0 ep}{grestore newpath}ifelse
  557. }def
  558.  
  559. /sm
  560. {
  561. dup 0 exch
  562. {32 eq{1 add}if}forall
  563. }
  564. def
  565. /ll
  566. {
  567. 3 1 roll exch dup .0001 lt 1 index -.0001 gt and
  568. {pop pop pop}
  569. {sub dup 0 eq
  570.    {
  571.    pop show
  572.    }
  573.    {
  574.    1 index sm dup 0 eq 3 index 0 le or
  575.       {
  576.       pop length div
  577.       0 3 -1 roll ashow
  578.       }
  579.       {
  580.       10 mul exch length add div
  581.       dup 10 mul 0 32 4 -1 roll 0 6 -1 roll awidthshow
  582.       }ifelse
  583.    }ifelse
  584. }ifelse
  585. }def
  586. /ss
  587. {  /pft currentfont def sa aload pop pop /|----2Symbol 4 1 roll
  588.    {pop{as}}
  589.    {{{ao}}{{fnt}}ifelse}ifelse
  590.    exch pop exec exch pop
  591. }def
  592. /pf{pft dup setfont}def
  593. /rs
  594. {
  595.    sa 2 get
  596.    {
  597.    gsave
  598.    1 index 0
  599.    currentfont
  600.    dup /FontInfo known
  601.       {
  602.       /FontInfo get
  603.       dup /UnderlinePosition known
  604.          {
  605.          dup /UnderlinePosition get 1000 div ps mul
  606.          }
  607.          {
  608.          ps 10 div neg   %15 makes line closer to text
  609.          }ifelse
  610.       exch
  611.       dup /UnderlineThickness known
  612.          {
  613.          /UnderlineThickness get 1000 div ps mul
  614.          }
  615.          {
  616.          pop
  617.          ps 15 div       %20 makes slightly narrower line
  618.          }ifelse
  619.       }
  620.       {
  621.       pop
  622.       ps 10 div neg   %15 makes line closer to text
  623.       ps 15 div       %20 makes slightly narrower line
  624.       }ifelse
  625.    setlinewidth
  626.    0 setgray
  627.    currentpoint 3 -1 roll sub moveto
  628.    sa 4 get{gsave currentlinewidth 2. div dup rmoveto currentpoint xl 2 copy rlineto
  629.    stroke grestore}if
  630.    sa 3 get sa 4 get or 3 1 roll 2 index{gsave 1 setgray 2 copy rlineto stroke grestore}if
  631.    rlineto{strokepath 0 setlinewidth}if stroke
  632.    grestore
  633.    }if
  634.    tv
  635. }
  636. def
  637.  
  638. /macvec 256 array def
  639. macvec 0
  640. /Times-Roman findfont /Encoding get
  641. 0 128 getinterval putinterval macvec 39 /quotesingle put
  642.  /dotlessi /grave /circumflex /tilde /cedilla /registerserif /copyrightserif /trademarkserif
  643. macvec 0 8 getinterval astore pop
  644.  /Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute
  645.  /agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave
  646.  /ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute
  647.  /ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis
  648.  /dagger /ring /cent /sterling /section /bullet /paragraph /germandbls
  649.  /registersans /copyrightsans /trademarksans /acute /dieresis /notequal /AE /Oslash
  650.  /infinity /plusminus /lessequal /greaterequal /yen /mu /partialdiff /summation
  651.  /product /pi /integral /ordfeminine /ordmasculine /Omega /ae /oslash
  652.  /questiondown /exclamdown /logicalnot /radical /florin /approxequal /Delta /guillemotleft
  653.  /guillemotright /ellipsis /space /Agrave /Atilde /Otilde /OE /oe
  654.  /endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /divide /lozenge
  655.  /ydieresis /Ydieresis /fraction /currency /guilsinglleft /guilsinglright /fi /fl
  656.  /daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand /Acircumflex /Ecircumflex /Aacute
  657.  /Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex
  658.  /apple /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /asciicircum /asciitilde
  659.  /macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
  660. macvec 128 128 getinterval astore pop
  661. FontDirectory
  662. {exch dup s30 cvs /@s xdf @s aps
  663.    {pop pop}
  664.    {exch dup length dict /tmp xdf
  665.       cf
  666.       /Symbol ne {mv} if
  667.       /@i false def /@o false def /@b false def
  668.       mark @s (Italic) search {/@i true def} if (Oblique) search {/@o true def} if
  669.       (Bold) search {/@b true def} if (Roman) search pop (-) search pop /@s xdf cleartomark
  670.       @s cvn dup /Symbol eq{pop 50}{/Courier eq{51}{49}ifelse}ifelse
  671.       s30 0 @s length 6 add getinterval dup 6 @s putinterval dup 0 (|-----) putinterval
  672.       @b {dup 1 66 put} if @i @o or {dup 2 73 put} if % @o {dup 2 79 put} if
  673.       dup 5 4 -1 roll put
  674.       cvn tmp definefont pop
  675.    }ifelse
  676. }forall
  677. /_--C-2Symbol /Symbol findfont /tmp 1 index maxlength 1 add dict def cf tmp /PaintType 1 put tmp definefont
  678. /|----4Seattle /Helvetica findfont dup length 1 add dict /tmp xdf cf mv
  679. /mxv [/zero /one /two /three /four /five /six /seven /eight /nine /comma /period /dollar /numbersign
  680. /percent /plus /hyphen /E /parenleft /parenright /space] def
  681. tmp /Metrics 21 dict dup begin mxv{600 def}forall end put
  682. tmp begin /FontBBox FontBBox [0 0 0 0] astore def end
  683. tmp definefont pop
  684. /od{txpose 10 fz 0 fs F /|----3Courier fnt pop}def
  685. /op{/scaleflag false def /pm save def}def
  686. /cp{pm restore}def
  687. end
  688. % eexec reads the PSHX resources
  689. currentfile eexec
  690. 652E29AE551935C9A82086907FB876D510EC4D451220E0F80D63DBC0EA379346
  691. C055B673F7BED773F332BDE5107DC0B1322DF36267320C226DBEBD9299B29C86
  692. 5D1876ABB7E19F6A45F52C588810FD0A9FFBB1073AD1B6BDCA3D2BAE3283AC88
  693. 35259ADDA98433676B8B757B19473F2C0C3D36AF93B3DD15AFC47F4D3BECB87B
  694. ABAAB5613FCD319A712E7D4A8C5A3C0BA96A376CC93C52ABDE43A980670C1E6B
  695. 78E4D14D5CA032FE07255D5E5A084CCF4B8E23C64F574932EA53E8CD7F00F47B
  696. 4179A6DAFE3BC43B1D091902E6E4B5699C7322FC23B5FBE833E4114C4544E29E
  697. 6225A5B48E6F2A840F44E827681E1AC9F28EB8FEC32105CA4056D863BCAECE65
  698. 1AAF3B12BC38A77CA241A66FAE92939A6EFACD49711E5D7355E634041C378FFC
  699. 1F3BF8B903E5F8961E7480259EB0AA90B0C38E75D264ACE71F1307D4894BFDCF
  700. 9C9D0F3C026BA190A3F6F7E06F3ED092E8CF0D4F22AD6C55C6FED836290F9611
  701. 442BF4DEDBBA0B67D2AF782A796D474ECE7B2B788B4771D4BBCDF0E8F48A2874
  702. D1CF78D3B1C5AA2987C6A22135B1508C7C5EC5AD86ABAE8D1E34A5314F703337
  703. C7A2C0CF52DBBF046F0BD67BE5E65AAD9CE43FAB6E7C9F669801849C9366E5AE
  704. 76C77D8DDBF188CD18C120FEA4C1B510FC00434A2629BB82A9336EB36A5D5552
  705. F4971ED40EF839771762E60509A2A3214DEA9C58C2E53E76CE24B99E3C472719
  706. C66B31A38DE21135FF1390CCA7E0F6B92CEEAF9524317A427DA7CB9B4ED08BF0
  707. 9868FCD9ECAAFF2C520E0EAAB8730FD6CE85B4ACAEE82FC53C5D948C8858A8A3
  708. CF945546556FB3DC9CE69D87BD793DAC57E3F4FB9D056C163C3EE134EDDF7B7D
  709. 186C9A0D79759CD9BF94A4B1E2A6070727DFC08806828B53799090725D4B2D6E
  710. 9BCB6C2B90AA4E47D1774F3A58868E4EB3464C7FB07854CE66E3AB03A5D515A1
  711. 69AC0EA62BAE9A2A419C9AAB14F09A864F4228A098FB288B60E87B85EB16A6D4
  712. EF27B835BAC40E45BF48F78E6CE74AE0C1E81316F630BFE0D7661116B6A92187
  713. 9A1036437280BDA64F85CB37CA0DDBF827C3E4885F1C75E3C84CB8EBED892810
  714. 450DA08029A611AEE126FD6BEFF6830EDA28E4C54649D93C23270703B2F7FEAA
  715. A6524192A2D7F1151B2827EF4B27C823D385EA683F024299B1EFE64871AFD4CD
  716. 6C54C484AA53030CC7F8254BF9E525A00E51867660A3409BECA98DEB37A568F6
  717. D1026ECBFCCF8C9B9BFD11CE017CB2271E7BDEE1D459FFA23062D5B42552C04B
  718. 9BC02C0D7F5CC926ABE694A185FDE2ECC76506DEF1435CBC1225475E4D98A04C
  719. 2CF1DD03915DEB659BC23DE29A6E6734CF49CE39A1BF450A55B0F14D350E79B0
  720. 5C690B84003AB669678B3A416828F376F78946C44009A14A49ED90980B6E4589
  721. 56D188D9AC3FA7F781C8670C83B403B73237B6B0C2862C51C33D559C005D6C9D
  722. D39914B79DBE81291EF8D7CE3EC844176FB7C08A6F344E26C0563C29FCC3B0CB
  723. 2CCCF9412832300CBCDE6BFF39A8804ACCB8375752EEECB1BBA0851ED8DF9E17
  724. 4A5C747E354402DE217C6A7DE35BDE29F50284F66EC5F9DC0032FE3E05842472
  725. 6F9E50555FCBEFF246264D503DCFEB5C5F3384798E5C622FD0450DC62DCE36CA
  726. 9007DBA236A7CE56A57C0B0C531AC5766684DE4BDD2DFEC3BA4D99B930B2EDB2
  727. 0C2AC0F032BB6E5C75AF97AE24DD7FF33FA0F643BBB39331E7E4A474ED5612A1
  728. 7AEF558F8281D4E9EC01AC3D04C4A4C4B8A67F7A6199BA35448298E177554A20
  729. 81DFA1E8D1BC88BDB9938CFEC498918BF3AD690924F295A03D17F28C5FF47F43
  730. D495B74827BD54A2524F53750D4C030843986C97B59A63E08EFB9B14582088BA
  731. FC257BCEF07F2E4B8DCADCC9FAEF7388055483470D5FA4A8CE8CC118CA91FAA5
  732. B0DCCC7F3638A2F9F40628186990C2EE0E25B0FB34DAD8521A6735485ADBE4DD
  733. 7A937036C5EF7E741FF4543FDEE19DD0CFF59A89656F80F8E5E84C10878CB651
  734. 0DD3C3C7A346AC1877FFA88E5ADDCFF95D37163A5350AA5C71BB801ACB0D0FA1
  735. 154DE2C2D039CAAB85F389554044E8F90F9992DEBCCBEACE55F69E31061FB052
  736. A25343ECBEDE16C8999218AF370378901B36655D83D4B9BC5F4F43B361BB2134
  737. 3A88E0350E5C4342407DEFA79877B3C5DAFE15B0F58520FDBE5B8362BE3549AE
  738. 03BD77CDFEC962C539252312ECC5D841F55BEBAD9F7BB03A2D2CAC844E82A568
  739. 7CB2D8E599E356D9A23802439B056F1CC104F9F0D3F01EE2593C59483154FCCA
  740. 3973F487593C9DE94FC0863B6669100B46AFC5B261493A4B50CB9F802EBC31AB
  741. 7B7903A1957EA078A0C4D90E204E44335131C9B65F15D3E5C9A87ADAA7FE5E49
  742. D3654F021F460E5E2AC56A69E8F50E45B0D859D8EC27333DF2AE409015973D7E
  743. ED59F45720DD271D081F3DF62032358E0D4B1D4A528FB4E96A6B2007E13E55E2
  744. 10DAED32AF76F3396D60295D116EC4EE4D42DF4BC764ED9BC11A369FE070815F
  745. FEB5662551561354788EFA98612D09BC964428767E0CBE5DC3EC5B599E9B2074
  746. AA3D446752A4E34485C3D111034676AF67EE5345263E883CF46C8BEF1BD4D51D
  747. D2B625481880254888AB0C186E2D0549F657E59026E2A3C49FE0DFD2A2CAD076
  748. 586B6F248C11E81C41F9525A5D2F77CE5D76FD9104F39F4E4E31CF75045A9061
  749. B16B20CDC2AFD0595F5B6ADF45CA0DC6A37C4ED090AADCFE9EA7847217777A8E
  750. 88C7FBC247EC02973EF656BF1A4A2E71ED21142EC48CC9FDBF5EAE8B46C3E477
  751. 59D9C304C6862D43AF1DE66B44B4AC18B47C6518FA5747D3D8C9A19612DAEE4E
  752. 83C141561421A1360FD847997148932568D3E6CA93BF0D5874BCD90A3A363739
  753. 1FAD35F574797D6160BD4F1AEC3A326D5D73C9BD699C41524B18BC6CDF9169E7
  754. 51FFAB19B9FD7ABE3B2F9D3E0F67ADB05CA85D484ACBC84E287DAA1EDC3BCD95
  755. 694EF05F77A59004B1C3E223AA4A5A063EC238B4A5A25D335FA51B165963621F
  756. 57B7F2C54E59CFED574370399A03E2DFB0F1E35678A6A509A912ED27AD755C67
  757. E045CC1CFEFE41CAD8EA73DD666757D90170EF9C3F218120F38FC1D38224160E
  758. 7F5DE6BDF39665FF231079296B94A7DE674847D299C711E77C9DA408FF9CDCFA
  759. 8F7FE175BE275EB0AE21512D074DBDDCF1CDF75642EF656E2555F9F3E60A2822
  760. F214CC81EEF0E4866387799F21B1F4B296E7F3A2206795457A33E85B397A5F20
  761. 10809D1F43B2267BD762A6CC12DF31BB0817496FE666A6955CD2BA96549B4D1F
  762. 827E54A835ABA03B1079F1F5C3C4D2F4F698D3C235BDFA829F079A0DCF788913
  763. 77B31EBACF4E61A01487ED1F80ABBF5CF000B1EAA8527EC6064AB06B921916CB
  764. 65045B86E9BB2D2E854C5124C218B6FDA0732ABF424EE1696BC86F8987E48CC5
  765. 038C8A557E9534A48E7C55F21F021AA7A370A7CC1B55E777972883433F454450
  766. D18ABFC489D5AA518171884FB7103D92E479ECAEA449341F7C8DB1BD39ECB1ED
  767. 45AF5D9628EF37CAF8DB3C9A65856A97FB9698DD68F8BE27B3C4174F1838C7A0
  768. 674A9460333A059BF214C0690F35BC0352AF9B82CB0F46EAE63A3C0302B4118D
  769. 9E65479030F1EFE34909FA458E31A500483B68601B480D51B7FFCD004A1B5360
  770. 905B88019BC3EF0FF064AC6477442573C18EF7090E2C08EAA1A9
  771.