(original) (raw)

%!PS-Adobe-2.0 %%Creator: dvips 5.495 Copyright 1986, 1992 Radical Eye Software %%Title: paper.dvi %%CreationDate: Wed Feb 1 13:27:37 1995 %%Pages: 8 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%EndComments %DVIPSCommandLine: dvips -f paper.dvi %DVIPSSource: TeX output 1995.02.01:1327 %%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 /@rigin{isls{[0 -1 1 0 0 0] concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize -72 div mul 0 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 (/homes/d2/migod/papers/CASCON93-ConformPaper/paper.dvi) @start /Fa 13 122 df<000FF008007FFE3801FC07F807E001F80F8000781F0000783F0000383E000038 7E0000187C000018FC000000FC000000FC000000FC000000FC000000FC000000FC007FFFFC007F FF7C0001F87E0001F83E0001F83F0001F81F0001F80F8001F807E001F801FC07F8007FFE78000F F818201C7D9B26>71 D77 D<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07C0 F807C0F807C0F807C0780BC03E13F80FE1F815127F9117>97 D<03FC000E0E001C1F003C1F0078 1F00780E00F80000F80000F80000F80000F80000F800007800007801803C01801C03000E0E0003 F80011127E9115>99 D<000FF0000FF00001F00001F00001F00001F00001F00001F00001F00001 F00001F001F9F00F07F01C03F03C01F07801F07801F0F801F0F801F0F801F0F801F0F801F0F801 F07801F07801F03C01F01C03F00F0FFE03F9FE171D7E9C1B>I<01FC000F07001C03803C01C078 01C07801E0F801E0F801E0FFFFE0F80000F80000F800007800007C00603C00601E00C00F038001 FC0013127F9116>I<007F0001E38003C7C00787C00F87C00F83800F80000F80000F80000F8000 0F8000FFF800FFF8000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8000 0F80000F80000F80000F80007FF8007FF800121D809C0F>I104 D<1E003F003F003F003F001E00000000000000000000000000FF00FF001F001F001F001F 001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D0D>I108 D<01FC000F07801C01C03C01E07800F07800F0 F800F8F800F8F800F8F800F8F800F8F800F87800F07800F03C01E01E03C00F078001FC0015127F 9118>111 D114 D121 D E /Fb 34 122 df<307C7C3C0C1C38F0E006097A8312>44 D<60F0F0600404798312>46 D<030007000F001F00FF00F7000700070007000700070007000700070007000700070007007FF0 7FF00C147E9312>49 D<0F803FE070F0F078E038E038403800380078007000F001E003C007800F 001E0038387038FFF8FFF80D147E9312>I<60F0F06000000000000060F0F060040E798D12>58 D<03E60FFE1C3E381E781E700EF00EE000E000E000E000E000E000F00E700E780E381E1C3C0FF8 03E00F147F9312>67 DI70 D73 D76 D<1F303FF070F0E0F0E070E070F000F0007F003FE00FF000F000780038E0 38E038F078F070FFE0CF800D147E9312>83 DI91 D93 D<3F807FE070F0207000 700FF03FF07870F070E070E070F0F07FFE1F3E0F0E7E8D12>97 DI<07F01FF8 38387010F000E000E000E000E000F000703838781FF007E00D0E7E8D12>I<01F801F800380038 0038003807B81FF838787078F038E038E038E038E038F038707878F81FFF0FBF10147F9312>I< 07801FE038F07078F038E038FFF8FFF8E000F000703838781FF007C00D0E7E8D12>I<007E01FF 03C7038203800380FFFEFFFE03800380038003800380038003800380038003807FFC7FFC101480 9312>I<0F9E1FFF38E7707070707070707038E03FC07F8070003FE03FF87FFCF01EE00EE00EE0 0EF01E783C3FF80FE010167F8D12>I<06000F000F000600000000000000FF00FF000700070007 000700070007000700070007000700FFF8FFF80D157D9412>105 D107 DIII<0F803FE038E07070E038E038E038E038E038F078707038E03FE00F800D0E7E 8D12>II114 D<1FF07FF0E070C070E000FF003FE00FF00078E018E018F038FFF0DF C00D0E7E8D12>I<0E000E000E000E00FFF8FFF80E000E000E000E000E000E000E000E380E380E 7807F003C00D127F9112>III121 D E /Fc 12 117 df<00007F00800003808100000E00630000380027000070001F0000E0000E0001 C0000E000380000E000700000E000F000004000E000004001E000004003C000004003C00000800 780000000078000000007800000000F000000000F000000000F000000000F000000000F0000000 00E000000000E000002000E000002000E000004000E000004000F0000080007000008000700001 0000380002000018000400001C0008000006003000000381C0000000FE000000212479A223>67 D<00FFF8000F00000F00000F00001E00001E00001E00001E00003C00003C00003C00003C000078 0000780000780000780000F00000F00000F00000F00001E00001E00001E00001E00003C00003C0 0003C00003C0000780000780000780000780000F8000FFF80015227DA113>73 D<00F8C00185C00705C00E03800E03801C03803C0380380700780700780700780700F00E00F00E 00F00E00F00E10F01C20701C20703C20305C40308C400F078014157B9419>97 D<00F803840E021C023C0238027804F018FFE0F000F000E000E000E000E000E002E00260047018 30600F800F157A9416>101 D<01E01FC001C001C001C003800380038003800700070007000700 0E000E000E000E001C001C001C001C0038003800380038007000700070007100E200E200E200E2 00640038000B237CA20C>108 D<1C0F80F8002610C10C00476066060087807807008780780700 870070070087007007000E00E00E000E00E00E000E00E00E000E00E00E001C01C01C001C01C01C 001C01C01C001C01C0382038038038403803807040380380708038038030807007003100300300 1E0023157B9428>I<1C0F002631C04740C08780E08780E08700E08700E00E01C00E01C00E01C0 0E01C01C03801C03801C03801C0704380708380E08380E103806107006203003C016157B941B> I<007E0001C3000381800701C00E01C01C01E03C01E03801E07801E07801E07801E0F003C0F003 C0F00380F00780700700700E00700C0030180018700007C00013157B9419>I<01C1F002621804 741C08780C08700E08700E08701E00E01E00E01E00E01E00E01E01C03C01C03C01C03C01C07803 807003807003C0E003C1C0072380071E000700000700000E00000E00000E00000E00001C00001C 00001C0000FFC000171F7F9419>I<1C1F002620804741C08783C08703C08701808700000E0000 0E00000E00000E00001C00001C00001C00001C0000380000380000380000380000700000300000 12157B9415>114 D<00FC000183000200800401800C03800C03000C00000F00000FF00007FC00 03FE00003E00000F00000700700700F00600F00600E004004008002030001FC00011157D9414> I<00C001C001C001C001C003800380038003800700FFF8070007000E000E000E000E001C001C00 1C001C003800380038003810702070207040708031001E000D1F7C9E10>I E /Fd 33 120 df<01800380038007800F807F80FF807380038003800380038003800380038003 800380038003800380038003807FF87FFC7FF80E197C9816>49 D<07E0001FF8007FFE00783F00 F00F00F00780F00380F00380000380000380000780000700000F00001E00003C0000780000F000 03E0000780000F00001E03803C03807FFF80FFFF807FFF8011197E9816>I<7FF800FFFE007FFF 001C0F001C07801C03801C03801C03801C07801C07001FFF001FFE001FFE001C1F001C03801C03 C01C01C01C01C01C01C01C01C01C03C01C07807FFF80FFFF007FFC0012197F9816>66 D<01F18007FF800FFF801F0F803C0780780780780380700380F00000E00000E00000E00000E000 00E00000E00000E00000F000007003807803807803803C07801F0F000FFE0007FC0001F0001119 7E9816>I<7FF800FFFE007FFF001C0F001C07801C03C01C01C01C01C01C01E01C00E01C00E01C 00E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C03C01C07801C0F807FFF00FFFE007F F8001319809816>I70 D73 D76 D<7E1FC0FF3FE07F1FC01D07001D87001D87001D87001DC7001DC7001CC7001CC700 1CE7001CE7001CE7001C67001C67001C77001C77001C37001C37001C37001C17007F1F00FF9F00 7F0F0013197F9816>78 D<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C 03C01C03801C0F801FFF001FFE001FF8001C00001C00001C00001C00001C00001C00001C00007F 0000FF80007F000012197F9816>80 D<7FE000FFF8007FFC001C1E001C0F001C07001C07001C07 001C07001C0F001C1E001FFC001FF8001FFC001C1C001C0E001C0E001C0E001C0E001C0E201C0E 701C0E707F07E0FF87E07F03C014197F9816>82 D<07E3001FFF007FFF00781F00F00F00E00700 E00700E00000F000007800007F80001FF00007FC0000FE00000F00000780000380000380E00380 E00380F00780F80F00FFFE00FFFC00C7F00011197E9816>I<7FFFE0FFFFE0FFFFE0E0E0E0E0E0 E0E0E0E0E0E0E000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0 0000E00000E00000E00000E00007FC000FFE0007FC0013197F9816>I<1FE0007FF8007FFC0078 3C00301E00000E00000E0003FE001FFE007E0E00F00E00E00E00E00E00F01E00F83E007FFFE03F E7E00F83E013127E9116>97 D<7E0000FE00007E00000E00000E00000E00000E00000E3E000EFF 800FFFC00F83E00F01E00E00F00E00F00E00700E00700E00700E00700E00F00F00E00F01E00F83 C00FFFC00EFF00063C001419809816>I<03F80FFE1FFE3C1E780C7000F000E000E000E000E000 F000700778073E0F1FFE0FFC03F010127D9116>I<003F00007F00003F00000700000700000700 00070003C7000FF7003FFF003C1F00780F00F00700F00700E00700E00700E00700E00700F00700 F00F00781F007C3F003FFFE01FF7F007C7E014197F9816>I<03E00FF81FFC3C1E780E7007E007 FFFFFFFFFFFFE000E000700778073C0F1FFE0FFC03F010127D9116>I<001F00007F8000FF8001 E78001C30001C00001C0007FFF00FFFF00FFFF0001C00001C00001C00001C00001C00001C00001 C00001C00001C00001C00001C00001C0003FFE007FFF003FFE0011197F9816>I<03E3C00FFFE0 1FFFE01E3CC03C1E00380E00380E00380E003C1E001E3C001FFC001FF8003BE000380000380000 1FFC001FFF003FFFC07803C0F001E0E000E0E000E0E000E0F001E07C07C03FFF800FFE0003F800 131C7F9116>I<7E0000FE00007E00000E00000E00000E00000E00000E3C000EFF000FFF800F87 800F03800F03800E03800E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7 F87FC7F01519809816>I<018003C003C0018000000000000000007FC07FC07FC001C001C001C0 01C001C001C001C001C001C001C001C001C07FFFFFFF7FFF101A7D9916>I<7E0000FE00007E00 000E00000E00000E00000E00000E7FE00E7FE00E7FE00E0F000E1E000E3C000E78000EF0000FF0 000FF8000FBC000F1E000E0E000E07000E07807F87F0FFCFF07F87F01419809816>107 DII<7E3C00FEFF007FFF800F8780 0F03800F03800E03800E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F8 7FC7F01512809116>I<03E0000FF8001FFC003C1E00780F00700700E00380E00380E00380E003 80E00380F00780700700780F003C1E001FFC000FF80003E00011127E9116>I<7E3E00FEFF807F FFC00F83E00F01E00E00F00E00F00E00700E00700E00700E00700E00F00F00E00F01E00F83C00F FFC00EFF000E3C000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000141B8091 16>I114 D<0FEC3FFC7FFCF03CE01CE01C F0007F801FF007FC003EE00EE00EF00EF81EFFFCFFF8C7E00F127D9116>I<0300000700000700 000700000700007FFF00FFFF00FFFF000700000700000700000700000700000700000700000701 0007038007038007078007878003FF0003FE0000F80011177F9616>I<7E1F80FE3F807E1F800E 03800E03800E03800E03800E03800E03800E03800E03800E03800E03800E07800F0F800FFFF007 FFF803E3F01512809116>I119 D E /Fe 29 122 df<000FF000007FFC0001F80E0003E01F0007C03F000F803F000F803F000F80 1E000F800C000F8000000F8000000F8000000F800000FFFFFF00FFFFFF000F801F000F801F000F 801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F00 0F801F000F801F000F801F000F801F000F801F000F801F007FF0FFE07FF0FFE01B237FA21F>12 D45 D<000070000000007000000000F800000000F800000000 F800000001FC00000001FC00000003FE00000003FE00000003FE00000006FF000000067F000000 0E7F8000000C3F8000000C3F800000183FC00000181FC00000381FE00000300FE00000300FE000 00600FF000006007F00000E007F80000FFFFF80000FFFFF800018001FC00018001FC00038001FE 00030000FE00030000FE000600007F000600007F00FFE00FFFF8FFE00FFFF825227EA12A>65 D<0003FE0080001FFF818000FF01E38001F8003F8003E0001F8007C0000F800F800007801F8000 07803F000003803F000003807F000001807E000001807E00000180FE00000000FE00000000FE00 000000FE00000000FE00000000FE00000000FE00000000FE000000007E000000007E000001807F 000001803F000001803F000003801F800003000F8000030007C000060003F0000C0001F8003800 00FF00F000001FFFC0000003FE000021227DA128>67 DI73 D80 D82 D<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000CF8000CFC 000CFC0000FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF00007F00 003F00003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF8018227DA1 1F>I<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803806003F80180E003F801C0E0 03F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F800000003F800000003F80000 0003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F800 000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8 00000003F8000003FFFFF80003FFFFF80022227EA127>II<07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF0 1FC1F03F01F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B> 97 DI<00FF8007FFE0 0F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C0000 7E00007E00003E00301F00600FC0E007FF8000FE0014167E9519>I<0001FE000001FE0000003E 0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E000000 3E0001FC3E0007FFBE000F81FE001F007E003E003E007E003E007C003E00FC003E00FC003E00FC 003E00FC003E00FC003E00FC003E00FC003E00FC003E007C003E007C003E003E007E001E00FE00 0F83BE0007FF3FC001FC3FC01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00 F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC0 7003FFC000FF0015167E951A>I<003F8000FFC001E3E003C7E007C7E00F87E00F83C00F80000F 80000F80000F80000F80000F8000FFFC00FFFC000F80000F80000F80000F80000F80000F80000F 80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80007FF8007F F80013237FA211>I<03FC1E0FFF7F1F0F8F3E07CF3C03C07C03E07C03E07C03E07C03E07C03E0 3C03C03E07C01F0F801FFF0013FC003000003000003800003FFF801FFFF00FFFF81FFFFC3800FC 70003EF0001EF0001EF0001EF0001E78003C7C007C3F01F80FFFE001FF0018217E951C>II<1C003F007F007F007F003F 001C000000000000000000000000000000FF00FF001F001F001F001F001F001F001F001F001F00 1F001F001F001F001F001F001F001F001F00FFE0FFE00B247EA310>I109 DI<00FE0007FFC00F83 E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C00 7C7C007C3E00F81F01F00F83E007FFC000FE0017167E951C>II114 D<0FF3003FFF00781F00600700E00300E00300F00300FC00007FE0007FF8003FFE000FFF00 01FF00000F80C00780C00380E00380E00380F00700FC0E00EFFC00C7F00011167E9516>I<0180 000180000180000180000380000380000780000780000F80003F8000FFFF00FFFF000F80000F80 000F80000F80000F80000F80000F80000F80000F80000F80000F80000F81800F81800F81800F81 800F81800F830007C30003FE0000F80011207F9F16>II121 D E /Ff 43 122 df<00FC000782000E07001C 07001C02001C00001C00001C00001C0000FFFF001C07001C07001C07001C07001C07001C07001C 07001C07001C07001C07001C07001C0700FF1FE01317809614>12 D<00FF000707000E07001C07 001C07001C07001C07001C07001C0700FFFF001C07001C07001C07001C07001C07001C07001C07 001C07001C07001C07001C07001C0700FFBFE01317809614>I<60C0F1E0F1E070E01020102020 402040408040800B0A7F9612>34 D<60F0F070101020204040040A7D830A>44 DI<60F0F06004047D830A>I<0018001800380030003000700060006000 E000C001C0018001800380030003000700060006000E000C000C001C0018003800300030007000 60006000E000C000C0000D217E9812>I<0FE030306018701C701C001C00180038006007E00030 0018000C000E000EE00EE00EC00C401830300FE00F157F9412>51 D<20303FE03FC02400200020 00200020002F8030E020700030003800384038E038E0388030406020C01F000D157E9412>53 D<60F0F06000000000000060F0F07010102020404004147D8D0A>59 D<00100000380000380000 3800005C00005C00005C00008E00008E00008E0001070001070003078002038002038007FFC004 01C00401C00800E00800E01800E03800F0FE03FE17177F961A>65 D<00FC100383300E00B01C00 70380030300030700010600010E00010E00000E00000E00000E00000E00000E000106000107000 103000203800201C00400E008003830000FC0014177E9619>67 D70 D72 DI< FE0003F81E0003C0170005C0170005C0170005C0138009C0138009C011C011C011C011C011C011 C010E021C010E021C0107041C0107041C0107041C0103881C0103881C0101D01C0101D01C0100E 01C0100E01C0380E01C0FE040FF81D177F9620>77 D<7FFFF86038184038084038088038048038 048038040038000038000038000038000038000038000038000038000038000038000038000038 0000380000380000380007FFC016177F9619>84 DI91 D<204020404080408081008100E1C0F1E0F1E0 60C00B0A7B9612>II<1FC0386038301038003803F81E3830387038E039E039E07970FF1F1E10 0E7F8D12>97 DI<07F01838303870106000E000E000E000E000600070083008183007C00D0E7F8D10>I< 007E00000E00000E00000E00000E00000E00000E00000E00000E0007CE001C3E00300E00700E00 600E00E00E00E00E00E00E00E00E00600E00700E00301E00182E0007CFC012177F9614>I<0FC0 186030307038E018FFF8E000E000E000600070083010183007C00D0E7F8D10>I<03E006700E70 1C201C001C001C001C001C00FF801C001C001C001C001C001C001C001C001C001C001C001C00FF 800C1780960B>I<0F9E18E33060707070707070306018C02F80200060003FE03FF83FFC600EC0 06C006C006600C38380FE010157F8D12>II<183C3C1800000000007C1C1C1C1C1C1C1C1C1C1C1C1CFF 081780960A>I108 DII<07C018303018600C600CE00EE00EE00EE00EE00E70 1C3018183007C00F0E7F8D12>II114 D<1F4060C0C040C040E000FF007F801FC001E080608060C060E0C09F000B0E7F8D0E>I<080008 000800180018003800FF80380038003800380038003800380038403840384038401C800F000A14 7F930E>IIIIII E /Fg 6 55 df<0C003C00CC000C000C000C000C000C000C000C000C000C000C000C000C00FF8009107E8F0F> 49 D<1F00618040C08060C0600060006000C00180030006000C00102020207FC0FFC00B107F8F 0F>I<1F00218060C060C000C0008001800F00008000400060C060C060804060801F000B107F8F 0F>I<0300030007000F000B001300330023004300C300FFE003000300030003001FE00B107F8F 0F>I<20803F002C002000200020002F0030802040006000600060C06080C061801F000B107F8F 0F>I<0780184030C060C06000C000CF00F080E040C060C060C060406060C030801F000B107F8F 0F>I E /Fh 6 55 df<0C001C00EC000C000C000C000C000C000C000C000C000C000C000C000C 000C000C000C00FFC00A137D9211>49 D<1F0060C06060F070F030603000700070006000C001C0 0180020004000810101020207FE0FFE00C137E9211>I<0FC030707038703870380038003000E0 0FC0007000380018001C601CF01CF018E03860701FC00E137F9211>I<006000E000E001600260 06600C600860106020606060C060FFFC0060006000600060006003FC0E137F9211>I<60607FC0 7F8044004000400040004F0070C040E0006000700070E070E070E06040E021C01F000C137E9211 >I<07C00C201070207060006000C000CF00D0C0E060C020C030C030C03040306020206010C00F 000C137E9211>I E /Fi 42 122 df<0001FC000703000C03001C07001C030018000038000038 0000380000380000700007FFFC00701C00701C00701C00E03800E03800E03800E03800E07001C0 7001C07001C07001C0E201C0E201C0E20380E4038064038038038000030000070000060000C600 00E40000CC00007000001825819C17>12 D<183C3C3C0404080810204080060C779C0D>39 D<183878380808101020404080050C7D830D>44 DI<3078F06005 047C830D>I<09C04017E0801FE0803C6100302700601A00400600400400800C00800800001800 00100000300000600000600000600000C00000C00001C000018000038000038000030000070000 0700000700000E00000E00000C0000121D799B15>55 D<001E000061000081800180800300C003 00C006018006018006018007030007860003CC0003F00001F000037800063C00081E00180E0030 0E00600600600600600600C00C00C00C00C0180060100060200030C0000F0000121D7C9B15>I< 0007F00000180C000060020000800100010000800200008004078080081840401070204010E01C 4020C01C4021C03840438038404380384043803840870070808700708087007080830071008300 E1008381E20081C6620040783C0040000000200000002000000018000E000601F00001FF00001A 1D7A9C20>64 D<0000180000001800000038000000380000007800000078000000B8000001B800 000138000002380000023C0000041C0000041C0000081C0000181C0000101C0000201C0000201C 00007FFC0000401C0000801C0001801C0001001C0002001C0002001C0004000E000C000E001C00 1E00FF00FFC01A1D7E9C1F>I<0003F020001E0C60003002E000E003C001C001C0038001C00700 00C00E0000801E0000801C0000803C0000803C000000780000007800000078000000F0000000F0 000000F0000000F0000000F0000400F0000400F0000400F0000800700008007000100038002000 180040000C0180000706000001F800001B1E7A9C1E>67 D<01FFFFE0003C00E000380060003800 4000380040003800400070004000700040007020400070200000E0400000E0400000E0C00000FF C00001C0800001C0800001C0800001C08000038101000380010003800200038002000700040007 00040007000C00070018000E007800FFFFF0001B1C7D9B1C>69 D<01FFFFC0003C01C0003800C0 0038008000380080003800800070008000700080007020800070200000E0400000E0400000E0C0 0000FFC00001C0800001C0800001C0800001C08000038100000380000003800000038000000700 00000700000007000000070000000F000000FFF000001A1C7D9B1B>I<0003F020001E0C600030 02E000E003C001C001C0038001C0070000C00E0000801E0000801C0000803C0000803C00000078 0000007800000078000000F0000000F0000000F001FFC0F0001E00F0001C00F0001C00F0001C00 F0001C00700038007000380038003800180078000C0090000707100001F800001B1E7A9C20>I< 01FFC0003C0000380000380000380000380000700000700000700000700000E00000E00000E000 00E00001C00001C00001C00001C000038000038000038000038000070000070000070000070000 0F0000FFE000121C7E9B10>73 D<01FFE0003C0000380000380000380000380000700000700000 700000700000E00000E00000E00000E00001C00001C00001C00001C00003800803800803800803 80100700100700300700600700E00E03C0FFFFC0151C7D9B1A>76 D<01FE0007F8003E00078000 2E000F00002E001700002E001700002E002700004E002E00004E004E00004E004E00004E008E00 008E011C00008E011C00008E021C00008E021C0001070438000107043800010708380001071038 000207107000020720700002072070000207407000040740E000040780E000040700E0000C0700 E0001C0601E000FF861FFC00251C7D9B25>I<01FC03FE001C0070003C0060002E0040002E0040 002E0040004700800047008000470080004380800083810000838100008181000081C1000101C2 000101C2000100E2000100E2000200E40002007400020074000200740004003800040038000400 38000C0018001C001000FF8010001F1C7D9B1F>I<0007F000001C1C0000700E0000E0070001C0 038003800380070003800E0003C01E0003C01C0003C03C0003C03C0003C0780003C0780003C078 0003C0F0000780F0000780F0000780F0000F00F0000F00F0000E00F0001E00F0003C0070003800 700070007800E0003801C0001C0380000E0E000003F800001A1E7A9C20>I<01FFFC00003C0700 00380380003801C0003801C0003801C0007003C0007003C0007003C00070038000E0078000E007 0000E00E0000E0380001FFE00001C0000001C0000001C000000380000003800000038000000380 0000070000000700000007000000070000000F000000FFE000001A1C7D9B1C>I<01FFF800003C 0E000038070000380380003803800038038000700780007007800070078000700F0000E00E0000 E01C0000E0700000FFC00001C0C00001C0600001C0700001C07000038070000380700003807000 038070000700F0000700F0400700F0400700F0800F007880FFE0790000001E001A1D7D9B1E>82 D<000F8400304C00403C00801801001803001803001806001006001006000007000007000003E0 0003FC0001FF00007F800007C00001C00001C00000C00000C02000C02000C06001806001806003 00600200F00400CC180083E000161E7D9C17>I<1FFFFFC01C0701C0300E00C0200E0080600E00 80400E0080401C0080801C0080801C0080001C0000003800000038000000380000003800000070 000000700000007000000070000000E0000000E0000000E0000000E0000001C0000001C0000001 C0000001C0000003C000007FFE00001A1C799B1E>I<03CC063C0C3C181C3838303870387038E0 70E070E070E070E0E2C0E2C0E261E462643C380F127B9115>97 D<3F00070007000E000E000E00 0E001C001C001C001C0039C03E60383038307038703870387038E070E070E070E060E0E0C0C0C1 C0618063003C000D1D7B9C13>I<01F007080C08181C3838300070007000E000E000E000E000E0 00E008E010602030C01F000E127B9113>I<001F80000380000380000700000700000700000700 000E00000E00000E00000E0003DC00063C000C3C00181C00383800303800703800703800E07000 E07000E07000E07000E0E200C0E200C0E20061E4006264003C3800111D7B9C15>I<01E007100C 1018083810701070607F80E000E000E000E000E000E0086010602030C01F000D127B9113>I<00 03C0000670000C70001C60001C00001C0000380000380000380000380000380003FF8000700000 700000700000700000700000E00000E00000E00000E00000E00001C00001C00001C00001C00001 C000038000038000038000030000030000070000C60000E60000CC00007800001425819C0D>I< 00F3018F030F06070E0E0C0E1C0E1C0E381C381C381C381C383830383038187818F00F70007000 7000E000E0C0C0E1C0C3007E00101A7D9113>I<0FC00001C00001C00003800003800003800003 80000700000700000700000700000E78000E8C000F0E000E0E001C0E001C0E001C0E001C0E0038 1C00381C00381C00383800703880703880707080707100E03200601C00111D7D9C15>I<018003 80010000000000000000000000000000001C002600470047008E008E000E001C001C001C003800 3800710071007100720072003C00091C7C9B0D>I<1F800380038007000700070007000E000E00 0E000E001C001C001C001C0038003800380038007000700070007000E400E400E400E400680038 00091D7C9C0B>108 D<3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E 0380E01C0701C01C0701C01C0701C01C070380380E0388380E0388380E0708380E0710701C0320 300C01C01D127C9122>I<3C3C002646004687004707008E07008E07000E07000E07001C0E001C 0E001C0E001C1C00381C40381C40383840383880701900300E0012127C9117>I<01E007180C0C 180C380C300E700E700EE01CE01CE01CE018E038E030E06060C031801E000F127B9115>I<0787 0004D98008E0C008E0C011C0E011C0E001C0E001C0E00381C00381C00381C00381800703800703 000707000706000E8C000E70000E00000E00001C00001C00001C00001C00003C0000FF8000131A 7F9115>I<3C3C26C2468747078E068E000E000E001C001C001C001C0038003800380038007000 300010127C9112>114 D<01F006080C080C1C18181C001F001FC00FF007F0007800386030E030 C030806060C01F000E127D9111>I<00C001C001C001C00380038003800380FFE0070007000700 0E000E000E000E001C001C001C001C00384038403840388019000E000B1A7D990E>I<1E030027 0700470700470700870E00870E000E0E000E0E001C1C001C1C001C1C001C1C0038388038388018 38801839001C5900078E0011127C9116>I<1E01832703874703874703838707018707010E0701 0E07011C0E021C0E021C0E021C0E04180C04181C04181C081C1C100C263007C3C018127C911C> 119 D<1E03270747074707870E870E0E0E0E0E1C1C1C1C1C1C1C1C38383838183818381C7007F0 0070007000E0E0C0E1C0818047003C00101A7C9114>121 D E /Fj 77 125 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01C0000E01C0000E 01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C000 0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0007F87FC 001A1D809C18>11 D<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E0000 0E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0 0E01C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<007FC001C1C00303C00703C00E01 C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01 C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17 >I<003F07E00001C09C18000380F018000701F03C000E01E03C000E00E018000E00E000000E00 E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C000E 00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C00 0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D809C23>I<6060 F0F0F8F86868080808080808101010102020404080800D0C7F9C15>34 D<60F0F8680808081010 204080050C7C9C0C>39 D<004000800100020006000C000C001800180030003000700060006000 6000E000E000E000E000E000E000E000E000E000E000E000E00060006000600070003000300018 0018000C000C00060002000100008000400A2A7D9E10>I<800040002000100018000C000C0006 00060003000300038001800180018001C001C001C001C001C001C001C001C001C001C001C001C0 018001800180038003000300060006000C000C00180010002000400080000A2A7E9E10>I<60F0 F0701010101020204080040C7C830C>44 DI<60F0F06004047C830C>I< 00030003000700060006000E000C001C0018001800380030003000700060006000E000C000C001 C001800380030003000700060006000E000C000C001C001800180038003000700060006000E000 C000C00010297E9E15>I<03C00C301818300C300C700E60066006E007E007E007E007E007E007 E007E007E007E007E007E007E00760066006700E300C300C18180C3007E0101D7E9B15>I<0300 07003F00C700070007000700070007000700070007000700070007000700070007000700070007 00070007000700070007000F80FFF80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8 077007000F000E000E001C001C00380070006000C00180030006010C01180110023FFE7FFEFFFE 101C7E9B15>I<07E01830201C201C781E780E781E381E001C001C00180030006007E00030001C 001C000E000F000F700FF80FF80FF80FF00E401C201C183007E0101D7E9B15>I<000C00000C00 001C00003C00003C00005C0000DC00009C00011C00031C00021C00041C000C1C00081C00101C00 301C00201C00401C00C01C00FFFFC0001C00001C00001C00001C00001C00001C00001C0001FFC0 121C7F9B15>I<300C3FF83FF03FC020002000200020002000200023E024302818301C200E000E 000F000F000F600FF00FF00FF00F800E401E401C2038187007C0101D7E9B15>I<00F0030C0604 0C0E181E301E300C700070006000E3E0E430E818F00CF00EE006E007E007E007E007E007600760 077006300E300C18180C3003E0101D7E9B15>I<4000007FFF807FFF007FFF0040020080040080 040080080000100000100000200000600000400000C00000C00001C00001800001800003800003 8000038000038000078000078000078000078000078000078000030000111D7E9B15>I<03E00C 301008200C20066006600660067006780C3E083FB01FE007F007F818FC307E601E600FC007C003 C003C003C00360026004300C1C1007E0101D7E9B15>I<03C00C301818300C700C600EE006E006 E007E007E007E007E0076007700F300F18170C2707C700060006000E300C780C78187010203030 C00F80101D7E9B15>I<60F0F0600000000000000000000060F0F06004127C910C>I<60F0F06000 00000000000000000060F0F0701010101020204080041A7C910C>I<0006000000060000000600 00000F0000000F0000000F00000017800000178000001780000023C0000023C0000023C0000041 E0000041E0000041E0000080F0000080F0000180F8000100780001FFF80003007C0002003C0002 003C0006003E0004001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65 DI<001F808000E0618001801980070007800E0003801C0003801C 00018038000180780000807800008070000080F0000000F0000000F0000000F0000000F0000000 F0000000F0000000F0000000700000807800008078000080380000801C0001001C0001000E0002 00070004000180080000E03000001FC000191E7E9C1E>III< FFFFF80F00780F00180F00080F00080F000C0F00040F00040F02040F02000F02000F02000F0600 0FFE000F06000F02000F02000F02000F02000F00000F00000F00000F00000F00000F00000F0000 0F8000FFF800161C7E9B1B>I<001F808000E0618001801980070007800E0003801C0003801C00 018038000180780000807800008070000080F0000000F0000000F0000000F0000000F0000000F0 000000F000FFF0F0000F80700007807800078078000780380007801C0007801C0007800E000780 07000B800180118000E06080001F80001C1E7E9C21>III<1FFF00F800780078007800780078007800780078007800780078007800 780078007800780078007800787078F878F878F878F0F040E021C01F00101D7F9B15>IIIII<003F800000E0E0000380380007001C000E000E001C0007003C000780380003807800 03C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F0 0001E0700001C0780003C0780003C0380003803C0007801C0007000E000E0007001C0003803800 00E0E000003F80001B1E7E9C20>II82 D<07E0801C1980300580700380600180E00180E00080E00080E00080F00000F800007C00007FC0 003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001C0C00180C001 80E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F00C0400F0040400F00 40C00F0020800F0020800F0020800F0020000F0000000F0000000F0000000F0000000F0000000F 0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000 0F0000000F0000001F800003FFFC001B1C7F9B1E>IIII<7FF0FFC00FC03E0007 80180003C0180003E0100001E0200001F0600000F0400000788000007D8000003D0000001E0000 001F0000000F0000000F8000000F80000013C0000023E0000021E0000041F00000C0F800008078 0001007C0003003C0002001E0006001F001F003F80FFC0FFF01C1C7F9B1F>I91 D<08081010202040404040808080808080B0B0F8F8787830300D0C7A9C15>II<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C00601C 00E01C40E01C40E01C40603C40304E801F870012127E9115>97 DI<07E00C301878307870306000E000E000E000E000E000E00060007004300418080C3007 C00E127E9112>I<003F0000070000070000070000070000070000070000070000070000070000 070003E7000C1700180F00300700700700600700E00700E00700E00700E00700E00700E0070060 0700700700300700180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E6006E006FF FEE000E000E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E 000E000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E000E00 0E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C00381C00 381C001818001C38000C300013C0001000003000001800001FF8001FFF001FFF803003806001C0 C000C0C000C0C000C06001803003001C0E0007F800121C7F9215>II<18003C003C0018000000000000000000000000000000FC001C001C001C001C001C00 1C001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<00C001E001E000C0 00000000000000000000000000000FE000E000E000E000E000E000E000E000E000E000E000E000 E000E000E000E000E000E000E000E000E060E0F0C0F1C061803E000B25839C0D>IIIII< 03F0000E1C00180600300300700380600180E001C0E001C0E001C0E001C0E001C0E001C0600180 7003803003001806000E1C0003F00012127F9115>II<03C1000C3300180B0030 0F00700700700700E00700E00700E00700E00700E00700E00700600700700700300F00180F000C 370007C700000700000700000700000700000700000700000700003FE0131A7E9116>II<1F9030704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D0608FC00D12 7F9110>I<04000400040004000C000C001C003C00FFE01C001C001C001C001C001C001C001C00 1C001C101C101C101C101C100C100E2003C00C1A7F9910>IIII<7F8FF00F03800F03 0007020003840001C80001D80000F00000700000780000F800009C00010E00020E000607000403 801E07C0FF0FF81512809116>II<7FFC70386038407040F040E041C003C00380 07000F040E041C043C0C380870087038FFF80E127F9112>I124 D E /Fk 38 125 df<0001FF0000001FFFC000007F80F00000FE00F80003FC01FC0003F803FC00 07F003FC0007F003FC0007F003FC0007F001F80007F000F00007F000000007F000000007F00000 0007F0000000FFFFFFFC00FFFFFFFC00FFFFFFFC0007F001FC0007F001FC0007F001FC0007F001 FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F0 01FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007 F001FC0007F001FC007FFF1FFFC07FFF1FFFC07FFF1FFFC0222A7FA926>12 D45 D<000E00001E00007E0007FE00 FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 00FE0000FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7FFFFE17277BA622>49 D<00FF800003FFF0000FFFFC003F03FF007C00FF807C007FC0FE007FC0FF003FE0FF003FE0FF00 3FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F8000007F800000FF0000 01FE000001FC000003F0000007E000000FC000001F0000003E0000007C00E0007800E000F000E0 01E001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFFFF 801B277DA622>I<007F800003FFF00007FFFC001F81FE001F00FF003F80FF003F807F803FC07F 803F807F803F807F801F007F800000FF800000FF000000FF000001FE000003F8000007F00000FF C00000FFF0000001FC000000FF0000007F8000007FC000003FC000003FE000003FE000003FE03C 003FE07E003FE0FF003FE0FF003FE0FF003FC0FF007FC0FE007F807C00FF803F01FF001FFFFC00 07FFF00000FF80001B277DA622>I<00000E0000001E0000003E0000007E000000FE000000FE00 0001FE000003FE0000077E00000E7E00000E7E00001C7E0000387E0000707E0000E07E0000E07E 0001C07E0003807E0007007E000E007E000E007E001C007E0038007E0070007E00E0007E00FFFF FFF8FFFFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE000000FE000000FE0000 00FE00007FFFF8007FFFF8007FFFF81D277EA622>I<000003800000000007C00000000007C000 0000000FE0000000000FE0000000000FE0000000001FF0000000001FF0000000003FF800000000 3FF8000000003FF80000000073FC0000000073FC00000000F3FE00000000E1FE00000000E1FE00 000001C0FF00000001C0FF00000003C0FF80000003807F80000007807FC0000007003FC0000007 003FC000000E003FE000000E001FE000001E001FF000001C000FF000001FFFFFF000003FFFFFF8 00003FFFFFF80000780007FC0000700003FC0000700003FC0000E00001FE0000E00001FE0001E0 0001FF0001C00000FF0001C00000FF00FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE2F297EA834 >65 D<00003FF001800003FFFE0780000FFFFF8F80003FF007FF8000FF8001FF8001FE00007F80 07FC00003F8007F800001F800FF000000F801FE000000F803FE0000007803FC0000007807FC000 0003807FC0000003807FC000000380FF8000000000FF8000000000FF8000000000FF8000000000 FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000 0000007FC0000000007FC0000003807FC0000003803FC0000003803FE0000003801FE000000780 0FF00000070007F800000F0007FC00001E0001FE00003C0000FF8000F800003FF007F000000FFF FFC0000003FFFF000000003FF8000029297CA832>67 DIII73 D<0000FFE000000007FFFC0000003FC07F8000007F001FC00001FC00 07F00003F80003F80007F00001FC000FF00001FE001FE00000FF001FE00000FF003FC000007F80 3FC000007F807FC000007FC07F8000003FC07F8000003FC07F8000003FC0FF8000003FE0FF8000 003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0 FF8000003FE0FF8000003FE07F8000003FC07FC000007FC07FC000007FC03FC000007F803FC000 007F801FE00000FF001FE00000FF000FF00001FE0007F00001FC0003F80003F80001FC0007F000 00FF001FE000003FC07F8000000FFFFE00000000FFE000002B297CA834>79 D82 D<007F806003FFF0E00FFFFFE01F807FE03F00 1FE07E0007E07E0003E07C0003E0FC0001E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FF C000007FFE00007FFFE0003FFFFC003FFFFF001FFFFF8007FFFFC003FFFFE000FFFFF00007FFF0 00007FF000000FF8000007F8000003F8E00003F8E00001F8E00001F8E00001F8F00001F8F00001 F0F80003F0FC0003E0FF0007E0FFE01FC0FFFFFF00E0FFFE00C01FF0001D297CA826>I<01FF80 0007FFF0000F81FC001FC0FE001FC07F001FC07F001FC03F800F803F8000003F8000003F800000 3F80000FFF8000FFFF8007FC3F801FE03F803F803F807F803F807F003F80FE003F80FE003F80FE 003F80FE007F80FF007F807F00FFC03F83DFFC0FFF0FFC01FC03FC1E1B7E9A21>97 DI<001FF80000FFFE0003F01F000FE03F80 1FC03F803F803F803F803F807F801F007F000000FF000000FF000000FF000000FF000000FF0000 00FF000000FF000000FF000000FF0000007F0000007F8000003F8001C03FC001C01FC003C00FE0 078003F01F0000FFFC00001FE0001A1B7E9A1F>I<00003FF80000003FF80000003FF800000003 F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8000000 03F800000003F800000003F800000003F800001FE3F80000FFFBF80003F03FF8000FE00FF8001F C007F8003F8003F8003F8003F8007F8003F8007F0003F800FF0003F800FF0003F800FF0003F800 FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8 003F8003F8003F8007F8001FC00FF8000FE01FF80003F03FFF8000FFF3FF80003FC3FF80212A7E A926>I<003FE00001FFF80003F07E000FE03F001FC01F803F800FC03F800FC07F000FC07F0007 E0FF0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF000000FF0000007F00 00007F8000003F8000E03F8001E01FC001C00FE003C003F81F8000FFFE00001FF0001B1B7E9A20 >I<0007F0003FFC00FE3E01FC7F03F87F03F87F07F07F07F03E07F00007F00007F00007F00007 F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007 F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007 F0007FFF807FFF807FFF80182A7EA915>I<00FF81F003FFE7FC0FC1FE7C1F80FC7C3F80FE7C3F 007E107F007F007F007F007F007F007F007F007F007F007F007F003F007E003F80FE001F80FC00 0FC1F8001FFFE00018FF8000380000003C0000003C0000003E0000003FFFF8003FFFFF001FFFFF C00FFFFFE007FFFFF01FFFFFF07E0007F87C0001F8F80001F8F80000F8F80000F8F80000F8FC00 01F87E0003F03F0007E00FC01F8003FFFE00007FF0001E287E9A22>II<07001FC01FE03FE03FE03FE01FE01FC00700000000000000000000 0000000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0 0FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA13>I108 DII<003FE00001FFFC0003F0 7E000FC01F801F800FC03F800FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF 0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800FE0 1F800FC00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>II114 D<03FE300FFFF03E03F07800F07000F0F00070F00070F80070FC0000FFE000FFFE 007FFFC03FFFE01FFFF007FFF800FFFC0003FC0000FCE0007CE0003CF0003CF0003CF80078FC00 78FF01F0F7FFC0C1FF00161B7E9A1B>I<00700000700000700000700000F00000F00000F00001 F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F00007F00007F00007F00007 F00007F00007F00007F00007F00007F00007F00007F03807F03807F03807F03807F03807F03807 F03803F87001F8F000FFE0001F8015267FA51B>IIIIII124 D E /Fl 30 122 df<70F8F8F87005057C840E>46 D<0001800000018000000180000003C0000003C0000003 C0000005E0000005E000000DF0000008F0000008F0000010F800001078000010780000203C0000 203C0000203C0000401E0000401E0000401E0000800F0000800F0000FFFF000100078001000780 030007C0020003C0020003C0040003E0040001E0040001E00C0000F00C0000F03E0001F8FF800F FF20237EA225>65 DI<0007E010 0038183000E0063001C00170038000F0070000F00E0000701E0000701C0000303C0000303C0000 307C0000107800001078000010F8000000F8000000F8000000F8000000F8000000F8000000F800 0000F800000078000000780000107C0000103C0000103C0000101C0000201E0000200E00004007 0000400380008001C0010000E0020000381C000007E0001C247DA223>II<0007F008003C0C1800E0021801C001B8038000F80700 00780F0000381E0000381E0000183C0000183C0000187C0000087800000878000008F8000000F8 000000F8000000F8000000F8000000F8000000F8000000F8001FFF780000F8780000787C000078 3C0000783C0000781E0000781E0000780F00007807000078038000B801C000B800E00318003C0C 080007F00020247DA226>71 D73 D77 D<03F0200C0C601802603001E07000E0600060E00060E00060E00020E00020E00020F00000F000 007800007F00003FF0001FFE000FFF0003FF80003FC00007E00001E00000F00000F00000708000 70800070800070800070C00060C00060E000C0F000C0C80180C6070081FC0014247DA21B>83 D<7FFFFFF87807807860078018400780084007800840078008C007800C80078004800780048007 800480078004000780000007800000078000000780000007800000078000000780000007800000 078000000780000007800000078000000780000007800000078000000780000007800000078000 000780000007800000078000000FC00003FFFF001E227EA123>II87 D<0FE0001838003C0C003C0E0018070000070000070000070000FF0007C7001E07003C0700 780700700700F00708F00708F00708F00F087817083C23900FC1E015157E9418>97 D<01FE000703000C07801C0780380300780000700000F00000F00000F00000F00000F00000F000 00F000007000007800403800401C00800C010007060001F80012157E9416>99 D<0000E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000 E00000E001F8E00704E00C02E01C01E03800E07800E07000E0F000E0F000E0F000E0F000E0F000 E0F000E0F000E07000E07800E03800E01801E00C02E0070CF001F0FE17237EA21B>I<01FC0007 07000C03801C01C03801C07801E07000E0F000E0FFFFE0F00000F00000F00000F00000F0000070 00007800203800201C00400E008007030000FC0013157F9416>I<003C00C6018F038F030F0700 07000700070007000700070007000700FFF8070007000700070007000700070007000700070007 00070007000700070007000700070007807FF8102380A20F>I<0E0000FE00001E00000E00000E 00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F800E60C00E80E00F 00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E 00700E00700E00700E0070FFE7FF18237FA21B>104 D<1C001E003E001E001C00000000000000 000000000000000000000E00FE001E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E000E000E00FFC00A227FA10E>I<0E00FE001E000E000E000E000E000E000E000E 000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00 0E000E000E000E000E00FFE00B237FA20E>108 D<0E1FC07F00FE60E183801E807201C00F003C 00E00F003C00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E00 3800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E 003800E0FFE3FF8FFE27157F942A>I<0E1F80FE60C01E80E00F00700F00700E00700E00700E00 700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7 FF18157F941B>I<01FC000707000C01801800C03800E0700070700070F00078F00078F00078F0 0078F00078F00078F000787000707800F03800E01C01C00E038007070001FC0015157F9418>I< 0E1F00FE61C00E80600F00700E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E 0E001E0E003C0E003C0E00380F00700E80E00E41C00E3F000E00000E00000E00000E00000E0000 0E00000E00000E00000E0000FFE000171F7F941B>I<0E3CFE461E8F0F0F0F060F000E000E000E 000E000E000E000E000E000E000E000E000E000E000F00FFF010157F9413>114 D<0F8830786018C018C008C008E008F0007F803FE00FF001F8003C801C800C800CC00CC008E018 D0308FC00E157E9413>I<02000200020002000600060006000E001E003E00FFF80E000E000E00 0E000E000E000E000E000E000E000E000E040E040E040E040E040E040708030801F00E1F7F9E13 >I<0E0070FE07F01E00F00E00700E00700E00700E00700E00700E00700E00700E00700E00700E 00700E00700E00700E00700E00F00E00F006017003827800FC7F18157F941B>II121 D E /Fm 18 118 df<0001FE00000007018000001C004000007800200000 F000F00000E001F00001E001F00003C001F00003C000E00003C000000003C000000003C0000000 03C000000003C000000003C000000003C000000003C000000003C000000003C0000000FFFFFFF0 00FFFFFFF00003C001F00003C000F00003C000F00003C000F00003C000F00003C000F00003C000 F00003C000F00003C000F00003C000F00003C000F00003C000F00003C000F00003C000F00003C0 00F00003C000F00003C000F00003C000F00003C000F00003C000F00003C000F00003C000F00003 C000F00003C000F00003C000F00003C000F00007E001F8007FFE1FFF807FFE1FFF8021327FB124 >12 D<00001FE0010001FFF8030007F00E03000F800307003E0000C7007C00004F00F800003F01 F000001F03E000000F07C000000F07800000070F800000071F000000031F000000033F00000003 3E000000013E000000017E000000017E000000017C00000000FC00000000FC00000000FC000000 00FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0000 00007C000000007E000000007E000000013E000000013E000000013F000000011F000000011F00 0000020F80000002078000000607C000000403E000000C01F000000800F8000010007C00002000 3E0000C0000F8001800007F00F000001FFFC0000001FE00028337CB130>67 D70 D77 D86 D<00FE00000303C0000C00E00010007000100038003C003C 003E001C003E001E003E001E0008001E0000001E0000001E0000001E00000FFE0000FC1E0003E0 1E000F801E001F001E003E001E003C001E007C001E00F8001E04F8001E04F8001E04F8003E04F8 003E0478003E047C005E043E008F080F0307F003FC03E01E1F7D9E21>97 D<003F800000E0E0000380380007003C000E001E001E001E001C000F003C000F007C000F007800 0F8078000780F8000780F8000780FFFFFF80F8000000F8000000F8000000F8000000F8000000F8 000000780000007C0000003C0000003C0000801E0000800E0001000F0002000780020001C00C00 00F03000001FC000191F7E9E1D>101 D<0007E0001C1000383800707C00E07C01E07C01C03803 C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000FFFFC0FF FFC003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003 C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003 C00007E0007FFF007FFF0016327FB114>I<000000F0007F030801C1C41C0380E81C070070080F 0078001E003C001E003C003E003E003E003E003E003E003E003E003E003E003E003E001E003C00 1E003C000F007800070070000780E00009C1C000087F0000180000001800000018000000180000 00180000001C0000000E0000000FFFF80007FFFF0003FFFF800E000FC0180001E0300000F07000 0070E0000038E0000038E0000038E0000038E00000387000007070000070380000E01C0001C007 00070001C01C00003FE0001E2F7E9F21>I<07000F801F801F800F800700000000000000000000 0000000000000000000000000001801F80FF80FF800F8007800780078007800780078007800780 0780078007800780078007800780078007800780078007800780078007800FC0FFF8FFF80D307E AF12>105 D<01803F80FF80FF800F800780078007800780078007800780078007800780078007 800780078007800780078007800780078007800780078007800780078007800780078007800780 078007800780078007800780078007800780078007800FC0FFFCFFFC0E327EB112>108 D<0180FE001FC0003F83078060F000FF8C03C1807800FF9001E2003C000FA001E4003C0007A000 F4001E0007C000F8001E0007C000F8001E00078000F0001E00078000F0001E00078000F0001E00 078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0 001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E0007 8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F000 1E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E38>I<0180FE00003F830780 00FF8C03C000FF9001E0000FA001E00007A000F00007C000F00007C000F000078000F000078000 F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0000780 00F000078000F000078000F000078000F000078000F000078000F000078000F000078000F00007 8000F000078000F000078000F0000FC001F800FFFC1FFF80FFFC1FFF80211F7E9E25>I<001FC0 0000F0780001C01C00070007000F0007801E0003C01C0001C03C0001E03C0001E0780000F07800 00F0780000F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F878 0000F07C0001F03C0001E03C0001E01E0003C01E0003C00F00078007800F0001C01C0000F07800 001FC0001D1F7E9E21>I<0183E03F8C18FF907CFF907C0FA07C07C03807C00007C00007C00007 800007800007800007800007800007800007800007800007800007800007800007800007800007 80000780000780000780000780000780000FC000FFFE00FFFE00161F7E9E19>114 D<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F800007E00003FF0 001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC0001CE0001CE000 18F00038F00030EC0060C301C080FE00161F7E9E1A>I<00400000400000400000400000400000 C00000C00000C00001C00001C00003C00007C0000FC0001FFFE0FFFFE003C00003C00003C00003 C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003 C01003C01003C01003C01003C01003C01003C01003C01001C02001E02000E0400078C0001F0014 2C7FAB19>I<01800030003F8007F000FF801FF000FF801FF0000F8001F000078000F000078000 F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0000780 00F000078000F000078000F000078000F000078000F000078000F000078000F000078000F00007 8000F000078001F000078001F000078001F000038002F00003C004F00001C008F800007030FF80 001FC0FF80211F7E9E25>I E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%EndSetup %%Page: 1 1 1 0 bop 238 328 a Fm(Visual)20 b(F)-6 b(ormalisms)21 b(for)h(Con\014guration) e(Managemen)n(t)739 448 y Fl(Mic)o(hael)15 b(W.)h(Go)q(dfrey)600 506 y(Departmen)o(t)f(of)h(Computer)g(Science)727 565 y(Univ)o(ersit)o(y)e (of)i(T)l(oron)o(to)917 623 y(and)593 681 y(IBM)f(Cen)o(tre)h(for)h(Adv)m (anced)e(Studies)75 844 y Fk(Abstract)75 944 y Fj(As)29 b(reuse)h(of)e(soft)o (w)o(are)h(comp)q(onen)o(ts)g(b)q(ecomes)75 994 y(more)12 b(commonplace,)g(b) q(eing)g(able)h(to)f(understand,)75 1044 y(manipulate)h(and)g(reason)i(ab)q (out)e(soft)o(w)o(are)h(system)75 1093 y(arc)o(hitectures)24 b(acquires)f(new)g(imp)q(ortance.)42 b(Al-)75 1143 y(though)17 b(commercial)f(soft)o(w)o(are)h(dev)o(elopmen)o(t)g(en-)75 1193 y(vironmen)o(ts)c(ha)o(v)o(e)h(addressed)h(man)o(y)e(of)f(the)j(issues) 75 1243 y(of)j(con\014guration)g(managemen)o(t,)g(there)i(is)e(still)g(a)75 1293 y(need)25 b(for)f(visual)g(formalisms)f(that)h(can)h(aid)e(in)75 1342 y(represen)o(ting)j(and)e(manipulating)e(arc)o(hitectures)75 1392 y(of)f(soft)o(w)o(are)g(systems.)42 b(This)21 b(pap)q(er)i(in)o(tro)q (duces)75 1442 y(ConF)m(orm)9 b(\()p Fi(Con)p Fj(\014guration)g Fi(F)m(orm)p Fj(alism\),)g(a)g(graph-)75 1492 y(ical)i(notation)g(for)h (represen)o(ting)h(con\014gurations)f(of)75 1542 y(soft)o(w)o(are)e(systems.) 18 b(Sev)o(eral)10 b(of)f(the)h(basic)g(concepts)75 1591 y(of)i(ConF)m(orm)g (w)o(ere)i(inspired)f(b)o(y)f(the)h(C/Mesa)h(lan-)75 1641 y(guage)e([8];)f (ho)o(w)o(ev)o(er,)i(ConF)m(orm)f(is)g(b)q(oth)h(language)75 1691 y(and)e(to)q(ol)g(indep)q(enden)o(t.)18 b(ConF)m(orm)11 b(is)g(notable)g(b)q(e-)75 1741 y(cause)h(it)f(is)g(b)q(oth)g(a)g(visual)f (and)h(a)g(formal)f(approac)o(h)75 1791 y(to)k(represen)o(ting)h(soft)o(w)o (are)f(arc)o(hitectures.)75 1955 y Fk(1)69 b(In)n(tro)r(duction)75 2055 y Fj(Con\014guration)22 b(managemen)o(t)f(pla)o(ys)h(a)g(k)o(ey)h(role) 75 2105 y(in)18 b(the)i(engineering)f(of)f(large)g(soft)o(w)o(are)h(systems;) 75 2155 y(it)e(comprises)i(sev)o(eral)f(sub-areas,)i(including)c(v)o(er-)75 2205 y(sioning,)f(access)i(con)o(trol,)f(system)h(mo)q(delling)d(and)75 2255 y(system)24 b(building.)43 b(While)22 b(sev)o(eral)h(commercial)75 2305 y(soft)o(w)o(are)15 b(dev)o(elopmen)o(t)h(en)o(vironmen)o(ts)f(ha)o(v)o (e)g(suc-)75 2354 y(cessfully)24 b(attac)o(k)o(ed)f(man)o(y)g(of)g(the)h (problems)f(of)75 2404 y(con\014guration)e(managemen)o(t,)h(most)f(approac)o (hes)75 2454 y(ha)o(v)o(e)i(b)q(een)i(tigh)o(tly)d(in)o(tegrated)i(with)f(a)h (partic-)75 2504 y(ular)e(set)i(of)f(to)q(ols.)44 b(Consequen)o(tly)m(,)25 b(there)f(is)f(a)75 2554 y(need)16 b(for)f(notations)f(and)h(to)q(ols)f(for)h (con\014guration)1006 844 y(managemen)o(t)d(that)i(are)f(b)q(oth)g(p)q(o)o(w) o(erful)g(and)g(in)o(tu-)1006 893 y(itiv)o(e)d(y)o(et)i(not)f(b)q(ound)h(to)f (particular)g(en)o(vironmen)o(ts)1006 943 y(or)16 b(languages.)26 b(Visual)17 b(notations)f(hold)g(promise,)1006 993 y(y)o(et)i(they)g(ha)o(v)o (e)f(not)g(y)o(et)h(b)q(een)h(in)o(v)o(estigated)e(v)o(ery)1006 1043 y(thoroughly)m(.)1213 1028 y Fh(1)1047 1097 y Fj(This)d(pap)q(er)h(in)o (tro)q(duces)g(ConF)m(orm)d(\()p Fi(c)n(on)p Fj(\014gura-)1006 1146 y(tion)i Fi(form)p Fj(alism\),)g(a)h(visual)f(formalism)f(for)i(repre-) 1006 1196 y(sen)o(ting)20 b(soft)o(w)o(are)g(arc)o(hitectures.)39 b(Man)o(y)19 b(of)h(the)1006 1246 y(concepts)26 b(in)e(ConF)m(orm)f(w)o(ere)j (inspired)f(b)o(y)f(the)1006 1296 y(C/Mesa)f(language)e([8];)k(ho)o(w)o(ev)o (er,)g(ConF)m(orm)d(is)1006 1346 y(programming)16 b(language)g(indep)q(enden) o(t.)31 b(Indeed,)1006 1395 y(m)o(uc)o(h)18 b(of)f(the)i(in)o(v)o(estigation) e(in)o(to)g(ConF)m(orm)h(w)o(as)1006 1445 y(done)13 b(using)h(example)f (systems)h(written)g(in)f(a)h(v)n(ari-)1006 1495 y(et)o(y)d(of)f(programming) f(languages,)h(including)g(Mesa)1006 1545 y(and)j(Ob)r(ject-Orien)o(ted)k(T)m (uring)c([6)o(].)1047 1599 y(The)21 b(main)d(in)o(tended)j(b)q(ene\014t)g(of) f(ConF)m(orm)f(is)1006 1649 y(to)d(facilitate)e(system)j(mo)q(delling.)23 b(Other)17 b(asp)q(ects)1006 1698 y(of)f(con\014guration)h(managemen)o(t)g(|) g(suc)o(h)h(as)f(v)o(er-)1006 1748 y(sioning,)k(access/concurrenc)q(y)i(con)o (trol)e(and)f(sys-)1006 1798 y(tem)10 b(building)f(|)h(are)h(not)f (explicitly)g(addressed)i(b)o(y)1006 1848 y(ConF)m(orm.)k(The)d(reasons)g (are)g(manifold:)i(di\013eren)o(t)1006 1898 y(v)o(ersions)i(of)e(a)h(program) g(unit)g(can)g(b)q(e)h(considered)1006 1947 y(to)j(b)q(e)h(di\013eren)o(t)g (implemen)o(tations)f(of)f(the)i(same)1006 1997 y(in)o(terface;)e(access)h (con)o(trol)d(is)h(inheren)o(tly)g(pro)q(cess)1006 2047 y(and/or)23 b(to)q(ol)g(dep)q(enden)o(t;)30 b(and)23 b(once)h(a)g(system)1006 2097 y(mo)q(del)11 b(has)i(b)q(een)g(completely)f(con\014gured,)h(system)1006 2147 y(building)8 b(\(loading,)g(binding)g(and)h(running\))h(is)f(then)1006 2197 y(a)j(straigh)o(tforw)o(ard)g(mec)o(hanical)h(pro)q(cess)h(that)f(can) 1006 2246 y(b)q(e)19 b(carried)g(out)f(b)o(y)h(the)g(to)q(ols)f(of)g(the)h (particular)1006 2296 y(en)o(vironmen)o(t.)32 b(System)20 b(mo)q(delling,)e (ho)o(w)o(ev)o(er,)i(is)1006 2346 y(common)i(to)h(all)f(languages)g(and)h(en) o(vironmen)o(ts)p 1006 2397 333 2 v 1052 2424 a Fg(1)1069 2435 y Ff(\\It)9 b(is)h(our)f(dut)o(y)f(to)i(forge)e(ahead)g(to)h(turn)g(system)g (mo)q(d-)1006 2475 y(elling)j(in)o(to)h(a)h(predominan)o(tly)c(visual)j(and)g (graphical)e(pro-)1006 2514 y(cess.)j(I)d(b)q(eliev)o(e)d(this)i(is)g(one)g (of)g(the)g(most)g(promising)f(trends)1006 2554 y(in)i(our)g(\014eld.")i([5]) p eop %%Page: 2 2 2 1 bop 75 195 a Fj(that)19 b(ha)o(v)o(e)f(the)h(concept)h(of)e (con\014gurations,)h(and)75 245 y(man)o(y)h(of)g(the)h(issues)g(of)f(system)i (mo)q(delling)c(can)75 295 y(b)q(e)h(attac)o(k)o(ed)g(at)f(a)g (language-indep)q(enden)o(t)h(lev)o(el.)75 345 y(This)12 b(is)g(the)h(area)f (in)g(whic)o(h)g(ConF)m(orm)f(is)h(in)o(tended)75 394 y(to)i(aid.)75 545 y Fk(2)69 b(An)23 b(Ov)n(erview)f(of)i(ConF)-6 b(orm)75 640 y Fj(A)31 b(ConF)m(orm)f(implemen)o(tation)g(consists)i(of)f(a)75 690 y(rep)q(ository)21 b(of)f(soft)o(w)o(are)h(comp)q(onen)o(ts,)h(to)q(ols)e (for)75 740 y(viewing)28 b(and)h(querying)g(the)g(rep)q(ository)m(,)k(plus)75 790 y(mec)o(hanisms)13 b(for)f(c)o(hanging)g(existing)h(comp)q(onen)o(ts)75 840 y(or)26 b(creating)f(new)h(ones)h(\(whic)o(h)e(then)h(ma)o(y)f(b)q(e)75 889 y(added)10 b(to)g(the)g(rep)q(ository\).)18 b(ConF)m(orm)8 b(is)i(in)o(tended)75 939 y(to)i(aid)g(system)i(mo)q(delling;)d(that)h(is,)g (it)h(is)f(in)o(tended)75 989 y(to)19 b(help)h(the)g(user)g(build)f(new)h (con\014gurations)f(of)75 1039 y(systems)e(from)e(existing)h(comp)q(onen)o (ts.)25 b(ConF)m(orm)75 1089 y(en)o(tities)19 b(ha)o(v)o(e)g(b)q(oth)g(a)g (graphical)f(and)h(a)g(textual)75 1138 y(represen)o(tation;)24 b(ConF)m(orm's)18 b(to)q(ols)i(can)g(op)q(erate)75 1188 y(using)14 b(either)g(represen)o(tation.)117 1241 y(ConF)m(orm)9 b(is)h(in)o(tended)h (to)f(augmen)o(t)g(an)g(existing)75 1290 y(programming)h(language)h(and/or)g (soft)o(w)o(are)h(dev)o(el-)75 1340 y(opmen)o(t)19 b(en)o(vironmen)o(t.)35 b(Although)19 b(ConF)m(orm)g(is)75 1390 y(not)f(tied)f(to)h(a)f(particular)h (language)e(or)i(en)o(viron-)75 1440 y(men)o(t,)12 b(there)i(are)f(sev)o (eral)f(assumptions)h(ab)q(out)f(the)75 1490 y(underlying)20 b(platform;)i(these)g(will)d(b)q(e)i(discussed)75 1539 y(b)q(elo)o(w.)75 1633 y Fe(Program)d(Units)117 1704 y Fj(ConF)m(orm)c(requires)j(that)f(the)g (underlying)g(pro-)75 1754 y(gramming)11 b(language)h(ha)o(v)o(e)h(a)g(unit)f (of)g(abstraction)75 1804 y(at)g(the)i(lev)o(el)e(of)g(a)g(class)h(or)g(mo)q (dule.)k(This)12 b(concept)75 1854 y(is)j(called)g(a)g(a)f(\\program)h(unit") f(or)h(just)h(\\unit")e(in)75 1904 y(ConF)m(orm.)j(ConF)m(orm)c(do)q(es)h (not)g(mo)q(del)g(language)75 1953 y(concepts)g(of)d(an)o(y)h(\014ner)h(gran) o(ularit)o(y)d(than)i(the)h(pro-)75 2003 y(gram)g(unit.)117 2055 y(A)19 b(program)g(unit)h(is)g(represen)o(ted)i(graphically)75 2105 y(b)o(y)17 b(a)g(blue)g(b)q(o)o(x)g(lab)q(elled)g(with)g(the)g(unit's)g (name.)75 2155 y(The)g(b)q(o)o(xes)g(ma)o(y)e(also)h(b)q(e)h(\\decorated")g (b)o(y)f(green)75 2205 y(tabs)e(and)g(slots)g(whose)h(lab)q(els)e(indicate)h (the)h(in)o(ter-)75 2255 y(faces)c(the)g(unit)f(implemen)o(ts)g(and)g (requires.)19 b(Figure)75 2305 y(1)12 b(sho)o(ws)i(a)e(simple)g(rep)q (ository)i(of)e(four)g(units.)18 b(The)75 2354 y(left-most)j(b)q(o)o(x)g (represen)o(ts)i(an)e(Ob)r(ject-Orien)o(ted)75 2404 y(T)m(uring)13 b(\(OOT\))i(class)g(named)f Fd(StackImpl)p Fj(;)e(it)i(im-)75 2454 y(plemen)o(ts)k(an)g(in)o(terface)h(named)f Fd(stackDefs)e Fj(and)75 2504 y(requires)c(an)f(instance)h(of)f(a)f(class)i(that)f(implemen) o(ts)75 2554 y(the)j(in)o(terface)h(named)f Fd(listDefs)p Fj(.)979 987 y @beginspecial 115 @llx 332 @lly 455 @urx 647 @ury 2160 @rwi @setspecial %%BeginDocument: diags/repos1.ps %!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Helvetica %%Pages: 1 %%BoundingBox: 115 332 455 647 %%EndComments 50 dict begin /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor /fontDict printFont findfont printSize scalefont dup setfont def /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def /vertoffset 0 descender sub printSize sub printFont /Courier ne printFont /Courier-Bold ne and { 1 add } if def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 7 Grid 8 %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.791209 0 0 0.791209 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Rect %I b 65535 2 0 0 [] 0 SetB %I cfg DkGray 0.503548 0.503548 0.503548 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t [ 1.05361 0 0 0.880815 122.764 315.877 ] concat %I 24 122 428 567 Rect End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 263.574 -480.382 ] concat %I 70 332 30 10 Elli End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Blue 0 0 1 SetCFg %I cbg LightBlue 0.678431 0.847059 0.901961 SetCBg %I p 1 SetP %I t [ 1.33696 0 0 1 56.8473 181.479 ] concat %I 160 271 251 312 Rect End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Green 0 1 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 0.997322 0 0 2.93333 183.001 -410.195 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 183.428 -370.195 ] concat %I 70 332 30 10 Elli End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Blue 0 0 1 SetCFg %I cbg LightBlue 0.678431 0.847059 0.901961 SetCBg %I p 1 SetP %I t [ 1.32609 0 0 1 -19.5593 292.666 ] concat %I 160 271 251 312 Rect End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 401.772 -379.903 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Green 0 1 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 0.997322 0 0 2.93333 242.48 -289.861 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Green 0 1 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 0.997322 0 0 2.93333 313.48 -289.861 ] concat %I 70 332 30 10 Elli End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Blue 0 0 1 SetCFg %I cbg LightBlue 0.678431 0.847059 0.901961 SetCBg %I p 1 SetP %I t [ 1.5546 0 0 1 163.17 281.958 ] concat %I 160 271 251 312 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 232.948 614.666 ] concat %I [ (stackDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 292 675 ] concat %I [ (stackDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 363 675 ] concat %I [ (stackDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 313.094 503.479 ] concat %I [ (listDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 452.239 603.958 ] concat %I [ (listDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 233.469 554.666 ] concat %I [ (listDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-14-140-* /Helvetica 14 SetF %I t [ 1 0 0 1 216.448 584.666 ] concat %I [ (StackImpl) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-14-140-* /Helvetica 14 SetF %I t [ 1 0 0 1 421.479 573.958 ] concat %I [ (DebugListImpl) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-24-240-* /Helvetica 24 SetF %I t [ 1 0 0 1 158.521 793.333 ] concat %I [ (Component Repository) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-14-140-* /Helvetica 14 SetF %I t [ 1 0 0 1 282.709 474.052 ] concat %I [ (FastListImpl) ] Text End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 275.001 -248.289 ] concat %I 70 332 30 10 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 334 736.572 ] concat %I [ (main) ] Text End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Blue 0 0 1 SetCFg %I cbg LightBlue 0.678431 0.847059 0.901961 SetCBg %I p 1 SetP %I t [ 1.65217 0 0 1 7.88043 413 ] concat %I 160 271 251 312 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-14-140-* /Helvetica 14 SetF %I t [ 1 0 0 1 320.094 705.948 ] concat %I [ (Tracker) ] Text End End %I eop showpage %%Trailer end %%EndDocument @endspecial 1006 1079 a(Figure)e(1:)17 b(A)12 b(simple)g(rep)q(ository)m(.) 18 b(The)13 b(blue)f(b)q(o)o(xes)1006 1129 y(represen)o(t)17 b(program)e(units.)22 b(The)16 b(green)g(\\tab")f(on)1006 1178 y(the)f(top)g(indicates)h(the)f(in)o(terface)h(the)g(unit)e(imple-)1006 1228 y(men)o(ts.)30 b(The)19 b(green)g(\\slots")e(\(strip)q(ed)i(tab\))f (indi-)1006 1278 y(cated)c(the)h(required)g(imp)q(orts.)1047 1420 y(The)26 b(textual)f(represen)o(tation)i(of)e(a)g(program)1006 1469 y(unit)9 b(is,)g(of)g(course,)i(en)o(tirely)f(dep)q(enden)o(t)h(on)e (the)h(un-)1006 1519 y(derlying)f(programming)f(language.)15 b(As)10 b(this)g(pap)q(er)1006 1569 y(is)16 b(aimed)g(at)g(in-the-large)g (concepts,)i(the)g(textual)1006 1619 y(equiv)n(alen)o(ts)13 b(of)h(the)h(units)f(in)f(Figure)i(1)e(ha)o(v)o(e)h(b)q(een)1006 1669 y(omitted.)1006 1765 y Fe(Program)j(Units)i Fc(Implement)1006 1814 y Fe(In)n(terfaces)1047 1887 y Fj(Eac)o(h)25 b(program)e(unit)h(is)g (assumed)h(to)f Fi(imple-)1006 1937 y(ment)19 b Fj(a)f(named)h Fi(interfac)n(e)p Fj(.)32 b(Although)18 b(this)h(rule)1006 1987 y(migh)o(t)11 b(seem)j(restrictiv)o(e,)g(it)e(can)h(b)q(e)h(added)f(on)g (top)1006 2037 y(of)j(most)g(con)o(v)o(en)o(tional)g(programming)f(languages) 1006 2087 y(with)g(minimal)e(e\013ort.)24 b(In)15 b(some)h(languages,)f(suc)o (h)1006 2136 y(as)22 b(Mo)q(dula-3)f([1])g(and)h(Mesa)h([8],)g(this)f(con)o (v)o(en-)1006 2186 y(tion)14 b(is)g(actually)f(part)i(of)e(the)i(language.) 1674 2171 y Fh(2)1711 2186 y Fj(In)g(oth-)p 1006 2239 333 2 v 1052 2266 a Fg(2)1069 2278 y Ff(In)8 b(practice,)e(Mo)q(dula-3)h (programmers)f(often)h(omit)h(cre-)1006 2317 y(ating)16 b(an)i(explicit)e(in) o(terface)f(when)j(no)f(other)g(Mo)q(dula-3)1006 2356 y(mo)q(dule)7 b(will)h(implemen)o(t)f(the)h(same)g(in)o(terface.)k(In)7 b(this)h(case,)1006 2396 y(a)17 b(default)f(in)o(terface)f(is)j(considered)d(to)i(b)q(e)g (created)f(with)1006 2435 y(the)g(same)g(name)g(as)g(the)g(implemen)o(ting)f (mo)q(dule.)29 b(Ho)o(w-)1006 2475 y(ev)o(er,)9 b(the)g(language)f (de\014nition)f(presumes)i(the)g(existence)f(of)1006 2514 y(the)i(in)o (terface,)f(ev)o(en)h(if)h(it)g(is)g(not)g(created)e(explicitly)g(b)o(y)h (the)1006 2554 y(programmer.)p eop %%Page: 3 3 3 2 bop 75 195 a Fj(ers,)19 b(suc)o(h)f(as)g(Ob)r(ject-Orien)o(ted)i(T)m (uring)d([6)o(],)h(it)f(is)75 245 y(optional;)h(in)g(this)g(case,)i(in)o (terfaces)f(can)f(b)q(e)h(triv-)75 295 y(ially)11 b(extracted)k(from)d(unit)h (de\014nitions)g(and)g(giv)o(en)75 345 y(names.)117 395 y(In)18 b(most)g(programming)f(languages,)h(an)h(in)o(ter-)75 444 y(face)i(pro)o (vides)g(a)f(listing)g(of)g(items)h(that)g(will)e(b)q(e)75 494 y(implemen)o(ted)14 b(and)f(\\exp)q(orted")i(b)o(y)e(a)h(subsequen)o(t)75 544 y(program)k(unit.)31 b(F)m(or)18 b(example,)h(an)f(in)o(terface)h(for)75 594 y(a)j(stac)o(k)i(abstract)f(data)g(t)o(yp)q(e)g(migh)o(t)f(b)q(e)h (called)75 644 y Fd(stackDefs)14 b Fj(and)i(de\014ne)h(en)o(try)f(p)q(oin)o (ts)g(for)g(pro)q(ce-)75 693 y(dures)j(called)f Fd(Push)f Fj(and)h Fd(Pop)p Fj(.)29 b(One)19 b(can)f(further)75 743 y(imagine)11 b(the)h(existence)i(of)e(sev)o(eral)g(program)g(units)75 793 y(that)i(implemen)o(t)e Fd(stackDefs)p Fj(,)f(suc)o(h)k(as)e(a)g(fast)h(im-) 75 843 y(plemen)o(tation,)h(and)h(a)g(slo)o(w)o(er)g(one)g(that)h(pro)o (vides)75 893 y(a)d(tracing)f(facilit)o(y)m(.)117 943 y(It)d(should)g(b)q(e)i (noted,)f(ho)o(w)o(ev)o(er,)g(that)g(the)g(partic-)75 993 y(ular)i(kinds)g (of)g(en)o(tities)h(con)o(tained)f(in)g(an)g(in)o(terface)75 1042 y(is)d(not)f(a)h(concern)h(of)e(ConF)m(orm.)16 b(A)o(t)10 b(the)g(v)o(ery)g(least,)75 1092 y(it)i(migh)o(t)f(reasonably)i(b)q(e)g(exp)q (ected)h(that)e(an)h(in)o(ter-)75 1142 y(face)i(con)o(tain)g(some)g(syn)o (tactic)g(information,)e(suc)o(h)75 1192 y(as)e(signatures)g(of)f(exp)q (orted)i(pro)q(cedures.)19 b(More)11 b(in-)75 1242 y(formation)j(migh)o(t)g (also)h(b)q(e)h(presen)o(t,)h(suc)o(h)f(as)f(pre-)75 1291 y(and)c(p)q (ost-conditions)g(or)h(ev)o(en)g(default)f(implemen-)75 1341 y(tations.)46 b(But)24 b(precisely)h(what)e(constitutes)i(an)75 1391 y(in)o(terface)20 b(will)d(dep)q(end)k(on)d(the)i(underlying)f(pro-)75 1441 y(gramming)12 b(language.)117 1491 y(F)m(or)23 b(the)i(sak)o(e)f(of)f (uniformit)o(y)m(,)h(ConF)m(orm)f(re-)75 1541 y(quires)18 b(that)g(a)g(main)f (program)g(within)g(a)h(system)75 1591 y(also)k(implemen)o(t)f(an)h(in)o (terface.)44 b(Consequen)o(tly)m(,)75 1640 y(there)22 b(is)f(a)g(sp)q(ecial)h (in)o(terface)f(called)g Fd(main)g Fj(that)75 1690 y(is)15 b(considered)i(to)d(b)q(e)i(implemen)o(ted)f(b)o(y)g(programs)75 1740 y(in)o(tended)k(to)f(b)q(e)g(used)h(as)f(the)h(main)e(program)g(in)75 1790 y(a)j(system.)38 b(The)20 b Fd(main)f Fj(in)o(terface)i(is)f(not)g (funda-)75 1840 y(men)o(tally)13 b(di\013eren)o(t)j(from)e(an)o(y)g(other)h (in)o(terface;)g(it)75 1889 y(exp)q(orts)f(a)f(single)g(pro)q(cedure)i (called)d Fd(Run)h Fj(that)g(ini-)75 1939 y(tializes)h(the)g(system)h(and)e (starts)i(it)f(running.)117 1989 y(A)f(further)h(restriction)h(on)e(the)h (underlying)f(pro-)75 2039 y(gramming)f(language)g(is)i(that)f(eac)o(h)h (program)f(unit)75 2089 y(m)o(ust)24 b(completely)f(implemen)o(t)g(exactly)h (one)f(in-)75 2139 y(terface.)31 b(This)18 b(restriction)h(mak)o(es)e(it)h (di\016cult)f(to)75 2189 y(mo)q(del)f(a)g(language)f(suc)o(h)i(as)f(Mo)q (dula-3,)g(where)h(a)75 2238 y(mo)q(dule)c(ma)o(y)f(implemen)o(t)h(all)f(or)i (part)f(of)g(m)o(ultiple)75 2288 y(in)o(terfaces.)30 b(This)17 b(restriction)i(ma)o(y)d(y)o(et)i(pro)o(v)o(e)g(to)75 2338 y(b)q(e)d(easy)f(to)h(relax,)e(but)i(for)e(no)o(w)h(simplicit)o(y)f(is)h (felt)75 2388 y(to)g(b)q(e)g(a)f(more)h(imp)q(ortan)o(t)f(design)h(goal)e (than)i(suc)o(h)75 2438 y(a)19 b(\015exible)h(but)f(p)q(oten)o(tially)f (confusing)i(language)75 2487 y(feature.)212 2472 y Fh(3)p 75 2515 333 2 v 121 2542 a Fg(3)139 2554 y Ff(Mo)q(dula-3)9 b(is)i(a)h(descendan)o(t)c(of)j(Mesa,)g(whic)o(h)g(also)g(has)1047 195 y Fj(The)28 b Fi(implements)e Fj(relationship)h(is)f(indicated)1006 245 y(graphically)9 b(b)o(y)i(a)g(green)h(\\tab")e(on)h(top)f(of)h(the)g (blue)1006 295 y(b)q(o)o(x)h(represen)o(ting)h(the)g(program)f(unit.)17 b(The)c(tab)f(is)1006 345 y(lab)q(elled)h(with)h(the)h(name)f(of)f(the)i(in)o (terface)f(imple-)1006 394 y(men)o(ted)j(b)o(y)g(the)g(program)f(unit.)27 b(Con\014gurations)1006 444 y(ma)o(y)9 b(also)h(implemen)o(t)g(in)o (terfaces;)i(this)f(will)e(b)q(e)i(dis-)1006 494 y(cussed)k(later.)1006 600 y Fe(Program)20 b(Units)g(De\014ne)h Fc(Classes)g Fe(and)1006 649 y Fc(Imp)n(ort)c Fe(Unit)h(Instances)1047 732 y Fj(ConF)m(orm)d(supp)q (orts)h(ob)r(ject-based)h(computing)1006 782 y([9)o(];)k(that)f(is,)g(it)f (supp)q(orts)i(instan)o(tiation)d(of)h(pro-)1006 832 y(gram)f(units.)32 b(Th)o(us,)19 b(a)g(program)e(unit)i(de\014nes)h(a)1006 882 y Fi(class)f Fj(of)g(en)o(tities)g(rather)i(than)e(a)g(single)g(en)o(tit)o(y) m(.)1820 866 y Fh(4)1006 931 y Fj(Instan)o(tiation)25 b(of)h(program)f(units) i(o)q(ccurs)g(only)1006 981 y(within)15 b Fi(c)n(on\014gur)n(ations)p Fj(;)i(if)e(a)g(clien)o(t)h(unit)f(requires)1006 1031 y(an)i(instance)h(of)e (another)i(serv)o(er)g(unit,)g(the)f(clien)o(t)1006 1081 y(unit)g(ma)o(y)f (sp)q(ecify)i(only)e(the)i(name)f(of)g(the)g(in)o(ter-)1006 1131 y(face)d(of)g(the)h(serv)o(er)h(unit.)j(It)c(is)f(the)h(resp)q (onsibilit)o(y)1006 1180 y(of)i(the)h(con\014gurer)h(to)f(decide)h(whic)o(h)e (instance)i(of)1006 1230 y(whic)o(h)13 b(implemen)o(tation)f(to)i(pro)o(vide) f(to)g(the)h(clien)o(t)1006 1280 y(unit.)1092 1265 y Fh(5)1047 1344 y Fj(If)c(a)h(program)f(unit)g Fd(P)g Fj(requires)i(an)e(instance)h (that)1006 1394 y(implemen)o(ts)j(in)o(terface)h Fd(I)p Fj(,)e(it)i(is)f (indicated)g(graphi-)1006 1444 y(cally)c(b)o(y)h(a)g(green)h(\\slot")e(dra)o (wn)i(on)f(the)g(b)q(ottom)g(of)1006 1494 y(the)k(b)q(o)o(x)g(that)g (represen)o(ts)i(unit)e Fd(P)p Fj(.)f(The)h(slot)g(is)f(la-)1006 1543 y(b)q(elled)d(b)o(y)f(the)i(name)e(of)g(the)i(required)f(in)o(terface.) 18 b(If)1006 1593 y(a)c(unit)g(requires)i(m)o(ultiple)d(instances)i(of)f(the) h(same)1006 1643 y(in)o(terface,)c(then)f(a)g(slot)g(is)g(sho)o(wn)g(for)g (eac)o(h)h(required)1006 1693 y(instance.)17 b(F)m(or)10 b(example,)g(Figure) g(1)f(sho)o(ws)h(the)h(unit)1006 1743 y Fd(Tracker)h Fj(requiring)i(t)o(w)o (o)f(stac)o(ks.)1047 1807 y(A)j(program)e(unit)h(instance)h(is)f(dra)o(wn)g (as)h(a)f(b)q(o)o(x)1006 1856 y(with)c(a)g(strip)q(ed)h(in)o(terior.)17 b(The)12 b(instance)h(name)e(ap-)1006 1906 y(p)q(ears)16 b(near)f(the)g(cen)o (tre)i(of)d(the)h(b)q(o)o(x;)g(the)g(name)g(of)1006 1956 y(the)k(corresp)q (onding)h(class)g(is)f(indicated)g(in)g(small)1006 2006 y(t)o(yp)q(e)13 b(at)g(the)g(b)q(ottom)f(righ)o(t.)18 b(An)12 b(instance)i(has)f(the)1006 2056 y(same)h(tabs)g(and)g(slots)g(as)g(its)g(paren)o(t)h(unit.)j(Figure)1006 2106 y(2)12 b(sho)o(ws)h(sev)o(eral)h(unit)e(instances)i(within)e(a)h (con\014g-)1006 2155 y(uration.)29 b(Note)18 b(that)g Fd(s1i)f Fj(and)h Fd(s2i)f Fj(are)h(distinct)p 1006 2239 V 1006 2277 a Ff(this)13 b(\015exibilit)o(y)m(.)19 b(This)14 b(is)f(a)h(p)q(oin)o(t)e(of) h(div)o(ergence)e(b)q(et)o(w)o(een)1006 2317 y(ConF)m(orm)g(and)g(C/Mesa.) 1052 2345 y Fg(4)1069 2356 y Ff(ConF)m(orm)k(do)q(es)e(not)h(y)o(et)g(supp)q (ort)e(class)i(inheritance.)1006 2396 y(This)f(p)q(ossible)e(extension)g(is)i (discussed)e(at)h(the)h(end)f(of)g(the)1006 2435 y(pap)q(er.)1052 2463 y Fg(5)1069 2475 y Ff(A)25 b(con\014gurat)o(ion)20 b(de\014nition)h (also)i(de\014nes)f(a)i(class)1006 2514 y(rather)13 b(than)g(an)h(instance;)g (con\014guratio)o(n)e(de\014nition)g(and)1006 2554 y(instan)o(tiatio)o(n)d (is)i(discussed)f(b)q(elo)o(w.)p eop %%Page: 4 4 4 3 bop 75 195 a Fj(instances)15 b(of)e(the)i(same)f(class.)75 293 y Fe(Con\014gurations)117 368 y Fj(As)k(men)o(tioned)g(ab)q(o)o(v)o(e,)g (program)g(units)g(de\014ne)75 418 y(classes)g(rather)g(than)f(instances;)i (instan)o(tiation)d(is)75 468 y(done)e(at)g(con\014guration)f(time.)k(A)d Fi(c)n(on\014gur)n(ation)h Fj(is)75 518 y(a)10 b(construct)j(in)d(whic)o(h)g (units)h(are)g(instan)o(tiated)g(and)75 567 y(imp)q(ort)18 b(requiremen)o(ts)i(are)g(resolv)o(ed)f(b)o(y)g(binding)75 617 y(instances)c(together.)117 674 y(A)e(con\014guration)h(is)g(dra)o(wn)36 b(as)h(a)g(red)g(b)q(o)o(x.)75 723 y(Within)20 b(the)i(con\014guration)f (reside)i(instances)f(of)75 773 y(program)h(units)g(\(and)g(p)q(ossibly)g (sub-coni\014gura-)75 823 y(tions\).)117 880 y(Imp)q(orts)d(are)h(resolv)o (ed)g(b)o(y)f(binding)g(instances)75 929 y(that)13 b(implemen)o(ts)g(a)f(giv) o(en)h(in)o(terface)h(to)f(instances)75 979 y(requiring)18 b(an)g(instance)g(of)g(that)g(in)o(terface.)31 b(This)75 1029 y(binding)13 b(is)h(indicated)f(graphically)g(b)o(y)h(a)f(thic)o(k)h(ar-)75 1079 y(ro)o(w)h(from)g(tab)h(\(exp)q(orted)h(in)o(terface\))f(to)g(slot)f (\(re-)75 1129 y(quired)j(in)o(terface\).)32 b(Eac)o(h)18 b(instance)h(has)f (its)g(o)o(wn)75 1178 y(data)c(space)g(and)g(ma)o(y)f(b)q(e)i(b)q(ound)f(in)o (to)f(more)h(than)75 1228 y(one)g(slot;)g(th)o(us,)g(t)o(w)o(o)g(unit)g (instances)h(ma)o(y)m(,)e(for)h(ex-)75 1278 y(ample,)d(share)i(the)g(same)f (stac)o(k.)17 b(A)12 b(system)h(is)f(fully)75 1328 y(con\014gured)j(once)f (all)f(slots)h(ha)o(v)o(e)g(b)q(een)h(\014lled)e(in.)117 1384 y(The)21 b(in)o(ternals)f(of)h(a)f(displa)o(y)o(ed)g(con\014guration)75 1434 y(ma)o(y)e(b)q(e)i(hidden)g(from)e(view)h(most)g(of)g(the)h(time;)75 1484 y(usually)m(,)c(all)h(that)g(is)g(imp)q(ortan)o(t)g(to)g(someone)h(ex-) 75 1534 y(amining)e(the)i(con\014guration)g(is)f(an)h(indication)e(of)75 1584 y(whic)o(h)f(in)o(terface)g(it)f(implemen)o(ts)g(and)h(whic)o(h)f(ones) 75 1633 y(it)g(requires.)75 1731 y Fe(Sub-Con\014gurations)117 1806 y Fj(In)i(man)o(y)f(w)o(a)o(ys,)i(a)f(con\014guration)g(can)h(b)q(e)g (con-)75 1856 y(sidered)24 b(to)f(b)q(e)h(a)f(kind)g(of)f(\\sup)q(er-unit",)k (as)d(it)75 1906 y(has)j(m)o(uc)o(h)f(in)g(common)g(with)g(program)g(units.) 75 1956 y(Both)g(con\014gurations)g(and)g(units)g(ha)o(v)o(e)g(names,)75 2006 y(can)20 b(b)q(e)h(instan)o(tiated)e(and)h(are)g(assumed)h(to)f(im-)75 2055 y(plemen)o(t)h(an)g(in)o(terface.)40 b(A)21 b(self-con)o(tained)g(con-) 75 2105 y(\014guration,)e(as)g(exempli\014ed)f(b)o(y)h Fd(c1)f Fj(in)h(Figure)f(2,)75 2155 y(can)f(b)q(e)g(considered)i(to)d(implemen)o(t)g (the)h Fd(main)f Fj(in-)75 2205 y(terface.)i(A)10 b(sub-con\014guration,)g (as)g(exempli\014ed)g(b)o(y)75 2255 y Fd(FastStackConf)k Fj(and)k Fd(DebugStackConf)c Fj(in)j(Fig-)75 2305 y(ure)c(4,)f(ma)o(y)g(implemen)o(t)g (an)g(in)o(terface)h(b)o(y)f(creating)75 2354 y(an)j(instance)h(of)f(a)g (unit)h(that)f(implemen)o(ts)g(the)h(in-)75 2404 y(terface)21 b(and)f(exp)q(orting)h(the)f(instance.)38 b(Finally)m(,)75 2454 y(a)18 b(con\014guration)g(ma)o(y)g(also)f(require)j(an)e(instance)75 2504 y(that)c(implemen)o(ts)g(an)f(in)o(terface)i(in)f(the)g(same)g(w)o(a)o (y)75 2554 y(that)g(a)g(unit)f(can.)979 1230 y @beginspecial 121 @llx 254 @lly 448 @urx 600 @ury 2160 @rwi @setspecial %%BeginDocument: diags/conf1.ps %!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Helvetica %%Pages: 1 %%BoundingBox: 121 254 448 600 %%EndComments 50 dict begin /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor /fontDict printFont findfont printSize scalefont dup setfont def /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def /vertoffset 0 descender sub printSize sub printFont /Courier ne printFont /Courier-Bold ne and { 1 add } if def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 7 Grid 8 %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.791209 0 0 0.791209 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Rect %I b 65535 2 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1.00413 0 0 0.895643 133.493 216.663 ] concat %I 24 122 428 567 Rect End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 274.053 -248.288 ] concat %I 70 332 30 10 Elli End Begin %I Line %I b 65535 4 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1 0 0 1 152 152 ] concat %I 292 422 231 493 Line End Begin %I Line %I b 65535 4 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1 0 0 1 172.854 152 ] concat %I 271 271 271 312 Line End Begin %I Line %I b 65535 4 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1 0 0 1 142.854 152 ] concat %I 140 271 140 312 Line End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 213.334 -580.861 ] concat %I 70 332 30 10 Elli End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg BabyBlue 0 0.698482 1 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1.33696 0 0 1 6.60773 81 ] concat %I 160 271 251 312 Rect End Begin %I Line %I b 65535 4 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1 0 0 0.842697 152 230.101 ] concat %I 130 409 150 492 Line End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Green 0 1 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 0.997322 0 0 2.93333 212.386 -470.861 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 212.813 -430.861 ] concat %I 70 332 30 10 Elli End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg BabyBlue 0 0.698482 1 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1.32609 0 0 1 9.8261 232 ] concat %I 160 271 251 312 Rect End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Green 0 1 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 0.997322 0 0 2.93333 373.386 -470.861 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 371.438 -580.861 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Green 0 1 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 0.997322 0 0 2.93333 242.48 -289.861 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Green 0 1 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 0.997322 0 0 2.93333 313.48 -289.861 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 373.813 -429.861 ] concat %I 70 332 30 10 Elli End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg BabyBlue 0 0.698482 1 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1.65217 0 0 1 7.88043 413 ] concat %I 160 271 251 312 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg BabyBlue 0 0.698482 1 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1.32609 0 0 1 170.826 232 ] concat %I 160 271 251 312 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg BabyBlue 0 0.698482 1 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1.33696 0 0 1 167.66 81 ] concat %I 160 271 251 312 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 262.333 554 ] concat %I [ (stackDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 423.333 554 ] concat %I [ (stackDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 292 675 ] concat %I [ (stackDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 363 675 ] concat %I [ (stackDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 262.854 403 ] concat %I [ (listDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 420.958 403 ] concat %I [ (listDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 261.906 494 ] concat %I [ (listDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 423.854 494 ] concat %I [ (listDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-18-180-* /Helvetica 18 SetF %I t [ 1 0 0 1 309.667 715.427 ] concat %I [ (ti) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-18-180-* /Helvetica 18 SetF %I t [ 1 0 0 1 250.573 533.479 ] concat %I [ (s1i) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-12-120-* /Helvetica 12 SetF %I t [ 1 0 0 1 291 514 ] concat %I [ (StackImpl) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-12-120-* /Helvetica 12 SetF %I t [ 1 0 0 1 442.573 514 ] concat %I [ (StackImpl) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-12-120-* /Helvetica 12 SetF %I t [ 1 0 0 1 370.094 695 ] concat %I [ (Tracker) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-18-180-* /Helvetica 18 SetF %I t [ 1 0 0 1 411.573 534.427 ] concat %I [ (s2i) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-12-120-* /Helvetica 12 SetF %I t [ 1 0 0 1 271.99 363 ] concat %I [ (FastListImpl) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-12-120-* /Helvetica 12 SetF %I t [ 1 0 0 1 422.146 364 ] concat %I [ (DebugListImpl) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-18-180-* /Helvetica 18 SetF %I t [ 1 0 0 1 401.573 383.427 ] concat %I [ (dli) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-18-180-* /Helvetica 18 SetF %I t [ 1 0 0 1 251.094 383.427 ] concat %I [ (fli) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-24-240-* /Helvetica 24 SetF %I t [ 1 0 0 1.03448 177.479 701.989 ] concat %I [ (c1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-12-120-* /Helvetica 12 SetF %I t [ 1 0 0 1 334 736.573 ] concat %I [ (main) ] Text End End %I eop showpage %%Trailer end %%EndDocument @endspecial 1006 1322 a(Figure)k(2:)24 b(A)17 b(simple)g(con\014guration.)27 b(Eac)o(h)17 b(blue)1006 1372 y(b)q(o)o(x)f(represen)o(ts)i(an)e(instance)h (of)e(a)h(program)g(unit)1006 1421 y(found)g(in)g(the)h(rep)q(ository)f(of)g (Figure)h(1.)25 b(The)17 b(im-)1006 1471 y(p)q(orts)10 b(of)f(eac)o(h)h(unit) g(instance)g(are)g(resolv)o(ed)g(b)o(y)g(link-)1006 1521 y(ing)k(eac)o(h)i (slot)f(with)h(a)f(tab.)22 b(This)15 b(system)i(is)e(fully)1006 1571 y(con\014gured)g(since)f(all)f(slots)h(ha)o(v)o(e)g(b)q(een)h(\014lled)e (in.)1147 1923 y Fb(configurat)o(ion)h(c1)1217 1962 y(implements)h(main)h(by) h(ti)1217 2002 y(configure)1288 2041 y(var)g(fli)f(:)h(FastListImpl)1288 2081 y(var)g(s1i)f(:)h(StackImpl)e([fli])1288 2120 y(var)i(dli)f(:)h (DebugListImp)o(l)1288 2159 y(var)g(s2i)f(:)h(StackImpl)e([dli])1288 2199 y(var)i(ti)34 b(:)17 b(Tracker)f([s1i,)f(s2i])1147 2238 y(end)h(c1)1006 2371 y Fj(Figure)k(3:)31 b(The)21 b(textual)g(represen)o (tation)h(of)e(the)1006 2421 y(con\014guration)13 b Fd(c1)p Fj(.)p eop %%Page: 5 5 5 4 bop 117 195 a Fj(Logically)m(,)38 b(sub-con\014gurations)e(are)h(unnec-) 75 245 y(essary;)45 b(an)o(y)34 b(con\014guration)g(that)g(uses)h(sub-)75 295 y(con\014gurations)17 b(can)g(also)g(b)q(e)g(de\014ned)i(using)d(only)75 345 y(unit)g(instances.)28 b(Ho)o(w)o(ev)o(er,)17 b(ha)o(ving)f(a)g(rep)q (ository)75 394 y(of)11 b(w)o(ell-used)h(comp)q(onen)o(ts)g(clearly)f(aids)h (in)f(system)75 444 y(construction)18 b(and)f(in)g(the)h(quest)g(for)e(the)i (ob)r(ject-)75 494 y(orien)o(ted)c(\\holy)f(grail")g(of)g(comp)q(onen)o(t)h (reuse.)117 545 y(The)20 b(graphical)g(represen)o(tation)i(of)e(con\014gura-) 75 595 y(tions)14 b(is)g(the)h(same)f(as)g(that)h(of)e(units,)h(except)i (that)75 645 y(con\014gurations)h(are)g(red)h(instead)f(of)g(blue.)27 b(In)o(ter-)75 695 y(faces)13 b(implemen)o(ted)e(or)h(required)h(are)f (indicated)g(in)75 745 y(the)i(same)f(w)o(a)o(y)g(\(green)h(tabs)f(and)g (slots\),)h(and)f(con-)75 794 y(\014guration)20 b(instances)h(are)g (indicated)f(b)o(y)g(strip)q(ed)75 844 y(red)11 b(b)q(o)o(xes.)18 b(Note)10 b(that)h(the)g(tab)f(of)g(a)g(con\014guration)75 894 y(corresp)q(onds)j(to)d(the)i(tab)e(of)h(an)f(instance)i(it)e(instan-)75 944 y(tiates)17 b(and)f(exp)q(orts.)27 b(F)m(urthermore,)18 b(the)f(slots)f(of)75 994 y(a)i(con\014guration)f(corresp)q(ond)j(to)d(the)i (unresolv)o(ed)75 1044 y(slots)14 b(of)f(in)o(ternal)h(unit)f(instances.)75 1137 y Fe(The)18 b(Rep)r(ository)117 1207 y Fj(As)12 b(men)o(tioned)g(ab)q(o) o(v)o(e,)g(a)g(ConF)m(orm)f(implemen-)75 1256 y(tation)j(consists)i(of)e(a)g (rep)q(ository)h(of)g(comp)q(onen)o(ts,)75 1306 y(to)q(ols)g(for)h(querying)g (the)g(rep)q(ository)m(,)g(and)g(mec)o(ha-)75 1356 y(nisms)d(for)g (creating/mo)q(difying/adding/deleting)75 1406 y(rep)q(ository)h(elemen)o (ts.)19 b(The)14 b(ConF)m(orm)e(rep)q(ository)75 1456 y(stores)f(t)o(w)o(o)e (kinds)h(of)f(comp)q(onen)o(ts:)16 b(program)10 b(units)75 1506 y(and)22 b(con\014gurations.)43 b(Ho)o(w)o(ev)o(er,)24 b(these)f(en)o(tities)75 1555 y(de\014ne)c(classes,)h(not)f(instances.)602 1540 y Fh(6)653 1555 y Fj(T)m(o)e(get)i(a)f(run-)75 1605 y(ning)9 b(system,)i(the)g(user)f(simply)f(selects)j(a)d(complete)75 1655 y(con\014guration)19 b(from)g(the)h(rep)q(ository)m(,)h(or)f(creates)75 1705 y(one)i(using)f(rep)q(ository)h(comp)q(onen)o(ts.)40 b(The)22 b(sys-)75 1755 y(tem)e(building)f(pro)q(cess)j(is)e(then)h(automatic;)h(the) 75 1804 y(mec)o(hanics)13 b(will)e(dep)q(end)i(on)f(the)h(underlying)f(plat-) 75 1854 y(form.)117 1906 y(Constructing)h(a)f(complete)h(con\014guration)f (from)75 1955 y(rep)q(ository)24 b(comp)q(onen)o(ts)h(b)q(ears)g(some)e (explana-)75 2005 y(tion.)17 b(An)12 b(extended)i(example)e(is)g(presen)o (ted)i(in)e(the)75 2055 y(next)i(section.)117 2107 y(The)f(organization)e(of) i(the)g(rep)q(ository)h(has)f(b)q(een)75 2156 y(delib)q(erately)j(undersp)q (eci\014ed.)26 b(Clearly)m(,)14 b(ha)o(ving)h(a)75 2206 y(\015at)20 b(namespace)g(of)f(rep)q(ository)i(elemen)o(ts)f(is)g(not)75 2256 y(practical)e(for)f(more)h(than)f(a)h(v)o(ery)g(small)e(system.)75 2306 y(Ho)o(w)o(ev)o(er,)11 b(rep)q(ository)g(organization)f(is)g(considered) 75 2356 y(to)18 b(b)q(e)h(an)f(implemen)o(tation)e(issue,)k(and)e(will)e (also)p 75 2397 333 2 v 121 2424 a Fg(6)139 2435 y Ff(Unit)d(and)f (con\014guration)e(instances)i(within)g(a)i(con\014g-)75 2475 y(uration)f(can)i(b)q(e)g(though)o(t)e(of)i(as)g(attributes)e(of)i(the)g (class;)75 2514 y(no)c(space)f(is)i(allo)q(cated)d(for)i(them)g(un)o(til)f (an)h(instance)f(of)h(the)75 2554 y(con)o(taining)e(con\014gurat)o(ion)f(is)k (created.)1006 195 y Fj(dep)q(end)24 b(on)f(the)h(particular)f(to)q(ol)g (platform)f(b)q(e-)1006 245 y(ing)15 b(used.)25 b(Consequen)o(tly)m(,)16 b(no)f(more)h(will)e(b)q(e)j(said)1006 295 y(ab)q(out)d(rep)q(ository)g (organization.)1006 439 y Fk(3)69 b(Constructing)24 b(a)h(Con\014gu-)1109 514 y(ration)f(|)f(An)g(Example)1006 607 y Fj(Consider)17 b(the)g(example)g (rep)q(ository)g(of)f(Figure)h(1.)1006 657 y(There)h(are)h(four)e(unit)g (de\014nitions)h(in)f(the)h(rep)q(osi-)1006 707 y(tory:)j Fd(Tracker)p Fj(,)14 b(a)h(main)g(program)g(that)g(requires)1006 756 y(t)o(w)o(o)20 b(stac)o(ks)i(\()p Fi(i.e.)p Fj(,)g(instances)h(of)d(units)h(that)h(im-)1006 806 y(plemen)o(t)11 b(the)g(in)o(terface)g Fd(stackDefs)p Fj(\);)f Fd(StackImpl)p Fj(,)1006 856 y(whic)o(h)15 b(implemen)o(ts)h(a)f(stac)o(k)h (and)g(requires)h(a)e(list;)1006 906 y(and)32 b Fd(FastStackImpl)e Fj(and)j Fd(DebugStackImpl)p Fj(,)1006 956 y(b)q(oth)14 b(of)f(whic)o(h)h (implemen)o(t)f(lists.)18 b(Since)d Fd(Tracker)1006 1005 y Fj(is)21 b(the)i(only)e(main)f(program)h(in)h(the)g(rep)q(ository)1006 1055 y(\(it)12 b(is)g(the)h(only)f(comp)q(onen)o(t)g(that)h(implemen)o(ts)f (the)1006 1105 y Fd(main)h Fj(in)o(terface\),)h(let)g(us)h(consider)g (constructing)g(a)1006 1155 y(con\014guration)j(that)g(completely)g(implemen) o(ts)g(an)1006 1205 y(instance)c(of)g(it.)1047 1256 y(T)m(o)19 b(start)i(building)e(a)g(new)i(con\014guration,)f(w)o(e)1006 1306 y(c)o(ho)q(ose)11 b(the)f Fd(Build)21 b(New)g(Config)9 b Fj(option)g(from)h(the)1006 1355 y(main)g(ConF)m(orm)h(men)o(u.)17 b(This)11 b(creates)j(a)d(new)h(win-)1006 1405 y(do)o(w)i(con)o(taining)f(an) h(un)o(titled)f(con\014guration)h(b)q(o)o(x.)1006 1455 y(Th)o(us,)e(as)g(our) g(\014rst)h(action)f(on)f(the)i(new)g(con\014gura-)1006 1505 y(tion,)g(w)o(e)h(can)g(giv)o(e)f(it)h(a)f(name,)g(sa)o(y)h Fd(c1)p Fj(.)1047 1556 y(Next,)e(w)o(e)f(bro)o(wse)h(the)f(rep)q(ository)h (for)e(instances)1006 1606 y(to)17 b(add)h(to)g(the)g(new)g(con\014guration.) 30 b(T)m(o)17 b(add)h(an)1006 1656 y(instance)g(of)f Fd(Tracker)e Fj(to)j(our)f(con\014guration,)g(w)o(e)1006 1705 y(clic)o(k)f(on)h(the)h(b)q (o)o(x)e(represen)o(ting)j Fd(Tracker)c Fj(in)i(the)1006 1755 y(rep)q(ository)i(and)g(drag)f(the)i(mouse)f(in)o(to)f(the)h(new)1006 1805 y(con\014guration)f(windo)o(w.)31 b(The)19 b(result)g(is)f(that)h(an) 1006 1855 y(unnamed)24 b(instance)g(of)g Fd(Tracker)e Fj(no)o(w)i(app)q(ears) 1006 1905 y(within)19 b(the)i(b)q(o)o(x)f(represen)o(ting)i(our)e(new)h (con\014g-)1006 1955 y(uration)d Fd(c1)p Fj(.)31 b(F)m(urthermore,)20 b(since)f Fd(Tracker)e Fj(im-)1006 2004 y(plemen)o(ts)d(the)h(in)o(terface)f Fd(main)p Fj(,)f(the)h(new)h(instance)1006 2054 y(is)k(automatically)f(p)q (ositioned)i(at)f(the)i(top)f(of)f Fd(c1)1006 2104 y Fj(with)14 b(its)h(green)h(in)o(terface)f(tab)g(extending)g(b)q(ey)o(ond)1006 2154 y(the)f(top)f(b)q(oundary)g(of)g Fd(c1)p Fj(;)g(this)g(indicates)h(that) f Fd(c1)1006 2204 y Fj(exp)q(orts)j(the)g(in)o(terface)h Fd(main)p Fj(,)d(and)i(th)o(us)g(con)o(tains)1006 2253 y(a)d(main)g(program.)1047 2305 y(The)21 b(act)f(of)g(clic)o(king)f(on)h(a)g(comp)q(onen)o(t)h(\(unit) 1006 2354 y(or)c(con\014guration\))g(in)g(the)h(rep)q(ository)h(and)e(drag-) 1006 2404 y(ging)11 b(it)g(in)o(to)h(a)f(con\014guration)h(under)g (construction)1006 2454 y(corresp)q(onds)17 b(to)f(comp)q(onen)o(t)f(instan)o (tiation.)22 b(The)1006 2504 y(new)10 b(instance)h(m)o(ust)f(b)q(e)h(giv)o (en)f(a)g(name)g(b)o(y)g(the)g(con-)1006 2554 y(\014gurer,)22 b(or)e(the)g(system)h(can)f(pro)o(vide)g(a)g(default)p eop %%Page: 6 6 6 5 bop 75 195 a Fj(one.)117 249 y(ConF)m(orm)29 b(uses)j(con)o(text)f(to)f (constrain)h(the)75 299 y(building)16 b(of)i(con\014gurations.)30 b(The)18 b(instan)o(tiation)75 349 y(of)12 b(a)g(main)f(program)g(unit)h (describ)q(ed)i(ab)q(o)o(v)o(e)e(is)g(one)75 399 y(example.)22 b(T)m(rying)14 b(to)h(instan)o(tiate)g(m)o(ultiple)f(main)75 448 y(programs)e(in)h(a)f(single)g(con\014guration)g(w)o(ould)g(\(cor-)75 498 y(rectly\))j(b)q(e)f(disallo)o(w)o(ed)f(b)o(y)g(the)i(system.)117 552 y(So)20 b(far,)h Fd(c1)f Fj(consists)i(of)e(a)g(single)g(instance)h(of)75 602 y Fd(Tracker)p Fj(.)f(Let's)c(call)e(the)i(instance)g Fd(ti)p Fj(.)22 b(W)m(e)14 b(note)75 652 y(that)f(t)o(w)o(o)f(instances)i(that)f (implemen)o(t)g Fd(stackDefs)75 702 y Fj(are)i(required)h(\()p Fi(i.e.)p Fj(,)e(these)j(are)e(the)h(tabs)f(attac)o(hed)75 752 y(to)i(the)i(b)q(ottom)e(of)g Fd(ti)p Fj(\).)29 b(By)18 b(double-clic)o(king)e(on)75 801 y(one)f(of)f(the)h(tabs,)g(all)e(elemen)o (ts)j(of)e(the)h(rep)q(ository)75 851 y(that)c(implemen)o(t)g Fd(stackDefs)e Fj(are)j(highligh)o(ted.)k(In)75 901 y(this)11 b(case,)h(only)e(the)i(unit)f Fd(StackImpl)e Fj(satis\014es)j(the)75 951 y(query)m(.)22 b(W)m(e)15 b(can)h(no)o(w)f(\\clic)o(k)f(and)h(drag")g(t)o (wice)h(to)75 1001 y(instan)o(tiate)e(t)o(w)o(o)f(instances)i(of)f Fd(stackDefs)p Fj(;)d(let)j(us)75 1051 y(name)k(them)h Fd(s1i)f Fj(and)g Fd(s2i)p Fj(.)31 b(Next,)20 b(w)o(e)f(p)q(erform)75 1100 y Fi(binding)p Fj(:)34 b(w)o(e)21 b(clic)o(k)h(and)f(hold)g(on)g(the)h (tab)f(\(ex-)75 1150 y(p)q(orted)13 b(in)o(terface\))g(of)f Fd(s1i)f Fj(and)h(release)i(the)f(mouse)75 1200 y(button)k(when)g(the)h (mouse)f(is)f(p)q(oin)o(ting)g(to)g(one)h(of)75 1250 y(the)i(slots)f(of)g Fd(ti)p Fj(.)31 b(Since)19 b(the)g(tab)f(and)h(slot)f(refer)75 1300 y(to)c(the)g(same)g(in)o(terface,)g(the)g(binding)f(is)g(legal)g(and)75 1349 y Fd(s1i)19 b Fj(is)g(no)o(w)g(considered)i(to)e(b)q(e)h(b)q(ound)f(in)o (to)g(the)75 1399 y(slot)d(of)g Fd(ti)p Fj(.)24 b(This)17 b(is)f(indicated)g (graphically)f(b)o(y)h(a)75 1449 y(thic)o(k)e(arro)o(w)g(from)f Fd(s1i)g Fj(to)h Fd(ti)p Fj(.)k(Similarly)m(,)11 b(w)o(e)j(can)75 1499 y(bind)g Fd(s2i)f Fj(to)h(the)g(second)h(tab)f(of)f Fd(ti)p Fj(.)117 1553 y(W)m(e)k(could)h(decide)h(to)f(stop)g(at)g(this)g(p)q(oin)o(t) g(and)75 1603 y(simply)27 b(store)h(the)g(new)h(con\014guration)e(in)g(the)75 1653 y(rep)q(ository)m(.)36 b(If)20 b(w)o(e)g(did)f(so,)i(the)g(ConF)m(orm)e (con-)75 1702 y(\014guration)13 b(editor)h(w)o(ould)f(detect)i(that)f(there)h (w)o(ere)75 1752 y(t)o(w)o(o)e(unresolv)o(ed)h(slots,)g(and)f(these)i(w)o (ould)e(b)q(ecome)75 1802 y(slots)i(of)g(the)h(con\014guration)e Fd(c1)p Fj(.)22 b(A)15 b(con\014guration)75 1852 y(with)d(un\014lled)f(slots) h(is)g(not)g(capable)g(of)f(b)q(eing)h(built)75 1902 y(as)19 b(a)f(system;)j(ho)o(w)o(ev)o(er,)f(it)e(can)h(b)q(e)g(instan)o(tiated)75 1952 y(within)c(a)h(new)h(con\014guration)f(and)f(ha)o(v)o(e)h(its)h(slots)75 2001 y(\014lled)c(in)h(there.)117 2055 y(T)m(o)k(mak)o(e)h Fd(c1)f Fj(a)h(complete)h(con\014guration,)f(the)75 2105 y(imp)q(orts)9 b(of)g Fd(s1i)g Fj(and)g Fd(s2i)g Fj(m)o(ust)g(b)q(e)h(resolv)o(ed.)17 b(Eac)o(h)75 2155 y(requires)d(an)e(instance)h(of)f(a)g(unit)h(that)f (implemen)o(ts)75 2205 y(the)i(in)o(terface)h Fd(listDefs)p Fj(.)h(A)e(double-clic)o(k)f(on)g(the)75 2255 y(in)o(terface)18 b(slot)f(rev)o(eals)h(that)g(there)g(are)g(t)o(w)o(o)f(suc)o(h)75 2305 y(units)25 b(within)e(the)i(rep)q(ository:)40 b Fd(FastListImpl)75 2354 y Fj(and)19 b Fd(DebugListImpl)p Fj(.)32 b(W)m(e)19 b(can)g(create)i (one)e(in-)75 2404 y(stance)13 b(of)f(eac)o(h)h(and)f(bind)g(them)g(in)g(to)g (the)h(slots)f(of)75 2454 y Fd(s1i)k Fj(and)g Fd(s2i)p Fj(.)26 b(The)16 b(con\014guration)h(is)f(no)o(w)g(com-)75 2504 y(plete;)k(since)e (neither)h(of)e(the)h(list)f(instances)i(ha)o(v)o(e)75 2554 y(slots,)g(there)g(are)g(no)e(more)h(slots)g(to)g(b)q(e)h(\014lled)f(in.)979 1018 y @beginspecial 93 @llx 236 @lly 472 @urx 600 @ury 2160 @rwi @setspecial %%BeginDocument: diags/conf2.ps %!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Helvetica %%Pages: 1 %%BoundingBox: 93 236 472 600 %%EndComments 50 dict begin /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor /fontDict printFont findfont printSize scalefont dup setfont def /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def /vertoffset 0 descender sub printSize sub printFont /Courier ne printFont /Courier-Bold ne and { 1 add } if def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 7 Grid 8 %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.791209 0 0 0.791209 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Rect %I b 65535 2 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1.16462 0 0 0.947069 94.2716 187.507 ] concat %I 24 122 428 567 Rect End Begin %I Line %I b 65535 4 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t [ 1 0 0 1 162.427 152 ] concat %I 331 422 230 503 Line End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 284.386 -248.288 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Green 0 1 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 0.997322 0 0 2.93333 323.907 -289.861 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Green 0 1 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 0.997322 0 0 2.93333 252.907 -289.861 ] concat %I 70 332 30 10 Elli End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg BabyBlue 0 0.698482 1 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1.65217 0 0 1 18.3075 413 ] concat %I 160 271 251 312 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Coral 1 0.498039 0.313726 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1.09859 0 0 1.09108 308.07 261.465 ] concat %I 50 46 251 259 Rect End Begin %I Line %I b 65535 5 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1 0 0 1 222.333 152 ] concat %I 271 271 271 312 Line End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Coral 1 0.498039 0.313726 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1 0 0 1.09108 91 261.465 ] concat %I 50 46 251 259 Rect End Begin %I Line %I b 65535 4 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1 0 0 1 121.906 152 ] concat %I 140 271 140 312 Line End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 192.386 -580.861 ] concat %I 70 332 30 10 Elli End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg BabyBlue 0 0.698482 1 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1.33696 0 0 1 -14.3402 81 ] concat %I 160 271 251 312 Rect End Begin %I Line %I b 65535 4 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1 0 0 0.842697 152 230.101 ] concat %I 110 409 160 492 Line End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Green 0 1 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 0.997322 0 0 2.93333 192.386 -470.861 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 192.813 -430.861 ] concat %I 70 332 30 10 Elli End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg BabyBlue 0 0.698482 1 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1.32609 0 0 1 -10.1739 232 ] concat %I 160 271 251 312 Rect End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Green 0 1 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 0.997322 0 0 2.93333 424.761 -470.861 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 422.813 -580.861 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 424.24 -429.861 ] concat %I 70 332 30 10 Elli End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg BabyBlue 0 0.698482 1 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1.32609 0 0 1 221.253 232 ] concat %I 160 271 251 312 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg BabyBlue 0 0.698482 1 SetCFg %I cbg White 1 1 1 SetCBg %I p < 88 44 22 11 88 44 22 11 > -1 SetP %I t [ 1.33696 0 0 1 218.087 81 ] concat %I 160 271 251 312 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 242.333 554 ] concat %I [ (stackDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 473.76 554 ] concat %I [ (stackDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 302.427 675 ] concat %I [ (stackDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 373.427 675 ] concat %I [ (stackDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 251.385 403 ] concat %I [ (listDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 472.333 403 ] concat %I [ (listDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 242.854 494 ] concat %I [ (listDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 474.281 494 ] concat %I [ (listDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-18-180-* /Helvetica 18 SetF %I t [ 1 0 0 1 350.427 705 ] concat %I [ (ti) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-18-180-* /Helvetica 18 SetF %I t [ 1 0 0 1 230.573 533.479 ] concat %I [ (si) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-12-120-* /Helvetica 12 SetF %I t [ 1 0 0 1 261.521 514 ] concat %I [ (StackImpl) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-12-120-* /Helvetica 12 SetF %I t [ 1 0 0 1 493.948 513.052 ] concat %I [ (StackImpl) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-12-120-* /Helvetica 12 SetF %I t [ 1 0 0 1 390.948 695 ] concat %I [ (Tracker) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-18-180-* /Helvetica 18 SetF %I t [ 1 0 0 1 452.521 534.427 ] concat %I [ (si) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-12-120-* /Helvetica 12 SetF %I t [ 1 0 0 1 250.094 363 ] concat %I [ (FastListImpl) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-12-120-* /Helvetica 12 SetF %I t [ 1 0 0 1 472.573 364 ] concat %I [ (DebugListImpl) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-18-180-* /Helvetica 18 SetF %I t [ 1 0 0 1 452.948 384.375 ] concat %I [ (dli) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-18-180-* /Helvetica 18 SetF %I t [ 1 0 0 1 220.667 383.427 ] concat %I [ (fli) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-24-240-* /Helvetica 24 SetF %I t [ 1 0 0 1 137.479 701.333 ] concat %I [ (c2) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-18-180-* /Helvetica 18 SetF %I t [ 1 0 0 1 149.135 531.427 ] concat %I [ (fsci) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-18-180-* /Helvetica 18 SetF %I t [ 1 0 0 1 369.812 531.427 ] concat %I [ (dsci) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-14-140-* /Helvetica 14 SetF %I t [ 1 0 0 1 451.24 331 ] concat %I [ (DebugStackConf) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-14-140-* /Helvetica 14 SetF %I t [ 1 0 0 1 220.656 331 ] concat %I [ (FastStackConf) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 344.333 736.573 ] concat %I [ (main) ] Text End End %I eop showpage %%Trailer end %%EndDocument @endspecial 1006 1109 a(Figure)28 b(4:)46 b(A)28 b(con\014guration)g(that)g (uses)h(sub-)1006 1159 y(con\014gurations.)36 b(Usually)m(,)19 b(the)i(in)o(ternals)f(of)f(the)1006 1209 y(sub-con\014gurations)h(are)h (hidden;)i(the)d(in)o(terfaces)1006 1259 y(that)f(it)g(pro)o(vides)g(and/or)g (requires)h(are)g(of)f(most)1006 1309 y(in)o(terest.)1006 1437 y(W)m(e)c(can)h(no)o(w)f(add)h(the)g(new)g(con\014guration)f Fd(c1)h Fj(to)1006 1487 y(the)k(rep)q(ository)m(.)34 b(Figure)20 b(2)f(illustrates)g(the)h(\014nal)1006 1537 y(v)o(ersion)11 b(of)f Fd(c1)p Fj(.)17 b(Figure)11 b(3)g(giv)o(es)f(the)i(textual)f(equiv-) 1006 1587 y(alen)o(t.)1047 1638 y(A)22 b(rep)q(ository)g(en)o(tit)o(y)f (\(con\014guration)g(or)h(pro-)1006 1688 y(gram)16 b(unit\))g(is)h(said)f(to) h(b)q(e)g Fi(c)n(omplete)f Fj(if)g(it)g(imple-)1006 1738 y(men)o(ts)c Fd(main)f Fj(and)g(has)h(no)f(\(un\014lled\))h(slots.)17 b(This)12 b(is)1006 1788 y(the)j(case)g(with)f(our)g(newly-created)i(con\014guration) 1006 1838 y Fd(c1)p Fj(.)24 b(A)16 b(complete)g(comp)q(onen)o(t)h(can)f(b)q (e)h(built,)e(but)1006 1887 y(exactly)k(what)g(this)g(en)o(tails)f(will)g (dep)q(end)i(on)f(the)1006 1937 y(underlying)f(platform.)29 b(Ho)o(w)o(ev)o(er,)20 b(this)e(is)g(trans-)1006 1987 y(paren)o(t)c(to)g(the) g(con\014gurer.)1006 2135 y Fk(4)69 b(Summary)32 b(and)e(Researc)n(h)1109 2210 y(Directions)1006 2305 y Fj(Curren)o(tly)m(,)25 b(no)e(to)q(ols)g(exist) g(to)g(p)q(erform)h(c)o(hec)o(k-)1006 2354 y(ing)15 b(or)g(enforce)i (constrain)o(ts.)23 b(Ho)o(w)o(ev)o(er,)16 b(previous)1006 2404 y(exp)q(erience)24 b(with)e(the)g(Ob)r(ject-Orien)o(ted)i(T)m(uring)1006 2454 y(\(OOT\))13 b(en)o(vironmen)o(t)g([7)o(])g(suggests)h(that)f(building) 1006 2504 y(and)i(in)o(tegrating)f(ConF)m(orm)g(to)q(ols)g(in)o(to)g(the)i (OOT)1006 2554 y(system)11 b(should)f(b)q(e)h(straigh)o(tforw)o(ard.)17 b(This)10 b(will)f(b)q(e)p eop %%Page: 7 7 7 6 bop 146 306 a Fb(configura)o(tio)o(n)15 b(FastStack)o(Con)o(f)216 346 y(implements)f(StackDefs)h(by)i(si)216 385 y(configure)287 425 y(var)f(fli)h(:)g(FastListImp)o(l)287 464 y(var)f(si)35 b(:)17 b(StackImpl)e([fli])146 504 y(end)h(FastStackCo)o(nf)146 622 y(configura)o(tio)o(n)f(DebugStac)o(kCo)o(nf)216 661 y(implements)f (StackDefs)h(by)i(si)216 701 y(configure)287 740 y(var)f(dli)h(:)g (DebugListIm)o(pl)287 780 y(var)f(si)35 b(:)17 b(StackImpl)e([dli])146 819 y(end)h(DebugStackC)o(on)o(f)146 937 y(configura)o(tio)o(n)f(c2)216 977 y(implements)f(main)i(by)h(ti)216 1016 y(configure)287 1056 y(var)f(fsci)g(:)i(FastStackC)o(on)o(f)287 1095 y(var)e(dsci)g(:)i (DebugStack)o(Co)o(nf)287 1135 y(var)e(ti)52 b(:)18 b(Tracker)d([fsci.si,)f (dsci.si])146 1174 y(end)i(c2)75 1307 y Fj(Figure)g(5:)21 b(The)16 b(textual)f(represen)o(tations)j(of)d(con-)75 1357 y(\014gurations)k Fd(FastStackConf)p Fj(,)f Fd(DebugStackConf)75 1407 y Fj(and)c Fd(c2)p Fj(.)48 2313 y @beginspecial 71 @llx 308 @lly 511 @urx 646 @ury 2160 @rwi @setspecial %%BeginDocument: diags/repos2.ps %!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Helvetica %%Pages: 1 %%BoundingBox: 71 308 511 646 %%EndComments 50 dict begin /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor /fontDict printFont findfont printSize scalefont dup setfont def /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def /vertoffset 0 descender sub printSize sub printFont /Courier ne printFont /Courier-Bold ne and { 1 add } if def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 7 Grid 8 %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.791209 0 0 0.791209 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Rect %I b 65535 2 0 0 [] 0 SetB %I cfg DkGray 0.503548 0.503548 0.503548 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t [ 1.36344 0 0 0.948569 59.8706 277.323 ] concat %I 24 122 428 567 Rect End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 469.293 -494.58 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 489.574 -323.58 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 114.949 -506.726 ] concat %I 70 332 30 10 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 165.416 476.187 ] concat %I [ (stackDefs) ] Text End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 122.334 -399.809 ] concat %I 70 332 30 10 Elli End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Blue 0 0 1 SetCFg %I cbg LightBlue 0.678431 0.847059 0.901961 SetCBg %I p 1 SetP %I t [ 1.33696 0 0 1 -84.3922 262.052 ] concat %I 160 271 251 312 Rect End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Green 0 1 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 0.997322 0 0 2.93333 334.668 -299.289 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 335.095 -259.289 ] concat %I 70 332 30 10 Elli End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Blue 0 0 1 SetCFg %I cbg LightBlue 0.678431 0.847059 0.901961 SetCBg %I p 1 SetP %I t [ 1.32609 0 0 1 132.107 403.572 ] concat %I 160 271 251 312 Rect End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 321.199 -379.903 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Green 0 1 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 0.997322 0 0 2.93333 91.7613 -289.861 ] concat %I 70 332 30 10 Elli End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg Green 0 1 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < 11 22 44 88 11 22 44 88 > -1 SetP %I t [ 0.997322 0 0 2.93333 162.761 -289.861 ] concat %I 70 332 30 10 Elli End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Blue 0 0 1 SetCFg %I cbg LightBlue 0.678431 0.847059 0.901961 SetCBg %I p 1 SetP %I t [ 1.33696 0 0 1 118.416 281.958 ] concat %I 160 271 251 312 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 384.615 725.572 ] concat %I [ (stackDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 141.281 675 ] concat %I [ (stackDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 212.281 675 ] concat %I [ (stackDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 171.854 584.052 ] concat %I [ (listDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 371.666 603.958 ] concat %I [ (listDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 385.136 665.572 ] concat %I [ (listDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-14-140-* /Helvetica 14 SetF %I t [ 1 0 0 1 368.115 695.572 ] concat %I [ (StackImpl) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-14-140-* /Helvetica 14 SetF %I t [ 1 0 0 1 351.333 573.958 ] concat %I [ (DebugListImpl) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-24-240-* /Helvetica 24 SetF %I t [ 1 0 0 1 107.334 793.333 ] concat %I [ (Component Repository) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-14-140-* /Helvetica 14 SetF %I t [ 1 0 0 1 140.521 554.625 ] concat %I [ (FastListImpl) ] Text End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 297.522 -506.153 ] concat %I 70 332 30 10 Elli End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t [ 1.44005 0 0 1 71.8954 154.093 ] concat %I 160 271 251 312 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t [ 1.32564 0 0 1 -90.4447 154.469 ] concat %I 160 271 251 312 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-14-140-* /Helvetica 14 SetF %I t [ 1 0 0 1 134.083 445.812 ] concat %I [ (FastStackConf) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 347.041 476.76 ] concat %I [ (stackDefs) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-14-140-* /Helvetica 14 SetF %I t [ 1 0 0 1 307.177 445.437 ] concat %I [ (DebugStackConf) ] Text End Begin %I Elli %I b 65535 1 0 0 [] 0 SetB %I cfg DarkGreen 0 0.392157 0 SetCFg %I cbg PaleGreen 0.596078 0.984314 0.596078 SetCBg %I p 1 SetP %I t [ 0.997322 0 0 2.93333 124.282 -248.289 ] concat %I 70 332 30 10 Elli End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 183.281 736.572 ] concat %I [ (main) ] Text End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Blue 0 0 1 SetCFg %I cbg LightBlue 0.678431 0.847059 0.901961 SetCBg %I p 1 SetP %I t [ 1.65217 0 0 1 -142.838 413 ] concat %I 160 271 251 312 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-14-140-* /Helvetica 14 SetF %I t [ 1 0 0 1 169.375 705.948 ] concat %I [ (Tracker) ] Text End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t [ 1.32609 0 0 1 284.545 336.093 ] concat %I 160 271 251 312 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t [ 1.32609 0 0 1 264.264 165.093 ] concat %I 160 271 251 312 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-14-140-* /Helvetica 14 SetF %I t [ 1 0 0 1 547.947 628.385 ] concat %I [ (c1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-14-140-* /Helvetica 14 SetF %I t [ 1 0 0 1 526.719 458.333 ] concat %I [ (c2) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 547.999 658.76 ] concat %I [ (main) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-10-100-* /Helvetica 10 SetF %I t [ 1 0 0 1 528.666 488.708 ] concat %I [ (main) ] Text End End %I eop showpage %%Trailer end %%EndDocument @endspecial 75 2405 a(Figure)h(6:)20 b(Rep)q(ositories)15 b(ma)o(y)f(con)o(tain)g(b)q(oth)h(pro-)75 2454 y(gram)e(units)h(and)g (con\014guration)f(classes.)1006 195 y(in)o(v)o(estigated)g(in)h(the)g(near)h (future.)1047 248 y(ConF)m(orm)22 b(is)g(also)g(restrictiv)o(e)h(in)f(that)h (it)f(re-)1006 298 y(quires)e(a)g(program)g(unit)g(to)g(implemen)o(t)f (exactly)1006 348 y(one)11 b(in)o(terface)g(and)g(it)f(insists)h(that)g(a)g (program)f(unit)1006 398 y(sp)q(ecify)k(only)g(the)g(underlying)g(in)o (terface)h(of)e(a)h(unit)1006 447 y(it)e(wishes)h(to)f(use.)18 b(These)c(restrictions)g(w)o(ere)f(in)o(tro-)1006 497 y(duced)18 b(mainly)e(to)h(simplify)e(the)j(basic)g(paradigm)1006 547 y(of)d(ConF)m(orm.)22 b(Once)17 b(more)f(exp)q(erience)i(has)d(b)q(een)1006 597 y(gained,)e(these)i(restrictions)g(ma)o(y)e(b)q(e)i(relaxed.)1047 650 y(Curren)o(tly)m(,)32 b(ConF)m(orm)c(pro)o(vides)g(no)h(ob)r(ject-)1006 700 y(orien)o(ted)23 b(features,)j(apart)d(from)g(the)g(abilit)o(y)f(to)1006 750 y(instan)o(tiate)16 b(program)f(units)h(and)g(con\014gurations.)1006 799 y(This)d(is)g(not)g(a)g(considered)h(a)f(ma)r(jor)f(shortcoming,)1006 849 y(as)26 b(man)o(y)f(industrial)h(programming)e(languages)1006 899 y(do)15 b(not)g(supp)q(ort)h(the)g(ob)r(ject-orien)o(ted)g(paradigm.)1006 949 y(Ho)o(w)o(ev)o(er,)g(if)g(the)g(underlying)g(programming)e(lan-)1006 999 y(guage)f(do)q(es)i(supp)q(ort)f(class)g(inheritance,)g(a)g(trivial)1006 1048 y(extension)h(to)f(the)h(\\implemen)o(ts")e(relation)h(allo)o(ws)1006 1098 y(ConF)m(orm)g(to)h(mo)q(del)g(class)g(inheritance:)22 b(w)o(e)15 b(con-)1006 1148 y(sider)d(that)g(class)h Fd(C)f Fj(implemen)o(ts)f(in)o(terface)i Fd(I)f Fj(if)f Fd(I)h Fj(is)1006 1198 y(the)k(\\natural")f(in)o(terface)h(of)f Fd(C)h Fj(or)f(an)h (inheritance)1006 1248 y(ancestor)25 b(of)f Fd(C)p Fj(.)f(This)h(trivial)f (extension)i(allo)o(ws)1006 1297 y(ob)r(ject-orien)o(ted)20 b(soft)o(w)o(are)g(systems)h(to)e(b)q(e)h(mo)q(d-)1006 1347 y(elled)c(easily)g(b)o(y)h(ConF)m(orm.)25 b(Despite)17 b(this)g(exten-)1006 1397 y(sion,)k(ob)r(ject-orien)o(tation)f(in)f(ConF)m(orm)g(has)i(not)1006 1447 y(y)o(et)15 b(b)q(een)g(fully)f(explored:)19 b(inheritance)d(of)e (con\014g-)1006 1497 y(urations)g(has)h(not)g(y)o(et)g(b)q(een)h(addressed,)g (and)e(this)1006 1547 y(is)f(a)h(future)h(researc)o(h)g(topic.)1006 1683 y Fe(Ab)r(out)j(the)h(Author)1047 1754 y Fa(Mic)o(hael)e(Go)q(dfrey)c Fj(is)i(a)f(Ph.D.)g(candidate)h(at)1006 1804 y(the)20 b(Univ)o(ersit)o(y)g (of)f(T)m(oron)o(to)g(and)g(is)h(mem)o(b)q(er)g(of)1006 1854 y(the)13 b(IBM)g(Cen)o(tre)g(for)f(Adv)n(anced)h(Studies.)19 b(His)12 b(re-)1006 1904 y(searc)o(h)21 b(in)o(terests)g(include)f(making)e (formal)g(sp)q(ec-)1006 1954 y(i\014cation)24 b(and)g(other)h(formalisms)e (practical)i(for)1006 2003 y(industrial)d(soft)o(w)o(are)h(engineering.)46 b(He)24 b(can)f(b)q(e)1006 2053 y(reac)o(hed)12 b(b)o(y)e(email)g(at)g Fi(migo)n(d@turing.tor)n(onto.e)n(du)p Fj(.)1006 2103 y(His)k(thesis)g(sup)q (ervisor)h(is)f(Ric)o(hard)g(C.)f(Holt.)1006 2257 y Fk(References)1027 2354 y Fj([1])19 b(Luca)24 b(Cardelli,)h(James)f(Donah)o(ue,)i(Lucille)1091 2404 y(Glassman,)36 b(Mic)o(k)c(Jordan,)37 b(Bill)31 b(Kalso)o(w)1091 2454 y(and)15 b(Greg)f(Nelson,)h(\\Mo)q(dula-3)f(Rep)q(ort)h(\(re-)1091 2504 y(vised\)",)d(T)m(ec)o(hnical)f(Rep)q(ort)g(52,)g(Digital)e(Sys-)1091 2554 y(tems)14 b(Researc)o(h)i(Cen)o(ter,)e(No)o(v)o(em)o(b)q(er)g(1989.)p eop %%Page: 8 8 8 7 bop 96 195 a Fj([2])19 b(P)o(eter)33 b(H.)e(F)m(eiler,)36 b(\\Con\014guration)30 b(Man-)160 245 y(agemen)o(t)g(Mo)q(dels)f(in)g (Commercial)f(En)o(vi-)160 295 y(ronmen)o(ts",)17 b(T)m(ec)o(hnical)f(Rep)q (ort)h(CMU/SEI-)160 345 y(91-TR-7,)d(Soft)o(w)o(are)h(Engineering)g (Institute,)160 394 y(Carnegie-Mellon)f(Univ)o(ersit)o(y)m(,)f(Marc)o(h)h (1991.)96 477 y([3])19 b(Da)o(vid)160 527 y(Garlan,)13 b(Mary)h(Sha)o(w,)f (Chris)i(Ok)n(asaki,)e(Cur-)160 577 y(tis)19 b(M.)f(Scott,)i(and)f(Ro)o(y)f (F)g(Sw)o(onger,)i(\\Ex-)160 627 y(p)q(erience)f(with)e(a)g(Course)g(on)g (Arc)o(hitectures)160 677 y(for)f(Soft)o(w)o(are)g(Systems",)h(T)m(ec)o (hnical)e(Rep)q(ort)160 726 y(CMU/SEI-92-TR-17,)d(August)i(1992.)96 809 y([4])19 b(Da)o(vid)k(Harel,)k(\\On)d(Visual)g(F)m(ormalisms",)160 859 y Fi(Communic)n(ations)14 b(of)e(the)h(A)o(CM)p Fj(,)e(v)o(ol.)f(31,)h (no.)160 909 y(5,)i(Ma)o(y)h(1988.)96 992 y([5])19 b(Da)o(vid)f(Harel,)h (\\Biting)f(the)h(Silv)o(er)f(Bullet",)160 1042 y Fi(IEEE)g(Computer)p Fj(,)f(v)o(ol.)f(25,)h(no.)f(1,)h(Jan)o(uary)160 1092 y(1992,)c(pp)h(8-20.)96 1175 y([6])19 b(R.)25 b(C.)g(Holt,)i Fi(T)m(uring)e(R)n(efer)n(enc)n(e)g (Manual)p Fj(,)160 1225 y(Third)16 b(Edition,)e(Holt)h(Soft)o(w)o(are)h(Asso) q(ciates,)160 1274 y(T)m(oron)o(to,)d(1993.)96 1357 y([7])19 b(Spiros)c(Mancoridis,)f(R.)f(C.)h(Holt)g(and)g(Da)o(vid)160 1407 y(P)o(enn)o(y)m(,)32 b(\\A)c(Conceptual)h(F)m(ramew)o(ork)f(for)160 1457 y(Soft)o(w)o(are)34 b(Dev)o(elopmen)o(t",)k Fi(Pr)n(o)n(c.)33 b(of)h(the)160 1507 y(Twenty-First)f(A)o(CM)g(Computer)g(Scienc)n(e)160 1557 y(Confer)n(enc)n(e)p Fj(,)11 b(Indianap)q(olis,)f(Indiana,)g(F)m(ebru-) 160 1606 y(ary)m(,)j(1993.)96 1689 y([8])19 b(James)12 b(G.)e(Mitc)o(hell,)h (William)e(Ma)o(ybury)i(and)160 1739 y(Ric)o(hard)18 b(Sw)o(eet,)i Fi(Mesa)g(L)n(anguage)g(Manual)p Fj(,)160 1789 y(V)m(ersion)f(5.0,)g(T)m(ec)o (hnical)f(Rep)q(ort)h(No.)f(CSL-)160 1839 y(79-3,)13 b(Xero)o(x-P)m(AR)o(C,)g (April)g(1979.)96 1922 y([9])19 b(P)o(eter)27 b(W)m(egner,)h(\\Dimensions)c (of)h(Ob)r(ject-)160 1972 y(Based)d(Language)e(Design",)h Fi(OOPSLA)g('87)160 2022 y(Pr)n(o)n(c)n(e)n(e)n(dings,)36 b(A)o(CM)31 b(SIGPLAN)i(Notic)n(es)p Fj(,)160 2071 y(v)o(ol.)13 b(22,)g(no.)g(12,)g(1987.)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF