%!PS-Adobe-2.0
%%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
%%Pages: 10
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%DocumentFonts: Times-Roman Times-Bold Courier Times-Italic
%%DocumentPaperSizes: Letter
%%EndComments
%DVIPSCommandLine: dvips -D 300 -f -e 0
%DVIPSParameters: dpi=300, comments removed
%DVIPSSource: TeX output 1999.01.03:2314
%%BeginProcSet: tex.pro
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
forall round exch round exch]setmatrix}N /@landscape{/isls true N}B
/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B
/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{
/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N
string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N
end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{
/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]
N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup
length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}
if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict
/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook
known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}
B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{
4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{
p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{SS restore}B end
%%EndProcSet
%%BeginFont: Times-Roman
% @@psencodingfile@{
% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry",
% version = "0.6",
% date = "22 June 1996",
% filename = "8r.enc",
% email = "kb@@mail.tug.org",
% address = "135 Center Hill Rd. // Plymouth, MA 02360",
% codetable = "ISO/ASCII",
% checksum = "119 662 4424",
% docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX."
% @}
%
% Idea is to have all the characters normally included in Type 1 fonts
% available for typesetting. This is effectively the characters in Adobe
% Standard Encoding + ISO Latin 1 + extra characters from Lucida.
%
% Character code assignments were made as follows:
%
% (1) the Windows ANSI characters are almost all in their Windows ANSI
% positions, because some Windows users cannot easily reencode the
% fonts, and it makes no difference on other systems. The only Windows
% ANSI characters not available are those that make no sense for
% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
% (173). quotesingle and grave are moved just because it's such an
% irritation not having them in TeX positions.
%
% (2) Remaining characters are assigned arbitrarily to the lower part
% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
%
% (3) Y&Y Lucida Bright includes some extra text characters; in the
% hopes that other PostScript fonts, perhaps created for public
% consumption, will include them, they are included starting at 0x12.
%
% (4) Remaining positions left undefined are for use in (hopefully)
% upward-compatible revisions, if someday more characters are generally
% available.
%
% (5) hyphen appears twice for compatibility with both ASCII and Windows.
%
/TeXBase1Encoding [
% 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
/.notdef /dotaccent /fi /fl
/fraction /hungarumlaut /Lslash /lslash
/ogonek /ring /.notdef
/breve /minus /.notdef
% These are the only two remaining unencoded characters, so may as
% well include them.
/Zcaron /zcaron
% 0x10
/caron /dotlessi
% (unusual TeX characters available in, e.g., Lucida Bright)
/dotlessj /ff /ffi /ffl
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
% very contentious; it's so painful not having quoteleft and quoteright
% at 96 and 145 that we move the things normally found there down to here.
/grave /quotesingle
% 0x20 (ASCII begins)
/space /exclam /quotedbl /numbersign
/dollar /percent /ampersand /quoteright
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
% 0x30
/zero /one /two /three /four /five /six /seven
/eight /nine /colon /semicolon /less /equal /greater /question
% 0x40
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
% 0x50
/P /Q /R /S /T /U /V /W
/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
% 0x60
/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
% 0x70
/p /q /r /s /t /u /v /w
/x /y /z /braceleft /bar /braceright /asciitilde
/.notdef % rubout; ASCII ends
% 0x80
/.notdef /.notdef /quotesinglbase /florin
/quotedblbase /ellipsis /dagger /daggerdbl
/circumflex /perthousand /Scaron /guilsinglleft
/OE /.notdef /.notdef /.notdef
% 0x90
/.notdef /.notdef /.notdef /quotedblleft
/quotedblright /bullet /endash /emdash
/tilde /trademark /scaron /guilsinglright
/oe /.notdef /.notdef /Ydieresis
% 0xA0
/.notdef % nobreakspace
/exclamdown /cent /sterling
/currency /yen /brokenbar /section
/dieresis /copyright /ordfeminine /guillemotleft
/logicalnot
/hyphen % Y&Y (also at 45); Windows' softhyphen
/registered
/macron
% 0xD0
/degree /plusminus /twosuperior /threesuperior
/acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine /guillemotright
/onequarter /onehalf /threequarters /questiondown
% 0xC0
/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis
/Igrave /Iacute /Icircumflex /Idieresis
% 0xD0
/Eth /Ntilde /Ograve /Oacute
/Ocircumflex /Otilde /Odieresis /multiply
/Oslash /Ugrave /Uacute /Ucircumflex
/Udieresis /Yacute /Thorn /germandbls
% 0xE0
/agrave /aacute /acircumflex /atilde
/adieresis /aring /ae /ccedilla
/egrave /eacute /ecircumflex /edieresis
/igrave /iacute /icircumflex /idieresis
% 0xF0
/eth /ntilde /ograve /oacute
/ocircumflex /otilde /odieresis /divide
/oslash /ugrave /uacute /ucircumflex
/udieresis /yacute /thorn /ydieresis
] def
%%EndFont
%%BeginProcSet: texps.pro
TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2
index /UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
exch def dict begin Encoding{exch dup type /integertype ne{pop pop 1 sub
dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
ifelse}forall Metrics /Metrics currentdict end def[2 index currentdict
end definefont 3 -1 roll makefont /setfont load]cvx def}def
/ObliqueSlant{dup sin S cos div neg}B /SlantFont{4 index mul add}def
/ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding exch def}def
end
%%EndProcSet
%%BeginProcSet: special.pro
TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N
/vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen
false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B
/@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit
div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{
/CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{
10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B
/@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale
true def end /@MacSetUp{userdict /md known{userdict /md get type
/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup
length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{}
N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X 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}N
/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1
scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get
ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip
not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0
TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR
pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR 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
TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg
sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr
0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add
2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp
{pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72
div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray}
N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict
maxlength dict begin /magscale true def normalscale currentpoint TR
/psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts
/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx
psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy
scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR
/showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{
psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict
begin /SpecialSave save N gsave normalscale currentpoint TR
@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial
{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath
}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{
end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin}
N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{
/SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX
SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X
/startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad
yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end
%%EndProcSet
TeXDict begin 40258431 52099146 1000 300 300 () @start
/Fa 136[33 2[14 19 19 1[25 25 25 36 14 2[14 25 25 14
22 1[22 25 25 12[28 4[36 33 31[12 4[17 17 40[{
TeXBase1Encoding ReEncodeFont }23 50.000001 /Times-Italic
rf /Fb 134[18 3[21 12 1[16 5[12 2[12 1[21 12 18 17[21
25 8[14 28[10 44[{ TeXBase1Encoding ReEncodeFont }13
41.666669 /Times-Italic rf /Fc 134[19 19 27 19 19 10
15 12 19 19 19 19 29 10 19 1[10 19 19 12 17 19 17 19
17 12[23 21 3[27 12[25 27 6[10 6[19 1[19 19 1[9 43[21
2[{ TeXBase1Encoding ReEncodeFont }35 37.500000 /Times-Roman
rf /Fd 134[25 25 36 1[28 17 19 22 1[28 25 28 41 14 28
1[14 28 25 17 22 28 22 28 25 11[36 1[28 9[19 7[36 10[25
25 25 25 25 25 2[12 12[17 33[{ TeXBase1Encoding ReEncodeFont }34
50.000001 /Times-Bold rf /Fe 130[25 1[25 1[25 25 25 25
25 25 25 25 25 25 25 25 25 25 25 1[25 25 25 25 25 25
25 25 25 1[25 1[25 25 25 6[25 25 3[25 12[25 25 3[25 2[25
3[25 1[25 25 3[25 25 1[25 2[25 25 25 39[{
TeXBase1Encoding ReEncodeFont }46 41.666669 /Courier
rf /Ff 1 16 df<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF8
0FF003C010107E9115>15 D E /Fg 107[18 18 24[18 21 21 30
21 21 12 16 14 21 21 21 21 32 12 21 12 12 21 21 14 18
21 18 21 18 7[30 30 39 2[25 23 28 2[30 1[37 25 1[16 14
1[30 23 25 30 1[28 30 1[18 4[12 21 21 21 21 21 21 21
21 21 21 12 10 14 10 1[21 14 14 14 5[14 30[23 2[{
TeXBase1Encoding ReEncodeFont }67 41.666669 /Times-Roman
rf /Fh 134[30 30 43 30 33 20 23 27 1[33 30 33 50 17 2[17
33 30 20 27 33 27 33 30 13[33 9[23 47 4[43 40 11[30 30
30 30 30 30 49[{ TeXBase1Encoding ReEncodeFont }33 59.999974
/Times-Bold rf /Fi 133[22 3[25 25 14 19 17 3[25 39 14
2[14 1[25 1[22 1[22 25 22 19[44 5[36 2[36 2[36 46 6[25
25 6[25 2[12 1[12 44[{ TeXBase1Encoding ReEncodeFont }25
50.000001 /Times-Roman rf /Fj 134[36 36 1[36 36 20 28
24 1[36 36 36 56 20 2[20 1[36 24 32 36 32 1[32 28[52
18[36 36 1[18 46[{ TeXBase1Encoding ReEncodeFont }23
71.999998 /Times-Roman rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin
%%PaperSize: Letter
%%EndSetup
%%Page: 1 1
1 0 bop 290 440 a Fj(Documen)o(tation)18 b(an)o(d)g(e)o(xamp)o(les)g
(of)g(co)o(nsdiag.p)o(y)777 531 y(v)o(ersio)o(n)g(1.0)525
652 y Fi(M)q(anuel)12 b(Gutier)o(rez)h(Al)o(gaba,)g(irm)o(ina@ctv)m
(.es)778 749 y(December)f(1998)220 917 y Fh(1)60 b(Copyr)o(ight)15
b(issues)220 1010 y Fg(consdi)o(a)q(g.p)o(y)c(and)f(it)o(s)h(do)o(c)q
(umentati)o(on)f(\()h(t)o(hi)o(s)g(tex)o(t)f(a)q(nd)g(t)o(he)h(source)q
(s)f(of)g(tex)g(dra)o(wing)o(s)h(in)o(c)q(l)o(uded)220
1059 y(in)d(it)o(\))h(are)g(c)q(o)o(py)o(rig)o(hted)g(b)o(y)g(Manuel)f
(Guti)o(e)q(rr)o(e)q(z)h(Al)o(gaba)g(1999)f(a)q(n)o(d)h(yo)o(u)g(are)g
(free)g(to)f(use)q(,)h(m)q(o)o(dif)o(y)220 1109 y(,)i(cop)o(y)f(a)q(nd)
g(d)o(istri)o(b)o(ut)o(e)h(it)f(u)o(nder)g(the)h(cond)o(it)o(ion)f(t)o
(ha)q(t)f(you)h(in)o(c)q(l)o(ude)h(t)o(hi)o(s)g(not)o(ice)g(ad)f(in)g
(it)o(.)220 1247 y Fh(2)60 b(Intr)o(o)o(d)q(uc)o(tion)220
1340 y Fg(When)11 b(I)g(wrot)o(e)h(th)o(is)f(pro)o(gra)q(m)g(th)o(e)q
(re)g(wasn')o(t)g(an)o(y)g(a)q(u)o(toma)q(t)o(ed)g(uti)o(li)o(ty)g(fo)o
(r)g(drawi)o(ng)g(Ru)o(m)q(b)o(a)q(ug)o(h)220 1390 y(OO)f(box)o(es)q(.)
j(Of)d(course,)h(you)f(can)h(u)o(se)g(x\002g)f(or)g(a)q(n)o(y)g(ot)o
(her)g(drawi)o(ng)g(prog)o(ra)q(m)g(for)g(th)o(is)g(purp)o(ose)q(.)220
1440 y(Bu)o(t)g(th)o(is)g(ut)o(il)o(ity)f(ha)q(s)h(t)o(wo)g(major)g
(adv)o(ant)o(a)q(g)o(e)q(s,)h(I)o(t')m(s)g(ea)q(si)o(e)q(r)f(t)o(o)g
(use)g(a)q(n)o(d)g(it)o(')n(s)g(faster)g(to)f(')n(dra)o(w'.)k(On)220
1489 y(th)o(e)e(ot)o(he)q(r)f(hand)o(,)h(the)f(kin)o(ds)h(o)o(f)g(a)o
(v)o(ail)o(a)q(bl)o(e)g(dra)o(wing)o(s)g(are)g(li)o(mit)o(e)q(d)f(to)o
(:)282 1563 y Ff(\017)21 b Fg(i)o(solated)10 b(c)q(l)o(a)q(sses)282
1642 y Ff(\017)21 b Fg(t)o(re)q(es)11 b(\()o(a)q(nd)f(j)o(ust)g(tr)o(e)
q(es,)h(no)f(graphs)g(:\()g(\))g(of)g(clas)q(ses)h(r)o(e)q(l)o(a)q(t)o
(e)q(d)f(by)g(t)o(he)q(i)o(r)g(inh)o(e)q(ri)o(tance)q(s)282
1720 y Ff(\017)21 b Fg(si)o(m)q(pl)o(e)11 b(ass)q(o)o(c)q(i)o(a)q(t)o
(ion)o(s)g(of)f(class)q(es)282 1794 y(It')m(s)h(n)o(ot)f(muc)q(h)g(,)h
(b)n(ut...)282 1844 y(And)f(th)o(is)g(is)h(an)f(ut)o(il)o(ity)g(wri)o
(tt)o(e)q(n)g(i)o(n)g(py)o(thon)o(.)220 1917 y Fe(http:/)o(/www.python)
o(.org)282 1991 y Fg(I)15 b(imagin)o(e)h(t)o(ha)q(t)e(it)g(c)q(ou)o(ld)
h(b)o(e)h(wri)o(tt)o(e)q(n)e(in)h(T)935 2000 y(E)955
1991 y(X)g(b)o(ut)g(It)o(')n(s)g(10)f(ti)o(m)q(es)h(e)q(asier)g(to)f
(use)i(p)o(yt)o(hon.)220 2041 y(And)d(what')m(s)h(more)g(impo)o(rtant)f
(T)720 2050 y(E)740 2041 y(X)g(prog)o(ra)q(mme)q(r)o(s)h(hav)o(e)g(a)g
(model)f(,)i(if)e(th)o(ey)g(want)g(to)g(do)g(the)220
2091 y(tr)o(a)q(nsl)o(a)q(t)o(ion)o(.)220 2141 y(Ano)o(ther)j(po)o(int)
o(,)i(t)o(he)e(pyt)o(hon)f(c)q(o)o(de)h(c)q(ou)o(ld)g(b)o(e)h(i)o(mpro)
o(v)o(e)q(d)o(,)h(I')n(v)o(e)e(dup)o(li)o(c)q(ated)g(code)g(in)f(sev)o
(era)q(l)220 2190 y(parts,)g(bec)q(ause)g(I)f(th)o(ough)o(t)g(th)o(e)h
(clas)q(ses)g(were)f(re)q(all)o(y)g(dif)n(fe)q(r)o(e)q(nt)f(e)q(ac)q(h)
h(o)o(ther)n(,)i(.)7 b(.)f(.)h(,)15 b(in)f(t)o(he)h(end,)220
2240 y(th)o(ey')n(v)o(e)c(r)o(e)q(sul)o(ted)f(to)g(be)h(v)o(ery)f
(simil)o(a)q(r)g(i)o(n)g(the)h(w)o(a)q(y)f(t)o(hey)g(w)o(ork.)282
2290 y(And,)i(i)o(t)f(genera)q(t)o(es)h(t)o(ex)f(c)q(o)o(de)q(.)k(So)c
(if)g(you)f(want)h(it)f(in)h(po)o(stsc)q(r)o(ipt)o(,)h(gi)o(f)f(or)g
(whate)o(v)o(e)q(r)n(,)h(use)f(the)220 2340 y(pro)o(gram)q(s)f(dvi)o(,)
h(gs)f(or)g(grab)g(dir)o(e)q(ctl)o(y)h(f)o(rom)g(a)f(wind)o(o)o(w!)220
2478 y Fh(3)75 b(H)o(o)o(w)16 b(t)o(o)f(us)q(e)f(it)220
2579 y Fd(3.1)50 b(Using)12 b(it)g(in)g(a)h(p)o(yth)o(on)g(cod)o(e)220
2657 y Fg(Just)e(use)h(a)g(\223from)g(consd)o(iag)g(i)o(m)q(p)o(ort)f
(*)g(\223)h(a)q(n)o(d)g(t)o(hi)o(s)g(pi)o(e)q(ce)g(of)f(py)o(thon)g
(code)h(\()f(for)g(example\).)17 b(I)o(n)220 2707 y(dra)o(wing)o(3.)q
(t)o(ex)10 b(is)g(k)o(e)q(pt)g(t)o(he)h(f)o(oll)o(o)o(win)o(g)f(T)817
2716 y(E)837 2707 y(X)21 b(i)o(nstru)o(c)q(t)o(ion)o(s)11
b(t)o(ha)q(t)f(g)o(e)q(n)o(e)q(rates)h(t)o(he)g(d)o(rawin)o(g)21
b(2:)926 2831 y(1)p eop
%%Page: 2 2
2 1 bop 747 294 a Fg(F)q(i)o(gur)o(e)11 b(1:)h(Singl)o(e)f(\002gu)o(re)
774 869 y @beginspecial 0 @llx -125 @lly 78 @urx 0 @ury
780 @rwi @setspecial
%%BeginDocument: consdiag.ps1
50 dict begin
/mv {stroke moveto} def
/lv {lineto} def
/st {currentpoint stroke moveto} def
/sl {st setlinewidth} def
/sd {st 0 setdash} def
/sg {st setgray} def
/bs {gsave} def /es {stroke grestore} def
/fl {gsave setgray fill grestore
currentpoint newpath moveto} def
/fp {gsave setgray fill grestore st} def
/cv {curveto} def
/cr {gsave currentpoint newpath 3 -1 roll 0 360 arc
stroke grestore} def
/fc {gsave setgray currentpoint newpath
3 -1 roll 0 360 arc fill grestore} def
/ar {gsave currentpoint newpath 5 2 roll arc stroke grestore} def
/el {gsave /svm matrix currentmatrix def
currentpoint translate scale newpath 0 0 1 0 360 arc
svm setmatrix stroke grestore} def
/fe {gsave setgray currentpoint translate scale newpath
0 0 1 0 360 arc fill grestore} def
/av {/hhwid exch 2 div def /hlen exch def
/ah exch def /tipy exch def /tipx exch def
currentpoint /taily exch def /tailx exch def
/dx tipx tailx sub def /dy tipy taily sub def
/alen dx dx mul dy dy mul add sqrt def
/blen alen hlen sub def
gsave tailx taily translate dy dx atan rotate
(V) ah ne {blen 0 gt {blen 0 lineto} if} {alen 0 lineto} ifelse
stroke blen hhwid neg moveto alen 0 lineto blen hhwid lineto
(T) ah eq {closepath} if
(W) ah eq {gsave 1 setgray fill grestore closepath} if
(F) ah eq {fill} {stroke} ifelse
grestore tipx tipy moveto} def
0.24 0.24 scale
1 setlinecap 1 setlinejoin
3 setlinewidth [] 0 setdash
0 0 moveto
0 sl
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 -57 mv
323 -57 lv
0 0 mv
162 0 lv
324 0 lv
324 -260 lv
324 -520 lv
162 -520 lv
0 -520 lv
0 -260 lv
0 0 lv
stroke end showpage
%%EndDocument
@endspecial 795 382 a Fc(en)o(t)q(e)o(r)q(p)o(r)q(ise)795
488 y(na)o(me)795 532 y(be)o(ne)o(\002t)q(s)795 564 y(mon)o(e)o(y)795
612 y(he)o(alt)q(h)795 653 y(ho)o(bbies)795 693 y(drea)o(ms)795
733 y(un)o(der)p 882 733 12 2 v 13 w(sco)o(r)q(e)o(.)220
1036 y Fe(c)25 b(=)g(a_)o(simple_clas)o(s\(\))220 1085
y(c.do_n)o(ame_clase\(')o(person'\))220 1135 y(c.do_a)o(ttributes\([)o
('name')g(,)g(')o(sex',)g('mone)o(y',)g('health)o(',)320
1185 y('h)o(obbies',)g('d)o(reams']\))220 1235 y(c.do_f)o(unctions\([')
o(dream',)g('l)o(ove',)g('play)f(soccer',)h(')o(diving']\))220
1285 y(c.inde)o(x_of_class\()o(3\))220 1384 y(c.do_l)o(ines\(\))220
1434 y(c.gene)o(rate_latex_)o(code\('draw)o(ing3.tex'\))220
1603 y Fd(3.2)50 b(Sou)o(rces)13 b(of)f(h)o(elp)220 1680
y Fg(W)m(ell)o(,)j(the)f(best)g(y)o(ou)g(can)g(do)f(is)h(t)o(o)g(t)o(a)
q(k)o(e)g(a)h(l)o(ook)e(a)q(t)g(t)o(he)h(e)q(nd)f(of)g(c)q(on)o(s)q(d)o
(iag.py)g(where)h(you)g(can)220 1730 y(se)q(e)f(h)o(o)o(w)g(i)o(t)f
(gene)q(r)o(a)q(t)o(e)q(s)h(t)o(he)g(dr)o(aw)m(.)20 b(Se)q(cond)o(ly)m
(,)14 b(y)o(ou)e(s)q(h)o(oul)o(d)h(t)o(a)q(k)o(e)g(a)g(l)o(ook)f(a)q(t)
g(t)o(he)h(source)g(of)f(th)o(is)220 1780 y(document,)e(that)g(is:)i
(less)f(consdi)o(a)q(g)o(.)q(t)o(ex)f(T)m(wo)g(impo)o(rtant)g(detail)o
(s:)282 1863 y Ff(\017)21 b Fg(Don)o(')o(t)11 b(for)o(g)o(e)q(t)f(to)h
(i)o(nc)q(l)o(ude)g(th)o(e)h(comm)q(and:)i Fe(\\)o(usepackage{)o
(texdraw})d Fg(at)g(t)o(he)h(st)o(a)q(rt)324 1913 y(of)e(y)o(our)g
(docume)q(n)o(t)282 1996 y Ff(\017)21 b Fg(The)11 b(\002gu)o(re)q(s)f
(a)q(r)o(e)h(in)o(c)q(l)o(uded)f(using)g(a)h(si)o(m)q(p)o(le)g
Fe(\\in)o(put)g Fg(comma)q(n)o(d.)282 2079 y(And)f(th)o(a)q(t)o(')n(s)g
(a)q(l)o(l.)220 2219 y Fh(4)60 b(Some)14 b(ex)o(amples)h(of)g(i)o(t)220
2320 y Fd(4.1)63 b(A)12 b(sim)q(p)o(le)h(class)220 2398
y Fg(The)h(m)q(o)o(s)q(t)f(basic)h(\002gur)o(e)h(y)o(ou)f(ca)q(n)f
(face)i(wh)o(e)q(n)e(de)q(ali)o(ng)g(wit)o(h)h(OO)g(classe)q(s)g(i)o(s)
g(a)h(si)o(m)q(p)o(le)f(clas)q(s,)220 2448 y(wit)o(h)c(some)h(a)q(t)o
(tri)o(b)o(ut)o(e)q(s.)i(And)d(th)o(a)q(t)o(')n(s)g(what)g(you)g(ca)q
(n)g(se)q(e)g(in)g(\002gur)o(e)h(1.)220 2567 y Fd(4.2)63
b(A)12 b(sim)q(p)o(le)h(class)g(wit)o(h)f(long)g(names)220
2644 y Fg(Le)q(t)o(')n(s)f(se)q(e)g(what)g(happens)g(t)o(o)g(\002gure)g
(1)g(when)g(yo)o(u)g(want)f(to)h(i)o(nclud)o(e)h(a)f(re)q(all)o(y)g(l)o
(ong)g(att)o(rib)o(u)o(te.)k(If)220 2694 y(you)c(were)h(work)o(ing)f
(wit)o(h)h(a)g(t)o(radit)o(ion)o(a)q(l)f(dra)o(wing)g(ut)o(ili)o(ty)m
(,)h(you)f(wo)o(uld)g(hav)o(e)h(t)o(o)g(redra)o(w)g(a)q(l)o(l)f(the)926
2831 y(2)p eop
%%Page: 3 3
3 2 bop 605 294 a Fg(Fig)o(ure)11 b(2:)h(Sin)o(gle)e(\002)q(g)o(ure)h
(wi)o(th)f(l)o(ong)g(nam)q(es)588 961 y @beginspecial
0 @llx -147 @lly 167 @urx 0 @ury 1670 @rwi @setspecial
%%BeginDocument: consdiag.ps2
50 dict begin
/mv {stroke moveto} def
/lv {lineto} def
/st {currentpoint stroke moveto} def
/sl {st setlinewidth} def
/sd {st 0 setdash} def
/sg {st setgray} def
/bs {gsave} def /es {stroke grestore} def
/fl {gsave setgray fill grestore
currentpoint newpath moveto} def
/fp {gsave setgray fill grestore st} def
/cv {curveto} def
/cr {gsave currentpoint newpath 3 -1 roll 0 360 arc
stroke grestore} def
/fc {gsave setgray currentpoint newpath
3 -1 roll 0 360 arc fill grestore} def
/ar {gsave currentpoint newpath 5 2 roll arc stroke grestore} def
/el {gsave /svm matrix currentmatrix def
currentpoint translate scale newpath 0 0 1 0 360 arc
svm setmatrix stroke grestore} def
/fe {gsave setgray currentpoint translate scale newpath
0 0 1 0 360 arc fill grestore} def
/av {/hhwid exch 2 div def /hlen exch def
/ah exch def /tipy exch def /tipx exch def
currentpoint /taily exch def /tailx exch def
/dx tipx tailx sub def /dy tipy taily sub def
/alen dx dx mul dy dy mul add sqrt def
/blen alen hlen sub def
gsave tailx taily translate dy dx atan rotate
(V) ah ne {blen 0 gt {blen 0 lineto} if} {alen 0 lineto} ifelse
stroke blen hhwid neg moveto alen 0 lineto blen hhwid lineto
(T) ah eq {closepath} if
(W) ah eq {gsave 1 setgray fill grestore closepath} if
(F) ah eq {fill} {stroke} ifelse
grestore tipx tipy moveto} def
0.24 0.24 scale
1 setlinecap 1 setlinejoin
3 setlinewidth [] 0 setdash
0 0 moveto
0 sl
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 -57 mv
696 -57 lv
0 0 mv
348 0 lv
696 0 lv
696 -307 lv
696 -614 lv
348 -614 lv
0 -614 lv
0 -307 lv
0 0 lv
stroke end showpage
%%EndDocument
@endspecial 609 376 a Fc(perso)o(n)609 485 y(name)609
525 y(se)o(x)609 562 y(m)q(o)o(ne)o(y)609 610 y(hea)o(l)q(th)609
651 y(hobb)o(i)q(e)o(s)609 691 y(dr)q(e)o(ams)609 727
y(opinion)f(ab)o(out)g(l)q(a)o(t)q(e)o(st)h(p)o(oll)q(s)609
767 y(pos)o(i)q(ti)q(o)o(n)f(whe)o(n)h(p)o(l)q(a)o(ying)f(s)o(occ)o(er)
609 807 y(f)q(a)n(v)o(ouri)q(te)g(s)o(cri)q(p)o(t)q(ing)g(lang)o(uag)o
(e)220 1125 y Fg(box)o(.)16 b(But)10 b(with)h(t)o(hi)o(s)h(ut)o(il)o
(it)o(y)f(no.)16 b(That')m(s)c(what)f(yo)o(u)g(got)g(\(\002g)o(ure)h(2)
o(\).)k(So,)c(t)o(his)f(ut)o(ili)o(ty)g(i)o(s)h(st)o(a)q(rt)o(in)o(g)
220 1175 y(to)e(p)o(a)q(y)m(,)h(i)o(sn')o(t)f(it)o(?)220
1293 y Fd(4.3)63 b(A)12 b(sim)q(p)o(le)h(class)g(wit)o(h)f(attri)o(b)o
(ut)o(e)q(s)g(and)g(m)q(ark)g(of)g(cardi)o(nalit)o(y)220
1371 y Fg(W)m(ell)o(,)h(i)o(t')n(s)f(t)o(ime)g(to)f(se)q(e)h(a)g(c)q(l)
o(a)q(ss)g(at)g(i)o(ts)g(fu)o(ll)f(ext)o(e)q(n)o(t.)18
b(A)11 b(c)q(l)o(a)q(ss)h(ma)q(y)f(hav)o(e)h(fun)o(c)q(t)o(ion)o(s,)h
(and)f(i)o(t)g(may)220 1421 y(be)h(in)o(c)q(l)o(uded)g(i)o(n)g(more)g
(t)o(ha)q(n)f(one)h(dra)o(wing)o(.)21 b(In)12 b(th)o(a)q(t)g(c)q(ase)h
(a)h(mark)f(of)f(c)q(ardi)o(nali)o(ty)g(\()h(a)g(number)220
1471 y(th)o(a)q(t)d(sa)q(y)o(s)h(ho)o(w)g(many)f(ti)o(m)q(es)h(t)o(ha)q
(t)f(clas)q(s)h(h)o(a)q(s)g(b)o(e)q(en)g(dr)o(awn)g(\))g(i)o(s)g(sho)o
(wn)o(.)k(An)c(e)o(xa)q(mpl)o(e)g(of)g(such)g(a)220 1520
y(clas)q(s)g(is)h(what)f(you)g(c)q(an)h(see)g(a)q(t)f(\002gur)o(e)i(3)o
(.)18 b(I)o(n)12 b(t)o(his)g(cas)q(e)g(t)o(he)g(c)q(ardi)o(nali)o(ty)f
(is)h(3.)17 b(This)11 b(is)h(\002gu)o(re)g(is)220 1570
y(don)o(e)f(wit)o(h)f(the)g(py)o(thon)g(code:)220 1651
y Fe(c)25 b(=)g(a_)o(simple_clas)o(s\(\))220 1701 y(c.do_n)o
(ame_clase\(')o(person'\))220 1751 y(c.do_a)o(ttributes\([)o('name')g
(,)g(')o(sex',)g('mone)o(y',)g('health)o(',)320 1801
y('h)o(obbies',)g('d)o(reams']\))220 1850 y(c.do_f)o(unctions\([')o
(dream',)g('l)o(ove',)g('play)f(soccer',)h(')o(diving']\))220
1900 y(c.inde)o(x_of_class\()o(3\))220 2000 y(c.do_l)o(ines\(\))220
2050 y(c.gene)o(rate_latex_)o(code\('draw)o(ing3.tex'\))220
2249 y Fd(4.4)63 b(Inh)o(er)q(i)o(tances)13 b(examples)220
2327 y Fg(W)m(ell)o(,)j(til)o(l)e(no)o(w)m(,)i(it)o(')n(s)e(a)h(very)f
(simpl)o(e)i(p)o(rogr)o(a)q(m,)g(let')m(s)f(f)o(a)q(ce)g(a)g(m)q(o)o
(re)g(int)o(e)q(r)o(e)q(sti)o(ng)f(example.)26 b(A)220
2377 y(in)o(herit)o(a)q(nce)11 b(of)f(classe)q(s.)j(\002gure)e(4)282
2426 y(T)q(h)o(is)f(is)h(achie)o(v)o(e)q(d)f(t)o(ypese)q(t)o(ti)o(ng)g
(:)320 2507 y Fe(c)24 b(=)h(a_simple_)o(class\(\))320
2557 y(c.)o(do_name_cla)o(se\('person)o('\))320 2607
y(c.)o(do_attribut)o(es\(['name')f(,)h('sex',)g(')o(money',)g('he)o
(alth',)320 2657 y('h)o(obbies',)g('d)o(reams']\))320
2707 y(c.)o(do_function)o(s\(['dream')o(,)g('love',)g(')o(play)g
(soccer)o(',)g('diving)o(']\))926 2831 y Fg(3)p eop
%%Page: 4 4
4 3 bop 427 294 a Fg(Figu)o(re)11 b(3:)h(Sing)o(le)f(\002gu)o(re)g(wi)o
(th)f(a)q(t)o(tr)o(ib)o(ut)o(ion)o(s,)h(funct)o(ions)f(and)g(m)q(arks)
799 1011 y @beginspecial 0 @llx -159 @lly 66 @urx 0 @ury
660 @rwi @setspecial
%%BeginDocument: consdiag.ps3
50 dict begin
/mv {stroke moveto} def
/lv {lineto} def
/st {currentpoint stroke moveto} def
/sl {st setlinewidth} def
/sd {st 0 setdash} def
/sg {st setgray} def
/bs {gsave} def /es {stroke grestore} def
/fl {gsave setgray fill grestore
currentpoint newpath moveto} def
/fp {gsave setgray fill grestore st} def
/cv {curveto} def
/cr {gsave currentpoint newpath 3 -1 roll 0 360 arc
stroke grestore} def
/fc {gsave setgray currentpoint newpath
3 -1 roll 0 360 arc fill grestore} def
/ar {gsave currentpoint newpath 5 2 roll arc stroke grestore} def
/el {gsave /svm matrix currentmatrix def
currentpoint translate scale newpath 0 0 1 0 360 arc
svm setmatrix stroke grestore} def
/fe {gsave setgray currentpoint translate scale newpath
0 0 1 0 360 arc fill grestore} def
/av {/hhwid exch 2 div def /hlen exch def
/ah exch def /tipy exch def /tipx exch def
currentpoint /taily exch def /tailx exch def
/dx tipx tailx sub def /dy tipy taily sub def
/alen dx dx mul dy dy mul add sqrt def
/blen alen hlen sub def
gsave tailx taily translate dy dx atan rotate
(V) ah ne {blen 0 gt {blen 0 lineto} if} {alen 0 lineto} ifelse
stroke blen hhwid neg moveto alen 0 lineto blen hhwid lineto
(T) ah eq {closepath} if
(W) ah eq {gsave 1 setgray fill grestore closepath} if
(F) ah eq {fill} {stroke} ifelse
grestore tipx tipy moveto} def
0.24 0.24 scale
1 setlinecap 1 setlinejoin
3 setlinewidth [] 0 setdash
0 0 moveto
0 sl
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 -57 mv
274 -57 lv
0 -368 mv
274 -368 lv
0 0 mv
137 0 lv
274 0 lv
274 -331 lv
274 -662 lv
191 -662 mv
274 -579 lv
191 -662 lv
215 -638 mv
215 -638 lv
274 -662 mv
137 -662 lv
0 -662 lv
0 -331 lv
0 0 lv
stroke end showpage
%%EndDocument
@endspecial 820 378 a Fc(pe)o(r)q(s)o(on)820 487 y(na)o(me)820
527 y(s)o(e)o(x)820 564 y(mon)o(e)o(y)820 612 y(he)o(alt)q(h)820
653 y(ho)o(bbies)820 693 y(drea)o(ms)820 792 y(drea)o(m)820
830 y(lo)o(ve)820 863 y(play)f(s)o(oc)o(cer)820 901 y(di)o(ving)1023
1000 y(3)320 1227 y Fe(c.)o(do_lines\(\))320 1277 y(d)24
b(=)h(a_simple_)o(class\(\))320 1327 y(d.)o(do_name_cla)o(se\('work'\))
320 1376 y(d.)o(do_attribut)o(es\(['salar)o(y')g(,)g('post')o(,)320
1426 y('l)o(abor)g(union')o(,)g('product)o(ivity',)g('qu)o(alification)
o(s',)345 1476 y(')o(capabilitie)o(s']\))320 1526 y(d.)o(do_function)o
(s\(['work',)f('strike',)g('be)h(ill',)g(')o(be)g(fired'])o(\))320
1625 y(d.)o(do_lines\(\))320 1675 y(e)f(=)h(union_der)o(ivation\(\))320
1725 y(e.)o(add_union\(c)o(,d\))320 1775 y(e.)o(generate_la)o
(tex_code\(')o(drawing4.te)o(x'\))220 1908 y Fg(Ea)q(sy)m(,)11
b(uh)f(?)j(:)o(\))282 1958 y(But)c(m)q(u)o(c)q(h)h(more)g(c)q(ompl)o
(ex)g(dr)o(awing)o(s)h(are)g(also)f(eas)q(y)g(t)o(o)g(do)g(as)h(sh)o(o)
o(ws)21 b(5)10 b(,)g(th)o(is)g(is)g(a)h(pi)o(c)q(t)o(ure)220
2007 y(of)f(a)h(mot)o(he)q(r)f(class)h(t)o(ha)q(t)e(ha)q(s)h(sev)o(era)
q(l)f(da)q(u)o(ght)o(e)q(r)h(c)q(l)o(as)q(ses.)292 2057
y Fb(R)q(e)o(g)o(r)o(etf)o(ull)o(y)n(,)h(it)e(IS)h Fa(NO)n(T)i(poss)q
(i)o(ble)h(\()o(right)f(now\))g(to)g(inheritate)g(fr)n(om)g(mor)n(e)h
(t)o(han)220 2107 y(one)f(c)q(l)o(as)q(s.)29 b Fg(In)o(s)q(t)o(ea)q(d)
10 b(,)h(yo)o(u)f(c)q(an)g(use)h(in)o(dice)q(s)f(to)g(ma)q(r)o(k)g(s)q
(e)o(v)o(e)q(r)o(a)q(l)g(i)o(nherit)o(a)q(n)o(c)q(es.)282
2157 y(And)j(,)i(well)o(,)g(you)e(ca)q(n)g(use)h(sev)o(eral)f(le)o(vel)
o(s)h(of)f(inh)o(e)q(ri)o(tance)q(s,)i(j)o(ust)e(be)h(a)g(bi)o(t)f(c)q
(areful)g(about)220 2207 y(ho)n(w)e(yo)o(u)f(b)o(uil)o(d)g(the)g(c)q
(od)o(e)q(,)h(t)o(a)q(k)o(e)g(t)o(his)f(\(i)o(t)g(m)q(ak)o(e)q(s)g
(\002gure)21 b(6\))10 b(as)h(ex)o(a)q(mpl)o(e)q(:)320
2290 y Fe(d)24 b(=)h(a_simple_)o(class\(\))320 2339 y(d.)o(do_name_cla)
o(se\('worker)o('\))320 2389 y(d.)o(do_attribut)o(es\(['salar)o(y')g(,)
g('post')o(,)320 2439 y('l)o(abor)g(union')o(,)g('product)o(ivity',)g
('qu)o(alification)o(s',)345 2489 y(')o(capabilitie)o(s']\))320
2638 y(d.)o(do_lines\(\))320 2688 y(f)f(=)h(a_simple_)o(class\(\))926
2831 y Fg(4)p eop
%%Page: 5 5
5 4 bop 693 696 a Fg(Fi)o(gure)10 b(4:)j(Si)o(m)q(p)o(le)e(i)o(nheri)o
(tanc)q(e)763 2263 y @beginspecial -12 @llx -363 @lly
71 @urx 0 @ury 830 @rwi @setspecial
%%BeginDocument: consdiag.ps4
50 dict begin
/mv {stroke moveto} def
/lv {lineto} def
/st {currentpoint stroke moveto} def
/sl {st setlinewidth} def
/sd {st 0 setdash} def
/sg {st setgray} def
/bs {gsave} def /es {stroke grestore} def
/fl {gsave setgray fill grestore
currentpoint newpath moveto} def
/fp {gsave setgray fill grestore st} def
/cv {curveto} def
/cr {gsave currentpoint newpath 3 -1 roll 0 360 arc
stroke grestore} def
/fc {gsave setgray currentpoint newpath
3 -1 roll 0 360 arc fill grestore} def
/ar {gsave currentpoint newpath 5 2 roll arc stroke grestore} def
/el {gsave /svm matrix currentmatrix def
currentpoint translate scale newpath 0 0 1 0 360 arc
svm setmatrix stroke grestore} def
/fe {gsave setgray currentpoint translate scale newpath
0 0 1 0 360 arc fill grestore} def
/av {/hhwid exch 2 div def /hlen exch def
/ah exch def /tipy exch def /tipx exch def
currentpoint /taily exch def /tailx exch def
/dx tipx tailx sub def /dy tipy taily sub def
/alen dx dx mul dy dy mul add sqrt def
/blen alen hlen sub def
gsave tailx taily translate dy dx atan rotate
(V) ah ne {blen 0 gt {blen 0 lineto} if} {alen 0 lineto} ifelse
stroke blen hhwid neg moveto alen 0 lineto blen hhwid lineto
(T) ah eq {closepath} if
(W) ah eq {gsave 1 setgray fill grestore closepath} if
(F) ah eq {fill} {stroke} ifelse
grestore tipx tipy moveto} def
0.24 0.24 scale
1 setlinecap 1 setlinejoin
3 setlinewidth [] 0 setdash
0 0 moveto
0 sl
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 -57 mv
274 -57 lv
0 -368 mv
274 -368 lv
0 0 mv
137 0 lv
274 0 lv
274 -331 lv
274 -662 lv
137 -662 lv
0 -662 lv
0 -331 lv
0 0 lv
137 -661 mv
137 -779 lv
161 -803 lv
114 -803 lv
138 -779 lv
114 -803 lv
20 -803 lv
20 -850 lv
-52 -850 mv
-52 -850 lv
-52 -850 mv
-52 -850 lv
-52 -850 mv
-52 -850 lv
-52 -907 mv
296 -907 lv
-52 -1219 mv
296 -1219 lv
-52 -850 mv
122 -850 lv
296 -850 lv
296 -1181 lv
296 -1512 lv
122 -1512 lv
-52 -1512 lv
-52 -1181 lv
-52 -850 lv
stroke end showpage
%%EndDocument
@endspecial 836 779 a Fc(perso)o(n)836 889 y(name)836
929 y(se)o(x)836 965 y(m)q(o)o(ne)o(y)836 1014 y(hea)o(l)q(th)836
1055 y(hobb)o(i)q(e)o(s)836 1095 y(dr)q(e)o(ams)836 1194
y(dr)q(e)o(am)836 1232 y(l)q(o)o(v)o(e)836 1265 y(pl)q(a)o(y)e(so)o
(cce)o(r)836 1303 y(div)o(i)q(n)o(g)784 1638 y(work)784
1740 y(salary)784 1778 y(pos)o(t)784 1825 y(l)q(a)o(bor)h(u)o(nion)784
1861 y(pr)q(o)o(duc)o(t)q(i)o(vit)q(y)784 1901 y(qua)o(l)q(i\002ca)o(t)
q(ion)o(s)784 1941 y(cap)o(abili)q(ti)q(e)o(s)784 2044
y(work)784 2082 y(str)q(ike)784 2120 y(be)f(il)q(l)784
2158 y(be)g(\002red)926 2831 y Fg(5)p eop
%%Page: 6 6
6 5 bop 682 886 a Fg(Fig)o(ure)11 b(5:)h(Se)o(veral)e(in)o(he)q(r)o
(itance)q(s)359 2073 y @beginspecial -24 @llx -272 @lly
253 @urx 0 @ury 2770 @rwi @setspecial
%%BeginDocument: consdiag.ps5
50 dict begin
/mv {stroke moveto} def
/lv {lineto} def
/st {currentpoint stroke moveto} def
/sl {st setlinewidth} def
/sd {st 0 setdash} def
/sg {st setgray} def
/bs {gsave} def /es {stroke grestore} def
/fl {gsave setgray fill grestore
currentpoint newpath moveto} def
/fp {gsave setgray fill grestore st} def
/cv {curveto} def
/cr {gsave currentpoint newpath 3 -1 roll 0 360 arc
stroke grestore} def
/fc {gsave setgray currentpoint newpath
3 -1 roll 0 360 arc fill grestore} def
/ar {gsave currentpoint newpath 5 2 roll arc stroke grestore} def
/el {gsave /svm matrix currentmatrix def
currentpoint translate scale newpath 0 0 1 0 360 arc
svm setmatrix stroke grestore} def
/fe {gsave setgray currentpoint translate scale newpath
0 0 1 0 360 arc fill grestore} def
/av {/hhwid exch 2 div def /hlen exch def
/ah exch def /tipy exch def /tipx exch def
currentpoint /taily exch def /tailx exch def
/dx tipx tailx sub def /dy tipy taily sub def
/alen dx dx mul dy dy mul add sqrt def
/blen alen hlen sub def
gsave tailx taily translate dy dx atan rotate
(V) ah ne {blen 0 gt {blen 0 lineto} if} {alen 0 lineto} ifelse
stroke blen hhwid neg moveto alen 0 lineto blen hhwid lineto
(T) ah eq {closepath} if
(W) ah eq {gsave 1 setgray fill grestore closepath} if
(F) ah eq {fill} {stroke} ifelse
grestore tipx tipy moveto} def
0.24 0.24 scale
1 setlinecap 1 setlinejoin
3 setlinewidth [] 0 setdash
0 0 moveto
0 sl
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 -57 mv
174 -57 lv
0 0 mv
87 0 lv
174 0 lv
174 -236 lv
174 -472 lv
87 -472 lv
0 -472 lv
0 -236 lv
0 0 lv
87 -472 mv
87 -590 lv
111 -614 lv
64 -614 lv
88 -590 lv
64 -614 lv
-30 -614 lv
-30 -661 lv
-102 -661 mv
-102 -661 lv
-102 -661 mv
-102 -661 lv
-102 -661 mv
-102 -661 lv
-102 -718 mv
246 -718 lv
-102 -661 mv
72 -661 lv
246 -661 lv
246 -897 lv
246 -1133 lv
72 -1133 lv
-102 -1133 lv
-102 -897 lv
-102 -661 lv
111 -614 mv
332 -614 lv
332 -661 lv
261 -661 mv
261 -661 lv
261 -661 mv
261 -661 lv
261 -661 mv
261 -661 lv
261 -718 mv
559 -718 lv
261 -661 mv
410 -661 lv
559 -661 lv
559 -897 lv
559 -1133 lv
410 -1133 lv
261 -1133 lv
261 -897 lv
261 -661 lv
332 -614 mv
678 -614 lv
678 -661 lv
607 -661 mv
607 -661 lv
607 -661 mv
607 -661 lv
607 -661 mv
607 -661 lv
607 -718 mv
1055 -718 lv
607 -661 mv
831 -661 lv
1055 -661 lv
1055 -897 lv
1055 -1133 lv
831 -1133 lv
607 -1133 lv
607 -897 lv
607 -661 lv
stroke end showpage
%%EndDocument
@endspecial 482 969 a Fc(perso)o(n)482 1079 y(name)482
1119 y(se)o(x)482 1155 y(mone)o(y)482 1203 y(hea)o(l)q(th)482
1244 y(hob)o(bies)482 1284 y(dreams)380 1638 y(work)o(er)380
1740 y(sa)o(l)q(a)o(r)q(y)380 1778 y(pos)o(t)380 1825
y(l)q(a)o(bor)f(union)380 1861 y(produ)o(ctivity)380
1901 y(qua)o(l)q(i\002c)o(ati)q(o)o(ns)380 1941 y(cap)o(ab)o(i)q(li)q
(ties)743 1638 y(father)743 1740 y(b)o(us)o(y)743 1784
y(t)q(e)o(nde)o(r)q(n)o(ess)743 1825 y(stubo)o(r)q(n)o(nes)o(s)743
1861 y(cares)o(s)743 1905 y(kiss)o(es)743 1941 y(cap)o(ab)o(i)q(li)q
(ties)1089 1634 y(che)o(ss)g(p)o(l)q(a)o(yer)1089 1744
y(elo)1089 1780 y(cruelty)1089 1825 y(stubo)o(r)q(n)o(nes)o(s)1089
1865 y(bad)g(tri)q(c)o(ks)1089 1901 y(i)q(n)o(t)q(e)o(l)q(li)q(g)o(en)o
(ce)1089 1941 y(ope)o(nings)g(k)o(no)o(wled)o(ge)926
2831 y Fg(6)p eop
%%Page: 7 7
7 6 bop 320 266 a Fe(f.)o(do_name_cla)o(se\('comput)o(er)25
b(scientis)o(t'\))320 315 y(f.)o(do_attribut)o(es\(['langu)o(ages')g(,)
g('pr)o(eferred)g(OS')o(,)320 365 y('p)o(referred)g(ed)o(itor',)g('ha)o
(ckerism',)g(')o(ATBB']\))320 465 y(f.)o(do_lines\(\))320
565 y(h)f(=)h(union_der)o(ivation\(\))320 614 y(h.)o(add_union\(d)o
(,f\))320 714 y(c)f(=)h(a_simple_)o(class\(\))320 764
y(c.)o(do_name_cla)o(se\('person)o('\))320 814 y(c.)o(do_attribut)o
(es\(['name')f(,)h('sex',)g(')o(money',)g('he)o(alth',)320
863 y('h)o(obbies',)g('d)o(reams']\))320 913 y(c.)o(do_lines\(\))320
1013 y(e)f(=)h(union_der)o(ivation\(\))320 1063 y(e.)o(add_union\(c)o
(,h\))320 1112 y(e.)o(generate_la)o(tex_code\(')o(drawing6.te)o(x'\))
282 1245 y Fg(Finall)o(y)13 b(a)h(rema)q(i)o(nder:)k(Y)-5
b(ou)13 b(ca)q(n)g(combin)o(e)h(th)o(is)f(fea)q(t)o(ures)h(so)f(yo)o(u)
g(c)q(an)g(get)g(se)o(veral)g(l)o(ev)o(els)220 1295 y(and)d(wit)o(h)h
(se)o(v)o(e)q(r)o(a)q(l)f(son)o(s)q(,)g(b)o(ut...)k(w)o(a)q(t)o(c)q(h)c
(t)o(he)h(spac)q(e!)i(The)e(p)o(iec)q(e)g(o)o(f)f(pa)q(p)o(e)q(r)g(has)
h(i)o(ts)f(li)o(m)q(i)o(tati)o(ons.)220 1414 y Fd(4.5)63
b(Associati)o(ons)13 b(examples)220 1492 y Fg(W)m(ell)o(,)f(I)f(got)f
(a)i(bi)o(t)f(up)o(s)q(et)g(wh)o(e)q(n)g(I)g(reali)o(z)q(e)g(that)g(f)o
(a)q(ct)g(of)g(mul)o(ti)o(ple)g(in)o(he)q(r)o(itance)q(s,)g(s)q(o)g
(associati)o(ons)220 1542 y(ha)o(v)o(e)q(n')o(t)g(g)o(ot)g(so)g(compli)
o(c)q(ated,)h(and)f(i)o(n)g(fac)q(t)f(,)i(you)f(can)g(do)g(onl)o(y)g(a)
q(ssociati)o(ons)g(between)g(s)q(i)o(mple)220 1591 y(clas)q(ses)e(and)f
(a)q(ssociati)o(ons,)h(s)q(o)f(yo)o(u)h(ca)q(n)o(')o(t)g(mi)o(x)g(ass)q
(o)o(c)q(i)o(a)q(t)o(ion)o(s)g(a)q(n)o(d)g(d)o(e)q(ri)n(v)o(ati)o(ons,)
g(that)f(wou)o(ld)g(hav)o(e)220 1641 y(bee)q(n)i(\002ne.)j(\002gure)d
(7)220 1760 y Fd(4.6)50 b(Aggr)o(egati)o(ons)13 b(t)o(oo!)220
1838 y Fg(Y)-5 b(ou)11 b(can)g(do)f(a)q(g)o(greg)o(a)q(t)o(io)o(ns,)i
(j)o(ust)e(replac)q(e)h(\223deri)o(v)n(a)q(t)o(ion)o(\224)h(i)o(n)e
(the)h(pr)o(evi)o(ous)g(e)o(xa)q(mpl)o(e)q(s)f(for)g(\223)q(agre-)220
1888 y(gati)o(on\224)g(a)q(nd)g(t)o(hat')n(s)g(all.)j(As)d(exam)q(p)o
(le)h(l)o(ook)f(at)g(\002gure)21 b(8.)220 2028 y Fh(5)75
b(Ca)n(v)o(eats)15 b(and)g(b)o(u)q(g)o(s)220 2121 y Fg(If)10
b(you)g(w)o(a)q(n)o(t)g(to)g(do)g(v)o(ery)g(c)q(ompl)o(ex)g(draw)o
(ings)g(as)q(:)282 2204 y Ff(\017)21 b Fg(se)o(v)o(e)q(ral)10
b(le)o(v)o(e)q(l)o(s)h(o)o(f)g(i)o(nheri)o(tanc)q(es/agreg)o(atio)o(ns)
g(and)f(ea)q(ch)g(oth)o(e)q(r)g(wit)o(h)g(lot)o(s)h(o)o(f)g(so)o(ns,)
282 2287 y Ff(\017)21 b Fg(really)10 b(d)o(e)q(ep)g(tree)q(s)g(of)g(in)
o(he)q(r)o(itance)q(s,)g(m)q(or)o(e)h(th)o(a)q(n)f(fou)o(r)h(are)g(p)o
(robabl)o(y)g(a)f(re)q(all)o(y)g(bad)h(i)o(dea)q(,)282
2370 y Ff(\017)21 b Fg(se)o(v)o(e)q(ral)10 b(nested)g(a)q(ssociati)o
(ons,)220 2453 y(th)o(e)q(n)o(,)j(pro)o(ba)q(b)o(ly)f(y)o(ou')o(ll)f
(get)h(a)g(shi)o(t)g(as)g(out)o(c)q(ome.)18 b(This)12
b(u)o(ti)o(lit)o(y)g(i)o(s)g(not)f(c)q(l)o(ev)o(er)n(,)i(j)o(ust)f(t)o
(ry)g(t)o(o)g(t)o(o)g(se)q(t)220 2502 y(th)o(e)f(c)q(l)o(a)q(sses)g(i)o
(n)f(a)h(log)o(ica)q(l)o(,)g(predetermined)f(way)m(.)282
2552 y(Apart)h(fr)o(om)h(t)o(hi)o(s)g(cav)o(ea)q(t)o(,)g(t)o(here)q(')o
(ll)e(be)h(s)q(o)o(m)q(e)g(b)o(ugs,)g(.)c(.)f(.)h(,)12
b(o)o(r)f(perhaps)g(not)o(.)16 b(p)o(yt)o(hon)11 b(i)o(s)g(ra)q(t)o
(her)220 2602 y(rob)o(u)o(st!)926 2831 y(7)p eop
%%Page: 8 8
8 7 bop 607 577 a Fg(Fi)o(gure)11 b(6)o(:)i(Se)o(v)o(e)q(ral)d(l)o(ev)o
(els)g(of)g(inh)o(e)q(ri)o(tance)q(s)713 2382 y @beginspecial
-28 @llx -420 @lly 79 @urx 0 @ury 1070 @rwi @setspecial
%%BeginDocument: consdiag.ps6
50 dict begin
/mv {stroke moveto} def
/lv {lineto} def
/st {currentpoint stroke moveto} def
/sl {st setlinewidth} def
/sd {st 0 setdash} def
/sg {st setgray} def
/bs {gsave} def /es {stroke grestore} def
/fl {gsave setgray fill grestore
currentpoint newpath moveto} def
/fp {gsave setgray fill grestore st} def
/cv {curveto} def
/cr {gsave currentpoint newpath 3 -1 roll 0 360 arc
stroke grestore} def
/fc {gsave setgray currentpoint newpath
3 -1 roll 0 360 arc fill grestore} def
/ar {gsave currentpoint newpath 5 2 roll arc stroke grestore} def
/el {gsave /svm matrix currentmatrix def
currentpoint translate scale newpath 0 0 1 0 360 arc
svm setmatrix stroke grestore} def
/fe {gsave setgray currentpoint translate scale newpath
0 0 1 0 360 arc fill grestore} def
/av {/hhwid exch 2 div def /hlen exch def
/ah exch def /tipy exch def /tipx exch def
currentpoint /taily exch def /tailx exch def
/dx tipx tailx sub def /dy tipy taily sub def
/alen dx dx mul dy dy mul add sqrt def
/blen alen hlen sub def
gsave tailx taily translate dy dx atan rotate
(V) ah ne {blen 0 gt {blen 0 lineto} if} {alen 0 lineto} ifelse
stroke blen hhwid neg moveto alen 0 lineto blen hhwid lineto
(T) ah eq {closepath} if
(W) ah eq {gsave 1 setgray fill grestore closepath} if
(F) ah eq {fill} {stroke} ifelse
grestore tipx tipy moveto} def
0.24 0.24 scale
1 setlinecap 1 setlinejoin
3 setlinewidth [] 0 setdash
0 0 moveto
0 sl
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 -57 mv
174 -57 lv
0 0 mv
87 0 lv
174 0 lv
174 -236 lv
174 -472 lv
87 -472 lv
0 -472 lv
0 -236 lv
0 0 lv
87 -472 mv
87 -590 lv
111 -614 lv
64 -614 lv
88 -590 lv
64 -614 lv
-30 -614 lv
-30 -661 lv
-102 -661 mv
-102 -661 lv
-102 -661 mv
-102 -661 lv
-102 -661 mv
-102 -661 lv
-102 -718 mv
246 -718 lv
-102 -661 mv
72 -661 lv
246 -661 lv
246 -897 lv
246 -1133 lv
72 -1133 lv
-102 -1133 lv
-102 -897 lv
-102 -661 lv
72 -1134 mv
72 -1252 lv
96 -1276 lv
49 -1276 lv
73 -1252 lv
49 -1276 lv
-45 -1276 lv
-45 -1323 lv
-117 -1323 mv
-117 -1323 lv
-117 -1323 mv
-117 -1323 lv
-117 -1323 mv
-117 -1323 lv
-117 -1379 mv
331 -1379 lv
-117 -1323 mv
107 -1323 lv
331 -1323 lv
331 -1536 lv
331 -1749 lv
107 -1749 lv
-117 -1749 lv
-117 -1536 lv
-117 -1323 lv
stroke end showpage
%%EndDocument
@endspecial 851 661 a Fc(perso)o(n)851 771 y(name)851
811 y(se)o(x)851 847 y(m)q(o)o(ne)o(y)851 895 y(hea)o(l)q(th)851
936 y(hobb)o(i)q(e)o(s)851 976 y(dr)q(e)o(ams)749 1330
y(worke)o(r)749 1432 y(salary)749 1471 y(pos)o(t)749
1517 y(l)q(a)o(bor)g(u)o(nion)749 1553 y(pr)q(o)o(duc)o(t)q(i)o(vit)q
(y)749 1593 y(qua)o(l)q(i\002ca)o(t)q(ion)o(s)749 1633
y(cap)o(abili)q(ti)q(e)o(s)734 1988 y(compu)o(t)q(e)o(r)g(s)o(cientist)
734 2095 y(l)q(a)o(ngua)o(ge)o(s)734 2135 y(pr)q(e)o(f)q(e)o(r)q(red)f
(OS)734 2175 y(pr)q(e)o(f)q(e)o(r)q(red)g(e)o(dit)q(o)o(r)734
2218 y(hac)o(ke)o(r)q(ism)734 2258 y(A)l(TBB)926 2831
y Fg(8)p eop
%%Page: 9 9
9 8 bop 693 416 a Fg(Fi)o(gure)10 b(7:)j(Si)o(m)q(p)o(le)e(assoc)q(i)o
(a)q(t)o(io)o(n)511 941 y @beginspecial 0 @llx -113 @lly
204 @urx 0 @ury 2040 @rwi @setspecial
%%BeginDocument: consdiag.ps7
50 dict begin
/mv {stroke moveto} def
/lv {lineto} def
/st {currentpoint stroke moveto} def
/sl {st setlinewidth} def
/sd {st 0 setdash} def
/sg {st setgray} def
/bs {gsave} def /es {stroke grestore} def
/fl {gsave setgray fill grestore
currentpoint newpath moveto} def
/fp {gsave setgray fill grestore st} def
/cv {curveto} def
/cr {gsave currentpoint newpath 3 -1 roll 0 360 arc
stroke grestore} def
/fc {gsave setgray currentpoint newpath
3 -1 roll 0 360 arc fill grestore} def
/ar {gsave currentpoint newpath 5 2 roll arc stroke grestore} def
/el {gsave /svm matrix currentmatrix def
currentpoint translate scale newpath 0 0 1 0 360 arc
svm setmatrix stroke grestore} def
/fe {gsave setgray currentpoint translate scale newpath
0 0 1 0 360 arc fill grestore} def
/av {/hhwid exch 2 div def /hlen exch def
/ah exch def /tipy exch def /tipx exch def
currentpoint /taily exch def /tailx exch def
/dx tipx tailx sub def /dy tipy taily sub def
/alen dx dx mul dy dy mul add sqrt def
/blen alen hlen sub def
gsave tailx taily translate dy dx atan rotate
(V) ah ne {blen 0 gt {blen 0 lineto} if} {alen 0 lineto} ifelse
stroke blen hhwid neg moveto alen 0 lineto blen hhwid lineto
(T) ah eq {closepath} if
(W) ah eq {gsave 1 setgray fill grestore closepath} if
(F) ah eq {fill} {stroke} ifelse
grestore tipx tipy moveto} def
0.24 0.24 scale
1 setlinecap 1 setlinejoin
3 setlinewidth [] 0 setdash
0 0 moveto
0 sl
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 -57 mv
398 -57 lv
0 0 mv
199 0 lv
398 0 lv
398 -236 lv
398 -472 lv
199 -472 lv
0 -472 lv
0 -236 lv
0 0 lv
400 -212 mv
400 -212 lv
398 -236 mv
625 -236 lv
533 -212 mv
533 -212 lv
625 -142 mv
625 -142 lv
625 -142 mv
625 -142 lv
625 -142 mv
625 -142 lv
625 -198 mv
849 -198 lv
625 -142 mv
737 -142 lv
849 -142 lv
849 -307 lv
849 -472 lv
737 -472 lv
625 -472 lv
625 -307 lv
625 -142 lv
stroke end showpage
%%EndDocument
@endspecial 532 502 a Fc(enterpri)q(s)o(e)532 608 y(name)532
648 y(pr)q(o)o(\002ts)532 692 y(estab)o(l)q(is)o(hed)532
728 y(\002sc)o(al)f(p)o(aradise)o(s)532 773 y(f)q(raud)o(s)532
813 y(bad)f(tr)q(ick)o(s)920 694 y(0:n)85 b(0:1)1156
647 y(work)o(er)1156 746 y(wag)o(e)1156 794 y(t)q(imetable)1156
830 y(sen)o(i)q(o)o(r)q(it)q(y)675 1330 y Fg(Fi)o(gure)10
b(8:)j(M)o(ult)o(ipl)o(e)e(aggreg)o(a)q(t)o(io)o(n)359
2543 y @beginspecial -30 @llx -278 @lly 247 @urx 0 @ury
2770 @rwi @setspecial
%%BeginDocument: consdiag.ps8
50 dict begin
/mv {stroke moveto} def
/lv {lineto} def
/st {currentpoint stroke moveto} def
/sl {st setlinewidth} def
/sd {st 0 setdash} def
/sg {st setgray} def
/bs {gsave} def /es {stroke grestore} def
/fl {gsave setgray fill grestore
currentpoint newpath moveto} def
/fp {gsave setgray fill grestore st} def
/cv {curveto} def
/cr {gsave currentpoint newpath 3 -1 roll 0 360 arc
stroke grestore} def
/fc {gsave setgray currentpoint newpath
3 -1 roll 0 360 arc fill grestore} def
/ar {gsave currentpoint newpath 5 2 roll arc stroke grestore} def
/el {gsave /svm matrix currentmatrix def
currentpoint translate scale newpath 0 0 1 0 360 arc
svm setmatrix stroke grestore} def
/fe {gsave setgray currentpoint translate scale newpath
0 0 1 0 360 arc fill grestore} def
/av {/hhwid exch 2 div def /hlen exch def
/ah exch def /tipy exch def /tipx exch def
currentpoint /taily exch def /tailx exch def
/dx tipx tailx sub def /dy tipy taily sub def
/alen dx dx mul dy dy mul add sqrt def
/blen alen hlen sub def
gsave tailx taily translate dy dx atan rotate
(V) ah ne {blen 0 gt {blen 0 lineto} if} {alen 0 lineto} ifelse
stroke blen hhwid neg moveto alen 0 lineto blen hhwid lineto
(T) ah eq {closepath} if
(W) ah eq {gsave 1 setgray fill grestore closepath} if
(F) ah eq {fill} {stroke} ifelse
grestore tipx tipy moveto} def
0.24 0.24 scale
1 setlinecap 1 setlinejoin
3 setlinewidth [] 0 setdash
0 0 moveto
0 sl
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 -57 mv
174 -57 lv
0 0 mv
87 0 lv
174 0 lv
174 -236 lv
174 -472 lv
87 -472 lv
0 -472 lv
0 -236 lv
0 0 lv
87 -472 mv
111 -496 lv
87 -520 lv
111 -496 lv
87 -472 lv
63 -496 lv
87 -520 lv
87 -638 lv
-55 -638 lv
-55 -685 lv
-126 -685 mv
-126 -685 lv
-126 -685 mv
-126 -685 lv
-126 -685 mv
-126 -685 lv
-126 -742 mv
222 -742 lv
-126 -685 mv
48 -685 lv
222 -685 lv
222 -921 lv
222 -1157 lv
48 -1157 lv
-126 -1157 lv
-126 -921 lv
-126 -685 lv
87 -638 mv
308 -638 lv
308 -685 lv
237 -685 mv
237 -685 lv
237 -685 mv
237 -685 lv
237 -685 mv
237 -685 lv
237 -742 mv
535 -742 lv
237 -685 mv
386 -685 lv
535 -685 lv
535 -921 lv
535 -1157 lv
386 -1157 lv
237 -1157 lv
237 -921 lv
237 -685 lv
308 -638 mv
654 -638 lv
654 -685 lv
583 -685 mv
583 -685 lv
583 -685 mv
583 -685 lv
583 -685 mv
583 -685 lv
583 -742 mv
1031 -742 lv
583 -685 mv
807 -685 lv
1031 -685 lv
1031 -921 lv
1031 -1157 lv
807 -1157 lv
583 -1157 lv
583 -921 lv
583 -685 lv
stroke end showpage
%%EndDocument
@endspecial 506 1414 a Fc(perso)o(n)506 1524 y(name)506
1564 y(se)o(x)506 1600 y(mone)o(y)506 1648 y(hea)o(l)q(th)506
1689 y(hob)o(bies)506 1729 y(dreams)380 2108 y(work)o(er)380
2210 y(sa)o(l)q(a)o(r)q(y)380 2248 y(pos)o(t)380 2294
y(l)q(a)o(bor)e(union)380 2330 y(produ)o(ctivity)380
2371 y(qua)o(l)q(i\002c)o(ati)q(o)o(ns)380 2411 y(cap)o(ab)o(i)q(li)q
(ties)743 2108 y(father)743 2210 y(b)o(us)o(y)743 2254
y(t)q(e)o(nde)o(r)q(n)o(ess)743 2294 y(stubo)o(r)q(n)o(nes)o(s)743
2329 y(cares)o(s)743 2375 y(kiss)o(es)743 2411 y(cap)o(ab)o(i)q(li)q
(ties)1089 2104 y(che)o(ss)g(p)o(l)q(a)o(yer)1089 2214
y(elo)1089 2250 y(cruelty)1089 2294 y(stubo)o(r)q(n)o(nes)o(s)1089
2334 y(bad)g(tri)q(c)o(ks)1089 2371 y(i)q(n)o(t)q(e)o(l)q(li)q(g)o(en)o
(ce)1089 2411 y(ope)o(nings)g(k)o(no)o(wled)o(ge)926
2831 y Fg(9)p eop
%%Page: 10 10
10 9 bop 220 266 a Fh(6)60 b(By)o(e)14 b(b)q(y)o(e)220
358 y Fg(I)g(hope)h(t)o(hi)o(s)g(docume)q(n)o(tati)o(on)g(h)o(e)q(l)o
(ps)g(y)o(ou)g(t)o(o)f(use)h(thi)o(s)g(ut)o(il)o(it)o(y)m(.)26
b(It')m(s)15 b(no)o(t)f(dif)n(\002)q(cul)o(t)g(a)q(nd)g(gr)o(e)q(atl)o
(y)220 408 y(pro)o(\002table.)h(And)10 b(if)h(yo)o(u)g(want)f(to)g(ge)q
(t)g(simil)o(a)q(r)g(drawi)o(ngs)h(or)f(impro)o(v)o(e)h(s)q(o)o(m)q(e)g
(of)g(t)o(hem)g(just)f(take)220 458 y(a)h(l)o(ook)f(at)g(the)g(c)q(od)o
(e)q(,)h(o)o(nc)q(e)f(you)g(get)g(a)q(ccostumed)g(to)g(it)g(,)g(you')o
(ll)f(\002)q(n)o(d)h(it)g(qu)o(it)o(e)h(log)o(ica)q(l)o(.)915
2831 y(10)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF