diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/skak/informator.ps')
-rw-r--r-- | Master/texmf-dist/doc/latex/skak/informator.ps | 5639 |
1 files changed, 5639 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/skak/informator.ps b/Master/texmf-dist/doc/latex/skak/informator.ps new file mode 100644 index 00000000000..cf693fb86db --- /dev/null +++ b/Master/texmf-dist/doc/latex/skak/informator.ps @@ -0,0 +1,5639 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.991 Copyright 2011 Radical Eye Software +%%Title: informator.dvi +%%CreationDate: Thu Jul 18 23:26:38 2013 +%%Pages: 1 +%%PageOrder: Ascend +%%BoundingBox: 0 0 596 842 +%%DocumentFonts: CMR17 CMTT12 CMR12 CMR10 CMSY10 CMSSBX10 +%%+ SkakNew-Figurine CMSS10 +%%DocumentPaperSizes: a4 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -o informator.ps informator.dvi +%DVIPSParameters: dpi=600 +%DVIPSSource: TeX output 2013.07.18:2326 +%%BeginProcSet: tex.pro 0 0 +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}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{A A 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/IEn 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 IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/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 A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S +/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy +setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask +restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 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 A 1 get A +mul exch 0 get A 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/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3 +def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90 +rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 +N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop +false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A +length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse} +forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{ +BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat +{BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch +round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 +rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/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 +%%BeginProcSet: pstricks.pro 0 0 +% $Id: pstricks.pro 647 2012-02-12 15:03:40Z herbert $ +% +%% PostScript prologue for pstricks.tex. +%% Version 1.12, 2012/02/12 +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +% +% +% Define the follwing gs-functions if not known, eg when using distiller +% +systemdict /.setopacityalpha known not {/.setopacityalpha { pop } def } if +systemdict /.setblendmode known not {/.setblendmode { pop } def } if +systemdict /.setshapealpha known not {/.setshapealpha { pop } def } if +% +/tx@Dict 200 dict def % the main PSTricks dictionary +tx@Dict begin +/ADict 25 dict def % The arrow dictionaray +/CM { matrix currentmatrix } bind def +/SLW /setlinewidth load def +/CLW /currentlinewidth load def +/CP /currentpoint load def +/ED { exch def } bind def +/L /lineto load def +/T /translate load def +/TMatrix { } def +/RAngle { 0 } def +/Sqrt { dup 0 lt { pop 0 } { sqrt } ifelse } def % return 0 for negative arguments +/Atan { /atan load stopped { pop pop 0 } if } def % return 0 if atan not known +/ATAN1 {neg -1 atan 180 sub } def % atan(x) (only one parameter) +/Div { dup 0 eq { pop } { div } ifelse } def % control the division +/tan { dup cos abs 1.e-10 lt + { pop 1.e10 } % return 1.e10 as infinit + { dup sin exch cos div } ifelse % default sin/cos +} def +/Tan { dup sin exch cos Div } def % sin(x)/cos(x) x in degrees +/Acos {dup dup mul neg 1 add dup 0 lt { % arc cos, returns 0 when negative root + pop pop 0 }{ sqrt exch atan} ifelse } def +/NET { neg exch neg exch T } def % change coordinate system to the negative one +/Pyth { dup mul exch dup mul add sqrt } def % Pythagoras, expects 2 parameter +/Pyth2 { % Pythagoras, xA yA xB yB + 3 -1 roll % xA xB yB yA + sub % xA xB yB-yA + 3 1 roll % yB-yA xA xB + sub % yB-yA xA-xB + Pyth } def +/PtoC { 2 copy cos mul 3 1 roll sin mul } def % Polar to Cartesian +/Rand { rand 4294967295 div } def % a real random number +%----------------- hv added 20050516 --------------- +/PiDiv2 1.57079632680 def +/Pi 3.14159265359 def +/TwoPi 6.28318530718 def +/Euler 2.71828182846 def +%/e Euler bind def +% +/RadtoDeg { 180 mul Pi div } bind def % convert from radian to degrees +/DegtoRad { Pi mul 180 div } bind def % viceversa +%----------------- hv end--------------------------- +/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def } def +% +/PathLength { + flattenpath /z 0 def + { /y1 ED /x1 ED /y2 y1 def /x2 x1 def } + { /y ED /x ED PathLength@ } + {} + { /y y2 def /x x2 def PathLength@ } + /pathforall load stopped { pop pop pop pop } if + z +} def +% +/STP { .996264 dup scale } def % BP/PT scaling +/STV { SDict begin normalscale end STP } def % +% +/DashLine { + dup 0 gt + { /a .5 def PathLength exch div } + { pop /a 1 def PathLength } ifelse + /b ED % pattern should fit evenly in b + dup /X ED % pattern array + 0 get /y ED % length of first black segment + /z 0 X {add} forall def % length of the full pattern + %% Computation of the scaling factor as described by van Zandt: + b a .5 sub 2 mul y mul sub z Div round + z mul a .5 sub 2 mul y mul add b exch Div + %%%% scaling factor on stack. + /z ED %% now, z is the scaling factor + false % for the length test below + X { z mul } forall X astore %% modification TN 04-08-07 + %%% Checking whether at least one dash in X has positive length: + {0 gt or} forall + { X 1 a sub y mul } + { [ 1 0 ] 0 } + ifelse + setdash stroke +} def +% +/DotLine { + /b PathLength def + /a ED /z ED /y CLW def + /z y z add def + a 0 gt { + /b b a div def + }{ + a 0 eq { + /b b y sub def + }{ a -3 eq { + /b b y add def } if + } ifelse + } ifelse + [ 0 b b z Div round Div dup 0 le { pop 1 } if ] + a 0 gt { 0 }{ y 2 div a -2 gt { neg }if } ifelse + setdash 1 setlinecap stroke +} def +% +/SymbolLine { % on stack [ x y x y ... + counttomark % number of elements + 2 div cvi /n ED % n pairs + /YA ED /XA ED % the start point + n 1 sub { + /YB ED /XB ED + /XLength XB XA sub def + /YLength YB YA sub def + /PAngle YLength XLength Atan def + /XYLength XLength YLength Pyth def + + %% for negative SymStep we calculate the distance + SymStep 0 lt + { %XYLength SymStep div abs cvi + /nSym SymStep abs cvi def } + { /nSym XYLength SymStep div cvi def } + ifelse + 0.5 setflat + /Shift Symbol stringwidth pop 2 div def + /deltaX XLength nSym div def + /deltaY YLength nSym div def + curveticks + { XA YA moveto } + { XA Shift sub YA Shift sub moveto } + ifelse + nSym { + gsave + curveticks + { PAngle 180 sub CorrAngle sub tickAngle add /rotAngle ED + currentpoint translate rotAngle rotate + 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto + SymbolLinewidth setlinewidth stroke + } + { + rotateSymbol { PAngle 180 sub CorrAngle sub rotate } if + Symbol show + } + ifelse + grestore + deltaX deltaY rmoveto + } repeat + /YA YB def /XA XB def + } repeat + curveticks + { XA YA moveto } + { XA Shift sub YA Shift sub moveto } + ifelse + gsave + curveticks + { PAngle 180 sub CorrAngle sub tickAngle add /rotAngle ED + XA YA translate rotAngle rotate + 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto + SymbolLinewidth setlinewidth stroke + } + { + rotateSymbol { PAngle 180 sub CorrAngle sub rotate } if + Symbol show + } + ifelse + grestore + pop % delete the mark symbol +} def +% +/LineFill { % hv ------------ patch 7 ------------- + gsave + abs /hatchWidthInc ED + abs /hatchSepInc ED + abs CLW add /a ED + a 0 dtransform round exch round exch + 2 copy idtransform + exch Atan rotate + idtransform pop /a ED + .25 .25 itransform pathbbox + /y2 ED + a Div ceiling cvi /x2 ED /y1 ED + a Div cvi /x1 ED /y2 y2 y1 sub def + clip + newpath + 2 setlinecap + systemdict + /setstrokeadjust known { true setstrokeadjust } if + x2 x1 sub 1 add { + x1 a mul y1 moveto 0 y2 rlineto stroke + /x1 x1 1 add + hatchWidthInc 0 gt { CLW add } if + def + hatchSepInc 0 gt hatchWidthInc 0 gt or { + /a a hatchSepInc add def + CLW hatchWidthInc add SLW + } if + } repeat + grestore + pop pop } def +% +/DotFill {% on stack: dot radius + /dotRadius ED + abs CLW add /a ED + a 0 dtransform round exch round exch + 2 copy idtransform + exch Atan rotate + idtransform pop /a ED + .25 .25 itransform + pathbbox % llx lly urx ury of smallest bounding box + /y2 ED /x2 ED /y1 ED /x1 ED + y2 y1 sub a div 2 add cvi /Ny ED + x2 x1 sub a div 2 add cvi /Nx ED + clip + newpath + /yA y1 dotRadius add CLW add def + /xA0 x1 dotRadius add CLW add def + Ny { + /xA xA0 def + Nx { + newpath + xA yA dotRadius 0 360 arc + SolidDot { gsave fill grestore } if + stroke + xA a add /xA ED + } repeat + yA a add /yA ED + } repeat + grestore +} def +% +/PenroseFill {% on stack: scaling factor + dup dup scale + 1 exch div round /penroseFactor ED + a 0 dtransform round exch round exch + 2 copy idtransform + exch Atan rotate + idtransform pop /a ED + .25 .25 itransform pathbbox + /y2 ED + a Div ceiling cvi /x2 ED /y1 ED + a Div cvi /x1 ED /y2 y2 y1 sub def + clip + newpath + systemdict + /setstrokeadjust known { true setstrokeadjust } if + /I/S/L/W/G/+/Z/F/E/D[/def/exch/for{E D}/add{s E get mul} + { Z -36.2001 1 33 }{25 E S rlineto}{/q Z dup q G E q 1 + G}{Z 2 2}]{cvx def}forall + [0 72 1008 {dup sin E cos }F ]1 setlinejoin/s W{/a W{/b I 10{/i I 4{/m I moveto + i m +/j I 10{/l Z b m l + G a l G sub s m get div .2 + floor .3 + 25 + mul j l + S rmoveto}F i L j L stroke }F}F}F}F + grestore + pop pop +} def +% +/TruchetFill { % on stack: scaling factor + 10 dict begin + dup dup scale + 1 exch div round /penroseFactor ED + a 0 dtransform round exch round exch + 2 copy idtransform + exch Atan rotate + idtransform pop /a ED + .25 .25 itransform pathbbox + /y2 ED + a Div ceiling cvi /x2 ED /y1 ED + a Div cvi /x1 ED /y2 y2 y1 sub def + clip + newpath + systemdict + /setstrokeadjust known { true setstrokeadjust } if + /ma a neg def + /ha a 2 div def + /mha ha neg def + /tile { + rand dup 2 idiv 2 mul eq { 90 rotate } if + mha mha moveto ha mha lineto + ha ha lineto mha ha lineto +% closepath .1 setlinewidth stroke + contents + } def + /contents{ + 0 ha moveto ha 0 lineto + 0 mha moveto mha 0 lineto +% 1 setlinewidth stroke + } def + /dotiling { + f ma mul a f a mul { + /i exch def + f ma mul a f a mul { + /j exch def + gsave i j translate + tile stroke grestore + } for + } for + } def +% + /f 3 def + 5 srand dotiling + end % local user dict +} def +% +/BeginArrow { + ADict begin % hold it local, for end see EndArrow + /@mtrx CM def + gsave + 2 copy T + 2 index sub neg exch + 3 index sub exch Atan + rotate newpath +} def +% +/EndArrow { @mtrx setmatrix CP grestore end } def % end the ADict +% +/Arrow { + CLW mul add dup + 2 div /w ED + mul dup /h ED + mul /a ED + { 0 h T 1 -1 scale } if + w neg h moveto + 0 0 L w h L w neg a neg rlineto + gsave fill grestore +} def +% +/ArrowD { % the sides are drawn as curves (hv 20071211) + CLW mul add dup + 2 div /w ED + mul dup /h ED + mul /Inset ED + { 0 h T 1 -1 scale } if % changes the direction +% we use y=w/h^2 * x^2 as equation for the control points +% for the coordinates the arrow is seen from top to bottom +% the bottom (tip) is (0;0) + w neg h moveto % lower left of > + w 9 div 4 mul neg h 3 div 2 mul + w 9 div neg h 3 div + 0 0 curveto % tip of > + w 9 div h 3 div + w 9 div 4 mul h 3 div 2 mul + w h curveto % upper left of > + w neg Inset neg rlineto % move to x=0 and inset + gsave fill grestore +} def +% +/Tbar { + CLW mul add /z ED + z -2 div CLW 2 div moveto + z 0 rlineto stroke + 0 CLW moveto +} def +% +/Bracket { + CLW mul add dup CLW sub 2 div + /x ED mul CLW add /y ED /z CLW 2 div def + x neg y moveto + x neg CLW 2 div L x CLW 2 div L x y L stroke + 0 CLW moveto +} def +% +/RoundBracket { + CLW mul add dup 2 div + /x ED mul /y ED /mtrx CM def + 0 CLW 2 div T x y mul 0 ne { x y scale } if + 1 1 moveto + .85 .5 .35 0 0 0 curveto + -.35 0 -.85 .5 -1 1 curveto + mtrx setmatrix stroke 0 CLW moveto +} def +% +/SD { 0 360 arc fill } def +% +/EndDot { % DS is the dot size + { /z DS def } { /z 0 def } ifelse % outer or inner dimen + /b ED % the color definition + 0 z DS SD + b { 0 z DS CLW sub SD } if + 0 DS z add CLW 4 div sub + moveto +} def +% +/Shadow { [ { /moveto load } { /lineto load } { /curveto load } { + /closepath load } /pathforall load stopped { pop pop pop pop CP /moveto + load } if ] cvx newpath 3 1 roll T exec } def +% +/NArray { % holds the coordinates and on top of stack the showpoints boolean + /showpoints ED + counttomark 2 div dup cvi /n ED % n 2 div on stack + n eq not { exch pop } if % even numbers of points? delete one + ] aload /Points ED + showpoints not { Points aload pop } if +% { ] aload /Points ED } +% { n 2 mul 1 add -1 roll pop } ifelse % delete the mark symbol +} def +% +/Line { + NArray n 0 eq not + { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub def + n { Lineto } repeat + CP 4 2 roll ArrowB L pop pop + } if +} def +% +/LineToYAxis { + /Ox ED % Save the x origin value + NArray % all x-y pairs on stack + n { 2 copy moveto % go to current point + Ox exch Lineto % line to y-axis + pop % delete old x-value + } repeat +} def +% +/LineToXAxis{ + /Oy ED % Save the y origin value + NArray % all x-y pairs on stack + n 0 eq not + { n 1 eq { 0 0 /n 2 def } if + ArrowA + /n n 2 sub def + CP 2 copy moveto pop Oy Lineto + n { 2 copy moveto pop Oy Lineto } repeat + CP + 4 2 roll + ArrowB + 2 copy moveto pop Oy + L + pop pop } if +} def +% +/Arcto { + /a [ 6 -2 roll ] cvx def + a r + /arcto load stopped { 5 } { 4 } ifelse { pop } repeat + a +} def +% +/CheckClosed { + dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq + and { pop pop /n n 1 sub def } if +} def +% +/Polygon { + NArray n 2 eq { 0 0 /n 3 def } if + n 3 lt + { n { pop pop } repeat } + { n 3 gt { CheckClosed } if + n 2 mul -2 roll + /y0 ED /x0 ED /y1 ED /x1 ED + x1 y1 + /x1 x0 x1 add 2 div def + /y1 y0 y1 add 2 div def + x1 y1 moveto + /n n 2 sub def + n { Lineto } repeat + x1 y1 x0 y0 6 4 roll Lineto + Lineto pop pop closepath } ifelse +} def +% +/SymbolPolygon { % on stack [ x y x y ... + counttomark % number of elements + 2 add /m ED + 2 copy m 2 roll % copy last two + m 2 div cvi /n ED % n pairs + /YA ED /XA ED % the start point + n 1 sub { + /YB ED /XB ED + /XLength XB XA sub def + /YLength YB YA sub def + /PAngle YLength XLength Atan def + /XYLength XLength YLength Pyth def + /nSym XYLength SymStep Div cvi def + /Shift Symbol stringwidth pop 2 Div def + /deltaX XLength nSym Div def + /deltaY YLength nSym Div def + XA Shift sub YA Shift sub moveto + nSym { + gsave rotateSymbol { PAngle 180 sub CorrAngle sub rotate } if + Symbol show + grestore + deltaX deltaY rmoveto + } repeat +% XB Shift sub YB Shift sub moveto Symbol show + /YA YB def /XA XB def + } repeat + pop % delete the mark symbol +} def +% +/Diamond { + /mtrx CM def + T rotate + /h ED + /w ED + dup 0 eq { pop } { CLW mul neg + /d ED + /a w h Atan def + /h d a sin Div h add def + /w d a cos Div w add def } ifelse + mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 div + /ArrowA { moveto } def + /ArrowB { } def + false Line + closepath mtrx setmatrix } def +% +/Triangle { + /mtrx CM def + translate + rotate /h ED 2 div /w ED + dup CLW mul /d ED + /h h d w h Atan sin Div sub def + /w w d h w Atan 2 div dup cos exch sin Div mul sub def + mark + 0 d w neg d 0 h w d 0 d + /ArrowA { moveto } def + /ArrowB { } def + false + Line + closepath + mtrx +% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) +% setmatrix } def + setmatrix pop +} def +% DG/SR modification end +% +/CCA { + /y ED /x ED + 2 copy y sub /dy1 ED + x sub /dx1 ED + /l1 dx1 dy1 Pyth def +} def +% +/CC { + /l0 l1 def + /x1 x dx sub def + /y1 y dy sub def + /dx0 dx1 def + /dy0 dy1 def + CCA + /dx dx0 l1 c exp mul dx1 l0 c exp mul add def + /dy dy0 l1 c exp mul dy1 l0 c exp mul add def + /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos abs b exp a mul dx dy Pyth Div 2 div def + /x2 x l0 dx mul m mul sub def + /y2 y l0 dy mul m mul sub def + /dx l1 dx mul m mul neg def + /dy l1 dy mul m mul neg def +} def +% +/IC { + /c c 1 add def + c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if } ifelse + /a a 2 mul 3 div 45 cos b exp div def + CCA + /dx 0 def + /dy 0 def +} def +% +/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def +/NC { CC x1 y1 x2 y2 x y curveto } def +/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def +/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def +/NAC { x2 y2 x y curveto CC x1 y1 } def +/EAC { x2 y2 x y ArrowB curveto pop pop } def +% +/OpenCurve { + NArray n 3 lt + { n { pop pop } repeat } + { BOC /n n 3 sub def n { NC } repeat EOC } ifelse +} def +% +/CurvePath { + %% for negative SymStep we calculate the distance + SymStep 0 lt { gsave PathLength SymStep div abs /SymStep ED grestore } if + 0.5 setflat + flattenpath /z 0 def /z0 0 def + { /y1 ED /x1 ED /y2 y1 def /x2 x1 def + x1 Shift sub y1 Shift sub moveto + gsave + curveticks + { x1 y1 translate startAngle rotate + 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto + SymbolLinewidth setlinewidth stroke + } + { startAngle rotate Symbol show } + ifelse + grestore /z0 z def } + { /y ED /x ED PathLength@ z z0 sub SymStep ge { + x Shift sub y Shift sub moveto + gsave + curveticks + { y yOld sub x xOld sub Atan 180 sub CorrAngle sub /rotAngle ED + x y translate rotAngle rotate + 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto + SymbolLinewidth setlinewidth stroke + } + { + rotateSymbol { y yOld sub x xOld sub Atan 180 sub CorrAngle sub rotate } if + Symbol show + } + ifelse + grestore /z0 z def } if + /yOld y def /xOld x def } + {} %% the lineto part + { /y y2 def /x x2 def PathLength@ + x Shift sub y Shift sub moveto + gsave + curveticks + { y yOld sub x xOld sub Atan 180 sub /rotAngle ED + x y translate rotAngle rotate + 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto + SymbolLinewidth setlinewidth stroke + } + { + x Shift sub y Shift sub moveto + rotateSymbol { y yOld sub x xOld sub Atan 180 sub CorrAngle sub rotate } if + Symbol show + } + ifelse + grestore + } + pathforall +% curveticks +% { gsave +% x y translate rotAngle rotate +% 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto +% SymbolLinewidth setlinewidth stroke grestore +% } if + z +} def +% +/OpenSymbolCurve { + OpenCurve + 0.1 setflat + /Shift Symbol stringwidth pop 2 div def + CurvePath +} def +% +/AltCurve { + { false NArray n 2 mul 2 roll + [ n 2 mul 3 sub 1 roll ] aload + /Points ED + n 2 mul -2 roll } + { false NArray } ifelse + n 4 lt { n { pop pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse +} def +% +/AltOpenSymbolCurve { + AltCurve + 0.1 setflat + /Shift Symbol stringwidth pop 2 div def + CurvePath +} def +% +/ClosedCurve { + NArray n 3 lt + { n { pop pop } repeat } + { n 3 gt { CheckClosed } if + 6 copy n 2 mul 6 add 6 roll + IC CC x y moveto n { NC } repeat + closepath pop pop + } ifelse +} def +% +/ClosedSymbolCurve { + ClosedCurve + 0.1 setflat + /Shift Symbol stringwidth pop 2 div def + CurvePath +} def +% +/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def +/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def +/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore } def +% +/FontDot { + DS 2 mul dup + matrix scale matrix concatmatrix exch matrix + rotate matrix concatmatrix exch + findfont exch makefont setfont +} def +% +/Rect { + x1 y1 y2 add 2 div moveto + x1 y2 lineto + x2 y2 lineto + x2 y1 lineto + x1 y1 lineto + closepath +} def +% +/OvalFrame { + x1 x2 eq y1 y2 eq or + { pop pop x1 y1 moveto x2 y2 L } + { y1 y2 sub abs x1 x2 sub abs 2 copy gt + { exch pop } { pop } ifelse + 2 div exch { dup 3 1 roll mul exch } if + 2 copy lt { pop } { exch pop } ifelse + /b ED + x1 y1 y2 add 2 div moveto + x1 y2 x2 y2 b arcto + x2 y2 x2 y1 b arcto + x2 y1 x1 y1 b arcto + x1 y1 x1 y2 b arcto + 16 { pop } repeat + closepath + } ifelse +} def +% +/Frame { + CLW mul /a ED + 3 -1 roll + 2 copy gt { exch } if + a sub /y2 ED + a add /y1 ED + 2 copy gt { exch } if + a sub /x2 ED + a add /x1 ED + 1 index 0 eq { pop pop Rect } { OvalFrame } ifelse +} def +% +/BezierNArray { + /f ED + counttomark 2 div dup cvi /n ED + n eq not { exch pop } if + n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat + f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse +} def +% +/OpenBezier { + BezierNArray + n 1 eq + { pop pop } + { ArrowA n 4 sub 3 idiv + { 6 2 roll 4 2 roll curveto } repeat + 6 2 roll 4 2 roll ArrowB curveto } ifelse +} def +% +/OpenSymbolBezier { + OpenBezier + 0.1 setflat + /Shift Symbol stringwidth pop 2 div def + CurvePath +} def +% +/ClosedBezier { + BezierNArray + n 1 eq + { pop pop } + { moveto n 1 sub 3 idiv + { 6 2 roll 4 2 roll curveto } repeat + closepath } ifelse +} def +% +/ClosedSymbolBezier { + /f ED % save showpoints value + 2 copy /yEnd ED /xEnd ED + counttomark -2 roll 2 copy /yStart ED /xStart ED + counttomark 2 roll + f + ClosedBezier + 0.1 setflat + /Shift Symbol stringwidth pop 2 div def + CurvePath + [ xEnd yEnd xStart yStart SymbolLine +} def +% +/BezierShowPoints { + gsave + Points aload length 2 div cvi /n ED + moveto + n 1 sub { lineto } repeat + CLW 2 div SLW [ 4 4 ] 0 setdash stroke + grestore +} def +% +/Parab { + /y0 ED /x0 ED /y1 ED /x1 ED + /dx x0 x1 sub 3 div def + /dy y0 y1 sub 3 div def + x0 dx sub y0 dy add x1 y1 ArrowA + x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB + curveto + /Points [ x1 y1 x0 y0 x0 2 mul x1 sub y1 ] def +} def +% +/Parab1 { % 1 end | 0 SP + /ySP ED /xSP ED /y1 ED /x1 ED + /dx xSP x1 sub 3 div def + /dy ySP y1 sub 3 div def + newpath x1 y1 moveto xSP y1 lineto xSP ySP lineto + x1 ySP lineto closepath clip + currentpoint + newpath moveto + xSP dx sub ySP dy add x1 y1 ArrowA + xSP dx add ySP dy add xSP 2 mul x1 sub y1 ArrowB + curveto + /Points [ x1 y1 xSP ySP xSP 2 mul x1 sub y1 ] def +} def +% +/Grid { + newpath + /a 4 string def + /b ED % psk@gridlabels in pt + /c ED % { \pst@usecolor\psgridlabelcolor } + /n ED % psk@griddots + cvi dup 1 lt { pop 1 } if + /s ED % \psk@subgriddiv + s div dup 0 eq { pop 1 } if + /dy ED s div dup 0 eq { pop 1 } if % \pst@number\psyunit abs + /dx ED dy div round dy mul % \pst@number\psxunit abs + /y0 ED dx div round dx mul + /x0 ED dy div round cvi + /y2 ED dx div round cvi + /x2 ED dy div round cvi + /y1 ED dx div round cvi + /x1 ED + /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def + /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def + b 0 gt { + /z1 b 4 div CLW 2 div add def +% /Helvetica findfont b scalefont setfont + /b b .95 mul CLW 2 div add def } if + systemdict /setstrokeadjust known + { true setstrokeadjust /t { } def } + { /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add + exch itransform } bind def } ifelse + gsave n 0 gt { 1 setlinecap [ 0 dy n div ] dy n div 2 div setdash } { 2 setlinecap } ifelse + /i x1 def + /f y1 dy mul n 0 gt { dy n div 2 div h mul sub } if def + /g y2 dy mul n 0 gt { dy n div 2 div h mul add } if def + x2 x1 sub w mul 1 add dup 1000 gt { pop 1000 } if + { i dx mul dup y0 moveto + b 0 gt + { gsave c i a cvs dup stringwidth pop + /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse + h 0 gt {b neg}{z1} ifelse + rmoveto show grestore } if + dup t f moveto + g t L stroke + /i i w add def + } repeat + grestore + gsave + n 0 gt + % DG/SR modification begin - Nov. 7, 1997 - Patch 1 + %{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash } + { 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash } + % DG/SR modification end + { 2 setlinecap } ifelse + /i y1 def + /f x1 dx mul n 0 gt { dx n div 2 div w mul sub } if def + /g x2 dx mul n 0 gt { dx n div 2 div w mul add } if def + y2 y1 sub h mul 1 add dup 1000 gt { pop 1000 } if + { newpath i dy mul dup x0 exch moveto + b 0 gt { gsave c i a cvs dup stringwidth pop + /z2 ED + w 0 gt {z1 z2 add neg} {z1} ifelse + h 0 gt {z1} {b neg} ifelse + rmoveto show grestore } if + dup f exch t moveto + g exch t L stroke + /i i h add def + } repeat + grestore +} def +% +/ArcArrow { + /d ED /b ED /a ED + gsave + newpath 0 -1000 moveto clip + newpath + 0 1 0 0 b + grestore + c mul + /e ED + pop pop pop r a e d PtoC y add exch x add + exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c + mul neg d +} def +% +/Ellipse { + /rotAngle ED + /mtrx CM def + T + rotAngle rotate + scale 0 0 1 5 3 roll arc + mtrx setmatrix +} def +% +/ArcAdjust { %%%% Vincent Guirardel +% given a target length (targetLength) and an initial angle (angle0) [in the stack], +% let M(angle0)=(rx*cos(angle0),ry*sin(angle0))=(x0,y0). +% This computes an angle t such that (x0,y0) is at distance +% targetLength from the point M(t)=(rx*cos(t),ry*sin(t)). +% NOTE: this an absolute angle, it does not have to be added or substracted to angle0 +% contrary to TvZ's code. +% To achieve, this, one iterates the following process: start with some angle t, +% compute the point M' at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]. +% Now take t' (= new angle) so that (0,0) M(t') and M' are aligned. +% +% Another difference with TvZ's code is that we need d (=add/sub) to be defined. +% the value of d = add/sub is used to know on which side we have to move. +% It is only used in the initialisation of the angle before the iteration. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Input stack: 1: target length 2: initial angle +% variables used : rx, ry, d (=add/sub) +% + /targetLength ED /angle0 ED + /x0 rx angle0 cos mul def + /y0 ry angle0 sin mul def +% we are looking for an angle t such that (x0,y0) is at distance targetLength +% from the point M(t)=(rx*cos(t),ry*sin(t))) +%initialisation of angle (using 1st order approx = TvZ's code) + targetLength 57.2958 mul + angle0 sin rx mul dup mul + angle0 cos ry mul dup mul + add sqrt div +% if initialisation angle is two large (more than 90 degrees) set it to 90 degrees +% (if the ellipse is very curved at the point where we draw the arrow, % +% the value can be much more than 360 degrees !) +% this should avoid going on the wrong side (more than 180 degrees) or go near +% a bad attractive point (at 180 degrees) + dup 90 ge { pop 90 } if + angle0 exch d % add or sub +% maximum number of times to iterate the iterative procedure: +% iterative procedure: takes an angle t on top of stack, computes a +% better angle (and put it on top of stack) + 30 { dup +% compute distance D between (x0,y0) and M(t) + dup cos rx mul x0 sub dup mul exch sin ry mul y0 sub dup mul add sqrt +% if D almost equals targetLength, we stop + dup targetLength sub abs 1e-5 le { pop exit } if +% stack now contains D t +% compute the point M(t') at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]: +% M(t')= ( (x(t)-x0)*targetLength/d+x0 , (y(t)-y0)*targetLength/d+y0 ) + exch dup cos rx mul x0 sub exch sin ry mul y0 sub +% stack contains: y(t)-y0, x(t)-x0, d + 2 index Div targetLength mul y0 add ry Div exch + 2 index Div targetLength mul x0 add rx Div +% stack contains x(t')/rx , y(t')/ry , d +% now compute t', and remove D from stack + atan exch pop + } repeat +% we don't look at what happened... in particular, if targetLength is greater +% than the diameter of the ellipse... +% the final angle will be around /angle0 + 180. maybe we should treat this pathological case... +% after iteration, stack contains an angle t such that M(t) is the tail of the arrow +% to give back the result as a an angle relative to angle0 we could add the following line: +% angle0 sub 0 exch d +% +% begin bug fix 2006-01-11 +% we want to adjust the new angle t' by a multiple of 360 so that | t'-angle0 | <= 180 +%(we don't want to make the ellipse turn more or less than it should)... +dup angle0 sub dup abs 180 gt { 180 add 360 div floor 360 mul sub } { pop } ifelse +% end bug fix +} def +% +/EllipticArcArrow { + /d ED % is add or sub + /b ED % arrow procedure + /a1 ED % angle + gsave + newpath + 0 -1000 moveto + clip % Set clippath far from arrow. + newpath + 0 1 0 0 b % Draw arrow to determine length. + grestore +% Length of arrow is on top of stack. Next 3 numbers are junk. +% + a1 exch ArcAdjust % Angular position of base of arrow. + /a2 ED + pop pop pop + a2 cos rx mul xOrig add % hv 2007-08-29 x->xOrig + a2 sin ry mul yOrig add % hv 2007-08-29 y->yOrig + a1 cos rx mul xOrig add % + a1 sin ry mul yOrig add % +% Now arrow tip coor and base coor are on stack. + b pop pop pop pop % Draw arrow, and discard coordinates. + a2 CLW 8 div +% change value of d (test it by looking if `` 1 1 d '' gives 2 or not ) + 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse + ArcAdjust +% resets original value of d + 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse % Adjust angle to give overlap. +} def +%%------------------ tvz/DG/hv (2004-05-10) end -------------------%% +% +/Rot { CP CP translate 3 -1 roll neg rotate NET } def +% +/RotBegin { + tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } def } if + /TMatrix [ TMatrix CM ] cvx def + /a ED + a Rot /RAngle [ RAngle dup a add ] cvx def +} def +% +/RotEnd { + /TMatrix [ TMatrix setmatrix ] cvx def + /RAngle [ RAngle pop ] cvx def +} def +% +/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def +/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def +/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def +% +/Uput { + /a ED + add 2 div /h ED 2 + div /w ED + /s a sin def + /c a cos def + /b s abs c abs 2 copy gt dup + /q ED + { pop } { exch pop } ifelse def + /w1 c b div w mul def + /h1 s b div h mul def + q { w1 abs w sub dup c mul abs }{ h1 abs h sub dup s mul abs } ifelse +} def +% +/UUput { + /z ED + abs /y ED + /x ED + q { x s div c mul abs y gt }{ x c div s mul abs y gt } ifelse + { x x mul y y mul sub z z mul add sqrt z add } + { q { x s div } { x c div } ifelse abs + } ifelse + a PtoC + h1 add exch + w1 add exch +} def +% +/BeginOL { + dup (all) eq exch TheOL eq or + { IfVisible not { Visible /IfVisible true def } if } + { IfVisible { Invisible /IfVisible false def } if } ifelse +} def +% +/InitOL { + /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def + /Visible { CP OLUnit idtransform T moveto } def + /Invisible { CP OLUnit neg exch neg exch idtransform T moveto } def + /BOL { BeginOL } def + /IfVisible true def +} def +% +%%%%%%%%%%%%%%%%% tools %%%%%%%%%%%%%%%%%%%%%%%%% +%%%%% ### bubblesort ### +%% syntax : array bubblesort --> array2 trie par ordre croissant +%% code de Bill Casselman +%% http://www.math.ubc.ca/people/faculty/cass/graphics/text/www/ +/bubblesort { +4 dict begin + /a exch def + /n a length 1 sub def + n 0 gt { + % at this point only the n+1 items in the bottom of a remain to + % the sorted largest item in that blocks is to be moved up into + % position n + n { + 0 1 n 1 sub { + /i exch def + a i get a i 1 add get gt { + % if a[i] > a[i+1] swap a[i] and a[i+1] + a i 1 add + a i get + a i a i 1 add get + % set new a[i] = old a[i+1] + put + % set new a[i+1] = old a[i] + put + } if + } for + /n n 1 sub def + } repeat + } if + a +end +} def +% +% +/concatstringarray{ % [(a) (b) ... (z)] --> (ab...z) 20100422 + 0 1 index { length add } forall + string + 0 3 2 roll + { 3 copy putinterval length add }forall + pop +} bind def +% +/dot2comma {% on stack a string (...) + 2 dict begin + /Output exch def + 0 1 Output length 1 sub { + /Index exch def + Output Index get 46 eq { Output Index 44 put } if + } for + Output + end +} def +% +end +%-----------------------------------------------------------------------------% +% +% END pstricks.pro + +%%EndProcSet +%%BeginProcSet: pst-algparser.pro 0 0 +% $Id: pst-algparser.pro 594 2011-10-31 18:13:18Z herbert $ +%% +%% PostScript prologue for PSTricks algorithm parser +%% Version 0.04, 2011/10/21 +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +%% +%%-----------------------------------------------------------------------------% +% +/AlgParser { tx@AlgToPs begin AlgToPs end } def % Dominique Rodriguez +% +/tx@CoreAnalyzerDict 100 dict def tx@CoreAnalyzerDict begin +% +% PS ANALYZER FOR ALGEBRAIC EXPRESSION V1.13 +% +% 09/2011 DR factorial with ! added +% +% E->T|E+T +% T->FS|T*FS +% FS -> F | +FS | -FS +% F->P|F^SF|P! +% P->(E)|literal +% literal->number|var|var[E]|func(params) +% params->E|E,param +% number->TOBEFINISHED +% +%% E expression, T term, SF signed factor, F factor, P power +% +%% parser +% +%% str +% +%% C->E<condition_operators>E +%% STR index -> STR index+lenExpr +/AnalyzeCond { AnalyzeExpr ReadCondOp AnalyzeExpr EvalCondOp } def +% +%% analyze Expression List (separator , or | ) +%% STR index -> STR index+lenExpr +%% /AnalyzeListOfE { +%% { NextNonBlankChar pop AnalyzeExpr%%dup Strlen eq { exit } if NextNonBlankChar +%% NextNonBlankChar dup 0 eq { pop exit } if +%% dup 44 ne 1 index 124 ne and { dup 41 ne { PROBLEMCONTACTBILLOU } { pop exit } ifelse } if +%% pop NextNonBlankChar dup 0 eq { exit } if 124 ne { PROBLEMCONTACTBILLOU } if 1 add NextNonBlankChar 0 eq {toto} if } loop +%% AnalyzeListOfEPostHook +%% } def +/AnalyzeListOfE { + /NotFirst false def + { NextNonBlankChar pop AnalyzeExpr + NotFirst { EvalListOfExpr } { /NotFirst true def } ifelse + dup Strlen eq { exit } if NextNonBlankChar + dup 44 ne 1 index 124 ne and + { dup 41 ne { PROBLEMCONTACTBILLOU } { pop exit } ifelse } + if pop 1 add } loop + AnalyzeListOfEPostHook +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% E->T|E+T +%% STR index -> STR index+lenExpr +/AnalyzeExpr { + AnalyzePreHook AnalyzeTerm IsEndingExpr + { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } + { { RollOp 1 add NextNonBlankChar pop AnalyzeTerm PreEvalHook EvalAddSub IsEndingExpr { pop exit } if } loop } + ifelse + AnalyzePostHook +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% T->FS|T*FS +%% STR index +/AnalyzeTerm { + AnalyzePreHook AnalyzeSignedFactor IsEndingTerm + { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } + { { RollOp 1 add NextNonBlankChar pop AnalyzeSignedFactor PreEvalHook EvalMulDiv IsEndingTerm { pop exit } if} loop } + ifelse + AnalyzePostHook +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% FS -> F | +FS | -FS +%% STR index +/AnalyzeSignedFactor { + AnalyzePreHook 2 copy get dup IsUnaryOp + { RollOp 1 add NextNonBlankChar pop AnalyzeSignedFactor EvalUnaryOp } + { pop AnalyzeFactor } + ifelse AnalyzePostHook +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% F->P|F^P|P! +%% STR index +/AnalyzeFactor { + AnalyzePreHook AnalyzePower IsEndingFactor + { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } + { { dup 33 eq%% is there a ! DR 09/2011 + { pop 1 add NextNonBlankChar pop EvalFactorial } + { RollOp 1 add NextNonBlankChar pop AnalyzePower PreEvalHook EvalPower } + ifelse + IsEndingFactor { pop exit } if } loop } + ifelse AnalyzePostHook +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% P->(E)|literal +%% STR index +/AnalyzePower { + %% depending of first char either a number, or a literal + 2 copy get dup 40 eq%%an open par + { pop 1 add NextNonBlankChar pop AnalyzeExpr 1 add NextNonBlankChar pop } + { AnalyzeLiteral } + ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% STR index STR[index] -> STR index +%/AnalyzeLiteral { IsNumber { EvalNumber } { EvalLiteral } ifelse } def +/AnalyzeLiteral { dup IsUnaryOp exch IsNumber or { EvalNumber } { EvalLiteral } ifelse } def%%dr 09102006 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% recognize + or - +%% chr -> T/F +/IsUnaryOp { dup 43 eq exch 45 eq or } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% a number can contain only : 0123456789. +%% chr -> T/F +/IsNumber { dup 48 ge exch dup 57 le 3 -1 roll and exch 46 eq or } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% STR index -> STR index number +%% a number can be of the form [0-9]*.[0-9]*\([eE][+-]?[0-9]+\)? +%% STR index -> STR index' number +/ReadNumber { + exch dup 3 -1 roll dup 3 1 roll + %%read mantissa + { 1 add 2 copy dup Strlen eq { pop pop 0 exit } if get dup IsNumber not { exit } if pop } loop + dup 101 eq exch 69 eq or + %%% there is a "e" or "E" -> read exponant + { 1 add 2 copy get dup IsUnaryOp + { pop 1 add 2 copy get } if + { IsNumber not { exit } if 1 add 2 copy get } loop } + if + dup 4 1 roll + 3 -1 roll exch 1 index sub getinterval +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% a number can contain only : 0123456789. +%% chr -> T/F +/IsCondOp { dup 30 eq exch dup 60 ge exch 62 le and or } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% STR index -> STR index number +%% a number can be of the form [0-9]*.[0-9]*\([eE][+-]?[0-9]+\)? +%% STR index -> STR index' number +/ReadCondOp { + NextNonBlankChar 1 index 4 1 roll + { IsCondOp not { exit } if 1 add 2 copy get } loop + 2 copy 5 -1 roll + exch 1 index sub getinterval 3 1 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% a literal can contain only : 0123456789. +%% chr -> T/F +/IsLiteral {% + dup 48 ge exch dup 57 le 3 -1 roll and exch + dup 65 ge exch dup 90 le 3 -1 roll and 3 -1 roll or exch + dup 97 ge exch 122 le and or } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% a literal can be of the form [a-zA-Z][a-zA-Z0-9]*\(\((Expression)\)|\(\[Expression\]\)\)? +%% STR index -> literal STR index' nextchr +/ReadLiteral { + exch dup 3 -1 roll dup 3 1 roll + %%read literal core + { 2 copy dup Strlen eq { pop pop 0 exit } if get dup IsLiteral not { exit } if pop 1 add } loop + 4 1 roll dup 5 1 roll 3 -1 roll exch 1 index sub getinterval 4 1 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% expr is ended by end of str or a clpar +%% STR index -> STR index STR[index] T/F +/IsEndingExpr {% + 2 copy dup Strlen eq + %% if end of str is reached -> end ! + { pop pop 0 true } + %% ending chr -> clpar, comma, |, <, >, =, !, + {get dup dup 41 eq + exch dup 124 eq + exch dup 93 eq + exch dup 44 eq + exch dup 30 eq + exch dup 60 ge exch 62 le and or or or or or} + ifelse } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% expr is ended by end of str or a +- +%% STR index -> STR index STR[index] T/F +/IsEndingTerm { IsEndingExpr { true } { dup dup 43 eq exch 45 eq or } ifelse } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% expr is ended by end of str or */ +%% STR index -> STR index STR[index] T/F +/IsEndingFactor { IsEndingTerm { true } { dup dup 42 eq exch 47 eq or } ifelse } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% expr is ended by end of str or ^ +%% STR index -> STR index STR[index] T/F +/IsEndingPower { IsEndingFactor { true } { dup 94 eq } ifelse } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% STR index -> STR index STR[index] +/NextNonBlankChar { { dup Strlen eq { 0 exit } if 2 copy get dup neBlkChar { exit } if pop 1 add } loop } bind def +/neBlkChar { dup 32 ne exch dup 10 ne exch 9 ne and and } bind def +%%%%%%%%%%%%%%%%%%%%%%%% +%% DEBUG +/BRK {false} def +/BRKtrue {/BRK true def} def +/BRKStop {BRK {BRKtoto} if } def +/BRKEvalStop {BRK exch if } def +/BRKBRK2true {BRK {BRK2true} if } def +/BRK2 {false} def +/BRK2true {/BRK2 true def} def +/BRK2Stop {BRK2 {BRK2toto} if } def/BRK {false} def +end +% +%-------------------------------------------------------------------------------% +% +/tx@AlgToPs 12 dict def tx@AlgToPs begin +% +%% algExpr -> PSVector +/AlgToPs { tx@CoreAnalyzerDict begin InitParser AnalyzeListOfE pop pop EndingSequence end } def +/EndingSequence { ExpressionVector aload length /end cvx exch 1 add array astore } def +/InitParser { /ExpressionVector [ /tx@AddMathFunc cvx /begin cvx ] def dup length /Strlen exch def 0 } def +/Strlen 0 def +/EvalListOfExpr {} def% +/EvalNumber {% + ReadNumber cvr /ExpressionVector ExpressionVector aload length dup 3 add -1 roll cvx + exch 1 add array astore def NextNonBlankChar pop } def +/EvalAddSub {% + /ExpressionVector ExpressionVector aload length dup 5 add -1 roll + 43 eq { /add } { /sub } ifelse cvx exch 1 add array astore def +} def +/EvalMulDiv {% + /ExpressionVector ExpressionVector aload length dup 5 add -1 roll + 42 eq { /mul } { /div } ifelse cvx exch 1 add array astore def +} def +/EvalPower {% + /ExpressionVector ExpressionVector aload length dup 5 add -1 roll + pop /exp cvx exch 1 add array astore def +} def +/EvalFactorial {% DR 09/2011 + /ExpressionVector ExpressionVector aload length + /fact cvx exch 1 add array astore def +} def +/EvalLiteral {% + ReadLiteral + dup 40 eq%%% there is an open par -> function call + { pop 2 index + dup (Sum) eq { EvalSum } + { dup (IfTE) eq { EvalCond } + { dup (Derive) eq { pop EvalDerive } + { pop 1 add NextNonBlankChar pop AnalyzeListOfE 2 index TrigoFunc + /ExpressionVector ExpressionVector aload length dup 5 add -1 roll cvn cvx + exch 1 add array astore def 1 add NextNonBlankChar pop } ifelse } ifelse} ifelse } + { /ExpressionVector ExpressionVector aload length dup 6 add -1 roll cvn cvx exch 1 add array astore def + dup 91 eq%%% there is an open bracket -> vector element + { pop 1 add NextNonBlankChar pop AnalyzeExpr + /ExpressionVector ExpressionVector aload length /cvi cvx exch /get cvx exch 2 add array astore def 1 add } + { pop NextNonBlankChar pop } + ifelse} + ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% the derive function : Derive(n,f(x)) +%% firstparindex lastparindex -> +/EvalDerive { + %% manage the function descripiton + 1 add ReadNumber 3 1 roll NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if + 1 add NextNonBlankChar pop + 3 -1 roll cvi + dup 0 eq + { pop AnalyzeExpr 3 -1 roll pop 1 add } + { 1 sub 3 1 roll (x) exch tx@Derive begin DeriveIndexed end 4 -1 roll + { (x) tx@Derive begin Derive end } repeat + ExpressionVector exch /ExpressionVector [] def + AlgToPs aload length + /ExpressionVector 1 index 3 add -1 roll aload length dup 3 add -1 roll /l2 exch def /l1 exch def + l1 l2 add 1 add l2 neg roll l1 l2 add array astore def 3 -1 roll pop 1 add + 1 index length /Strlen exch def } ifelse +} def +/EvalSum {% + pop 1 add NextNonBlankChar pop + %% read the variable name + ReadLiteral pop NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_first_comma_in_Sum } if + %% read the initial value + 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll + 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if + %% read the increment value + 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll + 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if + %% read the limit value + 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll + 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if + /ExpressionVector ExpressionVector aload length dup 7 add -3 roll 0 4 1 roll + 5 -1 roll 4 add array astore def + %% keep ExpressionVector for later and create a new one for internal Sum computation + ExpressionVector 3 1 roll /ExpressionVector [ 6 -1 roll cvn /exch cvx /def cvx ] def + 1 add NextNonBlankChar pop AnalyzeExpr + %% add each term + /ExpressionVector ExpressionVector aload length 1 add /add cvx exch array astore def + /ExpressionVector 4 -1 roll aload length ExpressionVector cvx /for cvx 3 -1 roll 2 add + array astore def 3 -1 roll pop 1 add +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Convert to radians if trigo function call +%% (name) -> +/TrigoFunc { + dup (cos) eq 1 index (sin) eq or exch (tan) eq or + { /ExpressionVector ExpressionVector aload length Pi /div cvx 180 /mul cvx 5 -1 roll 4 add + array astore def + } if +} def +/EvalCond {% + pop 1 add AnalyzeCond NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_first_comma_in_IfTE } if + ExpressionVector 3 1 roll /ExpressionVector [] def + 1 add AnalyzeExpr ExpressionVector 3 1 roll /ExpressionVector [] def + NextNonBlankChar 44 ne { ANALYZER_ERROR_missing_second_comma_in_IfTE } if + 1 add AnalyzeExpr + NextNonBlankChar 41 ne { ANALYZER_ERROR_missing_ending parenthesis_in_IfTE } if + ExpressionVector + /ExpressionVector 6 -1 roll aload length dup + 6 add -1 roll cvx exch dup 4 add -1 roll cvx /ifelse cvx 3 -1 roll 3 add array astore def + 1 add 3 -1 roll pop +} def +%% CondOp STR index +/EvalCondOp {% + 3 -1 roll + dup (=) eq { /eq } {% + dup (<) eq { /lt } {% + dup (>) eq { /gt } {% + dup (>=) eq { /ge } {% + dup (<=) eq { /ge } {% + dup (!=) eq { /ne } { ERROR_non_valid_conditional_operator } + ifelse } ifelse } ifelse } ifelse } ifelse } ifelse + cvx exch pop + /ExpressionVector ExpressionVector aload length dup 3 add -1 roll exch 1 add array astore def } def +/EvalUnaryOp { + 3 -1 roll 45 eq { /ExpressionVector ExpressionVector aload length /neg cvx exch 1 add array astore def } if +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% H O O K S +/AnalyzePreHook {} bind def +/PreEvalHook {} bind def +/AnalyzeListOfEPostHook {} bind def +/AnalyzePostHook {} def +/RollOp { 3 1 roll } bind def +end %tx@CoreAnalyzerDict +% +%--------------------------------------------------------------------% +% +/tx@Derive 41 dict def tx@Derive begin +%%increase ^^ for each function added +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% algExpr variable -> PSVector +/Derive {% + 10240 string 3 1 roll 0 3 1 roll + /Variable exch def + tx@CoreAnalyzerDict begin InitParser AnalyzeListOfE end +} def +/Strlen 0 def +/InitParser { dup length /Strlen exch def 0 } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% algExpr variable index -> PSVector +/DeriveIndexed {% + 3 1 roll 10240 string 3 1 roll 0 3 1 roll + /Variable exch def + tx@CoreAnalyzerDict begin InitParser pop 4 -1 roll AnalyzeExpr 4 -2 roll pop pop 4 -2 roll exch pop end +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u,v)'=-(u',v') +/EvalListOfExpr {% + 4 2 roll 2 copy 9 -1 roll dup length 4 1 roll putinterval add AddPipe + 2 copy 7 -1 roll dup length 4 1 roll putinterval add + 6 -2 roll pop pop + 2 copy pop 0 6 2 roll GetIntervalNewStr 5 1 roll 2 copy 0 exch getinterval 6 1 roll } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (-u)'=-(u') +/EvalUnaryOp { + 4 -2 roll 4 index (0) eq + { (0) StrConcat 7 -1 roll pop } + { 7 -1 roll 45 eq + { AddSub AddOpPar true } { false } ifelse + 3 1 roll 5 index StrConcat 3 -1 roll { AddClPar } if } ifelse + 2 copy pop 0 6 2 roll GetIntervalNewStr + 7 -2 roll pop pop 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (number)'=0 +/EvalNumber { ReadNumber (0) 6 2 roll } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u+v)'=u'+v' +/EvalAddSub {% + 7 index dup (0) eq + { pop true }%% du=0 nothing added + { dup length exch 5 index 5 index 3 -1 roll putinterval 4 -1 roll add 3 1 roll false } + ifelse + 5 index dup (0) eq + { pop { (0) } { 4 -2 roll 2 copy pop 0 6 2 roll GetIntervalNewStr } ifelse }%%dv=0 + { exch + { 5 -2 roll 7 index 45 eq { AddSub } if false } %%nothing yet added + { 5 -2 roll 7 index 43 eq%%something yet added + { AddAdd false } { AddSub AddOpPar true } ifelse } + ifelse 11 1 roll + 3 -1 roll StrConcat 10 -1 roll { AddClPar } if + 2 copy pop 0 6 2 roll GetIntervalNewStr } + ifelse + mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u*v)' or (u/v)' +/EvalMulDiv { 6 index 42 eq {EvalMul} {EvalDiv} ifelse } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u*v)'=u'*v+u*v' +/EvalMul {% + 4 -2 roll 7 index dup (0) eq + { pop false }%%du=0 + { (1) eq%%du=1 + { false } + { AddOpPar 7 index StrConcat AddClPar AddMul AddOpPar true } ifelse + 3 1 roll 6 index StrConcat 3 -1 roll { AddClPar } if + true }%%du!=0 + ifelse + 5 1 roll 5 index (0) eq + { 5 -1 roll not { (0) StrConcat } if }%%dv=0 + { 5 -1 roll { AddAdd } if + 4 index (1) eq + { 8 index StrConcat } + { AddOpPar 8 index StrConcat AddClPar AddMul AddOpPar 4 index StrConcat AddClPar } + ifelse + }%%dv!=0 + ifelse + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u/v)'=(u'*v-u*v')/v^2 +/EvalDiv {% + 4 -2 roll + 4 index (0) eq%%dv=0 -> u'/v + { 7 index (0) eq { (0) StrConcat } { AddOpPar 7 index StrConcat AddClPar AddDiv 5 index StrConcat } ifelse } + { 7 index dup (0) eq + { pop }%%du=0 + { (1) eq%%du=1 + { false } + { AddOpPar 7 index StrConcat AddClPar AddMul AddOpPar true } ifelse + 3 1 roll 6 index StrConcat 3 -1 roll { AddClPar } if}%%du!=0 + ifelse + AddSub + 4 index (1) eq + { 8 index StrConcat } + { AddOpPar 8 index StrConcat AddClPar AddMul AddOpPar 4 index StrConcat AddClPar } + ifelse + %}%%dv!=0 + 2 copy GetIntervalNewStr 3 1 roll pop 0 AddOpPar 3 -1 roll StrConcat AddClPar + AddDiv AddOpPar 5 index StrConcat AddClPar 2 copy (^2) putinterval 2 add } + ifelse + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% str1 index str2 -> str1 index +/StrConcat { dup length 4 2 roll 2 copy 6 -1 roll putinterval 3 -1 roll add } bind def +/GetIntervalNewStr { 0 exch getinterval dup length string copy } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u^v)'=(u^v)'=u'vu^(v-1)+v'u^(v)ln(u) +/EvalPower {% + 4 -2 roll 7 index (0) eq + {%%if du=0 then (u^v)'=v'ln(u)u^v + 4 index (0) eq + { (0) StrConcat }%%if dv=0 then (u^v)'=0 + { 4 index (1) ne { AddOpPar 4 index StrConcat (\)*) StrConcat } if + 8 index (e) ne { (ln\() StrConcat 8 index StrConcat (\)*) StrConcat } if + AddOpPar 8 index StrConcat (\)^\() StrConcat 5 index StrConcat AddClPar } ifelse + } + {%%du!=0 + 4 index (0) eq + {%%if dv=0 then (u^v)'=vu'u^(v-1) + 5 index dup IsStrNumber + { dup (0) eq + { StrConcat } + { dup dup (1) eq exch (1.0) eq or + { StrConcat } + { StrConcat + 7 index dup (1) ne exch (1.0) ne and%%%dr 09102006 insert du if <> 1 + { (*\() StrConcat 7 index StrConcat (\)) StrConcat } if%%%dr 09102006 + (*\() StrConcat 8 index StrConcat (\)) StrConcat + 5 index dup dup (2) eq exch (2.0) eq or + { pop } { cvr 1 sub 20 string cvs 3 1 roll (^) StrConcat 3 -1 roll StrConcat } ifelse } ifelse } ifelse } + { pop AddOpPar 5 index StrConcat (\)*\() StrConcat 8 index StrConcat (\)^\() StrConcat + 5 index StrConcat (-1\)) StrConcat } ifelse + } + {%%if dv!=0 and du!=0 then (u^v)'=u'vu^(v-1)+v'u^(v)ln(u) + 7 index (1) ne { AddOpPar 7 index StrConcat (\)*) StrConcat } if + AddOpPar 5 index StrConcat (\)*\() StrConcat + 8 index StrConcat (\)^\() StrConcat + 5 index StrConcat (-1\)+\() StrConcat + 4 index (1) ne { 4 index StrConcat (\)*\() StrConcat } if + 8 index StrConcat (\)^\() StrConcat + 5 index StrConcat (\)*ln\() StrConcat + 8 index StrConcat AddClPar + } ifelse + } ifelse + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% No derivative for factorial ! only cst => null derivative +/EvalFactorial {% DR 09/2011 + 4 index (0) eq + { (0) mark 8 -2 roll cleartomark 2 index 7 index dup 4 index exch sub getinterval exch 6 2 roll } + { DERIVATIVE_ENGINE_ERROR_no_variable_in_factorial } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% str -> true/false +/IsStrNumber {% + true exch + { dup 48 lt exch dup 57 gt 3 -1 roll or + exch dup 46 ne%%. + exch dup 43 ne%%+ + exch 45 ne%%- + and and and { pop false } if } forall +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% literal switch -> func call, vector, variables +/EvalLiteral {% + ReadLiteral dup 40 eq%%% there is an open par -> function call + { pop (EvalFunc_ ) 9 4 index StrConcat 0 exch getinterval cvn cvx exec } + { dup 91 eq%%% there is an open bracket -> vector element + { DERIVATIVE_ENGINE_ERROR_vector_not_yet_implemented } + { pop EvalVariable } + ifelse } + ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% first last parpos Expr[first:parpos-1] -> +/EvalVariable { 2 index Variable eq { (1) } { (0) } ifelse 4 -1 roll exch 6 2 roll } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (f(u))'=u'f'(u) +/EvalFunc { + 4 2 roll 4 index (1) ne + { AddOpPar 4 index StrConcat (\)*) StrConcat } if + (Eval ) 4 8 index StrConcat 0 exch getinterval cvn cvx exec + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Func derivative -> Eval<func> +/EvalFunc_sin {% + PreCommonFunc + { (cos\() StrConcat 5 index StrConcat AddClPar } if + PostCommonFunc } def +/EvalFunc_cos {% + PreCommonFunc + { (\(-sin\() StrConcat 5 index StrConcat (\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_tan {% + PreCommonFunc + { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/cos\() StrConcat 5 index StrConcat (\)^2) StrConcat } if + PostCommonFunc } def +/EvalFunc_asin {% + PreCommonFunc + { (1/sqrt\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_acos {% + PreCommonFunc + { (-1/sqrt\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_atg {% + PreCommonFunc + { (1/\(1+\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_ln {% + PreCommonFunc + { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/\() StrConcat 5 index StrConcat AddClPar } if + PostCommonFunc } def +/EvalFunc_exp {% + PreCommonFunc + { (exp\() StrConcat 5 index StrConcat AddClPar } if + PostCommonFunc } def +/EvalFunc_EXP {% + PreCommonFunc + { (EXP\() StrConcat 5 index StrConcat AddClPar } if + PostCommonFunc } def +/EvalFunc_sqrt {% + PreCommonFunc + { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/\(2*sqrt\() StrConcat 5 index StrConcat (\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_Fact {% + PreCommonFunc { DERIVATIVE_ENGINE_ERROR_no_variable_expression_in_Fact } if + PostCommonFunc } def +/EvalFunc_sh {% + PreCommonFunc + { (ch\() StrConcat 5 index StrConcat AddClPar } if + PostCommonFunc } def +/EvalFunc_ch {% + PreCommonFunc + { (sh\() StrConcat 5 index StrConcat AddClPar } if + PostCommonFunc } def +/EvalFunc_th {% + PreCommonFunc + { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/ch\() StrConcat 5 index StrConcat (\)^2) StrConcat } if + PostCommonFunc } def +/EvalFunc_Argsh {% + PreCommonFunc + { (1/sqrt\(1+\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_Argch {% + PreCommonFunc + { (1/sqrt\(\() StrConcat 5 index StrConcat (\)^2-1\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_Argth {% + PreCommonFunc + { (1/\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if + PostCommonFunc } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/PreCommonFunc { + 1 add NextNonBlankChar pop 3 -1 roll 5 1 roll AnalyzeExpr 1 add NextNonBlankChar pop + 4 2 roll 4 index (0) eq + { (0) StrConcat false } + { 4 index (1) ne { AddOpPar 4 index StrConcat (\)*) StrConcat } if true } ifelse +} def +/PostCommonFunc { + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +/EvalFunc_Derive {% + 1 add ReadNumber cvi 1 add dup cvr log 1 add cvi string cvs + 4 -1 roll pop 5 1 roll 1 add NextNonBlankChar pop AnalyzeExpr 1 add + 4 -2 roll (Derive\() StrConcat 7 -1 roll StrConcat (,) StrConcat 6 -1 roll StrConcat AddClPar + 2 copy pop 0 6 2 roll GetIntervalNewStr 6 -1 roll pop 2 index 6 index dup 4 index exch sub getinterval + exch 6 2 roll } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% literal switch -> func call, vector, variables +/EvalFunc_Sum {% + 1 add NextNonBlankChar pop + %% read the variable name + ReadLiteral pop 3 -1 roll pop NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_first_comma_in_Sum } if + %% read the initial value + 1 add NextNonBlankChar pop ReadNumber pop + 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if + %% read the increment value + 1 add NextNonBlankChar pop ReadNumber pop + 2 copy get 44 ne { ANALYZER_ERROR_missing_third_comma_in_Sum } if + %% read the limit value + 1 add NextNonBlankChar pop ReadNumber pop + 2 copy get 44 ne { ANALYZER_ERROR_missing_fourth_comma_in_Sum } if + 1 add NextNonBlankChar pop dup 6 1 roll 3 -1 roll pop AnalyzeExpr 1 add NextNonBlankChar pop + 4 -2 roll 3 index 8 index dup 9 index exch sub getinterval StrConcat + 4 index StrConcat AddClPar + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% literal switch -> func call, vector, variables +/EvalFunc_IfTE {% + 3 -1 roll pop 1 add NextNonBlankChar pop SkipCond + NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_first_comma_in_IfTE } if + 1 add NextNonBlankChar pop dup 5 1 roll + AnalyzeExpr NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_second_comma_in_IfTE } if + 1 add NextNonBlankChar pop + AnalyzeExpr 1 add NextNonBlankChar pop + 4 -2 roll 3 index 10 index dup 11 index exch sub getinterval StrConcat + 6 index StrConcat (,) StrConcat 4 index StrConcat AddClPar + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% advance in str until a comma is found (no error detection!) +%% str index -> str index' +/SkipCond { { 1 add 2 copy get 44 eq {exit } if } loop } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Convert to radians if trigo function call +%% (name) -> +/TrigoFunc { + dup (cos) eq 1 index (sin) eq or exch (tan) eq or + { /ExpressionVector ExpressionVector aload length Pi /div cvx 180 /mul cvx 5 -1 roll 4 add + array astore def + } if +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% No derivative for condition.... +/EvalCondOp { 3 -1 roll pop } bind def +/PutIntervalOneAdd {putinterval 1 add} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add open parenthesis in string at the given index +%% str index -> str index+1 +/AddOpPar {2 copy (\() PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add close parenthesis in string at the given index +%% str index -> str index+1 +/AddClPar {2 copy (\)) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add 0 in string at the given index +%% str index -> str index+1 +/AddZero {2 copy (0) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add open parenthesis in string at the given index +%% str index -> str index+1 +/AddMul {2 copy (*) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add open parenthesis in string at the given index +%% str index -> str index+1 +/AddDiv {2 copy (/) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add a plus sign in string at the given index +%% str index -> str index+1 +/AddAdd {2 copy (+) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add a minus sign in string at the given index +%% str index -> str index+1 +/AddSub {2 copy (-) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add a pipe sign in string at the given index +%% str index -> str index+1 +/AddPipe {2 copy (|) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% H O O K S +/AnalyzePreHook { dup 5 1 roll } bind def +/PreEvalHook {} def +/AnalyzePostHook { 7 -1 roll pop } bind def +/AnalyzeListOfEPostHook { 6 -1 roll mark 6 1 roll cleartomark } bind def +/RollOp { 5 1 roll } bind def +end%%%tx@CoreAnalyzerDict +/tx@AddMathFunc 12 dict def tx@AddMathFunc begin +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% NEW FUNC +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% function arcsine in radians asin(x)=atan(x/sqrt(1-x^2)) +%% x -> theta +/asin {% + dup abs 1 gt { EQDFasinrangeerror } if + dup dup dup mul 1 exch sub sqrt atan exch 0 lt { 360 sub } if DegtoRad +} def +%% function arccosine in radians acos(x)=atan(sqrt(1-x^2)/x) +%% x -> theta +/acos {% + dup abs 1 gt { EQDFacosrangeerror } if + dup dup mul 1 exch sub sqrt exch atan DegtoRad +} def +%% function arctangent in radians +%% x -> theta +/atg { 1 atan dup 90 gt { 360 sub } if DegtoRad } bind def +%% HYPERBOLIC FUNCTIONS +/sh { dup Ex exch neg Ex sub 2 div } def +/ch { dup Ex exch neg Ex add 2 div } def +/th { dup sh exch ch div } def +/Argsh { dup dup mul 1 add sqrt add ln } def +/Argch { dup dup mul 1 sub sqrt add ln } def +/Argth { dup 1 add exch 1 exch sub div ln 2 div } def +%% modified exponential funtion for 0 +%% x n -> x^n +/Exp { dup 0 eq { pop pop 1 } { exp } ifelse } bind def +%% modified exponential funtion for 0 +%% x -> e^x +/Ex { Euler exch exp } bind def +%% +%% factorial function +%% n -> n! +/Fact { 1 exch 2 exch 1 exch { mul } for } bind def +/fact { Fact } bind def +/! { Fact } bind def +end +% +% END pst-algparser.pro + +%%EndProcSet +%%BeginProcSet: pst-tools.pro 0 0 +% $Id: pst-tools.pro 622 2012-01-01 15:36:14Z herbert $ +% +%% PostScript tools prologue for pstricks.tex. +%% Version 0.02, 2012/01/01 +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +% +% +/Pi2 1.57079632679489661925640 def +/factorial { % n on stack, returns n! + dup 0 eq { 1 }{ + dup 1 gt { dup 1 sub factorial mul } if } + ifelse } def +% +/MoverN { % m n on stack, returns the binomial coefficient m over n + 2 dict begin + /n exch def /m exch def + n 0 eq { 1 }{ + m n eq { 1 }{ + m factorial n factorial m n sub factorial mul div } ifelse } ifelse + end +} def +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% subroutines for complex numbers, given as an array [a b] +% which is a+bi = Real+i Imag +% +/cxadd { % [a1 b1] [a2 b2] = [a1+a2 b1+b2] + dup 0 get % [a1 b1] [a2 b2] a2 + 3 -1 roll % [a2 b2] a2 [a1 b1] + dup 0 get % [a2 b2] a2 [a1 b1] a1 + 3 -1 roll % [a2 b2] [a1 b1] a1 a2 + add % [a2 b2] [a1 b1] a1+a2 + 3 1 roll % a1+a2 [a2 b2] [a1 b1] + 1 get % a1+a2 [a2 b2] b1 + exch 1 get % a1+a2 b1 b2 + add 2 array astore +} def +% +/cxneg { % [a b] + dup 1 get % [a b] b + exch 0 get % b a + neg exch neg % -a -b + 2 array astore +} def +% +/cxsub { cxneg cxadd } def % same as negative addition +% +% [a1 b1][a2 b2] = [a1a2-b1b2 a1b2+b1a2] = [a3 b3] +/cxmul { % [a1 b1] [a2 b2] + dup 0 get % [a1 b1] [a2 b2] a2 + exch 1 get % [a1 b1] a2 b2 + 3 -1 roll % a2 b2 [a1 b1] + dup 0 get % a2 b2 [a1 b1] a1 + exch 1 get % a2 b2 a1 b1 + dup % a2 b2 a1 b1 b1 + 5 -1 roll dup % b2 a1 b1 b1 a2 a2 + 3 1 roll mul % b2 a1 b1 a2 b1a2 + 5 -2 roll dup % b1 a2 b1a2 b2 a1 a1 + 3 -1 roll dup % b1 a2 b1a2 a1 a1 b2 b2 + 3 1 roll mul % b1 a2 b1a2 a1 b2 a1b2 + 4 -1 roll add % b1 a2 a1 b2 b3 + 4 2 roll mul % b1 b2 b3 a1a2 + 4 2 roll mul sub % b3 a3 + exch 2 array astore +} def +% +% [a b]^2 = [a^2-b^2 2ab] = [a2 b2] +/cxsqr { % [a b] square root + dup 0 get exch 1 get % a b + dup dup mul % a b b^2 + 3 -1 roll % b b^2 a + dup dup mul % b b^2 a a^2 + 3 -1 roll sub % b a a2 + 3 1 roll mul 2 mul % a2 b2 + 2 array astore +} def +% +/cxsqrt { % [a b] +% dup cxnorm sqrt /r exch def +% cxarg 2 div RadtoDeg dup cos r mul exch sin r mul cxmake2 + cxlog % log[a b] + 2 cxrdiv % log[a b]/2 + aload pop exch % b a + 2.781 exch exp % b exp(a) + exch cxconv exch % [Re +iIm] exp(a) + cxrmul % +} def +% +/cxarg { % [a b] + aload pop % a b + exch atan % arctan b/a + DegtoRad % arg(z)=atan(b/a) +} def +% +% log[a b] = [a^2-b^2 2ab] = [a2 b2] +/cxlog { % [a b] + dup % [a b][a b] + cxnorm % [a b] |z| + log % [a b] log|z| + exch % log|z|[a b] + cxarg % log|z| Theta + cxmake2 % [log|z| Theta] +} def +% +% square of magnitude of complex number +/cxnorm2 { % [a b] + dup 0 get exch 1 get % a b + dup mul % a b^2 + exch dup mul add % a^2+b^2 +} def +% +/cxnorm { % [a b] + cxnorm2 sqrt +} def +% +/cxconj { % conjugent complex + dup 0 get exch 1 get % a b + neg 2 array astore % [a -b] +} def +% +/cxre { 0 get } def % real value +/cxim { 1 get } def % imag value +% +% 1/[a b] = ([a -b]/(a^2+b^2) +/cxrecip { % [a b] + dup cxnorm2 exch % n2 [a b] + dup 0 get exch 1 get % n2 a b + 3 -1 roll % a b n2 + dup % a b n2 n2 + 4 -1 roll exch div % b n2 a/n2 + 3 1 roll div % a/n2 b/n2 + neg 2 array astore +} def +% +/cxmake1 { 0 2 array astore } def % make a complex number, real given +/cxmake2 { 2 array astore } def % dito, both given +% +/cxdiv { cxrecip cxmul } def +% +% multiplikation by a real number +/cxrmul { % [a b] r + exch aload pop % r a b + 3 -1 roll dup % a b r r + 3 1 roll mul % a r b*r + 3 1 roll mul % b*r a*r + exch 2 array astore % [a*r b*r] +} def +% +% division by a real number +/cxrdiv { % [a b] r + 1 exch div % [a b] 1/r + cxrmul +} def +% +% exp(i theta) = cos(theta)+i sin(theta) polar<->cartesian +/cxconv { % theta + RadtoDeg dup sin exch cos cxmake2 +} def + +%%%%% ### bubblesort ### +%% syntax : array bubblesort --> array2 trie par ordre croissant +%% code de Bill Casselman +%% http://www.math.ubc.ca/people/faculty/cass/graphics/text/www/ +/bubblesort { % on stack must be an array [ ... ] +4 dict begin + /a exch def + /n a length 1 sub def + n 0 gt { + % at this point only the n+1 items in the bottom of a remain to + % the sorted largest item in that blocks is to be moved up into + % position n + n { + 0 1 n 1 sub { + /i exch def + a i get a i 1 add get gt { + % if a[i] > a[i+1] swap a[i] and a[i+1] + a i 1 add + a i get + a i a i 1 add get + % set new a[i] = old a[i+1] + put + % set new a[i+1] = old a[i] + put + } if + } for + /n n 1 sub def + } repeat + } if + a % return the sorted array +end +} def +% +/concatstringarray{ % [(a) (b) ... (z)] --> (ab...z) 20100422 + 0 1 index { length add } forall + string + 0 3 2 roll + { 3 copy putinterval length add }forall + pop +} bind def +% +/dot2comma {% on stack a string (...) + 2 dict begin + /Output exch def + 0 1 Output length 1 sub { + /Index exch def + Output Index get 46 eq { Output Index 44 put } if + } for + Output + end +} def +% +%-----------------------------------------------------------------------------% +% END pst-tools.pro + +%%EndProcSet +%%BeginProcSet: pst-dots.pro 0 0 +% $Id: pst-dots.pro 130 2009-08-27 08:55:03Z herbert $ +% +%% PostScript prologue for pstricks.tex. +%% Version 2.02, 2009/06/16 +%% +%% For distribution, see pstricks.tex. +%% +%% Timothy Van Zandt <tvz@Princeton.EDU> +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +%% +%% Modified by Etienne Riga - Dec. 16, 1999 +%% Modified by Etienne Riga - 2005/01/01 (er) +%% to add /Diamond, /SolidDiamond and /BoldDiamond +%% Modified by Herbert Voss (hv) - 2008/04/17 +% +10 dict dup begin % hold local + /FontType 3 def + /FontMatrix [.001 0 0 .001 0 0] def +% /FontBBox [-571.5 -742.5 571.5 742.5] def % changed to next line 20060616 hv + /FontBBox [-1000 -1000 1000 1000] def % See end of file in /BuildGlyph + /Encoding 256 array def + 0 1 255 {Encoding exch /.notdef put} for % fill the array with /.notdef + Encoding % replace with given dot names + dup (b) 0 get /Bullet put % get the numerical position of b in ASCII +% % and save /Bullet at this place in Encoding + dup (c) 0 get /Circle put + dup (C) 0 get /BoldCircle put % 67 + dup (u) 0 get /SolidTriangle put + dup (t) 0 get /Triangle put + dup (T) 0 get /BoldTriangle put + dup (r) 0 get /SolidSquare put + dup (s) 0 get /Square put + dup (S) 0 get /BoldSquare put + dup (q) 0 get /SolidPentagon put + dup (p) 0 get /Pentagon put + dup (P) 0 get /BoldPentagon put +%%% + dup (k) 0 get /Asterisk put + dup (K) 0 get /BoldAsterisk put + dup (J) 0 get /SolidAsterisk put + dup (h) 0 get /Hexagon put + dup (H) 0 get /BoldHexagon put + dup (G) 0 get /SolidHexagon put + dup (f) 0 get /Octogon put % 2008-04-18 hv + dup (F) 0 get /BoldOctogon put % 2008-04-18 hv + dup (g) 0 get /SolidOctogon put % 2008-04-18 hv + dup (a) 0 get /Add put + dup (A) 0 get /BoldAdd put % 65 + dup (x) 0 get /Mul put + dup (X) 0 get /BoldMul put + dup (m) 0 get /Oplus put + dup (M) 0 get /BOplus put + dup (e) 0 get /SolidOplus put + dup (n) 0 get /Otimes put + dup (N) 0 get /BOtimes put + dup (E) 0 get /SolidOtimes put + dup (i) 0 get /Bar put + dup (I) 0 get /BoldBar put + dup (l) 0 get /SolidDiamond put + dup (d) 0 get /Diamond put + (D) 0 get /BoldDiamond put +%%% +/CharProcs 47 dict def +CharProcs begin + /CirclePath {0 0 500 0 360 arc closepath} def + /Bullet {CirclePath fill} def + /Circle {CirclePath .9 .9 scale CirclePath eofill} def + /BoldCircle {CirclePath .8 .8 scale CirclePath eofill} def + /TrianglePath {0 660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath} def + /SolidTriangle {TrianglePath fill} def + /Triangle {TrianglePath .85 .85 scale TrianglePath eofill} def + /BoldTriangle {TrianglePath .7 .7 scale TrianglePath eofill} def + /SquarePath {-450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto closepath} def + /SolidSquare {SquarePath fill} def + /Square {SquarePath .89 .89 scale SquarePath eofill} def + /BoldSquare {SquarePath .78 .78 scale SquarePath eofill} def + /PentagonPath { + -337.8 -465 moveto 337.8 -465 lineto 546.6 177.6 lineto + 0 574.7 lineto -546.6 177.6 lineto closepath + } def + /SolidPentagon {PentagonPath fill} def + /Pentagon {PentagonPath .89 .89 scale PentagonPath eofill} def + /BoldPentagon {PentagonPath .78 .78 scale PentagonPath eofill} def +%-------------- hv begin 2004/07/25 from: er 2003/03/24 + /HexagonPath { + 0 550 moveto -476 275 lineto -476 -275 lineto + 0 -550 lineto 476 -275 lineto 476 275 lineto closepath + } def + /SolidHexagon {HexagonPath fill} def + /Hexagon {HexagonPath .89 .89 scale HexagonPath eofill} def + /BoldHexagon {HexagonPath .79 .79 scale HexagonPath eofill} def +% 2008-04-18 hv + /OctogonPath { + 550 dup 22.5 tan mul dup neg dup add /xMove exch def + exch moveto 7 { xMove 0 rlineto 45 rotate } repeat closepath } def + /SolidOctogon { OctogonPath fill } def + /Octogon { OctogonPath .89 .89 scale OctogonPath eofill } def + /BoldOctogon { OctogonPath .79 .79 scale OctogonPath eofill } def +% + /AsteriskPath { + 20 0 moveto 10 250 180 500 0 500 curveto + -180 500 -10 250 -20 0 curveto closepath + } def + /Asterisk { + AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath + 60 rotate AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath fill + } def +% + /Basterp {50 250 220 500 0 500 curveto -220 500 -50 250 -50 30 cos 100 mul curveto} def + /BoldAsteriskPath { + 50 30 cos 100 mul moveto Basterp + 60 rotate Basterp 60 rotate Basterp + 60 rotate Basterp 60 rotate Basterp + 60 rotate Basterp closepath + } def + /BoldAsterisk {BoldAsteriskPath fill} def + /SolidAsterisk {CirclePath .9 .9 scale BoldAsteriskPath eofill} def + /CrossPath { + 40 550 moveto -40 550 lineto -40 40 lineto -550 40 lineto + -550 -40 lineto -40 -40 lineto -40 -550 lineto 40 -550 lineto + 40 -40 lineto 550 -40 lineto 550 40 lineto 40 40 lineto closepath + } def + /BoldCrossPath {80 550 moveto -80 550 lineto -80 80 lineto -550 80 lineto + -550 -80 lineto -80 -80 lineto -80 -550 lineto 80 -550 lineto + 80 -80 lineto 550 -80 lineto 550 80 lineto 80 80 lineto closepath + } def + /Add {CrossPath fill} def + /Mul {45 rotate CrossPath fill} def + /BoldAdd {BoldCrossPath fill} def + /BoldMul {45 rotate BoldCrossPath fill} def + /Oplus {CirclePath .9 .9 scale CirclePath eofill .775 .775 scale CrossPath fill } def + /SolidOplus {CirclePath .775 .775 scale BoldCrossPath eofill} def + /BOplus {CirclePath .8 .8 scale CirclePath eofill .775 .775 scale BoldCrossPath fill} def + /Otimes {CirclePath .9 .9 scale CirclePath eofill 45 rotate .775 .775 scale CrossPath fill} def + /BOtimes {CirclePath .8 .8 scale CirclePath eofill 45 rotate .775 .775 scale BoldCrossPath fill } def + /SolidOtimes {CirclePath 45 rotate .775 .775 scale BoldCrossPath eofill} def + /BarPath {40 660 moveto -40 660 lineto -40 -660 lineto 40 -660 lineto closepath} def + /Bar {BarPath fill} def + /BoldBarPath {80 660 moveto -80 660 lineto -80 -660 lineto 80 -660 lineto closepath} def + /BoldBar {BoldBarPath fill} def + /DiamondPath {0 742.5 moveto -428.5 0 lineto 0 -742.5 lineto 428.5 0 lineto closepath} def + /SolidDiamond {DiamondPath fill} def + /Diamond {DiamondPath .865 .865 scale DiamondPath eofill} def + /BoldDiamond {DiamondPath .73 .73 scale DiamondPath eofill} def +%%% + /.notdef { } def +end +% +/BuildGlyph { + exch + begin +% Metrics 1 index get exec 0 + 0 0 +% BBoxes 3 index get exec + -1000 -1000 1000 1000 +% -571.5 -742.5 571.5 742.5 + setcachedevice + CharProcs begin load exec end + end +} def +% +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +} bind def +% +end +/PSTricksDotFont exch definefont pop +% +%% end + +%%EndProcSet +%%BeginProcSet: pst-node.pro 0 0 +% $Id: pst-node.pro 645 2012-02-12 09:09:51Z herbert $ +%% +%% PostScript prologue for pst-node.tex. +%% Version 1.13, 2011/11/21. +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +% +/tx@NodeDict 400 dict def tx@NodeDict begin +tx@Dict begin % from main pstricks dict + /T /translate load def + /CP /currentpoint load def +end +/NewNode { % on stack: { x y } boolean N@name type InitXnode + gsave + NodeScale % a bugfix for xelatex, it's empty for dvips + /next exch def % { x y } boolean N@name type + dict dup % { x y } boolean N@name dict dict + 3 1 roll def % { x y } boolean dict N@name dict def + exch { dup 3 1 roll def } if % { x y } dict boolean + begin % { x y } dict begin + tx@Dict begin + STV CP T exec % set scaling + end + /NodeMtrx CM def % save CM + next % InitXNode + end + grestore +} def +% +/InitPnode { + /Y ED /X ED + /NodePos { NodeSep Cos mul NodeSep Sin mul } def +} def +% +/InitCnode { + /r ED /Y ED /X ED + /NodePos { NodeSep r add dup Cos mul exch Sin mul } def +} def +% +/GetRnodePos { + Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def } ifelse + Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def } ifelse + dx Sin mul abs dy + Cos mul abs gt { dy Cos mul Sin div dy } { dx dup Sin mul Cos Div } ifelse +} def +% +/InitRnode { + /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub /u ED + /NodePos { GetRnodePos } def +} def +% +/DiaNodePos { + w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup + Cos mul exch Sin mul +} def +% +/TriNodePos { + Sin s lt + { d NodeSep sub dup Cos mul Sin Div exch } + { w h mul w Sin mul h Cos abs mul add Div + NodeSep add dup Cos mul exch Sin mul + } ifelse +} def +% +/InitTriNode { + sub 2 div exch + 2 div exch + 2 copy T + 2 copy 4 index index /d ED + pop pop pop pop + -90 mul rotate + /NodeMtrx CM def + /X 0 def /Y 0 def + d sub abs neg /d ED + d add /h ED + 2 div h mul h d sub Div /w ED + /s d w Atan sin def + /NodePos { TriNodePos } def +} def +% +/OvalNodePos { + /ww w NodeSep add def + /hh h NodeSep add def + Sin ww mul Cos hh mul Atan dup cos ww mul exch sin hh mul +} def +% +/GetCenter { begin X Y NodeMtrx transform CM itransform end } def +% +/XYPos { + dup sin exch cos Do + /Cos ED /Sin ED /Dist ED + Cos 0 gt + { Dist Dist Sin mul Cos div } + { Cos 0 lt + { Dist neg Dist Sin mul Cos div neg } + { 0 Dist Sin mul } ifelse + } ifelse + Do +} def +% +/GetEdge { + dup 0 eq + { pop begin 1 0 NodeMtrx dtransform + CM idtransform + exch atan sub + dup + sin /Sin ED + cos /Cos ED + /NodeSep ED + NodePos NodeMtrx dtransform CM idtransform end } + { 1 eq {{exch}} {{}} ifelse /Do ED pop XYPos } ifelse +} def +% +/AddOffset { + 1 index 0 eq + { pop pop } + { 2 copy 5 2 roll cos mul add 4 1 roll sin mul sub exch } ifelse +} def +% +/GetEdgeA { + NodeSepA AngleA NodeA NodeSepTypeA GetEdge + OffsetA AngleA AddOffset + yA add /yA1 ED + xA add /xA1 ED +} def +% +/GetEdgeB { + NodeSepB AngleB NodeB NodeSepTypeB GetEdge + OffsetB AngleB AddOffset + yB add /yB1 ED + xB add /xB1 ED +} def +% +/GetArmA { + ArmTypeA 0 eq + { /xA2 ArmA AngleA cos mul xA1 add def + /yA2 ArmA AngleA sin mul yA1 add def } + { ArmTypeA 1 eq {{exch}} {{}} ifelse + /Do ED + ArmA AngleA XYPos OffsetA AngleA AddOffset + yA add /yA2 ED + xA add /xA2 ED } ifelse +} def +% +/GetArmB { + ArmTypeB 0 eq + { /xB2 ArmB AngleB cos mul xB1 add def + /yB2 ArmB AngleB sin mul yB1 add def } + { ArmTypeB 1 eq {{exch}} {{}} ifelse + /Do ED + ArmB AngleB XYPos OffsetB AngleB AddOffset + yB add /yB2 ED + xB add /xB2 ED } ifelse +} def +% +/InitNC { + /b ED /a ED % second and first node + /NodeSepTypeB ED /NodeSepTypeA ED + /NodeSepB ED /NodeSepA ED + /OffsetB ED /OffsetA ED + tx@NodeDict a known tx@NodeDict b known and dup { + /NodeA a load def + /NodeB b load def + NodeA GetCenter /yA ED /xA ED + NodeB GetCenter /yB ED /xB ED } if +} def +% +/LPutLine { + 4 copy + 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED + 1 t sub mul + 3 1 roll 1 t sub mul + 4 1 roll t mul add /Y ED + t mul add /X ED +} def +% +/LPutLines { + mark LPutVar counttomark 2 div 1 sub /n ED +% t floor dup n gt + t floor dup n ge % to allow npos<= hv 2008-08-14 + { pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse + cvi 2 mul { pop } repeat + LPutLine + cleartomark +} def +% +/BezierMidpoint { + /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED /t ED + /cx x1 x0 sub 3 mul def + /cy y1 y0 sub 3 mul def + /bx x2 x1 sub 3 mul cx sub def + /by y2 y1 sub 3 mul cy sub def + /ax x3 x0 sub cx sub bx sub def + /ay y3 y0 sub cy sub by sub def + ax t 3 exp mul bx t t mul mul add + cx t mul add x0 add ay t 3 exp mul + by t t mul mul add cy t mul add + y0 add 3 ay t t mul mul mul 2 + by t mul mul add cy add 3 ax t t mul mul mul + 2 bx t mul mul add cx add atan /NAngle ED + /Y ED /X ED +} def +% +/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def +} def +/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def +/NAngle yyB yyA sub xxB xxA sub Atan def } def +/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd } def +/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def +} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit +} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd +} def +/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def +} def +/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def +/NAngle yyB yyA sub xxB xxA sub Atan def } def +/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd } def +/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def +} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check { +exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark +VPosEnd } def +/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2 +roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx +def grestore exec /LPutVar /SaveLPutVar load def } def +/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def +GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos { +LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos { +LPutVar VPutLine } def LPutVar } def +% +/NCLine { + NCCoor + tx@Dict begin + ArrowA CP 4 2 roll + ArrowB + lineto pop pop + end +} def +% +/NCLines { + false NArray + n 0 eq + { NCLine } + { 2 copy yA sub exch xA sub Atan /AngleA ED + n 2 mul dup index exch index yB sub exch xB sub + Atan /AngleB ED + GetEdgeA GetEdgeB + /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1 yA1 ] cvx def + mark LPutVar + tx@Dict begin false Line end + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def + } ifelse +} def +% +/NCCurve { + GetEdgeA + GetEdgeB + xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1 +roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA +GetArmB xA2 yA2 xA1 yA1 tx@Dict begin ArrowA end xB2 yB2 xB1 yB1 tx@Dict +begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ] +cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines +} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def +% +/NCAngles { + GetEdgeA GetEdgeB GetArmA GetArmB + /mtrx AngleA matrix rotate def + xA2 yA2 mtrx transform pop + xB2 yB2 mtrx transform exch pop + mtrx itransform + /y0 ED /x0 ED + mark ArmB 0 ne { xB1 yB1 } if + xB2 yB2 x0 y0 xA2 yA2 + ArmA 0 ne { xA1 yA1 } if + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def } def +% +/NCAngle { + GetEdgeA GetEdgeB GetArmB + /mtrx AngleA matrix rotate def + xB2 yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform + /y0 ED /x0 ED + mark + ArmB 0 ne { xB1 yB1 } if + xB2 yB2 x0 y0 xA1 yA1 + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def +} def +% +/NCBar { + GetEdgeA GetEdgeB GetArmA GetArmB + /mtrx AngleA matrix rotate def + xA2 yA2 mtrx itransform pop + xB2 yB2 mtrx itransform pop + sub dup 0 mtrx transform + 3 -1 roll 0 gt + { /yB2 exch yB2 add def /xB2 exch xB2 add def } + { /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse + mark + ArmB 0 ne { xB1 yB1 } if + xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def +} def +% +/NCDiag { + /lineAngle ED + GetEdgeA GetEdgeB GetArmA GetArmB mark + lineAngle abs 0 gt { + /xTemp xA2 10 add def + /yTemp yA2 lineAngle dup sin exch cos div 10 mul add def + /dY1 yTemp yA2 sub def + /dX1 xTemp xA2 sub def + /dY2 yB2 yB1 sub def + /dX2 xB2 xB1 sub def + dX1 abs 0.01 lt { + /m2 dY2 dX2 div def + /xB2 xA2 def + /yB2 xA2 xB1 sub m2 mul yB1 add def + }{ + dX2 abs 0.01 lt { + /m1 dY1 dX1 div def + /xB2 xB1 def + /yB2 xB1 xA2 sub m1 mul yA2 add def + }{% + /m1 dY1 dX1 div def + /m2 dY2 dX2 div def + /xB2 m1 xA2 mul m2 xB1 mul sub yA2 sub yB1 add m1 m2 sub div def + /yB2 xB2 xA2 sub m1 mul yA2 add def + } ifelse + } ifelse + } if + ArmB 0 ne { xB1 yB1 } if + xB2 yB2 xA2 yA2 + ArmA 0 ne { xA1 yA1 } if + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def +% +% GetEdgeA GetEdgeB GetArmA GetArmB mark +% ArmB 0 ne { xB1 yB1 } if +% xB2 yB2 xA2 yA2 +% ArmA 0 ne { xA1 yA1 } if +% tx@Dict begin false Line end +% /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def +% /LPutPos { LPutLines } def +% /HPutPos { HPutLines } def +% /VPutPos { VPutLines } def +} def +% +/NCDiagg { + /lineAngle ED + GetEdgeA GetArmA + lineAngle abs 0 gt + { lineAngle } + { yB yA2 sub xB xA2 sub Atan 180 add } ifelse + /AngleB ED + GetEdgeB mark + lineAngle abs 0 gt { + /dY2 yA2 yA1 sub def + /dX2 xA2 xA1 sub def + lineAngle abs 90 eq { + /m2 dY2 dX2 div def + /yA2 xB xA2 sub m2 mul yA2 add def + /xA2 xB def + }{ + /m1 lineAngle dup sin exch cos div def % tan alpha + dX2 abs 0.01 lt { + /yA2 xA1 xB sub m1 mul yB add def + /xA2 xA1 def + }{% + /m2 dY2 dX2 div def + /xA2 m1 xB mul m2 xA2 mul sub yA2 add yB sub m1 m2 sub div def + /yA2 xA2 xB sub m1 mul yB add def + } ifelse + } ifelse + } if + xB1 yB1 xA2 yA2 + ArmA 0 ne { xA1 yA1 } if + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def +% +% GetEdgeA GetArmA +% yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED +% GetEdgeB +% mark +% xB1 yB1 xA2 yA2 +% ArmA 0 ne { xA1 yA1 } if +% tx@Dict begin false Line end +% /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def +% /LPutPos { LPutLines } def +% /HPutPos { HPutLines } def +% /VPutPos { VPutLines } def +} def +% +/NCLoop { + GetEdgeA GetEdgeB GetArmA GetArmB + /mtrx AngleA matrix rotate def + xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED + /xB3 xB2 yB2 mtrx transform pop def + xB3 yA3 mtrx itransform /yB3 ED /xB3 ED + xA3 yA3 mtrx itransform /yA3 ED /xA3 ED + mark ArmB 0 ne { xB1 yB1 } if + xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def +} def +% +% DG/SR modification begin - May 9, 1997 - Patch 1 +%/NCCircle { 0 0 NodesepA nodeA \tx@GetEdge pop xA sub 2 div dup 2 exp r +%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add +%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 +%mul add dup 5 1 roll 90 sub \tx@PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED +% +/NCCircle { + NodeSepA 0 NodeA 0 GetEdge pop + 2 div dup 2 exp r r mul sub abs sqrt + atan 2 mul /a ED + r AngleA 90 add PtoC yA add exch xA add + exch 2 copy + /LPutVar [ 4 2 roll r AngleA ] cvx def + /LPutPos { + LPutVar t 360 mul add dup 5 1 roll 90 sub PtoC + 3 -1 roll add + /Y ED add /X ED /NAngle ED +% DG/SR modification end + } def + /HPutPos { LPutPos } def + /VPutPos { LPutPos } def + r AngleA 90 sub a add AngleA 270 add a sub + tx@Dict begin + /angleB ED /angleA ED /r ED + /c 57.2957 r Div def + /y ED /x ED +} def +% +/NCBox { + /d ED /h ED + /AngleB yB yA sub xB xA sub Atan def + /AngleA AngleB 180 add def + GetEdgeA GetEdgeB + /dx d AngleB sin mul def + /dy d AngleB cos mul neg def + /hx h AngleB sin mul neg def + /hy h AngleB cos mul def + /LPutVar [ + xA1 hx add yA1 hy add xB1 hx add yB1 hy add + xB1 dx add yB1 dy add xA1 dx add yA1 dy add ] cvx def + /LPutPos { LPutLines } def + /HPutPos { xB yB xA yA LPutLine } def + /VPutPos { HPutPos } def + mark + LPutVar tx@Dict begin false Polygon end +} def +% +/NCArcBox { + /l ED neg /d ED /h ED /a ED + /AngleA yB yA sub xB xA sub Atan def + /AngleB AngleA 180 add def + /tA AngleA a sub 90 add def + /tB tA a 2 mul add def + /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def + /x0 xA r tA cos mul add def + /y0 yA r tA sin mul add def + /c 57.2958 r div def + /AngleA AngleA a sub 180 add def + /AngleB AngleB a add 180 add def + GetEdgeA GetEdgeB + /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul sub def + /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def + l 0 eq { + x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn + }{ + x0 y0 translate + /tA AngleA l c mul add def + /tB AngleB l c mul sub def + 0 0 r h add tA tB arc r h add + AngleB PtoC r d add + AngleB PtoC 2 copy + 6 2 roll l arcto 4 { pop } repeat + r d add tB PtoC l arcto 4 { pop } repeat + 0 0 r d add tB tA arcn r d add + AngleA PtoC r h add + AngleA PtoC 2 copy 6 2 roll + l arcto 4 { pop } repeat + r h add tA PtoC l arcto 4 { pop } repeat + } ifelse + closepath + /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def + /LPutPos { + LPutVar /d ED /h ED + /AngleB ED /AngleA ED + /r ED /y0 ED /x0 ED + t 1 le { + r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC + }{t 2 lt { + /NAngle AngleB 180 add def r 2 t sub + h mul t 1 sub d mul add add AngleB PtoC + }{ + t 3 lt { + r d add AngleB 3 t sub mul AngleA 2 t sub + mul add dup 90 sub /NAngle ED PtoC + }{ + /NAngle AngleA 180 add def + r 4 t sub d mul t 3 sub h mul add add AngleA PtoC + } ifelse + } ifelse + } ifelse + y0 add /Y ED x0 add /X ED + } def + /HPutPos { LPutPos } def + /VPutPos { LPutPos } def +} def +% +/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB +sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1 +ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB +w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos +{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop } +{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine } +def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx@Dict begin +/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def +% +/LPutCoor { + NAngle + tx@Dict begin /NAngle ED end + gsave + CM STV + CP Y sub neg exch X sub neg exch moveto + setmatrix CP + grestore +} def +% +/LPut { + tx@NodeDict /LPutPos known + { LPutPos } { CP /Y ED /X ED /NAngle 0 def } ifelse + LPutCoor +} def +% +/HPutAdjust { + Sin Cos mul 0 eq + { 0 } + { d Cos mul Sin div flag not { neg } if + h Cos mul Sin div flag { neg } if + 2 copy gt { pop } { exch pop } ifelse + } ifelse + s add flag { r add neg }{ l add } ifelse + X add /X ED +} def +% +/VPutAdjust { + Sin Cos mul + 0 eq + { 0 } + { l Sin mul Cos div flag { neg } if + r Sin mul Cos div flag not { neg } if + 2 copy gt { pop } { exch pop } ifelse + } ifelse + s add flag { d add } { h add neg } ifelse + Y add /Y ED +} def +% +% +end +% +% END pst-node.pro + +%%EndProcSet +%%BeginProcSet: texps.pro 0 0 +%! +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]FontType 0 +ne{/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}{{1 index type +/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end +definefont 3 -1 roll makefont/setfont cvx]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{CharStrings rcheck{/Encoding false def dup[ +exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} +forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def +end + +%%EndProcSet +%%BeginProcSet: special.pro 0 0 +%! +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/setpagedevice{pop}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 +/setpagedevice{pop}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 +%%BeginProcSet: color.pro 0 0 +%! +TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop +setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll +}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def +/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ +setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ +/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch +known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC +/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC +/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 +setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 +setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 +0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC +/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 +setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 +0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ +0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ +0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC +/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 +setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 +setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 +0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC +/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 +setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 +0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ +0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ +0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC +/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 +setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC +/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 +0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 +0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 +0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 +setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 +0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC +/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 +setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 +0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 +1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC +/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 +setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ +0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} +DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 +setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 +setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 +setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end + +%%EndProcSet +%%BeginFont: CMSS10 +%!PS-AdobeFont-1.0: CMSS10 003.002 +%%Title: CMSS10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSS10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMSS10 known{/CMSS10 findfont dup/UniqueID known{dup +/UniqueID get 5000803 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMSS10 def +/FontBBox {-61 -250 999 759 }readonly def +/UniqueID 5000803 def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSS10.) readonly def +/FullName (CMSS10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 78 /N put +dup 82 /R put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 +7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 +DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 +511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 +1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD +028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 +1319147A4A219ECB92D0D9F6228B51A97C295470093CA270C4488BB4EB864B48 +63941B9739638D2E6F3CC778582B46AEB4E466D89D1C211225274356A4BC90F3 +274C6AA56E200249B7D0949A3FD4185DCB3E5286910EFD7CA72D5D8E8052C96F +388D12094B87D3705CE64459558CF024667C0FE96CBB32B0BC9E51037D7BD62B +E4B05FF99384E71D78441A79B0B1DBA1CAE02434A9FAE46596FB86B873B1670D +AE0BAF516445A0DDC127F8FF3ADA0B10EC30A9CC1F7E9248828B5E8AB46C3FE4 +154B80A54128A08777F5F9B8C519C7E3B632B3476F007FA156E9F39FBE57638B +4214CD2BA79BA9DDA0F4C073AED814ABCCC2F7906C57A872C00E67FF03AC1200 +29DAB92376422FA21C67CA98BCEB8C431CA2D3EDDC16972F84BF6DB2F705BAB5 +CAB39C82D139FB1304B9E7BF1F6FF447596081D5690B1519E468D6BE49C329C5 +C9C809023EDEB9DCE4A6D52A8049E0CC134E8B41BFC6558CFCAD3D9D2773EA16 +131567AE6231B3235869767A1E7C1FA6C8D6FC1B276CBB1CAD14D376188C9682 +302836A9290E587D4225EB8BB1DBA2C4580A81FACFDA197174FE948CE757C575 +F23070FD84DE121955D7D9307BF986C5E739FFFB6CB76822C341FBD9FC2E3378 +AC9332B40C07D5B8745D74E30F1D719EAFAEDBF5FBC40D0546F69A66072D8A49 +28D2CC2E76B9B1EFD191E0BC7510C2C8761BD92EFCFDAC263342A01398A56D18 +121A591FF5CD4AD8B25699A7897E60BA940336BC17B9EC9F97C2464D031F958A +A3548D0C97C50C580B6EEFD0FE8330EE2BB0D2E7FD1DAE33448953544A4B1C5D +8EB57798D0ED4B22909FEA78ECDBC4D8A124DA05B9999242D68681017285A0C7 +69041C1F79442279FBE328733EA0A6694D68BA89739FDB9297BE0CF1808C07F7 +BBF6F1538DFE084EC8C0EC24D883F6CC08A51DFEA23EE920F44BA55FFF58E960 +C7BEE551FCD2D5814DE7E3F835608073C2CB80EC57100CFD484C837881674E92 +B217F4D11165427DACCC29C129005874C05CDE5FBB2D912368EA2B98C45AEDD8 +8A0D2493F60EF36809C8C6EBBC7856F6656E8D398BCB29DAACD4F7D4300A0B01 +161CEF51195D2C58DDFBCAFC1C03F49304ADF02789889826F1E20BCC14827565 +F2A45CA57DCC61B52E33638A0C6C5A59B145E82B82571DF1806EC40FC0E8634E +A34A791B1325571E19F3AC2EF6FE68A14B0ABEF7EBE0EDA3942E85E5AE967A14 +0C5AEBFF2A36DCA8866700CB7082D2ABE470864C44AEE1F6D180D511304C8674 +D02FAB12A7079ABF96E1CA3CDF9D75532123E87663B1D524265AEF63EB5C2169 +B67A651A101E1C7EDB008D3DB06DB1FC1A81B41B291D6C4A58FB57989FFCA434 +DA84B3914D1D80B17AA3A55A70BBC06C49DD5F7DDD03FEB0055088558FA192A5 +261477899857CF598DB740E82D035E84CF17B33048CFED2DCBEBC2B75CCAEBEA +B6C5AA1C6978FBB36ED98D9047028360ED430A0AA69AC85A8F83825EA649E1B2 +64B260197B06A24A1DD969CEEEE136FB046D713D0630B246BD41CA285F076038 +F7F8431913BB9A3E70311844D4C22AA446E3CA217A9DFD75A898997130269B29 +AD4AB7D9662856E677FB2DAED7078639CF31C6E6637C74DE2B5D0ACB88BD61F3 +CE3C5D56D3D4B3EC1ACB33EACBE05E53A133EBFE93CE6A0CBC8F24BDC5B31BBF +5B3E55D6B40B1CED389076014667E28BBBD60145A06BDECEE8011A2C6F06D091 +73767A8045CEF2A110B614149FEE783A2351FB2938A9F73CA406538EAD82ACC5 +A3DFD3DE00221E1B4EA977AF8C89661357FF7D2F1FCEAD6CFC9D6AD81F95100D +EA1F328249AD84AE849220E6593D45015B4D7C9527F3063E9F6DB6E572092A1F +1F460696227D5F0FA5A5484B1F0D8B4A35066451663BE448D924DBBFD388B6D6 +D7CFC87C9E75B7CF79A4C9207E29E0BAAAD7FDF529B860F7731EA978E335334C +13CB2F0A4250F5957B44CAA0674AE8356F586A24FD137103973B9A1FC31090C7 +C84DC5D380404BCDF3FE20C6F74FFDD8BD1DE845E99DC6FE09931F003834ECC8 +08C5D962070B6C44F901A787CCEF048A2C584A2285506B4D4E82B1BF130E2220 +B6C8B3240A4CBBCE16AD3676B23A50B75F82CD88D1B8F21D30A12716426112B3 +23DFDE5A348DC9DCCCE5BB5DB5433A5AC125DE1229FFAAE0D8319B2929986EEA +56A93BA1FBDBE617F30852A3DC8C712DF674169C6D656F75E252187A085B2788 +2467CC4DB08D48EE6A98C61BC55E6EFB1938FAA718802B7587B94C8F1477E9BB +DCF6E02B5E67FE3AD9D87C321CD9BC0CCD36B9C4BC601E6BD552EAB8E1C940CE +3A22F3C2501C3C939CB4F17CE97566F0A04602D2A22A05CECDF4A49CAFD6332D +5870E1F31AAA5F86867F71610CDB83E473B9D20BA00D8986D7148E0EED03865D +9622864B52B09D12E0C5FCDD023D29D5AB1CACFA92B6FC14FC84E95F407861D5 +2BEE3301AF399FD7ED04DFDE6679A345A282E7FC08D47E3FC8969D3B00ACD7B7 +F8769647D6D4F4106340EF739583374D023C2702C48FAC1B643B5897D2D7DBCB +73257712A0FDEEEB98A021D218CDDEBBA34687E23C4828D7F96D1ADDFAED7EA5 +B279322E6D55FB486AD8F3A8E7B2C67915564FE56F0C9277A06B29C47FB7D007 +11AFDDB3FC1B173B4E449CC6B198041CCA0624D81B4840FE5B63BE72157AC6E7 +03E5E95D2E2CE2E40BCE8044A8F2AA45F855484A891B9F0F8F70188AC66A8DEE +F4D656CBE216E6D9AC33BA8DD0685D480833E1226784469A221D9FA3CA600AC7 +5574B5226649A9C48CCB43339942FC9010F86BAA2D181AEB487A92A96BF2EDF1 +60F3B93FDFF4137A25A8AEC5ADF8613019CDB103DC4367EF3D8AEB4FED0E6BF7 +622AE0CD3CAA0321D26CA4280CFB60D08D9560AB8AA5698231171B881BE9A27F +BDCF3162134126212C523738D221AA05E31CEE73D9D40F73C450B6AE2C1E70D5 +C37162BDF55943069923A290A6C720042566E55A21CD81C460818883AB016C16 +8FCCD1255A66977DC1C110261D7642199D466DD3D2493A2D47694F842241C474 +1752B00DA03E69CD16A8A14BEB8A431A315D19A39BA978E46EB1189089FEF647 +F9DBB58AAE6B3FBD475E4DCAD241A051DD100ABE81D40ADF18A4C50F53BF749F +D6F7C8E02A5665B4AD18DDAE79096DD447F8BD32C68F9F97F05E0071D9E9AFEE +257B96D48ABD9920418E17C8F027E9E975E4A08DFB1988E7104CBBC1CAF356EA +7750AA7110BE116AF1BA69A94776E4356573B38472A8A1292C63701543B0F315 +611A0E0595B30424A1137478BA6F990AC7C3AB4DB69E75C222B617F373C521D4 +246E954E9857AF59D1E6C36412B643733CF5E1C90389EF0E5E0DA55D3AD12E97 +E7630C315F72A03CAF22E0ACE3AAAFC1D496CF4E5ABC49C2DD5E264BE7EB2698 +AFF36089B5DD2C53DB1C1FCFBE1E89D41A95DDD278CEB29DC85FD1DB8B83CAB1 +EB37C531E9BB8466ED6B8B60258D3C355626CDA43A32834DC89DFB11E5FC6D68 +0F78CFA871113DB81A1690250A6F842ADA15734CB6DF7C6ACED6D8D586BC4E1A +94EF3052FB0F8B9454390B882CBB6E135AF1F9C777AC362C2A758C3A98117120 +73C6E2FAFB580716D4B2889A4331CC658AAE996245685B973D9C184541385680 +AEC2956107DAB00230FB39BE98D3CA898D917E5F2088F26CBA4F8B5B115B6443 +8753331233B10852702FC26D9DD4C990C13CE4D0DCEA23D62A826A4B4FD16070 +5F3638C0A50A3373A33FCAA6F3644975AFD0560EE5F2D1CDF08820373468E4FE +6679A229D6955CFDF7ACAA92A87E6D8571AD18CF59F84F88A674B2946FF20A28 +B9798EAA22442415EB46B9498DDC0F4BA6ADD347AB43E9293CAABEAE80127378 +129D5DC69F6DFFBDAFA5D65580239E8EDF6833D0DE6DF75F0FD090A83CE0974B +AC947BABBD1B1C7194DDAEA37B0CAB477ABF9433FCE0243C8D308409427D1DCB +8EE4FC36C7E5CEE104904B520B3F6E677A5B92F694BDBC2C799991667E0EC14C +B95EAE7DE1854BF4542F05B4AF401CF67FC3E46EA5A0DC362F3CF177B1796DA6 +753AA803E724D1721DDD1BCB0C12CE0859E172D2A370C3697286F80D9E138AFD +A0EE016805F847BD30D11D8B891E54C77AB51A7CABF76BB14B06153C7F811FE4 +93FC4B7CF161051A458EDF767DF94F487DB939A2740B4242BFEE234F75084DDE +207E84533004B933D43C712F0C71DA4A00FFD6D721EBC93AFDC4200E3B8DE433 +3ED3E1DB799BAA27548ADC853AFF5D9D6BD92D644E3CF394789C99D9DC054A26 +7770AF5DC5BD6563929AE11BE341F036584DD573D3F43D9D975201EF77BEEF80 +D1EEDD1D4AD5D4D4DAF6D5B9D4C1736CB111D6FC74C236779C0ADA430323A825 +09EA8D0CB1772220AF28B93098BDB36913159208D1B2D7ED45808BF7B686419C +5C0E3DAB5BC9830FDF3B494D624EE8068BF6F5212BD69EF466B9A213047BD105 +B848F056DC544A8CE66C546B1A4DCB4BA29CF0EB4DCD9C2452F22172AFF33B29 +E97E12D8F0D312B03BD9E5377BF0C81D884F1E79DB66E8144F106DFD2579AD26 +C693C5B68F3AC46BF0D6281032D4D4BAEB2243151AB1AC0BDA2ACDDD4D590C90 +F29B335DF8F57DC593DCC081FB56924028E3161AC4865B49D1B0F63F5EE866D9 +7A71171C09B09A44B0E32F03494D9EA63F3C89F5E772BE25A6557F119299E989 +99BA041694ED805AA4F3BBDF00D88171C9D43A9085A287A36A1F0F9386F2A98A +96815CA51F06E1CDF20B757983C5FDF4003F5438232159F325C6335B734FD982 +1423BA77D0EFD044381AFBD0704E3DE95D23A70E2428E9AA355A9A8A25C6C74B +48488C14DEC93A766E112D74C83576ED355F17A809E8D3F9C65C4E3E14EF484F +4658DFB57597E2A4461D8044E95844391C1275D63F282B37888C842A5151937A +45007547263D70195ACC018A373D498B88C5A028BC66ED96A343EEE74D61EEB3 +D9472B6A549CEB8699F4B35154A0E2ED22867E4F9E4A76311EB2C9F9078FBA81 +838EA49C2966BA64C165434DA3093206B70186BE80600B891D9979F730FDC794 +5DD6D8B2090CC67A634B719F441092A10C447A86ADB78DAE45823ECED5FCEADA +ECA52E363D913D9EFC0ED98A5A1F823DDA3350EE27F09C14E4C7298CC0FB6200 +DEBC640C68C82D70AFB7A7BA668F1D7948686206884736CD03D9F6E6CF9702BF +E3C932CEF3CE07FBBFCEC0476EA6E8D5D4C5C6450C8FB236B89BB82D51886240 +5BA7462F50A88F69228DCBDF26B7250E90B3DF8E94ACA1CADD9EFB5C73EF9DD5 +46052314D445CC92512BA231F79A09A2F0D91976B160B8C9BA055DA4AAC1300D +491193EC66A6DE12BE01EEEDBC3A2291DA1F27AB76596A236B75E19FC5F1FB6A +DA1AD835CA08B6CD03B97B4CA1BFCBDD2500BB09F1A1B0438E4A759370EFA318 +F062BA9F3D352572CE232E6FBADDAA5363807D0DC5320B807FE5485C8CB09B6B +0BED9F5B1300FF370252DEBAC9DB25CE2EC494E8EEA45FC6604B3C104E81B287 +EDD49F3D7430EC9176A16B4FCEC5DF68DCC11ADF90BD5337E2E4B59BEFAC8298 +E5ED2C7FC5928635420FB1955251932713236DCE28012C86F63D12AF1DB634D0 +0B8CB8992B8723548177BD6822A808FF221A9E38B0DCCBC1F3430A9BAEDA89CD +ACEBBDD8CCA5E17F1CC37E35A01E058BAAAB6BE7124314DA19962BADB74EE73D +8FB13FF6AFB6FFF97926CA045B62B98BAA753AB0FC78B881D3FAFF9EE2FE918C +8EDBEF87637F1530E3E13AC090FF81F4136E08D5F3734327E643CDF621278741 +A17AEBC56E21217888A6C8B5ED4269731910E7E25693CFBDD4EB4A32698F2447 +4C45D73E810B627D8719E4E34D8FF378F9B68BFB149AC67B3B1E55F20D097FC1 +AF74D46F5A3923C63DFEBFCA210F6B257F5FF3F2AC34CE41C15C9977634E473C +2235295C05C3DF6B3009C7854BF11CC87471CBE085793AF9C5D05C5479B9E780 +14A5A6F3F6DDE5A18243DA15732CCF26ADE40C566DBC3C62B71D46DE87A12C6A +647CAC923254E2E74AF882DBD5C9E108A9160393C5CD12566AF7C824EFEAC56E +6F05B92C73A76824C5ED1735BCBAC61B98D509250C854CF1500C212F574D18D6 +4426B8510FE9785B814A70E75C9234D42483E736D0689D3561E8EE5650F33A36 +D50127589401D267BA6442E8616E2CDB1F6691D3FC4A2A377E5E154972E890DD +60CB463E9EA9A6EA61087DF452FA5646F69BE879337EAA0F5DA4438FF0365627 +4E3B16851C2F08E976FDA27AF451CCEFED00376FC3D6E0C160F0BC19544DE289 +BECEEF9A067FD71D54DA3A4F73F06E2F522BA07551296214DDA47B1BBB1212E0 +1100ACB5F65FD30C655A3402C83058F8ECFE48FA60B6A3DC86C4996414130194 +6676EC7F37454023AB53E9D9EE60249ABF6953E76DCE3123DD268BBD492412BE +65D7C3E5A5E483C381182A8F19B506F0AF6DCD55532B89852D1D96021B22E9DF +D9D072BD7DD4450577E658B433A84F92752B260AFA2EC4A118747CBFE36AB7D7 +6D5DD96A119AA1BDD0FDCBC3AFDAE5FF72713EB46759A06CD09B5CFABCDAB0E9 +85599506AC07AA525978AB157496163AAB387F079EC9FA1F9E91B9C2FBCDC9EC +7027D77016760539AC03F1C1DB242D28D6EE946C42DD2262D82ED48C3A839853 +BA977046F0EF373AFF884AC3112D2FB319421C3165DFA5710BFB9AB9595A10F4 +9D05704B9E22137CF27F4B2DA9CEF6D8801D5F792969B2E58FB539B8038DF440 +6DE20C0313A7BCD16F279290AD6859B0E657CC3041C7928CAE35B9D3A681F2A3 +2D40F8EDAF1127E754276556C95E1282514B6EB6E43FF4F0FAFF28C715E3F39A +374415B62C1F5F8E31E006D6ABC736057910A3729AC60360CEE1B2C8D9F77336 +39CAC45329A372205FD551B9E9EA5082411207473D9D90E76136AA70180172E6 +AF6EF3EF6B38B1906B904BE9BD5251EF067738840C28877659B649C6C4CA328F +1BEF8A9CEC2CB062702F58CC0B8D2D097FBC278F9FD894E10ACE1DEC4530CBF8 +E4E467B6DB9C596DF0C3D43E6AD70F30B733EEE692C2EBD68756D0C16E1F00B6 +AD011B5DA073A769B53C2DA2E7C9B7ADC6F551BF4DF4C39C66443692C3DC62CD +B1E094013F364D04BE2FBFCD1C7B2836180E9022E0434421FFA4317A50096684 +CF0B8740EF680F27F4A84AAF2AA92C64883BAF57BDC60C6467A8D4E09E6316FF +9BE73053045E5F3586DA3BD1298DC15D751913FB1E72EF80047F6B33591B97D3 +DFAD34EB224D64EF60F5B4ACC6EB42E1BE0CB2812FF2F3C264AD2E44F5EBA441 +670CA0A60E73176ACDC4E42E74F8F489C73481EB5D46A61FDA1C0FF9F8844DBD +99CECAFE2A72833E4522981FA13713AAFAF8F121E60FAA6F379B2C8874CFF23B +8FECE70654E5855E525A403700A96CF7F8111BF2B58386E29640D82F1DD86900 +E0E203F3ED554209CBDA2A61A5641D4B39D98C5C43D4575648D06BB82B6C4D4A +F043EC61B17C208CE8B4F43A7BCBBE588A3D13A183D79A47404223037FCFA4F1 +DD237344E589F161BB9BBF3FAD2E28749350DB9A74C09E894BBCA85B82E704E2 +99788B24642A7D0F0FD96601CF1AE4819EBECAB89824A0DC1C03BA4B546ED36E +DABC8D49CFAA53D2A9A5DD6B3431E364C99ED0323513476CDCEE49BC413E50BF +51EB93563DC03B62F84C5F96ED713F288D109C79179AEC41424822772032035A +40E84014F5BF40948F05E8562C9CA9DDD71F89021BE238E74781A92D64E5F9E5 +AD6C0D954C6686C714BF189E78EE47F1530CDB8376E52631A1A26E3021FAB977 +DBF01167266AD68A779C0180E034A90CB77B86747395BE885E484BE4028B4093 +8BE191D58D0BF85308C72E6384292A2E1CD06130A091F8AF9DC6C3E12B1E4BA2 +BB2C37AB4AAFC0CCC7964C06B9EC1C7E3BDCB6BA265288D9C8625EBA35BD2A49 +BC50472D7AE262237FF1EA8D9DEA3C0DBCF7C3B2DF5AFB1F31E46B48E0A8932C +AC31A981655ADE717715290110A24F18A9C280B8A1319EDE24430F8B6EE297A6 +F0ED9FA62CCCE8D04508EA835C94EAAC87A6B0CB478EAA834FCC96919A168737 +09F5AD160CBB4A83185BD3D2FB6C5106F2305408003BB76353291395C141525C +C35B34DC64CB57C382F7D293B863AE11DDD537DFB356CD79C3F39958DBDFAF05 +C2018325DBCDBFD6799A213DC41DB996D0ED640669724C3B991A648934351F8F +C0AFEF6CFFF64A2DC8573FAE4D27F42F684FA9DE66B983C75EE125EF4285686B +C079E717409F7C7976421105699CEE6AC950BFB20E66BEFD4E06AF99E0593AE4 +5DB4DC8C8832529631FABA0B611F89BA8AB7C42C115A93761D1FFA9B70177543 +F76492919E80F0F379EF684F34BAC59C5D2E69B392 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: SkakNew-Figurine +%!PS-AdobeFont-1.0: SkakNew-Figurine 001.003 +%%CreationDate: Mon Feb 02 15:14:46 2009 +%%VMusage: 120000 150000 +11 dict begin +/FontInfo 15 dict dup begin +/version (001.003) readonly def +/Notice (Copyright (c) Ulrich Dirr 2003, former designs by Piet Tutelaers, Torben Hoffmann, Dirk Bächle. All rights reserved.) readonly def +/FullName (SkakNew-Figurine) readonly def +/FamilyName (SkakNew-Figurine) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +/Weight (Regular) readonly def +end readonly def +/FontName /SkakNew-Figurine def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 65 /A put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 71 /G put +dup 72 /H put +dup 73 /I put +dup 74 /J put +dup 76 /L put +dup 77 /M put +dup 79 /O put +dup 80 /P put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 86 /V put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 106 /j put +dup 107 /k put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 113 /q put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 119 /w put +dup 120 /x put +dup 121 /y put +readonly def +/PaintType 0 def +/FontType 1 def +/FontMatrix [ 0.001 0 0 0.001 0 0 ] readonly def +/FontBBox {0 -114 1241 842} readonly def +currentdict end +currentfile eexec +D9D66F633B846A989B9974B0179FC6CC445BCF7C3C3333173232E3FDBFF43949 +1DB866C39088C203DC22FDC758584860EC7BB67FDA28CC6208249060E18FAB32 +204779B5C03C0493BBBBC95CF02692CC4DEAA8D2EA90B5C2E64374E92BCB8501 +429B8FAE4A76C0C6B76D6FF7CF9A7D5EDFBCA0E959541C59BD05B7DE43D25D53 +FC3DDA6EF0C2743978A6D03E19CCED4A11F2EA4BCC3110BE8B8D9E2772361969 +C19258EFAFDC276CB1ADE9208A941A36D18F9FB1C33DEF76AA315DDB04A81691 +6676E5A648D7DE382599A7743325F8403952F71AC144CB079B79EA0F6CC70FE9 +5F3188F983A1F1EC77ACFC7CCF01778F00CCFB385AFDEB4E5A9CE7CC620FF716 +C61C9DE01E055E0CAFD45A716C0BE3FCBE9055D993851DE60E1E573FA960A4E0 +DA00D6FC534C4CF679C935A5D4A5B19672767A386D945B17D996CF36231F8E98 +218CA1C3BBB7D39931D4D50B1D1EF947277C4A9C9E84D419D55550E2A5FF0549 +1FA0277DC7AD9334BF50CC5492D5EAA01A2BD4770AD8B320B546FDD69F0FE7B8 +7DCE3B013AFA239B624C50424184F8B2E6C035CD8D09C0AEEA727DA23EBB0563 +F296F801C2D059FAA56DDC675D141E980EE19E8693DD546BB1EFAF23B25EE18F +401F89336BBB74A63088F8D1EEBE74494B265B6B737BBE29B09C257B26F2DC39 +B3CC5E66AB9A1696EE887C7638A4455C101BA7567859E0E604629B5D3FF0C3BD +9415B98896048B159A2B809B92737580090FE1E59963263B10DCFDBFEFE15B88 +68ADC79BDC0DF2CA41AEBB4338C85C6CC6C21EA274FF5724D26BC8563E63DACC +067651091F0E4F77C75213298BCD391606C39E1C1F37DD9C2C4515172E0DB0AB +3E93275D2FCA7CBFA53CB4D8123F6F54D0986482FE3E98ECF421B3A21437BD9E +E1556833796B0E3BDAAB179595F761991103B3CF06E89E5DDA1F6D91AE06E510 +6896FF0B71F0D2911767CB1DFEEF3500F070270EADED32C917A92CEE4B70D0AA +AEC0F959827BFFAB9A4BCDD270540B157307FC76AA894CE6094B0A399768CC90 +A73760A81C686C373ED4475EEF76A3EB467F2EC721D2AB87B492444996764D66 +11C2906AAB13B76373E8E10B6C92AD072356BB7172E941756E1B14A5C16D083A +82D271A5844B36522008EC033C9FA37EE6B8E5603A75500223C98D80CB40CEFF +CADA7CA565351C3844C7E2958DBE1DDE280A937A108D9D67257E51CFFF296304 +3F3E4ECFC71A72240C5C1E3E022AE56DDA20C9BFB9FF931ECEEE556BCC9C4374 +EA6B2CCD3D37CD025624C7B916A98BFD34E7811526561FE9C51114475E9EE497 +2E9524DC3EB093A2793D553A3B4C13236CBCC78A8F93CC75F90C9189297BEEEC +A16244F6181C5C535EC9B0C8DDE504E621B5887FEAAD0F667C7848497110589F +AD4265A06A63E61EBF1D02A87587DC7D4030E320C514539B504A31AF3D78D39B +A3E59AD1CC7763901191CACF97B56367EF01CDF17E2E5049D46E0C470750BFCA +57392DE2D0CA52013ED065C5F3A6A112882F7F37638E5B2B3893392706CE2027 +29FD3E48D7EC7516E263C79D6A97268DA46DF57696DCE0AABC09D1B6E2F91C96 +8D4028D2F1E7C5BE558D301C8B082EB07115A8316F68504339A38BC05ECB819E +A3FD4EC2887F1635AACF2780AF4067FF1E1EA8D90D4CEEA08E56C7958159C8E9 +5855ABD89B67C61781656DD25A7835DD6D0227E8E5197151EFCAAB5DD7E30FF7 +1051D6D4967092FDA2997852C9A27A96351DC61E31ABD4A6EA8173FB9DBC2F61 +D36C2E4278A20DF0EDC8A8322F6919079AC88C84E75904A2D372030CBE54BDD3 +95DBC876109AC6AF2D5DA531182F93B84AB3B31C5908ACF05947F6414AFB850F +043E1D02CD57C8961D1E0EA51C02097026083440BDEC45721D0F6D8C3A1D8CDB +3A7574A94AA0157967D94B4FE04C20B90DA96AB9391B620CE60C015AC73A71E6 +84907BBF57AA08BDC107B0B2DC30D3EC4DCA2FB7C7EBBE81AD2A05A0C30B7128 +2595FAB8122EC5A75FD78BFD3CE46263505F4BD03527FC4CEC45236399A2BF9C +4A75DB0DBC50D9659B1E1BDD615BBBD2E338012BFED914E88F37F9EBC7171264 +E30D7D87E849FECFD4BEEE78024777C8E1E84FA3B14E0B3ABB8A254A1519B911 +DBA0A83D0F86446329C71E645D92D02FFFD3B21DFE7CBA87A3B456F5F7063116 +C8125C64E8D6ADD54958DF8F45025A36326245B88D01F9C198A4CE29518BE6B0 +29A667AFDFA1350FC6EA47AA1D0503F3ACB450EBEC9CEDCC102FCE62F55BF5E1 +CAB60218501E2F429EBD905DD8D404E806EF9CB2841F89A3FA1131105F04465F +3C7A2B47C13DEB6707DC7F01AA43592CE1C81B76B5A6E8D9AEDCD79E7F52AC52 +19F863695C77C3BD4EEE3493075513CD6EABF0CB9F34F66D6AB84E2B903873AA +286B6431912785DA63C574BB4F80DD6F7A1B493739E58351A85D1EFC7CF4B1DA +EB16AEC6E26F10AC985DAEDA799DE2C09C99906E849A107045862E92C0A1B172 +7DDE110ADAA6203C01D69D00071EE1E864B33CD3492BC695E3DEF8B9D83DBBE3 +FB6A76B628EBD106B163EDF4C6F485BF8E72FF25A3F08E88648F0877AA3C5A7B +8EE6553554CFCB0B613B43E51B3EF00243D4F5302BC5307FA44BD179D6CC2DF6 +F1D9C92C198AB47BFB0BFB2250C48A279E3FF00DA2B09FB23038E781924FCD28 +5E09D3201E13708B4DC6BE3D81282CEC04A10C21183A73505F7F430FFDFB7BEC +7D0D22743F6AC58394ADB5D8AEF8DF2675AA70E630D7C4477ED33C1F00073852 +A5EC09AC1F212DA9E477CCBC8E6C1716E52E196B929FDB397551C60A2DFE9134 +F6728BFD04584AD5F748F136D780A0038D253AF86C005E29DECC5DAFF403F153 +0BB5E9B2BD15F6748821A9E687A20D232F530144C800F5E130558BFCF480FBB7 +79AB12EBA4FA0C5A5719F3835C3F1641805392CF4F189350D9AAF9F2135D0D24 +921F112695D50730EACD5D6BA5028C6D183864FD74E6A7194683A2E542231D14 +55CC2E7504334B615CFEA5848F643E8C761E78A9A452B4553EBA264C89076644 +8B4BCAFA8A4F12421F14A61544CFCEDE9081C08D4B9AD85C6049625BEBBEE60D +4CD2E0D6BFEDAABE6DBA1C5560D573F1CA77FE7746198B5AF514564BBC7E9033 +C5356E7A7A8F62B96A0CDBF27E2C2916C93744A3C377EAF002CB86BBC433E39B +354C24AEB7BB943B425F133B57662B87C4476488D31572EB049CAF8014E433FB +D4C18175FEE5C84C38A3994F5FB26EC9083C33F1FBBF1991E2A1E9AA0D9B05CF +807C9314BC4888E895BA400402574E4697271DCA742DE26BB025A76966570464 +65C3919ECEA9779CBFFBBF640D228A1F5D5EE26D30A945888D3469281CADA471 +23D8D3260E1DE2E47A18526DBD971C6E8CE40021549FDB096336531FAB5B0136 +B4DCBF4B10B6E56E0492AEBF75CFD32981455521B2E01EA9D83E56E5DA6CFF86 +1352B688FA2B790285E7BBB1AE7EABCC786E0EB75F87276BC9B541B07234E7B6 +BE219112646CF3EEDBB82A365B137F0C9DFBA0BD9E22BDBCA7C979B94005785E +3FD5715C89C3518CFFC50BD61869C4A56248D078F6D51E3901ECC4ABCAFC7AB2 +C71FB50E2936C272C805FD1CFFEE5E22246D1506DA4F3115C9B58CFFCB8F4B87 +0A6A9089BC7728FBD8CEDB4A9828B07ADAC517DDBA442309B6B8BF59E3563E6B +A2367FA24A141967456DF674F419459A4242708CB4301DFAC108CC8692C89BEF +1D148558F78A9132B26C7C9FA12233D3FB2EC34EEBA0DD7D2BD61029B48039CB +042945A97D0E651FC0D41C42CCB8B66190785C1BC413CD14C32DBC3632DF73B8 +2EF140AA01CBC7A4BC5C6ABFD7B17C81BF507191DBCC45C7CDC0B098D7AAAA09 +DCED8AD9FBF1A9457BE7193206259EC22C75339488BC5043BC6C2CB070E0EE14 +8540CD52542CD19DD6B0396EECBB4F6AFC20FA231F0D7E17BD080C5DEAF24CB0 +60AAE5C79D99C0A3C03071E0577DB271842306296AE5BC588C02A3D19DC0F620 +AA624139D349E16C0856BC50894855588ED2BFE2BE2740B76B6FF62B3E59EDDD +104E3BF213680CF14E3337C48B6CA8E2E23476F95152C2B7A2F8AAC39D27BC77 +6E4FE1F996ECAC2DDF9125199F7CD3AC1F2D3298EB89AC9BC95EB53798FCF67D +2CB01D6FC54423DF2E17F0CF5A9BDCB8CC4C1FBE312D1A3C886E10066F323302 +07B273E55CB6350D2942A5C502C7C1D22FA4E883A0E9BC8A75C3D4C23935DBA3 +1C4551552C1C3A3F08B7EA4DCF6DB75371235977FED298991765108DAD5D4BD7 +074A6411940A3C907511CD71FA45648F78406E164988EB26019CB16819AF47C3 +81E52DE64C0A31A242A272C9F2C8EE6C17795CFC5DFF3E680A7A6A9FCA796000 +CD734EAB37D86218452A80A189E4D391502FCAEF9D028ACB9BED3E09441FB7CE +6793A4E49E362E506DC6BF5F8201D53D809A02343F19C21499046DBF408FCCAF +53C56B932842843157F3D16CA4EB54F4CD044DA560F9A4BD783E76D80B743344 +0DF77397DA7EE6C415BA33B76D6714F7451FBDBDA7941967CC2AC0F89FC6F193 +FD58106FF85144D50392B456D16F27C29B16628D12DE23A184A3AAE658CA3E9A +3AE8CEFC800C1AE6F2AD5E359E9B6B6A1DD8DE7EFA161BCFBCC8045423622B20 +1C7D14C27693368D56E1C7E6732222B249420E086D66FEC913F6D88AB8C269BF +A36F210851A12FF7DE8FB0957428176477D81B345C69BA368057661601791CCF +7BD7D69A7D6D9F3CE13058805D0D25494868FFF19B2FAC8131D00196950CC3A4 +276652B08ED8D6546CAD15D591AE8546A71600613D2B425B9FC7F2367CDC2873 +81573201614D241D104F6AF3C8B64E9940490108B626629AD01A4D6A7AC6B70F +0D5E32F0241809B66D0D486DD7032B97F4D2D7D0DF4F0AE6CED7E9C695F47B21 +C3D9C263BEBAA7A97F9CDA7455C8302CE3D6D89236F7EAA4878C380A9C23AA08 +5EE2658FAD7ABC5EF1ADA32BA39E354D0EA4FA9B9E1F8816E340864F1CB46606 +6B50A9F99CDF7A70AC0C2BC8958257DED45C453196C030ECF6E89A5F3F741151 +96FA7635AE0748141B6CECDE677133C8083A86B10C134D80D07CC3D5C7669FE5 +90DE0133EC61893BF4A7F9CAA915EF3AE61EACA5D851EE1048CD6E898DBD5795 +3473E2785450012CC8C5409B9A97FDD10D39DAECB64AD7BED77213FDC724DBD1 +AC0535ABC8EB9FE0198E15C50E9657FEE8AB00BCABAAC16F6C1560681A7336BD +177FD31EA4840721BF22335AAD835687CADCA97E568F5F36C96D048C3E6C1F52 +2C51CEDE2E3B72CE85CF00AB15C85EDE516399992658BC16249FCDA61AD9BFB7 +6A48CEB195A36F3B164B9A36EBC3382950671C29AD8854FAEB9F2A372B78155A +9AB70623E9EB7E22117FB9F75897AB9A64C147B713813C902078A8A023F162B0 +7B4243FEFDD612762B8516F97A2E8B6F46B55E2C179018E1CF7ABD4A6B5AF9AE +CAC2DC12C61D1EEF349C9797CFA9D657C6E8ABD5F6EA7AD4DA037917201125CF +94D32FAB37A89FDBD06D23D3868A6BB62A97A94A45581A5B17012390EC83668B +3655005298BB8FE43A8880DD63E8C8DC37515580E56FF1BB6689CF92C4CC2E2B +61291B3AD25ABE0937C06E8CD548771FE0AD0A0328F49D818D8B96019E73B4DB +DDFE56689DCE604A7945F90E74A2F350CD4B76DA2EDAD87EB104DD90AE6CEF31 +15A81D31B56A89DBCAA25144D0F225C0640BA06AF3060523DF5C4F45F0534B8E +7A4D80072DA798F8DE379A1330CDEDA5AFD0C337CF041B5D1D4DE7EB013842AB +7F7707355BFBC756DE91EFA187C20C48B3FAB22D770329CFC52169D0769B2D84 +BB6CD63D416CA52BC4F502AF72E82FD4AF14569F957253FFA5A1EEC88A92AD1D +CD2436B39051A9B7C8AABD16E06003EA07279A17028727087F332C0BCD20BAD3 +D13498F3FCD80D0AD210CA291D42B8184776DA936E2736EA5E3DD3FEF1DA02C5 +1DAD1C437AA0277075A39A264AA60A18F249036955116918F68B3066C20D56DF +9D04F756430FEFFA73C5C9BEBD609615E3B5EE10BE0CA948722333AEE411421D +A06803D8831DF9BB5F6C18CD67F2FF3A59D2382228BE611F62339251111EDDF3 +6E7D2DF531FEBC5B36E3AAE726DC7AEDC50D8CD452A2B4DBB0D0D44282F217DB +E6FA7EA15975A51E71012FA0226EB22712762546A652A5D6A7BB0BF135F2CBC1 +A45449CD6668044181A009EB9DAECE0F6408616ABCD4865D7C3236DFD24F39B5 +A29D229495CA4589EEEDB11E5B9322BFD6137A2D35D3AC5B18DABEF24F6126A2 +7F53930DA8F839C8D4F6FA20BB2894FA593FF6AF77F4100ECAFBCC2F93662248 +7B3C5E1063BD766C9E87722E36F6CFA6CCDF23C41BAD2BDF5E2FF3909CEDEFBF +163F48790D1F3163D67774AB77C24C952E7220C54D7604EA627E90895DA3D059 +693D5B4926F09462D6A04AF78B6A28F1B727060BA2BEA51B5DEF0DD4F422FF56 +F4AE0CF07CD42A5290AC4C8CFB52030E9664966098E4A7F039CA62FD73A2CCC8 +FCBFFD89F74EA9E93981AC75798A20920A01100D01A626ED1AFBBAA7BE93D2A0 +B3AE42DA31340398FDBD91CECC02BA6BB4A80DF76BFA27E063C822A33D1B310D +3A48E60F7F1B5755AA9A96332843711A29A78F6C6578495A691C2F9C64F7AF92 +B4FD65BA513ECDA3CCCF42A707BDCF13C8A0102A61392450A3B3CD8B94A383AF +35E59FF6FBB28253542C2EA49CC4C2CAE8987BD26718792253B10FD1C78B08DB +F58BEE5BB4767E6455F4B7E01DE3DC96D0043865017196131029E1AA3216738F +50CE57D39BF7BC2E92A8635AB8A1E78D963008C30F05D450999AD22469325334 +4EFEB187443E6FA78AA0B8019B50C69E4BD1E450DFF172B5E569BE18F516BEC8 +ACDE5A5C1BA20577327E90EEEF2796EF9483B79A0D957A79711124C58FFE8E15 +307FEB7F219E38A4E44959570B0B184A39D7147E6034E76596395A6A25BD8A13 +1B0EAEB44B77A33FDEE7FCB39B9CC5726C984C110EEA36C3BA33798440D48E87 +DFEF88CEFF7EABCECD3724451932AFDBCB66E4D9FFC2584730C6C89395719FBF +E0A372C5BE40B78A2B4B633D7439A6A50E0526FE708212EA92242FCABE82CEC1 +C94A23B335B4A4F4DE82385D348FD1DB4C8C2CB5CA6724385DAD0415699C59C3 +545282C9DC4E3FA784087BBF5A2CB3DA59A34FA2ED6913FF2C4A17FACEC83C03 +2D5A8B22D52151B2F4FB728831EB48453DCEAC01626F1043FF9722B0E81C2288 +E1F349021880AE7AC24CE16224ACB084F9C34FEB01D3D89C33FBE9E9FB36C60B +FD05FC107DE6F399FC8728F9B1DA964C65D6E3AEE1F3AE6766E31AC76426CBAC +BA4E21901EC9198BF1404B6682A3EBB2E58EE92DD3F00453283FF90303684FBD +31C495ABC38E5E338E52E8BD8FE9F937F4A6CE0914E87AB607FC41BE4B9D4480 +8210F84226701AF41CF23AEEA49E8E65A6D8A5BBAA55EAFF5C9BB311382A1AF0 +A278AA337144D278BAA730E1E5B72BFE46C3284789E8F386714856C8885B9B90 +A8ADAF3E6A7B242A5764A49040A48CC1608A55356A8B6C26B9FB85339372CA19 +994B01C756E9D77ABBCC18A4CB7F172139B481FD1848AE5CDB1D9405BD7146BE +A36E39CC2313FF2630EDD4290663178D3746FB4452090914D44AC76E768D72FA +4264BF8A621B92836653B215D58CA5B042E4E7D2A2AF264DD684375BBB42AAD8 +36297B940671A33A746BDADBC074E5AD4F3C37291DAB60136B45010657D8247D +9779B371E630E21326DF56689F85C6CC27DA3E28A216F0BED58171CF6287CB9D +B1D57BC7F8BA0FC520F5DE0645F619C4AD5CA6499C033124BD7493DF1C6F6801 +4B29902FB859CD4C1E75E0A6D5B02EABE3AC973D6A0508C6B23F5DB7539E394C +2745E0194B7B080673E265AE425B203D54EEFD55C9C1A915935686568C435619 +3A95F967FCFDA0C967CE5F3533BF453DB99D51AEFEEDC80DDA2B08CC90B2E904 +5E3D248F55AFFE8A936E2FA3532F295A40ABB0E8F88088A7628AA67ACF15F9AE +ED7F95FA27680858E88085B2F751FC65DD79421E1C521BE3BC6204E396FD76DB +E0221A90353E93EE6E40A98BC3D98CADC0951915AA6C39B89D1BB424E73C74D8 +9AA6E7EA7DC31D2979943D4B9658097BD3FF124D64C05220B092471C947E179F +59660E8B992A5B1FDD6A509BB5A736DAACE1CFFCAB512A6651138C2CC0872B6C +1B1BAC588A47053F016571A3AAD2BD86069D7CC02568FB215E659352F41D4E73 +ECBEAF452441E47716DD4E8A5338945CDFD0497B5A60B1996E262DBCAA504B5D +CE77C79B714783A99D3445F6FA914B4A5E08CD59CF943E00F2749711BBD1FB49 +D40F017953CE6739665A616D4A78FFF7E210F7D7CA870C73647C293C92D7DC7F +F6AAFD3F38FC5DD10B78350D088A606D0E2CF6C30C0D90B59F923850C3E43223 +2EB034531F995971C48A28DB302D729394FD87DE8F242F10A5CA01756A683C57 +25BAA1D4F3625A93E72C86A0DCD6F010F6340C6BA20281D6964C98186A614EB5 +E3632BA1790E4E1B607F5F2B6262FE8928362865819AD32F11472F8A07D16757 +24155869E8470B4B5443820F753CC0BF767E4ACE3295666DFDD93D480057C389 +1609885D25EAB328A0794C9DA9374329ED1C33ED556E845F8358856A18009911 +8BDB06D215AFEB4EDDCFA86ECDDEDB57694BFC89857D2673ADD3091E187464FB +870A70D06F53BDF98C58D95119EB29F564DE0AFF274E17564E598E6E41A4B161 +0713FAF3DE0A9853CDBFFEDE22D38E22B3B0BF20BF98DF2B685ABB1BDE1C17BE +0C0500C03CF4E995A87FB4ED9F5762FC95C342E2F10233FAD2DFF7B288EEEA99 +2402DE511630A757D679A476C78CBF478D958DE5CE74517F7214874E274ED715 +CBFF84EEA41179B451F28F7829C43503B60E332C870CD7E48AD5ECBFBE928D64 +7009799178405317118B209B49854B9EA68415AF3BEA92EF7BACA505A67908F4 +F5158B0079709D215CDA2884D2D26112D27569062622DA7F2D9D0786C4F0F43E +E07DA5BD2652D2D9F55AA65914723A48A9E1DB36C59715F87C6CE89A1FF11033 +77A6C42767837D9934CAA7B994B601A562818E52C47D79777C97B31F008D532C +81D3AE83BB01E1EC6956546352A6BFC6A76C6184FA3A462BABE64ABA445FF969 +5758F2E6407742C2F7D9E08B28F16EA657532A1C3859B470860D504F5E9E668B +51CD14B65BB96ACCC5A46AA63CDC4D983D6AE6F27C80EC0C284D4479602C6093 +9C6F7D31E8FB8CDBEF0C3CC6BD6EDF9AE142C538E4034F0DCF773BCDB183B667 +46277B91656D9ACC8372A295EA7F507070CED85623FA27E9D050A0F375379E20 +05343486FA2EE2443494FB948DA30C764D0B0141A04906D80926E2513E172283 +772665DB6C1A57DA6430E98AF01B026D21AC584712AF57B25509678E0BE0BDBE +E1CEFD7240B321BA8ACD9F3DE002FDC4BFB81F7E8684AFE55AA6D7040FC1768C +F3B4E9EA9C8A871AABCC4CB88A188B9E662E5054C7258E3A33C88480F0FBADC2 +3B0CB6910A7116865D9B5302E023E0D1F2A7D25641CC61CFDCEA42813C36357F +D78931B144585CB2BEA1C97839C91A78043E7FD50539FEB408A7B590C6F3F99E +56AED19C64F5F48D95C2009C1AC9C379B70230F24D38CE89FC74B8B2522B5EBD +C9FAC472AE9A0F6539B8441DAAEF55158658F79F99659CF1770D09CEA2AEC321 +1FD28F443D26A81CAA619EEEEC107A74C572A3AC430B6590B6D5CC124F0ADD48 +F3E610F21C8E99FE2E3055F1FC9453CC35502C97192EBF65E809591C3361CE3D +E539627A5FFF6AF8071E52608F8B2948D59F747E3A622BE215FFFB7A7A4C2E47 +1C776B99FB1944D834CF01D613F6560612F75767ACA95BB808A530765D0F29DA +A7705E35D1B9754E4B20E862981F6944EF8A5DA99453AAF7BC5048E72D11F8F3 +95E1B1B8137F44FB10FD2C0A5A943107EDCE2B7088C6B0C04A4835B414C5382F +134BB4848816E7C2D1F3313ECF12809FCD7A488225E1D1185C897A0DE86BE71C +672BDA7921406CE3735928FDCB9D30A6BFEBE864A71F7E20BC9A26EDA40FB41F +8986FF3A48169370248520C2D0583BA30C016DF0F5F13AFEF02AF3E3A4450838 +0BF0577F9A5F2E681F0224579BBB77365CEA03126D8588A9BC812897FD2A7B77 +413969F32935AE40E0C9B05D7624179DCE0F89A85BF2ECE644277739C1667553 +1548A18DF73EC7351B78884FF7B63C01E861BEFB445430A30270D0066E3C0389 +953EB8B3353306E782CE55570D84EC9E6856D322E6B6394399C9F0BC846DD58C +EEA93C18B1287C9BD7B8A23F9675F89625B71DD175C46BF3256F88A39ABB44EE +970F6A21F8CE551CBC9A08F97E6D9B8A60CA82846E7F3D4781E20BB2E9A5DF02 +EFCB366EFF106FA066B9C0999CD011CA34CE5474E52C1A6F12FD55FF2E952E64 +7708C35845D403E283C3DC16A68D43DA7870615DF63C30BC2DCEA8321030E565 +6BFE9583E2C4CE3D17F3C8005DC077FA7B27293A8590DAB4FD509BA7CE11CD9B +4CEA2060925E204BEFFCD2AA934E2385A09C260C1FD89CE173BAE32D54190BCB +91D7E42CC166CA67325642EC31062FFDB06BDF7E8A410EAD0B6663CCA00B5335 +8DFE6443A3E5F1B71790ACEB1CCBE0273510692BCBC9C064A3587AF58C001FA7 +3D930F9C34A0329DEB8B0F7A18B79605F13C3C2D6A24C0 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSSBX10 +%!PS-AdobeFont-1.0: CMSSBX10 003.002 +%%Title: CMSSBX10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSSBX10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMSSBX10 known{/CMSSBX10 findfont dup/UniqueID known{dup +/UniqueID get 5000806 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMSSBX10 def +/FontBBox {-71 -250 1099 780 }readonly def +/UniqueID 5000806 def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSSBX10.) readonly def +/FullName (CMSSBX10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 12 /fi put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 113 /q put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 119 /w put +dup 121 /y put +dup 122 /z put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 +45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 +7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 +72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E +BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 +974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 +11453BC81C443407AF41AF8A831A85A700CFC65E2919BE7F4437ED75BF2F7BA7 +02F85142A4EADC8C9C7F11ABE2AE2A9DEA79CBF9577DD8627E31D25A7E4DED9E +FBB1C413696C88A07E5C937451D40A9211B29E24C9424635CD4FD6B16FA7D76F +5BA1DF0EC26097EEADD70EAA577531177A26B5017A32675C68052E90E68538DD +E779AB23150FCD1653460CDDCC713599EFA381C3322175809A73447720F6911C +6BFBDC0458C477D2CE69BBAFD05B5C2DA1D2E3E8378A2112066B045243D3D080 +DAB211DCC25430973C18E7FC5574A814E3EB79F34FF5197453873C8AC66E47AB +5EA57CB3C8365D5235E7746C8584734F002E9A28C38B0C25E3753D85A1D2F3CA +B8DECFE14A7AFBFB76CF3E91A1E0203FBC8052C2DF967693C9BA0ABE86B5D264 +BC345D7954C9523B3E70C4AEBBB0F2D56BAD6D76E095F9390FBE2CD607F3060D +F713ABF47F0FCA5D5C27CBCD4140C668F733F769FF5326917C0AC5D4C72F99BC +5AF4540DB169622644D320872947BCF1D30DA4EA150AA22D6D53777345858DFA +3286EB68314E30EC650C8BCC572D72879E431FB4297AAD6533C8F4802E0B9902 +8360C57504D4176C1DE7F57382FF2E2C0A3D5285A061CE91D3149E3096B91076 +1E914125CCA8D1C9230B72427990ED4468CE79C11E8F0CB89A3213C535B040E4 +0C5784E6D53C96696EE45C87B5E0DAA80D3A06E5759D0676ACF99020DCFC3E8B +50002675B01959500133BC30223C75A54948DD28FA83F399924D4ACBE33F1F2E +D85095A76AF6DD92EAD139A8D5673A35B3633D25EF3B10A40A7E28F329D6E7AD +DBF1DAD1E666931611FB107D1FD3576F11A22B50943C536DC2BA477EBAA52BDB +B65A98268602F26DCA5EC761526CB7F33CB5B345110B7A90E1D078A21E332F78 +33A0CF88EBB2CE852384DE3435F7B3564A0AFBB2024F79A633BA5B6EB7CC5389 +C43621C82972D60F7DAC71FD9DD38CAAB865D7DE4ABC39D71879BF31549DE649 +4B9CD8C149880504E5B34C2153E963B3FEEDA0D59F70E0ADCD24EDBBB8EA961A +90E5AE4ABB26E1AB1757E25572622D5A2541CFFACAB673665C7693855473D78B +847FAD590B657CC0B8289034AFEC3C54FE97B010535F70AF67ECC88E21B077D3 +A9C2C52D25CE9714EE430735DB57991AEC946C96B6988B2C85D17C8BC80EA844 +3A076618A686040ABCAC347F1B1C14676B05E13C239E99C3A2B63D0388CB50F2 +BC119D6F74F70DD96BB5343D5458950070576BD6E319AAF5792EBB9DA5778CA2 +58DE0976AEB766DA6A865F09FD6753FB4E7E0E9A06AA1A06C2636AFACF787460 +9E73BAFC4A56A99277DCB14F52555EBF6DC5E5785EF7745521FA061227B725B0 +7A5BA223D5EE9239A7A1694D4F9EC1132FA23DA44ED0FB0AFD8987A01F9FAE15 +ABD485BE098CA7B1AC780A9A02AC58DCF0425D4D110226DC7B5982FE31BB78A1 +C0AAF9B712E8D478FC4F85400B5E6D71AA653F9BB2E967A76D02B04887CEB9F0 +0EF50A956AF7F790400EBBC07467D9A8BF8BFE8200F8F7EEB5DF3E62A9A332B4 +513120FD9F8A93ED683CC47551C629B5313E4E20A207845CC37491ECC3945EE2 +71A0C5633B353B03B1A7727D5D9A0478D20D67A981F6E5CD8737548ED4348A91 +82F2CE805724A028E346E6B7C542FC69CFC7935E6CF3320ED9701C6127FBDFD3 +B20F0DC2D1F92DC69E4FEE57B457E82D5721D932B140CD6DB9BC86B961E7E6A7 +5816F42AF937D97C3149DC2AB0054564592448D0CF52427B766FD38E3B040B81 +59AA9030CE06A9A9E3A0572A11BDA85531060B75DF8791176CDEC0A9BBF472EE +BD433BCDAB926689B8806CC8044D0925814C1784A41CEA48ABB9AC039485BFA3 +026FD30CCE84AC57DF09B1581ED01B3A840AC5E9208465BC160238EECC7A6753 +D5B65B159FB08E0DFE4C9F2EF5986352C0E0C4DCA0EE62EE5C19BB6C486FCADE +99D3519723B70B20FACE685ED8D364905EA64A15981B00A6DC06D7B0E3D38FC0 +9DDF04221696F7A8F3CC7FDBC25A61D9AAF9F65D3A64BCAC4084CF13BBED7195 +6BA4C2445676804C333DA6569E4AB7E6999505DD1988C3E62495DF61B722A6E3 +00ECC4EC698E33F7B8225FF591B746E449D2D178880741074D0C3CA740312D21 +1F8B0B1A855FCA081AF1E69D14C9131B1769943EA6D5D6210E10BBD9E404B445 +FC3E2ADF8C9AB6AC07BC2FC0482515625523C04303F7884283D5CC35A4A6ADAF +59738F3DDDFB51E7134327AC4CA577BAB076F3B588FA3828971FE9D561F46358 +24BEC4C7F84D8FFEEAC94E2C632AFA5AED635E867AD362E373CEA718C750B4B6 +954A7CB6E4CB2614A4E1C707412B7B09F8969EBD5B6510B66818A2F5AE4EFEE5 +9DD7690A3520C477DECB7D61FBE5F84D1C655971FAD7CDA78E695C18908016CA +48B468BB6B43EBE1DDBC49F43B7CD667B4131D7B0C9BB048178A31D0CB70A76F +527DD352F7A9F0F35226117FF305A9DF4AEDF474FCD5C7F31FB06D4B2CC40629 +1BE1F40B6347201F84BF35CB5155BC4D2E1DF2A5C7613C27A0EE77BE55A744B6 +DF7DA5741AB55F133D518660751B0A91E6BE43B527E9C97E2F06FBEB58DD0215 +BF4105DAE1B2A29DB05FA204D0EA6E574C7344C3B3F44092F7F997654D61EA9D +4C811CE6087BA1615A31F8D107DC64F1CFF707234135B728EAA0ABB475E678D8 +9200950F24A8A61AE6AA18F34A067849825FB3925A8E01D64E849546FF7F4418 +19C0FFC2EEEEBDC7805612F7849BBA7BBD954BFDAF2E6FFE3CA520B79070F8E6 +B1509EE0040714C9F5023816250F40FD1C6867F77FC8ADD3A16A3A6275CD6F5A +21BC03274B350EEFA6EE929AE91DEB8D8B309E3B3524807B4562C7758794A8C8 +4E3C6EE0C0859AC9B799428EAC242BC4AD9564F2444E3C79F11D4C1D5672DCF3 +2E191E25165C77EEA2DB51753ADE07F5E7E748704000265649A2E1DF68909F38 +68F0D5F415330C9537A065728D2104C34CE05458AC1B2A53946890DFDD67563A +E044E7AEDA111FCBF431546D410D67602985F6E13988999E46C80A983C7F12A9 +FB56C6735454F1E194F63A1B6B21683A281AC6164B3229AE25B1189366C9DDB4 +09D1BBC8429AC3D64F8BBFEF1265611E7C2FE1D3A2FE24FBF3ED96A5CBA6FCA7 +847F5E3AD4D14C0C77C225588FBD0DA2E960FA3901DA1B46B796121DC804FE82 +C382F75AA0495312A80EF9350CE0F80CE0D18316E5D02B7BD78667C2DAABD879 +E17D5EB8F274DD2B1BFBC04EA2F72EE5376D01DAA129FE257162BD19D19B13CB +C13181E6DBC12826AFFD87AB152A59D67D0FBBE5D9CADDB1CAA8C27689355AA8 +FDC556015E4A9708995E51E46D6D1ED7B68A61625561FB594B9BEF87A1720222 +64E4F8A47637705CA32B1B4CA5B8473F1D67FCB7E4041502B7ADA9FA4B16CC6D +282FB636979D3DE7C76F3000ECA08AD6E116B1558FADCA251D67FDEB4607CD3A +84BCA7DF488C97FAA4FC195661D7977A08EF04A7D9A2D619EFC7AE291D7DA633 +C6DBCA7DA01EF336E378764F6B4E4D6C517BE05F10BD1FCDB20E5ABA7F65A8FF +17D93CDF1E60787712C40775A5C3808AD05A2F276C94B05E10C6042604F592C8 +AF1F25B98A0C78AA7BE1DE9ACF2273965F0795B0D79ED6CE2753FD0FD7B41A18 +FB490B06B5467561DFE5161C27F58E48EA5F38A5477C9CD0C2FA13683271E55D +8B08DA0C96BDE97C653B0B18096EE7C0E6BC3894057F14E83A902FAAA4C2AC7A +566A9EB8F9D622476DD4E722F55F28230124F67501866FFE952AE93DF5BBE2D9 +4B9CB9955320A9E256E611EA3838ACD9073107936226140ABEE92A096659764C +4ED2485B33E75BEA57CCF19AB9409B684EB14103ABF6811E7A8C0AE0C0C11BBD +87801F3F0260D04A8921FB9EBDA2A2048F4B5C47DF63051A0BA6DDBBD895E0B5 +F9F0F3CE62CB118B86AF595F4F34359DABD9EA354798E8561599CB32345A43B5 +93B217C43E316BD10BCE1C66A10C9A8041A14570ED7FFDD95AAA76E92EF52042 +69F0B8FBE21CA4E37647DDC890D13AF489606195900063DB0CB8D71968C1311A +D56155D2B2382119E603AA85E9ACF1785E4C0ECA137E7E4F5EE7915E8A080509 +02FFCD2494DA2D3B2AD27DE5F11684BFFA2366B6C834AE309D8E07F98B7B556C +DF3E0B42559610F1B78C79254AEBD7B0F5B3D7F420BA725AAA91EA20D014334E +8FE221BB02BE7B59FC3D03D8ECBAE21F5E37E4A0352C475F9F29C5D2FCE8CB9F +2A059AC06AD9E6F13C39F2781D7D4B3FC34291D165E5C66C5D01B5AAA2AE8F72 +9B3C634FB38FCF35283792048BACA9F7EE6789621D9243B917234405BF194BF5 +A4F137680ED10F216076AA2767C1D220AE71EA7393C7E252209B6ABD94213AE9 +F61FD2CB3160F41C4328DB8563483E13EEBA83A7935E4AC11A97DB7988585184 +6BD3DBB8241EFA1F1DC5CA9C2E16EC1EE12CAF4471FA83605DA85672B34B1F9F +8CDBAB6907D6CAB6DD7E00A7D636EA20961BAC97D1AAF32C8096003E096855B0 +EF4845013B9243A29BD509436CA78C6F8DF4F90DDED960A0D12BFDBFCEA539AD +BD4BF883E09542C9D75DCB8A4AE82DB495B0B918D330979F347A76D73B19995F +4039557D337FB55B8C5922F35B354F6C8E4D861A0B66B3D803C9862C9C507404 +5EE039245AEDB521E90F83F15E44F42F0802F8DAD6A9BF6176C364286601FC80 +E14926FA518CC035337904132AEAB9785361709CA01AB0F352317294B34B2B20 +FF88CFBCC8E89863BFA2D3ABB2A596C9D9DEB261CFE48E403F88652150EEDF05 +3390F002B2E4B53446FB39C488E3D0D4EF4AE2AD19019710FDE56FE29B58B00F +0A6D5B26B814BF64F13C35EE903FA2190F460F9438924E1D7158704F305E326D +66CB529B3A4836DB0FE383EF989C975A2F603332FFE0748E0D695327CC8D9AB6 +E036E0E6409261C30B80977BCC3CFF8FF8A9BCBB889ABE47B0CE3450783E1EC7 +1C030CC18E074E01605908C3FB61B78CF4FDCC8E8CB13EB77CE6FF2BFF91D658 +51FB05DEDBB20B0E4C5604AE3CE6D41A4C8D71A1F90120B1F90C83989B892253 +31D06ABB335DE237CD0CDC91256A54797CBA5E284B6CEA6FAE01F7BEFD905E5E +139D57E163137B5751A765B46A3AE6F653FF2551988CE792011E0548CFAA6ADC +E32B876763AF6F6FD6864E7B55E341C97FFA711913F8A7FBCC1FDCB4CF2F4D3F +17358EBCED45C975F2EFF3FB9F77A22EEE4C9DDE63360DCB2DA2C1AA4BE44BA9 +3F9CE6F27631809DBC45643DF7BEFE247E79AA7937C409986500EC1026ABFDB2 +6C30E0A4852A6976A73AD7483C36F1717460327BBC05DE729E23D370B78630D1 +7E87C99A5C3A3C0FFE204EA81A8A33D7DE80DF3C0EAB557F4E86DDF8E03AD072 +61B1D8E1BA05452A6FCA404D9BB8FE9831A367B0AB31041B474DA9536035E7B5 +EC83DEF0AE17DCE958DA19869DD51F53D4A4BFCF7CFA635D6F9F882E6F0215A7 +0494E76F258D44FF72EB5A1104E8F73AD2F6F2ED337D854B81DF4083E6A2D679 +6B5613D76DA2347118CF009E8A88924C2A42B154DF1CEFC93C89DE0ED8DB26CD +8C2EDE2670F494DC591E79DA26CF8B5FB76613296FB1F39AF2001BBDAAB12CF4 +3906B4C304CCF1D066524DCF92FF484CC682C2B197CD797056555F318279C3A3 +7AD8EA9CB19724AF57EFC6706157A5E2F51F104F6232F252594510E0E4BC872D +D610F4C99BC3ECB668139331216DF1AA8F6358EB90CE1F0B8267B878B19BA7E6 +77A53A674E0B029E9142865CB92A1596D5AB97FA12FD05A04369AA00BDCBC2DD +1AECE1A4AD55A93885C626004B41FD277AAE6DF68161F7443EFA7D9C913AF909 +970F4C6292A694AF033B953CE37116A2AF2439E482867EE9EE2BFE1093A738DE +24D3C408DD105CE6D7B8967994F7C5CE49FBF61AF135F8F7799E2FEF29A168CD +B2F16F795FB475204FBC41AB78AF87E4E80F992FDCB770A3DC0501AE1D786ED0 +449956A1BDC93876934331C24CFE4392AA860A1ACCA39978BA8AB90A2174F5F4 +97539772660D3920E1B57E9E0674CD34C9EDA83B6AF1B06B26207FE5D67E75DB +B170F1D01D512CF6D586DABFCA32404253F0A9985A29D46641A81D5A810469C2 +8081D7774B3188423822003AEB638F21661E0BA7AAC765CF8321F9677C85A562 +88AB1320B3256EA9FE0C67E5B69A5127DC1B13E4062CD0C9ED10AB36CD370105 +8FA04F89E3F836B01393F1E9365077A30D8E46B67400DDE8EB0AF8C815729699 +469773FC3F0ABCEF752A5768C9DAA1931421214E69053775A238553AB6620E9C +E875223681E60B7F7B25BEFBECDD4FF799ADF34BFB397AA114515E2133304A57 +B422E97EB3FC5314F64BAADDFEF9C0EC719A78915B26E7E3F381435563F650EB +7587F11CA3B14875F6B1D817C1EFA0B89C85B888E8391C74D77CBCC6A990C36B +1062D049E20876B40CB030367818A3CD3E2CC354CDCC9A0FBB8DFCF7135FB2E6 +A0BB0C3A441CEB8D5FE849AC7299431DEE27CE28B33AB7E836D6958104D1777F +8010546687CCA23DB48E53376A446136F449A92C07102315D4D0A897521313ED +1A3A8456A70C16EAA50A3E67336DC89FEC56AB54A579EF264377A103939D5EE0 +0A90B4F20AE1F2511469C34B5984A04D5AB8A162F18DBE4D613BA1C1C85E994F +80AFE3C18A045148018045C63376CDEEFAC53A55DA67D5980E3A99CC1C981FC5 +5C25CD0A685E3AA6F8C0B8FAAE157DB91AAA50A2B5F7D8860624F29B8DD87606 +C30F84C33D802DD5B95E090BD7AA4400E090DC1913BBC392D7E5E87717AB14C8 +A031737560F3D132BAAC0D6DD88C586322804BC2D8C505973F015F7662571FD1 +C89CA0281CD48AD84B9ED8D70D240A4EFC2715DBE98E545B987AB64FA259D81F +3F768326717675A3A2E22F4EEEA22A5201797C6D5EC644318CDA28A2C3CCD123 +B0159205FD52E1F9A60A69AF7B40C4F7189FDED20EAC3869E5F53F4955CDA0C3 +2B06D72EA2B8CA5F0B557E9A36B8E9BE7EEEF96B5EDCA6F79F53F83234B2BD45 +6B3D631B1C9CBF7D283F377177C60B3D65ADD945D31458164043A17B8DAC8409 +B4261A4A0EB36E18BD104A8E66F45C3AECC07F4E8FA9F3D2A27334F95AB79BF8 +06C18D57EA745116DE0B36C12B6F5411A9805218B5A31731CA0A35D9AB6BF5AD +928726A6EA61E0B69FF0F4FDAB2CF5B222FBF9BDF4F89EE47373AA3944678328 +1EB230EACCEFF4243D6B4F8797482DAB78C1A053F2800144A4C76BB839E536EA +2D4DCEB625DC0F754EED8BE3FA53A7AC3ED17C92757CCCCDCBE21A9D733291E3 +61235172F117D4B8305B45D7728DBB2D71411954EE599B0EE786D7603D61CABA +AB241062BE3776FA150680F9CB8784FC7A94790FBD2922772EE886254B59D0C7 +4A4DF7A2C1C4ADA1DBC51CE27D3FFF7F96BC5FF7382864369536BEB2EBA6DE2C +1C427990F6BC84E92CF718BC6D4CE9EC1F2DDEB8637AB1FD673C5BCE1A090146 +171717B39B9A83F2DE0B79CB1B836390828B3EB6DC397AADE45B21F55D1A3583 +C3A5BA93A4ACC08CCA4DB80B78AEA6002D80C5513A705E7232938D8423FFC72E +1B96313ADB255D43E2676DD2B00B51D116A328164BDA8475741EC234EE6581DE +06162F006405D6D823DC47DDD14536BB530D132975C0C436F08F9243F1A9AD16 +898823B8E2739B4428E62CE0E41C291157F1886BF937B3D3B9B6DF0D0EAA38C7 +D7F17D962490AF81157E76074422D746EBA97ECE803A205B482B03FB06D080D8 +05CFE4868E62494AE445824BC127FB7367DD9F70B2168F2B8CA0CF190BB838C0 +67563169C8454E5D0DA086467F1536F5E8A1E4D3E727B1688F745FFB4F9E56CE +4DF06341FC891C28C943B570A7A38C595E07707E41935285DFDCA777CE731DE6 +B46EE9D1C3D61DB6EB8434F17B15274840BEB842587F3B9AED05B97988E74B69 +BC472F5575B136CCEA4A28C49A9A078338F4C164BBBCE925297E4B79CA800124 +B3B8DF95BF211547456696F548E9F545DEB165B896B7DA038438114E661B32DB +EC043A557A5E26A988B25EE30ACCAA8E8C904246701E97A57C400F062761658C +DD33BE34ED09BB1BEF9525DBECFE5A994968FB0F993836E4771AF3DA8C13E121 +4FC5EABA8C74A928C6472A0912BBF8F1741B4F0C3F41F58EFD3A549E5B76D332 +D5E338A16E83EC574C45A49C1C3C21AB31A08E96B0C430BCA2CDBA81C80BD5A0 +43B8A5762CEE68CB35C76EF23FCFFD85A5845E335A3E0F3980CEA0DAD5F78225 +D947923E1054E8C2FBD30AA8F5B2BE8C21D79675F359A576DFB382A25584B512 +5F8F75A913785D877D4F44FEC237704E08CA03EB9C203B92C664F0279287E1F2 +5B533CDDA58898CB55B222701DAD14489AF0FEA3B78CD90225A691CBD75C0727 +239A26BDECEE46F3C14350F041E7342DA954A27BEC04753B00C3FDB19044CE69 +0AE6501EEA1DCF0BEAA9648BB409FB8FE84069DB8A657FFDED9EB87DAA7F403A +6B8A845FC371159F0D61B7E16B02958BA83061A3318B84A38893E07AB1EE50F7 +9D02F521B1F32B05125A0E6A1874EF1C298CFA89E4E9ACC493F6F7F2A9B14AFF +68665DC4185E866AF3AF0402546E11BAEE84F00259B404E6108AA053BBE771EC +60687CA432364AF973497A17AC24BCAC33A18D0D2620352851D32B891D1C458A +A6BF008D90E499E7A9C28C898743A8C4A711E46774020E8291191F138D2D847D +057ECAE805053934F62A3578158CA819DA043E21AACB8E006F933B062CDD61C4 +8546AE2C9AF14A9345EDE13A9A87BEA32E03F5D4EA114A54732B9AC01A0876BD +90FA43417BE7BF44A7BA61076B20D2BCD8218B41EB6D5A5CF88394D40F9B200B +F9BED4DA94442FAB21B33EBBA13D3AC4EF13147DB53F27AE47866566B32CB8CD +BA21F5D47CDA6BF2CEE32749C91435CBBD8C11ED7D5E51454BA91F4BEBEB1FA9 +873F0804B6FAE30226AB9456A444619303EDCAC59B87CCB1E32A1E4F90C185A9 +C776772BCCD30F158F572CAB63D6B5BA0274B467F52943EBFE30419AE757BE83 +B12E45D5BB98F5BE982DADF7A9E73E43535F93423357142EFA130800802FE741 +EF7B33A186FBB64726981104AA3809FFDB177930FEE85467FBF0CD0870270F0F +4054CAE7432E3AB21374A702BF415C92AE3F02805774524932AF1F57CFCC1F10 +FF4E99574DE91D69D930DF50D8D566E60C29830A8220E1BEACD02035B0AF538B +16D86BCBAA9A1C6F4B898BE1CDA222A1E64F14BCE6065F68653EFF251CC20BED +840727F2CCC9FE6E6AE075C22E0ACB7B9B7D969F5DB094FFE231AAE05CB26627 +D017264F5022E1B00CE037E54B6E1F589D5884D1525A3010F3453AC83F953EC8 +65CBD7AA642BFD158CFB5794F199F021CD0BA552C5C77FA2625F89B714963380 +56DD5F9A53A440E9677C57331BE3961FF4F8D0B3372CBC39007A2E6BF307FBF5 +F2008ABE101AC4DD5D7ABCC9C914D112EF8B55DB17C23BB842D4C6E59AA14C69 +045D2F848824792268C3611F8743FBB66B83A0FB413F528D5160C7E9F6F96730 +6CBA193CD0A44EAFAC1098C6B3B663C60C8FCB4CFD79F70CF8A887606742CC71 +666E028599059F5A86414E0649446250DA3ADD52B73FD02630CAD8F44895A9E1 +571A16E331CAC213EF69EC4DD48701EB3B456E72303AAE727CB5E8A87BD6D85D +EBBA1ACA570E083284C80928F04EB1FE18592115FD1AE307CDB81A67DA8DBD23 +24FE7A55D7AA015D742F982E6A8140DB2C438B3B08EFB88EDB3F1D471C452767 +DFC4A93054DCA315660B75D73F03EC309AF1F996590FEA9096BDB2130AB78F05 +685C4493203EB6249B37296E2A52FE14E2E2D79651288356FACAE99EBE00A272 +471DFC87BCD5D3DF6023872A30578AC224DBE2DA01CD4307DB36449D0F950912 +8DCC07E78011AE57EB79AFA7317F3C6EB7AD57E985020DDEE979F723E5A9DA15 +96E3E38CD2D4648608FDCE3BC63BB0267321F5D777E5B9F5308A9CDDF298CC40 +59C6FA2E88169F97DE5D1024B06A39C80CE6B06F6441F091C4770E77BBF617FB +F1572802B380B3E2EB7EAF4D2614398C04A3CF831CE98AA3C6C4AA46E9017521 +82CE678B0DC236840E6C4A68143B4A73A5739079126DFB21E4562C904865D34A +C735AC6C743407A28F9EA44980A1E8F6E275D79D561F7A01D972BAEC53974123 +29A0AE1E6F12220AEE98270C2CE772C29D810099986958EB4EC88C67AD417D79 +C9339BCBB4C543C6037BB3127EBE69F67127354FEF2414F313FE467595D35D76 +EC0E8DF1347D183BDBF7162FC129D3CDD544BA5781C1BF739E012E3B9D69C08D +4A8D0ECBC8C1E293FDBCC87B6215B4234A9BE59009268B8A0FCCC3F1A53833DE +EA437D980F2FAB56992BB63E65F8AA4934E24F21FE1932E50AE836315EE4D018 +7C80A30308C32393B8EA6857A00A341B6AA40ABC940E40351DDC927BC47A239D +FD8824F52E7F9D2242F2C9A5BF7CA2379BDB3E4EE84691F7EC843855D541FD9A +D444295F2858933FC37F8317E74CE4390E3EFA1EA9529C40A59DBF09978C869F +38713613F2A96F36E1975EE2FDAD38E9D11E3493953E412BCE315886C30A8423 +45F07DAC4978CA55B1CCB2840EAD2EFFE33FC1A131525CA597AE1760A996ADBB +905CD27390F03B055FCA67D0086E8237AEE970E6D536CF4F9C47798D7FFCE062 +0E0243A53583712368C4C2C7CBC3EE90A3ED791DFB6E17D5DA27D093AC69D5C5 +998CC1742BBAD810D8767FC53445A8213C56664A25091BBC59F2F5319D50D71D +D127DED73ED729D0EBDB30757211B5709EC713F40FC51D556F955CBF087055C9 +BDEBC46FC88BB52D4D638A79F484447D5B69CB603C0DD99F7924C163E19DF472 +70F6B6256ED78C81F67AEABE586D9CD47DE5A269EDB573E853C5F1D3C8A11234 +2F87C45FAD901C2C0F1B085FF3AC49CA1867B4B61475E02F8402CD8EF346C930 +0E0ECE54A79FCE872B2A87BD61C7022898FDBAF2595C7A93C5A75E2ADFEBF3C9 +05DC814982B1676EB6EC2183002BD230F7C5E99350CA686D75563EAB3B7F2C05 +6E0ABEBCCFA3BB0DB2AB91AD0807E9E070470B20AA602D7E7679AFA5CD630668 +86E27BA2DA58321D818248F8CE0BB4688EC0771FFB308D49E43C9A102D9F805A +3E62F2DC9175DC0DD158F7D4F25B2B5D3086187DB478488FCA508920ADD5E754 +79DEAC39AE797BA437BE6354C526D89B6B4629EBC1A4B8FDB4A51A7F64C531DB +9E127212E785AEE8414763DF731A2F71A9A56533A6C341B0D00CA5D4A2E3208A +F820F6241F106725582702034652AABE47A7A12F4C0581E5877B6443634648CC +DB056D91D64CA82EF87BA5810E24A8AB39E463C25C86AE0B890EA2DA6DC75246 +25ED1C8B4EA60347AE8518D147CE9D306AEA3BD12CD4BCB4EB720F6312BD51E1 +2300D272F89BD7216F34C2BD0AF45B298AFDEFF2E818ED594B672B8249BC117C +17AA4B1DE98B24F2892D80B7836E9DE029A15B399104223E95474BB850F56112 +FB110D4499C0F8F9235F5AE9391121E828F8AC4CDA9DF927ADD8CABC4C764501 +2E6AA28DCBF3BAE8662158853846D35F0E9098D9022CBC59755D937F65986E92 +E49832570394FDF9B09D147458BBCE719F5DC1C664B2E8814A28BF423B09E969 +B9740AE9CD56D40BA076C804B0A19B0D0DE2D5FEE1B225CB8C7BA29C8E23F544 +F4289C611D644096A57029C1140F83669643DD9A15C4092AFD52640446B7F987 +EA7A053C5E16055A1CC87FEB711099DDAC66669048586040AFC1A5FCDC08E746 +40A7D7A18AB3356FEB917B899BB181BC0BDB600ADBDB083BBC3651A7CF2F1A70 +5818124E11ABFAF291979900C1294C322318C8E7D5910328150C771FBA9C163B +24B9D3569865A96F90F53817F0D51C2A78F4907FDC024947478F25966206CF1D +3D5B4E33B0E3335B2F0BC6B00006CA3E29A14F6EADECA0DA653DE1BB0024495A +6E8BAF009AA479931A5774D3DCAB86F57DCDA1EFEDECD3DC06A2148CA2AFF333 +2168B0D95456B540A5EDD1AD8D4E2F4760FB89D5A9EEAC9EA2F065BED3470AD5 +6018003BD210C5B7A4F776CE21BA674AE85DE8DB08D6CFAB2C7AD425BA568CC0 +5F5A4B9A779B59D89BFBBE7AC9829C1A95235293082C4C337444BCA8B5243E0E +9892B502AEEF51E4FB3B04BA2DB3829185737C5EB6F81EE3DC0F38A6C811CD49 +222167DF4DB18E5891D03B7CA0CCC158FA60930185275F34FA9D7C475EA55ED1 +C8CD3ED102FD8CDADC37A7A4A29D5BF5A4CBF76358E0C9A242A932262AE4F981 +914981E4627673373EA4D50165020AD431E6F20FA2F5EBAA7E7BFD39154C990D +26295C7E297FD9CA462E6026F687CF98635F88DBBC73AD3CDFB58B79575B7358 +30EFC98156AB8460710C105223AAB95D2A2746B17E12C3C17035AA14E199D26E +63A4C61A330FA751203A7D6B54B1BA0FF9F3BA72DC2BF371F223FA759887D85F +B602287B10DB45CEB4A0109BA5DD23859EF63195813B41C0BD957957A5C03A51 +599B937E9011729E54C077FB04E2012E2980B305B5223DF499B992F07E990AFE +35D2B1EA666803C2665154910F1FCC96FA32F3F0BE6B7198ABA63A893B752D3E +45E00A19E9B1FBFE9575B041E36D776F11889D8DB2DD33027E53FCE9024813C4 +778966C483590FDF429D64E7103CF30D0D85DA99517AF890302B94C2E26083ED +811F292C265DD3B3971A8AEB844A38EA4E4E3D8FAD2F119FB569E46CEC7C609E +A33B50FC711C9D8052BD5ABE5304727E8F6A01FED166364013EBF3EB610C314A +619621FD38D20F5930092392C3D019A467425BCD0A55DC4DB309601CE0BBA1FA +8097BC3004E4A14EE5BE6AAD6AC03CC7F0EB3D53384D84BC721DDBFABE451DD6 +0B6A4056EA45B9777D566BAC2B8D0760CB217DD3188258235BC301BE2DDC2CA1 +B35610E0830103B9D527662A2C498CF57A8940D824A62D6FC7445C724F4C3581 +4B233D7F665A6678154CFA02B6D08ADDE6432BFC8920C91BC7113F0D76F58FD9 +3A73778DCE0378C7E9EC5300496FDDD6A725DB863CA660C989CCC89F55012E15 +2EEC3F66E77DCFE1C5692A596F01AF15AC0C5B01A3F6EAEF +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: CMSY10 +%!PS-AdobeFont-1.0: CMSY10 003.002 +%%Title: CMSY10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSY10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup +/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMSY10 def +/FontBBox {-29 -960 1116 775 }readonly def +/UniqueID 5096651 def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSY10.) readonly def +/FullName (CMSY10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 110 /backslash put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 +7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 +DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 +511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 +1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD +028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 +1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4 +3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021 +91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2 +E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A +11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97 +C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857 +D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20 +B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3 +93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F +10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D +7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF +B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B +491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB +F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6 +019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6 +915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36 +356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0 +5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D +9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64 +3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1 +FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252 +720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5 +D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726 +BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5 +7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377 +DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56 +AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7 +A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E +0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743 +AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18 +CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023 +0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD +5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B +5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F +E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB +54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809 +E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F +A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906 +4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378 +4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4 +038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4 +B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308 +5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC +B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837 +A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD +2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D +CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246 +455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE +FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03 +16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C +16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F +483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352 +67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2 +3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472 +1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770 +93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA +051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B +8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4 +8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436 +6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0 +06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7 +84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0 +D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6 +DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB +0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD +8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC +C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34 +754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406 +1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05 +CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523 +1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F +153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02 +905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718 +617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2 +8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A +98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278 +53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B +888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D +052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A +CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501 +A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F +07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56 +B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672 +10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2 +CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D +3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12 +D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F +849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16 +648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE +84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA +2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD +2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204 +9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0 +B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B +D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7 +135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE +EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939 +C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782 +7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0 +4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2 +9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171 +050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486 +3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271 +C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8 +843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342 +CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B +B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50 +3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175 +19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946 +FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0 +17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6 +8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B +CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003 +F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194 +1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E +4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194 +2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929 +9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593 +E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB +8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB +BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027 +04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5 +C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404 +ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C +4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909 +84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6 +C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6 +09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777 +D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503 +56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF +035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB +FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333 +CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663 +B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A +F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD +CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B +0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C +B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9 +33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6 +4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D +F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E +2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A +CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5 +88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37 +17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0 +55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A +A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50 +2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3 +406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8 +AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B +60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388 +C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6 +5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50 +822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E +94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02 +D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA +343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE +894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5 +DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327 +DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F +8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324 +A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA +DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270 +E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947 +DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC +4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653 +5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1 +02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8 +88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70EB02A +60651FC2E263002D3986B7B20CC2AA08330B9FC2E26765CD52266969A86EE30E +71E0B41B6C1C6DA423D3A7E1553D2FAF26EF40DC183099322D362E4965695C52 +9FC3E5BD7ABD743CDCB717DB10372A722A39CE53FABB454EADE2179C4CBFC016 +A8E893C28EF549CA1692C8D8ADFC471DCCDE266FB4E97A1F3035801F3F034D44 +AE6ADA0192657E8078A1D27420093FEBA111333314658021B90DA4E7A8D4B829 +F1795501020D5FF0AD25584C1D4669353E1273F51A39C279F1F8EAF073497C25 +E79996A530100DD40A73BD980338303E192978236F8EC6BABBC8E4395F99C2EA +8DBA2BDD01AB2030BBB19C9AA104BB96A1A8BF9C25E29269E77E5D6805555B2F +05FAF95D67C87108293EF4BB90A5C2575E484537FB203249A03F54D324D3C4F6 +62104C8286DB7C0FBEF9AB2A75D8A17CA5464B417FF0DC1501E40B6D9A226919 +145F74A039B54E80023BFBB07B71967C420B23004C4CDF51A94DE0A2708C7957 + +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: CMR10 +%!PS-AdobeFont-1.0: CMR10 003.002 +%%Title: CMR10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup +/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMR10 def +/FontBBox {-40 -250 1009 750 }readonly def +/UniqueID 5000793 def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR10.) readonly def +/FullName (CMR10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 45 /hyphen put +dup 46 /period put +dup 49 /one put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 73 /I put +dup 79 /O put +dup 84 /T put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 104 /h put +dup 105 /i put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 119 /w put +dup 121 /y put +dup 127 /dieresis put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA +0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 +51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 +7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 +E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 +0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 +C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8 +569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079 +24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A +2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944 +8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E +3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26 +D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24 +D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B +03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685 +767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A +8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B +DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E +94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004 +22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7 +72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C +8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491 +344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A +64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B +07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC +1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8 +78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51 +CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120 +7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782 +BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462 +4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A +5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D +EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE +EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622 +4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE +0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5 +C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904 +314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E +DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029 +EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13 +DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E +DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084 +7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91 +1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155 +69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE +EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5 +7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67 +CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D +38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3 +22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C +0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1 +BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D +4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F +3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD +B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE +15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9 +849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3 +FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84 +4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76 +1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798 +84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF +7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122 +CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA +4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B +3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394 +F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D +F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140 +DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7 +D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886 +56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4 +8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53 +59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED +49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86 +87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B +8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60 +C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342 +D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64 +D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1 +F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178 +0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B +5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448 +229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC +17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4 +01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616 +F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662 +3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0 +689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20 +4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F +A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03 +DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D +364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F +7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F +26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1 +43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD +8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7 +C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08 +94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5 +C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1 +B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56 +4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5 +7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01 +204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE +B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56 +7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6 +279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB +E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346 +CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A +65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78 +BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285 +6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7 +B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3 +63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89 +4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A +A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6 +67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C +DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A +5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9 +C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C +9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D +B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51 +963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0 +D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB +B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B +72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE +B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358 +8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB +3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0 +668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152 +ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5 +69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118 +C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754 +3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13 +407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01 +11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF +2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87 +4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40 +2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF +9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889 +CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8 +DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973 +0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362 +5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7 +9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A +EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2 +09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A +2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2 +AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420 +324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786 +486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A +EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660 +52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5 +9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3 +4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D +B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7 +BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14 +6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0 +B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359 +16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED +E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6 +546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED +6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507 +559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B +C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A +ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354 +04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B +7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A +8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B +A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02 +94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB +C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC +41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654 +7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5 +18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76 +9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD +E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947 +5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F +4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F +E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF +9F9EC2518C77806A19730C97F54BEAD10B4729E5749A10EDBE644886443D1249 +2C8517DF8D8AE98E2882439FA81903941B363A7D885F93C6DF9E1FD89F2F8CEE +B870C409ED13E78B4C914813B0A01DF8F876EDCC4F384055FD37C575726AD69F +F23D50EC5BEE2FB95A44F2B2E2DD94C933D90BED2C97B53738B4B2ED56EBE617 +BEF17B9DF4F314A37F10FDE34C570D7BE76A496A58242F51E7321380CB042424 +855F4B53071DF5A0DA5A31B8AAF9FB4F4C491625FF8FD008BD4402918043BEDF +77B840B2BE0DAAB4EF904FFEF935954AFB9BD2041241B1BC8519EB642C89E288 +479664226DBB6F1171F9EEBC7E1273D0CABCF6B1BF7F26AF21C21D9B1B916F4F +603DDB68D3614B86566FC91D67AC3F4A4A96E256FA1A3BD35F4465AE4EC64D82 +34BEB4BBDDCEEBD9A89D932E55F14CA2776F927C4FD3E0920790A57DAEA08C5B +169A3E2309DA6BA8684A5D1DEE81415796E13DCF906FCDADB092047831B16841 +B250CD148557D72DD7E683BF122B38E2C4F614E59B395D1D9823D7D5F126D932 +14B50A37FCA7120F8F3A8E42134F1B6B0C248D56F247AA68FB941839F600F61C +14247EFF780BBA3E5198D37CED44DEEC3455048FC451BCDB48DC414AE5293A60 +5A59877D6DFD21EAD729CDB7B378CEDD34262B37A194EDD0BDB24AA42649375B +491DC08F6B03DFEB517B2FC125DA9373AFAA94F4E4BC09510A73E079F4ABDD8F +93529E898B13ABCDE7322323B3A2A02A0BF388E89B4F529A66FA22D38E3EE342 +54475A1989BFB7A119CF95750D5A18BB4FA9CDA30DB6F1AEF8AE8448BBC999C9 +FD0D74DE9A17A3153617F07CACE92977B68FB5A1CFB29FD42494D5D2B9C1ED81 +2F3CCEEC1BC079E837DDBB57C7E351F9925FB96349F8D9786D8E6FF03E9C4C1E +67DB235577B68003BA14073E2702296B284F803259283005D97035874D2B9AFD +4D3F29B4B1E6EDE30DDB9C68348CC174A091791FA74520C8614D4FB1125CBD6F +B9367559D715ED057FDF6DAAC180C7FA5CCEFD0C5878A91B20D4919792C03CA9 +3AFC986C34C08358A3E85F241E3F8F815FCE7C8E07C2A4258E17D65823264049 +3803D47C96A2745580EDC957AC4291730A840A2BADA50A28342A2B7093A3F731 +4F4F656E974389E133C53F89D5DD6407BB98B211697941A927BC72A0956FA78E +2DC624B2C253F76778698BD1510D509244AB0462BA8E80769A51F6D020E146C1 +7EB6D7207653B80610F8896EBFA6A606EFA54791E78139918C010A404BAD4B0F +F3779D39D31D665C528290D1D4096CF7E65F18936508848DF4DBF77A197944E1 +DE53CF98DD5008E84A4BEE48C971DB9586980FF90D4AA43C5277C1676D4A6896 +BF3168664C7F31059AEF729BB5BF404B88965F7094345DA4F8535C60FC1FC946 +4285EAAF493594567AFB161F8F98CC3027FB5FDF901190949B4B6A3297C8DAC7 +3355C84532F7A083D5DDD9A52A0E8E38C858441CC99C4FD0FDB0357BB5233F3D +0F6212F013072DBFAB7C061D56CE72CB67E59EAE0D87FE8400FACF1F3919565F +1D434F1B0B6E1EE0AD2510D6B21D5E44574A1142688054ED5805F3788325FAB9 +397B4F558005B5C6CF1EE514D77041F132E00B13A76A105AB3EB6E4FCDBCF1F6 +60E8262CD10AA45C67562303483314B5B0B2E7C4F285F9BD614A00DE68255721 +89A19315AD384AA2957AF8F20D293F17F5521D3311F85DC40CDD29AA85AE61C5 +F3A6A112882F7FB92F190B2F10903EC9AA11B02A8239798483CB105A78F53D62 +AF3EDFE03A794C0AB1BBDC245B04E8BAD801177B0EFA57A1BEFECF8CD29EED55 +75A3EA75909A28E41A42AA4CCBAA4F94086AB50569D9728470C768F2CAC7140F +6E4E141EEB1D14F796AA6D036117EFA78CBFF7D25EBF1E4DEF5F9EA103CD8FD9 +A3278AD3177806EA98CAFC7491019DDCFD1C34E6D4DAD24892A71B82D94243E5 +66DDFC314CAE502517B50069F984BEA9E7BB776B37107C5E9BF929823F9743B9 +EA2417E3750F18E1F491C658037300F1E113F01439C816B4FD088BD3BE37C6AB +6CA38386B188DCCEDE505281359373DC0A0E0019488FA5E8BDA6B7781682CA84 +F36DE8F89E9E4518AFFA65334E2C3A5C2E1325D4FA189E4CA00F948D6CE6FF54 +9C179EE04E483F5189130541860067A3119C3639A44BD7A7188498CCCEF4F408 +A3CC51FB47D0B21212E708A32245D8E2BE741D163595A84381EFE64A06F69632 +0EBEE4C7AFA2141D6F120889E3ECABC3DE478C3ED3C150C391CC4105490C9078 +B127D142CCB6C1B3C85976113EFDBE4F7F321B9AC5E0FB1EF3B021BAF474A9CF +A2EC28FEC13422167D2F49D7601A570857F590C7B904D64166FF0A87986CC9B6 +EA75BEE378B8328ACB3A5021D490B3C7065CE781C378C1F01DCD70EDDDB83F48 +A61231C7BE4C83A0765242FD2E9ADABAFBD771DC29AFB98C6CB1BC8C83ABCD97 +10B607C6C05D7A56A704DAAF9AD3AE67DA3476CCE84832BDA1B6BB5244DF4DCD +65AB1C0EE6C6B0EA56507C3D9DB10BA62284CC1676852D451DF2CDA7FFE09897 +138C27F7C6BDD27B3520C31D398026730C5AC6998DD218B92FD4C8C69FC7C0EC +74993155CB94633C9CA2925980C37740F766993C8EF1043A56F6453B862F196E +BD7415B50090D1A97A1E290D9E1774A095DF0B82D0D20D0E8EA09BA0D93D9F8E +DAE5DF1E8080485344206AD6A9B214C02A57BB9900646AE4EB85A905D3F9D12F +0BFD63D823161186FD0CCE3AC40A86D14B2ABBBC5EC181E3F95AAA636BFFFAA8 +ED2789F734A9E258AC19F8D91DCE22B7229605912110D3C88C27E32FC0C1E0FB +E4E6253B00E17AFB3A56E80E487B1447B00CFA3C6C8A500C6E34DE1AB52E24B4 +29285A06EBEA61BB134055B25332C4F2AFC4CD63E51AC2C563B89563D0254194 +DE000681912B191666E7CB012428ECD18DDA85972F4E252C25D22B83076B723D +FC464F67B2BC065A56AB23C6A248F309DBA2E131A6EF79586E58C22B28FFAF47 +5B59BAFB5D54BCDE67B2D52CF54D722A8DD65A69B6CAB613145652A976CE4D39 +64D60C0859891F96E2FFC98EC71CB8627476F971C108F5616E20B6B12B517C95 +400FD210006D7C81518A744CC70DE55F76AB2428202F64636BF1B4050C143424 +1EDB33B6F1555CFD821DAC359ADFC8241D77E2E639514CB1CF6E169312544A65 +D68CFF6687283DA001ADD5140FF92C2A4583000060FF3717E66736B72EB97C4D +B5A6B6E1AF4FB0AB0CE7F517E28F67D1FC76296917E1B91F2C07AA0A48FA9399 +B88722B1A4A755CA4825EA272C1D104A426AAA391D9125ADBB46CF1015357611 +A75D9D098A27F61719BC50DFACBBC89A3ADD031C747FA6722534BA34991AF3F1 +BF309AD264166AE4DABEAB56BC495DDF63F51F7F49DF8FCB5BB79C8D01A8A9D8 +C19AF84132DE8F5BEC0E4660654B502F46D4B36A0E52ABC788644066DE41DB8E +BC5039741F62FBC7E022695E2616AD42CA90D225A8B0B85582D26424B74C146E +164A78957817BF9B0F2BE120B0C0F663659BBD109420C6849592A3376F58135B +CFA5DE0696385BB0FFB6345B70A720C655CBBFB8E3BFE02486371A0ED1ACB555 +52C3342A01A2C825D685A50DF65F2F9D27604F3F841AE34448CAEC9C5620F73B +A0E13D41CAD8B041D7B68FA7946BF6545DD7B4C68A3F79464C1D64E30219493B +2267C4CE8D70C1DB3A6B32B70C9C0A69EFAB858FF9D52DF1EE64CA7541750A5B +0C8A64DBD11D7A52FDFFE8A2AB92BED886B0533C7A29452DBA1FE16FE252C76C +2147179049E4CC03E5301AC7B4A3EACD5C0C215C3A9C0762A997502B0A338A19 +94D371C31198073BDEBC7CB5C9DD3EC0C33B5AB9DC0E63EA214DC576A11D1E1B +9627FB3B5E091A7C7480AB572D86B3483BF28CE1E4B2F74315016D0E2D277A75 +7DADBB5CFE83D44CCF99699BF548A45F42602F075F9965585106AFC9DEC1F5E4 +2E8E625AA80C1A23EED1027787E23EA1E2B6674FBDC70D0869D9A1D2956BC4F2 +DF997A23D396EEB029C38CF7C0C775C25AFF4F50761090ADB3C570B631575B0C +99E46BDCAA4B6250238E5D9B07CAEA824B4106BE1E86015E6509D45EA4B7FA9B +BAF2F6E2212876DE010F4F42EFE163E4BB5C2EA8BB7DFCC55C2ED9F1FCDEC32C +8FA5C996E011DD4061E9E4E543141EEE7BAC2E59E2A70FAF1D325B4C3CDD7550 +1AB42F0A7A5283248B42F9C6E8B777698FF688E55246127F4D63B4DC5DF2D690 +76FE80C695AB9982C18D48E647518EC2B76EB697066953C3652626890FAE9E2C +E05BB5D8FF563F6431A56CA3B3BB06FB222134A4F3273316F4D813AB4798649D +D6D76640E5267654244891ADCE677A7A599D22835082A072C3772C95424FA45D +F7A2553E5CDDD74FA70CF540AA72053645573A5BC1D076CA56CC148066671B08 +623163ED2DB63672DC00C6B2F3A90103D44035E6C62762F9D570EC180A074BA7 +5FFBADCD2898CB92192D631588C208C30573A8F7583EB55AF909494F65408672 +CF9B4A2C471DE1BFACCF8292D4EE0CFC3DAFCC75CA917207D7FF60FA738D4CBF +DC5A9D10C374BE5D3D04129C5377CE1DF8D68F276989559C2583C6196AEB4557 +1CBFA629E30DFF518EA89D48B607797221D94774689E26FF5F85C498D1AF5FDF +B24415B519C99E67F653CC52B83A5E6AC4CB8529822733E26DB40148B6D244F6 +4B5A75F275288D9F8065FA60FBA29F8B19E467C418CA57A6FE618126F3ABB59C +6D76CB7D7A8EFA3C0DD4AA65E4D49F8FE9F3E71E95ED6677BDEB1D2223DCCC48 +9A83E589D293050C20847A3F53178A895AA780BE8D374A8D48A10B8B0B3D066E +BF6E6D9E8908EC21DA73E6EAA222400A7C729E04FA077550FB80F5C19CFA1A1B +6A9B58AD9C2F087A730EDF4EC2415991D7572619DC7341ADCD7839C05E1F4251 +3DD514ECEBD22658FC136B3F6DDDD5CBCED5DDA4C5191E76FE427015B2863065 +768A4FEFF46C68EC7F68978C1D2C23C53EEA6C845DE21A5DE77DC935D2A4514C +8A3E9BE93CBB5E16460FDACCAC0E425D93E6D617443716C6721F2F119AF44640 +83CD0B9D7E26AC928A0195F0196BDA8F68DF53B5D7592B4655202BEF769BE4F7 +9FEA39FA1AF47223B09FBF61601636E76BCA286EE0BCF5B1923AEB3F9FD0ACDD +3BB2526A8619175D1430440DBE02AEC0C24FE51276C4BE36AE93A54D8378D3A3 +227061E257DF285EAD467904A0700AD002E718CABA338D2CC52F2483FB1035D1 +D065C64DC509EF9B4747EAA3AF3A02CB64EB6E55D3F3C19B8735BABE26852C6B +EBB2E4D8FF77A040D1D5959E701565ADEE7E413340F9451C55B0575E3B18090A +2C28B3DFA6B043BD1EC2A5DC48402479F24D630D743EBE9569A4A63CF6DD9670 +E335A22ACD4E09900E11BBA673EF677A021AF4A4A5A1CC56532245117DF5BF0C +4FDB0AE21F56E04C0BA9188348611C0F67032F13B6D6E404C8B3D473496646AC +0D414E18885768F0D65AB506BE36667F54725E5553D664A5C2E9601026989EB4 +7AED1F81FE710FA3FF3056729069590C030E702B9179D0081BBCA6398EE8C01E +E01766D5C9CB702C4960FE23C4A282DEA36D96C7E906E0060643D50C0C1A5169 +CE7FEDFF384D793DD14D9735C04059058CD3226579DAD72467CE95CB76E9092A +42DF6FFB6D567AEF67B1BE359A6BC569830B4EE65BC7832CCA23979CFC48EE25 +F1F477B8D723C0FACA8B24C48D1A7320D6DFAB3997F58A4ABA7439F7AE6C73B2 +CC29E7A7B8AD6827647577E4A677A0B41DCD206F45D6777A55A864D1FAF919B0 +4BB0BBC5CF40264610732E00DEC68CD355F0027C683B5109110297EDEE6927D9 +0CE70C98D22920074B1DFB834413F6EF3FF1C9E1A758A6F71D69BAD93F473672 +BFFE79BB6D990B1899CE3ADE0BBEEE40A78BC517710DA66EF190477B360AF75E +8DECF1BEBB8D623169CCDD278F86B41595925FFBF10B4B2F8D7E210B185EDC9C +5E14D78F42FC0BC3A3BC8A6171751C35BF5DED43219DD48407BFA8AF992E97C9 +8E622F68EBDFB1A9358375C8CCEE0034E692A3A2A74441FF6949A8AE17F5682A +F09410E8BBEDDAE83E0D579C6A572DF98723B91C04A2D93DFD09254A4EF1EFFD +230721A13C655F2A0A7FABF796DD3752EEE89C4E066A06CA74AD7C3D8977AF6A +577DF17CDE2EF71C47799B026CE94B611441229AF08692A9EEB18F3E2E1988DD +75834FBD9F9A692DE870A5D43A77D677A3D0DF4D0558FE8B1C6EA0A8FC77F948 +4317379E4C140CB28B5BACB7F29AD176CBCEF1FF96A492130ECBCF5BD9FE5AD0 +C24595D9EAE4A4BE1F8AF27295F140207CD1D4BFF05BEC897A511F0273EB7958 +18AC6909CBD5737063B9D30C9BEA261FE5413A4537187ACAAE0A18C0EC6D073D +0CAC6AA417E1846F12DB12529F983AF7F805F790CA533797E9EAF7C2E8979AF9 +933CE692EE74EAA1CC4657FCB2552C97BFBD1C6CA771AE7362888840F011C136 +13B261332ED0F291B6CCEF9C5F3F766C8F66BB7BB57493124727F254D9F0CC1B +550CEF604C5B2B374B2CE757ABE19925372EC679AC3B78EB66C0B1AEF5C6AC3E +633D475BD3411CE0F5B84A54FD9290EAB4399FBCC2FABE659D0E0D342B80DB6B +AC35ABE3BB6B80FF87DFD311436EF6F268CC3823181136558B6F48B8A7322D77 +658A9C2FF41DA157521FD02E22F079E32BD23E408766FA14A9CE1C65F9E73D86 +723864E3AA0FF74B367A46A2306300C928AB8E37AFDAF788FAE595A7D53A9FB2 +CE8BDE68A11BB6F0BBF48B722BCB32CEFC18756B74FDB79F06639FFD8DCB909A +D5FF15C0EEE2D97EBF64F22534E4F80BC7B319673B591D649980BEABE6572CCC +50DA0708ED65E7493B006DD95A48DFA4CA2142C20AE83276F1DCBD37B6EEE61A +8FF20C3D45372FA7EACAE98C038BE4B911E31A261ED29FECC5439A70E74C4CB6 +F08AADA08C128DF35990FB2E30359049494C6ECDDFF663176654657A2945B2AA +77D17031F2007ACB9861CBC04F14896499D2303842C303C712175B1EAF4A2448 +F29CE39D0AAC14FAEEAD220C23C990D1E9911C8DEEA7C2226977BD5EF4261116 +74F54B064D25222733DE1EC50E6BB19ECB89B9DA9A937C9DD8A4C537C73B63D6 +670DFD03BAE4168EEC2475962CCF7048CDE547E8FFE9C2B251B0FA169FC08467 +53E619D91BC4342A7AB2381AF0945CE121A947C0BC2B266024F8C50FC61AA4FA +A90E9764268F79DA2A058FA47C9627607809DBB6377F97E754D39A2390EC41AE +E15A8128362D9A08F624DFC8DBAFC4DFE8BFE5C7D0F916DA2C0704D651CA2871 +1CF116750B65F38F86431FBF1AB5BEB944D266D5F353B384F0567BDF016BC7A0 +C3B36EFF6E690C355F309B449956401E90D94FA19CA25442333081AA87703549 +12304787789C4D914DF58A1255D84119BBB3A05A810D772A3C4D91EA904996EB +442D094B052223890340355062218149BE73FC31BBB33878DF4DCA0C407613AC +AEA55D731368F373A67893592BC795DE88CA748857D3BBCE909EC26CA14160F8 +CC1B6D993D358FC9FDB4E3A5BE8F0D4536D88995F7A2B4F7A8F699ED497E150F +D42E71B27697F18AF7B74F310FAAA432CF5C296137A73D39E54D2B9C55425F61 +4BAD5264C4D687BB9D3445564FDC1BC7D9D4BC48CC05727B715833629BF11F0C +CB9CF12497FB056B0D8C182DD9A22D714A163C9FB2DA05B9F50970A55C9E714A +209AE43ED2EB788736A65A4FC3491455E1971103E89A0F7DE43CCB80C2D082D3 +1653BA483F993AF8BEF36ABF3FAE136A4232F93948C8B32F8A2519F45655E204 +AEBCDBF1877B261DD983F9FED8301E3B57DF34EF84B91A9927915D64F979B392 +A5FD1D2493933E57DD346FF2F9527EE44DC83CCD632A65407A5287AF794DCF6C +ECDB895A5978262BF5A7371EC55CABE222A81F580668A193120D921B2CB7761B +6E92869F97AA77326F4F458C6346B97BBFC1446B854DE5D7756A9A0F5DA6A45C +2A5EEA3DFDD8C57B1C79F65CF17AEE04F9036C1206B3538FADC1CAD903C7688A +7991C53917ED97366571FF0E6C77426C768D4E57171FB4D464644727B8F998E1 +54D269AAAB71EC012A3317EA1244CFF897600CDBBACC1D53612DBBC5FFE09ACD +BA2493DD2557D48657DF7C4512CF63D6CBA9616A190BBE6D1E4048275B5A9BC3 +9BA504E26069E9806BC6A845B14557E7038AB37FDF212CE86C636D6239DBA113 +DB150CB5678B2701F1C90F361654A0CDA76B40AF409D442CAA20BAC3BAFA5B9B +3B17EA86675FCB22B9187B0ED28F824353217ADA0E0B9F61E79179CC5FF25BF1 +BF2FB24A490EAF99081494D29CDA270C893F40404BDFC68FB9DA63A231D3379B +9F9A3873365CDF9B6A32D842D26659CAF48765654F05D707042586DA605BE893 +863B987F05E5F0A29D32C13134F2337EBA7EFC269BA7B2F041FF542D36F24D39 +F71F3DAD9DF9E74B91033BA8B1FF01A3F3A19686B5A5B4D05DB17C137BC52AA1 +6F4AF7BBF819488DEBB5571775A7758727931366900E52AA38652FA92D97690F +49DEF882D78B073FE10BE9D053F69949A848A8EDAC11DC0093B331E87BA94897 +7491A5337712718E46A0933A3E2677C646569CA16BEC31E5CC317BF49E3C7203 +D06A30719B097B45CCD66DB02F041C946C8EE77B62702F4E7E5AFD05BF611E9F +F64D6C9A5E948C5F4B4F5679D14032F3F4FD9D4829EB63E3FB8B4D4165FA3919 +ECA69EED712DB0FF3A74EB6F5389499979C3184C28FA6BC25577C1D427AF629C +E597D92FAAA099DF37BF335898BD472391D2EA707CD0C32DC8B6A505D4A7740C +F3466D4BCEC6361673853B40538D9F3E28C5CCB3DD481183EA39C3A3952C26D8 +04DE8422C10E5695CBDEBD3BD748A93C7DD772B5597BDDA47A7515832770D0A1 +E20E3520FEB8B60A8A727905B90DBEAC81F8E0D9FD98421BD18917E469C32498 +B7A1D8F18400C2F6A81A119717245BC7D5BE7FF27274771A1C51AC83CD2D9616 +1EB49CFB56A486FCCF47B7BD42245E82282ADA3CA2D6CFFA1834DEF4AD51FDC4 +7065B4C4C56944521E76433C70447C7107EDC136BDBE624D88023D8754DFB982 +53E5BD12B30E7294004929956902E661F71EDF9CAA53AC43D49401ACD313A93E +1141CA49EF4361FF6DA3A6A368F0577776C32FDFA3ECF53475312691EDF12966 +BF5D3C69B2B09A062DF959625C841727AB9AB4353CEB13E1A06C7AB416133FC9 +8ED0904D3ADEB8F05F9BCB66C6F04BCBFBCCFE25BE89087C85C615F9F84F4602 +9C72EEFA154A2BE435FCF5D3DEABDE64B793961C9F06EEA3A8902B444167A342 +539A76A69B4D5F6A73B7124871AC35FB846576394A02BBE80A38FB388E310DA3 +63EFDA00086DD59FC21875C34708217055EA38968F29D6CC98B3D959240E4853 +25EAA1A6AF9588B78A0A6AC574873B6C3191282D4F3C100955052CC8A04E8FDB +3843F31781E71838593BE39BF9F177F9BD9C7300D3C2260F36308007E6BCFF2D +74245E0F81A692E3D37CAE4FA2CEE3EC5487903B23773823D50FFF3C079B9F90 +CD01BDC9F4FCA357233D3F059F7D29C2F95D5F0FF4DEF948F5FD5B8E04D7EF34 +198161813932E4FC9B7FA50E9AA356DE7602F908AD71EE21391B3CE512C9CEE0 +C1C60206A5C6D9CDB4EAA65FB654B23B417DD407BE99773A43545F01F05BF0D8 +9EB1327A7F0A00A7519D03F8872F4D2280E243656774911D679FC88D10D253F6 +C8C1E034CDED477724FE4B13A27ED520DB3BBEC21C049211BD949537D9FFA189 +3B0270924ECA20F20EB9FEF641F9251BB140CB1CB36CFAA76479B6850510D52F +A1E533845A1C7BB9B3BA5A0BD04FA76C03ADEF6AE8B005FF03101806AEC7066D +03EDAAED0352C5A3F9470946453DE958E11CCCFE17FEA412059C614A815F5D78 +D3D379783374A055EF0B0C7C4A2136CDEBB2FA7AFF2D095CDE3996C1534BF247 +E764737B814E6C39C89831A76F0EE853F1FA86C3D2000D1AAE76A47E98DD6377 +8E442068FE0C2AF3004C2DB654F9BDFF412A5B8415BC85CCB19DC9263B2EB900 +1DC907541BCA2AA6A4879A016A99EF4E1179660F9ADF49D7EF3FE7D9FAE42BD9 +B134DE6E22BD65BA2FC0904B349F192FF105F46E8B849BE08D78326A200CD548 +06C792F185F77C8C01EFD7791BEA93D7E1868E936B66E77B11EB71C7ADBDFD47 +30C1B10F097298960077CE4EF8B43498FBABB364BDF1CC74069BC1232664A778 +05FEDDB57A536DD97ADB6893C484FBF638F0535AAD005B9040F8F4C5A8985ACD +596365FC9A066E96B3096F2A709E4BA2B5191733FAA31D11B4AD30BE9BD06A46 +03DBA293FE94CF06ADA2C661A9E8EF65103980125119447003AF4976EDAA2AD6 +79C79EAF57F0819F9649FF6E829D8B403F705DB3B271F788451A5F4DB47E0837 +940E766CA6EF0799EE5560BD521390737355D4BBBBB5DB6EC9E12FD3AC9B735D +1C1A7EE65285A7293E7EC30F60462283728E2E1ED4CFBBDCBDAB4EE0BB73FB7B +9382EB082242E48E822D5BCA5C88042A7407D814D945284C4CD9DA223CD41FDA +F640E3E64B86E7A9505EF421B0588BB2746F03D4C370B13C69F7451B98B233F7 +B979D63C1C86F9BBD9D3EA06EDCED6B84C0408A7D5E8576C43A0C0CF69D7CB0E +02126074E9B3D0A580B2427F9F6C +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: CMR12 +%!PS-AdobeFont-1.0: CMR12 003.002 +%%Title: CMR12 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR12. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMR12 known{/CMR12 findfont dup/UniqueID known{dup +/UniqueID get 5000794 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMR12 def +/FontBBox {-34 -251 988 750 }readonly def +/UniqueID 5000794 def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR12.) readonly def +/FullName (CMR12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 11 /ff put +dup 44 /comma put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 56 /eight put +dup 72 /H put +dup 74 /J put +dup 84 /T put +dup 97 /a put +dup 98 /b put +dup 101 /e put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 114 /r put +dup 117 /u put +dup 121 /y put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA +0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 +51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 +7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 +E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 +0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 +C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9C535A5E57376651 +F6823308463DC4E0339C78699AC82C769542FD3B410E236AF8AF68CF124D9224 +FD6EE92A38075CAAF82447C7AF41EF96F3ADF62F76FB425BEDE4C4124E7B1E0B +8BF254D91912D3A99557F5427907A56514C5A3EB961B94112077FE9417B70DA0 +B2E1C1FA3E1D6F01D11F640CF848E45BE3E205258E64FE36AFBD4DF4E93F6B1A +966C8E7FBE2CC8FF43C1F67BF6C361678B5E90F4BA524FE8A4CAD6AB28183E6E +CA6C9636E884845105595A2E40CDBE8D4807A81AF4DB77B31873FEB221BCADD4 +2C4669459704CB58A7BC230FC59F867EEADE660E49AEEDEEB042BA9A7DD8193E +56C3A36A1F639F7EA512EE4BC6992F52C2FC82A890EFDA730105B0AF7B819295 +EE00B48F64C2B5BCB275B1DD62F289CDAD4AD9B7EF057684642FA6FA6322C277 +E779CAC36D78F7779CB6DE12638B3C65B70C6B5F8A8C6421A379719B8DD44973 +5F52856A4A29B2ED37F2B1FBE6EF4B79B7C0CD6395C756A00FACD763C235914F +847D1D99831023CE1FD89EFEC83AA7E313131C0C197248605EF5BA773D0A4000 +72F607551A8EA6F0FF19441ACA179177D1FF7B423FEBDF58B0C19CAE3C10EEF6 +3538D8FC4762B77C5AA023A8186C40D0365A4487DC3564265B3DF908572DEAA2 +57E29EC669DD72974F806EFF5ECAFA9ADF1F9D2A63087FB7BBD100F0F81C6FFB +B1EA1C9DD46548AEDD147EE64B1B4894972DAE1DC3E8569D6A3CEF9F9E46DEB7 +547E10BB2959D374A33E47C58F1B20419920AB485F166062FCCC08EB5CC9AC88 +F388F0C0155027B727729488E44CCABB7064A1432E179189C4627453C5231535 +47D1F2B8BA43069696830CBB6E5F9A135CF22D3D1FE490A3A63C088EA32FF444 +24A2427BBA63033DFE2E06DF8CE67949B6AB02F26335A376B57376814D2A7DE7 +64A4347577EBE9A6E33DD2FC214A09C6D889C8FFBF1D567032548851B8F97204 +49E215CC7D222F593E1EF1439ED60AD922D41E0E9EFB5CA48F2FEFF75AC5FEE7 +FB6676D8B8D4DB6885FBE8B61B586313E4DAFB09D94CEDC0507E93000104F3DD +F83865A2C6F6A7DA8562BF86F5DB233CC9B53391273A1462E40876A8AC2B098A +DBADD5A160DEAC061F86A5FCCAB495EF8A9D121AF07928EAFD56F618E4EAEA97 +CF89A3AFD406FC9DE1E9769C1E1EB83BB883786BC075EB5DA2692CD59C4DD7C1 +7FD2FF9B18AC740A390C1DB38670DEB18C67721A1DCD502FE7368F47DB4281D5 +459B3F020595FA3B10544AAE9EF786A0645FB7C9BB29D091E1432CD878A05918 +1665643005BFD9A4B0FFD347ADC84CE22D6F9AD4EDC05E8C7179DCB360AB57D1 +6ABCD200A4B4AD56825DC345984D9A3DE11CDA5E9EC1E5006EE4181E4EFE0846 +67D8C27BEE8F84A1E01947E945BBE988702DEB2240C4BED952E433E5305484E5 +71965D3DE95C4115FF78CE9EC18E323C599727C8B93CDFBCD1CCA780DB8C81ED +C4B5E596E1603624308972FFAE9A57B0EDB51FDDB6E23EDE2946F61BEB241345 +2A192D8CAD53E823D687F9C64A70A4B4B703291FA6317C051DC6A44BCCE0288E +3839D726A8F2E39BFF429865E95C726E808E02CD06F36C1CC9AC77999F8E28BF +CE9D74B699CA982479E9D0DD98EAB24D29C981EF0349721D6819549A39413801 +F80182D567EE316E2F0AB208068E15693E4C399A381BF9BBA625E597E6E109B8 +16F3A84C8EC92F2ADE288821092A421A8D3B907048FE947230810F0777EE2542 +29A3485223FEA079B359034F70464DAD2F0E420271A4E0CCF57A0ABBC20AB327 +0CA71B292126D395E0D083B19BEC6B48A9DE2BF470C3D01A8C3F52075BD4BE02 +A0C518355814478202FD4762EC542F8E7B9B1F7824F0554660CEB83E35635E1E +DF0D03C94C903ECB36B4948ED98B6324E0094EB1DF70863142D4ED3A932D7346 +39D69F8F044B6084482D7748C27328AFD24A3A70B99D1F7D32CB984488672254 +28B6A9E9DCA2C9FF6A1B311D72413404B3CE5428BDB7FF3C36357D7975184F56 +FA6B32AD54C37D0AF7576663AB1397B80D4E998F0B4C4F6D90B483029EF2EDA9 +D4C4204C1546EFF3100629453EAE01918D09FE104E626ABA38646F17B6A94CE8 +116BC7A8D9C319434CA5B830859B4164DFADF1D7C3ECA5C78D8DEA930EA4AC3F +59DBBF3148C91A2E807FB934E3439D4F67C6DBBA9972854E6E3688E1E0A34B74 +482217CFE031CD7B5DFEF727C3EF8DAEEEDA08F4C90289E62FB2AF2357EB2E45 +4BC547980FD479101FFEEE477AAC6268DD659E8DD9E244676FD3C6909713B71A +323B211E571BE711D103FA23B5B9AF077D84E2D20FEE805E81D20C03501F0F17 +C3B081946CD0FD577F00E50B76CC37CFA97A61B89C25DD43911B28857284BEBB +5BEC61FFE3A14C64BC5425A7A82326617F6F1FA4FEAE56071C9F559F91568179 +46369B394A5CE96FB7420FF8AB7C61CB83492FA5AE4A4B0799578594C9EA67E1 +E54498AA5CD6ABA34AD3417F04F5D8D664A7EB39D41E2D17643CAEBBCCD9C38C +C5C9541641A09335EFBCE0D276A54253EFD68141807A66F1DFEB4BEA5889FFA3 +4D20BD52012206A9F8D3E0F6AFC03FDBBDF3E51506EC6336E249CEFB571AB84C +BDF8E471E3795C04E38A5306BA6D450D72E50910D1AC385BB06CCD4B8E433A32 +5A4B7FACC976BB31FCAA1E62DB2C4FE06DDDE7367930E336B49F47DAD91C8735 +9A35D80CA2E117E86B52E41E9278046ED923454989E48610ACB3B1663F197117 +52659A9D7BFA561C7ACE0771794FC778675F83C5EDCB132AF124C7E6540A140B +E0A268836C73A3C746DC964E482E63C56C0D396515283970FBFF182F9F684FE2 +655FD8F5D057D22246DDC3FD11B77552DB4D90ADBAB77BBB1FB1592129DE0AEC +F822D7D36E52BCDABBD560B403A5C56C5E1BE789C3AC049318C7FAC5E5861E42 +FD66C3C0F46361078D7E036281682BCE9BBF77983C93ECBBEBA9B359769CA442 +87FCA1B98F4EEC4935CC93B08AAADDF355C99816453587310F08C50B9BA3D107 +5388A1F3AED2AE32BEFADF0285DA90436D1D7EA85D7B9B6DF2AC4B778CFADFF6 +6EEE54D1A1C5DEE3CCA7EFF57A7C2931933CEED90CA26DAAB45E4388EC4DC366 +B9E88518D6CF094861D2A59282044CC06E63EFB390A6DF4BA5EAC7CE39E1EE03 +3D84099F5BE96612789AF3EDED07266EF10A0FC23EA1EA97040B6BAA63138B1A +A9CB8F5DED781260962D7618EDB200C3ED976033E8967A8CC676E9C11F74BE34 +343A7ECE7EE97E8F76F7E95517A6D6163527406EF5A669535CB2BF4031F29046 +BB2D0FFFB47A576F5EAB1D00A582965C56F28C00B3BB7BE2CC8D8391F789070D +775EB775437F0CD53DA840BB3575104B63E4B0BF14E3F14B320EDEF65FD4CAF5 +8596DA491BBCF3153DED3B718F833D106432DF8DB8B8E6B34D5308C9010A5DD0 +7E0E53260BB84BAB3EA748E8D72F75901604F80F4416920D69B4B983DCDB72C5 +E9928F01A4A85954FD74578AE336C782CDF81D1EB7EBCEBFBAE7ED8AB4862584 +397928F502D65139CCD582CF0723C5262EE54B9D2B8C39614652A8A90E1C3B65 +7D26B99DA298FE4B9A7E98848F619C9BB4FF9FD215B72F99506F06355B332689 +37D80AFD9F9ACD8172CDC51FCD3A759ACA0F7D4EBB07840840EE42C2D5B8B257 +2C6DB3A7657B75F2F0B9730A20112745703E2D0FE709436CA6A5F36F59E64D9E +37C0A23D6D289E1AC1DA273872F5FC5C3DA2B127F078A4D7AB3FD7E124455817 +DDC796D54EF26A1FBFD539D3A21B86DD4477DA49213259ABB3FF241424F2BE5F +89151E02FF87E0BEE26E85C0E518D8BE7CC9214B8E9A9EA1DBB49C6C212CCF08 +90C0F23E9858947EE344062EBD9C574979087439975EAD4E85CD7BFAD3C91CF1 +EFF577843AF1427D06CB2F3BB519ED1591974218C43F0D2038665F9E2E3960B7 +FE68CD3CB2DB6B36C7997C6B21EC11CF1DE049541001FFF26D14C255E3AE862C +5A5701292FD2FB3D04523D6E2F3547923BB117718DFB6E6520F0D0B5450C695B +8C9242CC8671B7284CB2E1E9EB097A3DB1B4D5E8EEB93B4DC7E38C0A10474665 +54DDCBAF079B92EA494F6FA75A84C5AAFE280284D0823D7C22249A21044BB0E6 +4062074ECD17B62E03EDF4945A294BFEFB51F5FD870D9D7230FC91B83C1D85A8 +86CDDF326FC90E04362145D6E8630C50594484FB829DA18F5C078F2EE67D2F2B +08DFF39AE2E8C9741FA989AE494C7166F122D2C5F71B97C973B7CE8500E9F87E +D59C30F2E99CC4D34713DAB680598F41955FBDC26A14CF1E73D6BD6B9AAC8D3B +B998F2D0D647356CD236DEAD6561389ED3A6746221B0CF15D6648412B35A6B54 +6A0EF5BBB34AA376D9BAF025BFC650C1B74333CE85413D0EBB2F4D082A26A5BC +3C0A25D2B12CB159F140E00E262F1CFECCB2C802FF94CD34DA0CE9B4B3830FB1 +DA85B9B670D5169928990A2E9CC869891CA2FFAD9774E6B92549644DAA5FE00C +A5BE4F5FF91A0B6D2FD8F96121D766391EC4ED3E73DADD476B7DAE1A50AFCD98 +DB7E27E44D30416088D9BC07D4661D9ECEC0806830ABF14CE55AA3CA2DF66E8E +748B8ED46466F1EEB072AC0674FE6FED231E0DDA59ED7C42BC05EF00E176050A +C4834D893DE42474EA20DB1E25059E84BD137EF65A02CC295B0FFDE4CDE95879 +0FE88BDF2519ABAE7F8CC3E6386ED35E04A14F1E3861922645E3A3F43B48A5AA +1999A5EFE192515FCC625C829FF5A7B337AA422F5E920545F9BB269C869A821D +6C4C26DD2AE746EF0F0B4C1E7E9871ADB5270E1CA9BE28225F7A0370D4C52422 +E25263EE101C4EC1C7811B05AD42F364844A56BB91EE72FC8ED53CC6954D2BD6 +F945D739BE4C61E36143CE890FC0CBF2F610018D678ECF7CEAB18FF5A0E48F76 +FDE2463D40A99380D679B3B76D39C664F4992D23E5988B0D1AF33DFB04894016 +E852EFD1EFFE586153C0F31ADBDBDE3F73FB49C5EE64D0D02E1504248FAFAC3D +903FD44679BB09C30288139B41B1E90A10139CA3172677250B16535A1F3E5E4B +6F4264DE58896E66051FC677030A121C5A285C47B6129CB5A3998830CE070D21 +2F093FC1B44089F603A21F45F60960F134A47226874C737EF6C085634B0A4A66 +139420501351F737A73F39D960EC38420BE46E5B09D298E7C16B8E32F01507D4 +0141FC52DA1DE718D634AD9C8B00E46EEEF84356759324D2B9A3473C5DA38DE9 +E30182B87F91B6A7F7BACF29A93B44C879CCDEDB063F9D2E51E0F1FC9F018FE1 +2433D85AF24B55DE3A61C4D0A2DA4FDE933F5F6FDF17E9FA9932BFC46E2D71F6 +585EEF5B2E4E89E797A24B799D7F064DD1A817A53677FC9EB8CC3E7F93FE50E8 +D50E3191052943FD6C98B573BDD1F6D70349E1F8011599E3F8FDF1D6E80A710E +51E434E85801617C6FD8ACCF1B77B4BFCCDD35CB4C0367F4EB4D8D9DE8284D5E +B4F43E2F8320C2C5A9AE90ECBA7E65D377E91DB69FEF27069235366AD3E126C3 +A73CE97F4C90BA00D206FA012C327FD69EE59AF4470A315B1799CDC0539BF90E +512C8FC3BEFE4D1B01D969EA9E3FEF976CD6E0FA4C9ECEC955B265CFD58AB8E5 +F7371E479279EE14B689269205C5B506940606CF3E24A1E7EFF3CA96ED30AD6D +E243DE57690C3D69A401AB3315FA49E4BF4ACD4DD1CA39272533E82EFDD508E5 +1C2CD286CCC5DE1202C7C7F654521750632EB637F918667E2233A43DF75239EB +F28F3129EB5DEE2FC5BFC331FF709B0FE9B327CBBCE98BCA2C861C6547E50407 +1218CEBE6EB5F9BABA4F2E11BCC6FB553A544A567B459E06375102C69F8018DF +BA6A227CFB13E2D74E6A521E01B74F2963E9A0A1C9FD87A88EE6356E3BFABF55 +BABC751D2BF85E6712E8EF57914920775906662E4BA68FFA21AD422D34E15578 +43CA0568B431101A1194F8AB1EF25E886BFCDFC10F4A5EBD9530816548BC298E +AE4A0B6B52B8B59C644C409B4191B6F4203F52314F2675F02AEB65A72C66E92A +2AC703E15D8D381522C0AC30C165B822A9B8D18CAECC094EDE020756018DCF51 +D0701B507519C4270B70D8CE94B436F640C15872F9B5B77892AA3D110E4D6A65 +8F0815C61A5127BA25815378683F46E69E54A391A8675977E7DF9C2D4E6FA991 +9F029E50CC2F266B31EE9F9F24452D5838905F330CB7E416B8AF836C5AC26AB8 +BE2ECC6EA4BDAA08C30995709E225C21D35DB6369167602CBFA8DB2697635925 +969002CD1BEE745DA2E56C17EF3F0C05E3847147F86963C37A221C8827195A8A +3D38993E4939AC915BFD9A212F5FF3F826F742B952018986F9FBDDB69C3AC65A +845F7F33C55D4BE60A1817EBBCA7E1538E8087E1BD5C083A320D52953BE65F31 +E8339C612A510B59CE48D2EF7061560C4AD258E7DC59694493E3AC878246F37D +6DE89253EBC8830C6B209E818213C4AC4CF1F391AD91D57BE76FB0E2924A1407 +E4A949C905E44F54EAED6419F13D59942C8079336A172D4758BEB5D3E786FB93 +3CBE4FD2EB53E4E1DAC34E821EB30FD44BC6CB4298242C38F848FC23AEDC9733 +52BE6F32E31E25F18301370F8936810B0566B664B042C7AE0D78ACF0A87E5BF6 +F9B66E358168B2CEA30DCD940074F3ADB793CDB136161FE2522905E87B8E463F +95D4DAB7E14A3DF7BCCE8141C5A08FCFA2BCE9F2D1B05A7642E75877EB840149 +AAB007CD239AE47AD115929427717F219B0A8907F0EC79ADE1B901DAEE87A2F8 +39361DAB43DFFF69650F601B24061A9353CFD619FF9626F63275FD09A5B13BB4 +8B3379EC4D147C41197E8387FC04DA7BE409524CEF74EA91DC066808A7FD0EF3 +957A44E2503EDA67B1C61827479486134E922E560A673BF314D601C66003CD07 +55569085AFC8428389A140EB976CCFB8F29E27587E46C413ABE2EFB51AF5913F +53EEB74063162E0BA1E24CEDCA320377D3E11BD374F0B44E132A5C35835B6E2C +D32948EF9DC7931D104C1385709DA882DED6458319F21C2329938396BC074106 +CB9CFB9E0A915F8DBC8435F386917AC87A2BA45D857EC30ECA66FB4044F5439E +CDD556B82A0E43418D179AD883C85AC276E1190CEC242E3E1D86E725ADC39E46 +BB6C47FE9E17E29F8EA81E870302A00D91434F3B7A05F243176E6EF1082541A1 +B9052191EE5C2B8E94A2E02DB65FC769653CA8D1C07A13CB853544AEC7FC35C5 +218DE3128AA31952DCE19C55C23FD69BCEA2C661F57B11B8F9E86BFA718D1521 +3346E78C701A5E51923D6D937E62FDE3669B214D240538F069A100A542720A86 +31DE88116DE775F7ACC2A49EA6C02A24408271A846990669F2AF60AFAB4C16F9 +7F4E88E917F0FFDCE68F22998AC0AF2A60A73258C3A4BBC42A2F918123128195 +196D0E150D79AC3CF4628503D1F3FC528265ED8324E56849A47B3B07C29940B9 +1BC270071E221D355EA51E9942D3BD7F99816304FFFC8F5B036C953B38759341 +ED5D7B9C8E6B70C409DD8362FD291201CC385E4A98D73E8518A4C0E544152563 +82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 +E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D +F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A +BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 +7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 +2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD +54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 +2F3AD7552C48C6D71102367AF3DD19DD76FA71928B63D7918C3DEB88840FEB80 +D288565525B144453F03FD08340E2DD4777484B552E241EB0180BF47E9A19BCD +086D89AC4DC263E273CB0F1D2E2082E023038DA303AB252AA63564D26ED8721F +8EA7AB22FEE60F04C671961BD11F2080F30456DFBBC89894FF05BC9517EB869B +40A4E58290546539BFDB4BDBB450AA7A70D019BC5A39236EFEA6F93A9FBCB8C9 +7EC6DC89C5F27EF258F0D533FE882202FB786D0CE1A9D7D0CD18CEC7826291BF +1D3DF573690386F2ADABAEEA8E83960631A33AA07BB7B4970477C46E92D30D75 +6E9F27887A8D1CE84F20F88DB678A0D65A53FCC7638BC932CBB2715639B5786C +3E4C88CCFE8F7D758EB497C82FB73635E828F165B2BA010AF65D973D0FF3CBD4 +71CCEC76F7E415FE5C72FDF6E2D511B5105874E9B69AD641302FD432DAFC4D80 +6B6CD4D1D5B658D4A984B34A2666ED8A74B8A070D33AD7A0E411C644BBD42FFE +AA7FE68F9E5EEA0521867422FD6BE49B18BF8AC265E40049F851DBEA997C34DF +3CA77697F5D48FE22C64C303D089E0B928AC2712EDD68A0EDC595FAF83B5D4E0 +28EFCAFA72269A4FB0CCAEBFECEDCE66AC7D1FEB9DBA1FC28C33DB8B89D5CF97 +932939B64B63070D7C293EF846EB7DE76B5F06FF4DB59278DA0F1111FF97FD5D +25291C63D01506FB143DD9677CB27DD0364FB1D756AADB0D6DF4816B0B1118F6 +340C38E4FBCC4C393F928D47585ECEEF5A7F8A15FBBE393029B12DE7E9E4D781 +71AC2DFC33FD7D59FD80DC1A634C5D99A068803C674B94D56D1520BD4B21FFEF +E020A7B28948FC4534240839D1C825B4E6C4C0844F057A38EE984B7E5B9AD8BA +533B9492E64A43E7A04EEE064DA56DA3E08747D5705F44F7156AD5C65653164A +82150DE6717C614AE1F722D571745119BCDF5B8F40EBE4B73D8CA0A567EC9991 +9DEE71B60A72734E0E19C41457BC2CBF08FBA1B4E045DB90FC51E874B64D3ED7 +FB7487F36D12E8D3D95FE7D078976AD534AB074FFE6BC8279006DAB8CA55DBC7 +89A13800F9DAC874BC74E1C6A6E3A0318AC1656DA73FCC4F5A8727DC1A0F9595 +5EC9B02BC987B9C37CDCB45F921306EA22788C3930E3BD2C5E91C9FA8FCB2F52 +30BE9FDA1E9F58620F5D95AF91C389A6ACA28BDEE8BEFEB80DF279D17269CCD0 +279CD36DB612D1D0DB9F3B398C04A1D39591F3660486759C2C2B9EB9393BA61A +81B2DD33CEEF70E02173165D6C15FD36D3F40B5D7244F29D3C57415F60F19698 +4BB27B6B6DA60E7BDA42F2E66AAA8E40FBF06465B80B4AE49CF3607C79472706 +C29322ACCD0D0151F3D279ADD31AD7FFE9D694169DAA60CE6A67642202BCDCDA +6E29C8BD1D9705034FC1680ED7D7F44621EB918EB0F3233C0AF28372ECBBA672 +059017C88511FBF0EA1F3B7DD84411D019D17A915EE05E68D79DFC4F03DB59A5 +ECB39748A437A5882EBFC1574027684145EE9264D62757CF038C0AC868A13319 +EE14856DEE3979D82F249869C7A505A4B7AAD1BD0599CF398A32AFF95D3B88AA +12974DFA24CEF4D673E9BC4B9FB36398CA44F2B9FF23AA192D56E35056C2177A +ED4A6B1660520A05C01651D10A37748E1483DBB6FE13FD3EEBC1FAA34349AD82 +06111CAE95F2013F111D8FE902B996C77A1BE211C2B6F9BC4DF73FB024B4D2E1 +CDE9A94BFA9727D95619B30F332C018B528A8F292A142BD5CFB53AF214E36C08 +E986347EFFCC3C3C885857D04A85E2514063067F3141BD86B3452A1A2B495372 +EAE088FC784DBCA46CC744D9947BC5A8BF354F2C630BECA351DE6A2D47B30F80 +DDA9ADA37E50B1816F739DB303627C79CE5DFAC2E94A9CF79957C0CA9B8566BD +892431AE4F23AF6056C7D8F184818C9D4A9E57FB1CEA8D74CCCBD38E5D7E1BC2 +4551ECC268BDCDA07E675C206B2DCC7E5C7DAE865A4363D4122848B46F198507 +7E166303E4F30C50F0061F6EF316AC7EC5FF61662F088696E1795D75591E6CB7 +0ED973CED00B0D058E9622043AF118ABE8C2B757BA3A1A4D5CE2E6C06A2EB582 +B99ECB6C765811568EC35E38B81523CCBFF8327E2CEDBE765C18A70B9E054453 +1EA6E3E33B9975A49873F3E1CD0438BB53F056254E7051938D08A8173AB22AB0 +9B42C13A84F330DB43CAB3AB877A66C3F2A0295E9D8B6292EAB9546F02FABD59 +13A88D7CA669122B532C906C4081988C0BF556AF1991E1E4C9B2D6B3BC798B49 +A8A6943A242A0CDFC03B498F8F495661C0B32ADAA6C3CEA8C1CCD1E84BC3D174 +425A71F8A84A1F806489E2C926CF032CF157A1CFF0498121BB3A6DE04DC400EC +3D98FC20A2A20C110DB95B335C4E1682515292A12C8415E323EBFA11551F2B7E +ADBB7682960FA594CBE077E1EB10AA0158273659E8444562093B5A4C28A39E11 +362611D6907C0B34DC4C958DEF21D232E2D01DE7F9C649C45ED941A8108AE2D9 +775DDD587DDC8CA72A97C3E2E713DDECB09C09F67026284E674A5EF85DE699E5 +7258BF1AA40FE374FF2363847DD0953A20259C7C8191E0FE0A391FFD06DF9051 +3FA61907BA4F984D7089F1329579927E64A8076B5DC08BE067E449948BF1EC70 +03AED3DFBBE20C2B23CB113E3F4973DB01433A72E68335BCEDA94CFC7239E7CA +55939B5EC58B380871397F1F13D7A640D8FC6924AD183ADAFC447CDB9A6CB63E +BCCFE5C11E884CABA6261D5605CDA3EDE239737490593E4E4CBDADA0182C8362 +F27FDE36EFC56AC691376AEC6F3204D96AEE953AD141629A31132296FF60ED96 +0D54E153FFB5117845FCB6EA3B1D71FF4328CFA0972B2E3AD0B1430E33F6AF44 +5C12F58959EC611A449923604D95883E378D2DFDA4D2B2D43BC9B4F6D1538350 +D9FB3E6B5445C696D916E93A1FFEBF2C59973A523F8972BD8FD20E160AFEF38B +E355E2FBDC98F0971A4D04298C47C6781201EA4F16964E6C441331193383C6BF +B3109040BFEBFD7217655899FFBC57FFAC3778729924CF9C9504A25823CFEB22 +DE375E4AB029F99B91B037A1F956F4CB14E973D5847A3D1F15F400E54730E0AE +C9C15DD4322AF9DDA0CE77074EBE320435B9D82BD73040E5150DF87AE690115C +AEF26E5EB2612FD51F7761BD894DC139E79C7952BC319E364BC09825CADF4EDF +129D8F7B6D819BE5BCD1C223DBCA46785DB5A2DBF04FB42D451691B25F647B1F +3595EC997C631B70AE41317E8F80394B768C58E64CFC5F97417F88C9DDB98CAD +9F53DEAF7B225CC6DA84B79B21C1C4810D90C1871EE2B20E0D0B4783F20EE925 +0E91C1C8671B97FA9E248E8F03B15EDE15F4BA072879E90AA8CAED46886DE114 +D19E0A1BE52572FDA487FC97405B4571CD2A48B6135D6EF8C22420AE5C7C9B89 +84D96A38FE9067CB6CBC1826C490675DCA6EBC3AFE89FFEDCBB7C83F92D03A32 +30C76AFAA57B6F0854E3F4327BF892F0C4985DBDF87E476DB2DD76A5A235A7E4 +E750171DB3F4C945A6ED52112B1FB818CC513DF536B7DE1C16685B03589B3D03 +DC7056DD140F39C2D21DF867BC23237F697B6CFC080D59239AB465FE688461F2 +EA9F0350D62450EF80C454227DB6D60CC4A1156A2C3983503EC4C020B8072F7D +7D471D3D288CA1A1497EEFB7C826FA93CE0A31B1AE583E75E9A97E84CF0F39F5 +27694E23AD868C04440B4B3B674246712D89752365E32A6FD7DD024B6B2E9E09 +420420996C797C228DBBA33529D256565B4C479C9A4826943B79494816FE9AB1 +7A7CF2E0C3110142D10076589753AB96EB827399232E10EFCF1303500DAD9F9A +050FF4D2A7BE882CEC519E57C44AB791605BBD1CF9EB46F588AE695026ADD366 +ABA1988D0F692BD8ADA131CD77A6A1E3B44536DC67A00E6FAD10A2807F3B4A76 +7AE8F7C5CE76A10958CE05FEE5A6B9DF29540306704239A72166F38FB34ABD12 +189B5395FAC0CFBB0B9B743486E0A3E36103A60DA0CC52D78D3A6E646F04BB5D +533B1371C2C7BFEDB46DCDA8E7CF7A00FC29C1BA4F0554FCD1701E0FB3614C8C +E63A351C080E03B7779FF122014A34B32EE0D4557F0C3AB0EDB23EB6ED0179DE +34B1440C36BA2B40CB06D26DEDE8C2EF827E10BAFDB6800B60963FC5509333D4 +C6AEA8BDD3102EF19E1DCACE8402DB0E98343CBDDD6BCE24D2D9303BA4AD16B8 +EE56A24D80F464EB153987368F7E899F51FB67923DE8EE2F20D6D235E28D94B9 +8456BDEF0959A3B015462E79AB7B84ECF0299444CE4DEB3C8EE7E2BD23CA59BE +49E6E2C27C0E787376FB5F9524441F803ED572ED7A1321E3C775D8890EFB4A6F +A2AAD2B92BAAF651D09E1C7B3059AAB87EA01E1EA8CD7206186202B9115B13E6 +7995708F70E72A38BB9FBC9BAF38077D3AAB047A7B469BDC8CBC1D2DF9AA8492 +74D52FF2AF461CF685C751EC27E643EE8206CFAA38B9EE236E051C1847D58D33 +E2801A3F1DA3205E8F383832356366C6D83A22ED1051FB93AA1944A220FA05D1 +4D5FB1A3D14781160712140F698CB99C7EC5E4EA8F3C8DA526A7F92BACC1C67D +E04F1A5B080D43B0B8589FE343656B8B84E676ABDC34FD93E24F6D1A0EE4685F +DE701BFE614C49EE893F9E2D7DA3F6E3110C55324A3858E9406D1F098D53D65C +C5CFD7A5B8FAD2EEA008188F3CDCB6A3029FCE3E1FB6B7363E610DE04FF30604 +6262C8B4EF036C5BCC2FA76C09DC2106411E40E8382671BEAD16EC56C6EB5A5B +FF2650A38302C5E0A9E5B0456659225818878FD550DEA6D1C8704C6020D2A9A2 +9728DAC36B72ACF23991C122E9EA0E52DBBD639431A0C4375225D16C7D1C226A +B09C2CD2A6FE67209668B9B876D777B86F68C3AE872EFECD1730456F168E48D7 +23E7A26B783AFA95962E94AEDB1B158DC3DC3A6DA5C17BEA6F42C7D4D5A33206 +32A767AC088B9BE230BF67353507449272A35F18937656529A7D701C5D6ED11A +30391309A4FCCD5E7530BFDB769C2F3FBA44C27FF56FFC8BE6BCB316DBBD1B69 +85A75C6726A9C0A63AAC84036265EB952556A0610C2832FD04636488B89E2C02 +528754DA559FBF275565644798D4F11E33892AFA540C1F9573DB2DEC7B2832A0 +A538E9903EC4A97AE8ECE9F42B72EEC9B4B5560D1BA7248993C46DA23A3929C0 +EB18C32E4ADB24350F10F1B703A93BAE3B82D7CB66E0FE460DFE1C97FA5FB799 +74E827C03981CB1175E54682465C5946442B9C2ED1E5AE3430D7E95680D69315 +0603E5B2994FA3666DDB44CD35E5C8116CF2F5DDA46C61BD309353D3D89BF459 +7DEDC647A51267BFF24F029F7C34F4B82B9AA619B1B23A678E90003B710D801D +FD60E1ED36 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: CMTT12 +%!PS-AdobeFont-1.0: CMTT12 003.002 +%%Title: CMTT12 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT12. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMTT12 known{/CMTT12 findfont dup/UniqueID known{dup +/UniqueID get 5000833 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMTT12 def +/FontBBox {-1 -234 524 695 }readonly def +/UniqueID 5000833 def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT12.) readonly def +/FullName (CMTT12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 97 /a put +dup 107 /k put +dup 115 /s put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 +5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 +8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 +EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C +02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D +46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A +4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57D05DA0555DF933BB0 +7B42D264831116C06C79335D519461E7B0E870A6715E3D74A08D1BCF86E3BCC3 +A43FC6BAD1C68BD9D4AFCC06D845FD1F1E70D7A47F0BBCAECE8396E04591E5E3 +4797F646AFEEB7DB548183F0B74C9BB6BA2AA04E7F5950EC8AE97C741D4B2C5C +A8E7A8DF5A36A30B5A7592D95E1DBC63EF33C92FE459792CED29E2B8B6919251 +75EF62089BD7D44A6E1F9B62EC802FBE62B821DA1C3B2DDED45D27964AD29ED0 +9FB7868F3A8FEADA87A8E42D52C1EB7229D7C79B60BDA263F2BDB025AE14A507 +098FA274206BACFB4A0A7257D5998EE8F0FDCA79CB61DD1FC59DADD11E16BF02 +ECDFD706CDA1E72054D4EB55AF7BA9F19955886BC0BD6E0E3FE3769C94AF3581 +DFB2BCD67FE2892AF07E858A01280194D8DD7332B3D0A585C87FAB056C2EAA9B +5AD48D1C9F00CEF8EF0D1408DBE1C03D04B231D7B8D5D998FE0CD7EE19828EF2 +F988EBF6DDBFEE00F04A4A1F4E1A55DED7EF3AACEAB5005F1962C724A017C914 +2936E2E0DF26A55ACD7DD836C6035CBF07981C1BCE3615064F0540A1034C69B4 +E3908E76EF8925D486DF0B4A8E1F02D8AA99585A7C31847AB9382F83880C1C21 +C496AB2DF8E7BD4643B28B704B5F6B53429D3EE940A79135F5BF0396E5B46F23 +42AF406C26D12BEA7A41F332AEB75DF43C15334CF4651A99F602036946B1B91D +4BB0D2E51C20216D892C8173241AC8FD15A37C3CDD8AB4FB67D8565AFA61C068 +95E3D6E46D7C09BBD09428207D506AD43C693F3C3D787F6A5C39084AE45E81C9 +830900DB50DAD10A17E118FB5E9680B5194716A788FF7514A1167DD1A305FE62 +C7DBA30E569DD3565AC9C80B112E221E3878624A015F6224597D02C9A07B368C +F9FDC817988D12CB00ABFAB288C20A59AE40E7A75C235938C47F77261BED14BB +6574F633BC4DE9E8AEABC46E0965AD69748C315B6DB5F264D5E7635BE37E23FB +873E2488086BA27275142C774A4A241F92E8ACFF0F25E81E2565642D88F77DE7 +03BCCBC437BB1C9EDA969E92CF3423203EEDE585A9371A00BC54DD695BA12EC2 +461AD673A27B24AD38903C82D020A8B235845E40A00CEE82BF1B187AE84E847D +37D5098039C3B116C213771F69B63DC822F4B45806D038047C030721213051F4 +BD1EF230F86B915B67CC9624DB534F55A1B8739165AB9AB9D76473752C628AA5 +4FE057ABDE42A685535EDF4C814CF00F53E7B520B470A6CAC4480488D82E80AF +DA5B7A5FC15095787538038AA94AF56018AD0AA7573CFB6DA444E30A99713E4B +07B1CCBC5DF5779110370C81EC980C9555DEDEDE7B655475DE867CF94E57598F +5C70B80B05C94C00A2E8B33EEF429E909AA1BB0DD1EDC8E27E735B41BE8D7708 +F9E444DD44F344736EFB0DE4323B4626237B53275CEE1DBE65396BDA86047C81 +25AC606422F5D16179F6EBD2E6B39F838A5171DAC344BFAF5A31A3EC688D5BE9 +FEAFCC0CC06D38DABCB1982B30CC7CF3A0197D82D7CE414156525C452B5A6A0C +29A5287C47E4ECD1DAEC9237FBE4DAE723F7256D3BC1BC8FC9281A716C93831D +BB09ED556A845A038BF82B25CF4B2769836EDC4D3BB01B2ED52065564912A8AB +0B1FE169ECEEEF8D6BE91FFDF1DD67E6E969EC3B6C9EB47BEC81A34CB840F348 +D49AFB71BD8D9CEF11019F6CFEA9C6E179634796515B45211F19EE2917F1CCB5 +FF91F8329B6F04A62C0A430B8794C27D87CF0BFFEA9F5A96CB9D447D6B4FBB42 +1BD54CA909D19569F563701215AAF75F8C1B61F072C3DB38D9666F6D635F8FFB +4C6BB723EF2094DF5F6D9C2E1933F72DDA6DA9A6E14AF2D956D5135537EF0AFA +5085D6B9C6CB7B67FA4247FE3D193BE96B85A35ED1313B2255576490F2E0F5CC +3CAC51FB07EBC0C72FE58C577017429AC0D8B80A21DB1ADB042866C59D1D2947 +146808980B0BF886D3CBD5D883690698 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: CMR17 +%!PS-AdobeFont-1.0: CMR17 003.002 +%%Title: CMR17 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR17. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMR17 known{/CMR17 findfont dup/UniqueID known{dup +/UniqueID get 5000795 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMR17 def +/FontBBox {-33 -250 945 749 }readonly def +/UniqueID 5000795 def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR17.) readonly def +/FullName (CMR17) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 65 /A put +dup 73 /I put +dup 80 /P put +dup 83 /S put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 118 /v put +dup 121 /y put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA +0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 +51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 +7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 +E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 +0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 +C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9D6295729076BD8E +CBC0F4C1BE246922D2482233846A96D867B66D9CF25A1DB661141D36B8506E61 +A022F9EF8BC1F2F674EDF1533E67A78CA29A612AA9268E113C5EB84DA56CEDFC +D7A111403E6E2A8682DB04368889747E003A124395ECF0C7FC81218552EE7C6F +60BCFB4120893528670D0E8A4117EA5676915E3591AE5652D003EEF67818A41A +8882E102AEEEBECBD15DCF632ED246A6A58B6A7780DB6F1F9AE3FDAC8344585D +E104F2BA2DF06D68945889A2A3B6C262FB53FC670BC5EB7C56887FBFB7AA7026 +84115872CFB0652C6BB330447AFF8F0F665EFD6A41D6DB6877B08052F402448F +CB21C26BDC900636C99CA347B79AA73AFCDE9762A992CA3DDF7279E5C50F453F +52098529850AFB1F501A442D6A02E0A2896F81C8AC735AF1E7EE47208B4CC944 +649DF6802EEE813F1456205C6126D7D0B1821AB62DD65468F3A30575E491623E +0054E2E680E4402E1C8C538DA389B81603BE88D6DC287A076F92B224CD58A0AC +44B8D490197341808DEF243660971F444A560C747BC6F52707ED42A99736ECCF +EBCB694A561C3A70A319D204CD40D402FBF937A00BBCBE85DD26C9E3F91B7D10 +D85B9D314BC3AAD5A58B107F5F341BE2C53490924142566417D6BE03BB4977FA +6635EA58DEB9508E40B9FFAC75FF44C683680CF242FE210519C9BF92483B0A54 +83F48341318BE16D2F8C988FE3DB2E7914581F579D5E323148A31E4ED03BC24B +C990372DF5F3B0C5FA32EB2CA4FA0EA33316569133C87697BAA2292E685C26CC +F8CD40A2366E60B47D47CC9D0FA29D2836011376A07F78BA7664DE96E775CF45 +9BC91559A063073A4C2FAAD0893C517C5C46A1425D07EDCC2B57162E3A45103E +FF26A2D2F98B194256A4B052AAFCC08965A50EECD7B9E8F35AFDF7B6568B3983 +8030655E7C2BEC961A2F20539D617626E8454E3FE9EBD3EFCEF7F63498441DAE +16CB509BF239FBBE25EFEF07A3E16C9C71EB8D9DCB8403916FB40FD7F4E1A52F +72F2DFF94FD14D7D49FE775390C17C37C1BA0CAF35CF75D682B7833A83224158 +D54CE962CFBAFB1B2CA50B60CBEB1F8F58DDB2F5470C355ED9632342D9382AE4 +5D33BCA3A0A25EE9E5B39BE5370E7F20684C664EDB48E7973FEDAD9676F9EE8F +701CD4D8CC9B9EBC06E8C86EB88AD56E15CEBB8E1930E8F711CB6E01D5D14967 +D7E6C1BDDDE2C4D00384EF4CB02877DECC27AD53FC981338977BA0CC0257CF7D +B42E9BC91AF45D9722461EC3CD9DEAA8011FB855FE14B74BE0A102008EACA2B6 +0E287BB4F466FBFDD6E65A5262B9322F95E20DAB875A10A84572D982E6FC7ACA +23C0C37E5EB47B8E69C07507B53CDD98CD1B6445E1699CF35B3DA3E0DC56BB76 +F997C40E2ECE47DBDDB707EB527055960113F2DABC87FD9EC7D0AB36B400CE33 +0D54D4F197B2830B43DF0AA802DFB2BF747A4C44B31FB708B2C8BBE1955A6A28 +379C91AA4CC065A50098AEC0B837E180B76801865A43C74859DF18FE1DA1483B +C17843BF1C7E1B11A8C6D8BB8CDB1D552FE6A1FD0A696A8F7405F2320F8621EA +17C1A32056C45A9ED35D2BD12D02D8B26489CAAEBF4EF33B66FF4BD9B46E4823 +6395831A8F3366EEA0D0EA88D612DEBF63DA7FAA24DA979ACC1A52544BCAA007 +6C39946BEA6076ACF45722B2B8E4D0823EA2D12B14A98367BB0433A21FBD9F94 +18DF298C56F67ABC9DB1868D431A854DBEDF8E1F49E359A545C75A7AA1FA4D5A +50F1EE6B45FC68ABF65FFF257964E4E50D8B0C1FAF498DFC554073697C2F219D +4A68DA9E873B270B9C56F0DDBC9927ADAF9203FD684DE615F68C24ACFFB44690 +89C0D5322049FA69E7FD00EFC9C9B2BD177B5B339907F81C31496662847BEC1E +56B5DCDF4FE618970F4268F475B2EF7E0F28CC986DDF098E59DDAD818649CC35 +4080C0867A884B8177A6880F06F1E5CC130AB4243EF8DD8032FCF390765BAB1C +1F0C9728EEE261A09F8C1D7ABC7A6B1550551BE2A7D19D45B656650DB00B3A5E +B3E1186043E173BB4DD5EFFB379654F88146382AE3F7196F099BDCD6D245FB6B +AA2FA9B6CFBC9F0CD52798DDF2F13874BDE5B124DFFE0DD93E24C9DAEAE4C3BB +71A9A13AE2860F620B4EC789F95221015D9C510CB4AC775EF69DB9E32E59C896 +1AF82C9F0DCDB4812A37761859A3D3BA0CA57F244489C78065346FFA78F5F7C8 +0B2E8CBA9EE62FF5C27369D0BCD52857D40F1FB8F8A1441B83565A4150AB1945 +0B54D6E49F66389E43096269EF5CDD39526A288C0CB81E324E75D326EC9A182F +2CD966368CE300B41873B08E17C3E6BB51804460D2562AF5A12339966F44CD09 +114C6809AF246B5BA6937631842CB9417781A58944B6BA4FCF961465C208957C +81A662D560D0F81BD3CB53C06B6D979F04F6121CCFD5D52702CBF6C70C01EDBF +2040AAB9CB144321E68C4010E0E98CCA2603EB55DD62E881DB621C37EA4108D1 +528ECC7A0121B57C6BB1E26F8AE7161ABA7E88256D2D6A8B7CDE2E730D137493 +3FF628EF6030DD2330D747FABBA03B44CF600418C245C388F33EC5559E7313BC +4B530C4FC12530D38B27D6408548F25FC084DD0523B27D29D6518D3115AE7755 +37162CFD4CF528214466FE525B13782F9C3CD78F3D6C7423E63A134C0A371F15 +10F4ECE1D482C647B563D3D15586F80BD9DF7381BD53927825D5AEAF762E1CDC +3BD184F345029A95B3AD4D1B66E79AB4F0809418C0CFD4D503457A190D02F134 +3F57FC04FF655AEEB783D6791E4EC300755861837D3D50649F6B7F60766211B3 +8148F8E575E28D6C2DE75B15E722ABFC6DAADAE53D89FD295352781DCC2CFF6D +982F6DB778D6FCBF1B7BDCB53F3A23AE6EB499BBFA96E8BE04C3C8E5B660EF24 +01EB842DAEBE979F2C2DB72AAB4D21627063B1D3C6CD40944E4CB81655698FBA +A343766CB22E392E5DAE01DB33A00918D6DAA07F2F38B336A3C5DF3708865E75 +0DE04D3AFBCA27A249E97377D5785B4E28EE0E93F7D353619C200DB967372ED2 +153BF8BE945474266EB2FD30F80042A11B7E3586DE4AB1FBD4A741D36DE583E9 +1CA25DA345520AA60634EC819E7EB493CDB128BBADEC3890F055455F060A1100 +D5A41D7B180027E08AD6EE7E393DB9F83799544404FE397F557773BE6A130541 +157C0EB37E036C94825B5090EF85F8B4E3DB72895D86687758C20EDEBD6D1079 +196E9949DC6ED0113571C70B150B37E446E319EC54D44CC0CF6A14760953DF4A +D0E1F33A54D240E236AB63B35BA8E071D77776BE5B9312245F2C6E4FDB4312A0 +0D9CF723E7D9A3D8546C4739C00C301A89ABA60A02757AB1A0AC40B24CE6CF12 +5850485B11E16646D7150795EABAEB08364A53161111F46A7BC3423A0D3BEB69 +BF15726C1F8363914945DEEB29CB8766328318AF3B344FD6D77BBB92BD7FD161 +93356493D4D8252AD125708D47C124E44232FB2BF7DD75F87889496DCDB75D03 +F58A57D4122CFC194B75A9E9C4789C9A33C0435FB4ADA16AD4A6191928D1663D +05FB8152C0AA176FBA4755205F8A66713404787070757D3721ED6E6D55A59DF0 +C92BA8F05EC7BE05D0A2E66DE85E75373483EA3BBEE0F0DFC7E2FA5FBAFAB118 +058D095AA71FDFC8AF37E5A98406B64E58BF476C6926725D7EF3C2346CE3F662 +1E5A4A18D966479A37070859014719456EA2C7F23E68E1AB2F25ED3A0C00A18C +DD403506923BC983F89CCA125780DC76A411472E38173BC0DD4CDA7B43E13419 +B5AB0B9A35E77C58BBA12AA4F5C7EBF8A29996B059E4FAE6809565570442AEE5 +D56CBF4407E1CD9A4398B1F3ADFF023F64B230E3D29F526B62D964F5C8DF801F +E94295AD85BD9E1C18E6327977260A871E921C0745CA06A263E335E344686E7D +D6FE3ADB4EE0A7E462F3C00873C3E95D183CCEC71C0E5DC1D2FB310B28FC3611 +67C23DE336C374F72368F4973052B48E39969305791C986E6EE35D0350571860 +3A8ED849712CF21AEF444BA390644E8646CCA16559BA4642A5800827A0DDC453 +7CA0818BC47DF6348A5209A2F0A10CA39840CE6346E89CA0E842BE8692DEF25C +4623A5A0E0B98708B9492E9F564324BB3872D6B953CA59E9F393C477E2AB85EC +C557D333E88C111CF995FB79D9432DC94C2BDB3BFEE13C0D7D1BB920DAFA6158 +8548447AFC65CD5515D5021E0ED7D213B0C08C35BB424AA91885CA023D7AF767 +B83E619B15DFEF5588D2F0564296E14B5A6ACE03751E1016105C51BE76EA5ADB +4167BAED2A8899031FD7BA05C410ADA25ADD94A787EED1A7AE133B0568B1DBA5 +44B41BE013782CFCA3D81E8E8210DD506ADFCE7DC7E792EFEF438221164A7D1B +5E7089F476240C5F94988F081943F24DBF7CC3D1E58CB89E1C0C1624682CC3D8 +C95815ECC9183A4B3E353C7F920B7E64086E01672DAA7C8A81319BAA03C1FBB7 +8E5E84CC5BAE0E107754794C755B7AF00953504094E1A9DF357D51B578259613 +8D26F0BA26AAC459BBEEB90BCC98B865EDD26AA4DF533D6624EDAC762C446B6F +CF9F86DD2D8989D4655775E662B93BF51805EE3CBA0AE2293D95F166E80973CC +82C53042D0249C598B0821E9E7F218BA6114EEC86C158F277934F2651490B723 +7F0D0288560DA5BEBAFDDF243048E590871AD18B3B220EC56549004DF122AA03 +BAAD6971D790BC644369FDBEE74A324083CFA9496C2A333774F06E35299242BC +F4B26578907CC5AD1893613F2B8622CFBB7B55810162EEBFAAEAB2A6D69CB72B +D7859C73843E665125FF450631F32E64F13A6207F368103C7A7318DBAF2560D0 +F1CDD83C3E48CB30C62AF1E0896E1962C655D9ED98E1BB38477C1C60ECDB6B95 +067D3A638AD43EE886338F7AD2D2A574CE6FD2E21F6FCB4220EFEC85ABF8272A +82081CE70E4390A74EC717F1DDD168F4A4A080A79EE2ECE0F98A96871DA4B52F +78441601AF47763C2219F5A167604C32F478D498835EF3A6167936994F7C7139 +3019FF43C97E7978D3CDA641C1E391FEA572D308E759F28DDE2B40B5BC207A4B +C5EB6A93EEE26782016F8B6534420BE4D790A2E1A65B6CDBE9468152230384FD +14E9AE84418A44F94E6825DD7D77D0BB5486DE26A692B3DA96C81FA4440C5D44 +8E7F3CAA9B8DF38F87E09C4D78841F629F78F4E7CC8580CC44E59E5D9AE8B2DE +C0682F793AE7AEC12A8AE688636197E8A08FEB70EFDB6203681A60223B9B0D39 +2DA656E5E99B82130D4BE38D7AFE18568DD30B0CC3C73C1E2914ACE11A65334D +A9F18135E7B86157122CD221C33C62012FFB16D2D2F3473A53BE3E7B9FD4303F +66ADF0B07155C7B9B002EA68C6AC7247EB3CE7D2670A60138049DAA964F86A05 +22983EDA7242E6BEEB90DF61C937399B2CE1061DF1E551CEED4A80D86C2D4649 +C9FF9A1F93E96773CD392478D5B70D5336A03A274E0A6EF44BE8CB2274324142 +706BC2E340DC944339D647961FD7BF29944503B4AFCDC69A706AA6B0F6AB2CB5 +D220A96ACC1EE5E7826F6F75F044224E5260D581AE761AD0C752A06AA03FD935 +FAD65C9EDD4E5505396E331D45DE88F0D1A4303D766ABE0702C17E2A7F53C0EA +96A4DEC5A6B6186F5DBAAB05DD78E38AFE630465BEF0EC66ABA9C1C9232214A9 +795D105C33CF069F6BE20B179F4CC9F484AB63ED25C1212C457DF62CA0D56E20 +608572216F2D4C09010B03A8AA6D287C8F514BEEDC1C912552CC2489858BF4D3 +084882CE4F4B6FB9EE27C0168671E6DA154018ABEAD013C88E1D3EC918371251 +63D95BA0FE20212C20AD3F4DB614EE36B488A3F55D94C1EDFCA8E68E54A1EED4 +7DD168DCCF07C3DDB5E2B499DB5635C5C5056A7438120DB4839427D07F96AB8E +F842E285243E40259F6DF029E27779CCF3D3BD7206B2C341045A5A4AABACC2A5 +91C6830FE05ACDCFDE99046F16F2AC183426ACA4A89FE5F09B7EB2F811BB5FB5 +AF073BDA2886070B2327D582DCBA66B47E8948C3BE05E837BE4B81402A583403 +74FF9E938F0E9DC3B1CB81B93DFD4070F9EBAED40BA570DE8F9A5C2C0A097311 +22A6065139A6580E332473E9410D9F4C734794F79E41D0D437CEC7381919DF6F +A24B170E2BC97A6396A4E3AC3D844AD6E2B8FCE1C6AE97DFC5319F49130C3D6F +AF2541EB2384D5D4CCBEB976846EF8C2165DBF706112BDDDEC9A57D157F5996D +95229FD5C71B885D16B177BAB06B9DF5740A45C2A005778EE879193290419C0A +A4A339029E37E685B8A05B111DDF94AC19B1D85C8E6026E57E3D3B373C08557A +F96E6FE3916695ADFC1F0BF5D558565F42A71C61ACFEFC9026424397F0646642 +7EDAA05794BCCD164A645860B57EAD53CB6899B18C6E9496EA4DAB0A0C272639 +DEBC4FCBA94B3BF123F7771F602E7667C8F56E12429669F2219C7D8E294BE07B +71E88EA62F5616CAAB7C0198E6FF12A348E36B306FE2684A401399431B6A84CF +B46EE4BAA0F4099E65E9AF3B70274EDD6B6524F4FA38C23F9CD5273EEDC8C6C3 +E7312B6E0497C05AD3F3C246638F01387CC11DBCBD287ACF54D8E24759F51415 +35ED64132EF4158F54AB9F4D567482B3057880490F805822F71E7E2C52F7BC38 +8B1F803AC3731064B90E5E97AA3351D17E73DC2FE526CD6C91158636E395867D +C1150FD3BD12493FFFB813AF0D08C8ED0B7418A2CF90BD5B783364358605D075 +5DEA95A9299C0654EFB28E2FE8A41358A0DD124D0314A27558E42ED5F2D74BB7 +056DE04D2CF13B9B804A3CBBA29BC155A3F18B8B48283194C33CE8291677E1EF +0721138F8E0409D49BB99F217607586D2DF00C29A25536E21924B4CF6702CF85 +C02DFBFD2AA4DE3DBED1D2C02E21052A8D10F96629D0D18154923638FE0C48BD +E2DEAF11663E20717EA77A5453686AAA39D6FF7919AF09B1AD956FDBF734F49E +262F3076F62E77BD45122B55A5913902D9F91C4246FC235BA9C0FA4A96994291 +830638949BED423387DA2D455A3C9122484EFF27F5367D1D3DD27D207D973815 +965E1CFF36F43C653ED406F65348671D9FFAF55BA3FC266D438AF473181B7801 +164EA3F04FEC870743195B3F467DE36B3719BAD9BF15A18637A314C887D46673 +445BA3C212749B0A33136FEE9FE2C9A13D62E7ACC96378D257FBE0EB06AD4D4E +D41976AB92AC720DFD33B0677062C32E6F5C992A0324FD26E984B5341A58C190 +D20EC3F1144697D514D9157340A6C9F82E62AD8CFDEE59F6FF86C6250CE33D6B +BB82DDB4F65BEFC6F6D0E4044F7BF307CC346E2FFD191846E3CA288C6F91CB71 +5FDE855FEC5E38816CC635C470BF15263A10A409F0BC4877F7E6D4C223E3564E +E7BB5B320AAA5AAF4F32528F7413BFB97C70FF5E6843E1FE501472129BC9758D +7531BE576C75840CBC4CD3E6D9E5FF52559B68DE6E7827128BB2ED1BAD43F36E +A0CB68C1A147A7093EB02062AC5492DB7EEE08B1BDB187E15339A66269E459BC +67495937B4317AF66A498923322B087ECF47B601C26E253D223A784DB2D204FD +0668BD403A73723848018B7C86B627B9AE0BD9038F567CD5F670CAFC5C4D86FC +ECA211B713ACF8C1370191161CBB6C2592E8B9DBF3471133F2D9A60F15D72F9C +5E5539D59A6A7E124D9A38A6FF6EB7C71990716F88E1888295584F17D49144B2 +B57252D7D87CFB7BE009E0E1AF68C57E2041CB837A1F9DA290FC07240D616876 +CBA29ED23952F977F27ED97503F6C6CB48DA6611E0ED9D90FA865D099740C6CE +8A5DDBB1D6550B208321C365A5104F9ABD66A9238B8A2106AA74CAC58D1163F1 +DC4A62013C0F6DD8A3E8E1A6CC6E553746D570A744863FD8EA705890890AC5BC +2F0A068C740572F045B32289A2AE66CC44A1C13FB8BBD4E1834995731D19B47E +7C2FE360AE79DACB95856B01EE39EB3C7C9EAEB3D47348C47D928BC883B8E760 +6724D80DABC4D736411942BBA8CF08157F21D63C18924282193C5C8E44E09048 +FDCB8DB2E01C8A496FEE2CFC19A3A0EACA508237C8BD988ED6D33D01EB548B14 +61A546886AACDAFB7C8CA69056B1F428D72541D3F17007CBAB23C8ACC305A655 +BE646A9303F9D2FFA3E7060B7D0226EDD997605E246BFE131463B8614464591E +425278958D87871AA4DC5D3640060B9A435BE23AB2DE953A5365623BAC1A90B0 +8268AB3A27695A5AA2F8DAEAAFE88324267FCF88909155E959F90FC2656C6B17 +7B1CD6735451BED9CC0CB038F90AC4B632A9AFF99D1B4E85661C85F7DA8C5C3B +44322FA1D86EE66E4CF4FB3176B72AB7C9E33B530B4B36E2C05190EE3A6CC64E +8EC29CC693DBBC748C529600BE05904A48F62C4AE175FB7707E9A28D72C4350B +EFF065D7D52105471AC6949CF4E9D2E19BEED19913DD3996589C03E5471B1883 +B5ADD0E76316966869433D4D3C2D68897AD54BC0C1056A85F539FB568DD657EA +3AF8B955FD3EBD10BDC86B94651A10010EAA2D7B4CDAA9D04754A2BBEEB42462 +7801380BE02FE9C387FE93CE0B2E1D0F65BEF41725130FBAEE89B44B26490D27 +DBE1D0D49D3B70ADAC4B2A46991E436070239AD0154644FC4A2773AD68558ADC +A1AA62ABB46BB0FCE130DA7FC6755116118FF381764FBD03D1BD10AB0B8F4379 +2FE1C35AD8CFAD84738E5A5304387E958037567D2564B00219AFA30EAF2ED876 +BA2829A4D55D828E507C9C049796504220AC52CB108DBAEEF70149F452D85BA5 +F394C52C09A4A6C9434C40DAC48F9C126F06A5FE34240A16F69BBA11FCA9AC76 +CA1E62961CCA4591C6B96A84E7AE4964CEC00E7A8B003B5D8354CD1200489304 +0FA8BE1493A2408C494EEEBF30EF1BFF488852ADDCE5D087652063AAE0BB53EA +ECF423B32495E2FC461F2F2A18B639FD6CEC09EB7CE1BDD115B5DE66A1B3FB1F +77DF9779C16B981546E71198BBCA746E0F0ADCB09EA0F6F92608D30B9E77A082 +0BEE151189F51CDF0B7AA8AFF778DFEF01C988224506370FBE7DFED69D73FF45 +371961A0888F0DF215E909EDB9E08E56F50FFA9CDB0EBB16BED3956A75648DAA +E0035E589C65C12BBE6904794F8C19C23A830002C6E28217731DE5A0CA604EC0 +ECC0B451822F81C725F5330B1C77A5FC085E2A11667AF816D79EE262B99597B0 +750F27E862B2D7D9FEB5DEEABD05CAEAB50C5DD1F8E89AB2A6A76B6FD4F0AD21 +81E48E86AA9C52E272C0761D3264F78024C493058A5250DCCAF943CCF4A65FEA +3106D5359A584EF79D65DAEE9EF284524D0A40C6A6DC5033C49D740811673194 +CC1177FF10B3414334765C2BF89CA1C7D17C9EBE9486479B475A4513B3ED8AB6 +D1527B1146DA7325A9915A9E84520C043CD5806531B13773EB76B45F9E96B800 +A8C0A25FA1DC2EDB35E91AC6ED1300FFC9EB6D646155DC9FF8D12A4A676D506E +7F15BB5355FB7F84B2F8AE9C975BE738EB0E855CBB513B391B21A4F5366921C1 +6A0A2795C5ABD2E24A70B0BDB4BEF07DE92B18E47096E2C33731DDDBFA0A0B01 +3410CF285FAEAA7BD1179CC76799C366033FC51E50569E1528D7C978C45EB936 +AF222E13C08ECC2A9EAC3B482DEDEE702BCFE3D3A58E19E74018AC6805251FFD +BC6656DBE1B4C00F76DF3BEA8BBDCA1721ED61BD99AE4A61C0ECC9F295CC4B81 +FA6F1F8008BD5011DAE4CA73C55CCD441A5134813EC0202D634CAB14C4FDB927 +6FE8FA7C6A8DFEF29413A124EB0C6FD7217F93997C5613F02D5436BA7776A913 +B6E940D4FF0580CC1B34DACB0736ACF3A534955C9355B4B1E00EBBB6D5CD76C0 +49A1386A5552EEE2EE9A1F0C73DF8C00BD31CC14095385F0CD4FE90F8DC42E07 +588B28174D701A873121F1C71958AFB10610D90D436B1C23D8E3C4662E08646B +E73DF766E2BB4A1DCA606F70A6DD00499A3C842D826A6DC72EC3441F71FB00B7 +AD814CB8716A8955B9B61CDCD11AB857BF04E211868E4B1B158B4BB2E60DB2FB +25EDFB42586CE6C361A180F736354037A8E31D86231892E301CABF90DCE147DE +B44CB65C1E5F046C5B8087201B36A634CDCACE4846118BAA464D6990FB281D13 +A9B75142A4F86E274FD7F8487CC56EE38EDBB8E688337D8EA76273B98BB4F694 +BF1F5D3C7BEE18519C72E397D87F57AA7FFE59BB49BB70184E3EEB54B81B9A15 +3FE205274C24EFD4B8388562B500D672CD32D96A0F822507C352C2BBA12450FB +72956B639F3B56F43F77036B3A607687CA35EE92C6E1E0168709CC2454865997 +D89D968D384548DF558E27F1A213E09E5CF339523FB31BEFA5E45A9A874A00DC +C2843351AA96704783D4620EF95475925587F37C889BE748B33BF5D3C8D99C5A +95BB2B55B1AE23879901AE64B434F3E01C8B4493FB282F561393C972BA7BAD2A +503E18D111ED3C1BA70AE497D01C31E6D295C5B57871020771D6A96D22B33D14 +AC4EE6F9E4698D6BC4AE0A872705BDC1E0546697B5DB2A64CE4A1F400E643ED1 +5372ECB4F2B1B0747317DA34648E590BE041C1062B23F92013A6651BD853CD0F +2F49419C82435299A985075647C2B8F505F1182D24A3390A0718F3C255025BD1 +6919DEFD68FDDAF4C35FB75996FC3D0B793F888D1FF6B09797D8A528524677E5 +4A04F14D4EC256FFBE3846089ED716DD3567519F5F0EC8BAB700ABE6B1EC1080 +801653126A22D50D8F1964C77A371217ACD50C6D8989B3E8CF29A0FD20A5F896 +A1AF938DD27979543EEA1BA46D6EFCC1D101EE74AA0D5D110F8D1404DA4DBCE9 +4C4AE92FF9E4D7AAC3FB79BFC30B566DD1831B1D68BD0E067D963A725550D57B +0F652A65A2AAC98FD9CD979DCB81EF7A2A18A06661FF72E5CD5D593078D4A145 +7DB25ED6480383F1E3E30085EAE0F5230FCF4BB397866E5D465F7CE1FD84FFD1 +39FCC779F3072103DA48DF38BE65355781BC259C1DB6A4ED0BF805F51BFECA21 +AB0AEF7ABD154098EC0F3DD76B136833BCFD9222F331C8AC1456BA95080F9C3E +7B05A0CED7C26E24B03C7DC4245F1E3B8FD7BA40578CE7D61AD1E4A708C013F9 +8141F6834DB125035CEFF6A72B147027D49068B1BDB77DE7563F12994F933960 +68A87C4F50272C91B859CB83CC6488843529EF6F55977812E5F766DE23AF77B2 +DA859379045E0BDE87860BDAB3D0D37C033C05CDA9680B652FB1E2913B766CA2 +BA62CEF6BE7D6B266672D994BCFD263C32DC29674B45460E38BCB2BFCA4844D1 +1DD4BE395315946DB693E20B21031EB41C20A82495AB0E49D2DCB51D52B893DF +48A16E3180F04C9AE15FB60FBEF9BE5A80D33C51C9FB97B89FD9891109E25F05 +00253805C693E8FC4D58DB6F730D1D80C7F4E5ABC64F88F22D2E51D1A353C307 +5D8E6FF6A1D17347BDE026E6D1D00A2195BCAD9A4A375275EA6509FC3044C5CA +219840C08C3335CD820377534847A16EEA2EEA228D9A5EDFFE34454012E9AF65 +FB638246ECA0772825C3D72B32CF913DBA6921B35473721E263C209A7DC6414F +C066328E084F3E3D23D8DF87B70E31EC2E9479938162B353A15DCB1320DAFA11 +6BF06231AEBAC8364AAE499EB21E4C2C5238B3CF10F2F02B39AE0B29B9BE6C7F +86C90B6209B774317B5422BDB058AADCB888E9BDBB1CC80505089BF8A7281D3D +69F98EFCFB87BEC440009950D0ADB1EF1FC32F4265ECE9E7AD363EBC604389F6 +82CAE39E3FE7F3C17A92FADD0DA81EF29D4BFEF9EB143C9828BBE3FF15EE999A +A7F1D8F45647708B6AE7820AF8B82E8BDC890F2D535E3A58A94E16EA4B055FBD +9F4F24AF32BA7395D030E6D8D3FF0F5117CD5E8CB108CC1071EE9BBF59E8E90F +17FDC474037759BB28B9AF3DDD7E4D50F02AA3D2A161ADFEC0EB24566EE286EB +50D0DBC27A38CE66F1F78C44C3BA373EB0C5CBD11EBCDEE495A5BBE44E9CE999 +18E50F7B65E4EF21BB51BEF70CBD9932D182E67063BAACD5DB4FC516D03F8951 +D12D92887B9E726E064E1E1F0EC4CC09EC8A90F36A358012E5B5D7749B11095C +F8027A8C4F8D58C67EF58105AE39BB0276B7870FD90B45D73260D54D9977DD0F +F17EF66C257ACB65636E2FB1EA6EB9B66A77310A65C9F328CB212B612F1D86D1 +02AFCB6EDCB931CDFC0DFB5D8C145096878DDD85D0A621BEE643FB3991F6EABC +5C7DBE8FC841A401D00B7EC7C3867D0A51C1264B659A0F0D54B3733BEBA8037C +772057BE4EBAAA8B01E4140DCE5DB31943121F1734F4B5FD0E3F8C71FD0DAE50 +8A47BD2C7F464D787CAA1ECF68689A16D650BA5890AB06689B5F57ED69DDAADF +8D7EC1B634B294F523BC185FA525C6ADBAB0E0FD033128395B9F39D50722B2A8 +7CF8D529CBD2891F59876BCF302CCC06E9A301663B1D29F5F9B5B047EDB9F9F0 +96406FE1CEF3788ED72D1FD1733239875470A74633545ACC6E1BAD7A32FBFFA0 +9D3AAA7FB6DD0DF858D316D753B1AA5B38AB6F19A1606C68E5DE529E05F95BF3 +9FF1A51B4A8C0FAF6DDC0F2B7714A5AE4D16A1724730901236C637873129C435 +384A6D16BE80A7B5831F0495060AE8D3320018FDD68E5B3AD55E7D82D5E49933 +EFFFD35E73B26D813DF674AB7BDACEFDD5141036F433394BB5EDE175FC7E48BF +C9BE85ADB290549290BB464AAC93F4C3D52F5A9136F8C9B00063B49ACB25CFB5 +E5F9FF277172FEAD8A36B3AB87A2D82B65C78C59A470C94570AC8D0FB3BB6919 +4853AC866CD8890A73CFE28705B379B09C4D25DC3AEB0ACA921B98225C27FD47 +52A7F9071ACA940E605890F35FAD92C4D1330773302591720A70C9192E5FAA75 +700AF91056CD02A1D54129A3C573BCF54FB3ADE21A23212556673BEDD0F96F42 +CDDD606045D5EB18E12488162DB826FF09D0EF4C2B9DE91B6D1A4AB273CB63DC +F22ABFB8615FEAF4EEB614F3D7B3AD83B35FDA4DF8DDFE65599BB5EA87B72CC9 +3DB1C3D31CF99E2B9A8BB322885EAB2978E688CE00BDFF62AA653F72AA79FC5A +A53FCD50205C0ACCAA5B2B46FA5A4D2FDDF27494C1F02C347941CB2EF1082D98 +D7B0407ED524D4D0D24FA5C007D8E9E13B3581086FFD40E1B317152805DA6A8D +339B2F0CA3BFEBCA120414A5EDBA787DC0DF416DB643ED48C5AE3E1F7A91B4F7 +4898E267DF257D517700409FC72C74E267C19378D7B74201E6B2BE6FDB23138C +ED4A081628F6130640E6837BAEADA2FB35BEB16CD781386E951CE793A6F1689B +DEA3D1B479C33B43788DC9B61FCFC5CE75187EDA9E08C342CFB7DC624B03223B +F83C762189575E839A54F1AAE01462670E5D30E37D72AA9EB4F846083BDE9010 +232A026C3369B88A64992EB292A41FFE5B5FEF348429C26BA53F936D18613DDE +F50DE424D32D197B6482586BFF7659EC47723E3C8AB729B8050A7095CB757842 +DA63EA526AC4083DF375FA41CD04B1DCCEDA0C85EE4407CE858E2FAB980FE0A4 +31B02C13E6FFDD3F94E3DAC133B4DF54D2058E747F29F42782C5DBB6F5AFEC6E +10E1C0E143BA081061948BDCCFE0ED68FB0CB360CFD80344459D2DD754FED744 +0721973DE17B998B5EE7B2510524D93ADCEF1102BA70A0F24ACDCD364409708D +2C0CBAEB725003635E2D045711E6A84AF6F73BED391EC03BA777C9A62DEDF821 +697D6CF90BD4FD840A567A3191BE37677C6C6309CDF2670FEB739F94944BD82D +C908C9BF333C6D2213C8F5EDD12742708009DC4B63ABA99FC3C84565466FD369 +7DC0FA50A64DD755A62E78DC9625C7424BA4CAC2F8AAB5C2BFE2375648759AA6 +52D842E15FE76EB4273E91617ACF2F3BC395A4F7A7DAAD9B18B9ED21B247A927 +ACC803C8C3ED6720BF7399F4FDD3F84241820A323C96BB95F8037C618DC820EE +1692DF92CA48E08F4686888F155ECDB3DA21BD4A4F6EC2D498775D1163921B44 +21F3B4C6F2C8523ADA57D15B1C2BB6C5A9D25E32DD3A19CD6D6CE4E1B5691240 +F90489EEFC20F0C0A3E8FE36D61287067CE94CC364320F94A95CB244DC23C7A4 +8B4C2C5EA46AEC0D4D4B +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +TeXDict begin 39158280 55380996 1000 600 600 (informator.dvi) +@start /Fa 173[54 3[59 78[{}2 83.022 /CMSS10 rf /Fb 134[71 +71 75 75 83 75 75 50 108 1[75 58 75 1[58 58 108 108 58 +58 58 46 58 100 75 10[66 75 75 62 2[33 58 1[58 75 1[75 +75 82 75 75 75 75 33 1[66 65[{}40 83.022 /SkakNew-Figurine +rf /Fc 133[40 42 1[62 42 47 34 35 31 47 47 46 47 72 21 +44 1[21 47 46 1[42 47 41 47 44 84[49 12[{}24 83.022 /CMSSBX10 +rf /Fd 145[42 110[{}1 83.022 /CMSY10 rf /Fe 128[42 5[44 +1[60 1[46 32 33 33 1[46 42 46 69 23 44 1[23 46 1[25 37 +46 37 46 42 12[60 4[65 5[30 4[63 60 59 16[42 2[23 28 +45[{}30 83.022 /CMR10 rf /Ff 134[51 3[54 2[38 2[49 54 +81 27 6[43 2[54 49 12[70 9[50 1[73 15[49 4[49 49 49 49 +3[27 32[57 11[{}20 99.6264 /CMR12 rf /Fg 140[74 7[74 +9[74 97[{}3 143.462 /CMTT12 rf /Fh 134[70 2[70 1[51 52 +51 2[66 73 111 36 70 1[36 73 66 40 58 1[58 73 66 13[73 +2[90 6[47 7[99 65[{}22 143.462 /CMR17 rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin +%%BeginPaperSize: a4 +/setpagedevice where +{ pop << /PageSize [595 842] >> setpagedevice } +{ /a4 where { pop a4 } if } +ifelse +%%EndPaperSize + end +%%EndSetup +%%Page: 1 1 +TeXDict begin 1 0 bop 0 TeXcolorgray Black 0 TeXcolorgray +0 TeXcolorgray 0 TeXcolorgray 407 797 a Fh(Informator)42 +b(Sym)l(b)t(ols)g(Av)-7 b(ailable)43 b(in)g(the)h Fg(skak)f +Fh(P)l(ac)l(k)-7 b(age)1500 1038 y Ff(T)f(orb)s(en)33 +b(Ho\013mann)1592 1233 y(July)h(18,)e(2013)p Black 0 +1460 a +tx@Dict begin gsave STV CP T /ps@rot 0 def grestore end + 0 1460 a 0 1460 a +tx@Dict begin gsave STV CP T /ps@refangle 0. def grestore end + 0 1460 a 0 TeXcolorgray 0 1460 +a +tx@Dict begin gsave STV CP T /ps@rot 0 def grestore end + 0 1460 a 83 1543 a Fe(Dirk)23 b(B\177)-42 b(ac)n(hle)22 +b(has)h(b)r(een)h(so)e(kind)h(as)g(to)g(create)f(a)h(n)n(um-)0 +1643 y(b)r(er)34 b(of)g(the)h(sym)n(b)r(ols)e(used)i(in)f(the)h +(Informator.)55 b(They)0 1742 y(are)27 b(no)n(w)g(a)g(part)g(of)g(the)h +(sk)-5 b(ak)27 b(fon)n(t.)p 83 2878 1031 7 v 133 2971 +a(Command)289 b(Output)p 83 3019 1031 5 v 133 3112 a +Fd(n)p Fc(wb)s(etter)431 b Fb(f)133 3212 y Fd(n)p Fc(bb)s(etter)446 +b Fb(g)133 3312 y Fd(n)p Fc(wupp)s(erhand)262 b Fb(c)133 +3411 y Fd(n)p Fc(bupp)s(erhand)277 b Fb(e)133 3511 y +Fd(n)p Fc(wdecisive)348 b Fb(h)133 3610 y Fd(n)p Fc(b)s(decisive)360 +b Fb(i)133 3710 y Fd(n)p Fc(equal)525 b Fb(j)133 3810 +y Fd(n)p Fc(unclea)m(r)456 b Fb(k)133 3909 y Fd(n)p Fc(comp)s(ensation) +201 b Fb(n)133 4009 y Fd(n)p Fc(devadvantage)196 b Fb(t)133 +4109 y Fd(n)p Fc(mo)m(rero)s(om)331 b Fb(U)133 4208 y +Fd(n)p Fc(withattack)316 b Fb(A)133 4308 y Fd(n)p Fc(withinit)451 +b Fb(C)133 4407 y Fd(n)p Fc(counterpla)m(y)282 b Fb(V)133 +4507 y Fd(n)p Fc(zugzw)m(ang)348 b Fb(D)133 4607 y Fd(n)p +Fc(mate)525 b Fb(m)133 4706 y Fd(n)p Fc(withidea)399 +b Fb(E)133 4806 y Fd(n)p Fc(onlymove)359 b Fb(F)133 4906 +y Fd(n)p Fc(b)s(etteris)416 b Fb(b)133 5005 y Fd(n)p +Fc(\014le)602 b Fb(H)133 5105 y Fd(n)p Fc(diagonal)401 +b Fb(G)133 5204 y Fd(n)p Fc(centre)480 b Fb(I)133 5304 +y Fd(n)p Fc(kside)537 b Fb(O)133 5404 y Fd(n)p Fc(qside)d +Fb(M)p 83 5455 1031 7 v 0 TeXcolorgray 0 TeXcolorgray +2001 1467 1007 7 v 2051 1560 a Fe(Command)265 b(Output)p +2001 1608 1007 5 v 2051 1701 a Fd(n)p Fc(w)m(eakpt)424 +b Fb(J)2051 1801 y Fd(n)p Fc(ending)444 b Fb(L)2051 1900 +y Fd(n)p Fc(bishoppair)308 b Fb(a)2051 2000 y Fd(n)p +Fc(opp)s(osbishops)192 b Fb(o)2051 2100 y Fd(n)p Fc(samebishops)223 +b Fb(s)2051 2199 y Fd(n)p Fc(unitedpa)m(wns)d Fb(u)2051 +2299 y Fd(n)p Fc(seppa)m(wns)321 b Fb(q)2051 2398 y Fd(n)p +Fc(doublepa)m(wns)226 b Fb(d)2051 2498 y Fd(n)p Fc(passedpa)m(wn)259 +b Fb(r)2051 2598 y Fd(n)p Fc(mo)m(repa)m(wns)280 b Fb(S)2051 +2697 y Fd(n)p Fc(timelimit)356 b Fb(T)2051 2797 y Fd(n)p +Fc(novelt)m(y)431 b Fa(N)2051 2897 y Fd(n)p Fc(comment)324 +b Fa(RR)2051 2996 y Fd(n)p Fc(va)m(rious)441 b Fa(R)2051 +3096 y Fd(n)p Fc(without)403 b Fb(w)2051 3195 y Fd(n)p +Fc(with)530 b Fb(v)2051 3295 y Fd(n)p Fc(etc)598 b Fb(P)2051 +3395 y Fd(n)p Fc(see)559 b Fe(see)2051 3494 y Fd(n)p +Fc(ma)m(rk)m(era)394 b Fb(x)2051 3594 y Fd(n)p Fc(ma)m(rk)m(erb)d +Fb(y)p 2001 3645 1007 7 v 0 TeXcolorgray 1856 5662 a +Fe(1)p 0 TeXcolorgray eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF |