%!PS-Adobe-2.0 %%Creator: dvips 5.528 Copyright 1986, 1994 Radical Eye Software %%Title: temp.dvi %%CreationDate: Tue Feb 4 12:52:05 1997 %%Pages: 29 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%EndComments %DVIPSCommandLine: dvips -o temp.ps temp %DVIPSParameters: dpi=300, comments removed %DVIPSSource: TeX output 1997.02.04:1251 %%BeginProcSet: tex.pro /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{ statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{ pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get} B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D }B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail} B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{ 3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{ 3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet %%BeginProcSet: special.pro TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{itransform lineto} }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale false def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin 40258431 52099146 1000 300 300 (/tmp_mnt/Net/sparky/sparky5/gropp/MPI2/doc/temp.dvi) @start /Fa 6 111 df<70F8F8F87005057C840D>58 D<70F8FCFC740404040808101020 40060E7C840D>I62 D<00E001E001E000C000000000000000000000000000000E00 130023804380438043808700070007000E000E001C001C001C2038403840384038801900 0E000B1F7E9E10>105 D<0000C00001E00001E00001C000000000000000000000000000 0000000000000000001E0000630000438000838001038001038002070000070000070000 0700000E00000E00000E00000E00001C00001C00001C00001C0000380000380000380000 380000700000700030700078E000F1C0006380003E00001328819E13>I<1E07802318C0 23A06043C0704380704380708700E00700E00700E00700E00E01C00E01C00E01C00E0382 1C03841C07041C07081C03083803101801E017147E931B>110 D E /Fb 7 113 df73 D77 D<1FFC003FFE007FFF00780F00F00780E00380E00380E00380 E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780 F00780780F007FFF003FFE001FFC0011197E9816>79 D<7FF800FFFE007FFF001C0F801C 03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FF8001C00001C 00001C00001C00001C00001C00001C00007F0000FF80007F000012197F9816>I<018003 C003C0018000000000000000007FC07FC07FC001C001C001C001C001C001C001C001C001 C001C001C001C07FFFFFFF7FFF101A7D9916>105 D<0030007800780030000000000000 00001FF81FF81FF800380038003800380038003800380038003800380038003800380038 003800380038003800386070F0F0FFE07FC03F800D237E9916>I<7E3E00FEFF007FFF80 0F83C00F00E00E00E00E00700E00700E00700E00700E00700E00700E00E00F01E00F83C0 0FFF800EFF000E3C000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000 141B809116>112 D E /Fc 11 117 df45 D<0000E000000000E000000001F000000001F000000001F000000003F800000003F80000 0006FC00000006FC0000000EFE0000000C7E0000000C7E000000183F000000183F000000 303F800000301F800000701FC00000600FC00000600FC00000C007E00000FFFFE00001FF FFF000018003F000018003F000030001F800030001F800060001FC00060000FC000E0000 FE00FFE00FFFE0FFE00FFFE0231F7E9E28>65 D<001FF80000FFFF0001F81F8007E007E0 0FC003F01F8001F81F0000F83F0000FC7F0000FE7E00007E7E00007EFE00007FFE00007F FE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007F7E00007E7F0000FE 7F0000FE3F0000FC3F8001FC1F8001F80FC003F007E007E001F81F8000FFFF00001FF800 201F7D9E27>79 D<7FFFFFFC7FFFFFFC7C07E07C7007E01C6007E00C6007E00CE007E00E C007E006C007E006C007E006C007E0060007E0000007E0000007E0000007E0000007E000 0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 0007E0000007E0000007E00003FFFFC003FFFFC01F1E7E9D24>84 D<01FE0007FF800F83C01E01E03E00F07C00F07C00F8FC00F8FFFFF8FFFFF8FC0000FC00 00FC00007C00007C00003E00181E00180F807007FFE000FF8015147F9318>101 D104 D 108 D110 D<01FF0007FFC01F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC00 7EFC007E7C007C7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>I114 D<01800180018003800380038007800F803F80FFFCFFFC0F800F800F800F800F800F800F 800F800F800F800F860F860F860F860F8607CC03F801F00F1D7F9C14>116 D E /Fd 3 117 df<3C3C002646004687004707008E07008E07000E07000E07001C0E00 1C0E001C0E001C1C00381C40381C40383840383880701900300E0012127C9117>110 D<01E007180C0C180C380C300E700E700EE01CE01CE01CE018E038E030E06060C031801E 000F127B9115>I<00C001C001C001C00380038003800380FFE00700070007000E000E00 0E000E001C001C001C001C00384038403840388019000E000B1A7D990E>116 D E /Fe 31 119 df<001C0000003E0000003E0000002E0000006700000067000000E780 0000C7800000C3800001C3C0000183C0000181C0000381E0000381E0000700F0000700F0 000600F0000E0078000FFFF8000FFFF8001C003C001C003C0018003C0038001E0038001E 0070001F0070000F0070000F00E0000780191D7F9C1C>65 DI<003FC000FFF003C0F00780300F00001E00003C00003C000078 0000780000780000F00000F00000F00000F00000F00000F00000F00000F00000F0000078 00007800007800003C00003C00001E00000F000807801803C07800FFF0003F80151F7D9D 1B>IIII<003F80 01FFF003C0F80780380F00181E00003C00003C0000780000780000780000F00000F00000 F00000F00000F00000F00000F007F8F007F8F000387800387800387800383C00383C0038 1E00380F003807803803C0F801FFF0003F80151F7D9D1C>I73 D76 DII<003F000001FFE00003FFF00007C0F8 000F807C001E001E003E001F003C000F00780007807800078078000780F00003C0F00003 C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F80007C078000780780007 807C000F803C000F003E001F001F003E000F807C0007C0F80003FFF00001FFE000003F00 001A1F7E9D1F>II82 D<03F8000FFE001C0F00380700700300600000E0 0000E00000E00000E00000F000007800007F00003FE0001FFC0007FE0001FF00001F8000 07800003C00003C00001C00001C00001C00001C0C00180E00380F007007C0E001FFC0007 F000121F7E9D17>III89 D98 D<07E00FF81FFC3C1C70047000E000E000E000E000E000E000700070043C1C1FFC0FF807 E00E127E9112>I<000E000E000E000E000E000E000E000E000E000E000E0F8E1FEE3FFE 7C3E700E700EE00EE00EE00EE00EE00EE00EF00E701E7C3E3FFE1FEE0F8E0F1D7E9C15> I<07C01FE03FF078787018601CFFFCFFFCFFFCE000E000E000700070043C1C3FFC1FF807 E00E127E9112>I<00FC01FC03FC07000E000E000E000E000E000E000E00FFE0FFE00E00 0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E1D809C0D> I109 DI<03F0000FFC001FFE003C0F00780780700380E0 01C0E001C0E001C0E001C0E001C0F003C07003807807803C0F001FFE000FFC0003F00012 127F9115>I114 D<1FC03FF07FF0F030E000E000F0007F003FC01FE000 F0003800388038F078FFF07FE01FC00D127F9110>I<1C001C001C001C001C001C00FFE0 FFE01C001C001C001C001C001C001C001C001C001C001C001C001C201FF00FF007C00C18 7F970F>III E /Ff 22 119 df<70F8F8F0E005057B84 0E>46 D<00000200000006000000060000000E0000001E0000001E0000003F0000002F00 00004F0000004F0000008F0000010F0000010F0000020F0000020F0000040F00000C0F00 00080F0000100F0000100F0000200F80003FFF800040078000C007800080078001000780 010007800200078002000780060007801E000F80FF807FF81D207E9F22>65 D<01FFFF80001E00E0001E0070001E0038001E001C003C001C003C000E003C000E003C00 0E0078000E0078000E0078000E0078000E00F0001E00F0001E00F0001E00F0001E01E000 3C01E0003C01E0003C01E0007803C0007003C0007003C000E003C001C0078001C0078003 8007800E0007801C000F007000FFFFC0001F1F7D9E22>68 D<01FFFFFE001E001C001E00 0C001E0004001E0004003C0004003C0004003C0004003C00040078080800780800007808 000078180000F0300000FFF00000F0300000F0300001E0200001E0200001E0200001E000 1003C0002003C0002003C0004003C00040078000800780018007800100078007000F001F 00FFFFFE001F1F7D9E1F>I<01FFFF00001E03C0001E00E0001E0070001E0078003C0078 003C0078003C0078003C0078007800F0007800F0007801E0007801C000F0070000F01E00 00FFF00000F0380001E01C0001E01E0001E00E0001E00F0003C01E0003C01E0003C01E00 03C01E0007803C0007803C0807803C0807803C100F801C10FFF00C20000007C01D207D9E 21>82 D<00F1800389C00707800E03801C03803C0380380700780700780700780700F00E 00F00E00F00E00F00E20F01C40F01C40703C40705C40308C800F070013147C9317>97 D<007E0001C1000300800E07801E07801C07003C0200780000780000780000F00000F000 00F00000F00000F0000070010070020030040018380007C00011147C9315>99 D<0000780003F80000700000700000700000700000E00000E00000E00000E00001C00001 C000F1C00389C00707800E03801C03803C0380380700780700780700780700F00E00F00E 00F00E00F00E20F01C40F01C40703C40705C40308C800F070015207C9F17>I<007C01C2 07010E011C013C013802780C7BF07C00F000F000F000F0007000700170023804183807C0 10147C9315>I<00007800019C00033C00033C000718000700000700000E00000E00000E 00000E00000E0001FFE0001C00001C00001C00001C000038000038000038000038000038 0000700000700000700000700000700000700000E00000E00000E00000E00000C00001C0 0001C0000180003180007B0000F300006600003C00001629829F0E>I<003C6000E27001 C1E00380E00700E00F00E00E01C01E01C01E01C01E01C03C03803C03803C03803C03803C 07003C07001C0F001C17000C2E0003CE00000E00000E00001C00001C00301C00783800F0 700060E0003F8000141D7E9315>I<01E0000FE00001C00001C00001C00001C000038000 038000038000038000070000070000071E000763000E81800F01C00E01C00E01C01C0380 1C03801C03801C0380380700380700380700380E10700E20700C20701C20700C40E00CC0 60070014207D9F17>I<00C001E001E001C000000000000000000000000000000E003300 230043804300470087000E000E000E001C001C001C003840388030807080310033001C00 0B1F7C9E0E>I<03C01FC0038003800380038007000700070007000E000E000E000E001C 001C001C001C0038003800380038007000700070007100E200E200E200E200640038000A 207C9F0C>108 D<1C0F80F0002630C318004740640C004780680E004700700E00470070 0E008E00E01C000E00E01C000E00E01C000E00E01C001C01C038001C01C038001C01C038 001C01C0708038038071003803806100380380E100380380620070070066003003003800 21147C9325>I<1C0F802630C04740604780604700704700708E00E00E00E00E00E00E00 E01C01C01C01C01C01C01C03843803883803083807083803107003303001C016147C931A >I<007C0001C3000301800E01C01E01C01C01E03C01E07801E07801E07801E0F003C0F0 03C0F003C0F00780F00700700F00700E0030180018700007C00013147C9317>I<1C1E00 2661004783804787804707804703008E00000E00000E00000E00001C00001C00001C0000 1C000038000038000038000038000070000030000011147C9313>114 D<00FC030206010C030C070C060C000F800FF007F803FC003E000E700EF00CF00CE00840 1020601F8010147D9313>I<018001C0038003800380038007000700FFF007000E000E00 0E000E001C001C001C001C003800380038003820704070407080708031001E000C1C7C9B 0F>I<0E00C03300E02301C04381C04301C04701C08703800E03800E03800E03801C0700 1C07001C07001C07101C0E20180E20180E201C1E200C264007C38014147C9318>I<0E03 803307802307C04383C04301C04700C08700800E00800E00800E00801C01001C01001C01 001C02001C02001C04001C04001C08000E300003C00012147C9315>I E /Fg 44 123 df<000078007C7800FC7801FC7803C00003800007800007800007800007 8000078000078000078000078000FFFC78FFFC78FFFC7807807807807807807807807807 807807807807807807807807807807807807807807807807807807807807807807807807 8078078078078078152480A31A>12 D45 DI<00C001C007C0FFC0FFC0FBC003C003C003C003C003C003C0 03C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0 03C0FFFFFFFFFFFF10227CA118>49 D<03F0000FFC001FFE003C1F003007807007C06003 C0E003E0C001E04001E04001E00001E00001E00001E00003C00003C0000780000780000F 00001E00003C0000780000F00001E00001C0000380000700000E00001C00003800007000 00FFFFE0FFFFE0FFFFE013227EA118>I<01F00007FC001FFF003E0F003807807003C020 03C02003C00003C00003C00003C0000780000780000F00001E0003FC0003F80003FE0000 0F000007800003C00003C00001E00001E00001E00001E00001E08001E0C003C0E003C070 07803C0F801FFF000FFC0003F00013237EA118>I<001F00001F00002F00002F00006F00 00EF0000CF0001CF0001CF00038F00038F00078F00070F000F0F000E0F001E0F003C0F00 3C0F00780F00780F00F00F00FFFFF8FFFFF8FFFFF8000F00000F00000F00000F00000F00 000F00000F00000F00000F0015217FA018>I<007E0001FF0003FF0007C1000F00001E00 001E00003C00003C000078000078000078F800F1FE00F7FF00FF0F80FC0780F803C0F803 C0F801C0F001E0F001E0F001E0F001E0F001E07001E07001E07801E07803C03803C03C03 801C07801F0F000FFE0007FC0001F00013237EA118>54 D<001F0000001F0000003F8000 003F8000003B8000007BC0000073C0000071C00000F1E00000F1E00000E0E00001E0F000 01E0F00001C0F00003C0780003C078000380780007803C0007803C0007003C000F001E00 0F001E000FFFFE001FFFFF001FFFFF001C000F003C0007803C00078038000780780003C0 780003C0700003C0F00001E0F00001E0E00001E01B237EA220>65 D<000FF000007FFC0000FFFF0001F01F0003C00700078000000F0000001E0000003E0000 003C0000003C000000780000007800000078000000F0000000F0000000F0000000F00000 00F0000000F0000000F0000000F0000000F00000007800000078000000780000003C0000 003C0000003E0000001E0000000F0000000780008003C0038001F00F8000FFFF00007FFC 00000FF00019257DA31F>67 DIII<000FF000003FFE0000FFFF80 01F80F8003E00380078000000F0000001E0000001E0000003C0000003C00000078000000 7800000078000000F0000000F0000000F0000000F0000000F0000000F0000000F000FFC0 F000FFC0F000FFC0780003C0780003C0780003C03C0003C03C0003C01E0003C01E0003C0 0F0003C0078003C003E003C001F807C000FFFFC0003FFF00000FF8001A257DA321>I73 D76 DI<001FC000007FF00001FFFC0003F07E0007C01F000F80 0F801F0007C01E0003C03C0001E03C0001E0780000F0780000F0780000F070000070F000 0078F0000078F0000078F0000078F0000078F0000078F0000078F0000078F00000787800 00F0780000F0780000F07C0001F03C0001E03E0003E01E0003C01F0007C00F800F8007C0 1F0003F07E0001FFFC00007FF000001FC0001D257DA324>79 DI82 D<00FE0003FFC007FFE00F81E01E00603C00003C00007800007800007800007800007800 007C00003C00003F00001FC0000FFC0007FF0001FF80003FC00007E00001F00000F00000 F8000078000078000078000078000078000078C000F0E000F0F801E07E07C03FFF800FFF 0001FC0015257EA31B>III<07E01FF83FFC381E201E000F000F00 0F000F00FF07FF1FFF3E0F780FF00FF00FF00FF00FF83F7FFF3FEF1F8F10167E9517>97 D<01FC0007FF000FFF801F03803C0180780000780000700000F00000F00000F00000F000 00F00000F000007800007800007800003C00401F03C00FFFC007FF8001FC0012167E9516 >99 D<0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0 0003C00003C003E3C00FFBC01FFFC03F0FC03C07C07803C07803C0F003C0F003C0F003C0 F003C0F003C0F003C0F003C0F003C07803C07803C03C07C03E0FC01FFFC00FFBC003E3C0 12237EA219>I<03F00007FC001FFE003E0F003C0780780380780380F001C0FFFFC0FFFF C0FFFFC0F00000F00000F000007000007800007800003C00801F07800FFF8007FF0001F8 0012167E9516>I<003F00FF01FF03C0038007800780078007800780078007800780FFF8 FFF8FFF80780078007800780078007800780078007800780078007800780078007800780 078007800780102380A20F>I<01F07807FFF80FFFF81F1F001E0F003C07803C07803C07 803C07803C07801E0F001F1F000FFE001FFC0019F0003800003800003C00001FFE001FFF C01FFFE03FFFF07801F07800F8F00078F00078F00078F000787800F03E03E01FFFC00FFF 8001FC0015217F9518>III108 DII<01FC0007FF000FFF801F07C03C01E07800F07800F0700070F00078F00078F00078 F00078F00078F000787800F07800F07C01F03E03E01F07C00FFF8007FF0001FC0015167F 9518>II114 D<07F01FFC3FFE3C0E7806780078007C003F003FF0 1FF80FFC01FE001F000F000F000FC00FF81EFFFE3FFC0FF010167F9513>I<0F000F000F 000F000F000F00FFF8FFF8FFF80F000F000F000F000F000F000F000F000F000F000F000F 000F000F000F080F1C07FC07F803E00E1C7F9B12>I III<7801F07C01E03E03C01E07 C00F0780078F0007DE0003FC0001FC0000F80000700000F80001FC0003DC00039E00078F 000F07801E07801E03C03C01E07800F0F800F81516809516>I<7FFFC07FFFC07FFFC000 0F80000F00001E00003E00007C0000780000F00001F00003E00003C0000780000F80001F 00001E00003C00007C0000FFFFC0FFFFC0FFFFC012167F9515>122 D E /Fh 24 89 df45 D<3078F8787005057C840D>I<003F8000 C1E00100F00200780400780400780F007C0F807C0F807C0F00780600780000F80000F000 01E00001C0000380000700000E00001C0000380000600000C00001800003002006002008 00401000403FFFC07FFF80FFFF80161E7E9D17>50 D<007F000183C00201E00400F00700 F00F00F00F01F00F01F00001E00001E00003C0000380000700000E0000F800000E000007 000007800007C00003C00007C03007C07807C0F807C0F807C0F00780800F00400E00201C 0018780007E000141F7D9D17>I<0000600000600000E00001C00003C00005C0000DC000 09C00011C000238000438000C38000838001038002038004070008070018070010070020 0700400700FFFFF0000E00000E00000E00000E00000E00001C00001E0001FFE0141E7E9D 17>I<000F8000704000C0200180E00301E00701E00E00C01E00001C00003C0000380000 78F800790E007A07007C0300F80380F80380F003C0F003C0F003C0F003C0F00780E00780 E00780E00700E00F00600E00701C0030180018700007C000131F7C9D17>54 D<0000100000001800000038000000380000007800000078000000FC000001BC0000013C 0000033C0000023C0000063C0000043E0000081E0000081E0000101E0000101E0000201E 0000200F0000400F0000400F0000FFFF0000800F0001000F800100078002000780020007 8004000780040007800C0007C03E0007C0FF807FFC1E207E9F22>65 D<0001F808000E061800380138007000F801E0007803C0007007800030078000300F0000 301F0000301E0000303E0000203C0000007C0000007C0000007C0000007C000000F80000 00F8000000F8000000F8000000F80000007800004078000080780000803C0000803C0001 001C0002000E00020006000C000300100001C0E000003F00001D217B9F21>67 D<07FFFF00007C01E0003C00F0003C00780078003C0078003C0078001E0078001E007800 1E0078001F00F0001F00F0001F00F0001F00F0001F00F0001F00F0001F01E0001E01E000 3E01E0003E01E0003E01E0003C01E0007C03C0007803C000F003C000F003C001E003C003 C003C0078007800F0007803C00FFFFE000201F7E9E23>I<07FFFFF8007C0078003C0038 003C001800780018007800080078000800780008007800080078080800F0100000F01000 00F0100000F0300000FFF00000F0700001E0200001E0200001E0200001E0200001E00008 01E0001003C0001003C0001003C0002003C0002003C0006003C000C0078001C0078007C0 FFFFFF801D1F7E9E1F>I<07FFC7FFC0007C00F800003C007800003C007800007800F000 007800F000007800F000007800F000007800F000007800F00000F001E00000F001E00000 F001E00000F001E00000FFFFE00000F001E00001E003C00001E003C00001E003C00001E0 03C00001E003C00001E003C00003C007800003C007800003C007800003C007800003C007 800003C007800007800F000007C00F8000FFF8FFF800221F7E9E22>72 D<07FFE0007C00003C00003C0000780000780000780000780000780000780000F00000F0 0000F00000F00000F00000F00001E00001E00001E00001E00001E00001E00003C00003C0 0003C00003C00003C00003C00007800007C000FFFC00131F7F9E10>I<07FFF000007E00 00003C0000003C000000780000007800000078000000780000007800000078000000F000 0000F0000000F0000000F0000000F0000000F0000001E0000001E0000001E0000001E000 0001E0008001E0010003C0010003C0010003C0030003C0020003C0060003C0060007801E 0007807C00FFFFFC00191F7E9E1C>76 D<07FC0000FFC0007C0000F800003C0001780000 3C00017800004E0002F000004E0002F000004E0004F000004E0004F000004E0008F00000 4E0008F00000870011E00000870011E00000870021E00000870021E00000870041E00000 838041E00001038083C00001038083C00001038103C00001038203C0000101C203C00001 01C403C0000201C40780000201C80780000201C80780000201D00780000200F007800006 00E00780000600E00F00000F00C00F8000FFE0C1FFF8002A1F7E9E2A>I<07FC01FFC000 3E003E00003E001800003E001800004F001000004F001000004780100000478010000043 C010000043C010000083C020000081E020000081E020000080F020000080F02000008078 2000010078400001007C400001003C400001003C400001001E400001001E400002000F80 0002000F800002000F800002000780000200078000060003800006000300000F00010000 FFE0010000221F7E9E22>I<0003F800001E0E000038070000E0038001C001C003C001E0 078000E00F0000F00F0000F01E0000F01E0000F83E0000F83C0000F87C0000F87C0000F8 7C0000F87C0000F8F80001F0F80001F0F80001F0F80001F0F80003E0780003E0780003C0 780007C07C0007803C000F003C001E001E001C000E0038000700F00003C3C00000FE0000 1D217B9F23>I<07FFFF00007C03C0003C01E0003C00F0007800F0007800F8007800F800 7800F8007800F8007800F000F001F000F001E000F003C000F0078000F00F0000FFF80001 E0000001E0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003 C0000003C0000003C000000780000007C00000FFFC00001D1F7E9E1F>I<07FFFC00007C 0700003C03C0003C01E0007801E0007801F0007801F0007801F0007801F0007801E000F0 03E000F003C000F0078000F00F0000F03C0000FFF00001E0300001E0380001E01C0001E0 1C0001E01C0001E01E0003C03E0003C03E0003C03E0003C03E0003C03E0003C03E020780 3E0407C01F04FFFC0F18000003E01F207E9E21>82 D<003F040060CC01803C03801C0300 1C0700180600080E00080E00080E00080E00000F00000F80000FE00007FE0003FF8001FF C0007FE00007E00001E00000E00000F00000F04000E04000E04000E04000E06000C06001 80E00380F80300C60C0081F80016217D9F19>I<3FFFFFF03C0780F03007803060078030 400F0010400F0010C00F0010800F0010800F0010800F0010001E0000001E0000001E0000 001E0000001E0000001E0000003C0000003C0000003C0000003C0000003C0000003C0000 00780000007800000078000000780000007800000078000000F0000001F800007FFFE000 1C1F7A9E21>IIII<03FFC0FFC0007F007E00003E003800001E003000001E002000000F00 4000000F008000000F81000000078200000007C600000003C400000003E800000001F000 000001F000000000F000000000F800000000F8000000017C000000023C000000043C0000 000C1E000000081E000000101F000000200F000000400F800000C0078000008007C00001 0003C000070003E0001F8007E000FFE01FFE00221F7F9E22>I E /Fi 15 111 df<020408103020604040C0C0C0C0C0C0C0C0404060203010080402071A7F 920C>40 D<8040201018080C0404060606060606060604040C081810204080071A7E920C >I<1F00318060C04040C060C060C060C060C060C060C060C060404060C031801F000B10 7F8F0F>48 D<0C003C00CC000C000C000C000C000C000C000C000C000C000C000C000C00 FF8009107E8F0F>I<1F00618040C08060C0600060006000C00180030006000C00102020 207FC0FFC00B107F8F0F>I<1F00218060C060C000C0008001800F00008000400060C060 C060804060801F000B107F8F0F>I<0300030007000F000B001300330023004300C300FF E003000300030003001FE00B107F8F0F>I<20803F002C002000200020002F0030802040 006000600060C06080C061801F000B107F8F0F>I<0780184030C060C06000C000CF00F0 80E040C060C060C060406060C030801F000B107F8F0F>I<40007FE07FC0808080800100 0200040004000C0008000800180018001800180018000B117E900F>I<1F00318060C060 C060C071803F000F00338061C0C060C060C060404060801F000B107F8F0F>I<1F003180 60C0C040C060C060C06040E021E01E600060004060C0608043003E000B107F8F0F>I<0F E0018001800180018001800180018001800180018001800180C180C18043003E000B117E 9010>74 D<3E006300018001800F8031804180C190C19063903DE00C0B7F8A0F>97 D110 D E /Fj 74 126 df<4010E038F078E038E038E038E038E038E038E038E038E038E03860 300D0E7B9C18>34 D<3803007C07807C0780EE0F80EE0F00EE0F00EE1F00EE1E00EE1E00 EE3E007C3C007C3C00387C0000780000780000F80000F00001F00001E00001E00003E000 03C00003C00007C0000783800787C00F87C00F0EE00F0EE01F0EE01E0EE01E0EE03E0EE0 3C07C03C07C018038013247E9F18>37 D<01C00007E0000FF0000E70001C38001C38001C 38001C38001C73F01C73F01CE3F00FE3800FC7000F87000F07001F0E003F0E007B8E0073 DC00E1DC00E0F800E0F800E07070E0787070FC707FFFE03FCFE00F03C0141C7F9B18>I< 387C7C7E3E0E0E0E1C1C38F8F0C0070E789B18>I<007000F001E003C007800F001E001C 00380038007000700070007000E000E000E000E000E000E000E000E00070007000700070 00380038001C001E000F00078003C001F000F000700C24799F18>I<6000F00078003C00 1E000F000780038001C001C000E000E000E000E000700070007000700070007000700070 00E000E000E000E001C001C0038007800F001E003C007800F00060000C247C9F18>I<01 C00001C00001C00001C000C1C180F1C780F9CF807FFF001FFC0007F00007F0001FFC007F FF00F9CF80F1C780C1C18001C00001C00001C00001C00011147D9718>I<1C3E7E7F3F1F 070E1E7CF860080C788518>44 D<7FFF00FFFF80FFFF807FFF0011047D8F18>I<3078FC FC78300606778518>I<000300000780000780000F80000F00001F00001E00001E00003E 00003C00007C0000780000780000F80000F00001F00001E00003E00003C00003C00007C0 000780000F80000F00000F00001F00001E00003E00003C00003C00007C0000780000F800 00F00000F0000060000011247D9F18>I<01F00007FC000FFE001F1F001C070038038078 03C07001C07001C0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F0 01E07001C07001C07803C03803801C07001F1F000FFE0007FC0001F000131C7E9B18>I< 01800380038007800F803F80FF80FB804380038003800380038003800380038003800380 03800380038003800380038003807FFCFFFE7FFC0F1C7B9B18>I<03F0000FFE003FFF00 7C0F807003C0E001C0F000E0F000E06000E00000E00000E00001C00001C00003C0000780 000F00001E00003C0000780000F00001E00007C0000F80001E00E03C00E07FFFE0FFFFE0 7FFFE0131C7E9B18>I<07F8001FFE003FFF007807807803C07801C03001C00001C00003 C0000380000F0003FF0003FE0003FF000007800003C00001C00000E00000E00000E0F000 E0F000E0F001C0F003C07C07803FFF001FFE0003F800131C7E9B18>I<001F00003F0000 770000770000E70001E70001C7000387000787000707000E07001E07003C070038070078 0700F00700FFFFF8FFFFF8FFFFF8000700000700000700000700000700000700007FF000 FFF8007FF0151C7F9B18>I<1FFF803FFF803FFF80380000380000380000380000380000 3800003800003800003BF8003FFE003FFF003C07801803C00001C00000E00000E06000E0 F000E0F000E0E001C07003C07C0F803FFF001FFC0003F000131C7E9B18>I<3078FCFC78 3000000000000000003078FCFC78300614779318>58 D<183C7E7E3C1800000000000000 00183C7E7E3E1E0E1C3C78F060071A789318>I<7FFFC0FFFFE0FFFFE0FFFFE000000000 0000000000000000FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>61 D<600000F00000FC00007E00003F00001FC00007E00003F00001FC00007E00003F00001F 80001F80003F00007E0001FC0003F00007E0001FC0003F00007E0000FC0000F000006000 0011187D9918>I<00700000F80000F80000D80000D80001DC0001DC0001DC00018C0003 8E00038E00038E00038E000306000707000707000707000707000FFF800FFF800FFF800E 03800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>65 DI<00F8E003FEE007FFE00F07E01E03E03C 01E03800E07000E07000E0700000E00000E00000E00000E00000E00000E00000E00000E0 00007000007000E07000E03800E03C00E01E01C00F07C007FF8003FE0000F800131C7E9B 18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E01C00E01C00F01C0070 1C00701C00701C00701C00701C00701C00701C00701C00F01C00E01C00E01C01E01C01C0 1C03C01C0F807FFF00FFFE007FF800141C7F9B18>III<01F1C003FDC00FFFC01F0FC0 1C03C03803C03801C07001C07001C0700000E00000E00000E00000E00000E00000E00FF0 E01FF0E00FF07001C07001C07003C03803C03803C01C07C01F0FC00FFFC003FDC001F1C0 141C7E9B18>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01 C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C01 C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<7FFF00FFFF807FFF0001 C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001 C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF00FFFF807F FF00111C7D9B18>I<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E0000 0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0070 0E00700E00700E00700E00707FFFF0FFFFF07FFFF0141C7F9B18>76 DI<7E07F0FF0FF87F07F01D81C01D81C01D 81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C01C39C01C 39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B 18>I<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380 E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780 700700780F007FFF003FFE000FF800111C7D9B18>II<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03C01C 03801C0F801FFF001FFE001FFE001C0F001C07001C03801C03801C03801C03801C03801C 039C1C039C1C039C7F01F8FF81F87F00F0161C7F9B18>82 D<03F3801FFF803FFF807C0F 80700780E00380E00380E00380E000007000007800003F00001FF00007FE0000FF00000F 800003C00001C00000E00000E06000E0E000E0E001E0F001C0F80780FFFF80FFFE00E7F8 00131C7E9B18>I<7FFFF8FFFFF8FFFFF8E07038E07038E07038E0703800700000700000 700000700000700000700000700000700000700000700000700000700000700000700000 700000700000700000700007FF0007FF0007FF00151C7F9B18>IIII<7F8FE07F9FE07F8FE00E07000F0700070E00078E00039C00 03DC0001F80001F80000F00000F00000700000F00000F80001F80001DC00039E00038E00 070F000707000E07800E03801E03C07F07F0FF8FF87F07F0151C7F9B18>II91 D93 D<7FFF00FFFF80FFFF807FFF0011047D7F18>95 D<1FE0003FF8007FFC00781E00300E00 00070000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00781F00 3FFFF01FFBF007E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E 00000E00000E3E000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E 00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>I< 01FE0007FF001FFF803E0780380300700000700000E00000E00000E00000E00000E00000 E000007000007001C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F80003F 80001F8000038000038000038000038000038003E3800FFB801FFF803C1F80380F807007 80700380E00380E00380E00380E00380E00380E00380700780700780380F803C1F801FFF F00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F00380780700380700380E0 01C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03C01FFF8007FF0001 FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001C0007FFFC0 FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000 01C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80FFF F81E1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E0 003800001C00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800 F07E03F01FFFC00FFF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E 00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E 00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B 18>I<03800007C00007C00007C0000380000000000000000000000000007FC000FFC000 7FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000 01C00001C00001C000FFFF00FFFF80FFFF00111D7C9C18>I<0038007C007C007C003800 000000000000000FFC1FFC0FFC001C001C001C001C001C001C001C001C001C001C001C00 1C001C001C001C001C001C001C001C001C001C001C6038F078FFF07FE03F800E277E9C18 >II<7FE000FFE0007FE00000E00000E000 00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000 00E00000E00000E00000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E 9B18>I<7CE0E000FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C00 1C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C00 7F1F1F00FFBFBF807F1F1F001914819318>I<7E3E00FEFF807FFFC00FC1C00F80E00F00 E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3 FCFFE7FE7FC3FC1714809318>I<01F0000FFE001FFF003E0F803803807001C07001C0E0 00E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F801FFF000FFE0001 F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80E00F00700E00700E00380E0038 0E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF800E3E000E0000 0E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E809318>I<01E3 8007FB801FFF803E1F80380F80700780700780E00380E00380E00380E00380E00380E003 80700780700780380F803C1F801FFF800FFB8003E3800003800003800003800003800003 80000380000380003FF8003FF8003FF8151E7E9318>I<7F87E0FF9FF07FBFF803F87803 F03003E00003C00003C00003800003800003800003800003800003800003800003800003 80007FFE00FFFF007FFE0015147F9318>I<07F7003FFF007FFF00780F00E00700E00700 E007007C00007FE0001FFC0003FE00001F00600780E00380E00380F00380F80F00FFFF00 FFFC00E7F00011147D9318>I<0180000380000380000380000380007FFFC0FFFFC0FFFF C00380000380000380000380000380000380000380000380000380000380400380E00380 E00380E001C1C001FFC000FF80003E0013197F9818>I<7E07E0FE0FE07E07E00E00E00E 00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E01E00F 03E007FFFC03FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8FF01E03C00E03800E0380 0E0380070700070700070700038E00038E00038E00038E0001DC0001DC0001DC0000F800 00F80000700015147F9318>II<7F8FF07F9FF07F8FF0070700078E00039E0001DC0001F80000F80000 700000F00000F80001DC00039E00038E000707000F07807F8FF0FF8FF87F8FF015147F93 18>I<7F8FF0FF8FF87F8FF00E01C00E03800E0380070380070700070700038700038600 038E0001CE0001CE0000CC0000CC0000DC00007800007800007800007000007000007000 00F00000E00079E0007BC0007F80003F00001E0000151E7F9318>I<3FFFF07FFFF07FFF F07001E07003C0700780000F00001E00003C0000F80001F00003C0000780000F00701E00 703C0070780070FFFFF0FFFFF0FFFFF014147F9318>I<0007E0001FE0007FE000780000 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00001E0007F C000FF8000FF80007FC00001E00000E00000E00000E00000E00000E00000E00000E00000 E00000E00000E00000E000007800007FE0001FE00007E013247E9F18>I<7C0000FF0000 FFC00003C00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000 00E00000F000007FC0003FE0003FE0007FC000F00000E00000E00000E00000E00000E000 00E00000E00000E00000E00000E00000E00003C000FFC000FF00007C000013247E9F18> 125 D E /Fk 4 64 df0 D<03C00FF01FF83FFC7FFE 7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003C010127D9317>15 D62 D<00040000000C0000000C0000000C0000000C0000000C00 00000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C00 00000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C00 00000C0000000C0000FFFFFFE0FFFFFFE01B1C7C9B23>I E /Fl 60 122 df<007F07F001FF1FF003FF3FF007807800070070000F00F0000F00F0000F00F0 000F00F0000F00F0000F00F0000F00F000FFF8FF80FFF8FF80FFF8FF800F00F0000F00F0 000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0 000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0001C20809F1B>11 D<783C783C783C783C180C3018301860306030E0700E0A7F9F17>34 D<007000E001C00380078007000E001E001E003C003C003C0078007800780078007000F0 00F000F000F000F000F000F000F000F000F000F000F000700078007800780078003C003C 003C001E001E000E0007000780038001C000E000700C2E7EA112>40 DI<7878787818303060 60E0050A7D830D>44 DII<03F000 07F8001FFE001E1E003C0F00380700780780780780700380F003C0F003C0F003C0F003C0 F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0780780780780 7807803807003C0F001E1E001FFE000FFC0003F00012207E9E17>48 D<00C001C00FC0FFC0FFC0F3C003C003C003C003C003C003C003C003C003C003C003C003 C003C003C003C003C003C003C003C003C003C003C0FFFEFFFEFFFE0F1F7C9E17>I<07F0 000FFC001FFE00383F00700F00600780E00780E003C04003C04003C00003C00003C00003 C0000780000780000F00000E00001C00003C0000780000E00001C0000380000700000E00 001C0000380000700000FFFFC0FFFFC0FFFFC0121F7E9E17>I60 DI<001F0000001F0000003F8000003B8000 003B8000007BC0000073C0000071C00000F1E00000E1E00000E0E00001E0F00001E0F000 01C0F00003C0780003C078000380780007803C0007803C0007003C000FFFFE000FFFFE00 0FFFFE001E000F001E000F003C000F803C0007803C000780780007C0780003C0780003C0 F00003E01B207F9F1E>65 DI<001FC000FFF801FFFC03E03C07800C0F00001E00003E00003C00007C00 00780000780000780000F00000F00000F00000F00000F00000F00000F00000F000007800 007800007800007C00003C00003E00001E00000F000207800E03E03E01FFFC00FFF0001F C017227DA01D>IIII<001FE000FFF801 FFFE03E03E07800E0F00001E00003E00003C00007C0000780000780000780000F00000F0 0000F00000F00000F00000F00000F003FEF003FE7803FE78001E78001E7C001E3C001E3E 001E1E001E0F001E07801E03E03E01FFFE00FFF8001FC017227DA01E>III76 DII<003F000000FFC00003FFF00007E1F8000F807C001F003E001E00 1E003C000F003C000F00780007807800078078000780F00003C0F00003C0F00003C0F000 03C0F00003C0F00003C0F00003C0F00003C0F00003C0F80007C078000780780007807800 07803C000F003C000F001E001E001F003E000F807C0007E1F80003FFF00000FFC000003F 00001A227DA021>II82 D<01FC0007FF800FFFC01F03C03C00C03C00007800007800007800007800007800007C00 003C00003F00001FE0000FFC0007FE0001FF00003F800007C00003C00003E00001E00001 E00001E00001E00001E00001C0C003C0F007C0FC0F807FFF001FFE0003F80013227EA019 >IIIII<780007807C000F003E001F001E001E000F003C000F807C000780780003C0F0 0003E1F00001F1E00000F3C000007FC000007F8000003F0000001F0000001E0000003F00 00007F8000007FC00000F3C00001F1E00001E0F00003C0F80007C0780007803C000F003E 001F001E001E000F003C000F807C0007C0780003C0F00003E01B207F9F1E>II91 D<381C3018301860306030C060F078F078F078F0780E0A799F17>II<07E03FF87FFC701E401F000F000F000F003F07FF1FFF7E0FF8 0FF00FF00FF00FF83F7FFF3FEF1F8F10147E9316>97 DI<03F00FFC1FFE3E0E3C0278007800F000F000 F000F000F000F000780078003C013E0F1FFF0FFE03F010147E9314>I<00078000078000 078000078000078000078000078000078000078000078000078000078007C7800FF7801F FF803E1F807C0780780780F80780F00780F00780F00780F00780F00780F00780F0078078 0780780F803E1F801FFF800FF78007C78011207E9F17>I<03F0000FFC001FFE003E1F00 3C0700780700700380FFFF80FFFF80FFFF80F00000F00000F000007000007800003C0100 3E07001FFF0007FE0001F80011147F9314>I<007E01FE03FE078007000F000F000F000F 000F000F000F00FFF0FFF0FFF00F000F000F000F000F000F000F000F000F000F000F000F 000F000F000F000F000F000F20809F0E>I<03E0F00FFFF01FFFF03E3E003C1E00780F00 780F00780F00780F00780F003C1E003E3E001FFC003FF80033E0003000003800003FFE00 3FFF801FFFC03FFFE07803F0F000F0F000F0F000F0F801F07E07E03FFFC00FFF0003FC00 141E7F9317>III<01E001E001E001E00000000000000000000000000000000001E001 E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001 E001E001E001E001E001E0C3C0FFC0FF803F000B29839F0C>IIIII<01F80007FE001FFF803F0FC03C03C07801E07801E0F0 00F0F000F0F000F0F000F0F000F0F000F07801E07801E03C03C03F0FC01FFF8007FE0001 F80014147F9317>II114 D<07F01FFC3FFC780C7800780078007C003FC01FF00FF803F8007C003C 003CC03CF07CFFF87FF00FC00E147F9311>I<1E001E001E001E001E001E00FFF0FFF0FF F01E001E001E001E001E001E001E001E001E001E001E001E001E001E201FF00FF007C00C 1A7F9910>III<7801E07C03C03E07801E0F000F0F00079E0003FC0003F800 01F80000F00001F00001F80003FC00079E000F0F000E0F001E07803C03C07801E0F801F0 1414809315>120 DI E /Fm 53 123 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C000 0E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C000 0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C000 0E01C0000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C0 0E03C00E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01C0 0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0 7F87F8151D809C17>I<60F0F8680808081010204080050C7C9C0C>39 D<004000800100020006000C000C0018001800300030007000600060006000E000E000E0 00E000E000E000E000E000E000E000E000E000600060006000700030003000180018000C 000C00060002000100008000400A2A7D9E10>I<800040002000100018000C000C000600 060003000300038001800180018001C001C001C001C001C001C001C001C001C001C001C0 01C0018001800180038003000300060006000C000C00180010002000400080000A2A7E9E 10>I<60F0F0701010101020204080040C7C830C>44 DI<60F0F0 6004047C830C>I<030007003F00C7000700070007000700070007000700070007000700 0700070007000700070007000700070007000700070007000F80FFF80D1C7C9B15>49 D<0FE03038401CE00EF00EF00EF00E000C001C0030006000C00080018001000100010001 00010001000000000000000000000003000780078003000F1D7E9C14>63 D<000600000006000000060000000F0000000F0000000F00000017800000178000001780 000023C0000023C0000023C0000041E0000041E0000041E0000080F0000080F0000180F8 000100780001FFF80003007C0002003C0002003C0006003E0004001E0004001E000C001F 001E001F00FF80FFF01C1D7F9C1F>65 DI< 001F808000E0618001801980070007800E0003801C0003801C0001803800018078000080 7800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F0000000 F0000000700000807800008078000080380000801C0001001C0001000E00020007000400 0180080000E03000001FC000191E7E9C1E>III<001F808000E0618001801980070007800E0003801C0003 801C00018038000180780000807800008070000080F0000000F0000000F0000000F00000 00F0000000F0000000F000FFF0F0000F80700007807800078078000780380007801C0007 801C0007800E00078007000B800180118000E06080001F80001C1E7E9C21>71 D73 D77 DI<003F800000E0E0000380380007001C000E000E00 1C0007003C00078038000380780003C0780003C0700001C0F00001E0F00001E0F00001E0 F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C038000380 3C0007801C0007000E000E0007001C000380380000E0E000003F80001B1E7E9C20>II82 D<07E0801C1980300580700380600180E00180E00080E00080E00080F00000F800007C00 007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001 C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F 00C0400F0040400F0040C00F0020800F0020800F0020800F0020000F0000000F0000000F 0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F 0000000F0000000F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B1E> IIII<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C00 601C00E01C40E01C40E01C40603C40304E801F870012127E9115>97 DI<07E00C301878307870306000E0 00E000E000E000E000E00060007004300418080C3007C00E127E9112>I<003F00000700 00070000070000070000070000070000070000070000070000070003E7000C1700180F00 300700700700600700E00700E00700E00700E00700E00700E00700600700700700300700 180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E6006E006FFFEE000E000 E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E 000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C 00381C00381C001818001C38000C300013C0001000003000001800001FF8001FFF001FFF 803003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C7F9215>II<18003C003C00180000000000000000 00000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C 001C001C00FF80091D7F9C0C>I<00C001E001E000C00000000000000000000000000000 0FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0 00E000E000E060E0F0C0F1C061803E000B25839C0D>IIIII<03F0000E1C00180600300300700380600180E001 C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F0001212 7F9115>II<03C1000C3300180B00300F00700700700700 E00700E00700E00700E00700E00700E00700600700700700300F00180F000C370007C700 000700000700000700000700000700000700000700003FE0131A7E9116>II<1F9030704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D060 8FC00D127F9110>I<04000400040004000C000C001C003C00FFE01C001C001C001C001C 001C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F9910>IIII<7F8FF00F03800F030007020003840001C80001 D80000F00000700000780000F800009C00010E00020E000607000403801E07C0FF0FF815 12809116>II<7FFC70386038407040F040E041C003C003 8007000F040E041C043C0C380870087038FFF80E127F9112>I E /Fn 14 118 df<78FCFCFCFC7800000000000078FCFCFCFC7806127D910D>58 D<001FE02000FFF8E003F80FE007C003E00F8001E01F0000E03E0000E03E0000607E0000 607C000060FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0000 007C0000607E0000603E0000603E0000C01F0000C00F80018007C0030003F80E0000FFFC 00001FE0001B1C7D9B22>67 DI<07F8201FFEE03C07E07801E0 7000E0F000E0F00060F00060F80000FE0000FFE0007FFE003FFF003FFF800FFFC007FFE0 007FE00003F00001F00000F0C000F0C000F0C000E0E000E0F001C0FC03C0EFFF0083FC00 141C7D9B1B>83 D<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F 07C03C07C07C07C0F807C0F807C0F807C0780BC03E13F80FE1F815127F9117>97 D<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F80000F800 007800007801803C01801C03000E0E0003F80011127E9115>99 D<01FC000F07001C0380 3C01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F800007800007C00603C0060 1E00C00F038001FC0013127F9116>101 D<1E003F003F003F003F001E00000000000000 000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F00 1F00FFE0FFE00B1E7F9D0E>105 D110 D<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8 F800F8F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>I114 D<1FD830786018E018E018F000FF80 7FE07FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<03000300030003 00070007000F000F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F 0C1F0C0F08079803F00E1A7F9913>II E /Fo 32 121 df45 DI<00180000380000F80007F800FFF800FFF800F8F80000F80000F80000F80000F800 00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800 00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800 00F80000F8007FFFF07FFFF07FFFF014287BA71E>49 D<00FE0003FFC007FFE00FFFF01F 03F83C00FC38007E78003E70003EF0001FF0001F60001F20001F00001F00001F00001F00 003E00003E00007C00007C0000F80001F00001E00003C0000780000F00001E00003C0000 780000F00001E00003C0000780000F00001E00003C00007FFFFF7FFFFF7FFFFF7FFFFF18 287EA71E>I<007F000001FFC00007FFF0000FFFF8001FC1F8003E007C003C003E007800 3E0038003E0010003E0000003E0000003E0000003C0000007C000000FC000001F8000007 F00000FFE00000FFC00000FFE00000FFF0000001FC0000007C0000003E0000001F000000 1F0000000F8000000F8000000F8000000F8000000F8040000F8060001F00F0001F00F800 3F007E007E003F81FC001FFFF8000FFFF00003FFE000007F000019297EA71E>I<0003F0 000007F0000005F000000DF000000DF000001DF0000039F0000039F0000079F0000079F0 0000F1F00000F1F00001E1F00003E1F00003E1F00007C1F00007C1F0000F81F0000F81F0 001F01F0001F01F0003E01F0007C01F0007C01F000F801F000FFFFFF80FFFFFF80FFFFFF 80FFFFFF800001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0 000001F0000001F00019277EA61E>I<3FFFFC3FFFFC3FFFFC3FFFFC3E00003E00003E00 003E00003E00003E00003E00003E00003E00003E00003E3F003EFFC03FFFE03FFFF03FE1 F83F807C3F003E3E003E00003E00001F00001F00001F00001F00001F00001F00001F2000 1F60003E70003EF8007C7C00FC3F03F81FFFF00FFFE007FF8000FE0018287EA61E>I<00 0FF000003FFC0000FFFC0001FFFC0003F80C0007E000000FC000000F8000001F0000001E 0000003E0000003C0000007C0000007C0000007C3FE000F8FFF000F9FFF800FBFFFC00FF 807E00FF003E00FE003F00FC001F00FC001F00FC000F80F8000F80F8000F80F8000F80F8 000F8078000F807C000F807C000F807C000F003E001F003E001F001F003E001F807C000F C1FC0007FFF80003FFF00001FFC000007F000019297EA71E>I<0001FF00000FFFE0003F FFF8007FFFF800FE01F801F8003003F0001007C000000F8000001F8000001F0000003E00 00003E0000007E0000007C0000007C0000007C000000F8000000F8000000F8000000F800 0000F8000000F8000000F8000000F8000000F8000000F80000007C0000007C0000007C00 00007E0000003E0000003E0000001F0000001F8000000F80000007C0000003F0000401F8 001C00FE00FC007FFFFC003FFFF8000FFFE00001FF001E2C7CAA26>67 D69 D73 D<0001FC0000000FFF8000003FFFE000007FFFF00001 FE03FC0003F800FE0007E0003F0007C0001F000F80000F801F000007C01F000007C03E00 0003E03E000003E07C000001F07C000001F07C000001F078000000F0F8000000F8F80000 00F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000 F8F8000000F87C000001F07C000001F07C000001F07E000003F03E000003E03F000007E0 1F000007C01F80000FC00FC0001F8007E0003F0007F0007F0003F800FE0001FE03FC0000 FFFFF800003FFFE000000FFF80000001FC0000252C7DAA2C>79 D<007FC00001FFF80007 FFFE000FFFFF001FC07F003F000F007E0006007C0000007C000000F8000000F8000000F8 000000F8000000F8000000FC0000007E0000007F0000003F8000001FF800000FFF800007 FFE00003FFF80000FFFC00000FFE000000FF0000003F0000001F8000000F8000000FC000 0007C0000007C0000007C0000007C0000007C0000007C000000F8060000F80F0001F00FC 003F00FF80FE007FFFFC001FFFF80007FFE00000FF80001A2C7DAA21>83 DI<01FE000FFF803FFFC03FFFE03C03F03001F00001F80000F80000F80000F80000F800 00F8007FF807FFF81FFFF83FE0F87F00F8FC00F8F800F8F800F8F800F8FC01F87E07F87F FFF83FFFF81FFCF80FE0F8151B7E9A1D>97 D<007FC001FFF007FFFC0FFFFC1FC07C1F00 083E00007C00007C00007C0000F80000F80000F80000F80000F80000F80000F800007C00 007C00007E00003E00001F000C1FC07C0FFFFC07FFFC01FFF0007F80161B7E9A1B>99 D<00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0000 3E00003E00003E00003E00FC3E03FF3E07FFFE0FFFFE1FC1FE3F007E3E003E7C003E7C00 3EFC003EF8003EF8003EF8003EF8003EF8003EF8003EF8003EFC003E7C003E7C003E3E00 7E3F00FE1FC1FE0FFFFE07FFBE03FF3E00FC3E172A7EA91F>I<007E0003FF8007FFC00F FFE01F83F03F00F03E00787C00787C003878003CFFFFFCFFFFFCFFFFFCFFFFFCF80000F8 0000F800007800007C00007C00003E00003F000C1FC07C0FFFFC07FFFC01FFF0007F8016 1B7E9A1B>I104 DI108 DII<007F000001FFC00007FFF0000FFFF8001FC1FC003F 007E003E003E007C001F007C001F0078000F00F8000F80F8000F80F8000F80F8000F80F8 000F80F8000F80F8000F807C001F007C001F007E003F003E003E003F007E001FC1FC000F FFF80007FFF00001FFC000007F0000191B7E9A1E>II114 D<03FC001FFF803FFFC07FFFC07C07C0F80080F80000F80000F80000FC00007F80007FF8 003FFE001FFF0007FF8000FFC0000FE00007E00003E00003E04003E0E007E0FC0FC0FFFF C07FFF801FFE0003F800131B7E9A17>I<07C00007C00007C00007C00007C00007C00007 C000FFFFC0FFFFC0FFFFC007C00007C00007C00007C00007C00007C00007C00007C00007 C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C04007E1C003 FFE003FFE001FF8000FC0013227FA116>IIII<7C000FC03E001F803F001F001F803E000F807C0007C0FC0003E0F80001F1F00001 FBE00000FFC000007FC000003F8000001F0000001F0000003F8000007FC00000FBC00000 F3E00001F1F00003E0F80007C07C000F807C000F803E001F001F003E000F807E000FC0FC 0007E01B1B809A1C>I E /Fp 22 122 df66 D<000000003FFE00000E0000000FFFFFC0001E00 00007FFFFFF8003E000003FFFFFFFE00FE00000FFFFFFFFF81FE00003FFFF800FFC3FE00 00FFFF80000FF7FE0001FFFC000003FFFE0007FFF0000001FFFE000FFFC00000007FFE00 1FFF800000003FFE003FFF000000001FFE007FFE000000000FFE00FFFC0000000007FE01 FFF80000000007FE03FFF00000000003FE03FFF00000000001FE07FFE00000000001FE07 FFE00000000000FE0FFFC00000000000FE0FFFC000000000007E1FFFC000000000007E1F FF8000000000007E3FFF8000000000007E3FFF8000000000003E3FFF8000000000003E7F FF8000000000003E7FFF0000000000003E7FFF000000000000007FFF00000000000000FF FF00000000000000FFFF00000000000000FFFF00000000000000FFFF00000000000000FF FF00000000000000FFFF00000000000000FFFF00000000000000FFFF00000000000000FF FF00000000000000FFFF00000000000000FFFF00000000000000FFFF00000000000000FF FF000000000000007FFF000000000000007FFF000000000000007FFF000000000000007F FF8000000000003E3FFF8000000000003E3FFF8000000000003E3FFF8000000000003E1F FF8000000000003E1FFFC000000000003E0FFFC000000000007C0FFFC000000000007C07 FFE000000000007C07FFE00000000000F803FFF00000000000F803FFF00000000001F801 FFF80000000001F000FFFC0000000003E0007FFE0000000007E0003FFF000000000FC000 1FFF800000001F80000FFFC00000003F000007FFF0000000FE000001FFFC000001FC0000 00FFFF80000FF80000003FFFF8007FF00000000FFFFFFFFFC000000003FFFFFFFF000000 00007FFFFFFC00000000000FFFFFE00000000000003FFE000000474979C756>I69 D<00000003FFF000000000000000 7FFFFF80000000000003FFFFFFF000000000000FFFFFFFFC00000000003FFF807FFF0000 000000FFF80007FFC000000003FFE00001FFF000000007FFC00000FFF80000000FFF0000 003FFC0000001FFE0000001FFE0000003FFC0000000FFF0000007FFC0000000FFF800000 FFF800000007FFC00001FFF000000003FFE00003FFF000000003FFF00003FFE000000001 FFF00007FFE000000001FFF80007FFC000000000FFF8000FFFC000000000FFFC000FFFC0 00000000FFFC001FFF80000000007FFE001FFF80000000007FFE003FFF80000000007FFF 003FFF80000000007FFF003FFF80000000007FFF007FFF00000000003FFF807FFF000000 00003FFF807FFF00000000003FFF807FFF00000000003FFF807FFF00000000003FFF80FF FF00000000003FFFC0FFFF00000000003FFFC0FFFF00000000003FFFC0FFFF0000000000 3FFFC0FFFF00000000003FFFC0FFFF00000000003FFFC0FFFF00000000003FFFC0FFFF00 000000003FFFC0FFFF00000000003FFFC0FFFF00000000003FFFC0FFFF00000000003FFF C0FFFF00000000003FFFC0FFFF00000000003FFFC0FFFF00000000003FFFC07FFF000000 00003FFF807FFF00000000003FFF807FFF80000000007FFF807FFF80000000007FFF803F FF80000000007FFF003FFF80000000007FFF003FFF80000000007FFF001FFFC000000000 FFFE001FFFC000000000FFFE001FFFC000000000FFFE000FFFE000000001FFFC000FFFE0 00000001FFFC0007FFE000000001FFF80003FFF000000003FFF00003FFF800000007FFF0 0001FFF800000007FFE00000FFFC0000000FFFC000007FFE0000001FFF8000007FFF0000 003FFF8000003FFF8000007FFF0000000FFFC00000FFFC00000007FFF00003FFF8000000 03FFFC000FFFF000000000FFFF807FFFC0000000007FFFFFFFFF80000000000FFFFFFFFC 000000000003FFFFFFF00000000000007FFFFF8000000000000003FFF0000000004A4979 C759>79 D<0007FFFC000000007FFFFFC0000001FFFFFFF8000003FFFFFFFE000007FE00 1FFF000007FF0003FFC0000FFF8001FFE0000FFF8000FFF0000FFF80007FF0000FFF8000 7FF8000FFF80007FF80007FF00003FFC0007FF00003FFC0003FE00003FFC0000F800003F FC00000000003FFC00000000003FFC00000000003FFC00000000003FFC00000007FFFFFC 000000FFFFFFFC000007FFFFFFFC00003FFFE03FFC0000FFFE003FFC0003FFF0003FFC00 07FFC0003FFC000FFF00003FFC001FFE00003FFC003FFC00003FFC007FF800003FFC007F F800003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF0 00003FFC00FFF000007FFC007FF80000FFFC007FF80001EFFC003FFC0003EFFC003FFF00 07CFFF000FFFC03F8FFFF807FFFFFF07FFFC01FFFFFC03FFFC007FFFF001FFFC0003FF80 007FF8362E7DAD3A>97 D<007FC00000000000FFFFC00000000000FFFFC00000000000FF FFC00000000000FFFFC00000000000FFFFC0000000000003FFC0000000000001FFC00000 00000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001 FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000 00000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001 FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000 00000001FFC00FFC00000001FFC07FFFC0000001FFC3FFFFF0000001FFCFFFFFFC000001 FFDFF00FFF000001FFFF8003FF800001FFFE0001FFC00001FFF800007FE00001FFF00000 7FF00001FFE000003FF80001FFE000001FFC0001FFE000001FFC0001FFE000001FFE0001 FFE000001FFE0001FFE000000FFF0001FFE000000FFF0001FFE000000FFF0001FFE00000 0FFF0001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001 FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE00000 0FFF8001FFE000000FFF8001FFE000000FFF0001FFE000000FFF0001FFE000000FFF0001 FFE000001FFE0001FFE000001FFE0001FFE000001FFC0001FFE000001FFC0001FFE00000 3FF80001FFF000003FF80001FFF800007FF00001FFFC0000FFE00001FFFE0001FFC00001 FFBF0007FF800001FF1FE01FFE000001FE0FFFFFFC000001FC03FFFFF0000001F800FFFF 80000001F0001FF800000039487CC742>I<00001FFFC0000000FFFFF8000007FFFFFE00 001FFFFFFF80007FFC00FFC000FFE001FFC001FFC003FFE003FF8003FFE007FF0003FFE0 0FFE0003FFE00FFE0003FFE01FFC0001FFC01FFC0001FFC03FFC0000FF803FFC00003E00 7FF8000000007FF8000000007FF800000000FFF800000000FFF800000000FFF800000000 FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000 FFF8000000007FF8000000007FF8000000007FFC000000003FFC000000003FFC00000000 1FFC000000F81FFE000000F80FFE000000F80FFF000001F007FF800003F003FFC00007E0 01FFE0000FC000FFF0001F80007FFE00FF00001FFFFFFE000007FFFFF8000000FFFFE000 00001FFE00002D2E7CAD35>I<00000000007FC00000000000FFFFC00000000000FFFFC0 0000000000FFFFC00000000000FFFFC00000000000FFFFC0000000000003FFC000000000 0001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0 000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000000000 0001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0 000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000000000 0001FFC00000000FFC01FFC0000000FFFF81FFC0000007FFFFE1FFC000001FFFFFF9FFC0 00007FFC03FFFFC00000FFF0007FFFC00001FFC0001FFFC00003FF80000FFFC00007FF00 0007FFC0000FFE000003FFC0000FFE000003FFC0001FFC000003FFC0001FFC000003FFC0 003FFC000003FFC0003FFC000003FFC0007FF8000003FFC0007FF8000003FFC0007FF800 0003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC0 00FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF800 0003FFC000FFF8000003FFC0007FF8000003FFC0007FF8000003FFC0007FF8000003FFC0 003FF8000003FFC0003FFC000003FFC0003FFC000003FFC0001FFC000003FFC0001FFC00 0003FFC0000FFE000007FFC00007FF00000FFFC00003FF00001FFFC00001FFC0003FFFC0 0000FFE000FFFFE000007FF807FBFFFF80001FFFFFF3FFFF800007FFFFC3FFFF800001FF FF03FFFF8000001FF803FFFF8039487CC742>I<00001FFE00000001FFFFE0000007FFFF F800001FFFFFFE00007FFC07FF0000FFE001FF8001FFC0007FC003FF80003FE007FF0000 3FF00FFE00001FF01FFE00000FF81FFC00000FF83FFC00000FFC3FFC000007FC7FFC0000 07FC7FF8000007FC7FF8000007FE7FF8000007FEFFF8000007FEFFF8000007FEFFFFFFFF FFFEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFCFFF800000000FFF800000000FFF80000 0000FFF8000000007FF8000000007FF8000000007FFC000000003FFC000000003FFC0000 00003FFC0000001C1FFE0000003E0FFE0000003E07FF0000007E07FF000000FC03FF8000 01F801FFC00003F0007FF0001FE0003FFE00FFC0001FFFFFFF800007FFFFFE000000FFFF F80000000FFF80002F2E7DAD36>I<00000000001F8000007FF000FFE00007FFFF03FFF0 001FFFFFC7FFF0007FFFFFFFC7F800FFE03FFE0FF801FF800FFC0FF803FF0007FE0FF807 FE0003FF07F007FE0003FF07F00FFC0001FF81C00FFC0001FF80000FFC0001FF80001FFC 0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC00 01FFC0000FFC0001FF80000FFC0001FF80000FFC0001FF800007FE0003FF000007FE0003 FF000003FF0007FE000001FF800FFC000000FFE03FF8000001FFFFFFF0000001DFFFFFC0 000003C7FFFF00000003C07FF000000007C0000000000007C0000000000007C000000000 0007C0000000000007E0000000000007F0000000000007F8000000000007FFFFFFF00000 07FFFFFFFF000003FFFFFFFFE00003FFFFFFFFF80001FFFFFFFFFE0001FFFFFFFFFF0000 FFFFFFFFFF80007FFFFFFFFF8003FFFFFFFFFFC00FFFFFFFFFFFC01FF800001FFFE03FE0 000001FFE07FC00000007FF07FC00000003FF0FF800000001FF0FF800000001FF0FF8000 00001FF0FF800000001FF0FF800000001FF07FC00000003FE07FC00000003FE03FE00000 007FC03FF0000000FFC01FFC000003FF800FFF00000FFF0003FFF000FFFC0000FFFFFFFF F000003FFFFFFFC0000007FFFFFE000000003FFFC0000035447DAE3B>103 D<007FC00000000000FFFFC00000000000FFFFC00000000000FFFFC00000000000FFFFC0 0000000000FFFFC0000000000003FFC0000000000001FFC0000000000001FFC000000000 0001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0 000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000000000 0001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0 000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC001FFC000 0001FFC00FFFF8000001FFC03FFFFE000001FFC0FFFFFF000001FFC1FC07FF800001FFC3 E003FFC00001FFC7C001FFC00001FFCF0001FFE00001FFDE0000FFE00001FFDC0000FFE0 0001FFFC0000FFF00001FFF80000FFF00001FFF00000FFF00001FFF00000FFF00001FFF0 0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0 0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0 0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0 0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0 0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0 0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF000FFFFFF C07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFF E03B487CC742>I<00FC0001FE0003FF0007FF800FFFC01FFFE01FFFE01FFFE01FFFE01F FFE01FFFE00FFFC007FF8003FF0001FE0000FC0000000000000000000000000000000000 0000000000000000000000000000000000007FC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC003 FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001 FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001 FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0FFFFFFFF FFFFFFFFFFFFFFFFFFFFFF18497CC820>I<007FC000FFFFC000FFFFC000FFFFC000FFFF C000FFFFC00003FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000FFFF FF80FFFFFF80FFFFFF80FFFFFF80FFFFFF8019487CC720>108 D<007FC001FFC00000FF FFC00FFFF80000FFFFC03FFFFE0000FFFFC0FFFFFF0000FFFFC1FC07FF8000FFFFC3E003 FFC00003FFC7C001FFC00001FFCF0001FFE00001FFDE0000FFE00001FFDC0000FFE00001 FFFC0000FFF00001FFF80000FFF00001FFF00000FFF00001FFF00000FFF00001FFF00000 FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001 FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000 FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001 FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000 FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001 FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF000FFFFFFC07F FFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE03B 2E7CAD42>110 D<00000FFF0000000000FFFFF000000007FFFFFE0000001FFFFFFF8000 003FFC03FFC00000FFE0007FF00001FF80001FF80003FF00000FFC0007FE000007FE000F FE000007FF000FFC000003FF001FFC000003FF803FFC000003FFC03FF8000001FFC03FF8 000001FFC07FF8000001FFE07FF8000001FFE07FF8000001FFE0FFF8000001FFF0FFF800 0001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF80000 01FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF07FF8000001FFE07FF8000001 FFE07FF8000001FFE07FF8000001FFE03FFC000003FFC03FFC000003FFC01FFC000003FF 801FFE000007FF800FFE000007FF0007FF00000FFE0003FF80001FFC0001FFC0003FF800 00FFE0007FF000007FFC03FFE000001FFFFFFF80000007FFFFFE00000000FFFFF0000000 000FFF000000342E7DAD3B>I<007FC00FFC000000FFFFC07FFFC00000FFFFC3FFFFF000 00FFFFCFFFFFFC0000FFFFDFF01FFF0000FFFFFF8007FF800003FFFE0001FFC00001FFF8 0000FFE00001FFF00000FFF00001FFE000007FF80001FFE000003FFC0001FFE000003FFC 0001FFE000003FFE0001FFE000001FFE0001FFE000001FFF0001FFE000001FFF0001FFE0 00001FFF0001FFE000000FFF0001FFE000000FFF8001FFE000000FFF8001FFE000000FFF 8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE0 00000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF0001FFE000001FFF 0001FFE000001FFF0001FFE000001FFE0001FFE000001FFE0001FFE000003FFC0001FFE0 00003FFC0001FFE000007FF80001FFF000007FF80001FFF80000FFF00001FFFC0001FFE0 0001FFFE0003FFC00001FFFF0007FF800001FFFFE03FFE000001FFEFFFFFFC000001FFE3 FFFFF0000001FFE0FFFF80000001FFE01FF800000001FFE0000000000001FFE000000000 0001FFE0000000000001FFE0000000000001FFE0000000000001FFE0000000000001FFE0 000000000001FFE0000000000001FFE0000000000001FFE0000000000001FFE000000000 0001FFE0000000000001FFE0000000000001FFE0000000000001FFE00000000000FFFFFF C000000000FFFFFFC000000000FFFFFFC000000000FFFFFFC000000000FFFFFFC0000000 0039427CAD42>I<00FF803F8000FFFF80FFF000FFFF83FFFC00FFFF87FFFE00FFFF8FC3 FF00FFFF8F07FF0003FF9E0FFF8001FFBC0FFF8001FFB80FFF8001FFF80FFF8001FFF00F FF8001FFF007FF0001FFF007FF0001FFE003FE0001FFE000F80001FFE000000001FFE000 000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000 000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000 000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000 000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000 0000FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFFFFE00000292E7CAD 31>114 D<000FFF00E0007FFFF3E001FFFFFFE007FFFFFFE00FF800FFE01FC0001FE03F 80000FE03F000007E07F000003E07F000003E0FF000003E0FF000003E0FF800003E0FFC0 000000FFF0000000FFFE000000FFFFF800007FFFFFC0007FFFFFF0003FFFFFFC001FFFFF FF000FFFFFFF8007FFFFFFC003FFFFFFE000FFFFFFF0003FFFFFF00003FFFFF800001FFF F8000000FFFC0000001FFC7800000FFCF8000007FCF8000003FCFC000003FCFC000003FC FE000003F8FE000003F8FF000003F8FF800007F0FFC0000FF0FFF0001FE0FFFC00FFC0FF FFFFFF80FC7FFFFE00F81FFFF800E003FF8000262E7CAD2F>I<0001F000000001F00000 0001F000000001F000000001F000000001F000000003F000000003F000000003F0000000 07F000000007F000000007F00000000FF00000000FF00000001FF00000003FF00000003F F00000007FF0000001FFF0000003FFF000000FFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFF FFC0FFFFFFFFC000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF000 0000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF00000 00FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000 FFF0000000FFF0000000FFF0000000FFF001F000FFF001F000FFF001F000FFF001F000FF F001F000FFF001F000FFF001F000FFF001F000FFF001F0007FF001E0007FF803E0003FF8 03E0003FFC07C0001FFE0F80000FFFFF800007FFFE000001FFFC0000001FF00024427EC1 2E>I118 D<7FFFFF801FFFFF007FFFFF801FFFFF007FFFFF801FFFFF007FFF FF801FFFFF007FFFFF801FFFFF00007FF80001FF0000007FFC0001FC0000003FFE0003F8 0000001FFF0007F00000000FFF0007E000000007FF800FC000000003FFC01F8000000003 FFE03F8000000001FFF07F0000000000FFF8FE00000000007FF9FC00000000003FFFF800 000000003FFFF000000000001FFFE000000000000FFFC0000000000007FFC00000000000 03FFC0000000000001FFE0000000000001FFF0000000000001FFF8000000000003FFFC00 0000000003FFFE000000000007FFFE00000000000FEFFF00000000001FCFFF8000000000 3F87FFC0000000007F03FFE000000000FE01FFE000000001FC00FFF000000001F8007FF8 00000003F0007FFC00000007F0003FFE0000000FE0001FFF0000001FC0000FFF0000003F 800007FF800000FF800007FFC000FFFFF8003FFFFFC0FFFFF8003FFFFFC0FFFFF8003FFF FFC0FFFFF8003FFFFFC0FFFFF8003FFFFFC03A2E7EAD3F>120 D<7FFFFFC000FFFF807F FFFFC000FFFF807FFFFFC000FFFF807FFFFFC000FFFF807FFFFFC000FFFF8000FFF00000 0FE00000FFF800000FC00000FFF800000FC000007FFC00000F8000007FFC00001F800000 3FFC00001F0000003FFE00003F0000001FFE00003E0000001FFF00007E0000000FFF0000 7C0000000FFF8000FC00000007FF8000F800000007FFC001F800000003FFC001F0000000 03FFE003F000000003FFE003F000000001FFF003E000000001FFF007E000000000FFF007 C000000000FFF80FC0000000007FF80F80000000007FFC1F80000000003FFC1F00000000 003FFE3F00000000001FFE3E00000000001FFF7E00000000000FFF7C00000000000FFFFC 00000000000FFFFC000000000007FFF8000000000007FFF8000000000003FFF000000000 0003FFF0000000000001FFE0000000000001FFE0000000000000FFC0000000000000FFC0 0000000000007F800000000000007F800000000000003F000000000000003F0000000000 00003F000000000000003E000000000000007E000000000000007C00000000000000FC00 0000001F8000F8000000003FC001F8000000007FE001F000000000FFF003F000000000FF F003E000000000FFF007E000000000FFF00FC000000000FFF01F8000000000FFF03F8000 0000007FE07F00000000007F43FE00000000003FFFF800000000001FFFF0000000000007 FFC0000000000001FE00000000000039427EAD3F>I E /Fq 8 117 df<00000FF80000007FFF000003FFFF80000FFC07C0001FE001E0003FC001F0007F0007 F000FF000FF001FE001FF803FC003FF807FC003FF80FFC003FF80FF8003FF81FF8001FF0 1FF8000FE03FF80007C03FF00000003FF00000007FF00000007FF00000007FF00000007F F07FF000FFF0FFFE00FFF1F7FF00FFF3807F80FFF6003FE0FFFE001FF0FFFC001FF0FFFC 000FF8FFF8000FFCFFF8000FFCFFF8000FFEFFF8000FFEFFF0000FFEFFF0000FFFFFF000 0FFFFFF0000FFF7FF0000FFF7FF0000FFF7FF0000FFF7FF0000FFF7FF0000FFF3FF0000F FF3FF0000FFE3FF0000FFE1FF0000FFE1FF8000FFC0FF8000FFC0FF8001FF807FC001FF0 03FC001FF001FE003FE000FF80FFC0007FFFFF00001FFFFE000007FFF8000000FFC00028 397CB731>54 D<0000001FFF000030000001FFFFE000F000000FFFFFFC01F000007FFFFF FE03F00001FFFE007F87F00003FFE0000FCFF0000FFF000003FFF0001FFC000001FFF000 3FF80000007FF0007FF00000003FF000FFC00000003FF001FFC00000001FF003FF800000 000FF007FF000000000FF00FFF0000000007F00FFE0000000007F01FFE0000000003F01F FE0000000003F03FFC0000000003F03FFC0000000001F03FFC0000000001F07FFC000000 0001F07FF80000000001F07FF80000000000007FF8000000000000FFF8000000000000FF F8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000 000000FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FF F80000000000007FF80000000000007FF80000000000007FF80000000000007FFC000000 0000F03FFC0000000000F03FFC0000000000F03FFC0000000000F01FFE0000000000F01F FE0000000001E00FFE0000000001E00FFF0000000001E007FF0000000003C003FF800000 0003C001FFC0000000078000FFE00000000F00007FF00000001F00003FF80000003E0000 1FFC0000007C00000FFF000001F8000003FFE00007F0000001FFFE003FC00000007FFFFF FF000000000FFFFFFC0000000001FFFFF000000000001FFF0000003C3D7BBB47>67 D<001FFF00000001FFFFF0000003FFFFFC000007F007FE00000FF801FF00001FFC00FF80 001FFC007FC0001FFC007FE0001FFC003FE0000FF8003FF0000FF8003FF00007F0003FF0 0001C0003FF0000000003FF0000000003FF0000000003FF0000000FFFFF000000FFFFFF0 00007FF83FF00001FF803FF00007FE003FF0000FF8003FF0001FF0003FF0003FE0003FF0 007FE0003FF0007FE0003FF000FFC0003FF000FFC0003FF000FFC0003FF000FFC0003FF0 00FFC0007FF0007FE0007FF0007FE000DFF0003FF0039FF8001FFC0F0FFFF007FFFE0FFF F001FFFC07FFF0003FE000FFF02C267DA530>97 D<0001FFC000000FFFF800003FFFFE00 00FF80FF0001FE003F8007FC001FC00FF8000FE00FF8000FF01FF00007F03FF00007F83F F00007F87FE00007F87FE00003FC7FE00003FC7FE00003FCFFE00003FCFFFFFFFFFCFFFF FFFFFCFFFFFFFFFCFFE0000000FFE0000000FFE0000000FFE00000007FE00000007FE000 00007FE00000003FE00000003FF000003C1FF000003C1FF000003C0FF800007807FC0000 F803FE0001F001FF0007E000FFC03FC0003FFFFF000007FFFC000000FFE00026267DA52D >101 D<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF 0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF 0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF 0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF007FC00003FF 01FFF80003FF07FFFC0003FF0F03FE0003FF1C01FF0003FF3001FF8003FF6000FF8003FF E000FFC003FFC000FFC003FF8000FFC003FF8000FFC003FF8000FFC003FF0000FFC003FF 0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF 0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF 0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF 0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFF FC3FFFFF303C7CBB37>104 D<00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFFFE03FF 00FFFFF000FF8003FFC0007FC003FF80003FE003FF00003FF003FF00001FF803FF00001F FC03FF00000FFC03FF00000FFE03FF00000FFE03FF000007FE03FF000007FF03FF000007 FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007 FF03FF000007FF03FF000007FE03FF000007FE03FF00000FFE03FF00000FFC03FF00000F FC03FF00001FF803FF00001FF803FF00003FF003FF80003FE003FFC0007FC003FFF001FF 8003FFFC07FF0003FF3FFFFC0003FF0FFFF00003FF01FF000003FF0000000003FF000000 0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000 0003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000FFFFFC0000 00FFFFFC000000FFFFFC000000FFFFFC00000030377DA537>112 D<00FE03F000FFFE0FFE00FFFE1FFF00FFFE3C3F80FFFE707FC007FE60FFE003FEE0FFE0 03FEC0FFE003FFC0FFE003FF807FC003FF807FC003FF803F8003FF800E0003FF00000003 FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF 00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00 000003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFFFE00 00FFFFFE0000FFFFFE000023267DA529>114 D<00078000000780000007800000078000 00078000000F8000000F8000000F8000000F8000001F8000001F8000003F8000003F8000 007F800000FF800001FF800007FF80001FFFFFF0FFFFFFF0FFFFFFF0FFFFFFF001FF8000 01FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF8000 01FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF8000 01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C00FF8078 00FFC078007FC070003FE0E0001FFFC00007FF800001FF001E377EB626>116 D E /Fr 79 125 df<001F83E000F06E3001C078780380F8780300F03007007000070070 000700700007007000070070000700700007007000FFFFFF800700700007007000070070 000700700007007000070070000700700007007000070070000700700007007000070070 000700700007007000070070000700700007007000070070007FE3FF001D20809F1B>11 D<003F0000E0C001C0C00381E00701E00701E00700000700000700000700000700000700 00FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700 E00700E00700E00700E00700E00700E00700E00700E07FC3FE1720809F19>I<003FE000 E0E001C1E00381E00700E00700E00700E00700E00700E00700E00700E00700E0FFFFE007 00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007 00E00700E00700E00700E00700E00700E07FE7FE1720809F19>I<001F81F80000F04F04 0001C07C06000380F80F000300F00F000700F00F00070070000007007000000700700000 070070000007007000000700700000FFFFFFFF0007007007000700700700070070070007 007007000700700700070070070007007007000700700700070070070007007007000700 700700070070070007007007000700700700070070070007007007000700700700070070 07007FE3FE3FF02420809F26>I<7038F87CFC7EFC7E743A040204020402080408041008 1008201040200F0E7E9F17>34 D<70F8FCFC74040404080810102040060E7C9F0D>39 D<0020004000800100020006000C000C00180018003000300030007000600060006000E0 00E000E000E000E000E000E000E000E000E000E000E00060006000600070003000300030 00180018000C000C000600020001000080004000200B2E7DA112>I<8000400020001000 08000C00060006000300030001800180018001C000C000C000C000E000E000E000E000E0 00E000E000E000E000E000E000E000C000C000C001C00180018001800300030006000600 0C00080010002000400080000B2E7DA112>I<01800180018001800180C183F18F399C0F F003C003C00FF0399CF18FC1830180018001800180018010147DA117>I<000600000006 000000060000000600000006000000060000000600000006000000060000000600000006 000000060000000600000006000000060000FFFFFFF0FFFFFFF000060000000600000006 000000060000000600000006000000060000000600000006000000060000000600000006 00000006000000060000000600001C207D9A23>I<70F8FCFC7404040408081010204006 0E7C840D>II<70F8F8F87005057C840D>I<0001000300030006 00060006000C000C000C00180018001800300030003000600060006000C000C000C00180 018001800300030003000600060006000C000C000C001800180018003000300030006000 60006000C000C000C000102D7DA117>I<03F0000E1C001C0E0018060038070070038070 0380700380700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F0 03C0F003C0F003C0F003C07003807003807003807807803807001806001C0E000E1C0003 F000121F7E9D17>I<018003800F80F38003800380038003800380038003800380038003 800380038003800380038003800380038003800380038003800380038007C0FFFE0F1E7C 9D17>I<03F0000C1C00100E00200700400780800780F007C0F803C0F803C0F803C02007 C00007C0000780000780000F00000E00001C0000380000700000600000C0000180000300 000600400C00401800401000803FFF807FFF80FFFF80121E7E9D17>I<03F0000C1C0010 0E00200F00780F80780780780780380F80000F80000F00000F00000E00001C0000380003 F000003C00000E00000F000007800007800007C02007C0F807C0F807C0F807C0F0078040 0780400F00200E001C3C0003F000121F7E9D17>I<000600000600000E00000E00001E00 002E00002E00004E00008E00008E00010E00020E00020E00040E00080E00080E00100E00 200E00200E00400E00C00E00FFFFF0000E00000E00000E00000E00000E00000E00000E00 00FFE0141E7F9D17>I<1803001FFE001FFC001FF8001FE0001000001000001000001000 0010000010000011F000161C00180E001007001007800003800003800003C00003C00003 C07003C0F003C0F003C0E00380400380400700200600100E000C380003E000121F7E9D17 >I<007C000182000701000E03800C07801C0780380300380000780000700000700000F1 F000F21C00F40600F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C070 03C07003803803803807001807000C0E00061C0001F000121F7E9D17>I<4000007FFFC0 7FFF807FFF80400100800200800200800400000800000800001000002000002000004000 00400000C00000C00001C000018000038000038000038000038000078000078000078000 078000078000078000078000030000121F7D9D17>I<03F0000C0C001006003003002001 806001806001806001807001807803003E03003F06001FC8000FF00003F80007FC000C7E 00103F00300F806003804001C0C001C0C000C0C000C0C000C0C000806001802001001002 000C0C0003F000121F7E9D17>I<03F0000E18001C0C00380600380700700700700380F0 0380F00380F003C0F003C0F003C0F003C0F003C07007C07007C03807C0180BC00E13C003 E3C0000380000380000380000700300700780600780E00700C002018001070000FC00012 1F7E9D17>I<70F8F8F8700000000000000000000070F8F8F87005147C930D>I<70F8F8F8 700000000000000000000070F0F8F878080808101010202040051D7C930D>I<7FFFFFE0 FFFFFFF00000000000000000000000000000000000000000000000000000000000000000 FFFFFFF07FFFFFE01C0C7D9023>61 D<000100000003800000038000000380000007C000 0007C0000007C0000009E0000009E0000009E0000010F0000010F0000010F00000207800 002078000020780000403C0000403C0000403C0000801E0000801E0000FFFE0001000F00 01000F0001000F00020007800200078002000780040003C00E0003C01F0007E0FFC03FFE 1F207F9F22>65 DI<000FC04000 7030C001C009C0038005C0070003C00E0001C01E0000C01C0000C03C0000C07C0000407C 00004078000040F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8 000000F8000000780000007C0000407C0000403C0000401C0000401E0000800E00008007 0001000380020001C0040000703800000FC0001A217D9F21>III< FFFFFF000F800F0007800300078003000780010007800180078000800780008007800080 07800080078080000780800007808000078080000781800007FF80000781800007808000 078080000780800007808000078000000780000007800000078000000780000007800000 07800000078000000FC00000FFFE0000191F7E9E1E>I72 DI<0FFFC0007C00003C00003C00003C00003C00003C00003C00003C0000 3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 3C00003C00203C00F83C00F83C00F83C00F0380040780040700030E0000F800012207E9E 17>IIII< FF803FF807C007C007C0038005E0010005E0010004F001000478010004780100043C0100 043C0100041E0100040F0100040F010004078100040781000403C1000401E1000401E100 0400F1000400F1000400790004003D0004003D0004001F0004001F0004000F0004000700 040007000E0003001F000300FFE001001D1F7E9E22>I<001F800000F0F00001C0380007 801E000F000F000E0007001E0007803C0003C03C0003C07C0003E0780001E0780001E0F8 0001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F078 0001E07C0003E07C0003E03C0003C03C0003C01E0007800E0007000F000F0007801E0001 C0380000F0F000001F80001C217D9F23>II82 D<07E0800C1980100780300380600180600180E00180E00080E00080E00080F00000F000 007800007F00003FF0001FFC000FFE0003FF00001F800007800003C00003C00001C08001 C08001C08001C08001C0C00180C00380E00300F00600CE0C0081F80012217D9F19>I<7F FFFFE0780F01E0600F0060400F0020400F0020C00F0030800F0010800F0010800F001080 0F0010000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000 0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000 0F0000000F0000001F800007FFFE001C1F7E9E21>IIII<7FF83FF80FE00FC007C0070003 C0020001E0040001F00C0000F0080000781000007C1000003C2000003E4000001E400000 0F8000000F8000000780000003C0000007E0000005E0000009F0000018F8000010780000 207C0000603C0000401E0000801F0001800F0001000780020007C0070003C01F8007E0FF E01FFE1F1F7F9E22>I91 D<080410082010201040 204020804080408040B85CFC7EFC7E7C3E381C0F0E7B9F17>II<1FE000303000781800781C00300E00000E00000E00000E0000FE00078E00 1E0E00380E00780E00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317> 97 D<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E0000 0E00000E3E000EC3800F01C00F00E00E00E00E00700E00700E00780E00780E00780E0078 0E00780E00780E00700E00700E00E00F00E00D01C00CC300083E0015207F9F19>I<03F8 0E0C1C1E381E380C70007000F000F000F000F000F000F00070007000380138011C020E0C 03F010147E9314>I<000380003F80000380000380000380000380000380000380000380 00038000038000038003E380061B801C0780380380380380700380700380F00380F00380 F00380F00380F00380F003807003807003803803803807801C07800E1B8003E3F815207E 9F19>I<03F0000E1C001C0E00380700380700700700700380F00380F00380FFFF80F000 00F00000F000007000007000003800801800800C010007060001F80011147F9314>I<00 7C00C6018F038F07060700070007000700070007000700FFF00700070007000700070007 000700070007000700070007000700070007000700070007007FF01020809F0E>I<0000 E003E3300E3C301C1C30380E00780F00780F00780F00780F00780F00380E001C1C001E38 0033E0002000002000003000003000003FFE001FFF800FFFC03001E0600070C00030C000 30C00030C000306000603000C01C038003FC00141F7F9417>I<0E0000FE00000E00000E 00000E00000E00000E00000E00000E00000E00000E00000E00000E3E000E43000E81800F 01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E 01C00E01C00E01C00E01C0FFE7FC16207F9F19>I<1C001E003E001E001C000000000000 000000000000000E007E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E000E00FFC00A1F809E0C>I<00E001F001F001F000E00000000000000000 00000000007007F000F00070007000700070007000700070007000700070007000700070 007000700070007000700070007000706070F060F0C061803F000C28829E0E>I<0E0000 FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0FF0 0E03C00E03000E02000E04000E08000E10000E30000E70000EF8000F38000E1C000E1E00 0E0E000E07000E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE000E000E00 0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00 0E000E000E000E000E000E000E000E000E00FFE00B20809F0C>I<0E1F01F000FE618618 000E81C81C000F00F00E000F00F00E000E00E00E000E00E00E000E00E00E000E00E00E00 0E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E 00E00E000E00E00E000E00E00E00FFE7FE7FE023147F9326>I<0E3E00FE43000E81800F 01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E 01C00E01C00E01C00E01C0FFE7FC16147F9319>I<01F800070E001C03803801C03801C0 7000E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E07000E03801C03801C0 1C0380070E0001F80014147F9317>I<0E3E00FEC3800F01C00F00E00E00E00E00F00E00 700E00780E00780E00780E00780E00780E00780E00700E00F00E00E00F01E00F01C00EC3 000E3E000E00000E00000E00000E00000E00000E00000E00000E0000FFE000151D7F9319 >I<03E0800619801C05803C0780380380780380700380F00380F00380F00380F00380F0 0380F003807003807803803803803807801C0B800E138003E38000038000038000038000 0380000380000380000380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E00 0E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00F147F9312>I<1F 9030704030C010C010C010E00078007F803FE00FF00070803880188018C018C018E030D0 608F800D147E9312>I<020002000200060006000E000E003E00FFF80E000E000E000E00 0E000E000E000E000E000E000E000E080E080E080E080E080610031001E00D1C7F9B12> I<0E01C0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 C00E01C00E01C00E01C00E01C00E03C00603C0030DC001F1FC16147F9319>III<7FC3FC0F01E00701C007018003810001C20000E40000EC00007800003800 003C00007C00004E000087000107000303800201C00601E01E01E0FF07FE1714809318> II<3FFF380E200E201C4038407840 7000E001E001C00380078007010E011E011C0338027006700EFFFE10147F9314>I124 D E /Fs 46 122 df<00200040008001000300060004000C 000C00180018003000300030007000600060006000E000E000E000E000E000E000E000E0 00E000E000E000E000E000E0006000600060007000300030003000180018000C000C0004 000600030001000080004000200B327CA413>40 D<800040002000100018000C00040006 0006000300030001800180018001C000C000C000C000E000E000E000E000E000E000E000 E000E000E000E000E000E000E000C000C000C001C0018001800180030003000600060004 000C00180010002000400080000B327DA413>I<70F8FCFC740404040408081010204006 0F7C840E>44 DI<70F8F8F87005057C840E>I<008003800F80F3 800380038003800380038003800380038003800380038003800380038003800380038003 8003800380038003800380038003800380038007C0FFFE0F217CA018>49 D<03F0000C1C001007002007804003C04003C08003E0F003E0F801E0F801E0F801E02003 E00003E00003C00003C0000780000700000E00001C0000180000300000600000C0000180 000100000200200400200800201800603000403FFFC07FFFC0FFFFC013217EA018>I<00 0200000600000E00000E00001E00001E00002E00004E00004E00008E00008E00010E0002 0E00020E00040E00040E00080E00100E00100E00200E00200E00400E00800E00FFFFF800 0E00000E00000E00000E00000E00000E00000E00001F0001FFF015217FA018>52 D<1000801E07001FFF001FFE001FF80013E0001000001000001000001000001000001000 0010F800130E001407001803801003800001C00001C00001E00001E00001E00001E07001 E0F001E0F001E0E001C08001C04003C04003802007001006000C1C0003F00013227EA018 >I<4000006000007FFFE07FFFC07FFFC0400080C0010080010080020080020000040000 080000080000100000300000200000600000600000600000E00000C00000C00001C00001 C00001C00001C00003C00003C00003C00003C00003C00003C00003C00003C00001800013 237DA118>55 D<01F800060E000803001001802001802000C06000C06000C06000C07000 C07801803E01003F02001FC4000FF80003F80003FC00067F00083F80100F803007C06001 C06000E0C000E0C00060C00060C00060C000606000406000C03000801803000E0E0003F0 0013227EA018>I<01F000060C000C0600180700380380700380700380F001C0F001C0F0 01C0F001E0F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E00619E003 E1E00001C00001C00001C0000380000380300300780700780600700C002018001030000F C00013227EA018>I<0001800000018000000180000003C0000003C0000003C0000005E0 000005E000000DF0000008F0000008F0000010F800001078000010780000203C0000203C 0000203C0000401E0000401E0000401E0000800F0000800F0000FFFF0001000780010007 80030007C0020003C0020003C0040003E0040001E0040001E00C0000F00C0000F03E0001 F8FF800FFF20237EA225>65 D<0007E0100038183000E0063001C00170038000F0070000 F00E0000701E0000701C0000303C0000303C0000307C0000107800001078000010F80000 00F8000000F8000000F8000000F8000000F8000000F8000000F800000078000000780000 107C0000103C0000103C0000101C0000201E0000200E000040070000400380008001C001 0000E0020000381C000007E0001C247DA223>67 DIII72 DI77 DI80 D82 D<03F0200C0C601802603001E07000E0 600060E00060E00060E00020E00020E00020F00000F000007800007F00003FF0001FFE00 0FFF0003FF80003FC00007E00001E00000F00000F0000070800070800070800070800070 C00060C00060E000C0F000C0C80180C6070081FC0014247DA21B>I<7FFFFFF878078078 60078018400780084007800840078008C007800C80078004800780048007800480078004 000780000007800000078000000780000007800000078000000780000007800000078000 000780000007800000078000000780000007800000078000000780000007800000078000 000780000007800000078000000FC00003FFFF001E227EA123>I<0FE0001838003C0C00 3C0E0018070000070000070000070000FF0007C7001E07003C0700780700700700F00708 F00708F00708F00F087817083C23900FC1E015157E9418>97 D<0E0000FE00001E00000E 00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F000E 61C00E80600F00300E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E 001E0E001C0E003C0E00380F00700C80600C41C0083F0017237FA21B>I<01FE00070300 0C07801C0780380300780000700000F00000F00000F00000F00000F00000F00000F00000 7000007800403800401C00800C010007060001F80012157E9416>I<0000E0000FE00001 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E001F8 E00704E00C02E01C01E03800E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000 E0F000E07000E07800E03800E01801E00C02E0070CF001F0FE17237EA21B>I<01FC0007 07000C03801C01C03801C07801E07000E0F000E0FFFFE0F00000F00000F00000F00000F0 00007000007800203800201C00400E008007030000FC0013157F9416>I<003C00C6018F 038F030F070007000700070007000700070007000700FFF8070007000700070007000700 07000700070007000700070007000700070007000700070007807FF8102380A20F>I<00 007001F198071E180E0E181C07001C07003C07803C07803C07803C07801C07001C07000E 0E000F1C0019F0001000001000001800001800001FFE000FFFC00FFFE03800F060003040 0018C00018C00018C000186000306000303800E00E038003FE0015217F9518>I<0E0000 FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000 0E00000E1F800E60C00E80E00F00700F00700E00700E00700E00700E00700E00700E0070 0E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF18237FA21B> I<1C001E003E001E001C00000000000000000000000000000000000E00FE001E000E000E 000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC00A227F A10E>I<01C003E003E003E001C00000000000000000000000000000000001E00FE001E0 00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0 00E000E000E000E000E060E0F0C0F18061803E000B2C82A10F>I<0E0000FE00001E0000 0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E03FC 0E01F00E01C00E01800E02000E04000E08000E10000E38000EF8000F1C000E1E000E0E00 0E07000E07800E03C00E01C00E01E00E00F00E00F8FFE3FE17237FA21A>I<0E1FC07F00 FE60E183801E807201C00F003C00E00F003C00E00E003800E00E003800E00E003800E00E 003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E00 3800E00E003800E00E003800E00E003800E00E003800E0FFE3FF8FFE27157F942A>109 D<0E1F80FE60C01E80E00F00700F00700E00700E00700E00700E00700E00700E00700E00 700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF18157F941B>I<01 FC000707000C01801800C03800E0700070700070F00078F00078F00078F00078F00078F0 0078F000787000707800F03800E01C01C00E038007070001FC0015157F9418>I<0E1F00 FE61C00E80600F00700E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E 0E001E0E003C0E003C0E00380F00700E80E00E41C00E3F000E00000E00000E00000E0000 0E00000E00000E00000E00000E0000FFE000171F7F941B>I<0E3CFE461E8F0F0F0F060F 000E000E000E000E000E000E000E000E000E000E000E000E000E000F00FFF010157F9413 >114 D<0F8830786018C018C008C008E008F0007F803FE00FF001F8003C801C800C800C C00CC008E018D0308FC00E157E9413>I<02000200020002000600060006000E001E003E 00FFF80E000E000E000E000E000E000E000E000E000E000E000E040E040E040E040E040E 040708030801F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E00700E00700E00700E 00700E00700E00700E00700E00700E00700E00700E00700E00700E00F00E00F006017003 827800FC7F18157F941B>I119 D121 D E /Ft 20 118 df45 D68 D73 D77 D80 D<007F802001FFE02007C078600F001C601E0006E03C0003E0380001E078 0000E0700000E070000060F0000060F0000060F0000020F0000020F0000020F8000020F8 0000007C0000007E0000003F0000003FC000001FF800000FFF800007FFF80003FFFC0000 FFFF00000FFF800000FFC000001FE0000007E0000003F0000001F0000000F0000000F800 0000F88000007880000078800000788000007880000078C0000078C0000070E00000F0E0 0000E0F00000E0F80001C0EC000380C7000700C1F01E00807FFC00800FF0001D337CB125 >83 D<00FE00000303C0000C00E00010007000100038003C003C003E001C003E001E003E 001E0008001E0000001E0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F 001E003E001E003C001E007C001E00F8001E04F8001E04F8001E04F8003E04F8003E0478 003E047C005E043E008F080F0307F003FC03E01E1F7D9E21>97 D<003F8000E060038018 0700040F00041E001E1C003E3C003E7C003E7C0008780000F80000F80000F80000F80000 F80000F80000F80000F80000F800007800007C00007C00003C00011E00011E00020F0002 07000403801800E060003F80181F7D9E1D>99 D<000001E000003FE000003FE0000003E0 000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0 000001E0000001E0000001E0000001E0000001E0000001E0001F81E000F061E001C019E0 078005E00F0003E00E0003E01E0001E03C0001E03C0001E07C0001E0780001E0F80001E0 F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0780001E0 780001E03C0001E03C0001E01C0001E01E0003E00E0005E0070009E0038011F000E061FF 003F81FF20327DB125>I<003F800000E0E0000380380007003C000E001E001E001E001C 000F003C000F007C000F0078000F8078000780F8000780F8000780FFFFFF80F8000000F8 000000F8000000F8000000F8000000F8000000780000007C0000003C0000003C0000801E 0000800E0001000F0002000780020001C00C0000F03000001FC000191F7E9E1D>I<0007 E0001C1000383800707C00E07C01E07C01C03803C00003C00003C00003C00003C00003C0 0003C00003C00003C00003C00003C00003C000FFFFC0FFFFC003C00003C00003C00003C0 0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0 0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00007E0007FFF 007FFF0016327FB114>I<000000F0007F030801C1C41C0380E81C070070080F0078001E 003C001E003C003E003E003E003E003E003E003E003E003E003E003E003E001E003C001E 003C000F007800070070000780E00009C1C000087F000018000000180000001800000018 000000180000001C0000000E0000000FFFF80007FFFF0003FFFF800E000FC0180001E030 0000F070000070E0000038E0000038E0000038E0000038E0000038700000707000007038 0000E01C0001C00700070001C01C00003FE0001E2F7E9F21>I<07000F801F801F800F80 0700000000000000000000000000000000000000000000000780FF80FF800F8007800780 078007800780078007800780078007800780078007800780078007800780078007800780 07800780078007800FC0FFF8FFF80D307EAF12>105 D<0780FE001FC000FF83078060F0 00FF8C03C18078000F9001E2003C0007A001E4003C0007A000F4001E0007C000F8001E00 07C000F8001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E0007 8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780 00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000 F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0 001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E38>109 D<0780FE0000FF83078000FF8C03C0000F9001E00007A001E00007A000F00007C000F000 07C000F000078000F000078000F000078000F000078000F000078000F000078000F00007 8000F000078000F000078000F000078000F000078000F000078000F000078000F0000780 00F000078000F000078000F000078000F000078000F000078000F000078000F0000FC001 F800FFFC1FFF80FFFC1FFF80211F7E9E25>I<001FC00000F0780001C01C00070007000F 0007801E0003C01C0001C03C0001E03C0001E0780000F0780000F0780000F0F80000F8F8 0000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8780000F07C0001F03C 0001E03C0001E01E0003C01E0003C00F00078007800F0001C01C0000F07800001FC0001D 1F7E9E21>I<0783E0FF8C18FF907C0F907C07A07C07C03807C00007C00007C000078000 078000078000078000078000078000078000078000078000078000078000078000078000 0780000780000780000780000780000780000FC000FFFE00FFFE00161F7E9E19>114 D<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F800007E00 003FF0001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC000 1CE0001CE00018F00038F00030CC0060C301C080FE00161F7E9E1A>I<00400000400000 400000400000400000C00000C00000C00001C00001C00003C00007C0000FC0001FFFE0FF FFE003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003 C00003C00003C00003C00003C00003C01003C01003C01003C01003C01003C01003C01003 C01001C02001E02000E0400078C0001F00142C7FAB19>I<078000F000FF801FF000FF80 1FF0000F8001F000078000F000078000F000078000F000078000F000078000F000078000 F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0 00078000F000078000F000078000F000078000F000078000F000078000F000078001F000 078001F000078001F000038002F00003C004F00001C008F800007030FF80001FC0FF8021 1F7E9E25>I E /Fu 5 85 df<00000000C00000000000E00000000001E00000000003E0 0000000003E00000000007E00000000007E0000000000FE0000000000FE0000000001FE0 000000001FE00000000037E00000000067E00000000067E000000000C7E000000000C7F0 0000000183F00000000183F00000000303F00000000703F00000000603F00000000C03F0 0000000C03F00000001803F00000001803F00000003003F00000003003F00000006003F0 000000C003F0000000C003F00000018003F00000018003F8000003FFFFF8000003FFFFF8 0000060001F800000E0001F800000C0001F80000180001F80000180001F80000300001F8 0000300001F80000600001F80000E00001F80000C00001F80001C00001F80001C00001F8 0007C00001FC001FC00003FC00FFF8007FFFE0FFF8007FFFE02B327BB135>65 D<000FFFFFFE0000000FFFFFFF800000007F000FE00000007E0003F00000007E0000F800 00007E0000FC0000007E00007C000000FC00003E000000FC00003E000000FC00003F0000 00FC00001F000001F800001F000001F800001F800001F800001F800001F800001F800003 F000001F800003F000001F800003F000001F800003F000001F800007E000003F800007E0 00003F800007E000003F800007E000003F80000FC000003F00000FC000007F00000FC000 007F00000FC000007F00001F8000007E00001F800000FE00001F800000FE00001F800000 FC00003F000001FC00003F000001F800003F000001F800003F000003F000007E000003E0 00007E000007E000007E00000FC000007E00000F800000FC00001F800000FC00003F0000 00FC00007E000000FC0000FC000001F80001F0000001F80003E0000001F8000FC0000003 F8007F000000FFFFFFFC000000FFFFFFE000000031317BB036>68 D<000FFFFFFFFC000FFFFFFFFC00007F0001FC00007E00007C00007E00003C00007E0000 3C00007E0000180000FC0000180000FC0000180000FC0000180000FC0000180001F80000 180001F80000180001F80000180001F80000180003F00080100003F00180000003F00180 000003F00180000007E00300000007E00300000007E00700000007E01F0000000FFFFE00 00000FFFFE0000000FC01E0000000FC00E0000001F800C0000001F800C0000001F800C00 00001F800C0000003F00180000003F00080000003F00000000003F00000000007E000000 00007E00000000007E00000000007E0000000000FC0000000000FC0000000000FC000000 0000FC0000000001F80000000001F80000000001F80000000003F800000000FFFFF00000 00FFFFF00000002E317BB02F>70 D<000FFFFFF000000FFFFFFE0000007F003F8000007E 000FC000007E0007E000007E0003F000007E0001F80000FC0001F80000FC0001F80000FC 0001F80000FC0001F80001F80003F80001F80003F80001F80003F80001F80003F00003F0 0007F00003F00007E00003F0000FC00003F0000FC00007E0001F000007E0007E000007E0 00FC000007E007F000000FFFFFC000000FFFFF0000000FC00F8000000FC003C000001F80 03E000001F8001F000001F8001F000001F8001F800003F0001F800003F0001F800003F00 01F800003F0001F800007E0003F800007E0003F800007E0003F000007E0003F00000FC00 07F00000FC0007F00000FC0007F00800FC0007F00C01F80007F01801F80007F01801F800 03F03003F80003F030FFFFE001F0E0FFFFE000FFC0000000003F002E327BB034>82 D<07FFFFFFFFF00FFFFFFFFFF00FC00FE003F01E000FC000F01C000FC000E018000FC000 E038000FC0006030001F8000E030001F8000E060001F8000C060001F8000C060003F0000 C0C0003F0000C0C0003F0000C0C0003F0000C080007E00008000007E00000000007E0000 0000007E0000000000FC0000000000FC0000000000FC0000000000FC0000000001F80000 000001F80000000001F80000000001F80000000003F00000000003F00000000003F00000 000003F00000000007E00000000007E00000000007E00000000007E0000000000FC00000 00000FC0000000000FC0000000000FC0000000001F80000000001F80000000001F800000 00001F80000000003F00000000003F00000000003F0000000000FF00000000FFFFFF0000 00FFFFFF0000002C3173B033>84 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%EndSetup %%Page: 0 1 0 0 bop 795 947 a Fu(D)26 b(R)g(A)f(F)h(T)225 1038 y Ft(Do)r(cumen)n(t)20 b(for)i(a)f(Standard)g(Message-P)n(assing)f(In)n (terface)621 1232 y Fs(Message)c(P)o(assing)h(In)o(terface)e(F)l(orum) 795 1359 y(F)l(ebruary)h(4,)g(1997)190 1417 y(This)h(w)o(ork)f(w)o(as)h (supp)q(orted)g(in)f(part)g(b)o(y)g(NSF)g(and)h(ARP)l(A)e(under)h(NSF)g (con)o(tract)283 1475 y(CD)o(A-9115428)j(and)e(Esprit)f(under)h(pro)s (ject)e(HPC)i(Standards)g(\(21111\).)p eop %%Page: 1 2 1 1 bop 166 45 a Fr(This)20 b(is)h(the)f(result)g(of)f(a)h(LaT)l(eX)g (run)g(of)g(a)f(draft)g(of)h(a)f(single)j(c)o(hapter)d(of)h(the)g(MPIF) f(Final)75 102 y(Rep)q(ort)d(do)q(cumen)o(t.)969 2828 y(i)p eop %%Page: 1 3 1 2 bop 75 356 a Fq(Chapter)34 b(6)75 564 y Fp(Extended)40 b(Collecti)q(v)m(e)i(Op)s(erations)75 805 y Fo(6.1)59 b(Intro)r(duction)75 953 y Fn(Curren)o(t)14 b(Status:)35 b Fm(No)14 b(v)o(otes)166 1057 y Fr(Collectiv)o(e)j(comm)o(unication)e (capabilities)j(are)d(here)h(for)e Fl(MPI-2)p Fr(,)g(co)o(v)o(ering)h (these)h(areas:)143 1151 y Fk(\017)23 b Fr(Extension)15 b(of)g Fl(MPI)g Fr(collectiv)o(e)i(op)q(erations)e(to)g(in)o(tercomm)o (unicators)143 1245 y Fk(\017)23 b Fr(Extension)15 b(of)g Fl(MPI)g Fr(collectiv)o(e)i(op)q(erations)e(to)g(in-place)i(bu\013ers.) 143 1339 y Fk(\017)23 b Fr(Tw)o(o-phase)12 b(collectiv)o(e)j(comm)o (unication)e(of)f(a)h(limited)h(form)e(and)h(a)g(limited)h(set)f(of)f (op)q(erations.)143 1432 y Fk(\017)23 b Fr(A)15 b(generalized)i (all-to-all)g(collectiv)o(e)g(op)q(eration)75 1576 y Fo(6.2)59 b(Tw)n(o-phase)19 b(Collective)f(Communication)75 1724 y Fn(Curren)o(t)c(Status:)j Fm(no)c(v)o(otes)166 1828 y Fr(In)j(some)g(applications,)h(b)q(etter)e(p)q(erformance)h(can) g(b)q(e)h(ac)o(hiev)o(ed)f(b)o(y)g(separating)f(the)h(initiation)75 1885 y(and)21 b(completion)h(of)e(a)h(collectiv)o(e)h(op)q(eration.)37 b(F)l(or)20 b(example,)j(in)e(some)g(n)o(umerical)h(applications,)75 1941 y(b)q(etter)g(p)q(erformance)g(can)h(b)q(e)f(ac)o(hiev)o(ed)h(b)o (y)f(o)o(v)o(erlapping)h(other)f(w)o(ork)f(\(b)q(oth)h(computation)g (and)75 1997 y(comm)o(unication\))11 b(with)f(an)h Fl(MPI)p 647 1997 14 2 v 15 w(Allreduce)p Fr(.)20 b(A)o(t)10 b(the)g(same)g (time,)h(the)g(full)g(generalit)o(y)g(of)f(non-blo)q(c)o(king)75 2054 y(collectiv)o(e)17 b(op)q(erations,)e(considered)i(at)e(length)h (b)o(y)f(the)g(MPI)h(F)l(orum,)e(is)i(b)q(oth)f(not)g(needed)i(b)o(y)e (some)75 2110 y(applications,)f(and)e(can)g(b)q(e)h(a)f(burden)h(for)e (some)h(MPI)g(implemen)o(tations.)20 b(Instead,)13 b(a)f(v)o(ery)g (restricted)75 2167 y(set)j(of)h(collectiv)o(e)h(op)q(erations)f(that)f (can)g(b)q(e)i(started)e(and)g(completed)i(with)f(separate)f(MPI)h (calls)g(are)75 2223 y(pro)o(vided.)36 b(These)20 b(are)g(called)i("t)o (w)o(o)c(phase")j(collectiv)o(e)g(comm)o(unication)g(routines.)36 b(F)l(or)19 b(eac)o(h)h(of)75 2280 y(these)15 b(op)q(erations,)g(there) g(is)g(a)f(separate)h(start)e(and)i(end)h(routine.)k(F)l(or)14 b(example,)i(for)e(the)h(t)o(w)o(o-phase)75 2336 y(allreduce)i(op)q (eration,)e(the)g(calls)i(are)170 2442 y Fj(MPI_Allreduce_start\()22 b(sbuf,)h(rbuf,)g(count,)g(datatype,)g(op,)g(comm)g(\);)170 2499 y(...)170 2555 y(other)h(work)f(and/or)g(MPI)g(calls)170 2612 y(...)170 2668 y(MPI_Allreduce_end\()f(rbuf,)h(comm)g(\);)-32 46 y Fi(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)964 2828 y Fr(1)p eop %%Page: 2 4 2 3 bop 75 -100 a Fr(2)566 b Fh(CHAPTER)15 b(6.)29 b(EXTENDED)15 b(COLLECTIVE)h(OPERA)l(TIONS)75 45 y Fr(The)f(reason)g(for)g(the)g Fj(rbuf)g Fr(in)h(the)f(end)h(call)g(is)g(describ)q(ed)h(b)q(elo)o(w.) 166 102 y(These)j(routines)g(allo)o(w)g(applications)h(to)e(separate)h (the)f(pro)q(cess)h(of)g(data)f(transmission)h(from)75 158 y(sync)o(hronization,)j(m)o(uc)o(h)e(as)f(the)h(non-blo)q(c)o(king) h(p)q(oin)o(t-to-p)q(oin)o(t)g(op)q(erations)f(\(suc)o(h)g(as)f Fl(MPI)p 1765 158 14 2 v 16 w(Isend)75 214 y Fr(and)d Fl(MPI)p 250 214 V 16 w(Irecv)p Fr(\))f(do)h(for)g(p)q(oin)o(t-to-p)q (oin)o(t)h(comm)o(unication.)26 b(The)18 b(t)o(w)o(o-phase)e(v)o (ersions)h(can)g(pro)o(vide)75 271 y(imp)q(ortan)o(t)k(p)q(erformance)h (adv)m(an)o(tages)f(ev)o(en)h(on)g(platforms)f(with)h(fast)f(collectiv) o(e)i(op)q(erations)f(b)o(y)75 327 y(allo)o(wing)17 b(applications)i (to)c(a)o(v)o(oid)i(unnecessary)g(sync)o(hronizations.)25 b(F)l(or)16 b(example,)h(an)g(MPI)f(imple-)75 384 y(men)o(tation)h (with)g(some)f(shared)h(memory)g(ma)o(y)f(c)o(ho)q(ose)h(to)f(implemen) o(t)i(these)f(op)q(erations)g(b)o(y)g(using)75 440 y(a)e(small)h(amoun) o(t)e(of)h(shared)g(memory)g(attac)o(hed)f(to)h(eac)o(h)g(comm)o (unicator)g(and)g(a)g(sp)q(ecial)i(algorithm)75 497 y(for)g(eac)o(h)h (t)o(w)o(o-phase)e(op)q(eration.)27 b(An)18 b(MPI)g(implemen)o(tation)h (without)e(shared)h(memory)f(but)h(with)75 553 y(a)f(m)o(ulticast)h(or) f(simple)i(data-collection)f(capabilit)o(y)h(ma)o(y)e(use)h(these)f (features.)27 b(Because)18 b(the)f(t)o(w)o(o-)75 610 y(phase)12 b(op)q(erations)h(are)e(distinct)j(from)d(the)h(other)g (collectiv)o(e)i(op)q(erations,)e(the)g(t)o(w)o(o-phase)g(v)o(ersion)g (can)75 666 y(b)q(e)18 b(optimized,)i(and)e(there)f(is)h(no)g(impact)g (on)g(the)f(implemen)o(tation)i(or)f(p)q(erformance)f(of)h(the)f(other) 75 723 y(collectiv)o(e)g(op)q(erations.)75 844 y Fg(6.2.1)49 b(General)16 b(rules)f(fo)o(r)h(all)i(t)o(w)o(o)d(phase)h(collective)h (communication)143 930 y Fk(\017)23 b Fr(Only)15 b(one)g(t)o(w)o (o-phase)f(collectiv)o(e)i(comm)o(unication)f(man)o(y)f(b)q(e)i(activ)o (e)e(on)h(an)o(y)f(particular)h(com-)189 987 y(m)o(unicator)h(and)h (MPI)g(pro)q(cess)g(at)f(an)o(y)h(time.)25 b(In)17 b(other)g(w)o(ords,) f(on)h(an)o(y)f(MPI)h(pro)q(cess,)g(eac)o(h)189 1043 y(comm)o(unicator)i(ma)o(y)g(ha)o(v)o(e)h(a)f(most)g(one)h(activ)o(e)g (t)o(w)o(o-phase)g(op)q(eration)g(at)f(an)o(y)g(time.)35 b(The)189 1099 y(inclusion)20 b(of)d(pro)q(cess)h(here)g(is)g(in)o (tend)g(to)f(mak)o(e)g(clear)h(that)f("at)g(an)o(y)g(time")h(applies)h (to)e(eac)o(h)189 1156 y(pro)q(cess)e(separately)l(.)189 1278 y Fn(Discussion)o(:)h Fm(could)e(b)q(e)g(w)o(eak)o(ened)h(to)f (only)f(one)h(of)f(eac)o(h)i(kind.)143 1419 y Fk(\017)23 b Fr(Start)c(calls)i(are)f(lo)q(cal;)j(their)e(completion)g(do)q(es)g (not)e(dep)q(end)j(on)e(the)h(action)f(of)g(an)o(y)f(other)189 1476 y(pro)q(cess.)143 1570 y Fk(\017)k Fr(End)12 b(calls)i(are)e (collectiv)o(e)i(o)o(v)o(er)e(the)g(comm)o(unicator)g(and)h(follo)o(w)f (the)h(ordering)f(rules)i(for)d(collec-)189 1626 y(tiv)o(e)j(calls.)21 b(End)14 b(calls)i(matc)o(h)d(the)i(preceeding)h(start)d(call)i(for)f (the)g(same)g(collectiv)o(e)i(op)q(eration.)189 1683 y(When)f(and)g(\\end")g(call)h(is)f(made,)g(exactly)g(one)g(unmatc)o (hed)h(\\start")d(call)j(for)e(the)h(same)g(op)q(er-)189 1739 y(ation)g(m)o(ust)f(preceed)j(it.)143 1833 y Fk(\017)23 b Fr(An)15 b(implemen)o(tation)h(is)f(free)g(to)f(implemen)o(t)i(an)o (y)e(t)o(w)o(o-phase)g(collectiv)o(e)i(op)q(eration)f(using)h(the)189 1889 y(corresp)q(onding)g(blo)q(c)o(king)i(collectiv)o(e)f(routine)g (when)f(the)g(end)g(call)h(\(e.g.,)e Fl(MPI)p 1586 1889 V 16 w(Allreduce)p 1776 1889 V 17 w(end)p Fr(\))189 1946 y(is)k(issued.)34 b(The)19 b(start)f(call)j(is)e(pro)o(vided)h(to)f (allo)o(w)h(the)f(user)g(and)h(MPI)f(implemen)o(tation)i(to)189 2002 y(optimize)16 b(the)f(collectiv)o(e)i(op)q(eration.)143 2096 y Fk(\017)23 b Fr(Tw)o(o)c(phase)i(collectiv)o(e)h(op)q(erations)e (do)g(not)g(matc)o(h)g(the)g(corresp)q(onding)i(regular)e(collectiv)o (e)189 2152 y(op)q(eration.)40 b(F)l(or)21 b(example,)k(an)d Fl(MPI)p 873 2152 V 15 w(Allreduce)h Fr(and)g(an)f Fl(MPI)p 1333 2152 V 15 w(Allreduce)p 1522 2152 V 18 w(sta)o(rt)p Fr(/)p Fj(end)f Fr(do)h(not)189 2209 y(matc)o(h.)143 2303 y Fk(\017)h Fr(Tw)o(o)11 b(phase)i(routines)h(that)e(ha)o(v)o(e)g (a)g(destination)i(bu\013er)e(sp)q(ecify)i(that)e(bu\013er)h(in)h(b)q (oth)e(the)h(start)189 2359 y(and)j(end)i(routines.)24 b(By)16 b(sp)q(ecifying)j(the)e(bu\013er)f(that)g(receiv)o(es)h(data)f (in)h(the)g(end)g(routine,)g(w)o(e)189 2416 y(can)c(a)o(v)o(oid)g(man)o (y)f(\(though)h(not)f(all\))i(of)f(the)g(problems)g(describ)q(ed)i(in)f (section)g(2.5.2)d(\(A)i(F)l(ortran)189 2472 y(Problem)i(with)h (Register)g(Optimization\).)143 2566 y Fk(\017)23 b Fr(An)14 b(MPI)g(collectiv)o(e)h(routine)g(that)e(is)h(not)g(a)f(t)o(w)o(o)g (phase)h(op)q(eration)g(ma)o(y)f(b)q(e)i(used)f(at)f(the)h(same)189 2622 y(time)h(on)g(the)h(same)e(comm)o(unicator.)20 b(That)15 b(is)1967 46 y Fi(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop %%Page: 3 5 3 4 bop 75 -100 a Fh(6.2.)34 b(TW)o(O-PHASE)15 b(COLLECTIVE)h (COMMUNICA)l(TION)637 b Fr(3)570 45 y Fj(MPI_Allreduce_start\()22 b(...,)h(comm)g(\);)570 102 y(...)570 158 y(MPI_Barrier\()g(comm)g(\);) 570 214 y(...)570 271 y(MPI_Allreduce_end\()f(rbuf,)h(comm)g(\);)143 382 y Fk(\017)g Fr(In)15 b(a)f(m)o(ultithreaded)i(implemen)o(tation,)f (an)o(y)f(t)o(w)o(o-phase)g(collectiv)o(e)j(start)c(and)i(end)g(op)q (eration)189 438 y(called)i(b)o(y)e(a)g(pro)q(cess)h(m)o(ust)f(b)q(e)h (called)h(from)e(the)g(same)h(thread.)k(This)c(restriction)g(is)g(made) g(to)189 495 y(simplify)j(the)e(implemen)o(tation)i(in)f(the)g(m)o (ultithreaded)g(case.)27 b(\(Note)17 b(that)f(w)o(e)i(ha)o(v)o(e)f (already)189 551 y(disallo)o(w)o(ed)d(ha)o(ving)f(t)o(w)o(o)f(threads)g (start)g(a)h(t)o(w)o(o-phase)f(op)q(eration)h(on)g(the)g(same)f(comm)o (unicator)189 608 y(since)k(only)g(one)f(t)o(w)o(o-phase)f(op)q (eration)i(can)f(b)q(e)h(activ)o(e)f(on)h(a)e(comm)o(unicator)h(at)g (an)o(y)g(time.\))189 712 y Ff(Discussion.)75 b Fr(There)21 b(are)g(other)g(alternativ)o(es)g(to)f(the)i(start/end)e(options.)38 b(Jim)22 b(Co)o(wnie)189 769 y(pro)o(vided)16 b(the)f(follo)o(wing)h (discussion)189 844 y(Since)g(at)f(least)g(one)h(of)e(the)i(calls)g(m)o (ust)e(b)q(e)i(collectiv)o(e)h(the)f(options)f(are)380 967 y Fj(Start)261 b(End)189 1079 y(1\))143 b(collective)e(local)189 1136 y(2\))i(local)261 b(collective)189 1192 y(3\))143 b(collective)e(collective)189 1315 y Fr(Option)16 b(1)f(giv)o(es)g(y)o (ou)g(nothing)g(b)q(ey)o(ond)h(what)f(y)o(ou)g(already)g(ha)o(v)o(e,)g (so)f(can)i(b)q(e)g(ignored.)189 1390 y(Option)g(2)f(is)g(what)g(Llo)o (yd)h(app)q(ears)f(to)g(b)q(e)h(prop)q(osing)f(\(and)g(the)h(text)e(sa) o(ys\).)189 1465 y(Option)i(3)f(is)g(what)g(the)g(text)g(said)h(at)e (the)h(last)h(meeting.)189 1540 y(I)k(actually)g(prefer)g(option)g(3)f (\(b)q(oth)g(start)g(and)g(end)i(are)e(collectiv)o(e\).)34 b(It)20 b(has)g(the)f(follo)o(wing)189 1596 y(b)q(ene\014ts)d(:-)189 1671 y(1\))k(A)i(legal)g(implemen)o(tation)h(of)e(these)g(functions)h (is)g(to)f(replace)h(them)g(with)f(the)h(existing)189 1728 y(blo)q(c)o(king)16 b(functions)g(at)f(start)f(time,)h(when)h(all) g(the)f(argumen)o(ts)f(are)h(kno)o(wn.)189 1803 y(2\))d(It)h(pro)o (vides)h(a)e(w)o(a)o(y)g(for)h(the)g(implemen)o(tation)h(only)g(to)e (allo)q(cate)i(the)f(resources)g(required)i(for)189 1859 y(these)f(op)q(erations)g(at)f(the)i(time)f(the)g(\014rst)g(suc)o(h)g (op)q(eration)g(is)h(p)q(erformed)f(in)h(a)f(comm)o(unicator.)189 1916 y(\(Resource)h(allo)q(cation)i(is)e(assumed)h(to)e(require)i (collectiv)o(e)h(comm)o(unication\).)189 1990 y(3\))11 b(\(As)g(a)g(result)i(of)e(2\))g(It)h(allo)o(ws)f(an)h(easy)g (extension)g(to)f(the)h(draft)f(whic)o(h)i(is)f(to)f(p)q(ermit)h(m)o (ultiple)189 2047 y(outstanding)j(suc)o(h)g(op)q(erations)h(in)g(a)f (comm)o(unicator.)189 2122 y(T)l(o)g(expand)g(on)h(the)f(p)q(ossibilit) o(y)i(of)e(m)o(ultiple)i(op)q(erations)e(:-)189 2197 y(1\))g(W)l(e)h(w)o(ould)h(allo)o(w)f(an)g(arbitrary)f(n)o(um)o(b)q(er) i(of)e(t)o(w)o(o-phase)g(collectiv)o(e)j(op)q(erations)e(in)h(a)f(com-) 189 2253 y(m)o(unicator.)189 2328 y(2\))e(They)i(m)o(ust)e(b)q(e)i (strictly)g(nested.)189 2403 y(3\))e(They)i(m)o(ust)e(o)q(ccur)i(in)g (the)f(same)g(order)g(in)h(eac)o(h)f(mem)o(b)q(er)h(of)e(the)i(comm)o (unicator.)189 2478 y(Because)e(the)g(implemen)o(tation)h(can)f(blo)q (c)o(k)g(to)g(allo)q(cate)g(the)g(necessary)g(resources)g(in)g(the)g (start)189 2534 y(op)q(eration,)20 b(it)g(need)g(not)f(allo)q(cate)h (an)o(y)f(resources)h(to)e(comm)o(unicators)h(as)h(it)f(creates)g (them,)189 2591 y(rather)11 b(it)g(can)h(allo)q(cate)g(these)g (\(scarce\))f(resources)g(only)h(to)f(the)h(comm)o(unicators)f(whic)o (h)h(require)189 2647 y(them.)23 b(Since)18 b(it)f(is)g(no)o(w)f (dynamically)i(allo)q(cating)g(these)f(resources)f(it)h(is)g(a)f (relativ)o(ely)h(simple)189 2704 y(extension)f(to)e(allo)o(w)i(m)o (ultiple)h(suc)o(h)e(op)q(erations)h(in)g(a)e(single)j(comm)o (unicator.)-32 46 y Fi(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop %%Page: 4 6 4 5 bop 75 -100 a Fr(4)560 b Fh(CHAPTER)16 b(6.)34 b(EXTENDED)15 b(COLLECTIVE)h(OPERA)l(TIONS)189 45 y Fr(Note)j(that)h(this)h(prop)q (osal)f(do)q(es)g(*not*)g(include)i(tags)d(in)i(the)g(collectiv)o(e)h (op)q(erations,)f(these)189 102 y(w)o(ould)13 b(only)h(b)q(e)g (required)g(if)g(w)o(e)f(w)o(an)o(ted)g(to)f(relax)i(the)f(ordering)h (rule)g(\(rule)f(3\))g(ab)q(o)o(v)o(e.)19 b(I)13 b(see)h(no)189 158 y(reason)i(to)g(do)g(that.)24 b(\(F)l(or)15 b(instance)j(Rolf)t('s) e(application)j(example)e(didn't)g(need)h(it\).)24 b(Adding)189 214 y(tags)11 b(w)o(ould)i(remo)o(v)o(e)f(the)h(p)q(ossibilit)o(y)h(of) e(implemen)o(ting)j(these)e(op)q(erations)f(using)i(the)e(existing,)189 271 y(blo)q(c)o(king)k(collectiv)o(e)h(op)q(erations.)189 344 y(In)h(this)g(v)o(ersion)g(these)f(op)q(erations)h(really)g(b)q (ecome)h(hin)o(ts)f(to)f(the)g(implemen)o(tation)i(that)e(the)189 400 y(user)e(w)o(ould)g(lik)o(e)h(things)f(to)f(happ)q(en)i(async)o (hronously)l(,)f(ho)o(w)o(ev)o(er)f(there)h(is)g(no)g(requiremen)o(t)g (on)189 457 y(the)g(implemen)o(tation)h(to)f(w)o(ork)f(that)h(w)o(a)o (y)l(.)189 529 y(\()p Ff(End)g(of)i(discussion.)p Fr(\))166 619 y(Sp)q(eci\014c)g(routines)75 770 y Fl(MPI)p 160 770 14 2 v 16 w(ALLREDUCE)p 432 770 V 16 w(ST)l(ART\()f(sendbuf,)i (recvbuf,)d(count,)h(datat)o(yp)q(e,)h(op,)e(comm\))117 847 y Fm(IN)155 b Fl(sendbuf)444 b Fm(starting)14 b(address)h(of)f (send)g(bu\013er)h(\(c)o(hoice\))117 920 y(OUT)108 b Fl(recvbuf)450 b Fm(starting)14 b(address)h(of)f(receiv)o(e)h(bu\013er) g(\(c)o(hoice\))117 992 y(IN)155 b Fl(count)482 b Fm(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(send)h(bu\013er)f(\(in)o(teger\))117 1065 y(IN)155 b Fl(datat)o(yp)q(e)424 b Fm(data)14 b(t)o(yp)q(e)g(of)f (elemen)o(ts)h(of)f(send)i(bu\013er)g(\(handle\))117 1138 y(IN)155 b Fl(op)541 b Fm(op)q(eration)14 b(\(handle\))117 1210 y(IN)155 b Fl(comm)470 b Fm(comm)o(unicator)11 b(\(handle\))75 1335 y Fj(int)23 b(MPI)p 245 1335 15 2 v 17 w(Allreduce)p 478 1335 V 16 w(start\(void*)g(sendbuf,)f(void*)h(recvbuf,)g(int)h (count,)393 1391 y(MPI)p 468 1391 V 17 w(Datatype)f(datatype,)f(MPI)p 1010 1391 V 17 w(Op)i(op,)f(MPI)p 1266 1391 V 17 w(Comm)g(comm\))75 1478 y(MPI)p 150 1478 V 17 w(ALLREDUCE)p 383 1478 V 16 w(START\(SENDBUF,)f(RECVBUF,)g(COUNT,)h(DATATYPE,)g(OP,)h(COMM,)393 1534 y(IERROR\))p Fl(<)p Fj(type>)e(SENDBUF\(*\),)g(RECVBUF\(*\))75 1591 y(INTEGER)h(COUNT,)g(DATATYPE,)g(OP,)g(COMM,)g(IERROR)75 1772 y Fl(MPI)p 160 1772 14 2 v 16 w(ALLREDUCE)p 432 1772 V 16 w(END\()15 b(recvbuf,)h(comm\))117 1849 y Fm(OUT)108 b Fl(recvbuf)450 b Fm(starting)14 b(address)h(of)f(receiv)o(e)h (bu\013er)g(\(c)o(hoice\))117 1922 y(IN)155 b Fl(comm)470 b Fm(comm)o(unicator)11 b(\(handle\))75 2046 y Fj(int)23 b(int)h(MPI)p 341 2046 15 2 v 17 w(Allreduce)p 574 2046 V 16 w(end\()f(void*)g(recvbuf,)g(MPI)p 1139 2046 V 17 w(Comm)g(comm\))75 2133 y(MPI)p 150 2133 V 17 w(ALLREDUCE)p 383 2133 V 16 w(END\(RECVBUF,)f(COMM,)h(IERROR\))g Fl(<)p Fj(type>)g(RECVBUF\(*\))75 2189 y(INTEGER)g(COMM,)g(IERROR)166 2275 y Fr(The)15 b(argumen)o(ts)g(ha)o(v)o(e)f(the)i(same)f(meaning)g (as)g(for)g Fl(MPI)p 1170 2275 14 2 v 16 w(Allreduce)p Fr(.)166 2332 y Fl(MPI)p 251 2332 V 16 w(ALLREDUCE)p 523 2332 V 16 w(ST)l(ART)22 b Fr(b)q(egins)g(a)e(t)o(w)o(o)g(phase)h (op)q(eration)g(that,)g(when)g(completed)h(with)75 2388 y Fl(MPI)p 160 2388 V 16 w(ALLREDUCE)p 432 2388 V 16 w(END)p Fr(,)15 b(pro)q(duces)h(the)g(result)f(as)g(de\014ned)i(for)d Fl(MPI)p 1328 2388 V 16 w(ALLREDUCE)p Fr(.)189 2478 y Ff(A)n(dvic)n(e)j(to)i(users.)55 b Fr(This)18 b(is)h(delib)q(erately)h (w)o(eak)o(er)d(than)g(\\same)g(as)g Fl(MPI)p 1512 2478 V 16 w(ALLREDUCE)p Fr(",)h(to)189 2534 y(allo)o(w)f(for)f(di\013ering)j (orders)d(of)h(op)q(erations)g(whic)o(h)h(ma)o(y)f(pro)q(duce)h (di\013eren)o(t)f(results.)26 b(F)l(or)17 b(ex-)189 2591 y(ample,)c(when)g(p)q(erforming)f(the)h(common)f(op)q(eration)g(of)g Fe(MPI)p 1259 2591 13 2 v 15 w(SUM)g Fr(on)g Fe(MPI)p 1509 2591 V 15 w(DOUBLE)f Fr(data,)h(the)189 2647 y(exact)j(return)h(v) m(alue)h(dep)q(ends)g(on)f(the)g(order)f(of)h(op)q(eration,)f(since)i (\015oating)f(p)q(oin)o(t)g(arithmetic)189 2704 y(is)f(not)g(asso)q (ciativ)o(e.)20 b(\()p Ff(End)c(of)g(advic)n(e)g(to)h(users.)p Fr(\))1967 46 y Fi(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop %%Page: 5 7 5 6 bop 75 -100 a Fh(6.2.)29 b(TW)o(O-PHASE)15 b(COLLECTIVE)h (COMMUNICA)l(TION)642 b Fr(5)75 45 y Fl(MPI)p 160 45 14 2 v 16 w(BCAST)p 321 45 V 17 w(ST)l(ART\()16 b(bu\013er,)f(count,)h (datat)o(yp)q(e,)g(ro)q(ot,)f(comm)e(\))117 122 y Fm(INOUT)62 b Fl(bu\013er)478 b Fm(starting)14 b(address)h(of)f(bu\013er)g(\(c)o (hoice\))117 197 y(IN)155 b Fl(count)482 b Fm(n)o(um)o(b)q(er)13 b(of)h(en)o(tries)h(in)e(bu\013er)i(\(in)o(teger\))117 273 y(IN)155 b Fl(datat)o(yp)q(e)424 b Fm(data)14 b(t)o(yp)q(e)g(of)f (bu\013er)i(\(handle\))117 348 y(IN)155 b Fl(ro)q(ot)508 b Fm(rank)14 b(of)f(broadcast)i(ro)q(ot)f(\(in)o(teger\))117 423 y(IN)155 b Fl(comm)470 b Fm(comm)o(unicator)11 b(\(handle\))75 547 y Fj(int)23 b(int)h(MPI)p 341 547 15 2 v 17 w(Bcast)p 478 547 V 16 w(start\(void*)f(buffer,)f(int)i(count,)f(MPI)p 1306 547 V 17 w(Datatype)f(datatype,)h(int)393 604 y(root,)g(MPI)p 611 604 V 17 w(Comm)g(comm)h(\))75 690 y(MPI)p 150 690 V 17 w(BCAST)p 287 690 V 16 w(START\(BUFFER,)e(COUNT,)h(DATATYPE,)g (ROOT,)g(COMM,)g(IERROR\))p Fl(<)p Fj(type>)f(BUFFER\(*\))75 747 y(INTEGER)h(COUNT,)g(DATATYPE,)g(ROOT,)g(COMM,)g(IERROR)75 928 y Fl(MPI)p 160 928 14 2 v 16 w(BCAST)p 321 928 V 17 w(END\()15 b(bu\013er,)g(comm)e(\))117 1005 y Fm(INOUT)62 b Fl(bu\013er)478 b Fm(starting)14 b(address)h(of)f(bu\013er)g(\(c)o (hoice\))117 1080 y(IN)155 b Fl(comm)470 b Fm(comm)o(unicator)11 b(\(handle\))75 1204 y Fj(int)23 b(int)h(MPI)p 341 1204 15 2 v 17 w(Bcast)p 478 1204 V 16 w(end\(void*)f(buffer,)g(MPI)p 996 1204 V 16 w(Comm)h(comm)f(\))75 1291 y(MPI)p 150 1291 V 17 w(BCAST)p 287 1291 V 16 w(END\(BUFFER,)g(COMM,)g(IERROR\))p Fl(<)p Fj(type>)f(BUFFER\(*\))75 1347 y(INTEGER)h(COMM,)g(IERROR)166 1434 y Fr(The)15 b(argumen)o(ts)g(ha)o(v)o(e)f(the)i(same)f(meaning)g (as)g(for)g Fl(MPI)p 1170 1434 14 2 v 16 w(Bcast)p Fr(.)166 1490 y Fl(MPI)p 251 1490 V 16 w(BCAST)p 412 1490 V 17 w(ST)l(ART)c Fr(b)q(egins)g(a)f(t)o(w)o(o)f(phase)h(op)q(eration)h (that,)f(when)h(completed)g(with)f Fl(MPI)p 1764 1490 V 16 w(BCAST)p 1925 1490 V 17 w(END)p Fr(,)75 1547 y(pro)q(duces)16 b(the)f(result)h(as)f(de\014ned)h(for)f Fl(MPI)p 838 1547 V 16 w(BCAST)p Fr(.)166 1603 y(Additional)i(functions)f(under)g (consideration:)75 1709 y Fj(MPI_WIN_BARRIER_START)75 1766 y(MPI_WIN_BARRIER_END)75 1822 y(MPI_REDUCE_START)75 1879 y(MPI_REDUCE_END)75 1935 y(MPI_BARRIER_START)75 1992 y(MPI_BARRIER_END)75 2113 y Fg(6.2.2)49 b(Examples)16 b(using)h(MPI)p 640 2113 15 2 v 18 w(ST)l(ART)p 810 2113 V 19 w(ALLREDUCE)75 2199 y Fr(The)f(follo)o(wing)g(example)g(sho)o(ws)f (ho)o(w)g(a)h(t)o(w)o(o-phase)e(collectiv)o(e)k(op)q(eration)d(is)h (used)h(to)d(a)o(v)o(oid)i(unnec-)75 2256 y(essary)f(sync)o (hronization)h(in)g(a)218 2349 y Fj(call)23 b (MPI_ALLREDUCE_START\(teilresl1,)d(resl1,)j(1,)h(REALx,)f(MPI_SUM,)194 2406 y(.)621 b(mpi_comm_world_a,)21 b(info\))218 2462 y(call)i(MPI_ALLREDUCE_START\(teilresl0,)d(resl0,)j(1,)h(REALx,)f (MPI_MAX,)194 2519 y(.)621 b(mpi_comm_world_b,)21 b(info\))75 2632 y(c...solv)i(the)g(equationsystem)242 2688 y(call)g (parallelsolver\()f(rm000,)h(rmf00,)g(rmb00,)g(rm0f0,)g(rm0b0,)g (rm00f,)-32 46 y Fi(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop %%Page: 6 8 6 7 bop 75 -100 a Fr(6)560 b Fh(CHAPTER)16 b(6.)34 b(EXTENDED)15 b(COLLECTIVE)h(OPERA)l(TIONS)194 45 y Fj(.)525 b(rm00b,)23 b(dq,)h(rhs,)f(nsubit,)g(nhofhausit)f(\))75 158 y(c...computation)g(of) h(the)h(CFL-Number)e(with)i(resl1)242 214 y(call)f (MPI_ALLREDUCE_END\(mpi_comm_wo)o(rld_a,)d(resl1\))242 271 y(...)75 327 y(c...output)i(of)i(all)g(residuals)242 384 y(call)f(MPI_ALLREDUCE_END\(mpi_comm_wo)o(rld_b,)d(resl0\))242 440 y(...)75 559 y Fg(6.2.3)49 b(Prop)q(osed)16 b(mo)q(di\014cation)75 644 y Fr(T)l(ags)i(are)h(added)h(to)e(t)o(w)o(o-phase)g(collectiv)o(e)j (op)q(erations)e(in)h(order)f(to)f(p)q(ermit)i(m)o(ultiple)h(t)o(w)o (o-phase)75 701 y(op)q(erations)15 b(p)q(er)h(comm)o(unicator.)166 757 y(Matc)o(hing)11 b(is)h(accomplished)h(in)f(t)o(w)o(o-phase)e(op)q (erations)i(b)o(y)f(comm)o(unicator,)g(t)o(yp)q(e-of-op)q(eration,)75 814 y(and)k(user)h(tag.)166 870 y(Wildcards)g(are)f(prohibited)i(in)f (the)f(collectiv)o(e)i(tags.)189 951 y Ff(A)n(dvic)n(e)d(to)h(users.)40 b Fr(F)l(or)13 b(systems)g(that)h(implemen)o(t)h(collectiv)o(e)h(on)e (top)f(of)h(p)q(oin)o(t-to-p)q(oin)o(t,)h(this)189 1008 y(p)q(oses)20 b(no)f(sp)q(ecial)j(p)q(enalt)o(y)l(.)35 b(F)l(or)19 b(systems)g(that)g(prop)q(ose)h(to)f(use)h(hardw)o(are)f (for)h(collectiv)o(e,)189 1064 y(I)g(susp)q(ect)i(there)e(can)h(b)q(e)g (ob)s(jections,)g(but)g(these)g(same)f(ob)s(jections)g(apply)i(to)d(o)o (v)o(erlapping)189 1121 y(groups)12 b(p)q(osing)i(non-blo)q(c)o(king)h (collectiv)o(es)f(as)f(w)o(ell,)h(or)e(an)o(y)h(case)g(where)g(the)g (sp)q(ecial)i(hardw)o(are)189 1177 y(m)o(ust)f(b)q(e)i(m)o(ultiplexed)i (b)q(et)o(w)o(een)d(activities.)189 1248 y(The)h(space)h(of)f(tags)f (ma)o(y)h(b)q(e)h(more)f(proscrib)q(ed)i(than)e(for)g(p)q(oin)o(t-to-p) q(oin)o(t,)h(in)g(order)f(to)g(allo)o(w)189 1305 y(implemen)o(tations)e (to)f(enco)q(de)i(other)e(needed)i(bits)e(in)o(v)o(olving)i(the)f(t)o (yp)q(e)f(of)g(op)q(eration.)20 b(\()p Ff(End)14 b(of)189 1361 y(advic)n(e)i(to)g(users.)p Fr(\))189 1442 y Ff(R)n(ationale.)70 b Fr(T)l(ags)20 b(w)o(ere)g(dropp)q(ed)h(from)e(non-blo)q(c)o(king)j (collectiv)o(es)g(a)e(while)i(ago,)e(mostly)189 1499 y(b)q(ecause)15 b(Marc)f(argued)g(that)f(this)i(w)o(as)f(an)g (asymmetry)f(from)h(blo)q(c)o(king)i(collectiv)o(es.)21 b(W)l(e)14 b(ha)o(v)o(e)189 1555 y(agreed)j(to)f(ha)o(v)o(e)g(a)h (totally)g(di\013eren)o(t)g(non-blo)q(c)o(king)i(strategy)d(for)g (collectiv)o(es)j(no)o(w,)e(whic)o(h)g(is)189 1612 y(also)e (unanalogous)h(to)f(the)h(request)f(approac)o(h)g(of)h(non-blo)q(c)o (king)h(p)q(oin)o(t-to-p)q(oin)o(t.)22 b(Hence,)16 b(the)189 1668 y(comp)q(elling)h(use)f(of)e("symmetry")g(to)h(eliminate)i(tags)d (is)i(no)f(longer)g(comp)q(elling)j(at)d(all.)189 1740 y(T)l(ags)c(also)h(solv)o(e)h(the)f(problem)h(of)e(m)o(ultithreaded)i (op)q(erations)g(using)g(collectiv)o(es,)h(inasm)o(uc)o(h)e(as)189 1796 y(they)17 b(p)q(ermit)g(the)g(threaded)h(program)d(to)i(assert)f (the)h(o)o(wnership)h(of)e(on-going)h(non-blo)q(c)o(king)189 1853 y(collectiv)o(es)g(p)q(er)e(thread.)189 1924 y(By)h(adding)i(tags) d(to)h(the)h(t)o(w)o(o-phase)e(collectiv)o(es,)j(w)o(e)f(p)q(ermit)g (threading,)g(and)f(m)o(ultiple)j(uses)189 1981 y(p)q(er)c(comm)o (unicator)g(in)h(single)h(threaded)e(programs.)k(\()p Ff(End)c(of)i(r)n(ationale.)p Fr(\))189 2061 y Ff(A)n(dvic)n(e)k(to)h (users.)79 b Fr(Use)21 b(unique)i(tags)e(in)h(t)o(w)o(o-phase)f (collectiv)o(e)j(comm)o(unication)e(op)q(era-)189 2118 y(tions)14 b(when)h(m)o(ultiple)h(op)q(erations)e(p)q(er)h(comm)o (unicator)f(are)g(needed,)h(or)f(when)g(writing)h(m)o(ulti-)189 2174 y(threaded)g(programs)f(that)h(share)g(a)g(comm)o(unicator.)189 2246 y(The)k(tags)f(need)i(only)g(b)q(e)g(unique)g(for)f(eac)o(h)g(t)o (yp)q(e)g(of)g(op)q(eration)g(used.)32 b(That)19 b(is,)h(tag=5)f(for) 189 2302 y(reduce,)e(and)g(tag=5)f(for)g(b)q(cast)g(will)j(not)d(in)o (terfere,)h(when)g(p)q(osed)g(in)h(t)o(w)o(o-phase)d(form.)24 b(\()p Ff(End)189 2359 y(of)16 b(advic)n(e)g(to)h(users.)p Fr(\))166 2487 y Fn(Discussion:)i Fm(Collectiv)o(e)c(tag)h(ranges)g (migh)o(t)e(b)q(e)i(smaller)e(than)i(for)g(p)q(oin)o(t-to-p)q(oin)o(t.) 22 b(An)16 b(appropriate)75 2543 y(en)o(vironmen)o(tal)c(inquiry)h (function)h(w)o(ould)f(b)q(e)h(needed.)166 2647 y Fr(Commen)o(ts:)31 b(discussed)23 b(on)e(mailing)i(list;)i(implemen)o(tors)d(note)f(that)f (this)i(eliminates)h(some)75 2704 y(ob)o(vious)15 b(optimizations)h (\(lik)o(e)g(a)f(single)i(area)d(p)q(er)i(comm)o(unicator\).)1967 46 y Fi(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop %%Page: 7 9 7 8 bop 75 -100 a Fh(6.3.)29 b(INTER)o(COMMUNICA)l(TOR)17 b(CONSTR)o(UCTORS)728 b Fr(7)75 45 y Fo(6.3)59 b(Intercommunicato)m(r) 18 b(Constructo)n(rs)75 194 y Fn(Curren)o(t)c(Status:)j Fm(P)o(assed)e(once)166 298 y Fr(The)h(curren)o(t)f Fl(MPI)g Fr(in)o(terface)g(pro)o(vides)h(only)g(t)o(w)o(o)e(in)o(tercomm)o (unicator)i(construction)g(routines)75 354 y(\([3)o(]\):)143 446 y Fk(\017)23 b Fl(MPI)p 274 446 14 2 v 15 w(INTERCOMM)p 563 446 V 17 w(CREA)l(TE)p Fr(,)18 b(creates)f(an)g(in)o(tercomm)o (unicator)g(from)g(t)o(w)o(o)e(in)o(tracomm)o(uni-)189 503 y(cators,)143 596 y Fk(\017)23 b Fl(MPI)p 274 596 V 15 w(COMM)p 431 596 V 17 w(DUP)p Fr(,)14 b(duplicates)i(an)e (existing)h(in)o(tercomm)o(unicator)f(\(or)f(in)o(tracomm)o (unicator\).)75 689 y(The)j(other)g(comm)o(unicator)f(constructors,)g Fl(MPI)p 943 689 V 16 w(COMM)p 1101 689 V 16 w(CREA)l(TE)i Fr(and)f Fl(MPI)p 1474 689 V 16 w(COMM)p 1632 689 V 17 w(SPLIT)p Fr(,)f(cur-)75 745 y(ren)o(tly)e(apply)g(only)g(to)f(in)o (tracomm)o(unicators.)19 b(These)13 b(op)q(erations)f(in)i(fact)e(ha)o (v)o(e)g(w)o(ell-de\014ned)j(seman-)75 801 y(tics)h(for)e(in)o(tercomm) o(unicators.)166 858 y(In)20 b(the)g(follo)o(wing)g(discussions,)i(the) e(t)o(w)o(o)e(groups)i(in)g(an)g(in)o(tercomm)o(unicator)f(are)h (called)h(the)75 914 y Ff(left)15 b Fr(and)i Ff(right)f Fr(groups.)21 b(A)16 b(pro)q(cess)h(in)f(an)g(in)o(tercomm)o(unicator)g (is)g(a)g(mem)o(b)q(er)g(of)g(either)g(the)g(left)g(or)75 971 y(the)i(righ)o(t)g(group.)29 b(F)l(rom)18 b(the)g(p)q(oin)o(t)h(of) f(view)h(of)f(that)f(pro)q(cess,)i(the)g(group)f(that)f(the)i(pro)q (cess)f(is)h(a)75 1027 y(mem)o(b)q(er)14 b(of)g(is)h(called)h(the)e Ff(lo)n(c)n(al)f Fr(group;)h(the)g(other)g(group)g(\(relativ)o(e)h(to)e (that)h(pro)q(cess\))g(is)h(the)f Ff(r)n(emote)75 1084 y Fr(group.)31 b(The)19 b(left)g(and)g(righ)o(t)g(group)f(lab)q(els)j (giv)o(e)e(us)g(a)f(w)o(a)o(y)g(t)o(w)o(o)g(describ)q(e)i(the)f(t)o(w)o (o)f(groups)g(in)i(an)75 1140 y(in)o(tercomm)o(unicator)d(that)g(is)h (not)g(relativ)o(e)g(to)e(an)o(y)i(particular)g(pro)q(cess)g(\(as)e (the)i(lo)q(cal)h(and)f(remote)75 1197 y(groups)d(are\).)166 1253 y(In)22 b(addition,)h(the)f(sp)q(eci\014cation)h(of)d(collectiv)o (e)j(op)q(erations)f(\(Section)g(4.1)e([1)o(]\))h(requires)h(that)75 1310 y(all)h(collectiv)o(e)h(routines)f(are)f(called)i(with)f(matc)o (hing)f(argumen)o(ts.)41 b(F)l(or)22 b(the)g(in)o(tercomm)o(unicator)75 1366 y(extensions,)16 b(this)f(is)h(w)o(eak)o(ened)f(to)g(matc)o(hing)g (for)g(all)h(mem)o(b)q(ers)f(of)g(the)g(same)g(lo)q(cal)h(group.)75 1517 y Fl(MPI)p 160 1517 V 16 w(COMM)p 318 1517 V 16 w(CREA)l(TE\()g(comm)p 654 1517 V 15 w(in,)f(group,)g(comm)p 984 1517 V 14 w(out)h(\))117 1594 y Fm(IN)155 b Fl(comm)p 438 1594 V 15 w(in)421 b Fm(original)12 b(comm)o(unicator)117 1669 y(IN)155 b Fl(group)479 b Fm(group)14 b(of)f(pro)q(cess)j(to)e(b)q (e)g(in)g(new)g(comm)o(unicator)117 1744 y(OUT)108 b Fl(comm)p 438 1744 V 15 w(out)393 b Fm(new)15 b(comm)o(uni)o(cator)75 1868 y Fr(The)g(language)h(bindings)h(are)e(iden)o(tical)i(to)d Fl(MPI-1)p Fr(,)h(so)f(are)h(omitted)g(here.)75 1925 y(If)k Fl(comm)p 244 1925 V 15 w(in)g Fr(is)h(an)f(in)o(tercomm)o (unicator,)g(then)h(the)f(output)g(comm)o(unicator)f(is)i(also)f(an)g (in)o(tercom-)75 1981 y(m)o(unicator)g(where)f(the)h(lo)q(cal)h(group)f (consists)f(only)i(of)e(those)g(pro)q(cesses)i(con)o(tained)f(in)g Fl(group)g Fr(\(see)75 2038 y(\014gure)h(6.1\).)33 b(The)21 b Fl(group)f Fr(argumen)o(t)f(should)i(only)g(con)o(tain)f(those)g(pro) q(cesses)g(in)h(the)f(lo)q(cal)h(group)75 2094 y(of)c(the)g(input)i(in) o(tercomm)o(unicator)e(that)f(are)h(to)g(b)q(e)h(a)f(part)g(of)f Fl(comm)p 1338 2094 V 15 w(out)p Fr(.)27 b(If)17 b(the)h Fl(group)f Fr(do)q(es)g(not)75 2151 y(sp)q(ecify)i(at)f(least)g(one)g (pro)q(cess)g(in)h(the)f(lo)q(cal)h(group)f(of)f(the)h(in)o(tercomm)o (unicator,)g(or)g(if)g(the)g(calling)75 2207 y(pro)q(cess)d(is)h(not)f (included)j(in)e(the)f Fl(group)p Fr(,)g Fe(MPI)p 886 2207 13 2 v 14 w(COMM)p 1030 2207 V 15 w(NULL)h Fr(is)g(returned.)166 2311 y Fn(Discussion:)j Fm(In)c(the)i(case)f(where)h(either)f(the)h (left)e(or)h(righ)o(t)f(group)g(is)h Fd(not)g Fm(empt)o(y)m(,)e(wh)o(y) h(not)g(an)h(in)o(ter-)75 2367 y(comm)o(unicator)11 b(with)j Fe(MPI)p 518 2367 V 14 w(GROUP)p 674 2367 V 13 w(EMPTY)p Fm(?)f(Do)q(es)h(an)o(y)o(one)g(remem)o(b)q(er)e(the)j(rationale?)i(Is) d(it)g(just)g(useless?)75 2591 y Fl(Example)45 b Fr(The)14 b(follo)o(wing)g(example)g(illustrates)g(ho)o(w)f(the)g(\014rst)g(no)q (de)h(in)h(the)e(\\left")g(side)h(of)f(an)h(in)o(ter-)75 2647 y(comm)o(unicator)d(could)h(b)q(e)g(joined)g(with)g(all)g(mem)o(b) q(ers)g(on)f(the)g(\\righ)o(t")g(side)h(of)f(an)g(in)o(tercomm)o (unicator)75 2704 y(to)k(form)f(a)h(new)g(in)o(tercomm)o(unicator.)-32 46 y Fi(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop %%Page: 8 10 8 9 bop 75 -100 a Fr(8)560 b Fh(CHAPTER)16 b(6.)34 b(EXTENDED)15 b(COLLECTIVE)h(OPERA)l(TIONS)375 1149 y @beginspecial 36.500000 @llx 316.500000 @lly 516.500000 @urx 774.500000 @ury 2880 @rwi @setspecial %%BeginDocument: figures/collective-create.eps /MAV 300 dict def MAV begin /useClip true def /top 0 def /left 1 def /bottom 2 def /right 3 def /CM 6 array def /CTM 6 array def /CTMR 6 array def /MTC 6 array def /blimit 1500 def /bcnt 0 def /rbox 8 array def /segbox 8 array def /bbox1 4 array def /c1 3 array def /c2 3 array def /d 3 array def /delta 3 array def /mycurrentrgbcolor 3 array def /ulx 0 def /uly 1 def /llx 2 def /lly 3 def /urx 4 def /ury 5 def /lrx 6 def /lry 7 def /sp [0 0] def /ep [0 0] def /bbox 4 array def /pbox 4 array def /scrnProc currentscreen 3 1 roll pop pop def /currentcolorscreen where { begin currentcolorscreen end 3 1 roll pop pop 4 2 roll pop pop 5 -2 roll pop pop 6 -2 roll pop pop /kProc exch def /bProc exch def /gProc exch def /rProc exch def } if /Max {2 copy gt {pop}{exch pop} ifelse} bind def /Min {2 copy lt {pop}{exch pop} ifelse} bind def /cellPenW 72.0 /currentcolorscreen where {begin currentcolorscreen end pop pop 10 1 roll pop pop 8 1 roll pop pop 6 1 roll pop pop Max Max Max } {currentscreen pop pop} ifelse div 2.0 div def /rect { /saveobj save def R PC PF LC SS saveobj restore } bind def /R { newpath pbox astore pop 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate /objectCord mstore def pbox right get 2 div dup pbox left get exch sub pbox left 3 -1 roll put dup pbox right 3 -1 roll put pbox bottom get 2 div dup pbox top get exch sub pbox top 3 -1 roll put dup pbox bottom 3 -1 roll put translate CTM currentmatrix pop 57.3 mul rotate RT } bind def /SaveScreenBW { currentscreen /scrnProc exch def /scrnAngle exch def /scrnFreq exch def } bind def /RestoreScreenBW { scrnFreq scrnAngle MAV /scrnProc get setscreen } bind def /SetFreqAngleBW { currentscreen 3 1 roll pop pop setscreen } bind def /SaveScreenColor { currentcolorscreen /grayProc exch def /grayAngle exch def /grayFreq exch def /bProc exch def /bAngle exch def /bFreq exch def /gProc exch def /gAngle exch def /gFreq exch def /rProc exch def /rAngle exch def /rFreq exch def } bind def /RestoreColorScreen { rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen } bind def /SetFreqAngleColor { currentcolorscreen 3 1 roll pop pop 4 2 roll pop pop 5 -2 roll pop pop 6 -2 roll pop pop 4 1 roll 6 1 roll 8 1 roll 10 1 roll setcolorscreen } bind def /initmsaverestore { userdict begin /mdict 10 dict def mdict begin /mindex -1 def /mstacksize 25 def /mstack mstacksize array def /incmindex { /mindex mindex 1 add def } bind def /decmindex { /mindex mindex 1 sub def } bind def /checkmindex { mindex 0 lt { (%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' ) print flush stop } { mindex mstacksize ge { (%ERROR: msave/mrestore stack overflow: Offending command 'msave' ) print flush stop } if } ifelse } bind def /mpush { incmindex checkmindex mstack mindex 3 -1 roll put } bind def /mpop { checkmindex mstack mindex get decmindex } bind def end end } bind def /msave { mdict begin matrix currentmatrix mpush end } bind def /mrestore { mdict begin mpop setmatrix end } bind def /msavelevel { mdict begin mindex 1 add end } bind def /mstore { matrix currentmatrix } bind def /AutoSizeY { 0 0 pl dup 3 1 roll 4 -1 roll add pl exch pop exch sub } bind def /pl { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform } bind def /pll { transform round exch round exch itransform } bind def /pr { dtransform round exch round exch idtransform } bind def /m { pl moveto } bind def /l { pl lineto } bind def /c { pl curveto } bind def /rm { pr rmoveto } bind def /rl { pr rlineto } bind def /ar { 5 -2 roll pl 5 2 roll arc } bind def /an { 5 -2 roll pl 5 2 roll arcn } bind def /MakePatternFont { /FontDict 20 dict def FontDict begin /FontName exch def /Encoding exch def /FontMatrix [1 0 0 1 0 0 ] def /FontType 3 def /FontBBox [ 0 0 1 1 ] def /PatternDict exch def /RenderPattern { patternDict exch get exec } bind def /BuildChar { exch begin 1 0 0 0 1 1 setcachedevice Encoding exch get RenderPattern end } bind def FontName FontDict definefont pop end } bind def /SnapToPattenGrid { exch dup 0 lt { 1 index sub } if 1 index div truncate mul } bind def /FillPatternString { dup length 1 sub 0 1 3 -1 roll { 2 index 2 index 3 -2 roll put } for pop pop } bind def /AutoSizeY { 0.0 exch dtransform round idtransform exch pop } bind def /AutoSizeX { 0.0 dtransform exch round exch idtransform pop } bind def /AutoCellSize { AutoSizeY exch AutoSizeX exch } bind def /CheckPath { false { pop pop pop true exit} { pop pop pop true exit} { pop pop pop pop pop pop pop true exit} { pop true exit} pathforall } bind def /PatternFill { % patternCharacter /patternString 1 string def /cm mstore def patternMatrix setmatrix 1 1 AutoCellSize dup 0 eq { pop 1} if exch dup 0 eq { pop 1} if exch /patternSize exch 24.0 mul def /PatternSizeX exch 24.0 mul patternString length mul def /flaterror 0 def patternString FillPatternString gsave flaterror 1 add setflat flattenpath pathbbox grestore psy add flaterror add psy SnapToPattenGrid exch psx add flaterror add psx SnapToPattenGrid 3 -1 roll flaterror sub psy SnapToPattenGrid 4 -1 roll flaterror sub psx SnapToPattenGrid 4 2 roll pll 4 2 roll pll /llxsnap exch def /llysnap exch def /urxsnap exch def /urysnap exch def gsave useClip true eq {clip}{eoclip} ifelse newpath /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont llysnap patternSize urysnap { llxsnap exch moveto llxsnap PatternSizeX urxsnap { pop patternString show %currentpoint am } for } bind for grestore cm setmatrix } bind def % End 'PatternFill' /DefaultPatternFont { /cm mstore def patternMatrix setmatrix 1 1 AutoCellSize dup 0 eq { pop 1} if exch dup 0 eq { pop 1} if exch /psy exch iSizeY mul def /psx exch iSizeX mul def /patternDict 64 dict def patternDict begin /NotDef {} def /LiteDiagLines { iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] {pat} imagemask } bind def end /CustEncoding 256 array def 0 255 1 { CustEncoding exch /NotDef put } bind for CustEncoding 65 /LiteDiagLines put patternDict CustEncoding /PatternFont MakePatternFont /pathSegProc { strokepath CheckPath { 65 PatternFill newpath } if } bind def cm setmatrix } bind def /XRound { dup 3 -1 roll exch mul round exch div } bind def /RoundMatrix { /i 0 def dup { 100000.0 XRound 1 index exch i exch put /i i 1 add def } forall } bind def /GetBoxesRatio { 3 -1 roll sub 7 1 roll exch sub 6 1 roll 3 -1 roll sub 5 1 roll exch sub 4 1 roll 3 -1 roll div 3 1 roll exch div exch } bind def /T {792 exch sub} bind def /sx 0 def /sy 0 def /ex 0 def /ey 0 def /lw 0 def /siz 0 def /U {gsave 0 setlinecap /lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def fontkind plain eq { lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke } { currentdict /outlineFontSize known outlineFontSize 0 gt and { fontkind outline eq { /sy sy 0.0119444 siz mul sub def /ey ey 0.0119444 siz mul sub def gsave 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke grestore lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto strokepath 0.0119444 siz mul setlinewidth stroke } if fontkind shadow eq fontkind outlineshadow eq or { /sy sy 0.0358332 siz mul sub def /ey ey 0.0358332 siz mul sub def lw setlinewidth lw 2 div sx add sy lw 2 div sub moveto lw 2 div ex add ey lw 2 div sub lineto stroke gsave 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke grestore lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto strokepath 0.0119444 siz mul setlinewidth stroke } if } if } ifelse grestore} bind def /plain 1 def /outline 2 def /shadow 3 def /outlineshadow 4 def /fess { currentdict /outlineFontSize known { /outlineFontSize 2 index def } if findfont exch dup /siz exch def scalefont setfont } bind def /SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def /NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def /S { fontkind plain eq {neg moveto show} if fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if } bind def /F { /fontkind exch def fontkind plain eq {fess} if fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if } bind def /makeoutlinedict 15 dict def /makeoutlinefont { makeoutlinedict begin /uniqueid exch def /strokewidth exch def /newfontname exch def /basefontname exch def /basefontdict basefontname findfont def /numentries basefontdict maxlength 1 add def basefontdict /UniqueID known not {/numentries numentries 1 add def} if /outfontdict numentries dict def basefontdict { exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse }forall outfontdict /FontName newfontname put outfontdict /PaintType 2 put outfontdict /StrokeWidth strokewidth put outfontdict /UniqueID uniqueid put newfontname outfontdict definefont pop end }def /UID { findfont dup /UniqueID known {/UniqueID get 1 add} {pop 1} ifelse } def /OLF { dup /Outline 1000 62 div 4 -1 roll UID /outlineFontSize 5 index def makeoutlinefont /Outline findfont exch scalefont setfont } def /CopyEncoding { findfont /Encoding get dup length array /tarrayz exch def tarrayz 0 3 -1 roll putinterval tarrayz } bind def /Re-encode { dup length array copy /eap 0 def exch { dup type /integertype eq { /eap exch def } { 1 index exch eap exch put /eap eap 1 add def } ifelse } forall } bind def /EncodeFont { findfont dup length dict begin { 1 index /FID ne { def } { pop pop } ifelse } forall /FontName exch def /Encoding exch def FontName currentdict end definefont pop } bind def /clip2pathbbox { /magicNum linewidth 2 div 1 2 sqrt div mul def pathbbox /urymn exch magicNum add def /urxmn exch magicNum add def /llymn exch magicNum sub def /llxmn exch magicNum sub def newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto closepath clip newpath } bind def /Line { MAV /LC get length 0 ne { gsave newpath MAV /ArrowType get length 0 eq MAV /SD get length 0 eq and {2 setlinecap /UseClip {clip2pathbbox} def } {0 setlinecap /UseClip {} def } ifelse 0 792 translate 1 -1 scale CTM currentmatrix pop /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} {xStart yStart moveto xEnd yEnd lineto} ifelse linewidth setlinewidth SD strokepath CheckPath {LC PF ArrowType} if grestore } {pop pop pop pop pop} ifelse } bind def /CompensateForStroke { sin currentlinewidth mul exch cos currentlinewidth mul dup 0 translate 4 -1 roll exch 2.0 mul sub 3 1 roll 2.0 mul sub } bind def /arrowdict 10 dict def arrowdict begin /SwallowTail { newpath 0.0 0.0 moveto 1.0 -.5 lineto .666 0.0 lineto 1.0 .5 lineto closepath } bind def /Triangular { newpath 0.0 0.0 moveto 1.0 -.5 lineto 1.0 .5 lineto closepath } bind def /OpenTri { newpath 1.0 0.5 moveto 0.0 0.0 lineto 1.0 -0.5 lineto } bind def /ClosedTri { newpath 1.0 0.5 moveto 0.0 0.0 lineto 1.0 -0.5 lineto closepath } bind def /SlashBar { newpath 0.5 -.5 moveto -.5 0.5 lineto } bind def /Dot { newpath 0.5 0.0 moveto 0 0 1 0 360 arc closepath } bind def /ExtSlashBar { newpath 1.0 -.5 moveto 0.0 0.5 lineto } bind def end /ScaleArrowHead { 0 0 4 -2 roll 0 0 1 1 8 -4 roll GetBoxesRatio scale } bind def /DrawArrowHead { gsave [] 0 setdash currentpoint translate rotate { 4 copy gsave initmatrix 100 200 translate msave ScaleArrowHead pop arrowdict exch get exec mrestore strokepath 0 0 3 index 3 index pathbbox 8 4 roll GetBoxesRatio 4 2 roll grestore 3 index 1.0 exch sub 6 -1 roll { 2 index mul 0 translate }{ pop } ifelse msave ScaleArrowHead scale arrowdict exch get exec mrestore strokepath } { msave ScaleArrowHead arrowdict exch get exec mrestore } ifelse CheckPath { LC PF } if grestore } bind def /SR { pbox left get pbox top get moveto pbox right get pbox top get lineto pbox right get pbox bottom get lineto pbox left get pbox bottom get lineto closepath } bind def /RR1 { pbox top get pbox bottom get sub abs pbox left get pbox right get sub abs 2 copy lt { Min 2 div dup dup dup pbox left get add pbox left 3 -1 roll put pbox right get exch sub pbox right 3 -1 roll put pbox left get pbox bottom get moveto pbox right get 0 3 -1 roll 90 -90 arcn pbox left get 0 3 -1 roll -90 90 arcn closepath } { Min 2 div dup dup dup pbox bottom get exch sub pbox bottom 3 -1 roll put pbox top get add pbox top 3 -1 roll put pbox left get pbox bottom get moveto pbox left get add pbox top get 2 index 180 0 arc dup pbox left get add pbox bottom get 3 -1 roll 0 180 arc closepath } ifelse } bind def /RR2 { dup dup dup dup dup dup dup dup pbox top get add pbox top 3 -1 roll put pbox left get add pbox left 3 -1 roll put pbox bottom get exch sub pbox bottom 3 -1 roll put pbox right get exch sub pbox right 3 -1 roll put pbox bottom get add pbox left get exch moveto pbox right get pbox bottom get 3 -1 roll 90 0 arcn pbox right get pbox top get 3 -1 roll 0 270 arcn pbox left get pbox top get 3 -1 roll 270 180 arcn pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath } bind def /E { 1.415 setmiterlimit CM currentmatrix pop pbox right get pbox left get sub abs dup pbox bottom get pbox top get sub abs dup 3 -1 roll lt {exch dup 3 -1 roll exch div 1 exch} {dup 3 -1 roll exch div 1} ifelse scale 0 0 3 -1 roll 2 div 0 360 arc closepath CM setmatrix } bind def /StripFromFront { dup length 2 index sub 3 1 roll exch 3 -1 roll getinterval } bind def /MakePathArray { /k 0 def {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall k array /k 0 def {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} pathforall }bind def /MakeFlatPathArray { /k 0 def {/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall k array /k 0 def {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} { pop pop pop pop pop pop} {} pathforall }bind def /FractionalLine { 2 index sub .00001 mul exch 3 index sub .00001 mul 4 -1 roll add 3 1 roll add } bind def /calcLineLength { exch 4 -1 roll sub dup mul 3 1 roll exch sub dup mul add sqrt } bind def /InitTotalLineLength { /oldY exch def /oldX exch def theDash aload pop currentLineLength add setdash } bind def /AccumeLineLength { 3 copy pop 2 copy oldX oldY 4 2 roll calcLineLength /segmentLength exch def /currentLineLength currentLineLength segmentLength add def /oldY exch def /oldX exch def } bind def /DecumeLastLineLength { /currentLineLength currentLineLength segmentLength sub def } bind def /DrawFlattendSegment { /pointCount 2 def dup 0 lt { pop 0 } if fpc 3 1 roll 2 index 1 index gt { 2 copy get dup length dup 3 eq { pop dup 0 get exch 1 get 2 copy InitTotalLineLength m } { } ifelse } { pop 1 index } ifelse dup 1 add 3 index exch sub dup 10 gt { pop 10} if { 1 add 2 copy get aload pop AccumeLineLength exec } repeat 3 1 roll pop pop DecumeLastLineLength } bind def /IncFPC { fpc add /fpc exch def } bind def /DrawFlatPathArray { fpc 0 { dup 2 index 1 sub lt { flatPathArray exch newpath 1 sub DrawFlattendSegment gsave pathSegProc grestore newpath } { pop pop exit } ifelse } loop } bind def /RecordFirstSubSegment { closepathArray 0 pathArray 0 get put closepathArray 1 pathArray 0 get aload pop pop pathArray 1 get dup length 3 eq { aload pop pop } { newpath 0 0 moveto aload pop exec /segmentArray flattenpath MakeFlatPathArray def segmentArray 1 get aload pop pop } ifelse FractionalLine {lineto} 3 array astore put } bind def /AppendClosePath { closepathArray 0 get 2 {lineto} put flatPathArray fpc closepathArray 0 get put 1 IncFPC flatPathArray fpc closepathArray 1 get put 1 IncFPC } bind def /RecordCurrentDash { /theDash currentdash 2 array astore def /currentLineLength 0 def } bind def /PatternStroke { 0 setlinecap RecordCurrentDash /saveFlat currentflat def .5 setflat /pathArray MakePathArray def /closepathArray 2 array def /pathLength pathArray length def /flatPathArray 513 array def /currentLineLength 0 def /fpc 0 def pathArray pathLength 1 sub get length 1 eq { /usingClosepath true def RecordFirstSubSegment /pathLength pathLength 1 sub def } { /usingClosepath false def } ifelse 0 1 pathLength 1 sub { pathArray exch get dup length 3 eq { fpc 1 add 512 ge { DrawFlatPathArray fpc 2 ge { flatPathArray flatPathArray fpc 2 sub get 0 put flatPathArray flatPathArray fpc 1 sub get 1 put /fpc 2 def }{ /fpc 0 def } ifelse } if flatPathArray exch fpc exch put 1 IncFPC } { dup length 7 eq { newpath /nToStrip 0 def fpc 1 gt { flatPathArray fpc 2 sub get aload pop pop m flatPathArray fpc 1 sub get aload pop exec /nToStrip 2 def } { fpc 1 eq { flatPathArray fpc 1 sub get aload pop exec /nToStrip 2 def } if } ifelse aload pop exec /segmentArray flattenpath MakeFlatPathArray def /segmentArray nToStrip segmentArray StripFromFront def segmentArray length fpc add 512 lt { flatPathArray fpc segmentArray putinterval segmentArray length IncFPC } { DrawFlatPathArray fpc 1 gt { flatPathArray flatPathArray fpc 2 sub get 0 exch put flatPathArray flatPathArray fpc 1 sub get 1 exch put /fpc 2 def }{ /fpc 0 def } ifelse segmentArray length 512 lt { flatPathArray fpc segmentArray putinterval segmentArray length IncFPC } { segmentArray length /exitLoop false def 0 { 2 copy sub dup 500 gt { pop 500 } { /exitLoop true def } ifelse segmentArray 2 index 2 index getinterval flatPathArray fpc 3 -1 roll putinterval dup IncFPC add exitLoop { exit } { DrawFlatPathArray fpc 1 gt { flatPathArray flatPathArray fpc 2 sub get 0 exch put flatPathArray flatPathArray fpc 1 sub get 1 exch put /fpc 2 def }{ /fpc 0 def } ifelse } ifelse } loop } ifelse } ifelse } if } ifelse } for fpc 0 gt { usingClosepath { AppendClosePath } if DrawFlatPathArray } if saveFlat setflat } bind def /rampdelta { /len 0 3 -1 roll add def /i2 0 3 -1 roll add def /i1 0 3 -1 roll add def /nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def /rampPenW len nRampSteps div def rampColors i1 get aload pop c1 astore pop rampColors i2 get aload pop c2 astore pop c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put d aload pop } bind def /adddelta { d astore pop mycurrentrgbcolor c1 copy pop c1 0 get d 0 get add c2 0 3 -1 roll put c1 1 get d 1 get add c2 1 3 -1 roll put c1 2 get d 2 get add c2 2 3 -1 roll put c2 aload pop setrgbcolor c2 mycurrentrgbcolor copy pop } bind def /rampline { segbox ulx get rampPenW add segbox ulx 3 -1 roll put segbox llx get rampPenW add segbox llx 3 -1 roll put segbox ulx get segbox uly get moveto segbox llx get segbox lly get lineto delta aload pop adddelta stroke }bind def /slantrampseg { gsave newpath segbox ulx get segbox urx get sub abs rampdelta delta astore pop segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor rampPenW setlinewidth nRampSteps {rampline} repeat grestore }bind def /flipramp { rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put } bind def /leftrbox { rbox segbox copy pop rbox urx get rbox ulx get sub flipRatio mul dup segbox ulx get add segbox urx 3 -1 roll put segbox llx get add segbox lrx 3 -1 roll put } bind def /rightrbox { rbox segbox copy pop rbox urx get rbox ulx get sub flipRatio mul dup segbox ulx get add segbox ulx 3 -1 roll put segbox llx get add segbox llx 3 -1 roll put } bind def /drawslantramp { segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup segbox ulx get add segbox urx 3 -1 roll put segbox llx get add segbox lrx 3 -1 roll put segbox aload pop 0 0 1 slantrampseg segbox astore pop segbox ulx get add segbox ulx 3 -1 roll put segbox llx get add segbox llx 3 -1 roll put segbox urx get add segbox urx 3 -1 roll put segbox lrx get add segbox lrx 3 -1 roll put segbox aload pop 1 1 2 slantrampseg segbox astore pop segbox ulx get add segbox ulx 3 -1 roll put segbox llx get add segbox llx 3 -1 roll put segbox urx get add segbox urx 3 -1 roll put segbox lrx get add segbox lrx 3 -1 roll put 2 2 3 slantrampseg }bind def /tan { dup sin exch cos div }bind def /rampbox { pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put }bind def /LoadSegBox { 4 copy segbox llx 6 -1 roll put segbox lly 5 -1 roll put segbox lrx 4 -1 roll put segbox lry 6 -1 roll put segbox urx 5 -1 roll put segbox ury 3 -1 roll put segbox ulx 4 -1 roll put segbox uly 3 -1 roll put } bind def /TransToCenter { gsave flattenpath pathbbox grestore 2 index sub 2.0 div exch 3 index sub 2.0 div 4 -1 roll add 3 1 roll add translate } bind def /RotRampGrad { gsave TransToCenter -1.0 mul 180.0 add rotate flattenpath pathbbox clip newpath LoadSegBox flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and { /flipRatio 1.0 flipRatio sub def segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp } {drawslantramp} ifelse grestore } bind def /bbg { pbox exch get } bind def /DR { % Directional ramp /workingMatrix mstore def objectCord setmatrix flipramp gsave flattenpath pathbbox grestore pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put rampAngle RotRampGrad RF workingMatrix setmatrix }bind def /ramparc { gsave circum rampdelta delta astore pop /rampPenW 60.0 nRampSteps div def /ang1 exch rampAngle sub def /ang2 rampPenW ang1 add def rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth nRampSteps {ramparcseg}repeat grestore }bind def /ramparcseg { newpath rampcenter aload pop moveto rampcenter aload pop rampradius ang2 ang1 arcn fill /ang1 ang2 def /ang2 ang2 rampPenW add def delta aload pop adddelta }bind def /GetRadius { rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul add sqrt } bind def /circularRamp { rampbox /rampradius GetRadius def CalcCrcm flipramp 0 0 0 1 ramparc 1 60 1 2 ramparc 2 120 2 3 ramparc flipramp 0 180 0 1 ramparc 1 240 1 2 ramparc 2 300 2 3 ramparc }bind def /GetCircumf { 2.0 mul 3.1415926 mul } bind def /CalcCrcm { rampradius GetCircumf /circum exch 6.0 div def } bind def /CR { gsave clip MTC currentmatrix pop CTM setmatrix flattenpath pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put pbox left get pbox right get sub abs 2 div pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put pbox top get pbox bottom get sub abs 2 div pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put circularRamp MTC setmatrix grestore RF }bind def /SBR { gsave clip /workingMatrix mstore def objectCord setmatrix flattenpath /BaseBox pathbbox 4 array astore def /len BaseBox 2 get BaseBox 0 get sub dup mul BaseBox 3 get BaseBox 1 get sub dup mul add sqrt 12.0 div def /EndBox BaseBox aload pop 3 -1 roll sub 3 1 roll exch sub /dbx exch def /dby exch def BaseBox aload pop pop pop /blly exch def /bllx exch def sbox 0 get 100.0 div dby mul blly add sbox 1 get 100.0 div dbx mul bllx add sbox 2 get 100.0 div dby mul blly add sbox 3 get 100.0 div dbx mul bllx add exch 4 -2 roll exch 4 -2 roll 4 array astore def BaseBox EndBox ShapeBurst workingMatrix setmatrix grestore } bind def /GetBoxCenter { 2 index sub 2.0 div 3 -1 roll add 3 1 roll 1 index sub 2.0 div add exch } bind def /GetInterBox { /boxInter exch def 4 1 7 { -1 roll 7 index } for sub boxInter mul 8 -1 roll add 7 1 roll sub boxInter mul 7 -1 roll add 6 1 roll sub boxInter mul 6 -1 roll add 5 1 roll sub boxInter mul 5 -1 roll add 4 1 roll } bind def /GetBoxCenterDeltas { GetBoxCenter 6 2 roll GetBoxCenter 3 -1 roll exch sub 3 1 roll sub exch } bind def /GetBoxCornerDeltas { pop pop 4 2 roll pop pop 3 -1 roll sub 3 1 roll exch sub exch } bind def /getpath { /k 0 def {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall /pfa k array def /k 0 def {{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} {{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} {{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} {}pathforall }bind def /ShapeBurst { getpath newpath /SBERect exch 4 array copy def /SBBRect exch 4 array copy def /interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def /interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def 0 0 1 SBBRect interRect1 ShapeBurstSeg msave interRect1 0 get interRect1 1 get translate SBBRect aload pop interRect1 aload pop GetBoxesRatio scale SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate 1 1 2 interRect1 interRect2 ShapeBurstSeg mrestore msave interRect2 0 get interRect2 1 get translate SBBRect aload pop interRect2 aload pop GetBoxesRatio scale SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate 2 2 3 interRect2 SBERect ShapeBurstSeg mrestore } bind def /ShapeBurstSeg { /sbr1 exch 4 array copy def /sbr0 exch 4 array copy def /blx sbr0 0 get def /bly sbr0 1 get def len rampdelta delta astore pop sbr0 aload pop sbr1 aload pop GetBoxesRatio /ratioY exch def /ratioX exch def sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas /dlly exch nRampSteps div def /dllx exch nRampSteps div def /scaleStepX 1.0 ratioX sub nRampSteps div def /scaleStepY 1.0 ratioY sub nRampSteps div def /currentScaleX 1.0 scaleStepX sub def /currentScaleY 1.0 scaleStepY sub def /translationX blx dllx add def /translationY bly dlly add def /currentScaleX 1.0 def /currentScaleY 1.0 def /translationX blx def /translationY bly def rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor nRampSteps { msave translationX translationY translate currentScaleX currentScaleY scale blx -1.0 mul bly -1.0 mul translate pfa {aload pop exec} forall fill delta aload pop adddelta /translationX translationX dllx add def /translationY translationY dlly add def /currentScaleX currentScaleX scaleStepX sub def /currentScaleY currentScaleY scaleStepY sub def mrestore } repeat msave translationX translationY translate currentScaleX currentScaleY scale blx -1.0 mul bly -1.0 mul translate pfa {aload pop exec} forall fill mrestore } bind def initmsaverestore /tctm matrix currentmatrix def tctm RoundMatrix setmatrix /patternMatrix mstore def 10 setmiterlimit 2 setlinecap newpath % %tLayer % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {13.500 RR2} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 18.000 37.000 0.000 0.000 457.000 479.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {13.500 RR2} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {} def /PC {} def 1.000 0 71.000 54.500 0.000 0.000 178.000 446.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 0.960 setcmykcolor end} {0.039 0.039 0.039 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.239 setcmykcolor end} {0.760 0.760 0.760 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 124.500 353.500 0.000 0.000 81.000 84.000 rect %@EndOval % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 139.000 384.000 0.000 0.000 8.000 8.000 rect %@EndOval %@BeginText save [ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef /guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla /hungarumlaut/ogonek/caron] StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 123.500 384.500 0.000 0.000 16.000 7.000 rect %@EndRect gsave 388.000 131.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) plain F /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -3.000 4.000 S grestore %@EndText % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 140.500 437.000 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {} def /PC {} def 1.000 0 146.000 441.000 0.000 0.000 0.000 1.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 125.500 437.500 0.000 0.000 16.000 7.000 rect %@EndRect gsave 441.000 133.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (1) -3.000 4.000 S grestore %@EndText % %tfEndGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 192.500 388.000 0.000 0.000 8.000 8.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 177.500 388.500 0.000 0.000 16.000 7.000 rect %@EndRect gsave 392.000 185.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (3) -3.000 4.000 S grestore %@EndText % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 168.500 364.000 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 153.500 365.500 0.000 0.000 16.000 7.000 rect %@EndRect gsave 369.000 161.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (4) -3.000 4.000 S grestore %@EndText % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 195.000 440.000 0.000 0.000 8.000 7.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 179.500 440.500 0.000 0.000 16.000 7.000 rect %@EndRect gsave 444.000 187.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (2) -3.000 4.000 S grestore %@EndText % %tfEndGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {} def /PC {} def 1.000 0 90.500 343.500 0.000 0.000 143.000 147.000 rect %@EndOval % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 0.960 setcmykcolor end} {0.039 0.039 0.039 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.239 setcmykcolor end} {0.760 0.760 0.760 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 122.500 119.000 0.000 0.000 79.000 83.000 rect %@EndOval % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 139.500 170.000 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 123.500 171.000 0.000 0.000 16.000 7.000 rect %@EndRect gsave 174.500 131.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (1) -3.500 4.000 S grestore %@EndText % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 183.000 171.500 0.000 0.000 8.000 7.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 168.500 171.500 0.000 0.000 16.000 8.000 rect %@EndRect gsave 175.500 176.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (2) -4.000 4.000 S grestore %@EndText % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 207.000 123.000 0.000 0.000 8.000 8.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 191.500 123.000 0.000 0.000 16.000 7.000 rect %@EndRect gsave 126.500 199.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (3) -3.500 4.000 S grestore %@EndText % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 114.000 125.000 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 98.000 126.000 0.000 0.000 16.000 7.000 rect %@EndRect gsave 129.500 106.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -3.500 4.000 S grestore %@EndText % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 134.500 81.000 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 117.500 82.500 0.000 0.000 16.000 7.000 rect %@EndRect gsave 86.000 125.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (5) -3.000 4.000 S grestore %@EndText % %tfEndGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 183.500 83.000 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {} def /PC {} def 1.000 0 87.500 66.000 0.000 0.000 143.000 147.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 169.000 83.000 0.000 0.000 16.000 7.000 rect %@EndRect gsave 86.500 177.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (4) -3.500 4.000 S grestore %@EndText % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 407.000 138.000 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 403.000 128.666 0.000 0.000 16.000 7.333 rect %@EndRect gsave 132.333 411.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (1) -2.833 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 341.500 138.619 0.000 0.000 7.000 8.380 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 338.500 127.666 0.000 0.000 16.000 7.000 rect %@EndRect gsave 131.166 346.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -2.833 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {} def /PC {} def 1.000 0 298.000 62.500 0.000 0.000 143.000 154.000 rect %@EndOval % %tfEndGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {} def /PC {} def 1.000 0 377.500 378.000 0.000 0.000 0.000 1.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 331.500 426.619 0.000 0.000 8.000 8.380 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 394.000 476.071 0.000 0.000 16.000 9.428 rect %@EndRect gsave 480.785 402.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -4.428 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 415.000 430.619 0.000 0.000 7.000 8.380 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 343.000 428.166 0.000 0.000 16.000 7.333 rect %@EndRect gsave 431.833 351.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (1) -3.333 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 397.500 464.666 0.000 0.000 8.000 7.333 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 411.000 420.166 0.000 0.000 16.000 7.333 rect %@EndRect gsave 423.833 419.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (2) -3.333 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {} def /PC {} def 1.000 0 299.000 340.000 0.000 0.000 143.000 154.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 143.142 345.000 moveto /SwallowTail 14.687 10.574 false 278.637 DrawArrowHead } bind def /SD {[9.000 9.000 ] 0 setdash} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 143.350 343.626 173.000 148.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 142.000 411.000 moveto /SwallowTail 14.687 10.574 false 278.149 DrawArrowHead } bind def /SD {[9.000 9.000 ] 0 setdash} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 142.196 409.625 173.000 194.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 467.500 403.000 moveto /SwallowTail 14.687 10.574 false 253.157 DrawArrowHead } bind def /SD {[9.000 9.000 ] 0 setdash} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 467.097 401.670 390.214 148.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 429.500 334.000 moveto /SwallowTail 14.687 10.574 false 254.308 DrawArrowHead } bind def /SD {[9.000 9.000 ] 0 setdash} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 429.123 332.663 393.214 205.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 436.000 419.000 moveto /SwallowTail 14.687 10.574 false 254.716 DrawArrowHead } bind def /SD {[9.000 9.000 ] 0 setdash} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 435.633 417.660 369.238 175.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {13.500 RR2} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {} def /PC {} def 1.000 0 279.000 54.500 0.000 0.000 178.000 446.000 rect %@EndRect % %tLayer % %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 30.500 138.500 0.000 0.000 26.000 292.989 rect %@EndRect gsave 284.994 43.500 T translate 0.0 rotate 1 1 scale 24.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (I) -146.000 6.000 S 18.000 (_Times-Roman) fess (N) -138.007 6.000 S (T) -125.008 6.000 S (E) -114.013 6.000 S (R) -103.018 6.000 S 24.000 (_Times-Roman) fess (-) -91.012 6.000 S 18.000 (_Times-Roman) fess (C) -83.020 6.000 S (O) -71.014 6.000 S (M) -58.015 6.000 S (M) -42.010 6.000 S (U) -26.005 6.000 S (N) -13.006 6.000 S (I) -0.007 6.000 S (C) 5.986 6.000 S (A) 17.992 6.000 S (T) 30.991 6.000 S (O) 41.986 6.000 S (R) 54.985 6.000 S 24.000 (_Times-Roman) fess ( ) 66.991 6.000 S (C) 72.991 6.000 S 18.000 (_Times-Roman) fess (R) 88.999 6.000 S (E) 101.004 6.000 S (A) 112.000 6.000 S (T) 124.999 6.000 S (E) 135.994 6.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 57.000 64.000 0.000 0.000 16.000 38.089 rect %@EndRect gsave 83.044 65.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (B) -18.500 4.000 S /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (e) -9.162 4.000 S (f) -2.948 4.000 S (o) 1.713 4.000 S (r) 8.713 4.000 S (e) 13.375 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 264.000 66.000 0.000 0.000 16.000 29.538 rect %@EndRect gsave 80.769 272.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (A) -14.500 4.000 S /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (f) -4.389 4.000 S (t) 0.272 4.000 S (e) 4.162 4.000 S (r) 10.375 4.000 S grestore %@EndText restore end %%EndDocument @endspecial 75 1247 a Fr(Figure)g(6.1:)k(In)o(tercomm)o(unicator)c (create)g(using)g Fl(MPI)p 1044 1247 14 2 v 16 w(COMM)p 1202 1247 V 16 w(CREA)l(TE\(\))h Fr(extended)g(to)e(in)o(tercom-)75 1303 y(m)o(unicators.)266 1428 y Fj(MPI_Comm)47 b(inter_comm,)22 b(new_inter_comm;)266 1484 y(MPI_Group)h(local_group,)f(group;)266 1540 y(int)167 b(rank)23 b(=)h(0;)f(/*)h(rank)f(on)h(left)f(side)g(to)h (include)f(in)g(new)h(inter-comm)e(*/)266 1653 y(/*)h(Construct)g(the)h (original)e(intercommunicator:)g("inter_comm")g(*/)266 1710 y(...)266 1823 y(/*)h(Construct)g(the)h(group)f(of)g(processes)g (to)h(be)f(in)h(new)f(intercommunicator)f(*/)266 1879 y(if)h(\(/*)h(I'm)f(on)h(the)f(left)h(side)f(of)h(the)f (intercommunicator)f(*/\))h({)314 1936 y(MPI_Comm_group)f(\()h (inter_comm,)g(&local_group)f(\);)314 1992 y(MPI_Group_incl)g(\()h (local_group,)g(1,)g(&rank,)g(&group)g(\);)314 2049 y(MPI_Group_free)f (\()h(&local_group)g(\);)266 2105 y(})266 2161 y(else)314 2218 y(MPI_Comm_group)f(\()h(inter_comm,)g(&group)g(\);)266 2331 y(MPI_Comm_create)f(\()h(inter_comm,)g(group,)g(&new_inter_comm)f (\);)266 2387 y(MPI_Group_free\()g(&group)h(\);)1967 46 y Fi(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop %%Page: 9 11 9 10 bop 75 -100 a Fh(6.3.)29 b(INTER)o(COMMUNICA)l(TOR)17 b(CONSTR)o(UCTORS)728 b Fr(9)75 45 y Fl(MPI)p 160 45 14 2 v 16 w(COMM)p 318 45 V 16 w(SPLIT\()15 b(comm)p 607 45 V 14 w(in,)g(colo)o(r,)f(k)o(ey)l(,)h(comm)p 1005 45 V 14 w(out)h(\))117 122 y Fm(IN)155 b Fl(comm)p 438 122 V 15 w(in)421 b Fm(original)12 b(comm)o(unicator)117 197 y(IN)155 b Fl(colo)o(r)495 b Fm(color)14 b(of)f(subset)i(assignmen) o(t)117 271 y(IN)155 b Fl(k)o(ey)525 b Fm(color)14 b(of)f(rank)h (assignmen)o(t)117 345 y(OUT)108 b Fl(comm)p 438 345 V 15 w(out)393 b Fm(new)15 b(comm)o(uni)o(cator)75 470 y Fr(The)g(language)h(bindings)h(are)e(iden)o(tical)i(to)d Fl(MPI-1)p Fr(,)h(so)f(are)h(suppressed)h(here.)75 526 y(The)c(result)h(of)f(split)h(on)f(an)g(in)o(tercomm)o(unicator)g(is)g (that)g(those)g(pro)q(cesses)g(on)g(the)g(left)h(with)f(the)g(same)75 583 y Fl(colo)o(r)j Fr(as)g(those)h(pro)q(cesses)g(on)g(the)f(righ)o(t) h(com)o(bine)h(to)e(create)h(a)f(new)h(in)o(tercomm)o(unicator.)22 b(The)16 b Fl(k)o(ey)75 639 y Fr(argumen)o(t)11 b(describ)q(es)j(the)e (relativ)o(e)g(rank)g(of)f(pro)q(cesses)i(on)f(eac)o(h)g(side)h(of)e (the)h(in)o(tercomm)o(unicator)g(\(see)75 696 y(\014gure)18 b(6.2\).)25 b(F)l(or)17 b(those)g(colors)h(that)e(are)h(sp)q(eci\014ed) j(only)e(on)f(one)h(side)g(of)f(the)h(in)o(tercomm)o(unicator)75 752 y(but)d(not)f(the)h(other,)f Fe(MPI)p 524 752 13 2 v 14 w(COMM)p 668 752 V 15 w(NULL)h Fr(is)g(returned.)20 b Fe(MPI)p 1122 752 V 14 w(COMM)p 1266 752 V 15 w(NULL)c Fr(is)f(also)f(returned)h(to)f(those)75 809 y(pro)q(cesses)i(that)e(sp) q(ecify)j Fe(MPI)p 598 809 V 14 w(UNDEFINED)d Fr(as)h(the)g(color.)166 912 y Fn(Discussion:)k Fm(In)c(the)i(case)f(where)h(either)f(the)h (left)e(or)h(righ)o(t)f(group)g(is)h Fd(not)g Fm(empt)o(y)m(,)e(wh)o(y) h(not)g(an)h(in)o(ter-)75 969 y(comm)o(unicator)11 b(with)j Fe(MPI)p 518 969 V 14 w(GROUP)p 674 969 V 13 w(EMPTY)p Fm(?)f(Do)q(es)h(an)o(y)o(one)g(remem)o(b)q(er)e(the)j(rationale?)i(Is) d(it)g(just)g(useless?)75 1192 y Fl(Example)j(\(P)o(a)o(rallel)g (client-server)h(mo)q(del\))45 b Fr(The)18 b(follo)o(wing)h(clien)o(t)g (co)q(de)g(illustrates)g(ho)o(w)e(clien)o(ts)i(on)75 1248 y(the)f(left)h(side)g(of)f(an)g(in)o(tercomm)o(unicator)h(could)g (b)q(e)g(assigned)g(to)e(a)h(single)i(serv)o(er)e(from)f(a)h(p)q(o)q (ol)h(of)75 1305 y(serv)o(ers)c(on)g(the)g(righ)o(t)g(side)h(of)f(an)g (in)o(tercomm)o(unicator.)266 1395 y Fj(/*)23 b(Client)h(code)f(*/)266 1451 y(MPI_Comm)47 b(multiple_server_comm;)266 1508 y(MPI_Comm)g (single_server_comm;)266 1564 y(int)167 b(color,)23 b(rank,)g (num_servers;)266 1677 y(/*)g(Create)h(intercommunicator)d(with)i (clients)g(and)h(servers:)337 1733 y(multiple_server_comm)e(*/)266 1790 y(...)266 1903 y(/*)h(Find)h(out)f(the)h(number)f(of)g(servers)g (available)g(*/)266 1959 y(MPI_Comm_remote_size)e(\()j (multiple_server_comm,)d(&num_servers)h(\);)266 2072 y(/*)h(Determine)g(my)h(color)f(*/)266 2129 y(MPI_Comm_rank)f(\()i (multiple_server_comm,)d(&rank)i(\);)266 2185 y(color)g(=)h(rank)f (\045)h(num_servers;)266 2298 y(/*)f(Split)h(the)f(intercommunicator)f (*/)266 2354 y(MPI_Comm_split)g(\()i(multiple_server_comm,)d(color,)i (rank,)672 2411 y(&single_server_comm)e(\);)75 2501 y Fr(The)15 b(follo)o(wing)h(is)g(the)f(corresp)q(onding)i(serv)o(er)d (co)q(de:)266 2591 y Fj(/*)23 b(Server)h(code)f(*/)266 2647 y(MPI_Comm)47 b(multiple_client_comm;)266 2704 y(MPI_Comm)g (single_server_comm;)-32 46 y Fi(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop %%Page: 10 12 10 11 bop 75 -100 a Fr(10)543 b Fh(CHAPTER)15 b(6.)29 b(EXTENDED)15 b(COLLECTIVE)h(OPERA)l(TIONS)375 1991 y @beginspecial 18.002001 @llx 161 @lly 534.997009 @urx 781.500000 @ury 2880 @rwi @setspecial %%BeginDocument: figures/collective-split.eps /MAV 300 dict def MAV begin /useClip true def /top 0 def /left 1 def /bottom 2 def /right 3 def /CM 6 array def /CTM 6 array def /CTMR 6 array def /MTC 6 array def /blimit 1500 def /bcnt 0 def /rbox 8 array def /segbox 8 array def /bbox1 4 array def /c1 3 array def /c2 3 array def /d 3 array def /delta 3 array def /mycurrentrgbcolor 3 array def /ulx 0 def /uly 1 def /llx 2 def /lly 3 def /urx 4 def /ury 5 def /lrx 6 def /lry 7 def /sp [0 0] def /ep [0 0] def /bbox 4 array def /pbox 4 array def /scrnProc currentscreen 3 1 roll pop pop def /currentcolorscreen where { begin currentcolorscreen end 3 1 roll pop pop 4 2 roll pop pop 5 -2 roll pop pop 6 -2 roll pop pop /kProc exch def /bProc exch def /gProc exch def /rProc exch def } if /Max {2 copy gt {pop}{exch pop} ifelse} bind def /Min {2 copy lt {pop}{exch pop} ifelse} bind def /cellPenW 72.0 /currentcolorscreen where {begin currentcolorscreen end pop pop 10 1 roll pop pop 8 1 roll pop pop 6 1 roll pop pop Max Max Max } {currentscreen pop pop} ifelse div 2.0 div def /rect { /saveobj save def R PC PF LC SS saveobj restore } bind def /R { newpath pbox astore pop 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate /objectCord mstore def pbox right get 2 div dup pbox left get exch sub pbox left 3 -1 roll put dup pbox right 3 -1 roll put pbox bottom get 2 div dup pbox top get exch sub pbox top 3 -1 roll put dup pbox bottom 3 -1 roll put translate CTM currentmatrix pop 57.3 mul rotate RT } bind def /SaveScreenBW { currentscreen /scrnProc exch def /scrnAngle exch def /scrnFreq exch def } bind def /RestoreScreenBW { scrnFreq scrnAngle MAV /scrnProc get setscreen } bind def /SetFreqAngleBW { currentscreen 3 1 roll pop pop setscreen } bind def /SaveScreenColor { currentcolorscreen /grayProc exch def /grayAngle exch def /grayFreq exch def /bProc exch def /bAngle exch def /bFreq exch def /gProc exch def /gAngle exch def /gFreq exch def /rProc exch def /rAngle exch def /rFreq exch def } bind def /RestoreColorScreen { rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen } bind def /SetFreqAngleColor { currentcolorscreen 3 1 roll pop pop 4 2 roll pop pop 5 -2 roll pop pop 6 -2 roll pop pop 4 1 roll 6 1 roll 8 1 roll 10 1 roll setcolorscreen } bind def /initmsaverestore { userdict begin /mdict 10 dict def mdict begin /mindex -1 def /mstacksize 25 def /mstack mstacksize array def /incmindex { /mindex mindex 1 add def } bind def /decmindex { /mindex mindex 1 sub def } bind def /checkmindex { mindex 0 lt { (%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' ) print flush stop } { mindex mstacksize ge { (%ERROR: msave/mrestore stack overflow: Offending command 'msave' ) print flush stop } if } ifelse } bind def /mpush { incmindex checkmindex mstack mindex 3 -1 roll put } bind def /mpop { checkmindex mstack mindex get decmindex } bind def end end } bind def /msave { mdict begin matrix currentmatrix mpush end } bind def /mrestore { mdict begin mpop setmatrix end } bind def /msavelevel { mdict begin mindex 1 add end } bind def /mstore { matrix currentmatrix } bind def /AutoSizeY { 0 0 pl dup 3 1 roll 4 -1 roll add pl exch pop exch sub } bind def /pl { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform } bind def /pll { transform round exch round exch itransform } bind def /pr { dtransform round exch round exch idtransform } bind def /m { pl moveto } bind def /l { pl lineto } bind def /c { pl curveto } bind def /rm { pr rmoveto } bind def /rl { pr rlineto } bind def /ar { 5 -2 roll pl 5 2 roll arc } bind def /an { 5 -2 roll pl 5 2 roll arcn } bind def /MakePatternFont { /FontDict 20 dict def FontDict begin /FontName exch def /Encoding exch def /FontMatrix [1 0 0 1 0 0 ] def /FontType 3 def /FontBBox [ 0 0 1 1 ] def /PatternDict exch def /RenderPattern { patternDict exch get exec } bind def /BuildChar { exch begin 1 0 0 0 1 1 setcachedevice Encoding exch get RenderPattern end } bind def FontName FontDict definefont pop end } bind def /SnapToPattenGrid { exch dup 0 lt { 1 index sub } if 1 index div truncate mul } bind def /FillPatternString { dup length 1 sub 0 1 3 -1 roll { 2 index 2 index 3 -2 roll put } for pop pop } bind def /AutoSizeY { 0.0 exch dtransform round idtransform exch pop } bind def /AutoSizeX { 0.0 dtransform exch round exch idtransform pop } bind def /AutoCellSize { AutoSizeY exch AutoSizeX exch } bind def /CheckPath { false { pop pop pop true exit} { pop pop pop true exit} { pop pop pop pop pop pop pop true exit} { pop true exit} pathforall } bind def /PatternFill { % patternCharacter /patternString 1 string def /cm mstore def patternMatrix setmatrix 1 1 AutoCellSize dup 0 eq { pop 1} if exch dup 0 eq { pop 1} if exch /patternSize exch 24.0 mul def /PatternSizeX exch 24.0 mul patternString length mul def /flaterror 0 def patternString FillPatternString gsave flaterror 1 add setflat flattenpath pathbbox grestore psy add flaterror add psy SnapToPattenGrid exch psx add flaterror add psx SnapToPattenGrid 3 -1 roll flaterror sub psy SnapToPattenGrid 4 -1 roll flaterror sub psx SnapToPattenGrid 4 2 roll pll 4 2 roll pll /llxsnap exch def /llysnap exch def /urxsnap exch def /urysnap exch def gsave useClip true eq {clip}{eoclip} ifelse newpath /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont llysnap patternSize urysnap { llxsnap exch moveto llxsnap PatternSizeX urxsnap { pop patternString show %currentpoint am } for } bind for grestore cm setmatrix } bind def % End 'PatternFill' /DefaultPatternFont { /cm mstore def patternMatrix setmatrix 1 1 AutoCellSize dup 0 eq { pop 1} if exch dup 0 eq { pop 1} if exch /psy exch iSizeY mul def /psx exch iSizeX mul def /patternDict 64 dict def patternDict begin /NotDef {} def /LiteDiagLines { iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] {pat} imagemask } bind def end /CustEncoding 256 array def 0 255 1 { CustEncoding exch /NotDef put } bind for CustEncoding 65 /LiteDiagLines put patternDict CustEncoding /PatternFont MakePatternFont /pathSegProc { strokepath CheckPath { 65 PatternFill newpath } if } bind def cm setmatrix } bind def /XRound { dup 3 -1 roll exch mul round exch div } bind def /RoundMatrix { /i 0 def dup { 100000.0 XRound 1 index exch i exch put /i i 1 add def } forall } bind def /GetBoxesRatio { 3 -1 roll sub 7 1 roll exch sub 6 1 roll 3 -1 roll sub 5 1 roll exch sub 4 1 roll 3 -1 roll div 3 1 roll exch div exch } bind def /T {792 exch sub} bind def /sx 0 def /sy 0 def /ex 0 def /ey 0 def /lw 0 def /siz 0 def /U {gsave 0 setlinecap /lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def fontkind plain eq { lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke } { currentdict /outlineFontSize known outlineFontSize 0 gt and { fontkind outline eq { /sy sy 0.0119444 siz mul sub def /ey ey 0.0119444 siz mul sub def gsave 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke grestore lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto strokepath 0.0119444 siz mul setlinewidth stroke } if fontkind shadow eq fontkind outlineshadow eq or { /sy sy 0.0358332 siz mul sub def /ey ey 0.0358332 siz mul sub def lw setlinewidth lw 2 div sx add sy lw 2 div sub moveto lw 2 div ex add ey lw 2 div sub lineto stroke gsave 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke grestore lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto strokepath 0.0119444 siz mul setlinewidth stroke } if } if } ifelse grestore} bind def /plain 1 def /outline 2 def /shadow 3 def /outlineshadow 4 def /fess { currentdict /outlineFontSize known { /outlineFontSize 2 index def } if findfont exch dup /siz exch def scalefont setfont } bind def /SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def /NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def /S { fontkind plain eq {neg moveto show} if fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if } bind def /F { /fontkind exch def fontkind plain eq {fess} if fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if } bind def /makeoutlinedict 15 dict def /makeoutlinefont { makeoutlinedict begin /uniqueid exch def /strokewidth exch def /newfontname exch def /basefontname exch def /basefontdict basefontname findfont def /numentries basefontdict maxlength 1 add def basefontdict /UniqueID known not {/numentries numentries 1 add def} if /outfontdict numentries dict def basefontdict { exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse }forall outfontdict /FontName newfontname put outfontdict /PaintType 2 put outfontdict /StrokeWidth strokewidth put outfontdict /UniqueID uniqueid put newfontname outfontdict definefont pop end }def /UID { findfont dup /UniqueID known {/UniqueID get 1 add} {pop 1} ifelse } def /OLF { dup /Outline 1000 62 div 4 -1 roll UID /outlineFontSize 5 index def makeoutlinefont /Outline findfont exch scalefont setfont } def /CopyEncoding { findfont /Encoding get dup length array /tarrayz exch def tarrayz 0 3 -1 roll putinterval tarrayz } bind def /Re-encode { dup length array copy /eap 0 def exch { dup type /integertype eq { /eap exch def } { 1 index exch eap exch put /eap eap 1 add def } ifelse } forall } bind def /EncodeFont { findfont dup length dict begin { 1 index /FID ne { def } { pop pop } ifelse } forall /FontName exch def /Encoding exch def FontName currentdict end definefont pop } bind def /clip2pathbbox { /magicNum linewidth 2 div 1 2 sqrt div mul def pathbbox /urymn exch magicNum add def /urxmn exch magicNum add def /llymn exch magicNum sub def /llxmn exch magicNum sub def newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto closepath clip newpath } bind def /Line { MAV /LC get length 0 ne { gsave newpath MAV /ArrowType get length 0 eq MAV /SD get length 0 eq and {2 setlinecap /UseClip {clip2pathbbox} def } {0 setlinecap /UseClip {} def } ifelse 0 792 translate 1 -1 scale CTM currentmatrix pop /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} {xStart yStart moveto xEnd yEnd lineto} ifelse linewidth setlinewidth SD strokepath CheckPath {LC PF ArrowType} if grestore } {pop pop pop pop pop} ifelse } bind def /CompensateForStroke { sin currentlinewidth mul exch cos currentlinewidth mul dup 0 translate 4 -1 roll exch 2.0 mul sub 3 1 roll 2.0 mul sub } bind def /arrowdict 10 dict def arrowdict begin /SwallowTail { newpath 0.0 0.0 moveto 1.0 -.5 lineto .666 0.0 lineto 1.0 .5 lineto closepath } bind def /Triangular { newpath 0.0 0.0 moveto 1.0 -.5 lineto 1.0 .5 lineto closepath } bind def /OpenTri { newpath 1.0 0.5 moveto 0.0 0.0 lineto 1.0 -0.5 lineto } bind def /ClosedTri { newpath 1.0 0.5 moveto 0.0 0.0 lineto 1.0 -0.5 lineto closepath } bind def /SlashBar { newpath 0.5 -.5 moveto -.5 0.5 lineto } bind def /Dot { newpath 0.5 0.0 moveto 0 0 1 0 360 arc closepath } bind def /ExtSlashBar { newpath 1.0 -.5 moveto 0.0 0.5 lineto } bind def end /ScaleArrowHead { 0 0 4 -2 roll 0 0 1 1 8 -4 roll GetBoxesRatio scale } bind def /DrawArrowHead { gsave [] 0 setdash currentpoint translate rotate { 4 copy gsave initmatrix 100 200 translate msave ScaleArrowHead pop arrowdict exch get exec mrestore strokepath 0 0 3 index 3 index pathbbox 8 4 roll GetBoxesRatio 4 2 roll grestore 3 index 1.0 exch sub 6 -1 roll { 2 index mul 0 translate }{ pop } ifelse msave ScaleArrowHead scale arrowdict exch get exec mrestore strokepath } { msave ScaleArrowHead arrowdict exch get exec mrestore } ifelse CheckPath { LC PF } if grestore } bind def /SR { pbox left get pbox top get moveto pbox right get pbox top get lineto pbox right get pbox bottom get lineto pbox left get pbox bottom get lineto closepath } bind def /RR1 { pbox top get pbox bottom get sub abs pbox left get pbox right get sub abs 2 copy lt { Min 2 div dup dup dup pbox left get add pbox left 3 -1 roll put pbox right get exch sub pbox right 3 -1 roll put pbox left get pbox bottom get moveto pbox right get 0 3 -1 roll 90 -90 arcn pbox left get 0 3 -1 roll -90 90 arcn closepath } { Min 2 div dup dup dup pbox bottom get exch sub pbox bottom 3 -1 roll put pbox top get add pbox top 3 -1 roll put pbox left get pbox bottom get moveto pbox left get add pbox top get 2 index 180 0 arc dup pbox left get add pbox bottom get 3 -1 roll 0 180 arc closepath } ifelse } bind def /RR2 { dup dup dup dup dup dup dup dup pbox top get add pbox top 3 -1 roll put pbox left get add pbox left 3 -1 roll put pbox bottom get exch sub pbox bottom 3 -1 roll put pbox right get exch sub pbox right 3 -1 roll put pbox bottom get add pbox left get exch moveto pbox right get pbox bottom get 3 -1 roll 90 0 arcn pbox right get pbox top get 3 -1 roll 0 270 arcn pbox left get pbox top get 3 -1 roll 270 180 arcn pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath } bind def /E { 1.415 setmiterlimit CM currentmatrix pop pbox right get pbox left get sub abs dup pbox bottom get pbox top get sub abs dup 3 -1 roll lt {exch dup 3 -1 roll exch div 1 exch} {dup 3 -1 roll exch div 1} ifelse scale 0 0 3 -1 roll 2 div 0 360 arc closepath CM setmatrix } bind def /StripFromFront { dup length 2 index sub 3 1 roll exch 3 -1 roll getinterval } bind def /MakePathArray { /k 0 def {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall k array /k 0 def {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} pathforall }bind def /MakeFlatPathArray { /k 0 def {/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall k array /k 0 def {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} { pop pop pop pop pop pop} {} pathforall }bind def /FractionalLine { 2 index sub .00001 mul exch 3 index sub .00001 mul 4 -1 roll add 3 1 roll add } bind def /calcLineLength { exch 4 -1 roll sub dup mul 3 1 roll exch sub dup mul add sqrt } bind def /InitTotalLineLength { /oldY exch def /oldX exch def theDash aload pop currentLineLength add setdash } bind def /AccumeLineLength { 3 copy pop 2 copy oldX oldY 4 2 roll calcLineLength /segmentLength exch def /currentLineLength currentLineLength segmentLength add def /oldY exch def /oldX exch def } bind def /DecumeLastLineLength { /currentLineLength currentLineLength segmentLength sub def } bind def /DrawFlattendSegment { /pointCount 2 def dup 0 lt { pop 0 } if fpc 3 1 roll 2 index 1 index gt { 2 copy get dup length dup 3 eq { pop dup 0 get exch 1 get 2 copy InitTotalLineLength m } { } ifelse } { pop 1 index } ifelse dup 1 add 3 index exch sub dup 10 gt { pop 10} if { 1 add 2 copy get aload pop AccumeLineLength exec } repeat 3 1 roll pop pop DecumeLastLineLength } bind def /IncFPC { fpc add /fpc exch def } bind def /DrawFlatPathArray { fpc 0 { dup 2 index 1 sub lt { flatPathArray exch newpath 1 sub DrawFlattendSegment gsave pathSegProc grestore newpath } { pop pop exit } ifelse } loop } bind def /RecordFirstSubSegment { closepathArray 0 pathArray 0 get put closepathArray 1 pathArray 0 get aload pop pop pathArray 1 get dup length 3 eq { aload pop pop } { newpath 0 0 moveto aload pop exec /segmentArray flattenpath MakeFlatPathArray def segmentArray 1 get aload pop pop } ifelse FractionalLine {lineto} 3 array astore put } bind def /AppendClosePath { closepathArray 0 get 2 {lineto} put flatPathArray fpc closepathArray 0 get put 1 IncFPC flatPathArray fpc closepathArray 1 get put 1 IncFPC } bind def /RecordCurrentDash { /theDash currentdash 2 array astore def /currentLineLength 0 def } bind def /PatternStroke { 0 setlinecap RecordCurrentDash /saveFlat currentflat def .5 setflat /pathArray MakePathArray def /closepathArray 2 array def /pathLength pathArray length def /flatPathArray 513 array def /currentLineLength 0 def /fpc 0 def pathArray pathLength 1 sub get length 1 eq { /usingClosepath true def RecordFirstSubSegment /pathLength pathLength 1 sub def } { /usingClosepath false def } ifelse 0 1 pathLength 1 sub { pathArray exch get dup length 3 eq { fpc 1 add 512 ge { DrawFlatPathArray fpc 2 ge { flatPathArray flatPathArray fpc 2 sub get 0 put flatPathArray flatPathArray fpc 1 sub get 1 put /fpc 2 def }{ /fpc 0 def } ifelse } if flatPathArray exch fpc exch put 1 IncFPC } { dup length 7 eq { newpath /nToStrip 0 def fpc 1 gt { flatPathArray fpc 2 sub get aload pop pop m flatPathArray fpc 1 sub get aload pop exec /nToStrip 2 def } { fpc 1 eq { flatPathArray fpc 1 sub get aload pop exec /nToStrip 2 def } if } ifelse aload pop exec /segmentArray flattenpath MakeFlatPathArray def /segmentArray nToStrip segmentArray StripFromFront def segmentArray length fpc add 512 lt { flatPathArray fpc segmentArray putinterval segmentArray length IncFPC } { DrawFlatPathArray fpc 1 gt { flatPathArray flatPathArray fpc 2 sub get 0 exch put flatPathArray flatPathArray fpc 1 sub get 1 exch put /fpc 2 def }{ /fpc 0 def } ifelse segmentArray length 512 lt { flatPathArray fpc segmentArray putinterval segmentArray length IncFPC } { segmentArray length /exitLoop false def 0 { 2 copy sub dup 500 gt { pop 500 } { /exitLoop true def } ifelse segmentArray 2 index 2 index getinterval flatPathArray fpc 3 -1 roll putinterval dup IncFPC add exitLoop { exit } { DrawFlatPathArray fpc 1 gt { flatPathArray flatPathArray fpc 2 sub get 0 exch put flatPathArray flatPathArray fpc 1 sub get 1 exch put /fpc 2 def }{ /fpc 0 def } ifelse } ifelse } loop } ifelse } ifelse } if } ifelse } for fpc 0 gt { usingClosepath { AppendClosePath } if DrawFlatPathArray } if saveFlat setflat } bind def /rampdelta { /len 0 3 -1 roll add def /i2 0 3 -1 roll add def /i1 0 3 -1 roll add def /nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def /rampPenW len nRampSteps div def rampColors i1 get aload pop c1 astore pop rampColors i2 get aload pop c2 astore pop c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put d aload pop } bind def /adddelta { d astore pop mycurrentrgbcolor c1 copy pop c1 0 get d 0 get add c2 0 3 -1 roll put c1 1 get d 1 get add c2 1 3 -1 roll put c1 2 get d 2 get add c2 2 3 -1 roll put c2 aload pop setrgbcolor c2 mycurrentrgbcolor copy pop } bind def /rampline { segbox ulx get rampPenW add segbox ulx 3 -1 roll put segbox llx get rampPenW add segbox llx 3 -1 roll put segbox ulx get segbox uly get moveto segbox llx get segbox lly get lineto delta aload pop adddelta stroke }bind def /slantrampseg { gsave newpath segbox ulx get segbox urx get sub abs rampdelta delta astore pop segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor rampPenW setlinewidth nRampSteps {rampline} repeat grestore }bind def /flipramp { rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put } bind def /leftrbox { rbox segbox copy pop rbox urx get rbox ulx get sub flipRatio mul dup segbox ulx get add segbox urx 3 -1 roll put segbox llx get add segbox lrx 3 -1 roll put } bind def /rightrbox { rbox segbox copy pop rbox urx get rbox ulx get sub flipRatio mul dup segbox ulx get add segbox ulx 3 -1 roll put segbox llx get add segbox llx 3 -1 roll put } bind def /drawslantramp { segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup segbox ulx get add segbox urx 3 -1 roll put segbox llx get add segbox lrx 3 -1 roll put segbox aload pop 0 0 1 slantrampseg segbox astore pop segbox ulx get add segbox ulx 3 -1 roll put segbox llx get add segbox llx 3 -1 roll put segbox urx get add segbox urx 3 -1 roll put segbox lrx get add segbox lrx 3 -1 roll put segbox aload pop 1 1 2 slantrampseg segbox astore pop segbox ulx get add segbox ulx 3 -1 roll put segbox llx get add segbox llx 3 -1 roll put segbox urx get add segbox urx 3 -1 roll put segbox lrx get add segbox lrx 3 -1 roll put 2 2 3 slantrampseg }bind def /tan { dup sin exch cos div }bind def /rampbox { pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put }bind def /LoadSegBox { 4 copy segbox llx 6 -1 roll put segbox lly 5 -1 roll put segbox lrx 4 -1 roll put segbox lry 6 -1 roll put segbox urx 5 -1 roll put segbox ury 3 -1 roll put segbox ulx 4 -1 roll put segbox uly 3 -1 roll put } bind def /TransToCenter { gsave flattenpath pathbbox grestore 2 index sub 2.0 div exch 3 index sub 2.0 div 4 -1 roll add 3 1 roll add translate } bind def /RotRampGrad { gsave TransToCenter -1.0 mul 180.0 add rotate flattenpath pathbbox clip newpath LoadSegBox flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and { /flipRatio 1.0 flipRatio sub def segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp } {drawslantramp} ifelse grestore } bind def /bbg { pbox exch get } bind def /DR { % Directional ramp /workingMatrix mstore def objectCord setmatrix flipramp gsave flattenpath pathbbox grestore pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put rampAngle RotRampGrad RF workingMatrix setmatrix }bind def /ramparc { gsave circum rampdelta delta astore pop /rampPenW 60.0 nRampSteps div def /ang1 exch rampAngle sub def /ang2 rampPenW ang1 add def rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth nRampSteps {ramparcseg}repeat grestore }bind def /ramparcseg { newpath rampcenter aload pop moveto rampcenter aload pop rampradius ang2 ang1 arcn fill /ang1 ang2 def /ang2 ang2 rampPenW add def delta aload pop adddelta }bind def /GetRadius { rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul add sqrt } bind def /circularRamp { rampbox /rampradius GetRadius def CalcCrcm flipramp 0 0 0 1 ramparc 1 60 1 2 ramparc 2 120 2 3 ramparc flipramp 0 180 0 1 ramparc 1 240 1 2 ramparc 2 300 2 3 ramparc }bind def /GetCircumf { 2.0 mul 3.1415926 mul } bind def /CalcCrcm { rampradius GetCircumf /circum exch 6.0 div def } bind def /CR { gsave clip MTC currentmatrix pop CTM setmatrix flattenpath pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put pbox left get pbox right get sub abs 2 div pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put pbox top get pbox bottom get sub abs 2 div pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put circularRamp MTC setmatrix grestore RF }bind def /SBR { gsave clip /workingMatrix mstore def objectCord setmatrix flattenpath /BaseBox pathbbox 4 array astore def /len BaseBox 2 get BaseBox 0 get sub dup mul BaseBox 3 get BaseBox 1 get sub dup mul add sqrt 12.0 div def /EndBox BaseBox aload pop 3 -1 roll sub 3 1 roll exch sub /dbx exch def /dby exch def BaseBox aload pop pop pop /blly exch def /bllx exch def sbox 0 get 100.0 div dby mul blly add sbox 1 get 100.0 div dbx mul bllx add sbox 2 get 100.0 div dby mul blly add sbox 3 get 100.0 div dbx mul bllx add exch 4 -2 roll exch 4 -2 roll 4 array astore def BaseBox EndBox ShapeBurst workingMatrix setmatrix grestore } bind def /GetBoxCenter { 2 index sub 2.0 div 3 -1 roll add 3 1 roll 1 index sub 2.0 div add exch } bind def /GetInterBox { /boxInter exch def 4 1 7 { -1 roll 7 index } for sub boxInter mul 8 -1 roll add 7 1 roll sub boxInter mul 7 -1 roll add 6 1 roll sub boxInter mul 6 -1 roll add 5 1 roll sub boxInter mul 5 -1 roll add 4 1 roll } bind def /GetBoxCenterDeltas { GetBoxCenter 6 2 roll GetBoxCenter 3 -1 roll exch sub 3 1 roll sub exch } bind def /GetBoxCornerDeltas { pop pop 4 2 roll pop pop 3 -1 roll sub 3 1 roll exch sub exch } bind def /getpath { /k 0 def {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall /pfa k array def /k 0 def {{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} {{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} {{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} {}pathforall }bind def /ShapeBurst { getpath newpath /SBERect exch 4 array copy def /SBBRect exch 4 array copy def /interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def /interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def 0 0 1 SBBRect interRect1 ShapeBurstSeg msave interRect1 0 get interRect1 1 get translate SBBRect aload pop interRect1 aload pop GetBoxesRatio scale SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate 1 1 2 interRect1 interRect2 ShapeBurstSeg mrestore msave interRect2 0 get interRect2 1 get translate SBBRect aload pop interRect2 aload pop GetBoxesRatio scale SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate 2 2 3 interRect2 SBERect ShapeBurstSeg mrestore } bind def /ShapeBurstSeg { /sbr1 exch 4 array copy def /sbr0 exch 4 array copy def /blx sbr0 0 get def /bly sbr0 1 get def len rampdelta delta astore pop sbr0 aload pop sbr1 aload pop GetBoxesRatio /ratioY exch def /ratioX exch def sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas /dlly exch nRampSteps div def /dllx exch nRampSteps div def /scaleStepX 1.0 ratioX sub nRampSteps div def /scaleStepY 1.0 ratioY sub nRampSteps div def /currentScaleX 1.0 scaleStepX sub def /currentScaleY 1.0 scaleStepY sub def /translationX blx dllx add def /translationY bly dlly add def /currentScaleX 1.0 def /currentScaleY 1.0 def /translationX blx def /translationY bly def rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor nRampSteps { msave translationX translationY translate currentScaleX currentScaleY scale blx -1.0 mul bly -1.0 mul translate pfa {aload pop exec} forall fill delta aload pop adddelta /translationX translationX dllx add def /translationY translationY dlly add def /currentScaleX currentScaleX scaleStepX sub def /currentScaleY currentScaleY scaleStepY sub def mrestore } repeat msave translationX translationY translate currentScaleX currentScaleY scale blx -1.0 mul bly -1.0 mul translate pfa {aload pop exec} forall fill mrestore } bind def initmsaverestore /tctm matrix currentmatrix def tctm RoundMatrix setmatrix /patternMatrix mstore def 10 setmiterlimit 2 setlinecap newpath % %tLayer % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {13.500 RR2} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 11.000 20.502 0.000 0.000 161.685 513.994 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 20.980 39.739 0.000 0.000 143.720 153.296 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 19.982 347.335 0.000 0.000 143.720 153.296 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 52.918 131.417 0.000 0.000 8.982 9.017 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 96.333 139.933 0.000 0.000 8.982 9.017 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 123.281 112.881 0.000 0.000 8.982 9.017 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 96.333 85.829 0.000 0.000 8.982 9.017 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 51.421 94.846 0.000 0.000 8.982 9.017 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 51.421 419.474 0.000 0.000 8.982 9.017 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 87.351 447.529 0.000 0.000 8.982 9.017 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 87.351 383.405 0.000 0.000 8.982 9.017 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 123.281 419.474 0.000 0.000 8.982 9.017 rect %@EndOval %@BeginText save [ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef /guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla /hungarumlaut/ogonek/caron] StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 64.895 54.268 0.000 0.000 16.000 40.903 rect %@EndRect gsave 74.719 72.895 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) plain F /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -20.231 4.000 S ( ) -13.231 4.000 S (\() -9.731 4.000 S (0) -5.069 4.000 S (,) 1.930 4.000 S ( ) 5.430 4.000 S (0) 8.930 4.000 S (\)) 15.930 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 107.811 54.268 0.000 0.000 16.000 40.903 rect %@EndRect gsave 74.719 115.811 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (4) -20.231 4.000 S ( ) -13.231 4.000 S (\() -9.731 4.000 S (1) -5.069 4.000 S (,) 1.930 4.000 S ( ) 5.430 4.000 S (0) 8.930 4.000 S (\)) 15.930 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 134.759 96.349 0.000 0.000 16.000 40.903 rect %@EndRect gsave 116.801 142.759 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (3) -20.150 4.000 S ( ) -13.150 4.000 S (\() -9.650 4.000 S (2) -4.988 4.000 S (,) 2.011 4.000 S ( ) 5.511 4.000 S (1) 9.011 4.000 S (\)) 16.011 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 107.811 144.442 0.000 0.000 16.000 40.903 rect %@EndRect gsave 164.894 115.811 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (2) -20.057 4.000 S ( ) -13.057 4.000 S (\() -9.557 4.000 S (2) -4.895 4.000 S (,) 2.104 4.000 S ( ) 5.604 4.000 S (0) 9.104 4.000 S (\)) 16.104 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 62.899 143.440 0.000 0.000 16.000 40.903 rect %@EndRect gsave 163.892 70.899 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (1) -20.059 4.000 S ( ) -13.059 4.000 S (\() -9.559 4.000 S (0) -4.897 4.000 S (,) 2.102 4.000 S ( ) 5.602 4.000 S (1) 9.102 4.000 S (\)) 16.102 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 26.968 252.651 0.000 0.000 16.000 31.951 rect %@EndRect gsave 268.627 34.968 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (C) -15.848 4.000 S (o) -6.510 4.000 S (l) 0.489 4.000 S (o) 4.379 4.000 S (r) 11.379 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 35.951 405.948 0.000 0.000 16.000 40.903 rect %@EndRect gsave 426.400 43.951 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (1) -19.551 4.000 S ( ) -12.551 4.000 S (\() -9.051 4.000 S (1) -4.389 4.000 S (,) 2.610 4.000 S ( ) 6.110 4.000 S (0) 9.610 4.000 S (\)) 16.610 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 98.829 357.855 0.000 0.000 16.000 40.903 rect %@EndRect gsave 378.307 106.829 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -19.644 4.000 S ( ) -12.644 4.000 S (\() -9.144 4.000 S (0) -4.482 4.000 S (,) 2.517 4.000 S ( ) 6.017 4.000 S (0) 9.517 4.000 S (\)) 16.517 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 134.759 405.948 0.000 0.000 16.000 40.903 rect %@EndRect gsave 426.400 142.759 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (3) -19.551 4.000 S ( ) -12.551 4.000 S (\() -9.051 4.000 S (0) -4.389 4.000 S (,) 2.610 4.000 S ( ) 6.110 4.000 S (1) 9.610 4.000 S (\)) 16.610 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 98.829 454.041 0.000 0.000 16.000 40.903 rect %@EndRect gsave 474.493 106.829 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (2) -19.458 4.000 S ( ) -12.458 4.000 S (\() -8.958 4.000 S (2) -4.296 4.000 S (,) 2.703 4.000 S ( ) 6.203 4.000 S (0) 9.703 4.000 S (\)) 16.703 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 163.479 108.809 moveto /Triangular 14.099 7.049 false 321.140 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 165.036 107.554 247.642 40.941 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 372.884 100.825 moveto /Triangular 14.099 7.049 false 214.503 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 371.236 99.692 285.716 40.941 Line %@EndLine %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 152.058 272.131 0.000 0.000 16.000 23.482 rect %@EndRect gsave 283.872 160.058 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (K) -11.368 4.000 S (e) -1.258 4.000 S (y) 4.955 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 179.510 120.620 moveto /Triangular 14.099 7.049 false 377.842 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 181.414 121.231 271.129 150.062 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 386.911 110.805 moveto /Triangular 14.099 7.049 false 156.449 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 385.078 111.605 291.265 152.516 Line %@EndLine % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {13.500 RR2} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 223.675 18.502 0.000 0.000 111.782 513.994 rect %@EndRect % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 242.650 78.133 0.000 0.000 79.844 83.160 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 287.563 87.150 0.000 0.000 16.000 26.876 rect %@EndRect gsave 100.588 295.563 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -13.349 4.000 S ( ) -6.349 4.000 S (\() -2.849 4.000 S (0) 1.812 4.000 S (\)) 8.812 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 275.087 93.663 0.000 0.000 8.982 9.017 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 274.089 135.744 0.000 0.000 8.982 9.017 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 286.565 128.230 0.000 0.000 16.000 26.876 rect %@EndRect gsave 141.668 294.565 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (1) -13.269 4.000 S ( ) -6.269 4.000 S (\() -2.769 4.000 S (1) 1.892 4.000 S (\)) 8.892 4.000 S grestore %@EndText % %tfEndGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 237.648 384.210 0.000 0.000 79.844 83.160 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 281.563 394.229 0.000 0.000 16.000 26.876 rect %@EndRect gsave 407.667 289.563 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -13.270 4.000 S ( ) -6.270 4.000 S (\() -2.770 4.000 S (0) 1.891 4.000 S (\)) 8.891 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 268.089 402.745 0.000 0.000 8.982 9.017 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 269.087 445.829 0.000 0.000 8.982 9.017 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 280.565 438.314 0.000 0.000 16.000 26.876 rect %@EndRect gsave 451.752 288.565 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (1) -13.185 4.000 S ( ) -6.185 4.000 S (\() -2.685 4.000 S (3) 1.976 4.000 S (\)) 8.976 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 235.652 201.356 0.000 0.000 16.000 148.038 rect %@EndRect gsave 275.375 243.652 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (R) -73.143 4.000 S (a) -63.805 4.000 S (n) -57.592 4.000 S (k) -50.592 4.000 S ( ) -43.592 4.000 S (i) -40.092 4.000 S (n) -36.202 4.000 S ( ) -29.202 4.000 S (t) -25.702 4.000 S (h) -21.812 4.000 S (e) -14.812 4.000 S ( ) -8.598 4.000 S (o) -5.098 4.000 S (r) 1.901 4.000 S (i) 6.563 4.000 S (g) 10.452 4.000 S (i) 17.452 4.000 S (n) 21.342 4.000 S (a) 28.342 4.000 S (l) 34.556 4.000 S ( ) 38.446 4.000 S (g) 41.946 4.000 S (r) 48.946 4.000 S (o) 53.608 4.000 S (u) 60.608 4.000 S (p) 67.608 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 150.265 284.563 moveto /Triangular 14.099 7.049 false 337.327 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 152.110 283.791 231.414 250.623 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 411.763 284.557 moveto /Triangular 14.099 7.049 false 202.866 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 409.920 283.780 333.612 251.621 Line %@EndLine %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 305.106 239.636 0.000 0.000 20.000 60.152 rect %@EndRect gsave 269.712 315.106 T translate 0.0 rotate 1 1 scale 18.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (C) -29.863 5.000 S (o) -17.858 5.000 S (l) -8.858 5.000 S (o) -3.857 5.000 S (r) 5.142 5.000 S (=) 11.137 5.000 S (0) 21.288 5.000 S grestore %@EndText % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {13.500 RR2} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 339.446 18.502 0.000 0.000 111.782 513.994 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 353.429 382.724 0.000 0.000 79.844 83.160 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 399.339 411.780 0.000 0.000 16.000 26.876 rect %@EndRect gsave 425.219 407.339 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -12.719 4.000 S ( ) -5.719 4.000 S (\() -2.219 4.000 S (1) 2.442 4.000 S (\)) 9.442 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 385.866 418.794 0.000 0.000 8.982 9.017 rect %@EndOval % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 354.425 77.123 0.000 0.000 79.844 83.160 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 400.335 104.175 0.000 0.000 16.000 26.876 rect %@EndRect gsave 117.614 408.335 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -13.324 4.000 S ( ) -6.324 4.000 S (\() -2.824 4.000 S (4) 1.838 4.000 S (\)) 8.838 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 386.862 112.191 0.000 0.000 8.982 9.017 rect %@EndOval % %tfEndGrp % %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 424.106 239.135 0.000 0.000 20.000 60.152 rect %@EndRect gsave 269.211 434.106 T translate 0.0 rotate 1 1 scale 18.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (C) -29.364 5.000 S (o) -17.358 5.000 S (l) -8.358 5.000 S (o) -3.358 5.000 S (r) 5.641 5.000 S (=) 11.636 5.000 S (1) 21.787 5.000 S grestore %@EndText % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {13.500 RR2} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 455.217 19.502 0.000 0.000 111.782 513.994 rect %@EndRect % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 474.190 80.117 0.000 0.000 79.844 83.160 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 515.106 91.638 0.000 0.000 16.000 26.876 rect %@EndRect gsave 105.076 523.106 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -12.861 4.000 S ( ) -5.861 4.000 S (\() -2.361 4.000 S (2) 2.300 4.000 S (\)) 9.300 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 502.631 98.150 0.000 0.000 8.982 9.017 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 502.633 140.232 0.000 0.000 8.982 9.017 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 515.108 132.717 0.000 0.000 16.000 26.876 rect %@EndRect gsave 146.155 523.108 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (1) -12.782 4.000 S ( ) -5.782 4.000 S (\() -2.282 4.000 S (3) 2.379 4.000 S (\)) 9.379 4.000 S grestore %@EndText % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 473.182 387.219 0.000 0.000 79.844 83.160 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 514.601 419.369 0.000 0.000 16.000 26.876 rect %@EndRect gsave 432.808 522.601 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -13.130 4.000 S ( ) -6.130 4.000 S (\() -2.630 4.000 S (2) 2.032 4.000 S (\)) 9.032 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 180 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 502.126 424.291 0.000 0.000 8.982 9.017 rect %@EndOval % %tfEndGrp % %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 535.106 241.638 0.000 0.000 20.000 60.152 rect %@EndRect gsave 271.714 545.106 T translate 0.0 rotate 1 1 scale 18.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (C) -29.861 5.000 S (o) -17.856 5.000 S (l) -8.856 5.000 S (o) -3.855 5.000 S (r) 5.144 5.000 S (=) 11.139 5.000 S (2) 21.290 5.000 S grestore %@EndText % %tfEndGrp % %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 184.000 136.000 0.000 0.000 26.000 322.558 rect %@EndRect gsave 297.279 197.000 T translate 0.0 rotate 1 1 scale 24.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (I) -160.500 6.000 S (n) -152.507 6.000 S (p) -140.507 6.000 S (u) -128.507 6.000 S (t) -116.507 6.000 S ( ) -109.839 6.000 S (I) -103.839 6.000 S (n) -95.847 6.000 S (t) -83.847 6.000 S (e) -77.179 6.000 S (r) -66.527 6.000 S (c) -58.535 6.000 S (o) -47.882 6.000 S (m) -35.882 6.000 S (m) -17.214 6.000 S (u) 1.453 6.000 S (n) 13.453 6.000 S (i) 25.453 6.000 S (c) 32.121 6.000 S (a) 42.773 6.000 S (t) 53.425 6.000 S (o) 60.093 6.000 S (r) 72.093 6.000 S ( ) 80.085 6.000 S (\() 86.085 6.000 S (c) 94.078 6.000 S (o) 104.730 6.000 S (m) 116.730 6.000 S (m) 135.398 6.000 S (\)) 154.066 6.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 580.000 71.500 0.000 0.000 51.000 420.597 rect %@EndRect gsave 281.798 605.500 T translate 0.0 rotate 1 1 scale 24.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (D) -210.000 -7.000 S (i) -192.667 -7.000 S (s) -186.000 -7.000 S (j) -176.660 -7.000 S (o) -169.992 -7.000 S (i) -157.992 -7.000 S (n) -151.324 -7.000 S (t) -139.324 -7.000 S ( ) -132.656 -7.000 S (o) -126.656 -7.000 S (u) -114.656 -7.000 S (t) -102.656 -7.000 S (p) -95.988 -7.000 S (u) -83.988 -7.000 S (t) -71.988 -7.000 S ( ) -65.320 -7.000 S (c) -59.320 -7.000 S (o) -48.667 -7.000 S (m) -36.667 -7.000 S (m) -18.000 -7.000 S (u) 0.667 -7.000 S (n) 12.667 -7.000 S (i) 24.667 -7.000 S (c) 31.335 -7.000 S (a) 41.988 -7.000 S (t) 52.640 -7.000 S (o) 59.308 -7.000 S (r) 71.308 -7.000 S (s) 79.300 -7.000 S ( ) 88.640 -7.000 S (\() 94.640 -7.000 S (n) 102.632 -7.000 S (e) 114.632 -7.000 S (w) 125.285 -7.000 S (c) 142.617 -7.000 S (o) 153.269 -7.000 S (m) 165.269 -7.000 S (m) 183.937 -7.000 S (\)) 202.605 -7.000 S /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (\() -70.998 18.000 S (o) -63.005 18.000 S (n) -51.005 18.000 S (e) -39.005 18.000 S ( ) -28.353 18.000 S (p) -22.353 18.000 S (e) -10.353 18.000 S (r) 0.298 18.000 S ( ) 8.291 18.000 S (c) 14.291 18.000 S (o) 24.943 18.000 S (l) 36.943 18.000 S (o) 43.611 18.000 S (r) 55.611 18.000 S (\)) 63.603 18.000 S grestore %@EndText % %tLayer % restore end %%EndDocument @endspecial 75 2089 a Fr(Figure)g(6.2:)k(In)o(tercomm)o(unicator)15 b(construction)h(ac)o(hiev)o(ed)h(b)o(y)e(splitting)j(an)d(existing)i (in)o(tercomm)o(u-)75 2145 y(nicator)e(with)h Fl(MPI)p 418 2145 14 2 v 16 w(COMM)p 576 2145 V 16 w(SPLIT\(\))e Fr(extended)i(to)f(in)o(tercomm)o(unicators.)1967 46 y Fi(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop %%Page: 11 13 11 12 bop 75 -100 a Fh(6.4.)34 b(EXTENDED)14 b(COLLECTIVE)j(OPERA)l (TIONS)749 b Fr(11)266 45 y Fj(int)167 b(rank;)266 158 y(/*)23 b(Create)h(intercommunicator)d(with)i(clients)g(and)h(servers:) 337 214 y(multiple_client_comm)e(*/)266 271 y(...)266 384 y(/*)h(Split)h(the)f(intercommunicator)f(for)h(a)h(single)f(server) g(per)g(group)337 440 y(of)h(clients)f(*/)266 497 y(MPI_Comm_rank)f(\() i(multiple_client_comm,)d(&rank)i(\);)266 553 y(MPI_Comm_split)f(\()i (multiple_client_comm,)d(rank,)i(0,)672 610 y(&single_server_comm)e (\);)75 753 y Fo(6.4)59 b(Extended)18 b(Collective)g(Op)r(erations)75 856 y Fg(6.4.1)49 b(Intercommunicato)o(r)14 b(Collective)k(Op)q (erations)75 989 y Fn(Curren)o(t)c(Status:)j Fm(P)o(assed)e(once)166 1140 y Fn(Discussion:)k Fm(V)m(ote)c(passed)i(only)e(in)o(tra-comm)o (uni)o(cator)e(inplace)j(but)f(did)h(not)f(preclude)i(adding)e(bac)o(k) 75 1196 y(in)e(things)f(that)i(are)f(missing,)e(suc)o(h)j(as)f (allreduce.)18 b(The)c(same)e(applies)g(to)h(in)o(ter-comm)o(unicator)e (in-place.)17 b(Bill)75 1253 y(Gropp)d(and)f(Marc)i(Snir)e(resp)q (ectiv)o(ely)j(ha)o(v)o(e)d(promised)g(text.)166 1357 y Fr(In)h(the)g Fl(MPI-1)f Fr(standard,)g(collectiv)o(e)j(op)q (erations)e(only)g(apply)h(to)e(in)o(tracomm)o(unicators)g([1,)g(Sec-) 75 1413 y(tion)18 b(4.2];)f(ho)o(w)o(ev)o(er,)g(most)g Fl(MPI)g Fr(collectiv)o(e)i(op)q(erations)f(can)f(b)q(e)i(generalized)g (to)e(in)o(tercomm)o(unica-)75 1470 y(tors.)j(T)l(o)15 b(understand)h(ho)o(w)f Fl(MPI)g Fr(can)h(b)q(e)g(extended,)g(w)o(e)f (can)h(view)g(most)f Fl(MPI)f Fr(in)o(tracomm)o(unicator)75 1526 y(collectiv)o(e)j(op)q(erations)e(in)o(to)g(one)h(of)f(the)g (follo)o(wing)h(categories)f(\(see,)g(for)f(instance,)i([3)o(]\):)75 1620 y Fc(All-T)l(o-All)25 b Fr(All)16 b(pro)q(cesses)g(con)o(tribute)f (to)g(the)g(result.)21 b(All)16 b(pro)q(cesses)g(receiv)o(e)g(the)f (result.)243 1714 y Fk(\017)23 b Fl(MPI)p 374 1714 14 2 v 15 w(Allgather,)15 b(MPI)p 671 1714 V 16 w(Allgatherv)243 1787 y Fk(\017)23 b Fl(MPI)p 374 1787 V 15 w(Alltoall,)15 b(MPI)p 634 1787 V 16 w(Alltoallv)243 1860 y Fk(\017)23 b Fl(MPI)p 374 1860 V 15 w(Allreduce,)16 b(MPI)p 674 1860 V 16 w(Reduce)p 825 1860 V 18 w(scatter)75 1954 y Fc(All-T)l(o-One)25 b Fr(All)16 b(pro)q(cesses)g(con)o(tribute)f(to)g (the)g(result.)20 b(One)c(pro)q(cess)g(receiv)o(es)g(the)f(result.)243 2047 y Fk(\017)23 b Fl(MPI)p 374 2047 V 15 w(Gather,)16 b(MPI)p 627 2047 V 16 w(Gatherv)243 2120 y Fk(\017)23 b Fl(MPI)p 374 2120 V 15 w(Reduce)75 2214 y Fc(One-T)l(o-All)i Fr(One)16 b(pro)q(cess)f(con)o(tributes)g(to)g(the)g(result.)21 b(All)16 b(pro)q(cesses)g(receiv)o(e)g(the)f(result.)243 2308 y Fk(\017)23 b Fl(MPI)p 374 2308 V 15 w(Bcast)243 2381 y Fk(\017)g Fl(MPI)p 374 2381 V 15 w(Scatter,)16 b(MPI)p 635 2381 V 16 w(Scatterv)75 2475 y Fc(Other)23 b Fr(Collectiv)o(e)16 b(op)q(erations)g(that)e(do)h(not)g(\014t)g(in)o (to)g(one)h(of)f(the)g(ab)q(o)o(v)o(e)g(categories.)243 2569 y Fk(\017)23 b Fl(MPI)p 374 2569 V 15 w(Scan)243 2642 y Fk(\017)g Fl(MPI)p 374 2642 V 15 w(Ba)o(rrier)-32 46 y Fi(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop %%Page: 12 14 12 13 bop 75 -100 a Fr(12)537 b Fh(CHAPTER)16 b(6.)34 b(EXTENDED)15 b(COLLECTIVE)h(OPERA)l(TIONS)75 45 y Fr(The)f Fl(MPI)p 253 45 14 2 v 16 w(Ba)o(rrier)f Fr(op)q(eration)h(do)q(es)h (not)f(\014t)g(in)o(to)g(this)h(classi\014cation)g(since)h(no)e(data)f (is)i(b)q(eing)g(mo)o(v)o(ed)75 102 y(\(other)g(than)h(the)f(implicit)j (fact)e(that)f(a)g(barrier)h(has)f(b)q(een)i(called\).)26 b(The)17 b(data)f(mo)o(v)o(emen)o(t)f(pattern)75 158 y(of)g Fl(MPI)p 212 158 V 16 w(Scan)h Fr(do)q(es)f(not)g(\014t)g(this)h (taxonom)o(y)l(.)166 214 y(In)o(tercomm)o(unicators)d(con)o(tain)h(a)g (\\left")f(and)h(a)g(\\righ)o(t")f(group.)19 b(Collectiv)o(e)c(op)q (erations)f(can)g(b)q(e)75 271 y(describ)q(ed)k(in)f(terms)e(of)g (these)i(t)o(w)o(o)d(groups.)22 b(F)l(or)15 b(example,)i(an)e (all-to-all)j Fl(MPI)p 1486 271 V 16 w(Allgather)e Fr(op)q(eration)75 327 y(can)d(b)q(e)g(describ)q(ed)i(as)d(collecting)i(data)e(from)g(all) i(mem)o(b)q(ers)e(of)g(one)h(group)f(with)h(the)g(result)g(app)q (earing)75 384 y(in)23 b(all)h(mem)o(b)q(ers)f(of)f(the)h(other)f (group)g(\(see)h(Figure)g(6.3\).)41 b(As)23 b(another)f(example,)j(a)d (one-to-all)75 440 y Fl(MPI)p 160 440 V 16 w(Bcast)15 b Fr(op)q(eration)f(sends)g(data)f(from)g(one)h(mem)o(b)q(er)g(of)f (one)h(group)g(to)f(all)h(mem)o(b)q(ers)g(of)g(the)f(other)75 497 y(group)19 b(F)l(or)f(in)o(tracomm)o(unicators,)h(these)g(t)o(w)o (o)f(groups)g(are)h(the)g(same.)31 b(F)l(or)18 b(in)o(tercomm)o (unicators,)75 553 y(these)12 b(t)o(w)o(o)e(groups)i(are)f(distinct.)20 b(F)l(or)11 b(symmetry)l(,)h(eac)o(h)f(suc)o(h)h(op)q(eration)g(is)h (describ)q(ed)g(in)g(t)o(w)o(o)d(phases,)75 610 y(so)15 b(that)f(it)i(has)f(a)g(full-duplex)j(b)q(eha)o(vior.)166 666 y(F)l(or)h Fl(MPI-2)p Fr(,)g(the)g(follo)o(wing)h(in)o(tracomm)o (uniator)e(collectiv)o(e)j(op)q(erations)f(also)f(apply)h(to)f(in)o (ter-)75 723 y(comm)o(unicators:)143 816 y Fk(\017)k Fl(MPI)p 274 816 V 15 w(BCAST,)143 910 y Fk(\017)g Fl(MPI)p 274 910 V 15 w(GA)l(THER,)17 b(MPI)p 576 910 V 15 w(GA)l(THERV,)143 1004 y Fk(\017)23 b Fl(MPI)p 274 1004 V 15 w(SCA)l(TTER,)16 b(MPI)p 598 1004 V 16 w(SCA)l(TTERV,)143 1098 y Fk(\017)23 b Fl(MPI)p 274 1098 V 15 w(ALLGA)l(THER,)16 b(MPI)p 655 1098 V 16 w(ALLGA)l(THERV,)143 1192 y Fk(\017)23 b Fl(MPI)p 274 1192 V 15 w(ALL)l(TO)o(ALL,)15 b(MPI)p 618 1192 V 15 w(ALL)l(TO)o(ALL)-5 b(V,)15 b(\(MPI)p 1005 1192 V 15 w(ALL)l(TO)o(ALL)-5 b(W\))143 1285 y Fk(\017)23 b Fl(MPI)p 274 1285 V 15 w(REDUCE,)16 b(MPI)p 576 1285 V 16 w(ALLREDUCE,)143 1379 y Fk(\017)23 b Fl(MPI)p 274 1379 V 15 w(REDUCE)p 465 1379 V 18 w(SCA)l(TTER,)143 1473 y Fk(\017)g Fl(MPI)p 274 1473 V 15 w(BARRIER.)166 1567 y Fr(These)c(functions)g(use)g(exactly)f(the)h(same)f(argumen)o(t) f(list)j(as)e(their)h Fl(MPI-1)e Fr(coun)o(terparts)h(and)75 1623 y(also)13 b(w)o(ork)g(on)g(in)o(tracomm)o(unicators,)g(as)g(exp)q (ected.)21 b(No)13 b(new)h(language)f(bindings)j(are)d(consequen)o(tly) 75 1680 y(needed.)75 1802 y Fg(6.4.2)49 b(Op)q(erations)16 b(that)g(Move)h(Data)75 1887 y Fr(Tw)o(o)d(additions)i(are)f(made)h(to) e(man)o(y)h(collectiv)o(e)i(comm)o(unication)f(calls:)143 1981 y Fk(\017)23 b Fr(Collectiv)o(e)15 b(comm)o(unication)f(can)g(o)q (ccur)g(\\in)g(place")g(for)f(in)o(tracomm)o(unicators,)g(with)h(the)g (out-)189 2038 y(put)h(bu\013er)f(b)q(eing)j(iden)o(tical)f(to)f(the)g (input)g(bu\013er.)20 b(This)c(is)f(sp)q(eci\014ed)i(b)o(y)e(pro)o (viding)h(a)e(sp)q(ecial)189 2094 y(argumen)o(t)h(v)m(alue,)j Fe(MPI)p 602 2094 13 2 v 14 w(IN)p 657 2094 V 15 w(PLA)o(CE)p Fr(,)d(instead)i(of)f(the)h(send)g(bu\013er)f(or)g(the)h(receiv)o(e)g (bu\013er)f(argu-)189 2151 y(men)o(t.)143 2244 y Fk(\017)23 b Fr(Collectiv)o(e)c(comm)o(unication)f(applies)h(to)e(in)o(tercomm)o (unicators.)28 b(If)18 b(the)f(op)q(eration)h(is)g(ro)q(oted)189 2301 y(\(e.g.,)13 b(broadcast,)h(gather,)g(scatter\),)f(then)j(the)f (transfer)f(is)h(unidirectional.)23 b(The)15 b(direction)h(of)189 2357 y(the)d(transfer)f(is)h(indicated)i(b)o(y)e(a)f(sp)q(ecial)j(v)m (alue)f(of)e(the)h(ro)q(ot)f(argumen)o(t.)19 b(In)13 b(this)g(case,)g(only)h(the)189 2414 y(ro)q(ot)i(pro)q(cess)h(in)g(the) g(group)g(con)o(taining)g(the)g(ro)q(ot)f(pro)q(cess)h(calls)h(the)f (collectiv)o(e)h(routine;)g(all)189 2470 y(pro)q(cesses)e(in)g(the)g (other)f(group)g(\(the)g(group)g(that)g(is)h(the)g(remote)f(group)g (relativ)o(e)h(to)f(the)h(ro)q(ot)189 2527 y(pro)q(cess\))h(m)o(ust)g (call)h(the)g(collectiv)o(e)h(routine.)27 b(If)17 b(the)h(op)q(eration) f(is)h(unro)q(oted)g(\(e.g.,)e(alltoall\))189 2583 y(then)f(the)g (transfer)g(is)h(bidirectional.)1967 46 y Fi(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop %%Page: 13 15 13 14 bop 75 -100 a Fh(6.4.)34 b(EXTENDED)14 b(COLLECTIVE)j(OPERA)l (TIONS)749 b Fr(13)375 1045 y @beginspecial 10 @llx 379.500000 @lly 543 @urx 785 @ury 2880 @rwi @setspecial %%BeginDocument: figures/collective-allgather.eps /MAV 300 dict def MAV begin /useClip true def /top 0 def /left 1 def /bottom 2 def /right 3 def /CM 6 array def /CTM 6 array def /CTMR 6 array def /MTC 6 array def /blimit 1500 def /bcnt 0 def /rbox 8 array def /segbox 8 array def /bbox1 4 array def /c1 3 array def /c2 3 array def /d 3 array def /delta 3 array def /mycurrentrgbcolor 3 array def /ulx 0 def /uly 1 def /llx 2 def /lly 3 def /urx 4 def /ury 5 def /lrx 6 def /lry 7 def /sp [0 0] def /ep [0 0] def /bbox 4 array def /pbox 4 array def /scrnProc currentscreen 3 1 roll pop pop def /currentcolorscreen where { begin currentcolorscreen end 3 1 roll pop pop 4 2 roll pop pop 5 -2 roll pop pop 6 -2 roll pop pop /kProc exch def /bProc exch def /gProc exch def /rProc exch def } if /Max {2 copy gt {pop}{exch pop} ifelse} bind def /Min {2 copy lt {pop}{exch pop} ifelse} bind def /cellPenW 72.0 /currentcolorscreen where {begin currentcolorscreen end pop pop 10 1 roll pop pop 8 1 roll pop pop 6 1 roll pop pop Max Max Max } {currentscreen pop pop} ifelse div 2.0 div def /rect { /saveobj save def R PC PF LC SS saveobj restore } bind def /R { newpath pbox astore pop 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate /objectCord mstore def pbox right get 2 div dup pbox left get exch sub pbox left 3 -1 roll put dup pbox right 3 -1 roll put pbox bottom get 2 div dup pbox top get exch sub pbox top 3 -1 roll put dup pbox bottom 3 -1 roll put translate CTM currentmatrix pop 57.3 mul rotate RT } bind def /SaveScreenBW { currentscreen /scrnProc exch def /scrnAngle exch def /scrnFreq exch def } bind def /RestoreScreenBW { scrnFreq scrnAngle MAV /scrnProc get setscreen } bind def /SetFreqAngleBW { currentscreen 3 1 roll pop pop setscreen } bind def /SaveScreenColor { currentcolorscreen /grayProc exch def /grayAngle exch def /grayFreq exch def /bProc exch def /bAngle exch def /bFreq exch def /gProc exch def /gAngle exch def /gFreq exch def /rProc exch def /rAngle exch def /rFreq exch def } bind def /RestoreColorScreen { rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen } bind def /SetFreqAngleColor { currentcolorscreen 3 1 roll pop pop 4 2 roll pop pop 5 -2 roll pop pop 6 -2 roll pop pop 4 1 roll 6 1 roll 8 1 roll 10 1 roll setcolorscreen } bind def /initmsaverestore { userdict begin /mdict 10 dict def mdict begin /mindex -1 def /mstacksize 25 def /mstack mstacksize array def /incmindex { /mindex mindex 1 add def } bind def /decmindex { /mindex mindex 1 sub def } bind def /checkmindex { mindex 0 lt { (%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' ) print flush stop } { mindex mstacksize ge { (%ERROR: msave/mrestore stack overflow: Offending command 'msave' ) print flush stop } if } ifelse } bind def /mpush { incmindex checkmindex mstack mindex 3 -1 roll put } bind def /mpop { checkmindex mstack mindex get decmindex } bind def end end } bind def /msave { mdict begin matrix currentmatrix mpush end } bind def /mrestore { mdict begin mpop setmatrix end } bind def /msavelevel { mdict begin mindex 1 add end } bind def /mstore { matrix currentmatrix } bind def /AutoSizeY { 0 0 pl dup 3 1 roll 4 -1 roll add pl exch pop exch sub } bind def /pl { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform } bind def /pll { transform round exch round exch itransform } bind def /pr { dtransform round exch round exch idtransform } bind def /m { pl moveto } bind def /l { pl lineto } bind def /c { pl curveto } bind def /rm { pr rmoveto } bind def /rl { pr rlineto } bind def /ar { 5 -2 roll pl 5 2 roll arc } bind def /an { 5 -2 roll pl 5 2 roll arcn } bind def /MakePatternFont { /FontDict 20 dict def FontDict begin /FontName exch def /Encoding exch def /FontMatrix [1 0 0 1 0 0 ] def /FontType 3 def /FontBBox [ 0 0 1 1 ] def /PatternDict exch def /RenderPattern { patternDict exch get exec } bind def /BuildChar { exch begin 1 0 0 0 1 1 setcachedevice Encoding exch get RenderPattern end } bind def FontName FontDict definefont pop end } bind def /SnapToPattenGrid { exch dup 0 lt { 1 index sub } if 1 index div truncate mul } bind def /FillPatternString { dup length 1 sub 0 1 3 -1 roll { 2 index 2 index 3 -2 roll put } for pop pop } bind def /AutoSizeY { 0.0 exch dtransform round idtransform exch pop } bind def /AutoSizeX { 0.0 dtransform exch round exch idtransform pop } bind def /AutoCellSize { AutoSizeY exch AutoSizeX exch } bind def /CheckPath { false { pop pop pop true exit} { pop pop pop true exit} { pop pop pop pop pop pop pop true exit} { pop true exit} pathforall } bind def /PatternFill { % patternCharacter /patternString 1 string def /cm mstore def patternMatrix setmatrix 1 1 AutoCellSize dup 0 eq { pop 1} if exch dup 0 eq { pop 1} if exch /patternSize exch 24.0 mul def /PatternSizeX exch 24.0 mul patternString length mul def /flaterror 0 def patternString FillPatternString gsave flaterror 1 add setflat flattenpath pathbbox grestore psy add flaterror add psy SnapToPattenGrid exch psx add flaterror add psx SnapToPattenGrid 3 -1 roll flaterror sub psy SnapToPattenGrid 4 -1 roll flaterror sub psx SnapToPattenGrid 4 2 roll pll 4 2 roll pll /llxsnap exch def /llysnap exch def /urxsnap exch def /urysnap exch def gsave useClip true eq {clip}{eoclip} ifelse newpath /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont llysnap patternSize urysnap { llxsnap exch moveto llxsnap PatternSizeX urxsnap { pop patternString show %currentpoint am } for } bind for grestore cm setmatrix } bind def % End 'PatternFill' /DefaultPatternFont { /cm mstore def patternMatrix setmatrix 1 1 AutoCellSize dup 0 eq { pop 1} if exch dup 0 eq { pop 1} if exch /psy exch iSizeY mul def /psx exch iSizeX mul def /patternDict 64 dict def patternDict begin /NotDef {} def /LiteDiagLines { iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] {pat} imagemask } bind def end /CustEncoding 256 array def 0 255 1 { CustEncoding exch /NotDef put } bind for CustEncoding 65 /LiteDiagLines put patternDict CustEncoding /PatternFont MakePatternFont /pathSegProc { strokepath CheckPath { 65 PatternFill newpath } if } bind def cm setmatrix } bind def /XRound { dup 3 -1 roll exch mul round exch div } bind def /RoundMatrix { /i 0 def dup { 100000.0 XRound 1 index exch i exch put /i i 1 add def } forall } bind def /GetBoxesRatio { 3 -1 roll sub 7 1 roll exch sub 6 1 roll 3 -1 roll sub 5 1 roll exch sub 4 1 roll 3 -1 roll div 3 1 roll exch div exch } bind def /T {792 exch sub} bind def /sx 0 def /sy 0 def /ex 0 def /ey 0 def /lw 0 def /siz 0 def /U {gsave 0 setlinecap /lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def fontkind plain eq { lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke } { currentdict /outlineFontSize known outlineFontSize 0 gt and { fontkind outline eq { /sy sy 0.0119444 siz mul sub def /ey ey 0.0119444 siz mul sub def gsave 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke grestore lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto strokepath 0.0119444 siz mul setlinewidth stroke } if fontkind shadow eq fontkind outlineshadow eq or { /sy sy 0.0358332 siz mul sub def /ey ey 0.0358332 siz mul sub def lw setlinewidth lw 2 div sx add sy lw 2 div sub moveto lw 2 div ex add ey lw 2 div sub lineto stroke gsave 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke grestore lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto strokepath 0.0119444 siz mul setlinewidth stroke } if } if } ifelse grestore} bind def /plain 1 def /outline 2 def /shadow 3 def /outlineshadow 4 def /fess { currentdict /outlineFontSize known { /outlineFontSize 2 index def } if findfont exch dup /siz exch def scalefont setfont } bind def /SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def /NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def /S { fontkind plain eq {neg moveto show} if fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if } bind def /F { /fontkind exch def fontkind plain eq {fess} if fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if } bind def /makeoutlinedict 15 dict def /makeoutlinefont { makeoutlinedict begin /uniqueid exch def /strokewidth exch def /newfontname exch def /basefontname exch def /basefontdict basefontname findfont def /numentries basefontdict maxlength 1 add def basefontdict /UniqueID known not {/numentries numentries 1 add def} if /outfontdict numentries dict def basefontdict { exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse }forall outfontdict /FontName newfontname put outfontdict /PaintType 2 put outfontdict /StrokeWidth strokewidth put outfontdict /UniqueID uniqueid put newfontname outfontdict definefont pop end }def /UID { findfont dup /UniqueID known {/UniqueID get 1 add} {pop 1} ifelse } def /OLF { dup /Outline 1000 62 div 4 -1 roll UID /outlineFontSize 5 index def makeoutlinefont /Outline findfont exch scalefont setfont } def /CopyEncoding { findfont /Encoding get dup length array /tarrayz exch def tarrayz 0 3 -1 roll putinterval tarrayz } bind def /Re-encode { dup length array copy /eap 0 def exch { dup type /integertype eq { /eap exch def } { 1 index exch eap exch put /eap eap 1 add def } ifelse } forall } bind def /EncodeFont { findfont dup length dict begin { 1 index /FID ne { def } { pop pop } ifelse } forall /FontName exch def /Encoding exch def FontName currentdict end definefont pop } bind def /clip2pathbbox { /magicNum linewidth 2 div 1 2 sqrt div mul def pathbbox /urymn exch magicNum add def /urxmn exch magicNum add def /llymn exch magicNum sub def /llxmn exch magicNum sub def newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto closepath clip newpath } bind def /Line { MAV /LC get length 0 ne { gsave newpath MAV /ArrowType get length 0 eq MAV /SD get length 0 eq and {2 setlinecap /UseClip {clip2pathbbox} def } {0 setlinecap /UseClip {} def } ifelse 0 792 translate 1 -1 scale CTM currentmatrix pop /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} {xStart yStart moveto xEnd yEnd lineto} ifelse linewidth setlinewidth SD strokepath CheckPath {LC PF ArrowType} if grestore } {pop pop pop pop pop} ifelse } bind def /CompensateForStroke { sin currentlinewidth mul exch cos currentlinewidth mul dup 0 translate 4 -1 roll exch 2.0 mul sub 3 1 roll 2.0 mul sub } bind def /arrowdict 10 dict def arrowdict begin /SwallowTail { newpath 0.0 0.0 moveto 1.0 -.5 lineto .666 0.0 lineto 1.0 .5 lineto closepath } bind def /Triangular { newpath 0.0 0.0 moveto 1.0 -.5 lineto 1.0 .5 lineto closepath } bind def /OpenTri { newpath 1.0 0.5 moveto 0.0 0.0 lineto 1.0 -0.5 lineto } bind def /ClosedTri { newpath 1.0 0.5 moveto 0.0 0.0 lineto 1.0 -0.5 lineto closepath } bind def /SlashBar { newpath 0.5 -.5 moveto -.5 0.5 lineto } bind def /Dot { newpath 0.5 0.0 moveto 0 0 1 0 360 arc closepath } bind def /ExtSlashBar { newpath 1.0 -.5 moveto 0.0 0.5 lineto } bind def end /ScaleArrowHead { 0 0 4 -2 roll 0 0 1 1 8 -4 roll GetBoxesRatio scale } bind def /DrawArrowHead { gsave [] 0 setdash currentpoint translate rotate { 4 copy gsave initmatrix 100 200 translate msave ScaleArrowHead pop arrowdict exch get exec mrestore strokepath 0 0 3 index 3 index pathbbox 8 4 roll GetBoxesRatio 4 2 roll grestore 3 index 1.0 exch sub 6 -1 roll { 2 index mul 0 translate }{ pop } ifelse msave ScaleArrowHead scale arrowdict exch get exec mrestore strokepath } { msave ScaleArrowHead arrowdict exch get exec mrestore } ifelse CheckPath { LC PF } if grestore } bind def /SR { pbox left get pbox top get moveto pbox right get pbox top get lineto pbox right get pbox bottom get lineto pbox left get pbox bottom get lineto closepath } bind def /RR1 { pbox top get pbox bottom get sub abs pbox left get pbox right get sub abs 2 copy lt { Min 2 div dup dup dup pbox left get add pbox left 3 -1 roll put pbox right get exch sub pbox right 3 -1 roll put pbox left get pbox bottom get moveto pbox right get 0 3 -1 roll 90 -90 arcn pbox left get 0 3 -1 roll -90 90 arcn closepath } { Min 2 div dup dup dup pbox bottom get exch sub pbox bottom 3 -1 roll put pbox top get add pbox top 3 -1 roll put pbox left get pbox bottom get moveto pbox left get add pbox top get 2 index 180 0 arc dup pbox left get add pbox bottom get 3 -1 roll 0 180 arc closepath } ifelse } bind def /RR2 { dup dup dup dup dup dup dup dup pbox top get add pbox top 3 -1 roll put pbox left get add pbox left 3 -1 roll put pbox bottom get exch sub pbox bottom 3 -1 roll put pbox right get exch sub pbox right 3 -1 roll put pbox bottom get add pbox left get exch moveto pbox right get pbox bottom get 3 -1 roll 90 0 arcn pbox right get pbox top get 3 -1 roll 0 270 arcn pbox left get pbox top get 3 -1 roll 270 180 arcn pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath } bind def /E { 1.415 setmiterlimit CM currentmatrix pop pbox right get pbox left get sub abs dup pbox bottom get pbox top get sub abs dup 3 -1 roll lt {exch dup 3 -1 roll exch div 1 exch} {dup 3 -1 roll exch div 1} ifelse scale 0 0 3 -1 roll 2 div 0 360 arc closepath CM setmatrix } bind def /StripFromFront { dup length 2 index sub 3 1 roll exch 3 -1 roll getinterval } bind def /MakePathArray { /k 0 def {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall k array /k 0 def {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} pathforall }bind def /MakeFlatPathArray { /k 0 def {/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall k array /k 0 def {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} { pop pop pop pop pop pop} {} pathforall }bind def /FractionalLine { 2 index sub .00001 mul exch 3 index sub .00001 mul 4 -1 roll add 3 1 roll add } bind def /calcLineLength { exch 4 -1 roll sub dup mul 3 1 roll exch sub dup mul add sqrt } bind def /InitTotalLineLength { /oldY exch def /oldX exch def theDash aload pop currentLineLength add setdash } bind def /AccumeLineLength { 3 copy pop 2 copy oldX oldY 4 2 roll calcLineLength /segmentLength exch def /currentLineLength currentLineLength segmentLength add def /oldY exch def /oldX exch def } bind def /DecumeLastLineLength { /currentLineLength currentLineLength segmentLength sub def } bind def /DrawFlattendSegment { /pointCount 2 def dup 0 lt { pop 0 } if fpc 3 1 roll 2 index 1 index gt { 2 copy get dup length dup 3 eq { pop dup 0 get exch 1 get 2 copy InitTotalLineLength m } { } ifelse } { pop 1 index } ifelse dup 1 add 3 index exch sub dup 10 gt { pop 10} if { 1 add 2 copy get aload pop AccumeLineLength exec } repeat 3 1 roll pop pop DecumeLastLineLength } bind def /IncFPC { fpc add /fpc exch def } bind def /DrawFlatPathArray { fpc 0 { dup 2 index 1 sub lt { flatPathArray exch newpath 1 sub DrawFlattendSegment gsave pathSegProc grestore newpath } { pop pop exit } ifelse } loop } bind def /RecordFirstSubSegment { closepathArray 0 pathArray 0 get put closepathArray 1 pathArray 0 get aload pop pop pathArray 1 get dup length 3 eq { aload pop pop } { newpath 0 0 moveto aload pop exec /segmentArray flattenpath MakeFlatPathArray def segmentArray 1 get aload pop pop } ifelse FractionalLine {lineto} 3 array astore put } bind def /AppendClosePath { closepathArray 0 get 2 {lineto} put flatPathArray fpc closepathArray 0 get put 1 IncFPC flatPathArray fpc closepathArray 1 get put 1 IncFPC } bind def /RecordCurrentDash { /theDash currentdash 2 array astore def /currentLineLength 0 def } bind def /PatternStroke { 0 setlinecap RecordCurrentDash /saveFlat currentflat def .5 setflat /pathArray MakePathArray def /closepathArray 2 array def /pathLength pathArray length def /flatPathArray 513 array def /currentLineLength 0 def /fpc 0 def pathArray pathLength 1 sub get length 1 eq { /usingClosepath true def RecordFirstSubSegment /pathLength pathLength 1 sub def } { /usingClosepath false def } ifelse 0 1 pathLength 1 sub { pathArray exch get dup length 3 eq { fpc 1 add 512 ge { DrawFlatPathArray fpc 2 ge { flatPathArray flatPathArray fpc 2 sub get 0 put flatPathArray flatPathArray fpc 1 sub get 1 put /fpc 2 def }{ /fpc 0 def } ifelse } if flatPathArray exch fpc exch put 1 IncFPC } { dup length 7 eq { newpath /nToStrip 0 def fpc 1 gt { flatPathArray fpc 2 sub get aload pop pop m flatPathArray fpc 1 sub get aload pop exec /nToStrip 2 def } { fpc 1 eq { flatPathArray fpc 1 sub get aload pop exec /nToStrip 2 def } if } ifelse aload pop exec /segmentArray flattenpath MakeFlatPathArray def /segmentArray nToStrip segmentArray StripFromFront def segmentArray length fpc add 512 lt { flatPathArray fpc segmentArray putinterval segmentArray length IncFPC } { DrawFlatPathArray fpc 1 gt { flatPathArray flatPathArray fpc 2 sub get 0 exch put flatPathArray flatPathArray fpc 1 sub get 1 exch put /fpc 2 def }{ /fpc 0 def } ifelse segmentArray length 512 lt { flatPathArray fpc segmentArray putinterval segmentArray length IncFPC } { segmentArray length /exitLoop false def 0 { 2 copy sub dup 500 gt { pop 500 } { /exitLoop true def } ifelse segmentArray 2 index 2 index getinterval flatPathArray fpc 3 -1 roll putinterval dup IncFPC add exitLoop { exit } { DrawFlatPathArray fpc 1 gt { flatPathArray flatPathArray fpc 2 sub get 0 exch put flatPathArray flatPathArray fpc 1 sub get 1 exch put /fpc 2 def }{ /fpc 0 def } ifelse } ifelse } loop } ifelse } ifelse } if } ifelse } for fpc 0 gt { usingClosepath { AppendClosePath } if DrawFlatPathArray } if saveFlat setflat } bind def /rampdelta { /len 0 3 -1 roll add def /i2 0 3 -1 roll add def /i1 0 3 -1 roll add def /nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def /rampPenW len nRampSteps div def rampColors i1 get aload pop c1 astore pop rampColors i2 get aload pop c2 astore pop c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put d aload pop } bind def /adddelta { d astore pop mycurrentrgbcolor c1 copy pop c1 0 get d 0 get add c2 0 3 -1 roll put c1 1 get d 1 get add c2 1 3 -1 roll put c1 2 get d 2 get add c2 2 3 -1 roll put c2 aload pop setrgbcolor c2 mycurrentrgbcolor copy pop } bind def /rampline { segbox ulx get rampPenW add segbox ulx 3 -1 roll put segbox llx get rampPenW add segbox llx 3 -1 roll put segbox ulx get segbox uly get moveto segbox llx get segbox lly get lineto delta aload pop adddelta stroke }bind def /slantrampseg { gsave newpath segbox ulx get segbox urx get sub abs rampdelta delta astore pop segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor rampPenW setlinewidth nRampSteps {rampline} repeat grestore }bind def /flipramp { rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put } bind def /leftrbox { rbox segbox copy pop rbox urx get rbox ulx get sub flipRatio mul dup segbox ulx get add segbox urx 3 -1 roll put segbox llx get add segbox lrx 3 -1 roll put } bind def /rightrbox { rbox segbox copy pop rbox urx get rbox ulx get sub flipRatio mul dup segbox ulx get add segbox ulx 3 -1 roll put segbox llx get add segbox llx 3 -1 roll put } bind def /drawslantramp { segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup segbox ulx get add segbox urx 3 -1 roll put segbox llx get add segbox lrx 3 -1 roll put segbox aload pop 0 0 1 slantrampseg segbox astore pop segbox ulx get add segbox ulx 3 -1 roll put segbox llx get add segbox llx 3 -1 roll put segbox urx get add segbox urx 3 -1 roll put segbox lrx get add segbox lrx 3 -1 roll put segbox aload pop 1 1 2 slantrampseg segbox astore pop segbox ulx get add segbox ulx 3 -1 roll put segbox llx get add segbox llx 3 -1 roll put segbox urx get add segbox urx 3 -1 roll put segbox lrx get add segbox lrx 3 -1 roll put 2 2 3 slantrampseg }bind def /tan { dup sin exch cos div }bind def /rampbox { pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put }bind def /LoadSegBox { 4 copy segbox llx 6 -1 roll put segbox lly 5 -1 roll put segbox lrx 4 -1 roll put segbox lry 6 -1 roll put segbox urx 5 -1 roll put segbox ury 3 -1 roll put segbox ulx 4 -1 roll put segbox uly 3 -1 roll put } bind def /TransToCenter { gsave flattenpath pathbbox grestore 2 index sub 2.0 div exch 3 index sub 2.0 div 4 -1 roll add 3 1 roll add translate } bind def /RotRampGrad { gsave TransToCenter -1.0 mul 180.0 add rotate flattenpath pathbbox clip newpath LoadSegBox flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and { /flipRatio 1.0 flipRatio sub def segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp } {drawslantramp} ifelse grestore } bind def /bbg { pbox exch get } bind def /DR { % Directional ramp /workingMatrix mstore def objectCord setmatrix flipramp gsave flattenpath pathbbox grestore pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put rampAngle RotRampGrad RF workingMatrix setmatrix }bind def /ramparc { gsave circum rampdelta delta astore pop /rampPenW 60.0 nRampSteps div def /ang1 exch rampAngle sub def /ang2 rampPenW ang1 add def rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth nRampSteps {ramparcseg}repeat grestore }bind def /ramparcseg { newpath rampcenter aload pop moveto rampcenter aload pop rampradius ang2 ang1 arcn fill /ang1 ang2 def /ang2 ang2 rampPenW add def delta aload pop adddelta }bind def /GetRadius { rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul add sqrt } bind def /circularRamp { rampbox /rampradius GetRadius def CalcCrcm flipramp 0 0 0 1 ramparc 1 60 1 2 ramparc 2 120 2 3 ramparc flipramp 0 180 0 1 ramparc 1 240 1 2 ramparc 2 300 2 3 ramparc }bind def /GetCircumf { 2.0 mul 3.1415926 mul } bind def /CalcCrcm { rampradius GetCircumf /circum exch 6.0 div def } bind def /CR { gsave clip MTC currentmatrix pop CTM setmatrix flattenpath pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put pbox left get pbox right get sub abs 2 div pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put pbox top get pbox bottom get sub abs 2 div pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put circularRamp MTC setmatrix grestore RF }bind def /SBR { gsave clip /workingMatrix mstore def objectCord setmatrix flattenpath /BaseBox pathbbox 4 array astore def /len BaseBox 2 get BaseBox 0 get sub dup mul BaseBox 3 get BaseBox 1 get sub dup mul add sqrt 12.0 div def /EndBox BaseBox aload pop 3 -1 roll sub 3 1 roll exch sub /dbx exch def /dby exch def BaseBox aload pop pop pop /blly exch def /bllx exch def sbox 0 get 100.0 div dby mul blly add sbox 1 get 100.0 div dbx mul bllx add sbox 2 get 100.0 div dby mul blly add sbox 3 get 100.0 div dbx mul bllx add exch 4 -2 roll exch 4 -2 roll 4 array astore def BaseBox EndBox ShapeBurst workingMatrix setmatrix grestore } bind def /GetBoxCenter { 2 index sub 2.0 div 3 -1 roll add 3 1 roll 1 index sub 2.0 div add exch } bind def /GetInterBox { /boxInter exch def 4 1 7 { -1 roll 7 index } for sub boxInter mul 8 -1 roll add 7 1 roll sub boxInter mul 7 -1 roll add 6 1 roll sub boxInter mul 6 -1 roll add 5 1 roll sub boxInter mul 5 -1 roll add 4 1 roll } bind def /GetBoxCenterDeltas { GetBoxCenter 6 2 roll GetBoxCenter 3 -1 roll exch sub 3 1 roll sub exch } bind def /GetBoxCornerDeltas { pop pop 4 2 roll pop pop 3 -1 roll sub 3 1 roll exch sub exch } bind def /getpath { /k 0 def {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall /pfa k array def /k 0 def {{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} {{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} {{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} {}pathforall }bind def /ShapeBurst { getpath newpath /SBERect exch 4 array copy def /SBBRect exch 4 array copy def /interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def /interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def 0 0 1 SBBRect interRect1 ShapeBurstSeg msave interRect1 0 get interRect1 1 get translate SBBRect aload pop interRect1 aload pop GetBoxesRatio scale SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate 1 1 2 interRect1 interRect2 ShapeBurstSeg mrestore msave interRect2 0 get interRect2 1 get translate SBBRect aload pop interRect2 aload pop GetBoxesRatio scale SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate 2 2 3 interRect2 SBERect ShapeBurstSeg mrestore } bind def /ShapeBurstSeg { /sbr1 exch 4 array copy def /sbr0 exch 4 array copy def /blx sbr0 0 get def /bly sbr0 1 get def len rampdelta delta astore pop sbr0 aload pop sbr1 aload pop GetBoxesRatio /ratioY exch def /ratioX exch def sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas /dlly exch nRampSteps div def /dllx exch nRampSteps div def /scaleStepX 1.0 ratioX sub nRampSteps div def /scaleStepY 1.0 ratioY sub nRampSteps div def /currentScaleX 1.0 scaleStepX sub def /currentScaleY 1.0 scaleStepY sub def /translationX blx dllx add def /translationY bly dlly add def /currentScaleX 1.0 def /currentScaleY 1.0 def /translationX blx def /translationY bly def rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor nRampSteps { msave translationX translationY translate currentScaleX currentScaleY scale blx -1.0 mul bly -1.0 mul translate pfa {aload pop exec} forall fill delta aload pop adddelta /translationX translationX dllx add def /translationY translationY dlly add def /currentScaleX currentScaleX scaleStepX sub def /currentScaleY currentScaleY scaleStepY sub def mrestore } repeat msave translationX translationY translate currentScaleX currentScaleY scale blx -1.0 mul bly -1.0 mul translate pfa {aload pop exec} forall fill mrestore } bind def initmsaverestore /tctm matrix currentmatrix def tctm RoundMatrix setmatrix /patternMatrix mstore def 10 setmiterlimit 2 setlinecap newpath % %tLayer % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {13.500 RR2} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 7.500 10.500 0.000 0.000 199.000 531.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 231.250 99.500 moveto /SwallowTail 14.687 10.574 false 173.059 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 210.750 102.000 229.871 99.668 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ } def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 146.000 110.000 279.500 93.500 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {13.500 RR2} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 213.000 11.500 0.000 0.000 199.000 531.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {} def /PC {} def 1.000 0 230.000 346.500 0.000 0.000 143.000 147.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {} def /PC {} def 1.000 0 230.000 65.500 0.000 0.000 143.000 147.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 312.000 139.250 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 259.000 139.250 0.000 0.000 8.000 8.000 rect %@EndOval %@BeginText save [ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef /guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla /hungarumlaut/ogonek/caron] StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 254.500 128.000 0.000 0.000 16.000 7.000 rect %@EndRect gsave 131.500 262.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) plain F /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -3.500 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 279.500 128.500 0.000 0.000 16.000 7.000 rect %@EndRect gsave 132.000 287.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (1) -3.000 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 307.500 128.500 0.000 0.000 16.000 7.000 rect %@EndRect gsave 132.000 315.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (2) -3.000 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 286.000 411.500 0.000 0.000 7.500 8.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 313.500 411.000 0.000 0.000 7.500 7.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 259.500 411.500 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 282.500 426.750 0.000 0.000 16.000 7.000 rect %@EndRect gsave 430.250 290.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (1) -2.750 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 310.000 426.250 0.000 0.000 16.000 8.000 rect %@EndRect gsave 430.250 318.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (2) -3.250 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 254.500 427.250 0.000 0.000 16.000 7.000 rect %@EndRect gsave 430.750 262.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -3.250 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ } def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 281.500 298.500 414.500 262.500 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ } def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 281.500 298.500 415.500 289.500 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ } def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 281.500 298.500 413.500 316.500 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 146.500 263.500 moveto /SwallowTail 14.687 10.574 false 374.160 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 147.846 263.839 285.500 298.500 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 147.500 288.500 moveto /SwallowTail 14.687 10.574 false 364.294 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 148.885 288.603 281.500 298.500 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 148.000 343.000 moveto /SwallowTail 14.687 10.574 false 341.723 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 149.318 342.563 276.500 300.500 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 331.250 284.500 moveto /SwallowTail 14.687 10.574 false 347.759 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 332.607 284.204 354.250 279.500 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 330.750 294.500 moveto /SwallowTail 14.687 10.574 false 357.163 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 332.137 294.430 350.750 293.500 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 328.750 305.077 moveto /SwallowTail 14.687 10.574 false 367.879 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 330.125 305.266 357.750 309.077 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 260.125 442.250 0.000 0.000 4.625 13.000 rect %@EndRect % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 269.750 274.500 0.000 0.000 5.285 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 274.375 274.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 279.125 274.500 0.000 0.000 4.625 13.000 rect %@EndRect % %tfEndGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 316.125 442.250 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 288.125 442.250 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 146.500 315.500 moveto /SwallowTail 14.687 10.574 false 352.979 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 147.878 315.329 280.000 299.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 285.000 139.250 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 340.000 139.250 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 336.500 128.000 0.000 0.000 16.000 7.000 rect %@EndRect gsave 131.500 344.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (3) -3.500 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 382.000 114.727 0.000 0.000 16.000 43.544 rect %@EndRect gsave 136.500 390.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (L) -21.772 4.000 S (c) -13.220 4.000 S (o) -7.006 4.000 S (m) -0.006 4.000 S (m) 10.882 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 382.000 401.727 0.000 0.000 16.000 44.331 rect %@EndRect gsave 423.893 390.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (R) -21.772 4.000 S (c) -12.434 4.000 S (o) -6.220 4.000 S (m) 0.779 4.000 S (m) 11.668 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {} def /PC {} def 1.000 0 24.000 346.500 0.000 0.000 143.000 147.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {} def /PC {} def 1.000 0 24.000 65.500 0.000 0.000 143.000 147.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 106.000 139.250 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 53.000 139.250 0.000 0.000 8.000 8.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 48.500 128.000 0.000 0.000 16.000 7.000 rect %@EndRect gsave 131.500 56.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -3.500 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 73.500 128.500 0.000 0.000 16.000 7.000 rect %@EndRect gsave 132.000 81.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (1) -3.000 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 101.500 128.500 0.000 0.000 16.000 7.000 rect %@EndRect gsave 132.000 109.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (2) -3.000 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 80.000 411.500 0.000 0.000 7.500 8.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 107.500 411.000 0.000 0.000 7.500 7.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 53.500 411.500 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 76.500 426.750 0.000 0.000 16.000 7.000 rect %@EndRect gsave 430.250 84.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (1) -2.750 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 104.000 426.250 0.000 0.000 16.000 8.000 rect %@EndRect gsave 430.250 112.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (2) -3.250 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 48.500 427.250 0.000 0.000 16.000 7.000 rect %@EndRect gsave 430.750 56.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -3.250 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 414.500 57.500 moveto /SwallowTail 14.687 10.574 false 164.866 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 281.500 93.500 413.159 57.862 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 415.500 84.500 moveto /SwallowTail 14.687 10.574 false 176.170 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 281.500 93.500 414.114 84.593 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 413.500 111.500 moveto /SwallowTail 14.687 10.574 false 187.778 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 281.500 93.500 412.123 111.312 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ } def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 146.500 58.500 285.500 93.500 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ } def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 147.500 83.500 281.500 93.500 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ } def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 148.000 138.000 276.500 95.500 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 229.250 89.500 moveto /SwallowTail 14.687 10.574 false 183.379 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 203.750 88.000 227.863 89.418 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 228.250 111.577 moveto /SwallowTail 14.687 10.574 false 161.576 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 207.250 118.577 226.932 112.016 Line %@EndLine % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 44.000 443.250 0.000 0.000 5.285 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 48.625 443.250 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 53.250 443.250 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 57.875 443.250 0.000 0.000 4.625 13.000 rect %@EndRect % %tfEndGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 79.958 109.250 0.000 0.000 4.625 13.000 rect %@EndRect % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 63.750 274.500 0.000 0.000 5.285 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 68.375 274.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 73.000 274.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 77.625 274.500 0.000 0.000 4.625 13.000 rect %@EndRect % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 101.750 443.250 0.000 0.000 5.285 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 106.375 443.250 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 111.000 443.250 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 115.625 443.250 0.000 0.000 4.625 13.000 rect %@EndRect % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 73.250 443.250 0.000 0.000 5.285 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 77.875 443.250 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 82.500 443.250 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 87.125 443.250 0.000 0.000 4.625 13.000 rect %@EndRect % %tfEndGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 135.624 109.250 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 107.791 109.250 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 79.000 139.250 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 134.000 139.250 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 130.500 128.000 0.000 0.000 16.000 7.000 rect %@EndRect gsave 131.500 138.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (3) -3.500 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 176.000 114.727 0.000 0.000 16.000 43.544 rect %@EndRect gsave 136.500 184.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (L) -21.772 4.000 S (c) -13.220 4.000 S (o) -7.006 4.000 S (m) -0.006 4.000 S (m) 10.882 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 176.000 401.727 0.000 0.000 16.000 44.331 rect %@EndRect gsave 423.893 184.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (R) -21.772 4.000 S (c) -12.434 4.000 S (o) -6.220 4.000 S (m) 0.779 4.000 S (m) 11.668 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 52.125 109.250 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 229.250 79.500 moveto /SwallowTail 14.687 10.574 false 194.050 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 203.250 73.000 227.902 79.163 Line %@EndLine % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 253.500 105.500 0.000 0.000 5.285 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 258.125 105.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 262.875 105.500 0.000 0.000 4.625 13.000 rect %@EndRect % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 281.500 105.500 0.000 0.000 5.285 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 286.125 105.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 290.875 105.500 0.000 0.000 4.625 13.000 rect %@EndRect % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 337.500 105.500 0.000 0.000 5.285 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 342.125 105.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 346.875 105.500 0.000 0.000 4.625 13.000 rect %@EndRect % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 309.500 105.500 0.000 0.000 5.285 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 314.125 105.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 318.875 105.500 0.000 0.000 4.625 13.000 rect %@EndRect % %tfEndGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 293.500 277.500 0.000 0.000 8.000 8.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 87.500 277.500 0.000 0.000 8.000 8.000 rect %@EndOval % %tLayer % restore end %%EndDocument @endspecial 75 1143 a(Figure)17 b(6.3:)k(In)o(tercomm)o(unicator)16 b(allgather.)24 b(The)17 b(fo)q(cus)f(of)g(data)g(to)g(one)g(pro)q (cess)h(is)g(represen)o(ted,)75 1199 y(not)e(mandated)g(b)o(y)g(the)g (seman)o(tics.)20 b(The)c(t)o(w)o(o)e(phases)h(do)g(allgathers)h(in)g (b)q(oth)f(directions.)375 2412 y @beginspecial 5.500000 @llx 386 @lly 537.500000 @urx 791.500000 @ury 2880 @rwi @setspecial %%BeginDocument: figures/collective-reduce_scatter.eps /MAV 300 dict def MAV begin /useClip true def /top 0 def /left 1 def /bottom 2 def /right 3 def /CM 6 array def /CTM 6 array def /CTMR 6 array def /MTC 6 array def /blimit 1500 def /bcnt 0 def /rbox 8 array def /segbox 8 array def /bbox1 4 array def /c1 3 array def /c2 3 array def /d 3 array def /delta 3 array def /mycurrentrgbcolor 3 array def /ulx 0 def /uly 1 def /llx 2 def /lly 3 def /urx 4 def /ury 5 def /lrx 6 def /lry 7 def /sp [0 0] def /ep [0 0] def /bbox 4 array def /pbox 4 array def /scrnProc currentscreen 3 1 roll pop pop def /currentcolorscreen where { begin currentcolorscreen end 3 1 roll pop pop 4 2 roll pop pop 5 -2 roll pop pop 6 -2 roll pop pop /kProc exch def /bProc exch def /gProc exch def /rProc exch def } if /Max {2 copy gt {pop}{exch pop} ifelse} bind def /Min {2 copy lt {pop}{exch pop} ifelse} bind def /cellPenW 72.0 /currentcolorscreen where {begin currentcolorscreen end pop pop 10 1 roll pop pop 8 1 roll pop pop 6 1 roll pop pop Max Max Max } {currentscreen pop pop} ifelse div 2.0 div def /rect { /saveobj save def R PC PF LC SS saveobj restore } bind def /R { newpath pbox astore pop 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate /objectCord mstore def pbox right get 2 div dup pbox left get exch sub pbox left 3 -1 roll put dup pbox right 3 -1 roll put pbox bottom get 2 div dup pbox top get exch sub pbox top 3 -1 roll put dup pbox bottom 3 -1 roll put translate CTM currentmatrix pop 57.3 mul rotate RT } bind def /SaveScreenBW { currentscreen /scrnProc exch def /scrnAngle exch def /scrnFreq exch def } bind def /RestoreScreenBW { scrnFreq scrnAngle MAV /scrnProc get setscreen } bind def /SetFreqAngleBW { currentscreen 3 1 roll pop pop setscreen } bind def /SaveScreenColor { currentcolorscreen /grayProc exch def /grayAngle exch def /grayFreq exch def /bProc exch def /bAngle exch def /bFreq exch def /gProc exch def /gAngle exch def /gFreq exch def /rProc exch def /rAngle exch def /rFreq exch def } bind def /RestoreColorScreen { rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen } bind def /SetFreqAngleColor { currentcolorscreen 3 1 roll pop pop 4 2 roll pop pop 5 -2 roll pop pop 6 -2 roll pop pop 4 1 roll 6 1 roll 8 1 roll 10 1 roll setcolorscreen } bind def /initmsaverestore { userdict begin /mdict 10 dict def mdict begin /mindex -1 def /mstacksize 25 def /mstack mstacksize array def /incmindex { /mindex mindex 1 add def } bind def /decmindex { /mindex mindex 1 sub def } bind def /checkmindex { mindex 0 lt { (%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' ) print flush stop } { mindex mstacksize ge { (%ERROR: msave/mrestore stack overflow: Offending command 'msave' ) print flush stop } if } ifelse } bind def /mpush { incmindex checkmindex mstack mindex 3 -1 roll put } bind def /mpop { checkmindex mstack mindex get decmindex } bind def end end } bind def /msave { mdict begin matrix currentmatrix mpush end } bind def /mrestore { mdict begin mpop setmatrix end } bind def /msavelevel { mdict begin mindex 1 add end } bind def /mstore { matrix currentmatrix } bind def /AutoSizeY { 0 0 pl dup 3 1 roll 4 -1 roll add pl exch pop exch sub } bind def /pl { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform } bind def /pll { transform round exch round exch itransform } bind def /pr { dtransform round exch round exch idtransform } bind def /m { pl moveto } bind def /l { pl lineto } bind def /c { pl curveto } bind def /rm { pr rmoveto } bind def /rl { pr rlineto } bind def /ar { 5 -2 roll pl 5 2 roll arc } bind def /an { 5 -2 roll pl 5 2 roll arcn } bind def /MakePatternFont { /FontDict 20 dict def FontDict begin /FontName exch def /Encoding exch def /FontMatrix [1 0 0 1 0 0 ] def /FontType 3 def /FontBBox [ 0 0 1 1 ] def /PatternDict exch def /RenderPattern { patternDict exch get exec } bind def /BuildChar { exch begin 1 0 0 0 1 1 setcachedevice Encoding exch get RenderPattern end } bind def FontName FontDict definefont pop end } bind def /SnapToPattenGrid { exch dup 0 lt { 1 index sub } if 1 index div truncate mul } bind def /FillPatternString { dup length 1 sub 0 1 3 -1 roll { 2 index 2 index 3 -2 roll put } for pop pop } bind def /AutoSizeY { 0.0 exch dtransform round idtransform exch pop } bind def /AutoSizeX { 0.0 dtransform exch round exch idtransform pop } bind def /AutoCellSize { AutoSizeY exch AutoSizeX exch } bind def /CheckPath { false { pop pop pop true exit} { pop pop pop true exit} { pop pop pop pop pop pop pop true exit} { pop true exit} pathforall } bind def /PatternFill { % patternCharacter /patternString 1 string def /cm mstore def patternMatrix setmatrix 1 1 AutoCellSize dup 0 eq { pop 1} if exch dup 0 eq { pop 1} if exch /patternSize exch 24.0 mul def /PatternSizeX exch 24.0 mul patternString length mul def /flaterror 0 def patternString FillPatternString gsave flaterror 1 add setflat flattenpath pathbbox grestore psy add flaterror add psy SnapToPattenGrid exch psx add flaterror add psx SnapToPattenGrid 3 -1 roll flaterror sub psy SnapToPattenGrid 4 -1 roll flaterror sub psx SnapToPattenGrid 4 2 roll pll 4 2 roll pll /llxsnap exch def /llysnap exch def /urxsnap exch def /urysnap exch def gsave useClip true eq {clip}{eoclip} ifelse newpath /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont llysnap patternSize urysnap { llxsnap exch moveto llxsnap PatternSizeX urxsnap { pop patternString show %currentpoint am } for } bind for grestore cm setmatrix } bind def % End 'PatternFill' /DefaultPatternFont { /cm mstore def patternMatrix setmatrix 1 1 AutoCellSize dup 0 eq { pop 1} if exch dup 0 eq { pop 1} if exch /psy exch iSizeY mul def /psx exch iSizeX mul def /patternDict 64 dict def patternDict begin /NotDef {} def /LiteDiagLines { iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] {pat} imagemask } bind def end /CustEncoding 256 array def 0 255 1 { CustEncoding exch /NotDef put } bind for CustEncoding 65 /LiteDiagLines put patternDict CustEncoding /PatternFont MakePatternFont /pathSegProc { strokepath CheckPath { 65 PatternFill newpath } if } bind def cm setmatrix } bind def /XRound { dup 3 -1 roll exch mul round exch div } bind def /RoundMatrix { /i 0 def dup { 100000.0 XRound 1 index exch i exch put /i i 1 add def } forall } bind def /GetBoxesRatio { 3 -1 roll sub 7 1 roll exch sub 6 1 roll 3 -1 roll sub 5 1 roll exch sub 4 1 roll 3 -1 roll div 3 1 roll exch div exch } bind def /T {792 exch sub} bind def /sx 0 def /sy 0 def /ex 0 def /ey 0 def /lw 0 def /siz 0 def /U {gsave 0 setlinecap /lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def fontkind plain eq { lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke } { currentdict /outlineFontSize known outlineFontSize 0 gt and { fontkind outline eq { /sy sy 0.0119444 siz mul sub def /ey ey 0.0119444 siz mul sub def gsave 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke grestore lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto strokepath 0.0119444 siz mul setlinewidth stroke } if fontkind shadow eq fontkind outlineshadow eq or { /sy sy 0.0358332 siz mul sub def /ey ey 0.0358332 siz mul sub def lw setlinewidth lw 2 div sx add sy lw 2 div sub moveto lw 2 div ex add ey lw 2 div sub lineto stroke gsave 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke grestore lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto strokepath 0.0119444 siz mul setlinewidth stroke } if } if } ifelse grestore} bind def /plain 1 def /outline 2 def /shadow 3 def /outlineshadow 4 def /fess { currentdict /outlineFontSize known { /outlineFontSize 2 index def } if findfont exch dup /siz exch def scalefont setfont } bind def /SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def /NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def /S { fontkind plain eq {neg moveto show} if fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if } bind def /F { /fontkind exch def fontkind plain eq {fess} if fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if } bind def /makeoutlinedict 15 dict def /makeoutlinefont { makeoutlinedict begin /uniqueid exch def /strokewidth exch def /newfontname exch def /basefontname exch def /basefontdict basefontname findfont def /numentries basefontdict maxlength 1 add def basefontdict /UniqueID known not {/numentries numentries 1 add def} if /outfontdict numentries dict def basefontdict { exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse }forall outfontdict /FontName newfontname put outfontdict /PaintType 2 put outfontdict /StrokeWidth strokewidth put outfontdict /UniqueID uniqueid put newfontname outfontdict definefont pop end }def /UID { findfont dup /UniqueID known {/UniqueID get 1 add} {pop 1} ifelse } def /OLF { dup /Outline 1000 62 div 4 -1 roll UID /outlineFontSize 5 index def makeoutlinefont /Outline findfont exch scalefont setfont } def /CopyEncoding { findfont /Encoding get dup length array /tarrayz exch def tarrayz 0 3 -1 roll putinterval tarrayz } bind def /Re-encode { dup length array copy /eap 0 def exch { dup type /integertype eq { /eap exch def } { 1 index exch eap exch put /eap eap 1 add def } ifelse } forall } bind def /EncodeFont { findfont dup length dict begin { 1 index /FID ne { def } { pop pop } ifelse } forall /FontName exch def /Encoding exch def FontName currentdict end definefont pop } bind def /clip2pathbbox { /magicNum linewidth 2 div 1 2 sqrt div mul def pathbbox /urymn exch magicNum add def /urxmn exch magicNum add def /llymn exch magicNum sub def /llxmn exch magicNum sub def newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto closepath clip newpath } bind def /Line { MAV /LC get length 0 ne { gsave newpath MAV /ArrowType get length 0 eq MAV /SD get length 0 eq and {2 setlinecap /UseClip {clip2pathbbox} def } {0 setlinecap /UseClip {} def } ifelse 0 792 translate 1 -1 scale CTM currentmatrix pop /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} {xStart yStart moveto xEnd yEnd lineto} ifelse linewidth setlinewidth SD strokepath CheckPath {LC PF ArrowType} if grestore } {pop pop pop pop pop} ifelse } bind def /CompensateForStroke { sin currentlinewidth mul exch cos currentlinewidth mul dup 0 translate 4 -1 roll exch 2.0 mul sub 3 1 roll 2.0 mul sub } bind def /arrowdict 10 dict def arrowdict begin /SwallowTail { newpath 0.0 0.0 moveto 1.0 -.5 lineto .666 0.0 lineto 1.0 .5 lineto closepath } bind def /Triangular { newpath 0.0 0.0 moveto 1.0 -.5 lineto 1.0 .5 lineto closepath } bind def /OpenTri { newpath 1.0 0.5 moveto 0.0 0.0 lineto 1.0 -0.5 lineto } bind def /ClosedTri { newpath 1.0 0.5 moveto 0.0 0.0 lineto 1.0 -0.5 lineto closepath } bind def /SlashBar { newpath 0.5 -.5 moveto -.5 0.5 lineto } bind def /Dot { newpath 0.5 0.0 moveto 0 0 1 0 360 arc closepath } bind def /ExtSlashBar { newpath 1.0 -.5 moveto 0.0 0.5 lineto } bind def end /ScaleArrowHead { 0 0 4 -2 roll 0 0 1 1 8 -4 roll GetBoxesRatio scale } bind def /DrawArrowHead { gsave [] 0 setdash currentpoint translate rotate { 4 copy gsave initmatrix 100 200 translate msave ScaleArrowHead pop arrowdict exch get exec mrestore strokepath 0 0 3 index 3 index pathbbox 8 4 roll GetBoxesRatio 4 2 roll grestore 3 index 1.0 exch sub 6 -1 roll { 2 index mul 0 translate }{ pop } ifelse msave ScaleArrowHead scale arrowdict exch get exec mrestore strokepath } { msave ScaleArrowHead arrowdict exch get exec mrestore } ifelse CheckPath { LC PF } if grestore } bind def /SR { pbox left get pbox top get moveto pbox right get pbox top get lineto pbox right get pbox bottom get lineto pbox left get pbox bottom get lineto closepath } bind def /RR1 { pbox top get pbox bottom get sub abs pbox left get pbox right get sub abs 2 copy lt { Min 2 div dup dup dup pbox left get add pbox left 3 -1 roll put pbox right get exch sub pbox right 3 -1 roll put pbox left get pbox bottom get moveto pbox right get 0 3 -1 roll 90 -90 arcn pbox left get 0 3 -1 roll -90 90 arcn closepath } { Min 2 div dup dup dup pbox bottom get exch sub pbox bottom 3 -1 roll put pbox top get add pbox top 3 -1 roll put pbox left get pbox bottom get moveto pbox left get add pbox top get 2 index 180 0 arc dup pbox left get add pbox bottom get 3 -1 roll 0 180 arc closepath } ifelse } bind def /RR2 { dup dup dup dup dup dup dup dup pbox top get add pbox top 3 -1 roll put pbox left get add pbox left 3 -1 roll put pbox bottom get exch sub pbox bottom 3 -1 roll put pbox right get exch sub pbox right 3 -1 roll put pbox bottom get add pbox left get exch moveto pbox right get pbox bottom get 3 -1 roll 90 0 arcn pbox right get pbox top get 3 -1 roll 0 270 arcn pbox left get pbox top get 3 -1 roll 270 180 arcn pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath } bind def /E { 1.415 setmiterlimit CM currentmatrix pop pbox right get pbox left get sub abs dup pbox bottom get pbox top get sub abs dup 3 -1 roll lt {exch dup 3 -1 roll exch div 1 exch} {dup 3 -1 roll exch div 1} ifelse scale 0 0 3 -1 roll 2 div 0 360 arc closepath CM setmatrix } bind def /StripFromFront { dup length 2 index sub 3 1 roll exch 3 -1 roll getinterval } bind def /MakePathArray { /k 0 def {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall k array /k 0 def {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} pathforall }bind def /MakeFlatPathArray { /k 0 def {/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall k array /k 0 def {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} { pop pop pop pop pop pop} {} pathforall }bind def /FractionalLine { 2 index sub .00001 mul exch 3 index sub .00001 mul 4 -1 roll add 3 1 roll add } bind def /calcLineLength { exch 4 -1 roll sub dup mul 3 1 roll exch sub dup mul add sqrt } bind def /InitTotalLineLength { /oldY exch def /oldX exch def theDash aload pop currentLineLength add setdash } bind def /AccumeLineLength { 3 copy pop 2 copy oldX oldY 4 2 roll calcLineLength /segmentLength exch def /currentLineLength currentLineLength segmentLength add def /oldY exch def /oldX exch def } bind def /DecumeLastLineLength { /currentLineLength currentLineLength segmentLength sub def } bind def /DrawFlattendSegment { /pointCount 2 def dup 0 lt { pop 0 } if fpc 3 1 roll 2 index 1 index gt { 2 copy get dup length dup 3 eq { pop dup 0 get exch 1 get 2 copy InitTotalLineLength m } { } ifelse } { pop 1 index } ifelse dup 1 add 3 index exch sub dup 10 gt { pop 10} if { 1 add 2 copy get aload pop AccumeLineLength exec } repeat 3 1 roll pop pop DecumeLastLineLength } bind def /IncFPC { fpc add /fpc exch def } bind def /DrawFlatPathArray { fpc 0 { dup 2 index 1 sub lt { flatPathArray exch newpath 1 sub DrawFlattendSegment gsave pathSegProc grestore newpath } { pop pop exit } ifelse } loop } bind def /RecordFirstSubSegment { closepathArray 0 pathArray 0 get put closepathArray 1 pathArray 0 get aload pop pop pathArray 1 get dup length 3 eq { aload pop pop } { newpath 0 0 moveto aload pop exec /segmentArray flattenpath MakeFlatPathArray def segmentArray 1 get aload pop pop } ifelse FractionalLine {lineto} 3 array astore put } bind def /AppendClosePath { closepathArray 0 get 2 {lineto} put flatPathArray fpc closepathArray 0 get put 1 IncFPC flatPathArray fpc closepathArray 1 get put 1 IncFPC } bind def /RecordCurrentDash { /theDash currentdash 2 array astore def /currentLineLength 0 def } bind def /PatternStroke { 0 setlinecap RecordCurrentDash /saveFlat currentflat def .5 setflat /pathArray MakePathArray def /closepathArray 2 array def /pathLength pathArray length def /flatPathArray 513 array def /currentLineLength 0 def /fpc 0 def pathArray pathLength 1 sub get length 1 eq { /usingClosepath true def RecordFirstSubSegment /pathLength pathLength 1 sub def } { /usingClosepath false def } ifelse 0 1 pathLength 1 sub { pathArray exch get dup length 3 eq { fpc 1 add 512 ge { DrawFlatPathArray fpc 2 ge { flatPathArray flatPathArray fpc 2 sub get 0 put flatPathArray flatPathArray fpc 1 sub get 1 put /fpc 2 def }{ /fpc 0 def } ifelse } if flatPathArray exch fpc exch put 1 IncFPC } { dup length 7 eq { newpath /nToStrip 0 def fpc 1 gt { flatPathArray fpc 2 sub get aload pop pop m flatPathArray fpc 1 sub get aload pop exec /nToStrip 2 def } { fpc 1 eq { flatPathArray fpc 1 sub get aload pop exec /nToStrip 2 def } if } ifelse aload pop exec /segmentArray flattenpath MakeFlatPathArray def /segmentArray nToStrip segmentArray StripFromFront def segmentArray length fpc add 512 lt { flatPathArray fpc segmentArray putinterval segmentArray length IncFPC } { DrawFlatPathArray fpc 1 gt { flatPathArray flatPathArray fpc 2 sub get 0 exch put flatPathArray flatPathArray fpc 1 sub get 1 exch put /fpc 2 def }{ /fpc 0 def } ifelse segmentArray length 512 lt { flatPathArray fpc segmentArray putinterval segmentArray length IncFPC } { segmentArray length /exitLoop false def 0 { 2 copy sub dup 500 gt { pop 500 } { /exitLoop true def } ifelse segmentArray 2 index 2 index getinterval flatPathArray fpc 3 -1 roll putinterval dup IncFPC add exitLoop { exit } { DrawFlatPathArray fpc 1 gt { flatPathArray flatPathArray fpc 2 sub get 0 exch put flatPathArray flatPathArray fpc 1 sub get 1 exch put /fpc 2 def }{ /fpc 0 def } ifelse } ifelse } loop } ifelse } ifelse } if } ifelse } for fpc 0 gt { usingClosepath { AppendClosePath } if DrawFlatPathArray } if saveFlat setflat } bind def /rampdelta { /len 0 3 -1 roll add def /i2 0 3 -1 roll add def /i1 0 3 -1 roll add def /nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def /rampPenW len nRampSteps div def rampColors i1 get aload pop c1 astore pop rampColors i2 get aload pop c2 astore pop c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put d aload pop } bind def /adddelta { d astore pop mycurrentrgbcolor c1 copy pop c1 0 get d 0 get add c2 0 3 -1 roll put c1 1 get d 1 get add c2 1 3 -1 roll put c1 2 get d 2 get add c2 2 3 -1 roll put c2 aload pop setrgbcolor c2 mycurrentrgbcolor copy pop } bind def /rampline { segbox ulx get rampPenW add segbox ulx 3 -1 roll put segbox llx get rampPenW add segbox llx 3 -1 roll put segbox ulx get segbox uly get moveto segbox llx get segbox lly get lineto delta aload pop adddelta stroke }bind def /slantrampseg { gsave newpath segbox ulx get segbox urx get sub abs rampdelta delta astore pop segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor rampPenW setlinewidth nRampSteps {rampline} repeat grestore }bind def /flipramp { rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put } bind def /leftrbox { rbox segbox copy pop rbox urx get rbox ulx get sub flipRatio mul dup segbox ulx get add segbox urx 3 -1 roll put segbox llx get add segbox lrx 3 -1 roll put } bind def /rightrbox { rbox segbox copy pop rbox urx get rbox ulx get sub flipRatio mul dup segbox ulx get add segbox ulx 3 -1 roll put segbox llx get add segbox llx 3 -1 roll put } bind def /drawslantramp { segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup segbox ulx get add segbox urx 3 -1 roll put segbox llx get add segbox lrx 3 -1 roll put segbox aload pop 0 0 1 slantrampseg segbox astore pop segbox ulx get add segbox ulx 3 -1 roll put segbox llx get add segbox llx 3 -1 roll put segbox urx get add segbox urx 3 -1 roll put segbox lrx get add segbox lrx 3 -1 roll put segbox aload pop 1 1 2 slantrampseg segbox astore pop segbox ulx get add segbox ulx 3 -1 roll put segbox llx get add segbox llx 3 -1 roll put segbox urx get add segbox urx 3 -1 roll put segbox lrx get add segbox lrx 3 -1 roll put 2 2 3 slantrampseg }bind def /tan { dup sin exch cos div }bind def /rampbox { pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put }bind def /LoadSegBox { 4 copy segbox llx 6 -1 roll put segbox lly 5 -1 roll put segbox lrx 4 -1 roll put segbox lry 6 -1 roll put segbox urx 5 -1 roll put segbox ury 3 -1 roll put segbox ulx 4 -1 roll put segbox uly 3 -1 roll put } bind def /TransToCenter { gsave flattenpath pathbbox grestore 2 index sub 2.0 div exch 3 index sub 2.0 div 4 -1 roll add 3 1 roll add translate } bind def /RotRampGrad { gsave TransToCenter -1.0 mul 180.0 add rotate flattenpath pathbbox clip newpath LoadSegBox flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and { /flipRatio 1.0 flipRatio sub def segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp } {drawslantramp} ifelse grestore } bind def /bbg { pbox exch get } bind def /DR { % Directional ramp /workingMatrix mstore def objectCord setmatrix flipramp gsave flattenpath pathbbox grestore pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put rampAngle RotRampGrad RF workingMatrix setmatrix }bind def /ramparc { gsave circum rampdelta delta astore pop /rampPenW 60.0 nRampSteps div def /ang1 exch rampAngle sub def /ang2 rampPenW ang1 add def rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth nRampSteps {ramparcseg}repeat grestore }bind def /ramparcseg { newpath rampcenter aload pop moveto rampcenter aload pop rampradius ang2 ang1 arcn fill /ang1 ang2 def /ang2 ang2 rampPenW add def delta aload pop adddelta }bind def /GetRadius { rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul add sqrt } bind def /circularRamp { rampbox /rampradius GetRadius def CalcCrcm flipramp 0 0 0 1 ramparc 1 60 1 2 ramparc 2 120 2 3 ramparc flipramp 0 180 0 1 ramparc 1 240 1 2 ramparc 2 300 2 3 ramparc }bind def /GetCircumf { 2.0 mul 3.1415926 mul } bind def /CalcCrcm { rampradius GetCircumf /circum exch 6.0 div def } bind def /CR { gsave clip MTC currentmatrix pop CTM setmatrix flattenpath pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put pbox left get pbox right get sub abs 2 div pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put pbox top get pbox bottom get sub abs 2 div pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put circularRamp MTC setmatrix grestore RF }bind def /SBR { gsave clip /workingMatrix mstore def objectCord setmatrix flattenpath /BaseBox pathbbox 4 array astore def /len BaseBox 2 get BaseBox 0 get sub dup mul BaseBox 3 get BaseBox 1 get sub dup mul add sqrt 12.0 div def /EndBox BaseBox aload pop 3 -1 roll sub 3 1 roll exch sub /dbx exch def /dby exch def BaseBox aload pop pop pop /blly exch def /bllx exch def sbox 0 get 100.0 div dby mul blly add sbox 1 get 100.0 div dbx mul bllx add sbox 2 get 100.0 div dby mul blly add sbox 3 get 100.0 div dbx mul bllx add exch 4 -2 roll exch 4 -2 roll 4 array astore def BaseBox EndBox ShapeBurst workingMatrix setmatrix grestore } bind def /GetBoxCenter { 2 index sub 2.0 div 3 -1 roll add 3 1 roll 1 index sub 2.0 div add exch } bind def /GetInterBox { /boxInter exch def 4 1 7 { -1 roll 7 index } for sub boxInter mul 8 -1 roll add 7 1 roll sub boxInter mul 7 -1 roll add 6 1 roll sub boxInter mul 6 -1 roll add 5 1 roll sub boxInter mul 5 -1 roll add 4 1 roll } bind def /GetBoxCenterDeltas { GetBoxCenter 6 2 roll GetBoxCenter 3 -1 roll exch sub 3 1 roll sub exch } bind def /GetBoxCornerDeltas { pop pop 4 2 roll pop pop 3 -1 roll sub 3 1 roll exch sub exch } bind def /getpath { /k 0 def {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall /pfa k array def /k 0 def {{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} {{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} {{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} {}pathforall }bind def /ShapeBurst { getpath newpath /SBERect exch 4 array copy def /SBBRect exch 4 array copy def /interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def /interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def 0 0 1 SBBRect interRect1 ShapeBurstSeg msave interRect1 0 get interRect1 1 get translate SBBRect aload pop interRect1 aload pop GetBoxesRatio scale SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate 1 1 2 interRect1 interRect2 ShapeBurstSeg mrestore msave interRect2 0 get interRect2 1 get translate SBBRect aload pop interRect2 aload pop GetBoxesRatio scale SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate 2 2 3 interRect2 SBERect ShapeBurstSeg mrestore } bind def /ShapeBurstSeg { /sbr1 exch 4 array copy def /sbr0 exch 4 array copy def /blx sbr0 0 get def /bly sbr0 1 get def len rampdelta delta astore pop sbr0 aload pop sbr1 aload pop GetBoxesRatio /ratioY exch def /ratioX exch def sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas /dlly exch nRampSteps div def /dllx exch nRampSteps div def /scaleStepX 1.0 ratioX sub nRampSteps div def /scaleStepY 1.0 ratioY sub nRampSteps div def /currentScaleX 1.0 scaleStepX sub def /currentScaleY 1.0 scaleStepY sub def /translationX blx dllx add def /translationY bly dlly add def /currentScaleX 1.0 def /currentScaleY 1.0 def /translationX blx def /translationY bly def rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor nRampSteps { msave translationX translationY translate currentScaleX currentScaleY scale blx -1.0 mul bly -1.0 mul translate pfa {aload pop exec} forall fill delta aload pop adddelta /translationX translationX dllx add def /translationY translationY dlly add def /currentScaleX currentScaleX scaleStepX sub def /currentScaleY currentScaleY scaleStepY sub def mrestore } repeat msave translationX translationY translate currentScaleX currentScaleY scale blx -1.0 mul bly -1.0 mul translate pfa {aload pop exec} forall fill mrestore } bind def initmsaverestore /tctm matrix currentmatrix def tctm RoundMatrix setmatrix /patternMatrix mstore def 10 setmiterlimit 2 setlinecap newpath % %tLayer % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {13.500 RR2} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 1.000 6.000 0.000 0.000 199.000 531.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 226.750 93.000 moveto /SwallowTail 14.687 10.574 false 173.059 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 206.250 95.500 225.371 93.168 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ } def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 141.500 103.500 275.000 87.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {13.500 RR2} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 206.500 6.000 0.000 0.000 199.000 531.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {} def /PC {} def 1.000 0 223.500 342.000 0.000 0.000 143.000 147.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {} def /PC {} def 1.000 0 223.500 61.000 0.000 0.000 143.000 147.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 305.500 134.750 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 252.500 134.750 0.000 0.000 8.000 8.000 rect %@EndOval %@BeginText save [ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef /guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla /hungarumlaut/ogonek/caron] StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 248.000 123.500 0.000 0.000 16.000 7.000 rect %@EndRect gsave 127.000 256.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) plain F /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -3.000 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 273.000 124.000 0.000 0.000 16.000 7.000 rect %@EndRect gsave 127.500 281.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (1) -3.500 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 301.000 124.000 0.000 0.000 16.000 7.000 rect %@EndRect gsave 127.500 309.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (2) -3.500 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 279.500 407.000 0.000 0.000 7.500 8.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 307.000 406.500 0.000 0.000 7.500 7.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 253.000 407.000 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 276.000 422.250 0.000 0.000 16.000 7.000 rect %@EndRect gsave 425.750 284.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (1) -3.250 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 303.500 421.750 0.000 0.000 16.000 8.000 rect %@EndRect gsave 425.750 311.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (2) -3.750 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 248.000 422.750 0.000 0.000 16.000 7.000 rect %@EndRect gsave 426.250 256.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -2.750 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ } def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 277.000 292.000 410.000 256.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ } def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 277.000 292.000 411.000 283.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ } def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 277.000 292.000 409.000 310.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 142.000 257.000 moveto /SwallowTail 14.687 10.574 false 374.160 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 143.346 257.339 281.000 292.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 143.000 282.000 moveto /SwallowTail 14.687 10.574 false 364.294 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 144.385 282.103 277.000 292.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 143.500 336.500 moveto /SwallowTail 14.687 10.574 false 341.723 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 144.818 336.063 272.000 294.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 326.750 278.000 moveto /SwallowTail 14.687 10.574 false 347.759 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 328.107 277.704 349.750 273.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 326.250 288.000 moveto /SwallowTail 14.687 10.574 false 357.163 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 327.637 287.930 346.250 287.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 324.250 298.577 moveto /SwallowTail 14.687 10.574 false 367.879 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 325.625 298.766 353.250 302.577 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 279.624 98.750 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 335.624 98.750 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 307.374 98.750 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 142.000 309.000 moveto /SwallowTail 14.687 10.574 false 352.979 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 143.378 308.829 275.500 292.500 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 278.500 134.750 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 333.500 134.750 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 330.000 123.500 0.000 0.000 16.000 7.000 rect %@EndRect gsave 127.000 338.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (3) -3.000 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 375.500 110.227 0.000 0.000 16.000 43.544 rect %@EndRect gsave 132.000 383.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (L) -21.272 4.000 S (c) -12.720 4.000 S (o) -6.506 4.000 S (m) 0.493 4.000 S (m) 11.382 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 375.500 397.227 0.000 0.000 16.000 44.331 rect %@EndRect gsave 419.393 383.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (R) -21.272 4.000 S (c) -11.934 4.000 S (o) -5.720 4.000 S (m) 1.279 4.000 S (m) 12.168 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {} def /PC {} def 1.000 0 17.500 342.000 0.000 0.000 143.000 147.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {} def /PC {} def 1.000 0 17.500 61.000 0.000 0.000 143.000 147.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 99.500 134.750 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 46.500 134.750 0.000 0.000 8.000 8.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 42.000 123.500 0.000 0.000 16.000 7.000 rect %@EndRect gsave 127.000 50.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -3.000 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 67.000 124.000 0.000 0.000 16.000 7.000 rect %@EndRect gsave 127.500 75.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (1) -3.500 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 95.000 124.000 0.000 0.000 16.000 7.000 rect %@EndRect gsave 127.500 103.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (2) -3.500 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 73.500 407.000 0.000 0.000 7.500 8.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 101.000 406.500 0.000 0.000 7.500 7.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 47.000 407.000 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 70.000 422.250 0.000 0.000 16.000 7.000 rect %@EndRect gsave 425.750 78.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (1) -3.250 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 97.500 421.750 0.000 0.000 16.000 8.000 rect %@EndRect gsave 425.750 105.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (2) -3.750 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 42.000 422.750 0.000 0.000 16.000 7.000 rect %@EndRect gsave 426.250 50.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (0) -2.750 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 81.000 273.000 0.000 0.000 8.000 8.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 410.000 51.000 moveto /SwallowTail 14.687 10.574 false 164.866 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 277.000 87.000 408.659 51.362 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 411.000 78.000 moveto /SwallowTail 14.687 10.574 false 176.170 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 277.000 87.000 409.614 78.093 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 409.000 105.000 moveto /SwallowTail 14.687 10.574 false 187.778 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 277.000 87.000 407.623 104.812 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ } def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 142.000 52.000 281.000 87.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ } def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 143.000 77.000 277.000 87.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ } def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 143.500 131.500 272.000 89.000 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 224.750 83.000 moveto /SwallowTail 14.687 10.574 false 183.379 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 199.250 81.500 223.363 82.918 Line %@EndLine %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 223.750 105.077 moveto /SwallowTail 14.687 10.574 false 161.576 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 202.750 112.077 222.432 105.516 Line %@EndLine % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 57.250 270.000 0.000 0.000 5.285 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 61.875 270.000 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 66.500 270.000 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 71.125 270.000 0.000 0.000 4.625 13.000 rect %@EndRect % %tfEndGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 102.125 436.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 75.593 436.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 72.500 134.750 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 127.500 134.750 0.000 0.000 7.000 8.000 rect %@EndOval %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 124.000 123.500 0.000 0.000 16.000 7.000 rect %@EndRect gsave 127.000 132.000 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (3) -3.000 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 169.500 110.227 0.000 0.000 16.000 43.544 rect %@EndRect gsave 132.000 177.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (L) -21.272 4.000 S (c) -12.720 4.000 S (o) -6.506 4.000 S (m) 0.493 4.000 S (m) 11.382 4.000 S grestore %@EndText %@BeginText %@BeginRect /RT {SR} def /LC {} def /SS {pop} def /PF {} def /PC {} def 0.000 0 169.500 397.227 0.000 0.000 16.000 44.331 rect %@EndRect gsave 419.393 177.500 T translate 0.0 rotate 1 1 scale 14.000 (_Times-Roman) fess /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse (R) -21.272 4.000 S (c) -11.934 4.000 S (o) -5.720 4.000 S (m) 1.279 4.000 S (m) 12.168 4.000 S grestore %@EndText %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginLine /ArrowType{ 1.000 setlinewidth 224.750 73.000 moveto /SwallowTail 14.687 10.574 false 194.050 DrawArrowHead } bind def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def /SS {setlinewidth SD stroke} def 1.000 198.750 66.500 223.402 72.663 Line %@EndLine % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 249.625 98.750 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 254.375 98.750 0.000 0.000 4.625 13.000 rect %@EndRect % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 262.732 269.875 0.000 0.000 5.428 13.500 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 267.482 269.875 0.000 0.000 4.750 13.500 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 272.232 269.875 0.000 0.000 4.750 13.500 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 276.982 269.875 0.000 0.000 4.750 13.500 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 257.767 269.875 0.000 0.000 5.428 13.500 rect %@EndRect % %tfEndGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginOval /RT {E} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PF {DR} def /flipRatio 1.000 def /rampAngle 225 def /rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def /PC {} def /RF {} def 1.000 0 287.000 273.000 0.000 0.000 8.000 8.000 rect %@EndOval % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 249.482 433.750 0.000 0.000 5.428 13.500 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 254.232 433.750 0.000 0.000 4.750 13.500 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 258.982 433.750 0.000 0.000 4.750 13.500 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 263.732 433.750 0.000 0.000 4.750 13.500 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 244.517 433.750 0.000 0.000 5.428 13.500 rect %@EndRect % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 277.232 433.750 0.000 0.000 5.428 13.500 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 281.982 433.750 0.000 0.000 4.750 13.500 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 286.732 433.750 0.000 0.000 4.750 13.500 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 291.482 433.750 0.000 0.000 4.750 13.500 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 272.267 433.750 0.000 0.000 5.428 13.500 rect %@EndRect % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 304.982 433.750 0.000 0.000 5.428 13.500 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 309.732 433.750 0.000 0.000 4.750 13.500 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 314.482 433.750 0.000 0.000 4.750 13.500 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 319.232 433.750 0.000 0.000 4.750 13.500 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 300.017 433.750 0.000 0.000 5.428 13.500 rect %@EndRect % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 36.750 102.500 0.000 0.000 5.285 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 41.375 102.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 46.000 102.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 50.625 102.500 0.000 0.000 4.625 13.000 rect %@EndRect % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 120.750 102.500 0.000 0.000 5.285 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 125.375 102.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 130.000 102.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 134.625 102.500 0.000 0.000 4.625 13.000 rect %@EndRect % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 92.750 102.500 0.000 0.000 5.285 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 97.375 102.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 102.000 102.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 106.625 102.500 0.000 0.000 4.625 13.000 rect %@EndRect % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 64.750 102.500 0.000 0.000 5.285 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 69.375 102.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 74.000 102.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 78.625 102.500 0.000 0.000 4.625 13.000 rect %@EndRect % %tfEndGrp % % %tfBegGrp % %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 44.312 436.500 0.000 0.000 4.625 13.000 rect %@EndRect %@BeginRuler %@ 9.0000000000000000000e+0 viewScale %@ 1.1111111111111110490e-1 realScale %@ 8 realDivs %@ 0000 rulerFormat %@EndRuler %@BeginRect /RT {SR} def /SD {} def /SS {setlinewidth SD stroke} def /LC { /setcmykcolor where {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse } def /PC { /setcmykcolor where {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse } def /PF {gsave fill grestore} def 1.000 0 49.062 436.500 0.000 0.000 4.625 13.000 rect %@EndRect % %tfEndGrp % % %tLayer % restore end %%EndDocument @endspecial 75 2510 a(Figure)h(6.4:)21 b(In)o(tercomm)o(unicator)16 b(reduce-scatter.)23 b(The)17 b(fo)q(cus)f(of)g(data)f(to)h(one)g(pro)q (cess)g(is)h(logical,)75 2567 y(not)e(mandated)g(b)o(y)g(the)g(seman)o (tics.)-32 46 y Fi(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop %%Page: 14 16 14 15 bop 75 -100 a Fr(14)537 b Fh(CHAPTER)16 b(6.)34 b(EXTENDED)15 b(COLLECTIVE)h(OPERA)l(TIONS)166 45 y Fn(Discussion:)h Fm(Rather)e(than)g(ha)o(ving)f(the)h(other)g(pro)q(cesses)j(on)c(the)i (ro)q(ot's)f(side)g(not)g(call)f(the)h(collectiv)o(e)75 102 y(routine,)e(w)o(e)h(could)f(use)h Fe(MPI)p 548 102 13 2 v 15 w(NOT)p 651 102 V 15 w(ROOT)e Fm(as)i(the)g(sp)q(ecial)g(ro)q (ot)f(v)n(alue)g(for)g(the)h(other)g(pro)q(cesses)i(in)d(the)h(same)75 158 y(lo)q(cal)f(group)h(as)g(the)g(ro)q(ot.)189 312 y Ff(R)n(ationale.)76 b Fr(The)22 b(in-place)h(op)q(erations)f(are)f (pro)o(vided)h(to)e(reduce)j(unnecessary)f(memory)189 368 y(motion)13 b(b)o(y)h(b)q(oth)f(the)h(MPI)g(implemen)o(tation)h (and)f(b)o(y)f(the)h(user.)19 b(Note)14 b(that)f(while)i(the)e(simple) 189 424 y(c)o(hec)o(k)22 b(of)g(testing)g(whether)g(the)h(send)g(and)f (receiv)o(e)h(bu\013ers)f(ha)o(v)o(e)g(the)g(same)g(address)g(will)189 481 y(w)o(ork)e(for)g(some)h(cases)g(\(e.g.,)g Fl(MPI)p 827 481 14 2 v 16 w(ALLREDUCE)p Fr(\),)g(they)g(are)g(inadequate)h(in)g (others)f(\(e.g.,)189 537 y Fl(MPI)p 274 537 V 15 w(GA)l(THER)p Fr(,)12 b(with)f(ro)q(ot)e(not)h(equal)h(to)f(zero\).)18 b(F)l(urther,)11 b(F)l(ortran)e(explicit)j(prohibits)g(aliasing)189 594 y(of)22 b(argumen)o(ts;)j(the)e(approac)o(h)f(of)g(using)i(a)e(sp)q (ecial)i(v)m(alue)g(to)e(denote)h(in-place)i(op)q(eration)189 650 y(eliminates)17 b(that)d(di\016cult)o(y)l(.)21 b(\()p Ff(End)16 b(of)g(r)n(ationale.)p Fr(\))189 757 y Ff(R)n(ationale.)42 b Fr(Ro)q(oted)16 b(op)q(erations)g(are)f(unidirectional)j(b)o(y)e (nature,)f(and)h(there)f(is)i(a)e(clear)h(w)o(a)o(y)189 813 y(of)g(sp)q(ecifying)j(direction.)27 b(Non-ro)q(oted)17 b(op)q(erations,)g(suc)o(h)h(as)f(all-to-all,)h(will)h(often)e(o)q (ccur)g(as)189 869 y(part)c(of)g(an)h(exc)o(hange,)f(where)h(it)g(mak)o (es)f(sense)i(to)e(comm)o(unicate)h(in)g(b)q(oth)g(directions)h(at)e (once.)189 926 y(\()p Ff(End)i(of)i(r)n(ationale.)p Fr(\))166 1032 y(In)g(the)f(follo)o(wing,)h(the)f(de\014nitions)i(of)e(the)g (collectiv)o(e)i(routines)f(are)f(pro)o(vided)h(to)f(enhance)h(the)75 1089 y(readabilit)o(y)i(and)e(understanding)i(of)e(the)h(asso)q(ciated) f(text.)27 b(They)17 b(do)h(not)f(c)o(hange)h(the)f(de\014nitions)75 1145 y(of)e(the)g(argumen)o(t)g(lists)h(from)e Fl(MPI-1)p Fr(.)19 b(The)d(language)f(bindings)i(for)e(these)h(routines)f(are)g (unc)o(hanged)75 1202 y(from)g Fl(MPI-1)p Fr(,)f(and)h(are)g(not)g(rep) q(eated)h(here.)21 b(The)16 b(text)f(pro)o(vided)h(for)e(eac)o(h)i (routine)g(is)g(app)q(ended)h(to)75 1258 y(the)e(de\014nition)i(of)e (the)g(routine)h(in)g Fl(MPI-1)p Fr(.)75 1378 y Fl(Broadcast)90 1558 y(MPI)p 175 1558 V 16 w(BCAST\()g(bu\013er,)f(count,)h(datat)o(yp) q(e,)g(ro)q(ot,)f(comm)e(\))117 1636 y Fm(INOUT)78 b Fl(bu\013er)462 b Fm(starting)14 b(address)h(of)f(bu\013er)g(\(c)o (hoice\))117 1711 y(IN)171 b Fl(count)466 b Fm(n)o(um)o(b)q(er)13 b(of)h(en)o(tries)h(in)e(bu\013er)i(\(in)o(teger\))117 1786 y(IN)171 b Fl(datat)o(yp)q(e)408 b Fm(data)14 b(t)o(yp)q(e)g(of)f (bu\013er)i(\(handle\))117 1861 y(IN)171 b Fl(ro)q(ot)492 b Fm(rank)14 b(of)f(broadcast)i(ro)q(ot)f(\(in)o(teger\))117 1936 y(IN)171 b Fl(comm)454 b Fm(comm)o(unicator)11 b(\(handle\))75 2061 y Fr(The)k(\\in)h(place")g(option)f(not)g(meaningful)i(here.)166 2117 y(If)h Fl(comm)f Fr(is)h(an)h(in)o(tercomm)o(unicator,)f(then)h (the)f(call)h(in)o(v)o(olv)o(es)g(a)f(ro)q(ot)f(pro)q(cess)i(in)g(one)f (group)75 2173 y(\(group)g(A\))g(and)g(all)i(pro)q(cesses)f(in)g(the)f (other)g(group)g(\(group)g(B\).)g(All)i(pro)q(cesses)e(in)i(group)e(B)g (pass)75 2230 y(the)c(same)g(v)m(alue)i(in)f(argumen)o(t)f Fl(ro)q(ot)p Fr(,)f(whic)o(h)j(is)e(the)h(rank)f(of)g(the)g(ro)q(ot)g (in)h(group)f(A.)g(The)h(ro)q(ot)e(passes)75 2286 y(the)k(v)m(alue)h Fe(MPI)p 351 2286 13 2 v 14 w(ROOT)e Fr(in)i Fl(ro)q(ot)p Fr(.)24 b(Data)15 b(is)j(broadcast)d(from)h(the)h(ro)q(ot)f(to)g(all)i (pro)q(cesses)f(in)h(group)e(B.)75 2343 y(The)f(receiv)o(e)h(bu\013er)e (argumen)o(ts)g(of)h(the)g(pro)q(cesses)g(in)g(group)g(B)g(m)o(ust)f(b) q(e)h(consisten)o(t)g(with)h(the)e(send)75 2399 y(bu\013er)h(argumen)o (t)g(of)f(the)i(ro)q(ot.)1967 46 y Fi(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop %%Page: 15 17 15 16 bop 75 -100 a Fh(6.4.)34 b(EXTENDED)14 b(COLLECTIVE)j(OPERA)l (TIONS)749 b Fr(15)75 45 y Fl(Gather)75 225 y(MPI)p 160 225 14 2 v 16 w(GA)l(THER\()16 b(sendbuf,)h(sendcount,)h(sendt)o(yp)q (e,)f(recvbuf,)f(recvcount,)g(recvt)o(yp)q(e,)g(ro)q(ot,)e(comm\))117 303 y Fm(IN)171 b Fl(sendbuf)428 b Fm(starting)14 b(address)h(of)f (send)g(bu\013er)h(\(user's)g(c)o(hoice\))117 378 y(IN)171 b Fl(sendcount)383 b Fm(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h (send)h(bu\013er)f(\(in)o(teger\))117 453 y(IN)171 b Fl(sendt)o(yp)q(e)408 b Fm(data)14 b(t)o(yp)q(e)g(of)f(send)i(bu\013er) g(elemen)o(ts)f(\(handle\))117 528 y(OUT)124 b Fl(recvbuf)434 b Fm(address)21 b(of)e(receiv)o(e)j(bu\013er)e(\(c)o(hoice,)i (signi\014can)o(t)d(only)g(at)905 584 y(ro)q(ot\))117 660 y(IN)171 b Fl(recvcount)389 b Fm(n)o(um)o(b)q(er)11 b(of)g(elemen)o(ts)g(for)g(an)o(y)g(single)g(receiv)o(e)i(\(in)o (teger,)f(sig-)905 716 y(ni\014can)o(t)i(only)f(at)h(ro)q(ot\))117 791 y(IN)171 b Fl(recvt)o(yp)q(e)414 b Fm(data)16 b(t)o(yp)q(e)g(of)f (recv)i(bu\013er)g(elemen)o(ts)f(\(signi\014can)o(t)f(only)g(at)905 848 y(ro)q(ot\))f(\(handle\))117 923 y(IN)171 b Fl(ro)q(ot)492 b Fm(rank)14 b(of)f(receiving)i(pro)q(cess)g(\(in)o(teger\))117 998 y(IN)171 b Fl(comm)454 b Fm(comm)o(unicator)11 b(\(handle\))166 1122 y Fr(\\In)17 b(place")h(option)g(is)f(sp)q(eci\014ed)j(b)o(y)d (passing)g Fe(MPI)p 1068 1122 13 2 v 15 w(IN)p 1124 1122 V 15 w(PLA)o(CE)f Fr(as)g(the)i(v)m(alue)g(of)f Fl(sendbuf)i Fr(at)e(the)75 1179 y(ro)q(ot.)22 b(In)16 b(suc)o(h)h(a)f(case,)g Fl(sendcount)i Fr(and)f Fl(sendt)o(yp)q(e)h Fr(are)e(ignored,)h(and)f (the)g(con)o(tribution)h(of)f(the)g(ro)q(ot)75 1235 y(to)f(the)g (gathered)g(v)o(ector)f(is)i(assumed)f(to)g(b)q(e)h(already)f(in)h(the) g(righ)o(t)f(place)h(in)g(the)f(receiv)o(e)h(bu\013er)166 1292 y(If)c Fl(comm)f Fr(is)i(in)o(tercomm)o(unicator,)f(then)h(the)f (call)h(in)o(v)o(olv)o(es)g(a)f(ro)q(ot)g(pro)q(cess)g(in)h(one)g (group)f(\(group)75 1348 y(A\))j(and)h(all)g(pro)q(cesses)g(in)h(the)e (other)g(group)h(\(group)e(B\).)h(All)i(pro)q(cesses)f(in)g(group)g(B)f (pass)h(the)f(same)75 1405 y(v)m(alue)g(in)g(argumen)o(t)f Fl(ro)q(ot)p Fr(,)f(whic)o(h)i(is)g(the)f(rank)g(of)g(the)g(ro)q(ot)f (in)i(group)f(A.)g(The)g(ro)q(ot)f(passes)i(the)f(v)m(alue)75 1461 y Fe(MPI)p 152 1461 V 14 w(ROOT)j Fr(in)h Fl(ro)q(ot)p Fr(.)26 b(Data)16 b(is)h(gathered)h(from)e(all)i(pro)q(cesses)g(in)g (group)f(B)h(to)e(the)i(ro)q(ot.)25 b(The)17 b(send)75 1518 y(bu\013er)j(argumen)o(ts)e(of)h(the)h(pro)q(cesses)g(in)g(group)f (B)h(m)o(ust)f(b)q(e)h(consisten)o(t)g(with)g(the)g(receiv)o(e)g (bu\013er)75 1574 y(argumen)o(t)14 b(of)h(the)g(ro)q(ot.)-32 46 y Fi(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop %%Page: 16 18 16 17 bop 75 -100 a Fr(16)537 b Fh(CHAPTER)16 b(6.)34 b(EXTENDED)15 b(COLLECTIVE)h(OPERA)l(TIONS)75 45 y Fl(MPI)p 160 45 14 2 v 16 w(GA)l(THERV\()24 b(sendbuf,)j(sendcount,)g(sendt)o (yp)q(e,)g(recvbuf,)e(recvcounts,)h(displs,)g(recvt)o(yp)q(e,)g(ro)q (ot,)75 102 y(comm\))117 179 y Fm(IN)171 b Fl(sendbuf)428 b Fm(starting)14 b(address)h(of)f(send)g(bu\013er)h(\(c)o(hoice\))117 254 y(IN)171 b Fl(sendcount)383 b Fm(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(send)h(bu\013er)f(\(in)o(teger\))117 329 y(IN)171 b Fl(sendt)o(yp)q(e)408 b Fm(data)14 b(t)o(yp)q(e)g(of)f (send)i(bu\013er)g(elemen)o(ts)f(\(handle\))117 404 y(OUT)124 b Fl(recvbuf)434 b Fm(address)21 b(of)e(receiv)o(e)j(bu\013er)e(\(c)o (hoice,)i(signi\014can)o(t)d(only)g(at)905 461 y(ro)q(ot\))117 536 y(IN)171 b Fl(recvcounts)372 b Fm(in)o(teger)10 b(arra)o(y)f(\(of)g (length)g(group)g(size\))h(con)o(taining)e(the)i(n)o(um-)905 592 y(b)q(er)20 b(of)e(elemen)o(ts)h(that)f(are)i(receiv)o(ed)g(from)d (eac)o(h)i(pro)q(cess)905 649 y(\(signi\014can)o(t)14 b(only)f(at)h(ro)q(ot\))117 724 y(IN)171 b Fl(displs)469 b Fm(in)o(teger)15 b(arra)o(y)f(\(of)g(length)g(group)g(size\).)20 b(En)o(try)15 b Fb(i)f Fm(sp)q(eci\014es)905 780 y(the)h(displacemen)o (t)e(relativ)o(e)g(to)h Fe(recvbuf)i Fm(at)d(whic)o(h)h(to)g(place)905 837 y(the)h(incoming)e(data)h(from)f(pro)q(cess)k Fb(i)d Fm(\(signi\014can)o(t)g(only)g(at)905 893 y(ro)q(ot\))117 968 y(IN)171 b Fl(recvt)o(yp)q(e)414 b Fm(data)16 b(t)o(yp)q(e)g(of)f (recv)i(bu\013er)g(elemen)o(ts)f(\(signi\014can)o(t)f(only)g(at)905 1025 y(ro)q(ot\))f(\(handle\))117 1100 y(IN)171 b Fl(ro)q(ot)492 b Fm(rank)14 b(of)f(receiving)i(pro)q(cess)g(\(in)o(teger\))117 1175 y(IN)171 b Fl(comm)454 b Fm(comm)o(unicator)11 b(\(handle\))166 1299 y Fr(\\In)17 b(place")h(option)g(is)f(sp)q(eci\014ed)j(b)o(y)d (passing)g Fe(MPI)p 1068 1299 13 2 v 15 w(IN)p 1124 1299 V 15 w(PLA)o(CE)f Fr(as)g(the)i(v)m(alue)g(of)f Fl(sendbuf)i Fr(at)e(the)75 1356 y(ro)q(ot.)22 b(In)16 b(suc)o(h)h(a)f(case,)g Fl(sendcount)i Fr(and)f Fl(sendt)o(yp)q(e)h Fr(are)e(ignored,)h(and)f (the)g(con)o(tribution)h(of)f(the)g(ro)q(ot)75 1412 y(to)f(the)g (gathered)g(v)o(ector)f(is)i(assumed)f(to)g(b)q(e)h(already)f(in)h(the) g(righ)o(t)f(place)h(in)g(the)f(receiv)o(e)h(bu\013er)166 1469 y(If)c Fl(comm)f Fr(is)i(in)o(tercomm)o(unicator,)f(then)h(the)f (call)h(in)o(v)o(olv)o(es)g(a)f(ro)q(ot)g(pro)q(cess)g(in)h(one)g (group)f(\(group)75 1525 y(A\))j(and)h(all)g(pro)q(cesses)g(in)h(the)e (other)g(group)h(\(group)e(B\).)h(All)i(pro)q(cesses)f(in)g(group)g(B)f (pass)h(the)f(same)75 1582 y(v)m(alue)g(in)g(argumen)o(t)f Fl(ro)q(ot)p Fr(,)f(whic)o(h)i(is)g(the)f(rank)g(of)g(the)g(ro)q(ot)f (in)i(group)f(A.)g(The)g(ro)q(ot)f(passes)i(the)f(v)m(alue)75 1638 y Fe(MPI)p 152 1638 V 14 w(ROOT)j Fr(in)h Fl(ro)q(ot)p Fr(.)26 b(Data)16 b(is)h(gathered)h(from)e(all)i(pro)q(cesses)g(in)g (group)f(B)h(to)e(the)i(ro)q(ot.)25 b(The)17 b(send)75 1695 y(bu\013er)j(argumen)o(ts)e(of)h(the)h(pro)q(cesses)g(in)g(group)f (B)h(m)o(ust)f(b)q(e)h(consisten)o(t)g(with)g(the)g(receiv)o(e)g (bu\013er)75 1751 y(argumen)o(t)14 b(of)h(the)g(ro)q(ot.)1967 46 y Fi(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop %%Page: 17 19 17 18 bop 75 -100 a Fh(6.4.)34 b(EXTENDED)14 b(COLLECTIVE)j(OPERA)l (TIONS)749 b Fr(17)75 45 y Fl(Scatter)75 225 y(MPI)p 160 225 14 2 v 16 w(SCA)l(TTER\()15 b(sendbuf,)i(sendcount,)g(sendt)o (yp)q(e,)g(recvbuf,)e(recvcount,)h(recvt)o(yp)q(e,)f(ro)q(ot,)f(comm\)) 117 303 y Fm(IN)171 b Fl(sendbuf)428 b Fm(address)13 b(of)d(send)i(bu\013er)h(\(c)o(hoice,)f(signi\014can)o(t)e(only)h(at)g (ro)q(ot\))117 378 y(IN)171 b Fl(sendcount)383 b Fm(n)o(um)o(b)q(er)13 b(of)g(elemen)o(ts)h(sen)o(t)g(to)g(eac)o(h)g(pro)q(cess)i(\(in)o (teger,)e(sig-)905 434 y(ni\014can)o(t)g(only)f(at)h(ro)q(ot\))117 509 y(IN)171 b Fl(sendt)o(yp)q(e)408 b Fm(data)15 b(t)o(yp)q(e)h(of)e (send)i(bu\013er)g(elemen)o(ts)f(\(signi\014can)o(t)g(only)f(at)905 566 y(ro)q(ot\))g(\(handle\))117 641 y(OUT)124 b Fl(recvbuf)434 b Fm(address)15 b(of)f(receiv)o(e)h(bu\013er)g(\(c)o(hoice\))117 716 y(IN)171 b Fl(recvcount)389 b Fm(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(receiv)o(e)h(bu\013er)g(\(in)o(teger\))117 791 y(IN)171 b Fl(recvt)o(yp)q(e)414 b Fm(data)14 b(t)o(yp)q(e)g(of)f (receiv)o(e)j(bu\013er)f(elemen)o(ts)e(\(handle\))117 866 y(IN)171 b Fl(ro)q(ot)492 b Fm(rank)14 b(of)f(sending)h(pro)q(cess) i(\(in)o(teger\))117 941 y(IN)171 b Fl(comm)454 b Fm(comm)o(unicator)11 b(\(handle\))166 1066 y Fr(\\In)18 b(place")g(option)g(is)h(sp)q (eci\014ed)g(b)o(y)f(passing)g Fe(MPI)p 1072 1066 13 2 v 15 w(IN)p 1128 1066 V 14 w(PLA)o(CE)f Fr(as)g(the)h(v)m(alue)h(of)e Fl(recvbuf)i Fr(at)e(the)75 1122 y(ro)q(ot.)23 b(In)17 b(suc)o(h)g(case,)g Fl(recvcount)h Fr(and)e Fl(recvt)o(yp)q(e)i Fr(are)e(ignored,)h(and)g(ro)q(ot)f(\\sends")g(no)h(data)e(to)h (itself.)75 1179 y(The)g(scattered)f(v)o(ector)g(is)h(still)h(assumed)e (to)g(con)o(tain)h Fa(n)g Fr(segmen)o(ts,)e(where)i Fa(n)g Fr(is)g(the)f(group)h(size;)g(the)75 1235 y Ff(r)n(o)n(ot)p Fr(-th)f(segmen)o(t,)g(whic)o(h)h(ro)q(ot)e(should)i(\\send)g(to)e (itself,")i(is)g(not)e(mo)o(v)o(ed.)166 1292 y(If)e Fl(comm)f Fr(is)i(in)o(tercomm)o(unicator,)f(then)h(the)f(call)h(in)o(v)o(olv)o (es)g(a)f(ro)q(ot)g(pro)q(cess)g(in)h(one)g(group)f(\(group)75 1348 y(A\))j(and)h(all)g(pro)q(cesses)g(in)h(the)e(other)g(group)h (\(group)e(B\).)h(All)i(pro)q(cesses)f(in)g(group)g(B)f(pass)h(the)f (same)75 1405 y(v)m(alue)g(in)g(argumen)o(t)f Fl(ro)q(ot)p Fr(,)f(whic)o(h)i(is)g(the)f(rank)g(of)g(the)g(ro)q(ot)f(in)i(group)f (A.)g(The)g(ro)q(ot)f(passes)i(the)f(v)m(alue)75 1461 y Fe(MPI)p 152 1461 V 14 w(ROOT)j Fr(in)h Fl(ro)q(ot)p Fr(.)26 b(Data)16 b(is)h(gathered)h(from)e(all)i(pro)q(cesses)g(in)g (group)f(B)h(to)e(the)i(ro)q(ot.)25 b(The)17 b(send)75 1518 y(bu\013er)j(argumen)o(ts)e(of)h(the)h(pro)q(cesses)g(in)g(group)f (B)h(m)o(ust)f(b)q(e)h(consisten)o(t)g(with)g(the)g(receiv)o(e)g (bu\013er)75 1574 y(argumen)o(t)14 b(of)h(the)g(ro)q(ot.)-32 46 y Fi(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop %%Page: 18 20 18 19 bop 75 -100 a Fr(18)537 b Fh(CHAPTER)16 b(6.)34 b(EXTENDED)15 b(COLLECTIVE)h(OPERA)l(TIONS)75 45 y Fl(MPI)p 160 45 14 2 v 16 w(SCA)l(TTERV\()21 b(sendbuf,)j(sendcounts)q(,)g (displs,)f(sendt)o(yp)q(e,)h(recvbuf,)f(recvcount,)f(recvt)o(yp)q(e,)h (ro)q(ot,)75 102 y(comm\))117 179 y Fm(IN)171 b Fl(sendbuf)428 b Fm(address)13 b(of)d(send)i(bu\013er)h(\(c)o(hoice,)f(signi\014can)o (t)e(only)h(at)g(ro)q(ot\))117 254 y(IN)171 b Fl(sendcounts)366 b Fm(in)o(teger)10 b(arra)o(y)f(\(of)g(length)g(group)g(size\))h(sp)q (ecifying)g(the)g(n)o(um-)905 310 y(b)q(er)15 b(of)e(elemen)o(ts)h(to)g (send)h(to)e(eac)o(h)i(pro)q(cessor)117 385 y(IN)171 b Fl(displs)469 b Fm(in)o(teger)15 b(arra)o(y)f(\(of)g(length)g(group)g (size\).)20 b(En)o(try)15 b Fb(i)f Fm(sp)q(eci\014es)905 442 y(the)20 b(displacemen)o(t)e(\(relativ)o(e)h(to)f Fe(sendbuf)j Fm(from)c(whic)o(h)i(to)905 498 y(tak)o(e)14 b(the)h(outgoing)d(data)i(to)g(pro)q(cess)h Fb(i)117 573 y Fm(IN)171 b Fl(sendt)o(yp)q(e)408 b Fm(data)14 b(t)o(yp)q(e)g(of)f(send)i(bu\013er)g(elemen)o(ts)f(\(handle\))117 649 y(OUT)124 b Fl(recvbuf)434 b Fm(address)15 b(of)f(receiv)o(e)h (bu\013er)g(\(c)o(hoice\))117 724 y(IN)171 b Fl(recvcount)389 b Fm(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(receiv)o(e)h (bu\013er)g(\(in)o(teger\))117 799 y(IN)171 b Fl(recvt)o(yp)q(e)414 b Fm(data)14 b(t)o(yp)q(e)g(of)f(receiv)o(e)j(bu\013er)f(elemen)o(ts)e (\(handle\))117 874 y(IN)171 b Fl(ro)q(ot)492 b Fm(rank)14 b(of)f(sending)h(pro)q(cess)i(\(in)o(teger\))117 949 y(IN)171 b Fl(comm)454 b Fm(comm)o(unicator)11 b(\(handle\))166 1073 y Fr(\\In)18 b(place")g(option)g(is)h(sp)q(eci\014ed)g(b)o(y)f (passing)g Fe(MPI)p 1072 1073 13 2 v 15 w(IN)p 1128 1073 V 14 w(PLA)o(CE)f Fr(as)g(the)h(v)m(alue)h(of)e Fl(recvbuf)i Fr(at)e(the)75 1130 y(ro)q(ot.)23 b(In)17 b(suc)o(h)g(case,)g Fl(recvcount)h Fr(and)e Fl(recvt)o(yp)q(e)i Fr(are)e(ignored,)h(and)g (ro)q(ot)f(\\sends")g(no)h(data)e(to)h(itself.)75 1186 y(The)g(scattered)f(v)o(ector)g(is)h(still)h(assumed)e(to)g(con)o(tain) h Fa(n)g Fr(segmen)o(ts,)e(where)i Fa(n)g Fr(is)g(the)f(group)h(size;)g (the)75 1243 y Ff(r)n(o)n(ot)p Fr(-th)f(segmen)o(t,)g(whic)o(h)h(ro)q (ot)e(should)i(\\send)g(to)e(itself,")i(is)g(not)e(mo)o(v)o(ed.)166 1299 y(If)e Fl(comm)f Fr(is)i(in)o(tercomm)o(unicator,)f(then)h(the)f (call)h(in)o(v)o(olv)o(es)g(a)f(ro)q(ot)g(pro)q(cess)g(in)h(one)g (group)f(\(group)75 1356 y(A\))j(and)h(all)g(pro)q(cesses)g(in)h(the)e (other)g(group)h(\(group)e(B\).)h(All)i(pro)q(cesses)f(in)g(group)g(B)f (pass)h(the)f(same)75 1412 y(v)m(alue)g(in)g(argumen)o(t)f Fl(ro)q(ot)p Fr(,)f(whic)o(h)i(is)g(the)f(rank)g(of)g(the)g(ro)q(ot)f (in)i(group)f(A.)g(The)g(ro)q(ot)f(passes)i(the)f(v)m(alue)75 1469 y Fe(MPI)p 152 1469 V 14 w(ROOT)j Fr(in)h Fl(ro)q(ot)p Fr(.)26 b(Data)16 b(is)h(gathered)h(from)e(all)i(pro)q(cesses)g(in)g (group)f(B)h(to)e(the)i(ro)q(ot.)25 b(The)17 b(send)75 1525 y(bu\013er)j(argumen)o(ts)e(of)h(the)h(pro)q(cesses)g(in)g(group)f (B)h(m)o(ust)f(b)q(e)h(consisten)o(t)g(with)g(the)g(receiv)o(e)g (bu\013er)75 1582 y(argumen)o(t)14 b(of)h(the)g(ro)q(ot.)75 1702 y Fl(\\All")g(F)o(o)o(rms)e(and)j(All-to-all)75 1882 y(MPI)p 160 1882 14 2 v 16 w(ALLGA)l(THER\()g(sendbuf,)h (sendcount,)h(sendt)o(yp)q(e,)f(recvbuf,)f(recvcount,)f(recvt)o(yp)q (e,)h(comm\))117 1959 y Fm(IN)171 b Fl(sendbuf)428 b Fm(starting)14 b(address)h(of)f(send)g(bu\013er)h(\(c)o(hoice\))117 2034 y(IN)171 b Fl(sendcount)383 b Fm(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(send)h(bu\013er)f(\(in)o(teger\))117 2109 y(IN)171 b Fl(sendt)o(yp)q(e)408 b Fm(data)14 b(t)o(yp)q(e)g(of)f (send)i(bu\013er)g(elemen)o(ts)f(\(handle\))117 2184 y(OUT)124 b Fl(recvbuf)434 b Fm(address)15 b(of)f(receiv)o(e)h (bu\013er)g(\(c)o(hoice\))117 2260 y(IN)171 b Fl(recvcount)389 b Fm(n)o(um)o(b)q(er)17 b(of)f(elemen)o(ts)h(receiv)o(ed)i(from)c(an)o (y)i(pro)q(cess)i(\(in)o(te-)905 2316 y(ger\))117 2391 y(IN)171 b Fl(recvt)o(yp)q(e)414 b Fm(data)14 b(t)o(yp)q(e)g(of)f (receiv)o(e)j(bu\013er)f(elemen)o(ts)e(\(handle\))117 2466 y(IN)171 b Fl(comm)454 b Fm(comm)o(unicator)11 b(\(handle\))166 2591 y Fr(The)16 b(\\in)g(place")g(option)f(is)h(sp)q(eci\014ed)i(b)o (y)d(passing)h(the)f(v)m(alue)i Fe(MPI)p 1342 2591 13 2 v 14 w(IN)p 1397 2591 V 15 w(PLA)o(CE)d Fr(to)h(the)h(argumen)o(t)75 2647 y Fl(sendbuf)i Fr(at)e(all)h(pro)q(cesses.)23 b Fl(sendcount)c Fr(and)d Fl(sendt)o(yp)q(e)i Fr(are)e(ignored.)23 b(Then)17 b(the)f(input)h(data)e(of)h(eac)o(h)75 2704 y(pro)q(cess)f(is)g(assumed)g(to)f(b)q(e)i(in)g(the)f(area)f(where)h (that)f(pro)q(cess)h(w)o(ould)g(receiv)o(e)h(its)f(o)o(wn)f(con)o (tribution)1967 46 y Fi(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop %%Page: 19 21 19 20 bop 75 -100 a Fh(6.4.)34 b(EXTENDED)14 b(COLLECTIVE)j(OPERA)l (TIONS)749 b Fr(19)75 45 y(to)13 b(the)h(receiv)o(e)h(bu\013er.)k(Sp)q (eci\014cally)m(,)d(the)e(outcome)f(of)h(a)f(call)i(to)e Fl(MPI)p 1311 45 14 2 v 16 w(ALLGA)l(THER)i Fr(in)g(the)e(in)i(place)75 102 y(case)g(is)h(as)f(if)g(all)i(pro)q(cesses)e(executed)h Fa(n)g Fr(calls)g(to)170 195 y Fj(MPI_GATHER\()23 b(MPI_IN_PLACE,)f(0,) h(MPI_DATATYPE_NULL,)f(recvbuf,)h(recvcount,)862 252 y(recvtype,)g(root,)g(comm)h(\))75 346 y Fr(for)15 b Fj(root)23 b(=)h(0,)f(...,)h(n)f(-)h(1)p Fr(.)166 402 y(If)c Fl(comm)e Fr(is)j(an)f(in)o(tercomm)o(unicator,)h(then)f(eac)o (h)g(pro)q(cess)h(in)g(group)e(A)i(con)o(tributes)f(a)g(data)75 459 y(item;)j(these)d(items)g(are)g(concatenated)g(and)g(the)h(result)f (is)h(stored)e(at)h(eac)o(h)g(pro)q(cess)g(in)h(group)f(B.)75 515 y(Con)o(v)o(ersely)c(the)h(concatenation)f(of)g(the)g(con)o (tributions)h(of)f(the)h(pro)q(cesses)f(in)h(group)f(B)h(is)g(stored)f (at)75 571 y(eac)o(h)i(pro)q(cess)g(in)h(group)f(A.)f(The)h(send)h (bu\013er)f(argumen)o(ts)f(in)i(group)f(A)f(m)o(ust)h(b)q(e)g (consisten)o(t)h(with)75 628 y(the)c(receiv)o(e)h(bu\013er)g(argumen)o (ts)e(in)i(group)f(B,)g(and)g(vice)h(v)o(ersa.)166 684 y(The)f(in-place)j(option)d(is)h(illegal)h(for)e(in)o(tercomm)o (unicators.)189 791 y Ff(A)n(dvic)n(e)h(to)h(users.)46 b Fr(The)16 b(comm)o(unication)h(pattern)f(of)f(allgather)i(executed)g (on)f(an)g(in)o(tercom-)189 847 y(m)o(unication)i(domain)g(need)g(not)f (b)q(e)h(symmetric.)26 b(The)17 b(n)o(um)o(b)q(er)h(of)f(items)g(sen)o (t)g(b)o(y)h(pro)q(cesses)189 904 y(in)h(group)g(A)g(\(as)f(sp)q (eci\014ed)j(b)o(y)e(the)g(argumen)o(ts)f Fl(sendcount,)23 b(sendt)o(yp)q(e)e Fr(in)f(group)f(A)g(and)g(the)189 960 y(argumen)o(ts)c Fl(recvcount,)j(recvt)o(yp)q(e)f Fr(in)h(group)e(B\),)g(need)h(not)g(equal)g(the)f(n)o(um)o(b)q(er)h(of) f(items)h(sen)o(t)189 1016 y(b)o(y)f(pro)q(cesses)g(in)h(group)f(B)g (\(as)f(sp)q(eci\014ed)k(b)o(y)d(the)g(argumen)o(ts)f Fl(sendcount,)k(sendt)o(yp)q(e)f Fr(in)f(group)189 1073 y(B)i(and)h(the)f(argumen)o(ts)g Fl(recvcount,)i(recvt)o(yp)q(e)g Fr(in)f(group)f(A\).)g(In)h(particular,)h(one)e(can)h(mo)o(v)o(e)189 1129 y(data)14 b(in)h(only)h(one)f(direction,)h(b)o(y)e(sp)q(ecifying)j Fl(sendcount)h(=)d(0)g Fr(for)f(the)h(comm)o(unication)g(in)h(the)189 1186 y(rev)o(erse)f(direction.)189 1261 y(\()p Ff(End)g(of)i(advic)n(e) f(to)g(users.)p Fr(\))75 1462 y Fl(MPI)p 160 1462 V 16 w(ALLGA)l(THERV\()11 b(sendbuf,)i(sendcount,)h(sendt)o(yp)q(e,)f (recvbuf,)f(recvcounts,)g(displs,)g(recvt)o(yp)q(e,)g(comm\))117 1595 y Fm(IN)171 b Fl(sendbuf)428 b Fm(starting)14 b(address)h(of)f (send)g(bu\013er)h(\(c)o(hoice\))117 1671 y(IN)171 b Fl(sendcount)383 b Fm(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h (send)h(bu\013er)f(\(in)o(teger\))117 1746 y(IN)171 b Fl(sendt)o(yp)q(e)408 b Fm(data)14 b(t)o(yp)q(e)g(of)f(send)i(bu\013er) g(elemen)o(ts)f(\(handle\))117 1821 y(OUT)124 b Fl(recvbuf)434 b Fm(address)15 b(of)f(receiv)o(e)h(bu\013er)g(\(c)o(hoice\))117 1896 y(IN)171 b Fl(recvcounts)372 b Fm(in)o(teger)10 b(arra)o(y)f(\(of)g(length)g(group)g(size\))h(con)o(taining)e(the)i(n)o (um-)905 1952 y(b)q(er)15 b(of)e(elemen)o(ts)h(that)g(are)g(receiv)o (ed)h(from)e(eac)o(h)h(pro)q(cess)117 2028 y(IN)171 b Fl(displs)469 b Fm(in)o(teger)15 b(arra)o(y)f(\(of)g(length)g(group)g (size\).)20 b(En)o(try)15 b Fb(i)f Fm(sp)q(eci\014es)905 2084 y(the)d(displacemen)o(t)e(\(relativ)o(e)g(to)h Fe(recvbuf)p Fm(\))i(at)d(whic)o(h)h(to)g(place)905 2140 y(the)15 b(incoming)c(data)j(from)e(pro)q(cess)k Fb(i)117 2216 y Fm(IN)171 b Fl(recvt)o(yp)q(e)414 b Fm(data)14 b(t)o(yp)q(e)g(of)f (receiv)o(e)j(bu\013er)f(elemen)o(ts)e(\(handle\))117 2291 y(IN)171 b Fl(comm)454 b Fm(comm)o(unicator)11 b(\(handle\))166 2415 y Fr(The)16 b(\\in)g(place")g(option)f(is)h(sp)q(eci\014ed)i(b)o (y)d(passing)h(the)f(v)m(alue)i Fe(MPI)p 1342 2415 13 2 v 14 w(IN)p 1397 2415 V 15 w(PLA)o(CE)d Fr(to)h(the)h(argumen)o(t)75 2472 y Fl(sendbuf)i Fr(at)e(all)h(pro)q(cesses.)23 b Fl(sendcount)c Fr(and)d Fl(sendt)o(yp)q(e)i Fr(are)e(ignored.)23 b(Then)17 b(the)f(input)h(data)e(of)h(eac)o(h)75 2528 y(pro)q(cess)f(is)g(assumed)g(to)f(b)q(e)i(in)g(the)f(area)f(where)h (that)f(pro)q(cess)h(w)o(ould)g(receiv)o(e)h(its)f(o)o(wn)f(con)o (tribution)75 2585 y(to)f(the)h(receiv)o(e)h(bu\013er.)k(Sp)q (eci\014cally)m(,)d(the)e(outcome)f(of)h(a)f(call)i(to)e Fl(MPI)p 1311 2585 14 2 v 16 w(ALLGA)l(THER)i Fr(in)g(the)e(in)i(place) 75 2641 y(case)g(is)h(as)f(if)g(all)i(pro)q(cesses)e(executed)h Fa(n)g Fr(calls)g(to)-32 46 y Fi(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop %%Page: 20 22 20 21 bop 75 -100 a Fr(20)537 b Fh(CHAPTER)16 b(6.)34 b(EXTENDED)15 b(COLLECTIVE)h(OPERA)l(TIONS)170 45 y Fj(MPI_GATHERV\()23 b(MPI_IN_PLACE,)f(0,)h(MPI_DATATYPE_NULL,)f(recvbuf,)h(recvcounts,)862 102 y(displs,)g(recvtype,)g(root,)g(comm)h(\))75 195 y Fr(for)15 b Fj(root)23 b(=)h(0,)f(...,)h(n)f(-)h(1)p Fr(.)166 252 y(If)c Fl(comm)e Fr(is)j(an)f(in)o(tercomm)o(unicator,)h (then)f(eac)o(h)g(pro)q(cess)h(in)g(group)e(A)i(con)o(tributes)f(a)g (data)75 308 y(item;)j(these)d(items)g(are)g(concatenated)g(and)g(the)h (result)f(is)h(stored)e(at)h(eac)o(h)g(pro)q(cess)g(in)h(group)f(B.)75 365 y(Con)o(v)o(ersely)c(the)h(concatenation)f(of)g(the)g(con)o (tributions)h(of)f(the)h(pro)q(cesses)f(in)h(group)f(B)h(is)g(stored)f (at)75 421 y(eac)o(h)i(pro)q(cess)g(in)h(group)f(A.)f(The)h(send)h (bu\013er)f(argumen)o(ts)f(in)i(group)f(A)f(m)o(ust)h(b)q(e)g (consisten)o(t)h(with)75 478 y(the)c(receiv)o(e)h(bu\013er)g(argumen)o (ts)e(in)i(group)f(B,)g(and)g(vice)h(v)o(ersa.)166 534 y(The)f(in-place)j(option)d(is)h(illegal)h(for)e(in)o(tercomm)o (unicators.)75 685 y Fl(MPI)p 160 685 14 2 v 16 w(ALL)l(TO)o (ALL\(sendbuf,)h(sendcount,)i(sendt)o(yp)q(e,)f(recvbuf,)f(recvcount,)g (recvt)o(yp)q(e,)g(comm\))117 762 y Fm(IN)171 b Fl(sendbuf)428 b Fm(starting)14 b(address)h(of)f(send)g(bu\013er)h(\(c)o(hoice\))117 837 y(IN)171 b Fl(sendcount)383 b Fm(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(sen)o(t)i(to)f(eac)o(h)g(pro)q(cess)i(\(in)o (teger\))117 913 y(IN)171 b Fl(sendt)o(yp)q(e)408 b Fm(data)14 b(t)o(yp)q(e)g(of)f(send)i(bu\013er)g(elemen)o(ts)f(\(handle\))117 988 y(OUT)124 b Fl(recvbuf)434 b Fm(address)15 b(of)f(receiv)o(e)h (bu\013er)g(\(c)o(hoice\))117 1063 y(IN)171 b Fl(recvcount)389 b Fm(n)o(um)o(b)q(er)17 b(of)f(elemen)o(ts)h(receiv)o(ed)i(from)c(an)o (y)i(pro)q(cess)i(\(in)o(te-)905 1119 y(ger\))117 1194 y(IN)171 b Fl(recvt)o(yp)q(e)414 b Fm(data)14 b(t)o(yp)q(e)g(of)f (receiv)o(e)j(bu\013er)f(elemen)o(ts)e(\(handle\))117 1270 y(IN)171 b Fl(comm)454 b Fm(comm)o(unicator)11 b(\(handle\))166 1394 y Fr(No)k(in-place)i(is)f(supp)q(orted.)166 1450 y(If)i Fl(comm)e Fr(is)i(an)g(in)o(tercomm)o(unicator,)g(then)g(the)g (outcome)f(is)h(as)g(if)g(eac)o(h)g(pro)q(cess)g(in)g(group)g(A)75 1507 y(sends)c(a)g(message)f(to)g(eac)o(h)h(pro)q(cess)g(in)g(group)g (B,)f(and)h(vice)h(v)o(ersa.)j(The)c Fa(j)s Fr(-th)f(send)i(bu\013er)e (of)h(pro)q(cess)75 1563 y(i)i(in)g(group)f(A)g(should)i(b)q(e)f (consisten)o(t)f(with)h(the)f(i-the)h(receiv)o(e)h(bu\013er)e(of)g(pro) q(cess)g(j)h(in)g(group)f(B,)g(and)75 1620 y(vice)h(v)o(ersa.)189 1726 y Ff(A)n(dvic)n(e)e(to)h(users.)39 b Fr(When)14 b(all-to-all)h(is)f(executed)h(on)e(an)h(in)o(tercomm)o(unication)h (domain,)f(then)189 1783 y(the)20 b(n)o(um)o(b)q(er)g(of)f(data)g (items)h(sen)o(t)g(from)f(pro)q(cesses)h(in)h(group)e(A)h(to)f(pro)q (cesses)i(in)f(group)g(B)189 1839 y(need)e(not)e(equal)i(the)f(n)o(um)o (b)q(er)g(of)g(items)g(sen)o(t)g(in)h(the)f(rev)o(erse)g(direction.)26 b(In)18 b(particular,)g(one)189 1895 y(can)h(ha)o(v)o(e)g (unidirectional)i(comm)o(unication,)g(b)o(y)e(sp)q(ecifying)i Fl(sendcount)h(=)d(0)g Fr(in)h(the)f(rev)o(erse)189 1952 y(direction.)189 2027 y(\()p Ff(End)c(of)i(advic)n(e)f(to)g(users.)p Fr(\))1967 46 y Fi(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop %%Page: 21 23 21 22 bop 75 -100 a Fh(6.4.)34 b(EXTENDED)14 b(COLLECTIVE)j(OPERA)l (TIONS)749 b Fr(21)75 45 y Fl(MPI)p 160 45 14 2 v 16 w(ALL)l(TO)o(ALL)-5 b(V\(sendbuf,)13 b(sendcounts)q(,)h(sdispls,)g (sendt)o(yp)q(e,)g(recvbuf,)e(recvcounts,)i(rdispls,)e(recvt)o(yp)q(e,) 75 102 y(comm\))117 179 y Fm(IN)171 b Fl(sendbuf)428 b Fm(starting)14 b(address)h(of)f(send)g(bu\013er)h(\(c)o(hoice\))117 254 y(IN)171 b Fl(sendcounts)366 b Fm(in)o(teger)20 b(arra)o(y)f(equal) h(to)f(the)h(group)g(size)g(sp)q(ecifying)f(the)905 310 y(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(to)h(send)h(to)f(eac)o(h)g (pro)q(cessor)117 385 y(IN)171 b Fl(sdispls)452 b Fm(in)o(teger)15 b(arra)o(y)f(\(of)g(length)g(group)g(size\).)20 b(En)o(try)15 b Fb(j)f Fm(sp)q(eci\014es)905 442 y(the)20 b(displacemen)o(t)e (\(relativ)o(e)h(to)f Fe(sendbuf)j Fm(from)c(whic)o(h)i(to)905 498 y(tak)o(e)14 b(the)h(outgoing)d(data)i(destined)h(for)e(pro)q(cess) j Fb(j)117 574 y Fm(IN)171 b Fl(sendt)o(yp)q(e)408 b Fm(data)14 b(t)o(yp)q(e)g(of)f(send)i(bu\013er)g(elemen)o(ts)f (\(handle\))117 649 y(OUT)124 b Fl(recvbuf)434 b Fm(address)15 b(of)f(receiv)o(e)h(bu\013er)g(\(c)o(hoice\))117 724 y(IN)171 b Fl(recvcounts)372 b Fm(in)o(teger)20 b(arra)o(y)f(equal)h (to)f(the)h(group)g(size)g(sp)q(ecifying)f(the)905 780 y(n)o(um)o(b)q(er)g(of)f(elemen)o(ts)h(that)g(can)h(b)q(e)g(receiv)o (ed)g(from)d(eac)o(h)905 837 y(pro)q(cessor)117 912 y(IN)171 b Fl(rdispls)453 b Fm(in)o(teger)15 b(arra)o(y)f(\(of)g(length)g(group) g(size\).)20 b(En)o(try)15 b Fb(i)f Fm(sp)q(eci\014es)905 968 y(the)f(displacemen)o(t)e(\(relativ)o(e)g(to)h Fe(recvbuf)i Fm(at)d(whic)o(h)h(to)g(place)905 1025 y(the)j(incoming)c(data)j(from)e (pro)q(cess)k Fb(i)117 1100 y Fm(IN)171 b Fl(recvt)o(yp)q(e)414 b Fm(data)14 b(t)o(yp)q(e)g(of)f(receiv)o(e)j(bu\013er)f(elemen)o(ts)e (\(handle\))117 1175 y(IN)171 b Fl(comm)454 b Fm(comm)o(unicator)11 b(\(handle\))166 1299 y Fr(No)k(in-place)i(is)f(supp)q(orted.)166 1356 y(If)i Fl(comm)e Fr(is)i(an)g(in)o(tercomm)o(unicator,)g(then)g (the)g(outcome)f(is)h(as)g(if)g(eac)o(h)g(pro)q(cess)g(in)g(group)g(A) 75 1412 y(sends)c(a)g(message)f(to)g(eac)o(h)h(pro)q(cess)g(in)g(group) g(B,)f(and)h(vice)h(v)o(ersa.)j(The)c Fa(j)s Fr(-th)f(send)i(bu\013er)e (of)h(pro)q(cess)75 1469 y(i)i(in)g(group)f(A)g(should)i(b)q(e)f (consisten)o(t)f(with)h(the)f(i-the)h(receiv)o(e)h(bu\013er)e(of)g(pro) q(cess)g(j)h(in)g(group)f(B,)g(and)75 1525 y(vice)h(v)o(ersa.)75 1647 y Fg(6.4.3)49 b(Reductions)75 1827 y Fl(MPI)p 160 1827 V 16 w(REDUCE\()15 b(sendbuf,)j(recvbuf,)d(count,)h(datat)o(yp)q (e,)h(op,)e(ro)q(ot,)f(comm\))117 1905 y Fm(IN)171 b Fl(sendbuf)428 b Fm(address)15 b(of)f(send)g(bu\013er)h(\(c)o(hoice\)) 117 1980 y(OUT)124 b Fl(recvbuf)434 b Fm(address)21 b(of)e(receiv)o(e)j (bu\013er)e(\(c)o(hoice,)i(signi\014can)o(t)d(only)g(at)905 2036 y(ro)q(ot\))117 2111 y(IN)171 b Fl(count)466 b Fm(n)o(um)o(b)q(er) 13 b(of)h(elemen)o(ts)f(in)h(send)h(bu\013er)f(\(in)o(teger\))117 2186 y(IN)171 b Fl(datat)o(yp)q(e)408 b Fm(data)14 b(t)o(yp)q(e)g(of)f (elemen)o(ts)h(of)f(send)i(bu\013er)g(\(handle\))117 2262 y(IN)171 b Fl(op)525 b Fm(reduce)16 b(op)q(eration)e(\(handle\)) 117 2337 y(IN)171 b Fl(ro)q(ot)492 b Fm(rank)14 b(of)f(ro)q(ot)h(pro)q (cess)i(\(in)o(teger\))117 2412 y(IN)171 b Fl(comm)454 b Fm(comm)o(unicator)11 b(\(handle\))75 2536 y Fr(The)g(\\in)g(place")g (option)f(is)h(sp)q(eci\014ed)i(b)o(y)d(passing)h(the)g(v)m(alue)g Fe(MPI)p 1201 2536 13 2 v 15 w(IN)p 1257 2536 V 14 w(PLA)o(CE)f Fr(to)f(the)i(argumen)o(t)f Fl(sendbuf)75 2593 y Fr(at)k(the)g(ro)q (ot.)19 b(In)c(suc)o(h)f(case,)h(the)f(input)h(data)f(is)h(tak)o(en)f (at)f(the)i(ro)q(ot)e(from)h(the)g(receiv)o(e)i(bu\013er,)e(where)75 2649 y(it)h(will)i(b)q(e)f(replaced)h(b)o(y)e(the)g(output)g(data.)-32 46 y Fi(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop %%Page: 22 24 22 23 bop 75 -100 a Fr(22)537 b Fh(CHAPTER)16 b(6.)34 b(EXTENDED)15 b(COLLECTIVE)h(OPERA)l(TIONS)166 45 y Fr(If)c Fl(comm)f Fr(is)i(in)o(tercomm)o(unicator,)f(then)h(the)f(call)h(in)o (v)o(olv)o(es)g(a)f(ro)q(ot)g(pro)q(cess)g(in)h(one)g(group)f(\(group) 75 102 y(A\))j(and)h(all)g(pro)q(cesses)g(in)h(the)e(other)g(group)h (\(group)e(B\).)h(All)i(pro)q(cesses)f(in)g(group)g(B)f(pass)h(the)f (same)75 158 y(v)m(alue)g(in)g(argumen)o(t)f Fl(ro)q(ot)p Fr(,)f(whic)o(h)i(is)g(the)f(rank)g(of)g(the)g(ro)q(ot)f(in)i(group)f (A.)g(The)g(ro)q(ot)f(passes)i(the)f(v)m(alue)75 214 y Fe(MPI)p 152 214 13 2 v 14 w(ROOT)h Fr(in)h Fl(ro)q(ot)p Fr(.)k(Only)d(send)f(bu\013er)f(argumen)o(ts)g(are)g(signi\014can)o(t)h (in)h(group)e(B)g(and)h(only)g(receiv)o(e)75 271 y(bu\013er)f(argumen)o (ts)g(are)f(signi\014can)o(t)j(at)d(the)h(ro)q(ot.)75 422 y Fl(MPI)p 160 422 14 2 v 16 w(ALLREDUCE\()g(sendbuf,)i(recvbuf,)f (count,)g(datat)o(yp)q(e,)g(op,)f(comm\))117 499 y Fm(IN)155 b Fl(sendbuf)444 b Fm(starting)14 b(address)h(of)f(send)g(bu\013er)h (\(c)o(hoice\))117 572 y(OUT)108 b Fl(recvbuf)450 b Fm(starting)14 b(address)h(of)f(receiv)o(e)h(bu\013er)g(\(c)o(hoice\))117 645 y(IN)155 b Fl(count)482 b Fm(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts) f(in)h(send)h(bu\013er)f(\(in)o(teger\))117 718 y(IN)155 b Fl(datat)o(yp)q(e)424 b Fm(data)14 b(t)o(yp)q(e)g(of)f(elemen)o(ts)h (of)f(send)i(bu\013er)g(\(handle\))117 791 y(IN)155 b Fl(op)541 b Fm(op)q(eration)14 b(\(handle\))117 864 y(IN)155 b Fl(comm)470 b Fm(comm)o(unicator)11 b(\(handle\))166 988 y Fr(The)16 b(\\in)g(place")g(option)f(is)h(sp)q(eci\014ed)i(b)o(y) d(passing)h(the)f(v)m(alue)i Fe(MPI)p 1342 988 13 2 v 14 w(IN)p 1397 988 V 15 w(PLA)o(CE)d Fr(to)h(the)h(argumen)o(t)75 1045 y Fl(sendbuf)i Fr(at)e(the)g(ro)q(ot.)21 b(In)16 b(suc)o(h)h(case,)e(the)h(input)h(data)f(is)g(tak)o(en)f(at)h(eac)o(h)g (pro)q(cess)g(from)f(the)h(receiv)o(e)75 1101 y(bu\013er,)f(where)g(it) h(will)h(b)q(e)e(replaced)i(b)o(y)e(the)g(output)g(data.)166 1158 y(If)j Fl(comm)f Fr(is)h(in)o(tercomm)o(unicator,)h(then)f(the)h (result)f(of)g(the)g(reduction)i(of)d(the)i(data)e(pro)o(vided)75 1214 y(b)o(y)f(pro)q(cesses)g(in)g(group)g(A)f(is)h(stored)g(at)f(eac)o (h)g(pro)q(cess)h(in)h(group)e(B,)h(and)g(vice)g(v)o(ersa.)21 b(Both)15 b(groups)75 1271 y(should)h(pro)o(vide)g(the)f(same)g Fl(count)i Fr(v)m(alue.)166 1374 y Fn(Discussion:)33 b Fm(W)m(e)13 b(don't)f(ha)o(v)o(e)h(the)h(option)e(of)g(ac)o(hieving)h (unidirectional)f(comm)o(unicati)o(on)e(with)j(in)o(ter-)75 1431 y(comm)o(unicators,)e(with)j(the)g(curren)o(t)h(de\014nition.)j (The)c(same)f(holds)h(for)g(reduce-scatter)j(and)c(scan.)75 1629 y Fl(MPI)p 160 1629 14 2 v 16 w(REDUCE)p 352 1629 V 17 w(SCA)l(TTER\()j(sendbuf,)h(recvbuf,)f(recvcounts,)g(datat)o(yp)q (e,)h(op,)e(comm\))117 1706 y Fm(IN)155 b Fl(sendbuf)444 b Fm(starting)14 b(address)h(of)f(send)g(bu\013er)h(\(c)o(hoice\))117 1779 y(OUT)108 b Fl(recvbuf)450 b Fm(starting)14 b(address)h(of)f (receiv)o(e)h(bu\013er)g(\(c)o(hoice\))117 1852 y(IN)155 b Fl(recvcounts)388 b Fm(in)o(teger)14 b(arra)o(y)f(sp)q(ecifying)g (the)h(n)o(um)o(b)q(er)e(of)h(elemen)o(ts)g(in)f(re-)905 1909 y(sult)i(distributed)h(to)f(eac)o(h)h(pro)q(cess.)21 b(Arra)o(y)14 b(m)o(ust)f(b)q(e)i(iden-)905 1965 y(tical)e(on)h(all)f (calling)f(pro)q(cesses.)117 2038 y(IN)155 b Fl(datat)o(yp)q(e)424 b Fm(data)14 b(t)o(yp)q(e)g(of)f(elemen)o(ts)h(of)f(input)h(bu\013er)h (\(handle\))117 2111 y(IN)155 b Fl(op)541 b Fm(op)q(eration)14 b(\(handle\))117 2184 y(IN)155 b Fl(comm)470 b Fm(comm)o(unicator)11 b(\(handle\))166 2308 y Fr(The)16 b(in)h(place)g(option)f(is)g(sp)q (eci\014ed)j(b)o(y)c(passing)i Fe(MPI)p 1105 2308 13 2 v 14 w(IN)p 1160 2308 V 15 w(PLA)o(CE)e Fr(in)i(the)f Fl(sendbuf)i Fr(argumen)o(t.)j(In)75 2365 y(this)e(case,)g(the)g(input) h(data)e(is)h(tak)o(en)f(from)g(the)h(top)f(of)g(the)h(receiv)o(e)g (bu\013er.)31 b(Note)18 b(that)g(the)h(area)75 2421 y(o)q(ccupied)j(b)o (y)f(the)f(input)i(data)e(ma)o(y)f(b)q(e)j(either)f(longer)g(or)f (shorter)f(than)i(the)f(data)g(\014lled)i(b)o(y)f(the)75 2478 y(output)15 b(data.)166 2534 y(If)f Fl(comm)d Fr(is)j(an)g(in)o (tercomm)o(unicator,)f(then)h(the)g(result)g(of)f(the)g(reduction)i(of) e(the)g(data)g(pro)o(vided)75 2591 y(b)o(y)d(pro)q(cesses)h(in)g(group) f(A)h(is)g(scattered)f(among)f(pro)q(cesses)i(in)h(group)e(B,)g(and)g (vice)i(v)o(ersa.)17 b(Within)12 b(eac)o(h)75 2647 y(group,)k(all)i (pro)q(cesses)f(pro)o(vide)g(the)g(same)f Fl(recvcounts)i Fr(argumen)o(t,)e(and)h(the)g(sum)f(of)h(the)f Fl(recvcounts)75 2704 y Fr(en)o(tries)g(should)g(b)q(e)g(the)f(same)g(for)f(the)i(t)o(w) o(o)e(groups.)1967 46 y Fi(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop %%Page: 23 25 23 24 bop 75 -100 a Fh(6.4.)34 b(EXTENDED)14 b(COLLECTIVE)j(OPERA)l (TIONS)749 b Fr(23)166 45 y Fn(Discussion:)32 b Fm(The)12 b(last)f(restriction)i(is)e(needed)j(so)d(that)h(the)g(length)g(of)f (the)h(send)h(bu\013er)g(b)q(e)f(determined)75 102 y(b)o(y)h(the)i(sum) d(of)h(the)h(lo)q(cal)f Fe(recvcounts)j Fm(en)o(tries.)j(Otherwise,)14 b(a)g(comm)o(unicati)o(on)d(is)i(needed)i(to)f(\014gure)g(out)f(ho)o(w) 75 158 y(man)o(y)f(elemen)o(ts)i(are)g(reduced.)75 325 y Fl(Other)i(op)q(erations)75 506 y(MPI)p 160 506 14 2 v 16 w(BARRIER\()g(comm\))117 583 y Fm(IN)155 b Fl(comm)470 b Fm(comm)o(unicator)11 b(\(handle\))75 707 y Fj(int)23 b(MPI)p 245 707 15 2 v 17 w(Barrier\(MPI)p 526 707 V 16 w(Comm)g(comm\))166 794 y Fr(F)l(or)14 b Fl(MPI-2)p Fr(,)h Fe(comm)e Fr(ma)o(y)h(b)q(e)i(an)f(in)o(tercomm)o(unicator)h(or) e(an)h(in)o(tracomm)o(unicator.)75 945 y Fl(MPI)p 160 945 14 2 v 16 w(SCAN\()g(sendbuf,)j(recvbuf,)d(count,)h(datat)o(yp)q (e,)h(op,)e(comm)e(\))117 1022 y Fm(IN)155 b Fl(sendbuf)444 b Fm(starting)14 b(address)h(of)f(send)g(bu\013er)h(\(c)o(hoice\))117 1097 y(OUT)108 b Fl(recvbuf)450 b Fm(starting)14 b(address)h(of)f (receiv)o(e)h(bu\013er)g(\(c)o(hoice\))117 1172 y(IN)155 b Fl(count)482 b Fm(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(input) g(bu\013er)g(\(in)o(teger\))117 1247 y(IN)155 b Fl(datat)o(yp)q(e)424 b Fm(data)14 b(t)o(yp)q(e)g(of)f(elemen)o(ts)h(of)f(input)h(bu\013er)h (\(handle\))117 1322 y(IN)155 b Fl(op)541 b Fm(op)q(eration)14 b(\(handle\))117 1398 y(IN)155 b Fl(comm)470 b Fm(comm)o(unicator)11 b(\(handle\))166 1522 y Fr(The)18 b(\\in)g(place")g(option)g(is)g(sp)q (eci\014ed)h(b)o(y)f(passing)g Fe(MPI)p 1163 1522 13 2 v 14 w(IN)p 1218 1522 V 15 w(PLA)o(CE)e Fr(in)j(the)e Fl(sendbuf)j Fr(argumen)o(t.)75 1578 y(In)f(this)g(case,)g(the)f(input) i(data)d(is)i(tak)o(en)f(from)g(the)g(receiv)o(e)h(bu\013er,)g(and)g (replaced)g(b)o(y)g(the)f(output)75 1635 y(data.)166 1691 y(This)e(op)q(eration)f(is)h(illegal)h(for)e(in)o(tercomm)o (unicators.)75 1813 y Fg(6.4.4)49 b(Generalized)16 b(All-to-all)j(F)o (unction)75 1946 y Fn(Curren)o(t)14 b(Status:)j Fm(P)o(assed)e(once)166 2050 y Fr(One)h(of)f(the)h(basic)g(data)f(mo)o(v)o(emen)o(t)f(op)q (erations)i(needed)h(in)f(parallel)h(signal)f(pro)q(cessing)h(is)f(the) 75 2106 y(2-D)d(matrix)h(transp)q(ose.)19 b(In)14 b(this)h(section,)f (w)o(e)g(sho)o(w)f(that)g(the)h(existing)h Fl(MPI)e Fr(function)i(that) e(supp)q(ort)75 2163 y(2-D)20 b(matrix)g(transp)q(ose)h(is)g(not)f (su\016cien)o(tly)i(general.)37 b(T)l(o)20 b(address)h(this)g (de\014ciency)l(,)j(w)o(e)c(prop)q(ose)75 2219 y(a)e(new)h(collectiv)o (e)h(function.)30 b(with)19 b(\\W")e(app)q(ended)j(to)e(its)h(name.)29 b(W)l(e)19 b(sp)q(eci\014cally)i(describ)q(e)f(the)75 2276 y Fl(MPI)p 160 2276 14 2 v 16 w(ALL)l(TO)o(ALL)-5 b(W)14 b Fr(function)i(here.)166 2332 y(Consider)e(a)f(2-D)f(matrix,)h (whic)o(h)h(is)g(initially)i(distributed)e(b)o(y)g(striping)g(ro)o(ws)e (o)o(v)o(er)g(the)h(a)o(v)m(ailable)75 2389 y(pro)q(cessors.)35 b(After)20 b(a)g(transp)q(ose)g(op)q(eration,)i(it)e(will)i(b)q(e)f (distributed)h(b)o(y)e(striping)i(columns)f(o)o(v)o(er)75 2445 y(the)16 b(a)o(v)m(ailable)i(pro)q(cessors.)j(This)c(basic)f(data) f(mo)o(v)o(emen)o(t)g(can)h(b)q(e)h(ac)o(heiv)o(ed)g(b)o(y)f(using)g (the)g(function)75 2501 y Fl(MPI)p 160 2501 V 16 w(ALL)l(TO)o(ALL)p Fr(.)166 2558 y(Ho)o(w)o(ev)o(er,)24 b(in)g(addition)h(to)e(mo)o(ving)g (data)g(b)q(et)o(w)o(een)h(pro)q(cessors,)h(the)f(transp)q(ose)f(op)q (eration)75 2614 y(should)18 b(also)e(c)o(hange)h(the)g(la)o(y)o(out)f (of)h(the)f(matrix)h(from)f(ro)o(w)g(ma)s(jor)f(order)h(to)g(column)i (ma)s(jor)d(order)-32 46 y Fi(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop %%Page: 24 26 24 25 bop 75 -100 a Fr(24)537 b Fh(CHAPTER)16 b(6.)34 b(EXTENDED)15 b(COLLECTIVE)h(OPERA)l(TIONS)75 45 y Fr(\()p Ff(i.e.)p Fr(,)11 b(from)f(elemen)o(ts)i(in)g(a)f(ro)o(w)f(b)q(eing)j (con)o(tiguous)e(in)h(memory)l(,)f(to)g(elemen)o(ts)g(in)h(a)f(column)h (b)q(eing)h(con-)75 102 y(tiguous)h(in)h(memory\).)k(Th)o(us)14 b(in)h(addition)g(to)f(mo)o(ving)g(data)g(b)q(et)o(w)o(een)g(pro)q (cessors,)g Fl(MPI)p 1644 102 14 2 v 16 w(ALL)l(TO)o(ALL)75 158 y Fr(should)i(also)f(transp)q(ose)g(eac)o(h)h(\\sub-cub)q(e.")166 214 y(F)l(or)h(matrices)g(whose)g(dimensions)i(are)e(an)g(ev)o(en)h(m)o (ultiple)h(of)e(the)g(n)o(um)o(b)q(er)h(of)f(pro)q(cesses,)h(this)75 271 y(sub-cub)q(e)13 b(tranp)q(ose)f(can)g(easily)h(b)q(e)f(p)q (erformed)g(using)g(the)g(appropriate)g(send)g(and)g(receiv)o(e)h (datat)o(yp)q(es)75 327 y(in)23 b(the)g(call)h(to)e Fl(MPI)p 460 327 V 16 w(ALL)l(TO)o(ALL)p Fr(.)f(F)l(or)h(example,)j(if)e(the)g (source)g(datat)o(yp)q(e)f(steps)g(through)o(t)g(the)75 384 y(subarra)o(y)d(elemen)o(ts)h(ro)o(w)f(\014rst,)h(the)f (destination)i(datat)o(yp)q(e)e(should)i(step)e(through)o(t)g(the)h (subarra)o(y)75 440 y(elemen)o(ts)c(column)g(\014rst.)166 497 y(Ho)o(w)o(ev)o(er,)c(for)g(matrices)g(whose)h(dimensions)h(are)f (not)f(an)g(ev)o(en)h(m)o(ultiple)i(of)d(the)h(n)o(um)o(b)q(er)g(of)f (pro-)75 553 y(cesses)h(a)g(problem)g(o)q(ccurs.)20 b(In)13 b(this)h(case,)f(man)o(y)f(of)h(the)g(sub-cub)q(es)h(will)h(ha)o(v)o(e) d(the)h(same)g(dimensions,)75 610 y(but)18 b(one)g(or)f(more)g(sub-cub) q(es)j(will)f(ha)o(v)o(e)f(a)f(di\013eren)o(t)h(dimension.)29 b(F)l(or)17 b(example,)i(a)f(18x18)e(matrix)75 666 y(distributed)h(o)o (v)o(er)d(4)h(pro)q(cessors)g(w)o(ould)g(con)o(tain)h(the)f(follo)o (wing)h(sub-cub)q(es:)361 772 y Fj(5x5)24 b(5x5)f(4x5)h(4x5)361 829 y(5x5)g(5x5)f(4x5)h(4x5)361 885 y(5x4)g(5x4)f(4x4)h(4x4)361 942 y(5x4)g(5x4)f(4x4)h(4x4)166 1048 y Fr(Ev)o(en)18 b(using)h(the)f(additional)i(\015exibilit)o(y)h(of)c Fl(MPI)p 1047 1048 V 16 w(ALL)l(TO)o(ALL)-5 b(V)18 b Fr(it)g(is)h(imp)q(ossible)h(correctly)f(to)75 1104 y(p)q(erform)j (this)h(transp)q(ose)f(op)q(eration)h(in)g(one)f(step.)42 b(Consider)23 b(the)f(sp)q(eci\014cation)i(of)e(the)h(source)75 1161 y(datat)o(yp)q(e)15 b(for)g(this)i(op)q(eration.)k(The)16 b(\014rst)g(t)o(w)o(o)e(sub-cub)q(es)k(of)d(the)h(\014rst)f(ro)o(w)g (require)i(a)e(v)o(ector)g(t)o(yp)q(e,)75 1217 y(con)o(taining)f(\014v) o(e)g(blo)q(c)o(ks)g(eac)o(h)g(con)o(taining)g(\014v)o(e)f(elemen)o(ts) h(\(with)g(a)f(stride)h(b)q(et)o(w)o(een)g(blo)q(c)o(ks)g(of)f(18\).)18 b(In)75 1274 y(con)o(trast,)e(the)h(v)o(ector)f(t)o(yp)q(e)h(for)f(the) h(second)h(t)o(w)o(o)d(sub-cub)q(es)k(should)f(only)f(con)o(tain)g (four)g(elemen)o(ts.)75 1330 y(Unfortunately)l(,)i Fl(MPI)p 467 1330 V 16 w(ALL)l(TO)o(ALL)-5 b(V)18 b Fr(do)q(es)h(not)g(allo)o(w) f(an)h(arra)o(y)e(of)i(datat)o(yp)q(es)f(to)g(b)q(e)h(sp)q(eci\014ed)i (for)75 1387 y(the)16 b(source)g(bu\013er)f(\(only)h(sizes)h(and)f (displacemen)o(ts\).)22 b(Th)o(us)16 b Fl(MPI)p 1263 1387 V 16 w(ALL)l(TO)o(ALL)-5 b(V)15 b Fr(is)h(not)g(su\016cien)o(tly) 75 1443 y(general)g(to)e(handle)j(matrix)e(tranp)q(osition.)166 1500 y(Note:)33 b(The)22 b(destination)h(datat)o(yp)q(e)e(for)g(the)h (ab)q(o)o(v)o(e)g(op)q(eration)g(can)g(b)q(e)h(correctly)f(sp)q (eci\014ed)75 1556 y(to)g Fl(MPI)p 223 1556 V 16 w(ALL)l(TO)o(ALL)-5 b(V)p Fr(.)22 b(The)g(\014rst)h(t)o(w)o(o)e(sub-cub)q(es)j(of)e(the)h (\014rst)f(column)h(require)h(a)e(v)o(ector)g(t)o(yp)q(e)75 1613 y(con)o(taining)c(\014v)o(e)e(blo)q(c)o(ks)i(eac)o(h)f(con)o (taining)g(one)g(elemen)o(t.)26 b(If)17 b(the)g(stride)g(of)f(this)h (datat)o(yp)q(e)g(is)g(set)g(to)75 1669 y(one)f(\(using)h Fl(MPI)p 382 1669 V 16 w(TYPE)p 515 1669 V 17 w(STRUCT)p Fr(\))f(the)h(\014rst)f(t)o(w)o(o)e(sub-cub)q(es)k(can)f(b)q(e)g(sp)q (eci\014ed)h(b)o(y)e(using)h(a)f(coun)o(t)75 1725 y(of)h(\014v)o(e.)25 b(The)17 b(second)h(t)o(w)o(o)d(sub-cub)q(es)k(of)e(the)g(\014rst)f (column)i(can)f(use)h(the)f(same)g(datat)o(yp)q(e,)f(so)h(long)75 1782 y(as)e(they)g(sp)q(ecify)i(a)d(coun)o(t)h(of)g(four.)166 1838 y(The)10 b(follo)o(wing)h(function)g(is)g(the)f(most)f(general)i (form)e(of)h Fj(All-to-all)p Fr(.)17 b(Lik)o(e)11 b Fl(MPI)p 1584 1838 V 16 w(TYPE)p 1717 1838 V 17 w(STRUCT)p Fr(,)75 1895 y(the)i(most)g(general)h(t)o(yp)q(e)f(constructor,)g Fl(MPI)p 853 1895 V 16 w(ALL)l(TO)o(ALL)-5 b(W)12 b Fr(allo)o(ws)i(sep) q(erate)f(sp)q(eci\014cation)j(of)d(coun)o(t,)75 1951 y(displacemen)o(t)k(and)e(datat)o(yp)q(e.)20 b(In)c(addition,)g(to)f (allo)o(w)g(maxim)o(um)g(\015exibili)q(t)o(y)l(,)i(the)f(displacemen)o (t)g(of)75 2008 y(blo)q(c)o(ks)g(within)g(the)g(send)f(and)h(receiv)o (e)g(bu\013ers)f(is)h(sp)q(eci\014ed)h(in)f(b)o(ytes.)189 2114 y Ff(R)n(ationale.)37 b Fr(The)12 b Fl(MPI)p 603 2114 V 16 w(ALL)l(TO)o(ALL)-5 b(W)10 b Fr(function)j(generalizes)f(sev) o(eral)g(MPI)f(functions)i(b)o(y)e(care-)189 2170 y(fully)k(selecting)g (the)g(input)g(argumen)o(ts.)j(F)l(or)c(example,)g(b)o(y)g(making)h (all)g(but)f(one)g(pro)q(cess)g(ha)o(v)o(e)189 2227 y Fj(sendcounts[i])22 b(=)h(0)p Fr(,)15 b(this)h(ac)o(hiev)o(es)f(an)h Fj(MPI)p 1025 2227 15 2 v 16 w(SCATTERW)e Fr(function.)21 b(\()p Ff(End)16 b(of)g(r)n(ationale.)p Fr(\))1967 46 y Fi(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop %%Page: 25 27 25 26 bop 75 -100 a Fh(6.4.)34 b(EXTENDED)14 b(COLLECTIVE)j(OPERA)l (TIONS)749 b Fr(25)75 45 y Fl(MPI)p 160 45 14 2 v 16 w(ALL)l(TO)o(ALL)-5 b(W\(sendbuf,)20 b(sendcounts,)i(sdispls,)e(sendt)o (yp)q(es,)i(recvbuf,)d(recvcounts,)h(rdispls,)g(recv-)75 102 y(t)o(yp)q(es,)c(comm\))117 179 y Fm(IN)155 b Fl(sendbuf)444 b Fm(starting)14 b(address)h(of)f(send)g(bu\013er)117 252 y(IN)155 b Fl(sendcounts)382 b Fm(in)o(teger)20 b(arra)o(y)f(equal) h(to)f(the)h(group)g(size)g(sp)q(ecifying)f(the)905 309 y(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(to)h(send)h(to)f(eac)o(h)g (pro)q(cessor)117 382 y(IN)155 b Fl(sdispls)468 b Fm(in)o(teger)16 b(arra)o(y)f(\(of)g(length)g(group)g(size\).)23 b(En)o(try)15 b(j)g(sp)q(eci\014es)905 438 y(the)k(displacemen)o(t)f(in)g(b)o(ytes)h (\(relativ)o(e)f(to)g Fe(sendbuf)p Fm(\))j(from)905 495 y(whic)o(h)13 b(to)f(tak)o(e)h(the)g(outgoing)f(data)g(destined)i(for)e (pro)q(cess)i(j)117 568 y(IN)155 b Fl(sendt)o(yp)q(es)407 b Fm(arra)o(y)10 b(of)g(datat)o(yp)q(es)g(\(of)g(length)g(group)g (size\).)17 b(En)o(try)11 b(j)f(sp)q(ec-)905 625 y(i\014es)k(the)h(t)o (yp)q(e)f(of)g(data)f(to)h(send)h(to)e(pro)q(cess)j(j)117 698 y(OUT)108 b Fl(recvbuf)450 b Fm(address)15 b(of)f(receiv)o(e)h (bu\013er)117 772 y(IN)155 b Fl(recvcounts)388 b Fm(in)o(teger)20 b(arra)o(y)f(equal)h(to)f(the)h(group)g(size)g(sp)q(ecifying)f(the)905 828 y(n)o(um)o(b)q(er)g(of)f(elemen)o(ts)h(that)g(can)h(b)q(e)g(receiv) o(ed)g(from)d(eac)o(h)905 884 y(pro)q(cessor)117 958 y(IN)155 b Fl(rdispls)469 b Fm(in)o(teger)16 b(arra)o(y)f(\(of)g (length)g(group)g(size\).)24 b(En)o(try)15 b(i)g(sp)q(eci\014es)905 1014 y(the)c(displacemen)o(t)e(in)g(b)o(ytes)h(\(relativ)o(e)g(to)g Fe(recvbuf)p Fm(\))h(at)f(whic)o(h)905 1071 y(to)k(place)g(the)h (incoming)c(data)j(from)e(pro)q(cess)j(i)117 1144 y(IN)155 b Fl(recvt)o(yp)q(es)413 b Fm(arra)o(y)10 b(of)g(datat)o(yp)q(es)h (\(of)e(length)i(group)f(size\).)17 b(En)o(try)11 b(i)f(sp)q(ec-)905 1201 y(i\014es)k(the)h(t)o(yp)q(e)f(of)g(data)f(receiv)o(ed)i(from)e (pro)q(cess)i(i)117 1274 y(IN)155 b Fl(comm)470 b Fm(comm)o(unicator)11 b(\(handle\))75 1398 y Fj(int)23 b(MPI)p 245 1398 15 2 v 17 w(Alltoallw\(void*)f(sendbuf,)h(int*)g(sendcounts,)f(int*)i (sdispls,)393 1455 y(MPI)p 468 1455 V 17 w(Datatype*)f(sendtypes,)f (void*)h(recvbuf,)g(int*)g(recvcounts,)393 1511 y(int*)g(rdispls,)g (MPI)p 802 1511 V 17 w(Datatype*)g(recvtypes,)f(MPI)p 1392 1511 V 17 w(Comm)h(comm\))75 1598 y(MPI)p 150 1598 V 17 w(ALLTOALLW\(SENDBUF,)e(SENDCOUNTS,)i(SDISPLS,)f(SENDTYPES,)h (RECVBUF,)g(RECVCOUNTS,)393 1654 y(RDISPLS,)g(RECVTYPES,)f(COMM\))170 1711 y(INTEGER)h(SENDBUF,)g(SENDCOUNTS\(*\),)f(SDISPLS\(*\),)g (SENDTYPES\(*\),)h(RECVBUF,)170 1767 y(RECVBUFS\(*\),)g (RECVCOUNTS\(*\),)f(RDISPLS\(*\),)g(RECVTYPES\(*\),)g(COMM,)h(IERR)75 1854 y(int)g(MPI::Alltoallw\(void*)f(sendbuf,)g(int)i(sendcounts[],)e (const)393 1910 y(int)i(sdispls[],const)d(MPI::Datatype)i(sendtypes[],) f(void*)h(recvbuf,)393 1967 y(int)h(recvcounts[],)e(const)h(int)g (rdispls[],const)393 2023 y(MPI::Datatype)f(recvtypes[],)g(MPI::Comm)h (comm\))166 2109 y Fr(The)17 b Fj(j)p Fr(-th)g(blo)q(c)o(k)h(sen)o(t)e (from)g(pro)q(cess)i Fj(i)e Fr(is)i(receiv)o(ed)g(b)o(y)f(pro)q(cess)g Fj(j)g Fr(and)g(is)g(placed)h(in)g(the)f Fj(i)p Fr(-th)75 2166 y(blo)q(c)o(k)f(of)f Fl(recvbuf)p Fr(.)20 b(These)c(blo)q(c)o(ks)g (need)g(not)f(all)h(ha)o(v)o(e)f(the)g(same)g(size.)166 2222 y(The)c(t)o(yp)q(e)h(signature)f(asso)q(ciated)g(with)h Fl(sendcounts[j])q(,)i(sendt)o(yp)q(es[j])h Fr(at)10 b(pro)q(cess)i Fj(i)f Fr(m)o(ust)f(b)q(e)i(equal)75 2279 y(to)17 b(the)h(t)o(yp)q(e)g(signature)h(asso)q(ciated)f(with)g Fl(recvcounts[i],)i(recvt)o(yp)q(es[i])g Fr(at)d(pro)q(cess)h Fj(j)p Fr(.)28 b(This)19 b(implies)75 2335 y(that)10 b(the)h(amoun)o(t)g(of)f(data)h(sen)o(t)f(m)o(ust)h(b)q(e)h(equal)f(to) g(the)g(amoun)o(t)f(of)h(data)f(receiv)o(ed,)j(pairwise)f(b)q(et)o(w)o (een)75 2392 y(ev)o(ery)j(pair)h(of)e(pro)q(cesses.)21 b(Distinct)16 b(t)o(yp)q(e)f(maps)g(b)q(et)o(w)o(een)g(sender)h(and)f (receiv)o(er)h(are)f(still)i(allo)o(w)o(ed.)166 2448 y(The)e(outcome)g(is)h(as)f(if)g(eac)o(h)h(pro)q(cess)f(sen)o(t)g(a)g (message)g(to)f(ev)o(ery)h(other)g(pro)q(cess)h(with,)189 2533 y Fj(MPI)p 264 2533 V 16 w(Send)p Fr(\()p Fj(sendbuf)9 b Fr(+)h Fj(sdispls)p Fr([)p Fj(i)p Fr(])p Fa(;)e Fj(sendcoun)o(ts)p Fr([)p Fj(i)p Fr(])o Fa(;)f Fj(sendtyp)o(es)p Fr([)p Fj(i)p Fr(])o Fa(;)h Fj(i)o Fa(;)g(:)o(::)o Fr(\))p Fa(;)75 2618 y Fr(and)15 b(receiv)o(ed)i(a)e(message)f(from)h(ev)o(ery)g(other) g(pro)q(cess)g(with)h(a)f(call)h(to)189 2704 y Fj(MPI)p 264 2704 V 16 w(Recv)p Fr(\()p Fj(recvbuf)9 b Fr(+)h Fj(rdispls)p Fr([)p Fj(i)p Fr(])p Fa(;)e Fj(recvcoun)o(ts)p Fr([)p Fj(i)p Fr(])o Fa(;)f Fj(recvtyp)o(es)p Fr([)p Fj(i)p Fr(])o Fa(;)h Fj(i)o Fa(;)g(:)o(::)o Fr(\))p Fa(:)-32 46 y Fi(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop %%Page: 26 28 26 27 bop 75 -100 a Fr(26)537 b Fh(CHAPTER)16 b(6.)34 b(EXTENDED)15 b(COLLECTIVE)h(OPERA)l(TIONS)166 45 y Fr(All)e(argumen)o (ts)e(on)h(all)h(pro)q(cesses)g(are)e(signi\014can)o(t.)21 b(The)13 b(argumen)o(t)f Fl(comm)f Fr(m)o(ust)i(ha)o(v)o(e)f(describ)q (e)75 102 y(the)j(same)g(comm)o(unicator)g(on)g(all)h(pro)q(cesses.) -1001 b Fk(>)15 b Fi(\(Jan\))166 158 y Fr(A)g(clari\014cation)i(is)e (that)g(no)g(in-place)i(supp)q(ort)f(is)f(o\013ered.)-117 160 y Fk(?)g Fi(\(Jan\))75 298 y Fo(6.5)59 b(Exclusive)18 b(Scan)75 447 y Fn(Curren)o(t)c(Status:)j Fm(P)o(assed)e(once)166 551 y Fr(MPI-1)g(pro)o(vides)h(an)f(inclusiv)o(e)i(scan)f(op)q (eration.)k(The)15 b(exclusiv)o(e)i(scan)e(is)h(describ)q(ed)h(here.)75 702 y Fl(MPI)p 160 702 14 2 v 16 w(EXSCAN\()f(sendbuf,)h(recvbuf,)f (count,)g(datat)o(yp)q(e,)g(op,)f(comm)e(\))117 779 y Fm(IN)155 b Fl(sendbuf)444 b Fm(starting)14 b(address)h(of)f(send)g (bu\013er)h(\(c)o(hoice\))117 851 y(OUT)108 b Fl(recvbuf)450 b Fm(starting)14 b(address)h(of)f(receiv)o(e)h(bu\013er)g(\(c)o (hoice\))117 923 y(IN)155 b Fl(count)482 b Fm(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(input)g(bu\013er)g(\(in)o(teger\))117 995 y(IN)155 b Fl(datat)o(yp)q(e)424 b Fm(data)14 b(t)o(yp)q(e)g(of)f (elemen)o(ts)h(of)f(input)h(bu\013er)h(\(handle\))117 1067 y(IN)155 b Fl(op)541 b Fm(op)q(eration)14 b(\(handle\))117 1139 y(IN)155 b Fl(comm)470 b Fm(comm)o(unicator)11 b(\(handle\))75 1263 y Fj(int)23 b(int)h(MPI)p 341 1263 15 2 v 17 w(Exscan\(void*)e (sendbuf,)h(void*)g(recvbuf,)g(int)g(count,)g(MPI)p 1575 1263 V 17 w(Datatype)393 1320 y(datatype,)g(MPI)p 707 1320 V 17 w(Op)g(op,)h(MPI)p 963 1320 V 16 w(Comm)g(comm)f(\))75 1406 y(MPI)p 150 1406 V 17 w(EXSCAN\(SENDBUF,)f(RECVBUF,)g(COUNT,)h (DATATYPE,)g(OP,)g(COMM,)h(IERROR\))f Fl(<)p Fj(type>)393 1463 y(SENDBUF\(*\),)g(RECVBUF\(*\))75 1519 y(INTEGER)g(COUNT,)g (DATATYPE,)g(OP,)g(COMM,)g(IERROR)166 1606 y Fl(MPI)p 251 1606 14 2 v 16 w(EXSCAN)g Fr(is)f(used)h(to)e(p)q(erform)h(a)f (pre\014x)h(reduction)h(on)f(data)f(distributed)j(across)d(the)75 1662 y(group.)h(The)17 b(v)m(alue)g(in)g Fl(recvbuf)g Fr(on)f(the)g(pro)q(cess)g(with)h(rank)f(0)f(is)i(unde\014ned.)25 b(The)16 b(v)m(alue)h(in)g Fl(recvbuf)75 1719 y Fr(on)c(the)g(pro)q (cess)g(with)g(rank)f(1)h(is)g(de\014ned)h(as)f(the)g(v)m(alue)h(in)f Fl(sendbuf)i Fr(on)e(the)g(pro)q(cess)g(with)g(rank)g(0.)19 b(F)l(or)75 1775 y(pro)q(cesses)e(with)g(rank)g Fa(i)e(>)h Fr(1,)g(the)h(op)q(eration)g(returns,)g(in)h(the)f(receiv)o(e)g (bu\013er)g(of)g(the)g(pro)q(cess)g(with)75 1832 y(rank)g Fa(i)p Fr(,)f(the)i(reduction)g(of)e(the)h(v)m(alues)h(in)g(the)f(send) h(bu\013ers)f(of)f(pro)q(cesses)i(with)f(ranks)g(0)p Fa(;)8 b(:)g(:)g(:)t(;)g(i)j Fk(\000)g Fr(1)75 1888 y(\(inclusiv)o (e\).)21 b(The)15 b(t)o(yp)q(e)f(of)g(op)q(erations)g(supp)q(orted,)h (their)g(seman)o(tics,)f(and)g(the)g(constrain)o(ts)g(on)g(send)75 1944 y(and)h(receiv)o(e)i(bu\013ers)e(are)f(as)h(for)g Fl(MPI)p 747 1944 V 16 w(REDUCE)p Fr(.)166 2048 y Fn(Discussion:)22 b Fm(Do)17 b(w)o(e)h(guaren)o(tee)g(that)g(the)g Fb(MPI)p 986 2048 V 15 w(Op)f Fm(is)g(not)g(called)g(on)g(the)h(pro)q(cess)h (with)e(rank)h(1)f(\(or)75 2105 y(zero\)?)h(Note)13 b(that)e(since)i (the)f(op)q(eration)g(do)q(es)g(not)g(get)g(an)o(y)f(information)e(on)j (the)g(rank)g(of)f(the)h(calling)f(pro)q(cess,)75 2161 y(it)j(can't)f(get)h(an)o(y)g(indication)f(that)h(it)f(is)h(to)g(p)q (erform)f(a)g(di\013eren)o(t)i(op)q(eration)f(\(cop)o(y)g(rather)h (than)e(reduce\).)189 2293 y Ff(R)n(ationale.)77 b Fr(The)22 b(exclusiv)o(e)h(scan)f(is)g(more)f(general)h(than)f(the)h(inclusiv)o (e)i(scan)d(pro)o(vided)189 2349 y(in)d(MPI-1)g(as)f Fl(MPI)p 532 2349 V 16 w(SCAN)p Fr(.)h(An)o(y)g(inclusiv)o(e)i(scan)e (op)q(eration)g(can)g(b)q(e)g(ac)o(hiev)o(ed)h(b)o(y)e(using)i(the)189 2406 y(exclusiv)o(e)e(scan)f(and)h(then)f(lo)q(cally)i(com)o(bining)f (the)f(lo)q(cal)h(con)o(tribution.)23 b(Note)16 b(that)f(for)h(non-)189 2462 y(in)o(v)o(ertable)e(op)q(erations)g(suc)o(h)g(as)f Fl(MPI)p 858 2462 V 16 w(MAX)p Fr(,)g(the)h(exclusiv)o(e)h(scan)f(can)g (not)f(b)q(e)h(found)g(with)g(the)189 2519 y(inclusiv)o(e)j(scan.)189 2591 y(The)i(reason)g(that)g(MPI-1)g(c)o(ho)q(ose)h(the)f(inclusiv)o(e) j(scan)e(is)g(that)f(the)g(de\014nition)i(of)e(b)q(eha)o(vior)189 2647 y(on)e(pro)q(cesses)h(zero)f(and)g(one)h(w)o(as)f(though)o(t)f(to) h(o\013er)f(to)q(o)h(man)o(y)g(complexities)i(in)g(de\014nition,)189 2704 y(particularly)d(for)f(user-de\014ned)i(op)q(erations.)j(\()p Ff(End)15 b(of)i(r)n(ationale.)p Fr(\))1967 46 y Fi(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop %%Page: 27 29 27 28 bop 75 377 a Fp(Biblio)q(graph)m(y)75 600 y Fr([1])22 b(Message)15 b(P)o(assing)i(In)o(terface)f(F)l(orum.)23 b(MPI:)16 b(A)g(Message-Passing)g(In)o(terface)g(Standard.)23 b(T)l(ec)o(h-)146 656 y(nical)f(Rep)q(ort)g(Computer)f(Science)i (Departmen)o(t)e(T)l(ec)o(hnical)i(Rep)q(ort)f(CS-94-230,)f(Univ)o (ersit)o(y)146 713 y(of)d(T)l(ennessee,)j(Kno)o(xville,)g(TN,)d(Ma)o(y) g(5)h(1994.)29 b(T)l(o)19 b(app)q(ear)g(in)g(the)g(In)o(ternational)h (Journal)f(of)146 769 y(Sup)q(ercomputing)d(Applications,)h(V)l(olume)f (8,)f(Num)o(b)q(er)h(3/4,)d(1994.)75 863 y([2])22 b(P)o(erry)10 b(P)o(arto)o(w)f(and)j(Dennis)g(Cottel.)h(Scalable)f(Programming)e(En)o (vironmen)o(t.)k(T)l(ec)o(hnical)f(Rep)q(ort)146 919 y(1672,)22 b(Na)o(v)m(al)g(Command)f(Con)o(trol)g(and)h(Ocean)h(Surv)o (eillance)h(Cen)o(ter)d(\(NRAD\),)g(Septem)o(b)q(er)146 976 y(1994.)75 1070 y([3])h(An)o(thon)o(y)e(Skjellum,)k(Nathan)d(E.)g (Doss,)g(and)g(Kishore)h(Visw)o(anathan.)37 b(In)o(ter-comm)o(unicator) 146 1126 y(extensions)14 b(to)g(MPI)g(in)g(the)h(MPIX)f(\(MPI)f (eXtension\))i(Library)l(.)j(T)l(ec)o(hnical)e(rep)q(ort,)e (Mississippi)146 1183 y(State)g(Univ)o(ersit)o(y)i(|)g(Dept.)e(of)h (Computer)g(Science,)i(April)f(1994.)j(Draft)14 b(v)o(ersion.)-32 46 y Fi(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)952 2828 y Fr(27)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF .