From 39eefa2a8655d811052c518741fd92a08bcfd055 Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Tue, 30 Mar 2010 12:57:57 +0200 Subject: [PATCH] docs: oxTutor.ps --- doc/ox/oxTutor.ps | 2158 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2158 insertions(+) create mode 100755 doc/ox/oxTutor.ps diff --git a/doc/ox/oxTutor.ps b/doc/ox/oxTutor.ps new file mode 100755 index 0000000..cf20dbe --- /dev/null +++ b/doc/ox/oxTutor.ps @@ -0,0 +1,2158 @@ +%!PS-Adobe-2.0 +%%Creator: dvips 5.519 Copyright 1986, 1993 Radical Eye Software +%%Title: gs.dvi +%%CreationDate: Fri Nov 5 17:57:05 1993 +%%Pages: 19 +%%PageOrder: Ascend +%%BoundingBox: 0 0 612 792 +%%EndComments +%DVIPSCommandLine: dvips -o gs.ps gs.dvi +%DVIPSSource: TeX output 1993.11.05:1756 +%%BeginProcSet: tex.pro +/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N +/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 +mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} +ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale +isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div +hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul +TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get +round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{ +statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 +0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn +begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X +array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo +setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx +FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{ +pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get} +B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup +length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B +/ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type +/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp +0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 +index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff +ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice +ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ +ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn +/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 +sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D +}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 +moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add +.99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage +userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook +known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X +/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for +65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 +0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V +{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 +getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} +ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley +false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley +scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave +transform round exch round exch itransform moveto rulex 0 rlineto 0 +ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta +0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail} +B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{ +3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p +-1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{ +3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end +%%EndProcSet +TeXDict begin 40258431 52099146 1000 300 300 +(/home/grad2/bischoff/oxDevelop/getstart/gs.dvi) @start +/Fa 3 112 df<007FFFE0000007803C000007800E000007800700000F000780000F0003 +80000F0003C0000F0003C0001E000780001E000780001E000780001E000F00003C001E00 +003C003C00003C007000003C01C000007FFE00000078078000007801C000007801E00000 +F000F00000F000F00000F000F00000F000F00001E001E00001E001E00001E001E00001E0 +01E00003C003C00003C003C04003C003C04003C001C08007C001C080FFFC00E300000000 +3C0022237EA125>82 D<3C07C04618604720308740388780388700388700380E00700E00 +700E00700E00701C00E01C00E01C01C01C01C13801C23803823803823801847001883000 +F018157E941D>110 D<003E0000C1800380C00700E00E00E01C00F03C00F03C00F07800 +F07800F07800F0F001E0F001E0F001C0F003C0700380700700700600381C001C380007E0 +0014157E9417>I E /Fb 3 104 df<03F0000FFC001FFE003FFF007FFF807FFF80FFFFC0 +FFFFC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC07FFF807FFF803FFF001FFE000FFC00 +03F00012147D9519>15 D<000F0038007000E001C001C001C001C001C001C001C001C001 +C001C001C001C001C001C001C001C001C0038007001E00F0001E000700038001C001C001 +C001C001C001C001C001C001C001C001C001C001C001C001C001C001C000E00070003800 +0F10317CA419>102 DI E /Fc 66 126 df<6030F078F078F078F078F078F078F078F078E038E0 +38E0380D0C7C9916>34 D<0387000387000387000387000387000387007FFFC0FFFFE0FF +FFE0070E00070E00070E000F1E000E1C000E1C000E1C00FFFFE0FFFFE07FFFC01C38001C +38001C38001C38001C38001C380013197F9816>I<3801807C0380FE0780FE0700EE0700 +EE0F00EE0E00EE1E00FE1C00FE3C007C380038380000780000700000F00000E00000E000 +01E00001C00003C0000380000383800787C0070FE00F0EE00E0EE01E0EE01C0EE01C0EE0 +3C0FE03807C018038013207F9C16>37 D<183C3E1E0E0E0E1E1C3C78F060070D799816> +39 D<00E001E007C007000F001E003C0038007800700070007000F000E000E000E000E0 +00E000E000E000F000700070007000780038003C001E000F00070007C001E000E00B217A +9C16>II<01C00001C00001C00001C00071C700F9CF807FFF001FFC0007F00007F0001F +FC007FFF00F9CF8071C70001C00001C00001C00001C00011127E9516>I<01C00001C000 +01C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF8001C00001C00001C000 +01C00001C00001C00001C00001C00011137E9516>I<387C7E7E3E0E1E3C7CF860070B79 +8416>II<70F8F8F8700505788416>I<0001800003 +80000780000700000F00000E00001E00001C00003C0000380000780000700000F00000E0 +0001E00001C00001C00003C0000380000780000700000F00000E00001E00001C00003C00 +00380000780000700000F00000E00000E0000011207E9C16>I<03E0000FF8001FFC001E +3C00380E00780F00700700700700E00380E00380E00380E00380E00380E00380E00380E0 +0380F00780700700700700780F003C1E001E3C001FFC000FF80003E00011197E9816>I< +01800380078007801F807F80FF8073800380038003800380038003800380038003800380 +03800380038003807FF87FFC7FF80E197C9816>I<07E0001FF8007FFE00783F00F00F00 +F00780F00380F00380000380000380000780000700000F00001E00003C0000780000F000 +03E0000780000F00001E03803C03807FFF80FFFF807FFF8011197E9816>I<03E0000FF8 +003FFC007C1E00780F00F00700E00700E00780E00780E00380F00780F00780780F803FFF +803FFB800FE380000780000700300F00780E00781E00787C007FF8003FE0000F80001119 +7E9816>57 D<70F8F8F870000000000000000070F8F8F8700512789116>I<387C7C7C38 +0000000000000000387C7C7C3C1C3C38F8F0600618799116>I<000380000780001F8000 +3E0000FC0003F00007E0001F80003E0000FC0000F00000FC00003E00001F800007E00003 +F00000FC00003E00001F8000078000038011157E9616>I<7FFF00FFFF80FFFF80000000 +000000000000000000000000FFFF80FFFF807FFF00110B7E9116>II<00F80003FE000FFF001F +0F803E3F803C7F8078FFC071E7C0F1C3C0E3C3C0E381C0E381C0E381C0E381C0E381C0E3 +C3C0F1C38071E78078FF003C7E003E3C001F03C00FFFC003FF0000FC0012197E9816>64 +D<00E00001F00001F00001B00001B00003B80003B80003B800031800071C00071C00071C +00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C07001C07007F1FC0FF1F +E07F1FC013197F9816>I<7FF800FFFE007FFF001C0F001C07801C03801C03801C03801C +07801C07001FFF001FFE001FFE001C1F001C03801C03C01C01C01C01C01C01C01C01C01C +03C01C07807FFF80FFFF007FFC0012197F9816>I<01F18007FF800FFF801F0F803C0780 +780780780380700380F00000E00000E00000E00000E00000E00000E00000E00000F00000 +7003807803807803803C07801F0F000FFE0007FC0001F00011197E9816>I<7FF800FFFE +007FFF001C0F001C07801C03C01C01C01C01C01C01E01C00E01C00E01C00E01C00E01C00 +E01C00E01C00E01C00E01C01C01C01C01C03C01C07801C0F807FFF00FFFE007FF8001319 +809816>I<7FFFC0FFFFC07FFFC01C01C01C01C01C01C01C01C01C00001C00001C1C001C +1C001FFC001FFC001FFC001C1C001C1C001C00001C00E01C00E01C00E01C00E01C00E07F +FFE0FFFFE07FFFE013197F9816>I73 +D76 DI<7E1FC0FF3FE07F1FC01D07001D87 +001D87001D87001DC7001DC7001CC7001CC7001CE7001CE7001CE7001C67001C67001C77 +001C77001C37001C37001C37001C17007F1F00FF9F007F0F0013197F9816>I<1FFC003F +FE007FFF00780F00F00780E00380E00380E00380E00380E00380E00380E00380E00380E0 +0380E00380E00380E00380E00380E00380F00780F00780780F007FFF003FFE001FFC0011 +197E9816>I<7FE000FFF8007FFC001C1E001C0F001C07001C07001C07001C07001C0F00 +1C1E001FFC001FF8001FFC001C3E001C0E001C0E001C0E001C0E001C0E201C0E701C0E70 +7F0FF0FF87E07F03C014197F9816>82 D<07E3001FFF007FFF00781F00F00F00E00700E0 +0700E00000F000007800007F80001FF00007FC0000FE00000F00000780000380000380E0 +0380E00380F00780F80F00FFFE00FFFC00C7F00011197E9816>I<7FFFE0FFFFE0FFFFE0 +E0E0E0E0E0E0E0E0E0E0E0E000E00000E00000E00000E00000E00000E00000E00000E000 +00E00000E00000E00000E00000E00000E00000E00007FC000FFE0007FC0013197F9816> +I86 D<7FFF80FFFF80FFFF80E00700E00F00E01E00E01C00003C00 +00780000700000F00001E00001C00003C0000780000700000F00001E03801C03803C0380 +780380700380FFFF80FFFF80FFFF8011197E9816>90 DIII<1FE0007FF8007FFC00783C00301E00000E00000E +0003FE001FFE007E0E00F00E00E00E00E00E00F01E00F83E007FFFE03FE7E00F83E01312 +7E9116>97 D<7E0000FE00007E00000E00000E00000E00000E00000E3E000EFF800FFFC0 +0F83E00F01E00E00F00E00F00E00700E00700E00700E00700E00F00F00E00F01E00F83C0 +0FFFC00EFF00063C001419809816>I<03F80FFE1FFE3C1E780C7000F000E000E000E000 +E000F000700778073E0F1FFE0FFC03F010127D9116>I<003F00007F00003F0000070000 +070000070000070003C7000FF7003FFF003C1F00780F00F00700F00700E00700E00700E0 +0700E00700F00700F00F00781F007C3F003FFFE01FF7F007C7E014197F9816>I<07E00F +F81FFC3C3E780E700FF007FFFFFFFFFFFFE000F000700778073E1F1FFE0FFC03F010127D +9116>I<001F00007F8000FF8001E78001C30001C00001C0007FFF00FFFF00FFFF0001C0 +0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0003FFE +007FFF003FFE0011197F9816>I<03E3C00FFFE01FFFE01E3CC03C1E00380E00380E0038 +0E003C1E001E3C001FFC001FF8003BE0003800003800001FFC001FFF003FFFC07803C0F0 +01E0E000E0E000E0E000E0F001E07C07C03FFF800FFE0003F800131C7F9116>I<7E0000 +FE00007E00000E00000E00000E00000E00000E3C000EFF000FFF800F87800F03800F0380 +0E03800E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F0 +1519809816>I<018003C003C0018000000000000000007FC07FC07FC001C001C001C001 +C001C001C001C001C001C001C001C001C07FFFFFFF7FFF101A7D9916>I<7E0000FE0000 +7E00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E0F000E1E000E3C000E7800 +0EF0000FF8000FF8000FBC000F1E000E0E000E0F000E07807F87F0FFCFF07F87F0141980 +9816>107 DII<7E3C00FEFF007FFF800F87800F03800F03800E03800E03800E03800E03800E +03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01512809116>I<03E0000FF800 +1FFC003C1E00780F00700700E00380E00380E00380E00380E00380F00780700700780F00 +3C1E001FFC000FF80003E00011127E9116>I<7E3E00FEFF807FFFC00F83E00F01E00E00 +F00E00F00E00700E00700E00700E00700E00F00F00E00F01E00F83C00FFFC00EFF000E3C +000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000141B809116>I114 D<0FEC3FFC7FFCF03CE01C +E01CF0007F801FF007FC003EE00EE00EF00EF81EFFFCFFF8C7E00F127D9116>I<030000 +0700000700000700000700007FFF00FFFF00FFFF00070000070000070000070000070000 +07000007000007010007038007038007078007878003FF0003FE0000F80011177F9616> +I<7E1F80FE3F807E1F800E03800E03800E03800E03800E03800E03800E03800E03800E03 +800E03800E07800F0F800FFFF007FFF803E3F01512809116>I<7F1FC0FF1FE07F1FC01C +07001E0F000E0E000E0E000E0E00071C00071C00071C00071C0003B80003B80003B80001 +F00001F00000E00013127F9116>I<7F1FC07F3FC07F1FC00F1C00073C0003B80003F000 +01F00000E00001E00001F00003B800073C00071C000E0E007F1FC0FF3FE07F1FC013127F +9116>120 D<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E00070E00071C00071C00 +039C00039C0003980001B80001B80000F00000F00000F00000E00000E00000E00001C000 +79C0007BC0007F80003F00003C0000131B7F9116>I<3FFFC07FFFC07FFFC0700780700F +00701E00003C0000F80001F00003E00007C0000F00001E01C03C01C07801C0FFFFC0FFFF +C0FFFFC012127F9116>I<001F80007F8001FF8001E00001C00001C00001C00001C00001 +C00001C00001C00001C00001C00003C0007F8000FF0000FF00007F800003C00001C00001 +C00001C00001C00001C00001C00001C00001C00001C00001E00001FF80007F80001F8011 +207E9C16>III E /Fd 50 122 df<0001FF0000001FFFC000007F80F00000FE00F80003FC01FC +0003F803FC0007F003FC0007F003FC0007F003FC0007F001F80007F000F00007F0000000 +07F000000007F000000007F0000000FFFFFFFC00FFFFFFFC00FFFFFFFC0007F001FC0007 +F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F0 +01FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001 +FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC007FFF1FFFC07FFF1FFF +C07FFF1FFFC0222A7FA926>12 D<00000600000000000F00000000000F00000000000F00 +000000000F00000000000F00000000000F00000000000F00000000000F00000000000F00 +000000000F00000000000F00000000000F00000000000F00000000000F00000000000F00 +000000000F00000000000F00000000000F00000000000F00000000000F0000007FFFFFFF +FFE0FFFFFFFFFFF0FFFFFFFFFFF07FFFFFFFFFE000000F00000000000F00000000000F00 +000000000F00000000000F00000000000F00000000000F00000000000F00000000000F00 +000000000F00000000000F00000000000F00000000000F00000000000F00000000000F00 +000000000F00000000000F00000000000F00000000000F00000000000F00000000000600 +00002C2E7CA535>43 D45 +D<1C007F00FF80FF80FF80FF80FF807F001C0009097B8813>I<00000300000007800000 +0F8000000F8000000F0000001F0000001F0000001E0000003E0000003E0000007C000000 +7C00000078000000F8000000F8000000F0000001F0000001F0000003E0000003E0000003 +C0000007C0000007C00000078000000F8000000F8000001F0000001F0000001E0000003E +0000003E0000003C0000007C0000007C000000F8000000F8000000F0000001F0000001F0 +000001E0000003E0000003E0000007C0000007C00000078000000F8000000F8000000F00 +00001F0000001F0000003E0000003E0000003C0000007C0000007C00000078000000F800 +0000F8000000F000000060000000193C7CAC22>I<000E00001E00007E0007FE00FFFE00 +FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 +00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 +00FE0000FE0000FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7FFFFE17277BA622> +49 D<00FF800003FFF0000FFFFC003F03FF007C00FF807C007FC0FE007FC0FF003FE0FF +003FE0FF003FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F8000 +007F800000FF000001FE000001FC000003F0000007E000000FC000001F0000003E000000 +7C00E0007800E000F000E001E001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC07F +FFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FFFC001F81 +FE001F00FF003F80FF003F807F803FC07F803F807F803F807F801F007F800000FF800000 +FF000000FF000001FE000003F8000007F00000FFC00000FFF0000001FC000000FF000000 +7F8000007FC000003FC000003FE000003FE000003FE03C003FE07E003FE0FF003FE0FF00 +3FE0FF003FC0FF007FC0FE007F807C00FF803F01FF001FFFFC0007FFF00000FF80001B27 +7DA622>I<00000E0000001E0000003E0000007E000000FE000000FE000001FE000003FE +0000077E00000E7E00000E7E00001C7E0000387E0000707E0000E07E0000E07E0001C07E +0003807E0007007E000E007E000E007E001C007E0038007E0070007E00E0007E00FFFFFF +F8FFFFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE000000FE000000FE +000000FE00007FFFF8007FFFF8007FFFF81D277EA622>I<0C0003000F803F000FFFFE00 +0FFFFE000FFFFC000FFFF8000FFFE0000FFFC0000FFE00000E0000000E0000000E000000 +0E0000000E0000000E0000000E7FC0000FFFF8000F80FE000E007F000C003F8000003F80 +00001FC000001FC000001FE000001FE018001FE07E001FE0FE001FE0FE001FE0FE001FE0 +FE001FE0FE001FC078003FC078003F803C007F001F01FE000FFFFC0003FFF00000FF8000 +1B277DA622>I<0007F000003FFC0000FFFF0001FC0F0007F01F800FE03F800FC03F801F +C03F803F803F803F801F007F8000007F0000007F0000007F000000FF000000FF0FC000FF +3FF800FF70FE00FFE03F00FFC03F80FF801FC0FF801FC0FF801FC0FF001FE0FF001FE0FF +001FE0FF001FE07F001FE07F001FE07F001FE07F001FE03F801FC03F801FC01F803F800F +C03F8007E0FF0003FFFC0000FFF000003FC0001B277DA622>I<380000003E0000003FFF +FFF03FFFFFF03FFFFFF07FFFFFE07FFFFFC07FFFFFC07FFFFF8070000F0070001E007000 +3C00E0003800E0007800E000F0000001E0000003C0000003C0000007800000078000000F +0000001F0000001F0000001F0000003F0000003F0000003E0000007E0000007E0000007E +0000007E000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE +000000FE0000003800001C297CA822>I<003FC00001FFF00003FFFC000FC07E000F003F +001F001F001E001F803E000F803E000F803F000F803F800F803FC01F803FF01F003FFC3F +001FFE7E001FFFF8000FFFE00007FFF80001FFFC0001FFFF0007FFFF801F8FFF803F03FF +C07E01FFC07C007FE0FC001FE0F8000FE0F80007E0F80003E0F80003E0F80003E0FC0003 +C07C0007C07E0007803F000F801FC03F000FFFFC0003FFF800007FC0001B277DA622>I< +007F800001FFF00007FFF8000FE0FE001FC07E003F803F007F003F807F003F80FF001FC0 +FF001FC0FF001FC0FF001FC0FF001FE0FF001FE0FF001FE0FF001FE07F003FE07F003FE0 +7F003FE03F807FE01F80FFE00FE1DFE003FF9FE0007E1FE000001FE000001FC000001FC0 +00001FC000003FC01F003F803F803F803F807F003F807F003F80FE003F01FC001E03F800 +0FFFE00007FF800001FE00001B277DA622>I<1C007F00FF80FF80FF80FF80FF807F001C +000000000000000000000000000000000000001C007F00FF80FF80FF80FF80FF807F001C +00091B7B9A13>I<000003800000000007C00000000007C0000000000FE0000000000FE0 +000000000FE0000000001FF0000000001FF0000000003FF8000000003FF8000000003FF8 +0000000073FC0000000073FC00000000F3FE00000000E1FE00000000E1FE00000001C0FF +00000001C0FF00000003C0FF80000003807F80000007807FC0000007003FC0000007003F +C000000E003FE000000E001FE000001E001FF000001C000FF000001FFFFFF000003FFFFF +F800003FFFFFF80000780007FC0000700003FC0000700003FC0000E00001FE0000E00001 +FE0001E00001FF0001C00000FF0001C00000FF00FFFE001FFFFEFFFE001FFFFEFFFE001F +FFFE2F297EA834>65 D<00003FF001800003FFFE0780000FFFFF8F80003FF007FF8000FF +8001FF8001FE00007F8007FC00003F8007F800001F800FF000000F801FE000000F803FE0 +000007803FC0000007807FC0000003807FC0000003807FC000000380FF8000000000FF80 +00000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80 +00000000FF8000000000FF8000000000FF80000000007FC0000000007FC0000003807FC0 +000003803FC0000003803FE0000003801FE0000007800FF00000070007F800000F0007FC +00001E0001FE00003C0000FF8000F800003FF007F000000FFFFFC0000003FFFF00000000 +3FF8000029297CA832>67 DII<00007FE003000003FFFC0F00001FFFFF1F00007FF00FFF0000FF80 +01FF0003FE0000FF0007FC00007F000FF800003F000FF000001F001FE000001F003FE000 +000F003FC000000F007FC0000007007FC0000007007FC000000700FF8000000000FF8000 +000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000 +000000FF8000000000FF8001FFFFF8FF8001FFFFF87FC001FFFFF87FC00000FF007FC000 +00FF003FC00000FF003FE00000FF001FE00000FF000FF00000FF000FF80000FF0007FC00 +00FF0003FE0001FF0000FF8001FF00007FF007FF00001FFFFFBF000003FFFE0F0000007F +F003002D297CA836>71 D73 +D76 +DII<0000FFE000000007FFFC0000003FC07F8000007F001FC0 +0001FC0007F00003F80003F80007F00001FC000FF00001FE001FE00000FF001FE00000FF +003FC000007F803FC000007F807FC000007FC07F8000003FC07F8000003FC07F8000003F +C0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003F +E0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE07F8000003FC07FC000007F +C07FC000007FC03FC000007F803FC000007F801FE00000FF001FE00000FF000FF00001FE +0007F00001FC0003F80003F80001FC0007F00000FF001FE000003FC07F8000000FFFFE00 +000000FFE000002B297CA834>I<007F806003FFF0E00FFFFFE01F807FE03F001FE07E00 +07E07E0003E07C0003E0FC0001E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC0 +00007FFE00007FFFE0003FFFFC003FFFFF001FFFFF8007FFFFC003FFFFE000FFFFF00007 +FFF000007FF000000FF8000007F8000003F8E00003F8E00001F8E00001F8E00001F8F000 +01F8F00001F0F80003F0FC0003E0FF0007E0FFE01FC0FFFFFF00E0FFFE00C01FF0001D29 +7CA826>83 D85 D89 D<01FF800007FFF0000F81FC001FC0FE001FC07F001F +C07F001FC03F800F803F8000003F8000003F8000003F80000FFF8000FFFF8007FC3F801F +E03F803F803F807F803F807F003F80FE003F80FE003F80FE003F80FE007F80FF007F807F +00FFC03F83DFFC0FFF0FFC01FC03FC1E1B7E9A21>97 DI<001FF80000FFFE0003F01F00 +0FE03F801FC03F803F803F803F803F807F801F007F000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF0000007F0000007F8000003F8001C0 +3FC001C01FC003C00FE0078003F01F0000FFFC00001FE0001A1B7E9A1F>I<00003FF800 +00003FF80000003FF800000003F800000003F800000003F800000003F800000003F80000 +0003F800000003F800000003F800000003F800000003F800000003F800000003F800001F +E3F80000FFFBF80003F03FF8000FE00FF8001FC007F8003F8003F8003F8003F8007F8003 +F8007F0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8 +00FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8003F8003F8003F8007F800 +1FC00FF8000FE01FF80003F03FFF8000FFF3FF80003FC3FF80212A7EA926>I<003FE000 +01FFF80003F07E000FE03F001FC01F803F800FC03F800FC07F000FC07F0007E0FF0007E0 +FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF000000FF0000007F000000 +7F8000003F8000E03F8001E01FC001C00FE003C003F81F8000FFFE00001FF0001B1B7E9A +20>I<0007F0003FFC00FE3E01FC7F03F87F03F87F07F07F07F03E07F00007F00007F000 +07F00007F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F000 +07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000 +07F00007F00007F00007F0007FFF807FFF807FFF80182A7EA915>I<00FF81F003FFE7FC +0FC1FE7C1F80FC7C3F80FE7C3F007E107F007F007F007F007F007F007F007F007F007F00 +7F007F003F007E003F80FE001F80FC000FC1F8001FFFE00018FF8000380000003C000000 +3C0000003E0000003FFFF8003FFFFF001FFFFFC00FFFFFE007FFFFF01FFFFFF07E0007F8 +7C0001F8F80001F8F80000F8F80000F8F80000F8FC0001F87E0003F03F0007E00FC01F80 +03FFFE00007FF0001E287E9A22>II<07001FC01FE03FE03FE03FE01FE01FC007000000 +000000000000000000000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE0 +0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14> +I108 DII< +003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007E07F0007F07F0007F0 +7F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8 +7F0007F07F0007F03F800FE03F800FE01F800FC00FC01F8007F07F0001FFFC00003FE000 +1D1B7E9A22>II114 D<03FE300FFFF03E03F07800F07000F0F00070F00070F80070FC +0000FFE000FFFE007FFFC03FFFE01FFFF007FFF800FFFC0003FC0000FCE0007CE0003CF0 +003CF0003CF80078FC0078FF01F0F7FFC0C1FF00161B7E9A1B>I<007000007000007000 +00700000F00000F00000F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F000 +07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000 +07F03807F03807F03807F03807F03807F03807F03803F87001F8F000FFE0001F8015267F +A51B>III< +FFFE7FFC0FFEFFFE7FFC0FFEFFFE7FFC0FFE0FE007E000E007F003F001C007F003F001C0 +07F807F803C003F807F8038003F807F8038001FC0EFC070001FC0EFC070001FE1EFC0F00 +00FE1C7E0E0000FE1C7E0E0000FF383F1E00007F383F1C00007F783F3C00003FF01FB800 +003FF01FB800003FF01FF800001FE00FF000001FE00FF000000FC007E000000FC007E000 +000FC007E00000078003C00000078003C0002F1B7F9A32>III E /Fe 40 122 df<6060F0F0F8F868680808080808081010101020 +20404080800D0C7F9C15>34 D<0006000000060000000600000006000000060000000600 +0000060000000600000006000000060000000600000006000000060000FFFFFFE0FFFFFF +E00006000000060000000600000006000000060000000600000006000000060000000600 +00000600000006000000060000000600001B1C7E9720>43 D<60F0F07010101010202040 +80040C7C830C>II<60F0F06004047C830C>I<03E00C30100820 +0C20066006600660067006780C3E083FB01FE007F007F818FC307E601E600FC007C003C0 +03C003C00360026004300C1C1007E0101D7E9B15>56 D<00060000000600000006000000 +0F0000000F0000000F00000017800000178000001780000023C0000023C0000023C00000 +41E0000041E0000041E0000080F0000080F0000180F8000100780001FFF80003007C0002 +003C0002003C0006003E0004001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F +>65 DI<001F808000E06180018019800700 +07800E0003801C0003801C00018038000180780000807800008070000080F0000000F000 +0000F0000000F0000000F0000000F0000000F0000000F000000070000080780000807800 +0080380000801C0001001C0001000E000200070004000180080000E03000001FC000191E +7E9C1E>I70 D<001F808000E06180018019 +80070007800E0003801C0003801C00018038000180780000807800008070000080F00000 +00F0000000F0000000F0000000F0000000F0000000F000FFF0F0000F8070000780780007 +8078000780380007801C0007801C0007800E00078007000B800180118000E06080001F80 +001C1E7E9C21>I76 +D<003F800000E0E0000380380007001C000E000E001C0007003C00078038000380780003 +C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001 +E0F00001E0700001C0780003C0780003C0380003803C0007801C0007000E000E0007001C +000380380000E0E000003F80001B1E7E9C20>79 D<07E0801C1980300580700380600180 +E00180E00080E00080E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF80 +000F800007C00003C00001C08001C08001C08001C0C00180C00180E00300D00200CC0C00 +83F800121E7E9C17>83 D<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F002080 +0F0020800F0020800F0020000F0000000F0000000F0000000F0000000F0000000F000000 +0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000 +0F0000000F0000001F800003FFFC001B1C7F9B1E>I89 +D<08081010202040404040808080808080B0B0F8F8787830300D0C7A9C15>92 +D<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C00601C +00E01C40E01C40E01C40603C40304E801F870012127E9115>97 DI<07E00C301878307870306000E000E000E000E000E000E0 +0060007004300418080C3007C00E127E9112>I<003F0000070000070000070000070000 +070000070000070000070000070000070003E7000C1700180F00300700700700600700E0 +0700E00700E00700E00700E00700E00700600700700700300700180F000C370007C7E013 +1D7E9C17>I<03E00C301818300C700E6006E006FFFEE000E000E000E000600070023002 +18040C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FF +E00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E007FE00F +1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C00381C00381C00181800 +1C38000C300013C0001000003000001800001FF8001FFF001FFF803003806001C0C000C0 +C000C0C000C06001803003001C0E0007F800121C7F9215>II<18003C003C0018000000000000000000000000000000FC001C +001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091D7F +9C0C>I107 +DIII<03F0000E1C00180600300300700380600180E001C0E001C0E001C0E0 +01C0E001C0E001C06001807003803003001806000E1C0003F00012127F9115>II114 D<1F9030704030C010C010E010F8007F803F +E00FF000F880388018C018C018E010D0608FC00D127F9110>I<04000400040004000C00 +0C001C003C00FFE01C001C001C001C001C001C001C001C001C001C101C101C101C101C10 +0C100E2003C00C1A7F9910>IIII<7F8F +F00F03800F030007020003840001C80001D80000F00000700000780000F800009C00010E +00020E000607000403801E07C0FF0FF81512809116>II +E /Ff 3 52 df<0C001C00EC000C000C000C000C000C000C000C000C000C000C000C000C +000C000C000C00FFC00A137D9211>49 D<1F0060C06060F070F030603000700070006000 +C001C00180020004000810101020207FE0FFE00C137E9211>I<0FC03070703870387038 +0038003000E00FC0007000380018001C601CF01CF018E03860701FC00E137F9211>I +E /Fg 61 126 df<2008F01EF01EF01EF01EF01EF01EF01EF01E701C701C701C701C701C +600C0F0F7B9E1A>34 D<00600000E00000E00000E00000E00003FC000FFF001FFF803EE7 +C078E1C0F0E1E0E0E0E0E0E1E0E0E1E0E0E0C0F0E00078E0003FE0001FF8000FFE0001FF +0000EF8000E3C000E1C060E1E0F0E0E0F0E0E0F0E0E0E0E1E0F0E1C078E3C03EEF801FFF +000FFE0003F80000E00000E00000E00000600013277DA21A>36 D<3C00C07E01E07E03E0 +FF03E0E703C0E707C0E707C0E70780E70F80E70F80E71F00FF1F007E1E007E3E003C3E00 +003C00007C00007C0000F80000F80000F00001F00001F00001E00003E00003E00003C1E0 +07C3F007C3F00F87F80F87380F07381F07381F07381E07383E07F83E03F03C03F01801E0 +15277EA21A>I<01E00003F00007F8000F3C000E1C000E1C000E1C000E1C000E3C000E39 +FC0E79FC0FF1FC07E1E007C1C00781C00783C00F83801FC7803DC70079E700F0EF00E0FE +00E07E00E03C08E03C1CF07E1C78FF3C7FE7F83FC3F80F81F0161E7F9D1A>I<1C3C3E1E +0E0E0E0E1E1C3C38F8F0E0070F779D1A>I<0038007800F801E003C007800F001E001C00 +3C0038007800700070007000F000E000E000E000E000E000E000E000E000F00070007000 +7000780038003C001C001E000F00078003C001E000F8007800380D2878A21A>I<6000F0 +0078003C001E000F00078003C001C001E000E000F0007000700070007800380038003800 +380038003800380038007800700070007000F000E001E001C003C007800F001E003C0078 +00F00060000D287CA21A>I<00E00000E00000E00000E00040E040F0E1E0F8E3E07EEFC0 +1FFF0007FC0003F80007FC001FFF007EEFC0F8E3E0F0E1E040E04000E00000E00000E000 +00E00013157D991A>I<0030000078000078000078000078000078000078000078000078 +007FFFF0FFFFF8FFFFF87FFFF00078000078000078000078000078000078000078000078 +0000300015167E991A>I<3C7E7F7F7F3F070F0E3EFCF8E0080D77851A>I<7FFFC0FFFFE0 +FFFFE07FFFC013047D901A>I<78FCFCFCFC78060676851A>I<0000C00001E00003E00003 +E00003C00007C00007C0000F80000F80001F00001F00001E00003E00003E00007C00007C +0000F80000F80001F00001F00001E00003E00003E00007C00007C0000F80000F80000F00 +001F00001F00003E00003E00007C00007C0000780000F80000F80000F000006000001327 +7DA21A>I<01F00007FC000FFE001F1F001C07003803803803807001C07001C07001C0E0 +00E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07001C078 +03C03803803C07801C07001F1F000FFE0007FC0001F000131E7D9D1A>I<00C001C003C0 +03C007C00FC07FC0FDC079C001C001C001C001C001C001C001C001C001C001C001C001C0 +01C001C001C001C001C001C07FFF7FFF7FFF101E7B9D1A>I<07F8000FFE001FFF003C0F +807803C0F001C0E001E0F000E0F000E06000E00000E00000E00001E00001C00003C00007 +80000F00000E00003E00007C0000F80001E00003C0000780000F00001E00E03C00E07FFF +E0FFFFE07FFFE0131E7D9D1A>I<78FCFCFCFC7800000000000000000078FCFCFCFC7806 +1576941A>58 D<3C7E7E7E7E3C0000000000000000003C7C7E7E7E3E0E1E1C3CF8F0E007 +1C77941A>I<7FFFF0FFFFF8FFFFF87FFFF00000000000000000000000007FFFF0FFFFF8 +FFFFF87FFFF0150C7E941A>61 D<007E0001FF8003FFC007C3E00F00E01E0FF03C3FF038 +7FF07879F870F0F8F0E078E1E078E1C038E1C038E1C038E1C038E1C038E1C038E1E078F0 +E07070F0F07879E0387FE03C3FC01E0F000F003807C1F803FFF801FFE0007F80151E7E9D +1A>64 D<003800007C00007C00006C0000EE0000EE0000EE0000C60000C60001C70001C7 +0001C70001C7000383800383800383800383800701C00701C007FFC007FFC00FFFE00E00 +E00E00E00E00E00E00E01C00707F01FCFF83FE7F01FC171E7F9D1A>I<00FE3803FFB807 +FFF80F83F81E00F81C00783C0078780038700038700038F00000E00000E00000E00000E0 +0000E00000E00000E00000E00000F000007000387000387800383C00781C00701E00F00F +83E007FFC003FF8000FE00151E7E9D1A>67 D<7FFE00FFFF007FFF801C07C01C01E01C00 +F01C00701C00781C00381C00381C003C1C001C1C001C1C001C1C001C1C001C1C001C1C00 +1C1C001C1C003C1C00381C00381C00781C00701C00F01C01E01C07C07FFFC0FFFF007FFE +00161E7F9D1A>II73 D<7FE000FFF0007FE0000E00000E +00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E +00000E00000E00000E00000E00000E00000E001C0E001C0E001C0E001C0E001C7FFFFCFF +FFFC7FFFFC161E7F9D1A>76 D<7E003F00FF007F807F007F001D80DC001D80DC001D80DC +001DC1DC001DC1DC001CC19C001CC19C001CE39C001CE39C001C631C001C771C001C771C +001C361C001C361C001C3E1C001C1C1C001C1C1C001C001C001C001C001C001C001C001C +001C001C001C001C001C001C007F007F00FF80FF807F007F00191E809D1A>II<0FFE003FFF807FFFC07C07C07001C0 +F001E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0 +E000E0E000E0E000E0E000E0E000E0E000E0F001E0F001E07001C07C07C07FFFC03FFF80 +0FFE00131E7D9D1A>I<07F1C01FFDC03FFFC07C1FC07007C0F003C0E001C0E001C0E001 +C0E00000F000007800003F00001FF8000FFE0001FF00000F800003C00001C00001E00000 +E06000E0E000E0E000E0F001E0F003C0FE0780FFFF80FFFE00E3FC00131E7D9D1A>83 +D<7FFFFEFFFFFEFFFFFEE0380EE0380EE0380EE0380E0038000038000038000038000038 +000038000038000038000038000038000038000038000038000038000038000038000038 +0000380000380000380003FF8003FF8003FF80171E7F9D1A>III91 D<600000F00000F80000F800007800007C0000 +7C00003E00003E00001F00001F00000F00000F80000F800007C00007C00003E00003E000 +01E00001F00001F00000F80000F800007C00007C00003E00003E00001E00001F00001F00 +000F80000F800007C00007C00003C00003E00003E00001E00000C013277DA21A>II<1FF0003FFC007FFE00781F0030078000038000038000FF8007 +FF801FFF803F83807C0380F00380E00380E00380E00380F007807C1F803FFFFC1FFDFC07 +F0FC16157D941A>97 DI<01 +FF8007FFC00FFFE01F01E03C00C0780000700000F00000E00000E00000E00000E00000E0 +0000F000007000007800703C00701F01F00FFFE007FFC001FF0014157D941A>I<001FC0 +001FC0001FC00001C00001C00001C00001C00001C00001C001F9C007FDC00FFFC01F0FC0 +3C07C07803C07003C0F001C0E001C0E001C0E001C0E001C0E001C0F003C07003C07807C0 +3807C03E1FC01FFFFC0FFDFC03F1FC161E7E9D1A>I<01FC0007FF000FFF801F07C03C01 +E07800E07000F0F00070E00070FFFFF0FFFFF0FFFFF0E00000F000007000007800703C00 +701F01F00FFFE007FFC001FF0014157D941A>I<000FF0001FF8003FF800787800F03000 +E00000E00000E00000E0007FFFF0FFFFF0FFFFF000E00000E00000E00000E00000E00000 +E00000E00000E00000E00000E00000E00000E00000E00000E00000E0003FFF807FFFC03F +FF80151E7F9D1A>I<01F8FC07FFFE0FFFFE1F0F8C1C03803C03C03801C03801C03801C0 +3C03C01C03801F0F801FFF003FFE0039F8003800003C00001C00001FFF801FFFF03FFFF8 +7C00FC70001CF0001EE0000EE0000EE0000EF0001E78003C3F01F81FFFF00FFFE001FF00 +17217F941A>II<00C00001 +E00001E00000C0000000000000000000000000000000000000007FE0007FE0007FE00000 +E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000 +E00000E00000E0007FFF80FFFFC07FFF80121F7C9E1A>I107 DI<7DF1F000FFFBF8007FFFFC001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C00 +1C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C00 +1C1C1C007F1F1F00FF9F9F807F1F1F00191580941A>II<01F00007FC001FFF003E0F803C0780 +7803C07001C0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C0780 +3E0F801FFF0007FC0001F00013157D941A>II<01F8E007FEE00FFFE01F0FE03C03E07801E07001E0F0 +00E0E000E0E000E0E000E0E000E0E000E0F001E07001E07803E03C07E01E0FE00FFFE007 +FCE003F8E00000E00000E00000E00000E00000E00000E00000E00000E0000FFE000FFE00 +0FFE17207E941A>I<7F87F0FF9FFC7FBFFC03FC3C03F01803E00003E00003C00003C000 +0380000380000380000380000380000380000380000380000380007FFF00FFFF007FFF00 +16157E941A>I<0FFB803FFF807FFF80F80F80E00380E00380E00380F800007FC0003FFC +000FFF00007F800007C06001C0E001C0F001C0F003C0FC0F80FFFF00FFFE00E7F8001215 +7C941A>I<00C00001C00001C00001C00001C00001C00001C0007FFFE0FFFFE0FFFFE001 +C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C07001C07001 +C07001C0F001E1E000FFE0007FC0003F00141C7F9B1A>II<7F83FCFFC7FE7F83FC0E00E00E00 +E00E00E00701C00701C00701C003838003838003838001C70001C70001C70000EE0000EE +0000EE00007C00007C0000380017157F941A>I<7FC7F87FCFFC7FC7F80703C003838003 +C70001EF0000FE00007C00007800003800007C0000EE0001EE0001C7000383800783C00F +01C07FC7FCFFC7FE7FC7FC17157F941A>120 D<7FC3FCFFC7FE7FC3FC0E00E00E00E007 +00E00701C00781C00381C003838003C38001C38001C70000E70000E70000E60000660000 +6E00003C00003C00003C0000380000380000380000700000700030700078E00071E0007F +C0003F80001E000017207F941A>I<0007E0001FE0003FE0007C0000F00000E00000E000 +00E00000E00000E00000E00000E00000E00000E00000E00000E00001E00007C000FF8000 +FF0000FF800007C00001E00000E00000E00000E00000E00000E00000E00000E00000E000 +00E00000E00000E00000F000007C00003FE0001FE00007E013277DA21A>123 +D<7C0000FF0000FF800007C00001E00000E00000E00000E00000E00000E00000E00000E0 +0000E00000E00000E00000E00000F000007C00003FE0001FE0003FE0007C0000F00000E0 +0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00001E00007C0 +00FF8000FF00007C000013277DA21A>125 D E /Fh 31 123 df<00000FE00000301800 +00E01C0001C03C0001803C00038038000380000003800000070000000700000007000000 +07000000070000000E000000FFFFE0000E00E0000E00E0000E01C0001C01C0001C01C000 +1C01C0001C0380001C038000380380003803800038070000380700003807000070070800 +700E1000700E1000700E1000700E2000E0062000E003C000E0000000E0000000C0000001 +C0000001C0000071800000F1800000F3000000620000003C0000001E2D82A21B>12 +D45 D<0000030000000300000007000000070000000F0000 +000F0000001F0000002F0000002F0000004F0000004F8000008780000087800001078000 +020780000207800004078000040780000807800008078000100780003007800020078000 +7FFF80004007C0008007C0008003C0010003C0030003C0020003C0040003C0040003C00C +0003C03C0007C0FF003FFC1E237DA224>65 D<00FFFC00000F8000000F0000000F000000 +1E0000001E0000001E0000001E0000003C0000003C0000003C0000003C00000078000000 +780000007800000078000000F0000000F0000000F0000000F0000001E0000001E0000001 +E0002001E0002003C0004003C0004003C0008003C0008007800180078001000780030007 +800F000F803E00FFFFFE001B227DA11F>76 D<00FF800007FC000F80000F80000F800017 +80000F80001780001780002F000013C0002F000013C0004F000013C0008F000023C0009E +000023C0011E000023C0011E000023C0021E000043C0043C000043C0043C000043C0083C +000041E0083C000081E01078000081E02078000081E02078000081E04078000101E040F0 +000101E080F0000101E100F0000101E100F0000200F201E0000200F201E0000200F401E0 +000200F801E0000400F803C0000400F003C0000400F003C0000C00E003C0001E00C007C0 +00FFC0C07FFC002E227DA12C>I<0000FE0000078380000C00E0003800700070003800E0 +003801C0001C0380001C0700001C0F00001E1E00001E1C00001E3C00001E3C00001E7800 +001E7800001E7800001EF000003CF000003CF000003CF0000078F0000078E0000078E000 +00F0E00000F0E00001E0E00001C0F00003C0F00007807000070078000E0038001C001C00 +38000E00E0000703800001FC00001F2479A225>79 D<00FFFFC0000F0070000F003C000F +001C001E000E001E000E001E000F001E000F003C001E003C001E003C001E003C003C0078 +003800780070007801E00078078000FFFC0000F00E0000F0070000F0038001E003C001E0 +03C001E003C001E003C003C0078003C0078003C0078003C0078007800F0007800F010780 +0F01078007020F800702FFF8038C000000F020237DA124>82 D<3FFE03FF03C0007803C0 +006003C00020078000400780004007800040078000400F0000800F0000800F0000800F00 +00801E0001001E0001001E0001001E0001003C0002003C0002003C0002003C0002007800 +040078000400780004007800040070000800F0000800F000100070001000700020007000 +40003000400038018000180200000E0C000003F00000202377A124>85 +D89 +D<00F8C00185C00705C00E03800E03801C03803C0380380700780700780700780700F00E +00F00E00F00E00F00E10F01C20701C20703C20305C40308C400F078014157B9419>97 +D<03C03F8003800380038007000700070007000E000E000E000E001C001CF81D0C1E0E3C +0638073807380F700F700F700F700FE01EE01EE01EE03CE038E038607060E031C01F0010 +237BA216>I<007E0001C1000301800703800E07801C07803C0000380000780000780000 +780000F00000F00000F00000F00000F00100700100700200300C001830000FC00011157B +9416>I<00003C0003F80000380000380000380000700000700000700000700000E00000 +E00000E00000E00001C000F9C00185C00705C00E03800E03801C03803C03803807007807 +00780700780700F00E00F00E00F00E00F00E10F01C20701C20703C20305C40308C400F07 +8016237BA219>I<00F803840E021C023C0238027804F018FFE0F000F000E000E000E000 +E000E002E0026004701830600F800F157A9416>I<00003E0000470000CF00018F000186 +000380000380000380000700000700000700000700000700000E0000FFF0000E00000E00 +000E00001C00001C00001C00001C00001C00003800003800003800003800003800007000 +00700000700000700000700000E00000E00000E00000E00000C00001C00001C000718000 +F18000F300006200003C0000182D82A20F>I<001F180030B800E0B801C07001C0700380 +700780700700E00F00E00F00E00F00E01E01C01E01C01E01C01E01C01E03800E03800E07 +80060B8006170001E700000700000700000E00000E00000E00701C00F01800F0300060E0 +003F8000151F7E9416>I<00F0000FE00000E00000E00000E00001C00001C00001C00001 +C000038000038000038000038000070000071F0007218007C0C00F00E00F00E00E00E00E +00E01C01C01C01C01C01C01C01C0380380380380380380380704700708700E08700E1070 +0610E006206003C016237DA219>I<00C001E001C001C000000000000000000000000000 +0000001C002300430043008700870087000E000E001C001C001C00380038003840708070 +807080710032001C000B217BA00F>I<01E01FC001C001C001C003800380038003800700 +0700070007000E000E000E000E001C001C001C001C003800380038003800700070007000 +7100E200E200E200E200640038000B237CA20C>108 D<1C0F80F8002610C10C00476066 +060087807807008780780700870070070087007007000E00E00E000E00E00E000E00E00E +000E00E00E001C01C01C001C01C01C001C01C01C001C01C0382038038038403803807040 +3803807080380380308070070031003003001E0023157B9428>I<1C0F002631C04740C0 +8780E08780E08700E08700E00E01C00E01C00E01C00E01C01C03801C03801C03801C0704 +380708380E08380E103806107006203003C016157B941B>I<007E0001C3000381800701 +C00E01C01C01E03C01E03801E07801E07801E07801E0F003C0F003C0F00380F007807007 +00700E00700C0030180018700007C00013157B9419>I<01C1F002621804741C08780C08 +700E08700E08701E00E01E00E01E00E01E00E01E01C03C01C03C01C03C01C07803807003 +807003C0E003C1C0072380071E000700000700000E00000E00000E00000E00001C00001C +00001C0000FFC000171F7F9419>I<1C1F002620804741C08783C08703C0870180870000 +0E00000E00000E00000E00001C00001C00001C00001C0000380000380000380000380000 +70000030000012157B9415>114 D<00FC000183000200800401800C03800C03000C0000 +0F00000FF00007FC0003FE00003E00000F00000700700700F00600F00600E00400400800 +2030001FC00011157D9414>I<00C001C001C001C001C003800380038003800700FFF807 +0007000E000E000E000E001C001C001C001C003800380038003810702070207040708031 +001E000D1F7C9E10>I<1E00602300E04380E04381C08381C08701C08701C00703800E03 +800E03800E03801C07001C07001C07001C07081C0E10180E101C0E101C1E200C262007C3 +C015157B941A>I<1E03802307C04387C04383C08381C08700C08700C00700800E00800E +00800E00801C01001C01001C01001C02001C02001C04001C08001C08000C300003C00012 +157B9416>I<03C1E0046210083470103CF02038F0203860203800007000007000007000 +00700000E00000E00000E00000E02061C040F1C040F1C080E2C100446200383C0014157D +9416>120 D<1E00302300704380704380E08380E08700E08700E00701C00E01C00E01C0 +0E01C01C03801C03801C03801C03801C07001C07001C07001C0F000C3E0003CE00000E00 +000E00001C00601C00F03800F03000E0600080C0004380003E0000141F7B9418>I<01E0 +2003F06007F8C0041F800801000802000004000008000010000020000040000080000100 +000200000400800801001003003F060061FC0040F80080700013157D9414>I +E /Fi 3 52 df<03000700FF000700070007000700070007000700070007000700070007 +00070007000700070007007FF00C157E9412>49 D<0F8030E040708030C038E038403800 +3800700070006000C00180030006000C08080810183FF07FF0FFF00D157E9412>I<0FE0 +30306018701C701C001C00180038006007E000300018000C000E000EE00EE00EC00C4018 +30300FE00F157F9412>I E /Fj 2 121 df<0007FC0000003FFF800000FC07E00003F001 +F80007E000FC000FC0007E001F80003F001F80003F003F00001F803F00001F807F00001F +C07E00000FC07E00000FC0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0 +FE00000FE0FE00000FE0FE00000FE0FE00000FE07E00000FC07F00001FC07F00001FC03F +00001F803F80003F801F80003F000FC0007E0007E000FC0003F001F80000FC07E000003F +FF80000007FC000023227DA12A>79 D120 D E /Fk 14 118 df<78FCFCFCFC780606778518>46 D<00FC0003FE0007FF00 +0F87801E03C03C3FC0387FC078FFE071E3E071C1E0F3C1E0E380E0E380E0E380E0E380E0 +E380E0E380E0F3C1E071C1C071E3C078FF80387F003C3E001E00E00F83E007FFE003FF80 +00FE00131C7E9B18>64 D<1FE0003FF8007FFC00783E00300F0000070000070001FF000F +FF003FFF007F0700780700F00700E00700E00700F00F00783F007FFFF03FFBF00FE1F014 +147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E000EFF +800FFFC00FE3E00F80F00F00700F00780E00380E00380E00380E00380E00380F00380F00 +780F00700F80F00FC3E00FFFC00EFF80067E00151C809B18>I<01FE0007FF001FFF803F +07803C0300780000700000F00000E00000E00000E00000E00000F000007000007801C03C +01C03F07C01FFF8007FF0001FC0012147D9318>I<001F80003F80001F80000380000380 +00038000038000038003F3800FFB801FFF803E1F80780F80700780F00780E00380E00380 +E00380E00380E00380E00780F00780700780780F803E3F801FFFF00FFBF803E3F0151C7E +9B18>I<03F0000FFC001FFE003E1F00780780700380F003C0E001C0E001C0FFFFC0FFFF +C0FFFFC0F000007000007801C03C01C03F07C01FFF8007FF0001FC0012147D9318>I<00 +1FC0007FE000FFE001F1E001C0C001C00001C00001C0007FFFC0FFFFC0FFFFC001C00001 +C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001 +C0007FFF007FFF007FFF00131C7F9B18>I<7E0000FE00007E00000E00000E00000E0000 +0E00000E00000E3F000EFF800FFFC00FE1E00F80E00F00E00F00E00E00E00E00E00E00E0 +0E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B18> +104 D<03800007C00007C00007C0000380000000000000000000000000007FC000FFC000 +7FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000 +01C00001C00001C000FFFF00FFFF80FFFF00111D7C9C18>I<01F0000FFE001FFF003E0F +803803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07 +803E0F801FFF000FFE0001F00013147E9318>111 D<0FF7003FFF007FFF00F81F00E007 +00E00700F007007C00007FF0001FFC0007FE00001F00600780E00380F00380F00780FC0F +00FFFF00FFFE00E7F80011147D9318>115 D<0180000380000380000380000380007FFF +C0FFFFC0FFFFC00380000380000380000380000380000380000380000380000380000380 +400380E00380E00381E003C3C001FFC000FF80007E0013197F9818>I<7E07E0FE0FE07E +07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E +00E00E01E00F07E007FFFC03FFFE01FCFC1714809318>I E /Fl +1 14 df<0001FE0000000FFFC000003E01F00000F0003C0001C0000E0003800007000700 +0003800E000001C00C000000C01C000000E0380000007030000000303000000030700000 +003860000000186000000018E00000001CC00000000CC00000000CC00000000CC0000000 +0CC00000000CC00000000CC00000000CC00000000CC00000000CE00000001C6000000018 +600000001870000000383000000030300000003038000000701C000000E00C000000C00E +000001C00700000380038000070001C0000E0000F0003C00003E01F000000FFFC0000001 +FE0000262B7DA02D>13 D E /Fm 24 119 df<001F83E000F06E3001C078780380F87803 +00F03007007000070070000700700007007000070070000700700007007000FFFFFF8007 +007000070070000700700007007000070070000700700007007000070070000700700007 +00700007007000070070000700700007007000070070000700700007007000070070007F +E3FF001D20809F1B>11 D<70F8FCFC74040404080810102040060E7C840D>44 +D<70F8F8F87005057C840D>46 D<018003800F80F3800380038003800380038003800380 +0380038003800380038003800380038003800380038003800380038003800380038007C0 +FFFE0F1E7C9D17>49 D<03F0000C1C00100E00200700400780800780F007C0F803C0F803 +C0F803C02007C00007C0000780000780000F00000E00001C0000380000700000600000C0 +000180000300000600400C00401800401000803FFF807FFF80FFFF80121E7E9D17>I<03 +F0000C1C00100E00200F00780F80780780780780380F80000F80000F00000F00000E0000 +1C0000380003F000003C00000E00000F000007800007800007C02007C0F807C0F807C0F8 +07C0F00780400780400F00200E001C3C0003F000121F7E9D17>I<1803001FFE001FFC00 +1FF8001FE00010000010000010000010000010000010000011F000161C00180E00100700 +1007800003800003800003C00003C00003C07003C0F003C0F003C0E00380400380400700 +200600100E000C380003E000121F7E9D17>53 D<03F0000E18001C0C0038060038070070 +0700700380F00380F00380F003C0F003C0F003C0F003C0F003C07007C07007C03807C018 +0BC00E13C003E3C0000380000380000380000700300700780600780E00700C0020180010 +70000FC000121F7E9D17>57 D66 +D75 D77 DI<0E0000FE00 +000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3E000EC3 +800F01C00F00E00E00E00E00700E00700E00780E00780E00780E00780E00780E00780E00 +700E00700E00E00F00E00D01C00CC300083E0015207F9F19>98 D<03F80E0C1C1E381E38 +0C70007000F000F000F000F000F000F00070007000380138011C020E0C03F010147E9314 +>I<03F0000E1C001C0E00380700380700700700700380F00380F00380FFFF80F00000F0 +0000F000007000007000003800801800800C010007060001F80011147F9314>101 +D<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00 +000E3E000E43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 +C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16207F9F19>104 +D<1C001E003E001E001C000000000000000000000000000E007E000E000E000E000E000E +000E000E000E000E000E000E000E000E000E000E000E000E00FFC00A1F809E0C>I<0E1F +01F000FE618618000E81C81C000F00F00E000F00F00E000E00E00E000E00E00E000E00E0 +0E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E +000E00E00E000E00E00E000E00E00E000E00E00E00FFE7FE7FE023147F9326>109 +D<01F800070E001C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0F000 +F0F000F07000E07000E03801C03801C01C0380070E0001F80014147F9317>111 +D<0E78FE8C0F1E0F1E0F0C0E000E000E000E000E000E000E000E000E000E000E000E000E +000E00FFE00F147F9312>114 D<1F9030704030C010C010C010E00078007F803FE00FF0 +0070803880188018C018C018E030D0608F800D147E9312>I<020002000200060006000E +000E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E080E080E080E +080E080610031001E00D1C7F9B12>I<0E01C0FE1FC00E01C00E01C00E01C00E01C00E01 +C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E03C00603C0030D +C001F1FC16147F9319>II E /Fn 76 123 df<001F83E000706E3000C07C780180F8780380F0780700 +70000700700007007000070070000700700007007000070070000700700007007000FFFF +FFC007007000070070000700700007007000070070000700700007007000070070000700 +700007007000070070000700700007007000070070000700700007007000070070000700 +7000070078007FE3FF801D2380A21C>11 D<001FC0000070200000C01000018038000380 +780007007800070030000700000007000000070000000700000007000000070000000700 +0000FFFFF800070078000700380007003800070038000700380007003800070038000700 +380007003800070038000700380007003800070038000700380007003800070038000700 +380007003800070038007FE1FF80192380A21B>I<001FD8000070380000C07800018078 +000380780007003800070038000700380007003800070038000700380007003800070038 +0007003800FFFFF800070038000700380007003800070038000700380007003800070038 +000700380007003800070038000700380007003800070038000700380007003800070038 +000700380007003800070038007FF3FF80192380A21B>I<000FC07F00007031C08000E0 +0B004001801E00E003803E01E007003C01E007001C00C007001C000007001C000007001C +000007001C000007001C000007001C000007001C0000FFFFFFFFE007001C01E007001C00 +E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E0 +07001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007 +001C00E007001C00E007001C00E07FF1FFCFFE272380A229>I<7038F87CFC7EFC7E743A +04020402040204020804080410081008201040200F0F7EA218>34 +D<70F8FCFC7404040404080810102040060F7CA20E>39 D<002000400080010003000600 +04000C000C00180018003000300030007000600060006000E000E000E000E000E000E000 +E000E000E000E000E000E000E000E0006000600060007000300030003000180018000C00 +0C0004000600030001000080004000200B327CA413>I<800040002000100018000C0004 +00060006000300030001800180018001C000C000C000C000E000E000E000E000E000E000 +E000E000E000E000E000E000E000E000C000C000C001C001800180018003000300060006 +0004000C00180010002000400080000B327DA413>I<0001800000018000000180000001 +800000018000000180000001800000018000000180000001800000018000000180000001 +8000000180000001800000018000FFFFFFFEFFFFFFFE0001800000018000000180000001 +800000018000000180000001800000018000000180000001800000018000000180000001 +80000001800000018000000180001F227D9C26>43 D<70F8FCFC74040404040808101020 +40060F7C840E>II<70F8F8F87005057C840E>I<000180000180 +000380000300000300000700000600000600000E00000C00000C00001C00001800001800 +00180000380000300000300000700000600000600000E00000C00000C00001C000018000 +0180000380000300000300000700000600000600000E00000C00000C00000C00001C0000 +180000180000380000300000300000700000600000600000E00000C00000C0000011317D +A418>I<01F000071C000C06001803003803803803807001C07001C07001C07001C0F001 +E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001 +E0F001E07001C07001C07001C07803C03803803803801C07000C0600071C0001F0001322 +7EA018>I<008003800F80F3800380038003800380038003800380038003800380038003 +8003800380038003800380038003800380038003800380038003800380038007C0FFFE0F +217CA018>I<03F0000C1C001007002007804003C04003C08003E0F003E0F801E0F801E0 +F801E02003E00003E00003C00003C0000780000700000E00001C00001800003000006000 +00C0000180000100000200200400200800201800603000403FFFC07FFFC0FFFFC013217E +A018>I<03F8000C1E001007002007804007C07807C07803C07807C03807C00007800007 +80000700000F00000E0000380003F000001C00000F000007800007800003C00003C00003 +E02003E07003E0F803E0F803E0F003C04003C0400780200780100F000C1C0003F0001322 +7EA018>I<000200000600000E00000E00001E00001E00002E00004E00004E00008E0000 +8E00010E00020E00020E00040E00040E00080E00100E00100E00200E00200E00400E0080 +0E00FFFFF8000E00000E00000E00000E00000E00000E00000E00001F0001FFF015217FA0 +18>I<1000801E07001FFF001FFE001FF80013E000100000100000100000100000100000 +10000010F800130E001407001803801003800001C00001C00001E00001E00001E00001E0 +7001E0F001E0F001E0E001C08001C04003C04003802007001006000C1C0003F00013227E +A018>I<007E0001C1000300800601C00E03C01C03C01801803800003800007800007000 +00700000F0F800F30C00F40600F40300F80380F801C0F001C0F001E0F001E0F001E0F001 +E0F001E07001E07001E07001E03801C03801C01803801C03000C0600070C0001F0001322 +7EA018>I<4000006000007FFFE07FFFC07FFFC0400080C0010080010080020080020000 +040000080000080000100000300000200000600000600000600000E00000C00000C00001 +C00001C00001C00001C00003C00003C00003C00003C00003C00003C00003C00003C00001 +800013237DA118>I<01F800060E000803001001802001802000C06000C06000C06000C0 +7000C07801803E01003F02001FC4000FF80003F80003FC00067F00083F80100F803007C0 +6001C06000E0C000E0C00060C00060C00060C000606000406000C03000801803000E0E00 +03F00013227EA018>I<01F000060C000C0600180700380380700380700380F001C0F001 +C0F001C0F001E0F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E00619 +E003E1E00001C00001C00001C0000380000380300300780700780600700C002018001030 +000FC00013227EA018>I<70F8F8F870000000000000000000000070F8F8F87005157C94 +0E>I<70F8F8F870000000000000000000000070F8F8F87808080808101010204040051F +7C940E>I<0001800000018000000180000003C0000003C0000003C0000005E0000005E0 +00000DF0000008F0000008F0000010F800001078000010780000203C0000203C0000203C +0000401E0000401E0000401E0000800F0000800F0000FFFF000100078001000780030007 +C0020003C0020003C0040003E0040001E0040001E00C0000F00C0000F03E0001F8FF800F +FF20237EA225>65 DI<0007E0100038183000E0063001C00170038000F0070000F00E000070 +1E0000701C0000303C0000303C0000307C0000107800001078000010F8000000F8000000 +F8000000F8000000F8000000F8000000F8000000F800000078000000780000107C000010 +3C0000103C0000101C0000201E0000200E000040070000400380008001C0010000E00200 +00381C000007E0001C247DA223>IIII<0007F008003C0C1800E0021801C001B8038000F807000078 +0F0000381E0000381E0000183C0000183C0000187C0000087800000878000008F8000000 +F8000000F8000000F8000000F8000000F8000000F8000000F8001FFF780000F878000078 +7C0000783C0000783C0000781E0000781E0000780F00007807000078038000B801C000B8 +00E00318003C0C080007F00020247DA226>III<03FFF0001F00000F00000F00000F00 +000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00 +000F00000F00000F00000F00000F00000F00000F00000F00000F00700F00F80F00F80F00 +F80E00F01E00401C0020380018700007C00014237EA119>IIIII<000FE00000783C0000E00E0003C00780078003 +C00F0001E00E0000E01E0000F03C0000783C0000787C00007C7C00007C7800003C780000 +3CF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF80000 +3E7800003C7C00007C7C00007C3C0000783E0000F81E0000F00F0001E00F0001E0078003 +C003C0078000E00E0000783C00000FE0001F247DA226>II82 D<03F0200C0C6018026030 +01E07000E0600060E00060E00060E00020E00020E00020F00000F000007800007F00003F +F0001FFE000FFF0003FF80003FC00007E00001E00000F00000F000007080007080007080 +0070800070C00060C00060E000C0F000C0C80180C6070081FC0014247DA21B>I<7FFFFF +F87807807860078018400780084007800840078008C007800C8007800480078004800780 +048007800400078000000780000007800000078000000780000007800000078000000780 +000007800000078000000780000007800000078000000780000007800000078000000780 +0000078000000780000007800000078000000FC00003FFFF001E227EA123>II87 +D89 +D91 D<0804100820102010402040208040 +804080408040B85CFC7EFC7E7C3E381C0F0F7AA218>II<0FE0001838003C0C003C0E0018070000070000070000070000FF0007C7 +001E07003C0700780700700700F00708F00708F00708F00F087817083C23900FC1E01515 +7E9418>97 D<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E0000 +0E00000E00000E00000E00000E1F000E61C00E80600F00300E00380E003C0E001C0E001E +0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E00380F00700C80600C41C0 +083F0017237FA21B>I<01FE000703000C07801C0780380300780000700000F00000F000 +00F00000F00000F00000F00000F000007000007800403800401C00800C010007060001F8 +0012157E9416>I<0000E0000FE00001E00000E00000E00000E00000E00000E00000E000 +00E00000E00000E00000E00000E001F8E00704E00C02E01C01E03800E07800E07000E0F0 +00E0F000E0F000E0F000E0F000E0F000E0F000E07000E07800E03800E01801E00C02E007 +0CF001F0FE17237EA21B>I<01FC000707000C03801C01C03801C07801E07000E0F000E0 +FFFFE0F00000F00000F00000F00000F000007000007800203800201C00400E0080070300 +00FC0013157F9416>I<003C00C6018F038F030F07000700070007000700070007000700 +0700FFF80700070007000700070007000700070007000700070007000700070007000700 +0700070007807FF8102380A20F>I<00007001F198071E180E0E181C07001C07003C0780 +3C07803C07803C07801C07001C07000E0E000F1C0019F000100000100000180000180000 +1FFE000FFFC00FFFE03800F0600030400018C00018C00018C000186000306000303800E0 +0E038003FE0015217F9518>I<0E0000FE00001E00000E00000E00000E00000E00000E00 +000E00000E00000E00000E00000E00000E00000E1F800E60C00E80E00F00700F00700E00 +700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00 +700E00700E0070FFE7FF18237FA21B>I<1C001E003E001E001C00000000000000000000 +000000000000000E00FE001E000E000E000E000E000E000E000E000E000E000E000E000E +000E000E000E000E000E00FFC00A227FA10E>I<01C003E003E003E001C0000000000000 +0000000000000000000001E00FE001E000E000E000E000E000E000E000E000E000E000E0 +00E000E000E000E000E000E000E000E000E000E000E000E000E060E0F0C0F18061803E00 +0B2C82A10F>I<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00 +000E00000E00000E00000E00000E03FC0E01F00E01C00E01800E02000E04000E08000E10 +000E38000EF8000F1C000E1E000E0E000E07000E07800E03C00E01C00E01E00E00F00E00 +F8FFE3FE17237FA21A>I<0E00FE001E000E000E000E000E000E000E000E000E000E000E +000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E +000E000E000E00FFE00B237FA20E>I<0E1FC07F00FE60E183801E807201C00F003C00E0 +0F003C00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E +003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E00 +3800E00E003800E0FFE3FF8FFE27157F942A>I<0E1F80FE60C01E80E00F00700F00700E +00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E +00700E00700E0070FFE7FF18157F941B>I<01FC000707000C01801800C03800E0700070 +700070F00078F00078F00078F00078F00078F00078F000787000707800F03800E01C01C0 +0E038007070001FC0015157F9418>I<0E1F00FE61C00E80600F00700E00380E003C0E00 +1C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E003C0E003C0E00380F00700E80 +E00E41C00E3F000E00000E00000E00000E00000E00000E00000E00000E00000E0000FFE0 +00171F7F941B>I<01F8200704600E02601C01603801E07800E07800E0F000E0F000E0F0 +00E0F000E0F000E0F000E0F000E07000E07800E03801E01C01E00C02E0070CE001F0E000 +00E00000E00000E00000E00000E00000E00000E00000E00000E0000FFE171F7E941A>I< +0E3CFE461E8F0F0F0F060F000E000E000E000E000E000E000E000E000E000E000E000E00 +0E000F00FFF010157F9413>I<0F8830786018C018C008C008E008F0007F803FE00FF001 +F8003C801C800C800CC00CC008E018D0308FC00E157E9413>I<02000200020002000600 +060006000E001E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E04 +0E040E040E040E040E040708030801F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E +00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E +00F00E00F006017003827800FC7F18157F941B>IIII< +FFC1FE1E00780E00300E00200E002007004007004003808003808003808001C10001C100 +00E20000E20000E200007400007400003800003800003800001000001000002000002000 +002000004000F04000F08000F180004300003C0000171F7F941A>I<3FFFC03803803007 +80200700600E00401C00403C0040380000700000E00001E00001C0000380400700400F00 +400E00C01C0080380080780180700780FFFF8012157F9416>I E +/Fo 49 123 df45 +D<1F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B0B7A8A17>I<000000380000 +007C0000007C000000FC000000F8000000F8000001F8000001F0000001F0000003F00000 +03E0000007E0000007C0000007C000000FC000000F8000000F8000001F8000001F000000 +3F0000003E0000003E0000007E0000007C0000007C000000FC000000F8000001F8000001 +F0000001F0000003F0000003E0000003E0000007E0000007C000000FC000000F8000000F +8000001F8000001F0000001F0000003F0000003E0000003E0000007E0000007C000000FC +000000F8000000F8000001F8000001F0000001F0000003F0000003E0000007E0000007C0 +000007C000000FC000000F8000000F8000001F8000001F0000003F0000003E0000003E00 +00007E0000007C0000007C000000FC000000F8000000F8000000700000001E487BB529> +I<000FFC0000007FFF800001FFFFE00003FC0FF00007F003F8000FE001FC000FE001FC00 +1FC000FE003FC000FF003FC000FF003F80007F007F80007F807F80007F807F80007F807F +80007F80FF80007FC0FF80007FC0FF80007FC0FF80007FC0FF80007FC0FF80007FC0FF80 +007FC0FF80007FC0FF80007FC0FF80007FC0FF80007FC0FF80007FC0FF80007FC0FF8000 +7FC0FF80007FC0FF80007FC07F80007F807F80007F807F80007F807F80007F803F80007F +003FC000FF003FC000FF001FC000FE001FE001FE000FE001FC0007F807F80003FC0FF000 +01FFFFE000007FFF8000000FFC0000222E7DAD29>I<0001E0000003E000000FE000007F +E0001FFFE000FFFFE000FFBFE000E03FE000003FE000003FE000003FE000003FE000003F +E000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003F +E000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003F +E000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003F +E000003FE000003FE000003FE0007FFFFFF07FFFFFF07FFFFFF01C2E7AAD29>I<003FF0 +0001FFFE0007FFFF801FC07FE03F003FF07C001FF87F000FFCFF8007FEFFC007FEFFC003 +FFFFC003FFFFC003FFFFC003FF7F8003FF3F0003FF000003FF000003FF000007FE000007 +FE000007FC00000FF800001FF800001FF000003FE000007F8000007F000000FE000001FC +000003F0000007E000000FC007001F8007003E0007007C000F00F8000E01F0000E01E000 +1E03FFFFFE07FFFFFE0FFFFFFE1FFFFFFE3FFFFFFE7FFFFFFCFFFFFFFCFFFFFFFCFFFFFF +FC202E7CAD29>I<000FFC0000007FFF800001F01FE00003C00FF00007800FF8000FE007 +FC001FF007FE001FF807FE001FF807FE001FF807FE001FF807FE001FF807FE000FF007FE +0007E007FC0001800FFC0000000FF80000000FF80000001FF00000003FE00000007F8000 +001FFE0000001FFC0000001FFF800000001FF00000000FF800000007FE00000003FF0000 +0003FF00000001FF80000001FF800E0001FFC03F8001FFC07FC001FFC0FFE001FFC0FFE0 +01FFC0FFE001FFC0FFE001FFC0FFE001FF80FFE003FF807FC003FF007F0007FE003F000F +FC001FE01FF80007FFFFE00001FFFF8000001FFC0000222E7DAD29>I<00000078000000 +00F800000001F800000003F800000007F800000007F80000000FF80000001FF80000003F +F80000007FF800000077F8000000F7F8000001E7F8000003C7F800000787F800000707F8 +00000F07F800001E07F800003C07F800007807F800007007F80000F007F80001E007F800 +03C007F800078007F8000F0007F8000F0007F8001E0007F8003C0007F800780007F800F0 +0007F800FFFFFFFFF0FFFFFFFFF0FFFFFFFFF000000FF80000000FF80000000FF8000000 +0FF80000000FF80000000FF80000000FF80000000FF80000000FF800000FFFFFF0000FFF +FFF0000FFFFFF0242E7EAD29>I<0C0000380FC003F80FFFFFF80FFFFFF00FFFFFE00FFF +FFC00FFFFF800FFFFF000FFFFC000FFFF0000FFF00000F0000000F0000000F0000000F00 +00000F0000000F0000000F0000000F1FF8000FFFFF000FFFFFC00FF01FE00F800FF00F00 +07F80E0007FC000003FE000003FE000003FE000003FF000003FF1E0003FF7F8003FFFF80 +03FFFFC003FFFFC003FFFFC003FFFF8003FEFF8003FE7F0007FC7C0007FC3C000FF81E00 +1FF00FC07FE007FFFF8001FFFE00003FE000202E7CAD29>I<00007F80000007FFF00000 +1FC07800007F001C0000FE001E0001FC007E0003F800FF0007F001FF000FF001FF001FE0 +01FF001FE001FF003FE000FE003FE0007C007FC00000007FC00000007FC00000007FC000 +0000FFC3FF8000FFC7FFE000FFCFBFF000FFDC03FC00FFF803FE00FFF001FF00FFF000FF +00FFE000FF80FFE000FF80FFE000FFC0FFC000FFC0FFC000FFC0FFC000FFC0FFC000FFC0 +7FC000FFC07FC000FFC07FC000FFC07FC000FFC03FC000FFC03FC000FF801FE000FF801F +E000FF000FE001FF000FF001FE0007F803FC0001FC0FF80000FFFFE000003FFF80000007 +FC0000222E7DAD29>I<38000000003E000000003FFFFFFFC03FFFFFFFC03FFFFFFFC03F +FFFFFF807FFFFFFF007FFFFFFE007FFFFFFC007FFFFFF8007FFFFFF800780001F0007000 +03E000700007C000F0000F8000E0000F0000E0001F0000E0003E000000007C00000000F8 +00000000F800000001F000000003F000000003F000000007E000000007E00000000FE000 +00000FE00000000FE00000001FE00000001FC00000001FC00000003FC00000003FC00000 +003FC00000003FC00000003FC00000007FC00000007FC00000007FC00000007FC0000000 +7FC00000007FC00000007FC00000007FC00000007FC00000003F800000001F0000002230 +7BAF29>I<0007FC0000003FFF800000F80FE00001E003F00003C001F80007C000FC000F +8000FC000F80007E001F80007E001F80007E001FC0007E001FE0007E001FF0007E001FF8 +00FE001FFE00FC001FFF81FC000FFFE3F8000FFFFFF00007FFFFC00003FFFF800003FFFF +C00000FFFFF000007FFFF80001FFFFFC0007F7FFFE000FE1FFFF001FC0FFFF803F803FFF +807F000FFF807E0003FFC0FE0000FFC0FC00007FC0FC00003FC0FC00001FC0FC00000FC0 +FC00000FC0FC00000F80FE00000F807E00001F807F00001F003F80003E001FC0007C000F +F803F80003FFFFE00000FFFF8000001FFC0000222E7DAD29>I<000FFC0000007FFF0000 +01FC0FC00007F807F0000FF003F8001FE001FC003FE001FC003FC001FE007FC000FF007F +C000FF00FFC000FF00FFC000FF80FFC000FF80FFC000FF80FFC000FF80FFC000FFC0FFC0 +00FFC0FFC000FFC0FFC000FFC07FC001FFC07FC001FFC07FC001FFC03FE003FFC01FE003 +FFC01FF007FFC00FF80EFFC003FF7CFFC001FFF8FFC0007FF0FFC0000000FF80000000FF +80000000FF80000000FF800F8001FF001FC001FF003FE001FE003FE001FE003FE003FC00 +3FE003F8003FC007F8001F800FF0001E001FE0000F807F800007FFFE000001FFF8000000 +7FC00000222E7DAD29>I<1F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F00000000 +00000000000000000000000000000000001F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F +801F000B207A9F17>I<0000007C0000000000007C000000000000FE000000000000FE00 +0000000000FE000000000001FF000000000001FF000000000003FF800000000003FF8000 +00000007FFC00000000007FFC00000000007FFC0000000000FFFE0000000000F7FE00000 +00001F7FF0000000001E3FF0000000001E3FF0000000003E3FF8000000003C1FF8000000 +007C1FFC00000000780FFC00000000780FFC00000000F80FFE00000000F007FE00000001 +F007FF00000001E003FF00000001E003FF00000003E003FF80000003C001FF80000007C0 +01FFC00000078000FFC00000078000FFC000000FFFFFFFE000000FFFFFFFE000001FFFFF +FFF000001E00003FF000001E00003FF000003C00003FF800003C00001FF800007C00001F +FC00007800000FFC00007800000FFC0000F0000007FE0000F0000007FE0001F0000007FF +0003F8000003FF00FFFFC001FFFFFEFFFFC001FFFFFEFFFFC001FFFFFE37317DB03E>65 +D<000003FF80038000003FFFF007800001FFFFFC0F800007FF007F1F80001FF8000FFF80 +007FE00003FF8000FFC00001FF8001FF000000FF8003FE0000007F8007FE0000003F800F +FC0000001F801FF80000001F801FF80000000F803FF80000000F803FF00000000F803FF0 +00000007807FF000000007807FF000000007807FE00000000000FFE00000000000FFE000 +00000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000 +000000FFE00000000000FFE00000000000FFE00000000000FFE000000000007FE0000000 +00007FF000000000007FF000000003803FF000000003803FF000000003803FF800000003 +801FF800000007801FF800000007000FFC0000000F0007FE0000000E0003FF0000001E00 +01FF0000003C0000FFC000007800007FE00001F000001FF80003E0000007FF003F800000 +01FFFFFE000000003FFFF80000000003FF80000031317BB03C>67 +D69 +D73 D76 D<00000FFE0000000000FFFFE000000007FFFFFC0000001FFC07FF0000003FE000FF +800000FF80003FE00001FF00001FF00003FE00000FF80007FC000007FC0007FC000007FC +000FF8000003FE001FF8000003FF001FF0000001FF003FF0000001FF803FF0000001FF80 +3FF0000001FF807FE0000000FFC07FE0000000FFC07FE0000000FFC0FFE0000000FFE0FF +E0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0 +000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE07FE000 +0000FFC07FE0000000FFC07FF0000001FFC07FF0000001FFC03FF0000001FF803FF00000 +01FF801FF8000003FF001FF8000003FF000FFC000007FE000FFC000007FE0007FE00000F +FC0003FF00001FF80001FF80003FF00000FFC0007FE000003FE000FF8000001FFC07FF00 +000007FFFFFC00000000FFFFE0000000000FFE00000033317BB03E>79 +DI<001FF0038000FFFF078003FFFFCF8007F00FFF801FC0 +01FF801F80007F803F00003F807F00001F807E00000F807E00000F80FE00000780FE0000 +0780FF00000380FF00000380FF80000380FFC0000000FFE0000000FFFC0000007FFFE000 +007FFFFE00003FFFFFC0003FFFFFF0001FFFFFFC000FFFFFFE0007FFFFFF0001FFFFFF00 +007FFFFF80001FFFFFC00000FFFFC0000007FFC0000000FFE00000007FE00000003FE000 +00001FE0E000001FE0E000000FE0E000000FE0E000000FE0F000000FE0F000000FC0F800 +000FC0F800001F80FC00001F80FF00003F00FFC0007E00FFFC01FC00F9FFFFF800F03FFF +E000E007FF000023317BB02E>83 D<3FFFFFFFFFFF003FFFFFFFFFFF003FFFFFFFFFFF00 +3FE00FFC01FF007F000FFC003F807E000FFC001F807C000FFC000F8078000FFC00078078 +000FFC00078070000FFC00038070000FFC00038070000FFC00038070000FFC000380E000 +0FFC0001C0E0000FFC0001C0E0000FFC0001C0E0000FFC0001C000000FFC00000000000F +FC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC +00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00 +000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0000 +0000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC000000 +00000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000 +000FFC000000007FFFFFFF8000007FFFFFFF8000007FFFFFFF800032307DAF39>I +I89 D<007FF8000003FFFF00000FFFFFC0001FE01FF0001FF007F8001FF007FC001F +F003FC001FF001FE000FE001FE0007C001FE00010001FE00000001FE00000001FE000001 +FFFE00003FFFFE0001FFF1FE0007FE01FE001FF001FE003FE001FE007FC001FE007F8001 +FE00FF8001FE00FF0001FE00FF0001FE00FF0001FE00FF8003FE00FF8007FE007FC00FFE +003FF03EFF001FFFF87FF807FFF03FF800FF801FF825207E9F28>97 +D<01F8000000FFF8000000FFF8000000FFF80000000FF800000007F800000007F8000000 +07F800000007F800000007F800000007F800000007F800000007F800000007F800000007 +F800000007F800000007F800000007F800000007F80FF00007F87FFE0007F9FFFF8007FF +E03FE007FF000FF007FE0007F807FC0007F807F80003FC07F80003FE07F80003FE07F800 +01FE07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001 +FF07F80001FF07F80001FF07F80001FF07F80001FE07F80003FE07F80003FC07FC0003FC +07FC0007F807FE000FF007FF801FE007E7E07FC007C1FFFF8007807FFE0007001FE00028 +327EB12E>I<0007FF00007FFFE001FFFFF803FC03FC07F807FC0FF007FC1FE007FC3FC0 +07FC3FC003F87FC001F07F800040FF800000FF800000FF800000FF800000FF800000FF80 +0000FF800000FF800000FF800000FF8000007FC000007FC000003FC0000E3FE0000E1FE0 +001E0FF0003C07F8007803FF01F001FFFFE0007FFF800007FC001F207D9F25>I<000000 +07E0000003FFE0000003FFE0000003FFE00000003FE00000001FE00000001FE00000001F +E00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE0 +0000001FE00000001FE00000001FE0000FF81FE0007FFF1FE001FFFFDFE003FE03FFE00F +F800FFE01FF0007FE01FE0003FE03FC0001FE03FC0001FE07FC0001FE07F80001FE0FF80 +001FE0FF80001FE0FF80001FE0FF80001FE0FF80001FE0FF80001FE0FF80001FE0FF8000 +1FE0FF80001FE0FF80001FE07F80001FE07FC0001FE07FC0001FE03FC0003FE01FE0007F +E01FE000FFE00FF001FFE007FC07DFF001FFFF9FFF007FFE1FFF000FF01FFF28327DB12E +>I<000FFE0000007FFFC00001FFFFE00003FE0FF00007F801F8000FF000FC001FE000FE +003FC0007F003FC0007F007FC0003F007F80003F807F80003F80FF80003F80FF80003F80 +FFFFFFFF80FFFFFFFF80FFFFFFFF80FF80000000FF80000000FF800000007F800000007F +800000007FC00000003FC00003803FE00003801FE00007800FF0000F0007F8003E0003FF +01FC0000FFFFF800003FFFE0000007FF000021207E9F26>I<0000FF000007FFC0001FFF +F0007FC7F000FF0FF801FF0FF801FE0FF803FE0FF803FC0FF803FC07F003FC01C003FC00 +0003FC000003FC000003FC000003FC000003FC000003FC0000FFFFF800FFFFF800FFFFF8 +0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00 +0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00 +0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00007FFFF0 +007FFFF0007FFFF0001D327EB119>I<001FF007E000FFFE3FF003FFFFFFF807F83FF1F8 +0FE00FE1F81FE00FF1F81FC007F0603FC007F8003FC007F8003FC007F8003FC007F8003F +C007F8003FC007F8003FC007F8001FC007F0001FE00FF0000FE00FE00007F83FC00007FF +FF80000EFFFE00000E1FF000000E000000001E000000001E000000001F000000001F8000 +00001FFFFFC0000FFFFFF8000FFFFFFE0007FFFFFF8007FFFFFFC007FFFFFFE01FFFFFFF +E03F00007FE07E00000FF0FE000007F0FC000003F0FC000003F0FC000003F0FE000007F0 +7E000007E07F00000FE03FC0003FC01FF801FF8007FFFFFE0000FFFFF000001FFF800025 +2F7E9F29>I<01F800000000FFF800000000FFF800000000FFF8000000000FF800000000 +07F80000000007F80000000007F80000000007F80000000007F80000000007F800000000 +07F80000000007F80000000007F80000000007F80000000007F80000000007F800000000 +07F80000000007F807F8000007F83FFF000007F87FFF800007F9F03FC00007FBC01FE000 +07FF801FE00007FF000FF00007FE000FF00007FC000FF00007FC000FF00007F8000FF000 +07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000 +07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000 +07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000 +FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029327DB12E>I<03C0000FF0001FF8001FF8 +001FF8001FFC001FF8001FF8001FF8000FF00003C0000000000000000000000000000000 +0000000000000000000001F800FFF800FFF800FFF8000FF80007F80007F80007F80007F8 +0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8 +0007F80007F80007F80007F80007F80007F80007F80007F800FFFF80FFFF80FFFF801133 +7DB217>I<01F8000000FFF8000000FFF8000000FFF80000000FF800000007F800000007 +F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8 +00000007F800000007F800000007F800000007F800000007F8007FFC07F8007FFC07F800 +7FFC07F8001FC007F8001F0007F8003E0007F800F80007F801F00007F803E00007F80780 +0007F81F000007F83E000007F87E000007F9FE000007FBFF000007FFFF800007FF7FC000 +07FE3FE00007FC1FF00007F01FF00007F00FF80007F007FC0007F003FE0007F001FF0007 +F001FF0007F000FF8007F0007FC007F0003FE007F0003FF0FFFF80FFFFFFFF80FFFFFFFF +80FFFF28327EB12C>107 D<01F800FFF800FFF800FFF8000FF80007F80007F80007F800 +07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800 +07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800 +07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800 +07F80007F80007F800FFFFC0FFFFC0FFFFC012327DB117>I<03F007F8000FF000FFF03F +FF007FFE00FFF07FFF80FFFF00FFF1F03FC3E07F800FF3C01FE7803FC007F7801FEF003F +C007F7000FFE001FE007FE000FFC001FE007FC000FF8001FE007FC000FF8001FE007F800 +0FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001F +E007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F800 +0FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001F +E007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F800 +0FF0001FE0FFFFC1FFFF83FFFFFFFFC1FFFF83FFFFFFFFC1FFFF83FFFF40207D9F45>I< +03F007F80000FFF03FFF0000FFF07FFF8000FFF1F03FC0000FF3C01FE00007F7801FE000 +07F7000FF00007FE000FF00007FC000FF00007FC000FF00007F8000FF00007F8000FF000 +07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000 +07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000 +07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000FFFFC1FFFF80 +FFFFC1FFFF80FFFFC1FFFF8029207D9F2E>I<0007FE0000003FFFC00000FFFFF00003FC +03FC0007F000FE000FE0007F001FC0003F803FC0003FC03FC0003FC07F80001FE07F8000 +1FE07F80001FE0FF80001FF0FF80001FF0FF80001FF0FF80001FF0FF80001FF0FF80001F +F0FF80001FF0FF80001FF07F80001FE07F80001FE07F80001FE03FC0003FC03FC0003FC0 +1FE0007F800FE0007F0007F801FE0003FE07FC0001FFFFF800003FFFC0000007FE000024 +207E9F29>I<01F80FF000FFF87FFE00FFF9FFFF80FFFFE07FE00FFF001FF007FE000FF8 +07FC0007F807F80007FC07F80003FE07F80003FE07F80003FE07F80001FF07F80001FF07 +F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F8 +0003FF07F80003FE07F80003FE07F80003FC07FC0007FC07FC000FF807FE000FF007FF80 +1FE007FFE07FC007F9FFFF8007F87FFE0007F81FE00007F800000007F800000007F80000 +0007F800000007F800000007F800000007F800000007F800000007F800000007F8000000 +07F8000000FFFFC00000FFFFC00000FFFFC00000282E7E9F2E>I<03F03F00FFF0FFC0FF +F1FFF0FFF3C7F00FF78FF807F70FF807FE0FF807FE0FF807FC07F007FC03E007FC008007 +FC000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007 +F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80000FF +FFE000FFFFE000FFFFE0001D207E9F22>114 D<00FF870007FFEF001FFFFF003F007F00 +7C001F007C000F00F8000F00F8000700FC000700FC000700FF000000FFF800007FFFC000 +7FFFF0003FFFFC001FFFFE0007FFFF0001FFFF80001FFF800000FFC000001FC0E0000FC0 +E0000FC0F00007C0F00007C0F80007C0FC000F80FE001F80FF803F00FFFFFE00F3FFF800 +E07FC0001A207D9F21>I<00380000380000380000380000380000780000780000780000 +F80000F80001F80003F80007F8001FF800FFFFFEFFFFFEFFFFFE07F80007F80007F80007 +F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007 +F80007F80707F80707F80707F80707F80707F80707F80707FC0F03FC0E03FE1E01FFFC00 +7FF8000FE0182E7EAD20>I<01F80003F000FFF801FFF000FFF801FFF000FFF801FFF000 +0FF8001FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000 +07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000 +07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000 +07F8000FF00007F8001FF00007F8001FF00007F8003FF00007F8007FF00003FC00FFF000 +03FE03EFF80001FFFFCFFF80007FFF0FFF80000FFC0FFF8029207D9F2E>IIIII<3FFFFFFC3FFFFFFC3FFFFFFC3FC00FF83E001FF03C003FF038003FE078007F +C07800FF807001FF807003FF007003FE007007FC00000FFC00001FF800001FF000003FE0 +00007FE00E00FFC00E00FF800E01FF000E03FF000E07FE001E07FC001E0FF8001C1FF000 +3C3FF0007C3FE000FC7FC007FCFFFFFFFCFFFFFFFCFFFFFFFC1F207E9F25>I +E end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 300dpi +TeXDict begin + +%%EndSetup +%%Page: 1 1 +1 0 bop 909 315 a Fo(Ox:)519 375 y Fn(An)16 b(A)o(ttribute-Grammar)d +(Compiling)i(System)681 435 y(based)i(on)f(Y)l(acc,)g(Lex,)f(and)i(C:) +588 549 y Fo(T)-7 b(utorial)28 b(In)n(tro)r(duction)795 +660 y Fm(No)o(v)o(em)o(b)q(er)15 b(5,)g(1993)683 715 +y(c)670 716 y Fl(\015)p Fm(1992,)f(1993)g(Kurt)h(M.)g(Bisc)o(ho\013)699 +773 y Fk(bischoff@cs.iastate.edu)164 939 y Fo(1)83 b(In)n(tro)r +(duction)164 1049 y Fj(Ox)19 b Fn(is)f(an)i(attribute-grammar)d +(compiling)g(system)g(based)j(on)f(Y)l(acc,)g(Lex,)g(and)g(C.)164 +1109 y(Ox)248 1091 y Fi(1)288 1109 y Fn(generalizes)g(the)h(function)g +(of)h(Y)l(acc)f(in)g(the)g(w)o(a)o(y)g(that)g(attribute)g(grammars)164 +1169 y(generalize)14 b(con)o(text-free)g(grammars.)20 +b(Ordinary)15 b(Y)l(acc)g(and)h(Lex)f(sp)q(eci\014cations)h(can)164 +1229 y(b)q(e)c(augmen)o(ted)f(with)h(de\014nitions)g(of)h(syn)o +(thesized)e(and)h(inherited)f(attributes)h(written)164 +1289 y(in)17 b(C/C++)i(syn)o(tax.)25 b(F)l(rom)16 b(these)h(sp)q +(eci\014cations,)h(Ox)f(generates)h(a)g(program)f(that)164 +1350 y(builds)e(and)h(decorates)g(attributed)f(parse)h(trees.)k(Ox)c +(accepts)f(a)h(most)f(general)g(class)164 1410 y(of)20 +b(attribute)g(grammars.)32 b(The)20 b(user)g(can)g(sp)q(ecify)g +(parse-tree)g(tra)o(v)o(ersals)f(for)i(easy)164 1470 +y(ordering)j(of)f(side)g(e\013ects)g(suc)o(h)g(as)i(co)q(de)e +(generation.)43 b(Ox)23 b(handles)h(the)f(tedious)164 +1530 y(and)15 b(error-prone)g(details)g(of)g(writing)f(co)q(de)h(for)g +(parse-tree)g(managemen)o(t,)d(so)j(its)g(use)164 1590 +y(eases)f(problems)f(of)h(securit)o(y)e(and)j(main)o(tainabilit)o(y)10 +b(asso)q(ciated)15 b(with)f(that)g(asp)q(ect)h(of)164 +1651 y(translator)i(dev)o(elopmen)o(t.)237 1711 y(Ox)11 +b(is)g(a)g(Y)l(acc/Lex/C/C++)h(prepro)q(cessor,)g(and)g(is)f(designed)g +(to)g(bring)g(attribute)164 1771 y(grammars)17 b(to)j(the)e(mainstream) +f(of)i(Unix-based)g(language)g(dev)o(elopmen)o(t.)26 +b(Ox)19 b(in-)164 1831 y(herits)h(all)g(of)g(the)g(familiar)f(syn)o +(tax)h(and)h(seman)o(tics)d(of)j(Y)l(acc,)f(Lex,)h(and)g(C/C++.)164 +1891 y(This)e(mak)o(es)f(Ox)h(easily)f(accessible)g(to)i(language)g +(designers,)g(dev)o(elop)q(ers,)e(and)i(ex-)164 1952 +y(p)q(erimen)o(ters)14 b(who)k(use)e(those)h(to)q(ols.)24 +b(It)16 b(also)h(pro)o(vides)f(a)i(ready)e(\\escap)q(e)h(hatc)o(h")g +(in)164 2012 y(case)f(it)g(is)g(desired)g(to)g(return)g(to)h(an)g +(ordinary)f(Y)l(acc)g(implem)o(e)o(n)o(tation.)237 2072 +y(This)g(pap)q(er)h(giv)o(es)e(an)h(o)o(v)o(erview)e(of)i(Ox)g(b)o(y)f +(emphasizing)g(examples.)k(It)c(quic)o(kly)164 2132 y(familiarizes)22 +b(y)o(ou)k(with)f(the)g(Ox)g(features)g(that)h(are)f(most)g(imme)o +(diately)d(useful.)164 2192 y(A)g(more)g(complete)f(reference,)h(the)h +Fh(Ox)h(User)g(R)n(efer)n(enc)n(e)f(Manual)5 b Fn(,)25 +b(accompanies)164 2252 y(the)f(Ox)f(electronic)g(distribution,)i(whic)o +(h)e(can)h(b)q(e)h(obtained)f(free)f(b)o(y)h(writing)g(to)164 +2313 y Fg(ox-request)o(@cs)o(.i)o(ast)o(ate)o(.ed)o(u)p +Fn(.)p 164 2358 648 2 v 220 2388 a Ff(1)239 2403 y Fe(The)13 +b(name)f(\\Ox")g(comes)h(from)e(an)h(attempt)g(to)h(pronounce)h(an)f +(acron)o(ym)e(for)i(\\An)f(A)o(ttribute-)164 2453 y(Gramma)o(r)g +(Compiling)e(System")961 2599 y Fn(1)p eop +%%Page: 2 2 +2 1 bop 237 307 a Fn(F)l(amiliarit)o(y)12 b(with)i(the)g(use)h(of)g(Y)l +(acc,)f(Lex,)g(C,)h(and)g(Mak)o(e)f(is)g(su\016cien)o(t)g(to)h(under-) +164 367 y(stand)i(this)f(tutorial)g(and)h(to)g(b)q(egin)f(using)h(Ox.)k +(Some)15 b(prior)h(exp)q(osure)h(to)f(attribute)164 428 +y(grammars)g(is)g(helpful.)23 b(Readers)17 b(with)g(an)g(urge)g(for)h +(details)e(and)i(hands-on)h(exp)q(eri-)164 488 y(ence)c(should)h(use)f +(the)g(index)g(of)h(the)f(reference)f(man)o(ual)g(and)i(should)g(ha)o +(v)o(e)f(access)h(to)164 548 y(a)d(system)e(on)i(whic)o(h)f(Ox)h(is)f +(installed.)20 b(The)12 b(examples)f(herein)h(\(in)g(mac)o +(hine-readable)164 608 y(form\))j(are)h(included)f(with)i(the)f(Ox)g +(distribution.)164 775 y Fo(2)83 b(Con)n(v)n(erting)37 +b(a)h(Y)-7 b(acc/Lex)38 b(program)h(for)g(use)288 866 +y(with)27 b(Ox)164 975 y Fn(Probably)21 b(the)g(easiest)g(w)o(a)o(y)f +(to)h(get)g(started)g(with)g(Ox)g(is)f(to)i(con)o(v)o(ert)d(an)j +(existing)164 1036 y(Y)l(acc/Lex)382 1017 y Fi(2)417 +1036 y Fn(parser)16 b(or)g(translator.)22 b(This)16 b(can)g(usually)f +(b)q(e)h(done)g(without)g(c)o(hanging)164 1096 y(the)f(Y)l(acc)f(and)i +(Lex)e(co)q(de.)21 b(Ox)15 b(can)g(also)h(b)q(e)f(used)g(with)g(Y)l +(acc-only)f(translators,)i(i.e.,)164 1156 y(those)h(with)f(lexical)e +(analyzers)i(hand-co)q(ded)i(in)d(C)i(\(see)f(section)g(9.3\).)164 +1300 y Fd(2.1)70 b(A)22 b(parser)i(of)f(arithmetic)d(expressions)164 +1393 y Fn(As)13 b(a)g(running)g(example,)e(w)o(e)h(start)h(with)g(a)g +(Y)l(acc/Lex)f(parser)i(for)f(in)o(teger)e(arithmetic)164 +1453 y(expressions.)237 1513 y(The)k(Lex)f(\014le)g(is)g(named)f +Fg(scan.l)p Fn(,)f(and)j(sp)q(eci\014es)g(the)f(tok)o(ens)g(of)h(the)f +(language)h(as)164 1573 y(digit)h(strings,)g(paren)o(theses,)g(and)g +(four)h(binary)f(op)q(erators:)164 1677 y Fc(\045{)164 +1727 y(#include)k("y.tab.h")164 1777 y(\045})164 1876 +y(\045\045)164 1926 y([)i(\\n\\t\\f]+)172 b(;)164 1976 +y([0-9]+)260 b(return\(ICONST\);)164 2026 y([\(\)*/+\\-])194 +b(return\(yytext[0]\);)164 2076 y(\045\045)237 2190 y +Fn(The)24 b(Y)l(acc)g(\014le)f(\(named)g Fg(gram.y)p +Fn(\))f(sp)q(eci\014es)i(the)g(syn)o(tax.)45 b(The)24 +b(grammar)f(is)164 2250 y(disam)o(biguated)15 b(b)o(y)h(use)g(of)h(the) +f Fg(\045left)e Fn(reserv)o(ed)h(w)o(ord:)p 164 2329 +648 2 v 220 2359 a Ff(2)239 2374 y Fe(Ox)d(is)g(designed)g(to)g(w)o +(ork)g(also)f(with)g(Y)m(acc)i(and)e(Lex)i(w)o(ork)n(alik)o(es)d(and)i +(C++.)18 b(Throughout)12 b(this)164 2424 y(pap)q(er,)i(\\Y)m(acc",)f +(\\Lex",)g(and)h(\\C")f(can)i(generally)e(b)q(e)i(tak)o(en)f(to)f(mean) +g(\\Y)m(acc)h(or)g(Bison",)f(\\Lex)h(or)164 2474 y(Flex",)f(and)h(\\C)f +(or)h(C++",)g(resp)q(ectiv)o(ely)m(.)961 2599 y Fn(2)p +eop +%%Page: 3 3 +3 2 bop 164 307 a Fc(\045token)21 b(ICONST)164 357 y(\045left)g('+')g +('-')164 407 y(\045left)g('*')g('/')164 506 y(\045\045)164 +556 y(expr)86 b(:)153 b(expr)86 b('*')108 b(expr)338 +606 y(|)153 b(expr)86 b('/')108 b(expr)338 656 y(|)153 +b(expr)86 b('+')108 b(expr)338 706 y(|)153 b(expr)86 +b('-')108 b(expr)338 756 y(|)153 b('\(')108 b(expr)86 +b('\)')338 805 y(|)153 b(ICONST)338 855 y(;)164 905 y(\045\045)164 +955 y(main\(\))208 1005 y({return\(yyparse)o(\(\)\);)208 +1054 y(})237 1169 y Fn(The)18 b(follo)o(wing)f(Mak)o(e)g(\014le)g(is)h +(used)g(to)g(build)f(and)h(main)o(tain)e(the)i(parser,)g(whic)o(h)164 +1229 y(is)e(named)f Fg(gc)p Fn(:)164 1333 y Fc(gc:)21 +b(y.tab.o)f(lex.yy.o)338 1382 y(cc)i(-o)f(gc)g(y.tab.o)g(lex.yy.o)f +(-ly)h(-ll)164 1482 y(y.tab.c)f(y.tab.h:)g(gram.y)338 +1532 y(yacc)h(-d)h(gram.y)164 1631 y(lex.yy.c:)e(scan.l)338 +1681 y(lex)h(scan.l)164 1781 y(y.tab.o:)f(y.tab.c)338 +1831 y(cc)i(-c)f(y.tab.c)164 1930 y(lex.yy.o:)f(lex.yy.c)g(y.tab.h)338 +1980 y(cc)i(-c)f(lex.yy.c)164 2124 y Fd(2.2)70 b(A)22 +b(parser)i(that)f(builds)f(a)h(parse)h(tree)164 2217 +y Fn(The)15 b(ab)q(o)o(v)o(e)g(parser)h(do)q(es)g(no)f(seman)o(tic)e +(analysis.)21 b(T)l(o)16 b(get)f(ready)g(for)h(Ox)f(implem)o(en-)164 +2277 y(tation)j(of)g(seman)o(tics,)e(w)o(e)h(need)g(merely)e(replace)i +(the)h(follo)o(wing)f(lines)g(in)g(the)h(Mak)o(e)164 +2337 y(\014le:)961 2599 y(3)p eop +%%Page: 4 4 +4 3 bop 273 307 a Fc(y.tab.c)20 b(y.tab.h:)g(gram.y)447 +357 y(yacc)h(-d)h(gram.y)273 457 y(lex.yy.c:)e(scan.l)447 +506 y(lex)h(scan.l)164 596 y Fn(with)16 b(these:)273 +676 y Fc(oxout.y)k(oxout.l:)g(gram.y)h(scan.l)447 726 +y(ox)h(gram.y)e(scan.l)273 826 y(y.tab.c)g(y.tab.h:)g(oxout.y)447 +875 y(yacc)h(-d)h(oxout.y)273 975 y(lex.yy.c:)e(oxout.l)447 +1025 y(lex)h(oxout.l)164 1116 y Fn(The)16 b(command:)292 +1206 y Fg(ox)25 b(gram.y)e(scan.l)164 1297 y Fn(transforms)17 +b Fg(gram.y)e Fn(\(called)h(the)i Fh(Y-\014le)t Fn(\))g(in)o(to)f +Fg(oxout.y)p Fn(,)e(and)j(transforms)f Fg(scan.l)164 +1357 y Fn(\(called)24 b(the)g Fh(L-\014le)t Fn(\))i(in)o(to)e +Fg(oxout.l)p Fn(.)44 b(These)24 b(Ox)h(outputs)g(replace)f +Fg(gram.y)e Fn(and)164 1418 y Fg(scan.l)14 b Fn(in)i(the)g(remaining)f +(steps)h(of)h(parser)f(construction.)237 1478 y(The)f(user-observ)o(ed) +g(b)q(eha)o(viors)h(of)f(the)g(original)g(program)g(and)h(the)f(one)g +(prepro-)164 1538 y(cessed)f(b)o(y)g(Ox)g(are)g(the)g(same.)20 +b(The)14 b(di\013erence)f(is)h(that)h(the)f(v)o(ersion)f(made)h(using)g +(Ox)164 1598 y(and)j(the)f(new)g(Mak)o(e)g(\014le)g(builds)g(a)g(dumm)o +(y)e(\(attribute-less\))i(parse)g(tree,)g(while)f(the)164 +1658 y(original)k(builds)h(no)g(parse)g(tree.)30 b(The)20 +b(original)f(co)q(de)h(in)f(the)g(example)f(lac)o(ks)h(Y)l(acc)164 +1718 y(actions,)25 b(but)e(had)h(it)e(con)o(tained)h(suc)o(h)g +(actions,)h(their)f(e\013ects)g(w)o(ould)g(ha)o(v)o(e)f(b)q(een)164 +1779 y(undisturb)q(ed)17 b(b)o(y)e(the)h(Ox)g(prepro)q(cessing.)237 +1839 y(Ha)o(ving)i(mo)q(di\014ed)g(our)h(Mak)o(e)f(\014le,)g(w)o(e)g +(are)h(ready)f(to)h(augmen)o(t)f(the)g(Y-\014le)g(and)164 +1899 y(L-\014le)e(with)g(Ox)g(constructs.)164 2064 y +Fo(3)83 b(Adding)27 b(Ox-generated)g(seman)n(tics)164 +2173 y Fn(This)18 b(section)f(in)o(tro)q(duces)h(the)f(form)g(and)h +(meaning)f(of)h(Ox-sp)q(eci\014c)f(constructs,)h(b)o(y)164 +2233 y(w)o(a)o(y)e(of)g(con)o(v)o(erting)g(our)g(parse-tree-building)g +(parser)h(in)o(to)f(a)g(calculator.)237 2293 y(Eac)o(h)d(parse)f(tree)g +(has)h(lea)o(v)o(es)e(lab)q(eled)h(b)o(y)g(the)g Fg(ICONST)f +Fn(tok)o(en.)19 b(Let)13 b(us)f(endo)o(w)h(this)164 2354 +y(tok)o(en)20 b(with)g(an)g(attribute)g Fg(string)p Fn(:)27 +b(a)21 b(c)o(haracter)e(p)q(oin)o(ter)h(that)h(for)f(eac)o(h)g +Fg(ICONST)164 2414 y Fn(no)q(de)e(is)e(to)i(p)q(oin)o(t)f(to)g(a)g(cop) +o(y)g(of)g(the)g(lexeme)d(corresp)q(onding)k(to)f(the)g(no)q(de.)24 +b(This)17 b(is)164 2474 y(done)f(b)o(y)g(placing)g(the)g +Fh(attribute)j(de)n(clar)n(ation)t Fn(:)961 2599 y(4)p +eop +%%Page: 5 5 +5 4 bop 292 307 a Fg(@attribute)o(s)23 b({char)h(*string;})e(ICONST)164 +409 y Fn(b)q(efore)15 b(the)g(\014rst)h Fg(\045\045)f +Fn(mark)f(in)g(the)i(Y-\014le.)k(The)15 b(ab)q(o)o(v)o(e-men)o(tioned)e +(storage)k(lo)q(cation)164 469 y(created)i(for)g(eac)o(h)g +Fg(ICONST)e Fn(no)q(de)j(is)f(called)f(an)i Fh(attribute)h(instanc)n(e) +k Fn(\(concisely:)g(an)164 529 y Fh(instanc)n(e)t Fn(\).)d(It)16 +b(is)g(an)h(instance)f(of)g(the)g Fg(string)e Fn(attribute)i(of)h +Fg(ICONST)p Fn(.)237 589 y(W)l(e)23 b(supply)g(a)h(C)g(macro)e(\(named) +g Fg(lexeme)p Fn(\))f(that)j(constructs)g(a)g(cop)o(y)f(of)g(the)164 +650 y(lexeme.)29 b(F)l(or)20 b(brevit)o(y)e(of)i(the)f(example,)f +Fg(lexeme)g Fn(unsafely)h(neglects)h(to)g(c)o(hec)o(k)e(for)164 +710 y(return)e(of)h Fg(NULL)d Fn(b)o(y)i Fg(malloc)p +Fn(.)j(Here)c(is)h(the)g(mo)q(di\014ed)f(L-\014le:)164 +814 y Fc(\045{)164 863 y(#include)20 b("y.tab.h")164 +913 y(#include)g()164 1013 y(#define)g(lexeme)h +(strcpy\(\(char)e(*\)malloc\(yyleng+1\))o(,yyte)o(xt\))164 +1063 y(\045})164 1162 y(\045\045)164 1212 y([)j(\\n\\t\\f]+)172 +b(;)164 1262 y([0-9]+)260 b(return\(ICONST\);)19 b(@{)i +(@ICONST.string@)e(=)j(lexeme;)e(@})164 1312 y("\(")326 +b(return\('\('\);)164 1362 y("\)")g(return\('\)'\);)164 +1411 y("*")g(return\('*'\);)164 1461 y("/")g(return\('/'\);)164 +1511 y("+")g(return\('+'\);)164 1561 y("-")g(return\('-'\);)164 +1611 y(\045\045)237 1725 y Fn(T)l(o)16 b(the)f(righ)o(t)g(of)g(the)g +(lexical)f(rule)g(for)i Fg(ICONST)p Fn(,)c(there)j(is)g(b)q(et)o(w)o +(een)f Fg(@)p Fb(f)h Fn(and)h Fg(@)p Fb(g)e Fn(an)164 +1785 y Fh(attribute)i(de\014nition)j Fn(that)14 b(causes)g(the)g +Fg(string)d Fn(attribute)j(instance)f(in)h(eac)o(h)f +Fg(ICONST)164 1845 y Fn(no)q(de)k(to)f(get)h(a)f(p)q(oin)o(ter)g(to)h +(a)g(cop)o(y)e(of)i(the)f(constan)o(t's)h(lexeme)o(.)237 +1905 y(Notice)e(that)i(w)o(e)f(ha)o(v)o(e)f(replaced)h(the)g(single)f +(lexical)g(rule:)292 2007 y Fg([\(\)*/+\\-])228 b(return\(yy)o(te)o +(xt[)o(0]\))o(;)164 2109 y Fn(with)14 b(six)f(rules)g(that)h(are)g +(together)g(equiv)m(alen)o(t)e(to)i(that)h(single)e(rule.)19 +b(Ox)14 b(w)o(ould)g(ha)o(v)o(e)164 2169 y(b)q(een)21 +b(unable)h(to)f(determine)e(from)i(the)g(ob)s(ject)g(of)g(the)g(single) +g Fg(return)f Fn(statemen)o(t)164 2229 y(\(namely)10 +b Fg(yytext[0])o Fn(\))f(the)i(sp)q(eci\014c)h(tok)o(en)f(that)h(w)o +(ould)f(b)q(e)h Fg(return)p Fn(ed.)18 b(By)11 b(replacing)164 +2289 y(the)19 b(rule,)f(w)o(e)h(mak)o(e)e(the)i Fg(return)p +Fn(ed)e(tok)o(ens)i(explicit,)e(and)j(a)o(v)o(oid)e(a)i(w)o(arning)f +(from)164 2350 y(Ox.)237 2410 y(Eac)o(h)14 b(parse-tree)g(no)q(de)h +(lab)q(eled)f(b)o(y)g Fg(expr)e Fn(is)i(the)g(ro)q(ot)i(of)e(a)h +(subtree)f(corresp)q(ond-)164 2470 y(ing)i(to)h(a)g(sub)q(expression.)k +(Placing)16 b(the)g(attribute)g(declaration:)961 2599 +y(5)p eop +%%Page: 6 6 +6 5 bop 292 307 a Fg(@attribute)o(s)23 b({long)h(val;})f(expr)164 +409 y Fn(in)f(the)g(Y-\014le)g(causes)h(the)f(Ox-generated)h +(translator)g(to)g(allo)q(cate)g(space)f(\(an)h(at-)164 +469 y(tribute)17 b(instance\))h(for)g(a)g Fg(long)f Fn(named)g +Fg(val)f Fn(eac)o(h)i(time)e(it)h(creates)h(a)g(no)q(de)h(lab)q(eled) +164 529 y(b)o(y)d Fg(expr)p Fn(.)237 589 y(The)24 b Fh(b)n(o)n(dy)k +Fn(\(the)c(part)h(b)q(et)o(w)o(een)e(curly)g(braces\))i(of)f(an)h +(attribute)f(declaration)164 650 y(resem)o(bles)13 b(that)k(of)f(a)h(C) +f(structure)f(declaration,)h(except)f(that)h(curly)f(braces)h(cannot) +164 710 y(b)q(e)g(nested.)380 692 y Fi(3)237 770 y Fn(The)22 +b(de\014nitions)g(for)g(the)g Fg(val)f Fn(attribute)h(of)g +Fg(expr)f Fn(are)h(seen)f(in)h(the)g Fh(attribute)164 +830 y(r)n(efer)n(enc)n(e)d(se)n(ctions)k Fn(\(co)q(de)18 +b(fragmen)o(ts)e(delimited)f(b)o(y)j Fg(@)p Fb(f)f Fn(and)h +Fg(@)p Fb(g)p Fn(\))g(in)f(the)h(mo)q(di\014ed)164 890 +y(Y-\014le.)i(Eac)o(h)14 b(of)g(the)g(attribute)f(de\014nitions)h +(starts)h(with)e(the)h Fh(implicit-mo)n(de)i(annun-)164 +951 y(ciator)23 b Fg(@i)p Fn(,)16 b(whose)i(meaning)e(is)h(explained)f +(in)h(section)g(4.1.)24 b(In)17 b(this)h(example,)c(eac)o(h)164 +1011 y(attribute)i(reference)e(section)i(con)o(tains)h(exactly)e(one)h +(attribute)g(de\014nition.)p 164 2378 648 2 v 220 2409 +a Ff(3)239 2424 y Fe(A)o(ttributes)h(can)f(b)q(e)h(of)f(an)o(y)f(C)h +(fundamen)o(tal)f(or)h(deriv)o(ed)g(t)o(yp)q(e.)26 b(The)16 +b(Ox)h(co)q(de)g(in)e(section)i(8)164 2474 y(uses)e(an)f(attribute)g +(that)g(is)g(a)f(C)h(structure.)961 2599 y Fn(6)p eop +%%Page: 7 7 +7 6 bop 164 307 a Fc(\045token)21 b(ICONST)164 357 y(\045left)g('+')g +('-')164 407 y(\045left)g('*')g('/')164 506 y(@attributes)e({char)i +(*string;)f(})i(ICONST)164 556 y(@attributes)d({long)i(val;})130 +b(expr)164 656 y(\045\045)164 706 y(expr)86 b(:)153 b(expr)86 +b('*')108 b(expr)513 756 y(@{)21 b(@i)g(@expr.0.val@)f(=)h +(@expr.1.val@)f(*)h(@expr.2.val@;)41 b(@})338 855 y(|)153 +b(expr)86 b('/')108 b(expr)513 905 y(@{)21 b(@i)g(@expr.0.val@)f(=)h +(@expr.1.val@)f(/)h(@expr.2.val@;)41 b(@})338 1005 y(|)153 +b(expr)86 b('+')108 b(expr)513 1054 y(@{)21 b(@i)g(@expr.val@)f(=)i +(@expr.1.val@)d(+)j(@expr.2.val@;)84 b(@})338 1154 y(|)153 +b(expr)86 b('-')108 b(expr)513 1204 y(@{)21 b(@i)g(@expr.0.val@)f(=)h +(@expr.1.val@)f(-)h(@expr.2.val@;)41 b(@})338 1303 y(|)153 +b('\(')108 b(expr)86 b('\)')513 1353 y(@{)21 b(@i)g(@expr.0.val@)f(=)h +(@expr.1.val@;)368 b(@})338 1453 y(|)153 b(ICONST)513 +1503 y(@{)21 b(@i)g(@expr.val@)f(=)i(atoi\(@ICONST.str)o(ing@\))o(;)215 +b(@})338 1553 y(;)164 1602 y(\045\045)164 1652 y(main\(\))208 +1702 y({return\(yyparse)o(\(\)\);)208 1752 y(})237 1859 +y Fn(The)11 b(grammar)e(sym)o(b)q(ol)h Fg(expr)f Fn(has)j(three)e +Fh(gr)n(ammar-symb)n(ol)h(o)n(c)n(curr)n(enc)n(es)k Fn(\(namely)164 +1919 y Fg(expr.0)p Fn(,)f Fg(expr.1)p Fn(,)f(and)k Fg(expr.2)p +Fn(\))d(in)i(the)g(grammar)f(rule:)292 2016 y Fg(expr)101 +b(:)179 b(expr)101 b('*')127 b(expr)164 2113 y Fn(An)16 +b Fh(attribute)i(o)n(c)n(curr)n(enc)n(e)i Fn(\(concisely:)g(an)c +Fh(o)n(c)n(curr)n(enc)n(e)t Fn(\))g(is)g(a)h(grammar-sym)o(b)q(ol)c(o)q +(c-)164 2173 y(currence)20 b(together)h(with)g(an)g(attribute)g(of)g +(the)g(sym)o(b)q(ol.)34 b(An)20 b Fh(attribute)j(r)n(efer)n(enc)n(e)164 +2233 y Fn(tak)o(es)16 b(the)g(form:)237 2354 y Fg(@)p +Fh(gr)n(ammarsymb)n(ol)p Fg(.)p Fn([)p Fh(inte)n(ger)p +Fg(.)p Fn(])p Fh(attributename)p Fg(@)164 2474 y Fn(where)21 +b Fh(attributename)27 b Fn(app)q(ears)c(as)f(an)g(iden)o(ti\014er)d(in) +i(the)h(b)q(o)q(dy)g(of)g(the)f(attribute)961 2599 y(7)p +eop +%%Page: 8 8 +8 7 bop 164 307 a Fn(declaration)20 b(for)g Fh(gr)n(ammarsymb)n(ol)p +Fn(.)31 b(If)20 b(in)o(teger)f(is)h Fh(n)p Fn(,)h(the)f(reference)e(is) +i(to)h(the)e Fh(n)p Fn(th)164 367 y(o)q(ccurrence)13 +b(of)h Fh(gr)n(ammarsymb)n(ol)j Fn(coun)o(ting)d(from)e(the)i(left)f +(of)h(the)f(rule)g(\(the)h(leftmost)164 428 y(o)q(ccurrence)19 +b(b)q(eing)i(the)f(0th\).)33 b(The)20 b(square)g(brac)o(k)o(ets)f(ab)q +(o)o(v)o(e)h(denote)h(that)f Fh(inte)n(ger)164 488 y +Fn(and)d(the)f(second)g Fg(.)22 b Fn(are)16 b(optional)h(\(the)e +(default)h(v)m(alue)g(for)h Fh(inte)n(ger)22 b Fn(b)q(eing)17 +b(0\).)237 548 y Fh(A)o(ttribute)i(de\014nitions)j Fn(are)16 +b(basically)g(C)g(co)q(de)h(fragmen)o(ts)e(con)o(taining)h(attribute) +164 608 y(references.)22 b(In)17 b(general,)g(an)g(attribute)g +(de\014nition)f(section)h(con)o(tains)g(zero)g(to)g(man)o(y)164 +668 y(attribute)g(de\014nitions.)24 b(Eac)o(h)18 b(attribute)f +(de\014nition)g(is)g(announced)h(b)o(y)f(a)h(mo)q(de)e(an-)164 +729 y(n)o(unciator,)g(and)g(terminated)f(b)o(y)h Fg(@)p +Fb(g)f Fn(or)i(b)o(y)f(the)g(next)f(mo)q(de)h(ann)o(unciator.)164 +895 y Fo(4)83 b(Order)27 b(of)h(A)n(ttribute-Instance)e(Ev)-5 +b(aluation)164 1004 y Fn(A)o(ttribute)16 b(grammars)g(sp)q(ecify)g +(seman)o(tics)f(in)i(a)h Fh(de)n(clar)n(ative)j Fn(or)d +Fh(functional)24 b Fn(\(rather)164 1064 y(than)15 b(sequen)o(tial)f(or) +h(imp)q(erativ)o(e\))d(st)o(yle.)19 b(When)c(a)g(parse)h(tree)e(is)g +(created,)g(the)h(tree's)164 1125 y(attribute)d(instances)h(are)g(ev)m +(aluated)f(in)h(an)g(order)g(constrained)g(\(but)g(not)g(fully)e +(deter-)164 1185 y(mined\))g(b)o(y)h(the)h(attribute)g(grammar.)18 +b(It)13 b(is)g(clear)f(that)h(in)g(the)f(example)f(of)i(section)g(3,) +164 1245 y(all)h Fg(val)f Fn(instances)i(in)f(the)g(leaf)g(no)q(des)i +(m)o(ust)d(b)q(e)i(ev)m(aluated)f(b)q(efore)h(the)f Fg(val)f +Fn(instance)164 1305 y(of)k(the)f(ro)q(ot)h(no)q(de.)237 +1365 y(Ox)22 b(\(rather)g(than)g(the)g(compiler)e(designer\))h +(generates)h(co)q(de)g(that)h(causes)f(in-)164 1426 y(stances)17 +b(to)f(b)q(e)h(ev)m(aluated)f(in)g(a)g(correct)g(order.)164 +1570 y Fd(4.1)70 b(Dep)r(endency)21 b(relations)h(in)g(the)g(Y-\014le) +164 1652 y Fn(There)h(is)h(a)g(constrain)o(t)f(for)h(eac)o(h)g(grammar) +e(rule)h(in)g(the)g(Y-\014le:)35 b(a)25 b Fh(dep)n(endency)164 +1702 y(r)n(elation)20 b Fn(on)d(the)f(attribute)g(o)q(ccurrences)g(in)g +(that)g(rule.)21 b(F)l(or)16 b(the)g(rule:)164 1792 y +Fc(expr)86 b(:)153 b(expr)86 b('*')108 b(expr)513 1842 +y(@{)21 b(@i)g(@expr.0.val@)f(=)h(@expr.1.val@)f(*)h(@expr.2.val@;)513 +1892 y(@})164 1993 y Fn(there)16 b(is)g(the)g(constrain)o(t)g(that)h +(instances)f(corresp)q(onding)h(to)g Fg(expr.1.va)o(l)c +Fn(and)164 2053 y Fg(expr.2.val)19 b Fn(in)j(sibling)g(parse-tree)h(no) +q(des)g(m)o(ust)e(b)q(e)i(ev)m(aluated)g(b)q(efore)f(the)h(one)164 +2113 y(corresp)q(onding)17 b(to)g Fg(expr.0.val)12 b +Fn(in)k(their)g(paren)o(t)g(no)q(de.)237 2173 y(Eac)o(h)f(rule's)g(dep) +q(endency)f(relation)h(is)h(determined)c(b)o(y)j(its)g(individual)f +(attribute)164 2233 y(de\014nitions.)32 b(There)19 b(are)h(sev)o(eral)f +(mo)q(des)g(for)h(comm)o(unic)o(ating)e(dep)q(endency)h(infor-)164 +2293 y(mation)d(to)h(Ox.)22 b(The)17 b Fh(implicit)i(mo)n(de)h +Fn(is,)c(for)h(most)f(Ox)g(translators,)i(the)f(only)f(suc)o(h)164 +2354 y(mo)q(de)f(needed.)21 b(The)16 b Fh(explicit)j(mo)n(de)h +Fn(is)c(describ)q(ed)g(brie\015y)f(in)h(section)g(9.7.)237 +2414 y(The)h(implici)o(t-m)o(o)q(de)e(ann)o(unciator)i +Fg(@i)f Fn(\(see)g(the)g(example)f(in)h(section)g(3\))h(signals)164 +2474 y(to)h(Ox)g(the)f(b)q(eginning)i(of)f(an)g(attribute)g +(de\014nition.)25 b(F)l(urther,)18 b(it)f(informs)g(Ox)g(that)961 +2599 y(8)p eop +%%Page: 9 9 +9 8 bop 164 307 a Fn(an)19 b(instance)g(corresp)q(onding)h(to)f(the)g +(de\014nition's)f Fh(leftmost)24 b Fn(attribute)19 b(reference)e(is)164 +367 y(to)d(b)q(e)g(ev)m(aluated)f Fh(after)20 b Fn(those)14 +b(corresp)q(onding)g(to)g(other)g(attribute)g(references)e(in)h(the)164 +428 y(de\014nition.)25 b(This)17 b(is)h(to)g(sa)o(y)f(that)h(the)g(o)q +(ccurrence)f(corresp)q(onding)h(to)g(the)g(leftmost)164 +488 y(reference)f Fh(dep)n(ends)j(on)j Fn(the)c(o)q(ccurrences)f +(corresp)q(onding)i(to)f(the)f(other)h(references)164 +548 y(in)d(the)g(de\014nition.)164 692 y Fd(4.2)70 b(Dep)r(endency)21 +b(relations)h(in)g(the)g(L-\014le)164 785 y Fn(Note)h(that)h(the)g(mo)q +(de)e(ann)o(unciator)i Fg(@i)f Fn(do)q(es)h(not)g(app)q(ear)h(in)e(the) +h(L-\014le)f(of)h(the)164 845 y(example)19 b(in)j(section)f(3.)37 +b(Mo)q(de)22 b(ann)o(unciators)g(are)g(not)g(used)f(in)h(L-\014les.)37 +b(An)21 b(at-)164 905 y(tribute)g(reference)f(section)i(in)f(an)i +(L-\014le)f(is)f(executed)g(as)h(a)h(whole)e(whenev)o(er)g(the)164 +965 y(corresp)q(onding)16 b(lexical)d(rule)h(is)g(matc)o(hed.)19 +b(In)c(the)f(example,)f(this)h(is)h(done)g(whenev)o(er)164 +1025 y(the)21 b(Lex-generated)g(scanner)h(matc)o(hes)d(a)j(digit)f +(string.)36 b(Executing)21 b(an)g(attribute)164 1086 +y(reference)d(section)i(ma)o(y)f(in)o(v)o(olv)o(e)f(the)i(ev)m +(aluation)g(of)g(sev)o(eral)g(attribute)f(instances.)164 +1146 y(An)12 b(attribute)g(reference)f(section)h(in)h(the)f(L-\014le)h +(m)o(ust)e(con)o(tain)h(exactly)f(one)i(attribute)164 +1206 y(reference)i(for)i(eac)o(h)g(attribute)f(o)q(ccurrence)g +(de\014ned)h(there)f(\(in)h(the)g(previous)f(exam-)164 +1266 y(ple,)f(that)i(for)f Fg(ICONST.stri)o(ng)p Fn(\))o(.)164 +1433 y Fo(5)83 b(Using)27 b(global)h(v)-5 b(ariables)164 +1542 y Fn(A)o(ttribute)15 b(reference)g(sections)i(can)g(con)o(tain)g +(an)o(y)f(C)i(co)q(de,)e(including)g(references)g(to)164 +1602 y(global)h(v)m(ariables.)237 1663 y(In)11 b(our)g(running)g +(example,)f(w)o(e)g(ha)o(v)o(en't)g(y)o(et)g(sho)o(wn)h(ho)o(w)h(to)f +(prin)o(t)f(the)h(main)e(result)164 1723 y(of)18 b(the)f(seman)o(tic)e +(analysis)j(\(i.e.,)e(the)h(v)m(alue)g(of)h(the)f(expression\).)24 +b(The)18 b(approac)o(h)g(is)164 1783 y(to)i(cop)o(y)g(the)f +Fg(val)g Fn(attribute)h(instance)f(of)h(the)g(ro)q(ot)h(no)q(de)g(in)o +(to)e(a)h(global)h(v)m(ariable,)164 1843 y(then)e(prin)o(t)f(it)h +(after)g(termination)e(of)i Fg(yyparse\(\))p Fn(.)26 +b(W)l(e)19 b(in)o(tro)q(duce)g(a)g(unique)f(start)164 +1903 y(pro)q(duction)f(for)g(this)f(purp)q(ose.)23 b(The)16 +b(L-\014le)h(need)f(not)h(b)q(e)g(c)o(hanged.)22 b(Here)15 +b(is)h(sho)o(wn)164 1964 y(the)g(new)g(Y-\014le,)f(with)h(c)o(hanged)h +(or)f(added)h(lines)e(mark)o(ed)g(b)o(y)g(empt)o(y)f(C)j(commen)o(ts:) +961 2599 y(9)p eop +%%Page: 10 10 +10 9 bop 164 307 a Fc(\045token)21 b(ICONST)164 357 y(\045left)g('+')g +('-')164 407 y(\045left)g('*')g('/')164 506 y(\045{)1351 +b(/*)21 b(*/)164 556 y(long)g(globVal;)1110 b(/*)21 b(*/)164 +606 y(\045})1351 b(/*)21 b(*/)164 706 y(@attributes)e({char)i +(*string;})f(ICONST)164 756 y(@attributes)f({long)i(val;})108 +b(s)22 b(expr)653 b(/*)21 b(*/)164 805 y(\045\045)164 +855 y(s)152 b(:)h(expr)958 b(/*)21 b(*/)513 905 y(@{)g(@i)g(globVal)g +(=)g(@s.val@)g(=)g(@expr.val@;)129 b(@})65 b(/*)21 b(*/)338 +955 y(;)1199 b(/*)21 b(*/)164 1054 y(expr)86 b(:)153 +b(expr)86 b('*')108 b(expr)513 1104 y(@{)21 b(@i)g(@expr.0.val@)f(=)h +(@expr.1.val@)f(*)h(@expr.2.val@;)41 b(@})338 1204 y(|)153 +b(expr)86 b('/')108 b(expr)513 1254 y(@{)21 b(@i)g(@expr.0.val@)f(=)h +(@expr.1.val@)f(/)h(@expr.2.val@;)41 b(@})338 1353 y(|)153 +b(expr)86 b('+')108 b(expr)513 1403 y(@{)21 b(@i)g(@expr.val@)f(=)i +(@expr.1.val@)d(+)j(@expr.2.val@;)84 b(@})338 1503 y(|)153 +b(expr)86 b('-')108 b(expr)513 1553 y(@{)21 b(@i)g(@expr.0.val@)f(=)h +(@expr.1.val@)f(-)h(@expr.2.val@;)41 b(@})338 1652 y(|)153 +b('\(')108 b(expr)86 b('\)')513 1702 y(@{)21 b(@i)g(@expr.0.val@)f(=)h +(@expr.1.val@;)368 b(@})338 1802 y(|)153 b(ICONST)513 +1851 y(@{)21 b(@i)g(@expr.val@)f(=)i(atoi\(@ICONST.str)o(ing@\))o(;)215 +b(@})338 1901 y(;)164 1951 y(\045\045)164 2001 y(main\(\))208 +2051 y({yyparse\(\);)1109 b(/*)21 b(*/)229 2100 y +(printf\("\045d\\n",globV)o(al\);)825 b(/*)21 b(*/)208 +2150 y(})237 2264 y Fn(Up)q(on)h(completion)d(of)j(the)f(call)g(to)h +Fg(yyparse)p Fn(,)d(the)i(tree's)g(attribute)g(instances)164 +2325 y(ha)o(v)o(e)14 b(all)g(b)q(een)h(ev)m(aluated.)21 +b(The)14 b(ev)m(aluation)h(of)g Fg(@s.val@)e Fn(en)o(tails)h(an)h +(assignmen)o(t)f(to)164 2385 y Fg(globVal)p Fn(.)19 b(The)d(prin)o +(ting)g(of)g Fg(globVal)e Fn(is)i(the)g(last)g(thing)h(done)f(b)o(y)g +(the)g(calculator.)949 2599 y(10)p eop +%%Page: 11 11 +11 10 bop 164 315 a Fo(6)83 b(P)n(arse-tree)27 b(tra)n(v)n(ersals)164 +425 y Fn(A)18 b(parse)g(tree)g(is)g(m)o(uc)o(h)e(more)h(useful)g(if)h +(it)g(can)g(b)q(e)h(tra)o(v)o(ersed,)e(and)i(if)e(its)h(attribute)164 +485 y(instances)e(can)h(b)q(e)g(accessed)f(during)h(tra)o(v)o(ersals.)k +(Suc)o(h)16 b(tra)o(v)o(ersals)g(are)h(particularly)164 +545 y(useful)k(for)g(co)q(de)h(generation.)36 b(Ox)21 +b(can)g(b)q(e)g(instructed)g(to)g(generate)g(a)h(translator)164 +606 y(that)c(p)q(erforms)e(v)m(arious)i(kinds)f(of)h(tra)o(v)o(ersals)f +(after)g(ev)m(aluation)h(of)f(all)g(of)h(the)f(tree's)164 +666 y(attribute)f(instances.)164 810 y Fd(6.1)70 b(Application:)28 +b(translation)23 b(to)g(pre\014x)164 903 y Fn(The)18 +b(follo)o(wing)f(Y-\014le)g(sp)q(eci\014es)h(an)g(expression)f(parser)h +(that)h(translates)f(its)f(\(in\014x\))164 963 y(input)e(to)h(pre\014x) +f(form.)20 b(The)c(L-\014le)f(is)g(the)h(same)e(as)i(that)g(of)g(the)f +(previous)h(example.)949 2599 y(11)p eop +%%Page: 12 12 +12 11 bop 164 307 a Fc(\045token)21 b(ICONST)164 357 +y(\045left)g('+')g('-')164 407 y(\045left)g('*')g('/')164 +506 y(@traversal)f(@preorder)g(yourTrav)164 556 y(@traversal)g +(@preorder)g(yoursToo)164 656 y(@attributes)f({char)i(*string;})f +(ICONST)164 706 y(@attributes)f({long)i(val;})108 b(s)22 +b(expr)164 756 y(\045\045)164 805 y(s)152 b(:)h(expr)513 +855 y(@{)21 b(@i)g(@s.val@)g(=)g(@expr.val@;)578 905 +y(@yoursToo)f(printf\("\\n\045d\\n",@)o(s.val)o(@\);)513 +955 y(@})338 1005 y(;)164 1054 y(expr)86 b(:)153 b(expr)86 +b('*')108 b(expr)513 1104 y(@{)21 b(@i)g(@expr.0.val@)f(=)h +(@expr.1.val@)f(*)h(@expr.2.val@;)578 1154 y(@yourTrav)f(printf\(")g(*) +i("\);)513 1204 y(@})338 1254 y(|)153 b(expr)86 b('/')108 +b(expr)513 1303 y(@{)21 b(@i)g(@expr.0.val@)f(=)h(@expr.1.val@)f(/)h +(@expr.2.val@;)578 1353 y(@yourTrav)f(printf\(")g(/)i("\);)513 +1403 y(@})338 1453 y(|)153 b(expr)86 b('+')108 b(expr)513 +1503 y(@{)21 b(@i)g(@expr.val@)f(=)i(@expr.1.val@)d(+)j(@expr.2.val@;) +578 1553 y(@yourTrav)e(printf\(")g(+)i("\);)513 1602 +y(@})338 1652 y(|)153 b(expr)86 b('-')108 b(expr)513 +1702 y(@{)21 b(@i)g(@expr.0.val@)f(=)h(@expr.1.val@)f(-)h +(@expr.2.val@;)578 1752 y(@yourTrav)f(printf\(")g(-)i("\);)513 +1802 y(@})338 1851 y(|)153 b('\(')108 b(expr)86 b('\)')513 +1901 y(@{)21 b(@i)g(@expr.0.val@)f(=)h(@expr.1.val@;)513 +1951 y(@})338 2001 y(|)153 b(ICONST)513 2051 y(@{)21 +b(@i)g(@expr.val@)f(=)i(atoi\(@ICONST.str)o(ing@\))o(;)578 +2100 y(@yourTrav)e(printf\(")g(\045s)h(",@ICONST.string@\);)513 +2150 y(@})338 2200 y(;)164 2250 y(\045\045)164 2300 y(main\(\))208 +2350 y({return\(yyparse)o(\(\)\);)208 2399 y(})949 2599 +y Fn(12)p eop +%%Page: 13 13 +13 12 bop 164 307 a Fn(The)16 b(line)292 409 y Fg(@traversal)22 +b(@preorder)g(yourTrav)164 511 y Fn(declares)16 b(a)g(left-to-righ)o(t) +g(preorder)h(tra)o(v)o(ersal)e(named)g Fg(yourTrav)p +Fn(.)k(Supp)q(ose)e(that)g(in)164 571 y(our)d(example,)d(the)j +Fg(yourTrav)c Fn(tra)o(v)o(ersal)j(has)h(reac)o(hed)f(a)h(no)q(de)g(at) +g(whic)o(h)f(a)h(grammar)164 631 y(rule)d Fa(R)g Fn(is)g(applied.)20 +b(If)10 b(the)h(attribute)g(reference)f(section)h(of)g +Fa(R)h Fn(con)o(tains)g(the)f Fh(tr)n(aversal-)164 691 +y(mo)n(de)17 b(annunciator)h Fg(@yourTrav)c Fn(\(whic)o(h)i(w)o(as)h +(giv)o(en)f(meaning)g(b)o(y)g(its)h Fg(@traversa)o(l)164 +751 y Fn(declaration\),)c(then)f(the)g Fg(printf)f Fn(statmen)o(t)g +(follo)o(wing)h Fg(@yourTrav)d Fn(is)k(executed,)e(and)164 +812 y(the)j(tra)o(v)o(ersal)g(is)g(con)o(tin)o(ued)g(for)g(the)h +(subtree)f(ro)q(oted)h(at)g(the)f(no)q(de)h(in)f(question.)21 +b(Us-)164 872 y(ing)16 b Fg(@postorder)c Fn(instead)17 +b(of)f Fg(@preorder)d Fn(w)o(ould)j(cause)g(a)g(tra)o(v)o(ersal)g(that) +g(executes)164 932 y(the)23 b Fg(printf)f Fh(after)29 +b Fn(completing)22 b(the)h(tra)o(v)o(ersal)g(of)h(that)g(subtree,)h +(resulting)e(in)h(a)164 992 y(p)q(ost\014x)17 b(translation.)237 +1052 y(A)e(tra)o(v)o(ersal)g(that)h(accesses)f(the)g +Fg(val)g Fn(instance)g(in)g(the)h(ro)q(ot)g(no)q(de)g(is)g(an)g +(alterna-)164 1112 y(tiv)o(e)f(to)h(using)h(the)f(global)h(v)m(ariable) +f Fg(globVal)d Fn(of)k(section)f(5.)21 b(Placing)16 b(the)g(line:)292 +1214 y Fg(@traversal)22 b(@preorder)g(yoursToo)164 1316 +y Fn(in)16 b(the)g(declarations)g(section,)g(and)g(the)g(line:)292 +1418 y Fg(@yoursToo)22 b(printf\("\045d\\)o(n",)o(@s.)o(va)o(l@\))o(;) +164 1519 y Fn(in)c(the)h(attribute)f(reference)f(section)h(for)h(the)f +(start)h(pro)q(duction)g(accomplishes)e(the)164 1579 +y(same)e(thing)i(as)f(the)g(use)h(of)f Fg(globVal)p Fn(.)237 +1640 y(One)h(tra)o(v)o(ersal)g(is)g(done)g(for)h(eac)o(h)f(tra)o(v)o +(ersal)f(declaration,)h(the)g(tra)o(v)o(ersals)g(b)q(eing)164 +1700 y(done)e(one)f(after)g(another,)h(in)f(the)g(order)h(in)f(whic)o +(h)f(the)h(declarations)h(app)q(ear.)21 b(In)14 b(the)164 +1760 y(example,)e(the)j(declaration)f(of)h Fg(yoursToo)c +Fn(app)q(ears)16 b(after)f(that)g(of)f Fg(yourTrav)p +Fn(,)e(so)j(the)164 1820 y(v)m(alue)h(of)h(the)f(expression)f(is)h +(prin)o(ted)g(after)g(the)g(preorder)g(translation)h(is)f(prin)o(ted.) +164 1987 y Fo(7)83 b(Inherited)27 b(vs.)35 b(Syn)n(thesized)25 +b(A)n(ttributes)164 2096 y Fn(It)15 b(is)g(useful)f(to)i(think)f(of)g +(the)g(lexical)e(rules)i(\(i.e.,)e(the)i(rules)g(in)g(the)g(L-\014le\)) +g(as)h(virtual)164 2156 y(grammar)10 b(rules)i(\(pro)q(ductions\))g +(whose)h(righ)o(t-hand)f(sides)g(are)g(the)g(empt)o(y)d(string)j(and) +164 2217 y(whose)22 b(left-hand)g(sides,)h(while)e(actual)h(Y)l(acc)f +(tok)o(ens,)h(are)g(virtual)f(non)o(terminals.)164 2277 +y(This)h(generic)e(concept)h(of)h Fh(rule)k Fn(is)21 +b(consisten)o(t)g(with)h(usual)g(concepts)f(of)h Fh(attribute)164 +2337 y(gr)n(ammar)5 b Fn(,)15 b(and)i(leads)f(to)g(the)g(follo)o(wing)g +(de\014nitions:)237 2397 y(An)g(attribute)g(o)q(ccurrence)g +Fa(o)g Fn(in)g(a)h(rule)e Fa(R)i Fn(is)f Fh(synthesize)n(d)22 +b Fn(if)15 b(and)i(only)f(if)949 2599 y(13)p eop +%%Page: 14 14 +14 13 bop 237 307 a Fb(\017)24 b Fa(o)17 b Fn(is)f(on)g(the)g(LHS)h(of) +f Fa(R)h Fn(and)g(the)f(attribute)g(reference)f(section)g(of)i +Fa(R)g Fn(con)o(tains)286 367 y(a)g(de\014nition)e(of)i +Fa(o)p Fn(,)f(or)237 469 y Fb(\017)24 b Fa(o)16 b Fn(is)g(on)g(the)g +(RHS)f(of)i Fa(R)f Fn(and)g(the)g(attribute)g(reference)e(section)h(of) +h Fa(R)h Fn(con)o(tains)286 529 y(no)g(de\014nition)e(of)i +Fa(o)p Fn(.)237 631 y(An)f(attribute)g(o)q(ccurrence)g +Fa(o)g Fn(in)g(a)h(rule)e Fa(R)i Fn(is)f Fh(inherite)n(d)22 +b Fn(if)15 b(and)i(only)f(if)237 733 y Fb(\017)24 b Fa(o)13 +b Fn(is)g(on)h(the)e(left-hand)h(side)g(\(LHS\))g(of)g +Fa(R)h Fn(and)g(the)e(attribute)h(reference)e(section)286 +793 y(of)16 b Fa(R)h Fn(con)o(tains)g(no)f(de\014nition)g(of)h +Fa(o)p Fn(,)f(or)237 895 y Fb(\017)24 b Fa(o)g Fn(is)e(on)i(the)f(righ) +o(t-hand)h(side)e(\(RHS\))h(of)g Fa(R)h Fn(and)g(the)f(attribute)g +(reference)286 955 y(section)16 b(of)g Fa(R)h Fn(con)o(tains)f(a)h +(de\014nition)f(of)g Fa(o)p Fn(.)237 1056 y(Ox)h(issues)g(an)g(error)g +(message)f(if)h(it)f(\014nds)h(an)h(attribute)e(that)i(has)f(b)q(oth)h +(syn)o(the-)164 1117 y(sized)d(and)i(inherited)e(o)q(ccurrences)h(in)g +(the)f(grammar.)20 b(An)c(attribute)g(is)g Fh(synthesize)n(d)164 +1177 y Fn(if)11 b(and)i(only)e(if)h(it)f(has)i(at)f(least)f(one)i(o)q +(ccurrence,)e(and)h(its)g(ev)o(ery)e(o)q(ccurrence)i(is)f(syn)o(the-) +164 1237 y(sized.)22 b(An)16 b(attribute)h(is)f Fh(inherite)n(d)22 +b Fn(if)17 b(and)g(only)g(if)f(it)g(has)h(at)h(least)e(one)h(o)q +(ccurrence,)164 1297 y(and)23 b(its)f(ev)o(ery)f(o)q(ccurrence)h(is)g +(inherited.)39 b(It)22 b(follo)o(ws)g(from)g(the)g(ab)q(o)o(v)o(e)g +(that)h(the)164 1357 y(grammar's)17 b(start)i(sym)o(b)q(ol)e(can)i(ha)o +(v)o(e)f(only)g(syn)o(thesized)g(attributes.)28 b(Referring)18 +b(to)164 1418 y(returned)g(tok)o(ens)h(as)g(rules)f(emphasizes)g(the)g +(equal)g(status)i(of)f(tok)o(ens)f(and)i(non)o(ter-)164 +1478 y(minals,)14 b(inasm)o(uc)o(h)f(as)j(eac)o(h)f(kind)g(of)h(sym)o +(b)q(ol)e(\(except)g(the)h(start)h(sym)o(b)q(ol\))e(can)i(ha)o(v)o(e) +164 1538 y(b)q(oth)h(syn)o(thesized)d(and)i(inherited)f(attributes.)21 +b(Eac)o(h)15 b(sym)o(b)q(ol)g(has)h(a)g(distinct)f(name)164 +1598 y(space,)h(so)g(same-named)e(attributes)i(of)g(di\013eren)o(t)f +(sym)o(b)q(ols)g(are)g(distinct)g(attributes,)164 1658 +y(and)i(can)f(di\013er)g(as)h(to)g(whether)f(they)f(are)i(inherited)e +(or)h(syn)o(thesized.)237 1719 y(F)l(or)g(eac)o(h)f(parse-tree)g(no)q +(de)h(except)f(the)g(ro)q(ot)i(no)q(de,)e(t)o(w)o(o)h(rules)f(of)h(the) +f(Ox)g(input)164 1779 y(sp)q(eci\014cation)21 b(are)h(of)g(particular)f +(in)o(terest.)36 b(The)22 b Fh(home)g(rule)k Fn(is)21 +b(the)h(rule)e(applied)164 1839 y(at)i(the)g(no)q(de,)h(i.e.,)e(the)h +(rule)f(whose)i(LHS)f(is)f(the)h(lab)q(el)f(of)h(the)g(giv)o(en)f(no)q +(de,)i(and)164 1899 y(whose)c(RHS)g(sym)o(b)q(ols)e(are)i(the)g(lab)q +(els)f(of)h(the)g(c)o(hildren)e(of)i(the)f(no)q(de.)30 +b(The)19 b Fh(p)n(ar)n(ent)164 1959 y(rule)24 b Fn(is)19 +b(the)g(rule)g(applied)f(at)i(the)f(no)q(de's)h(paren)o(t.)31 +b(The)19 b(attribute)g(de\014nition)g(of)h(a)164 2020 +y(syn)o(thesized)c(attribute)h(instance)g(of)h(a)g(giv)o(en)e(no)q(de)i +(is)g(asso)q(ciated)g(with)f(the)g(no)q(de's)164 2080 +y(home)i(rule)g(\(i.e.,)f(it)h(app)q(ears)i(in)f(the)f(attribute)h +(reference)e(section)h(for)h(that)g(rule\),)164 2140 +y(and)d(de\014nitions)g(of)g(inherited)e(attribute)h(instances)h(are)g +(similarly)c(asso)q(ciated)18 b(with)164 2200 y(the)e(paren)o(t)g +(rule.)237 2260 y(In)i(a)g(legal)g(input)g(sp)q(eci\014cation,)g(eac)o +(h)f(attribute)h(of)g(a)h(sym)o(b)q(ol)e(app)q(earing)i(in)f(a)164 +2320 y(rule)e(is)g(either)g(syn)o(thesized)f(or)i(inherited,)e(but)i +(not)g(b)q(oth,)g(so)h(the)e(de\014nitions)g(of)h(all)164 +2381 y(attributes)f(\\\014t)h(together")g(completely)c(and)k(without)f +(con)o(tradiction.)949 2599 y(14)p eop +%%Page: 15 15 +15 14 bop 164 315 a Fo(8)83 b(Using)27 b(inherited)g(attributes)164 +425 y Fn(This)19 b(section)f(giv)o(es)g(an)h(example)d(indicating)i +(the)g(use)h(of)g(inherited)e(attributes)i(for)164 485 +y(seman)o(tic)e(analysis)j(in)o(v)o(olving)d(righ)o(t)i(con)o(text.)30 +b(The)19 b(example)e(also)j(giv)o(es)f(a)g(b)q(etter)164 +545 y(idea)d(of)g(ho)o(w)h(Ox)f(co)q(de)g(is)h(used)f(together)g(with)g +(C)h(co)q(de.)237 606 y(In)c(man)o(y)e(languages,)j(for)g(instance)e(P) +o(ascal,)h(eac)o(h)g(v)m(ariable)f(declaration)h(is)g(essen-)164 +666 y(tially)h(a)j(list)e(of)h(iden)o(ti\014ers)e(follo)o(w)o(ed)h(b)o +(y)g(a)h(t)o(yp)q(e)f(sp)q(eci\014er.)21 b(Here)14 b(w)o(e)i(sho)o(w)g +(a)g(simple)164 726 y(language)j(whose)g(ev)o(ery)e(sen)o(tence)g +(consists)i(of)g(suc)o(h)f(a)h(v)m(ariable)f(declaration.)27 +b(Our)164 786 y(translator)19 b(parses)h(the)e(input,)g(recording)h(in) +f(a)h(sym)o(b)q(ol)e(ob)s(ject)h(the)g(iden)o(ti\014er)f(and)164 +846 y(t)o(yp)q(e)g(of)h(eac)o(h)f(v)m(ariable)g(declared.)24 +b(Then)17 b(the)g(sym)o(b)q(ol)g(ob)s(jects)g(are)g(prin)o(ted)g +(during)164 907 y(a)g(p)q(ostorder)g(tra)o(v)o(ersal.)237 +956 y(Here)e(is)h(the)g(L-\014le:)164 1048 y Fc(\045{)164 +1097 y(#include)k("y.tab.h")164 1147 y(#include)g()164 +1247 y(#define)g(lexeme)h(strcpy\(\(char)e(*\)malloc\(yyleng+1\))o +(,yyte)o(xt\))164 1297 y(\045})164 1396 y(\045\045)164 +1446 y([)j(\\n\\t\\f]+)172 b(;)164 1496 y(real)304 b(return\(REAL\);) +164 1546 y(integer)238 b(return\(INT\);)164 1596 y(boolean)g +(return\(BOOL\);)164 1645 y([a-zA-Z]+)194 b(return\(IDENT\);)41 +b(@{)21 b(@IDENT.string@)e(=)j(lexeme;)e(@})164 1695 +y(",")326 b(return\(','\);)164 1745 y(";")g(return\(';'\);)164 +1795 y(":")g(return\(':'\);)164 1845 y(.)370 b({fprintf\(stderr,"il)o +(lega)o(l)19 b(character\\n"\);)g(exit\(-1\);})164 1894 +y(\045\045)237 1996 y Fn(The)c(de\014nitions)g(in)f(section)h(7)g +(together)g(with)f(the)h(follo)o(wing)g(Y-\014le)f(imply)e(that:)237 +2098 y Fb(\017)24 b Fg(string)14 b Fn(is)i(a)h(syn)o(thesized)e +(attribute)h(of)g Fg(IDENT)p Fn(.)237 2200 y Fb(\017)24 +b Fg(sym)15 b Fn(is)h(an)h(inherited)e(attribute)h(of)g +Fg(IDENT)p Fn(.)237 2301 y Fb(\017)24 b Fg(tMark)14 b +Fn(is)i(an)h(inherited)e(attribute)h(of)h Fg(varList)p +Fn(.)237 2403 y Fb(\017)24 b Fg(varDecl)14 b Fn(has)j(no)f(attributes.) +949 2599 y(15)p eop +%%Page: 16 16 +16 15 bop 164 307 a Fc(\045token)21 b(REAL)f(INT)i(BOOL)f(IDENT)164 +407 y(\045{)164 457 y(#include)f()164 506 y(struct)h(sym)g +({char)f(*str,*typeMark;};)164 606 y(struct)h(sym)g(*allocSym\(cp,t\)) +208 656 y(char)g(*cp,*t;)208 706 y({struct)f(sym)h(*pSym;)229 +756 y(pSym)g(=)h(\(struct)e(sym)h(*\))h(malloc\(sizeof)d(\(struct)h +(sym\)\);)229 805 y(pSym->str)g(=)i(cp;)f(pSym->typeMark)e(=)j(t;)229 +855 y(return)f(pSym;)208 905 y(})164 955 y(\045})164 +1054 y(@attributes)e({char)i(*string;)f(struct)h(sym)g(*sym;)g(})g +(IDENT)164 1104 y(@attributes)e({char)i(*tMark;)413 b(})21 +b(varList)164 1154 y(@traversal)f(@postorder)f(myT)j(/*)f(my)g +(Traversal)f(*/)164 1254 y(\045\045)164 1303 y(varDecl)86 +b(:)174 b(varList)20 b(':')h(REAL)g(';')600 1353 y(@{)g(@i)h +(@varList.tMark@)c(=)k("real";)86 b(@})404 1453 y(|)174 +b(varList)20 b(':')h(INT)h(';')600 1503 y(@{)f(@i)h(@varList.tMark@)c +(=)k("integer";)e(@})404 1602 y(|)174 b(varList)20 b(':')h(BOOL)g(';') +600 1652 y(@{)g(@i)h(@varList.tMark@)c(=)k("boolean";)e(@})404 +1702 y(;)164 1802 y(varList)86 b(:)174 b(IDENT)600 1851 +y(@{)21 b(@i)h(@IDENT.sym@)d(=)774 1901 y(allocSym\(@IDENT.st)o(ring@)o +(,@var)o(List.)o(tMark)o(@\);)665 1951 y(@myT)i(printf\("\045s:)f +(\045s;\\n",@IDENT.sy)o(m@->t)o(ypeMa)o(rk,)1188 2001 +y(@IDENT.sym@->str\);)600 2051 y(@})404 2100 y(|)174 +b(varList)20 b(',')h(IDENT)600 2150 y(@{)g(@i)h(@varList.1.tMar)o(k@)d +(=)i(@varList.tMark@;)665 2200 y(@i)h(@IDENT.sym@)d(=)774 +2250 y(allocSym\(@IDENT.st)o(ring@)o(,@var)o(List.)o(tMark)o(@\);)665 +2300 y(@myT)i(printf\("\045s:)f(\045s;\\n",@IDENT.sy)o(m@->t)o(ypeMa)o +(rk,)1188 2350 y(@IDENT.sym@->str\);)600 2399 y(@})404 +2449 y(;)949 2599 y Fn(16)p eop +%%Page: 17 17 +17 16 bop 164 307 a Fc(\045\045)164 357 y(main\(\))208 +407 y({return\(yyparse)o(\(\)\);)18 b(})164 573 y Fo(9)83 +b(Ov)n(erview)25 b(of)j(other)f(features)164 683 y Fn(This)21 +b(section)f(brie\015y)g(describ)q(es)h(some)e(Ox)i(features)f(that)i +(are)e(pro)o(vided)g(for)h(con-)164 743 y(v)o(enience)d(or)i(for)g(adv) +m(anced)h(or)f(sp)q(ecialized)e(use.)32 b(Detailed)20 +b(descriptions)f(of)h(these)164 803 y(features)c(app)q(ear)h(in)f(the)g +Fh(Ox)i(User)g(R)n(efer)n(enc)n(e)f(Manual)5 b Fn(.)164 +948 y Fd(9.1)70 b(Macro)23 b(facilit)n(y)164 1040 y Fn(Ox's)17 +b(input)h(sp)q(eci\014cation)f(ma)o(y)g(b)q(e)h(suc)o(h)f(that)h(the)g +(same)f(or)h(similar)e(text)h(app)q(ears)164 1100 y(in)23 +b(more)g(than)h(one)g(place)g(in)f(attribute)h(reference)e(sections.)44 +b(Ox)23 b(has)i(a)f(macro)164 1160 y(substitution)16 +b(feature)g(that)h(can)g(b)q(e)f(used)g(to)h(decrease)f(v)o(erb)q(osit) +o(y)f(in)h(suc)o(h)g(cases.)164 1305 y Fd(9.2)70 b(Automatic)21 +b(generation)h(of)i(cop)n(y)f(rules)164 1397 y Fn(Often)13 +b(a)g(Y-\014le)f(has)i(attribute)f(de\014nitions)g(that)h(function)f +(only)f(to)i(cop)o(y)f(an)g(instance)164 1457 y(b)q(elonging)j(to)g +(one)g(no)q(de)g(to)g(a)g(lik)o(e-named)d(instance)j(b)q(elonging)g(to) +g(the)f(no)q(de's)h(par-)164 1517 y(en)o(t)g(or)i(c)o(hild.)k(Large)c +(attribute)f(grammars)f(tend)g(to)i(ha)o(v)o(e)e(man)o(y)g(suc)o(h)h +(de\014nitions,)164 1578 y(whic)o(h)i(are)g(sometimes)e(called)h +Fh(c)n(opy)i(rules)t Fn(.)32 b(The)20 b(situation)f(is)h(conspicuous)g +(when)164 1638 y(con)o(textual)12 b(information)f(is)i(mo)o(v)o(ed)d +(leafw)o(ard)i(via)h(inherited)e(attributes.)20 b(Ox)12 +b(syn)o(tax)164 1698 y(pro)o(vides)k(w)o(a)o(ys)g(of)h(sp)q(ecifying)e +(that)i(a)g(cop)o(y)f(rule)f(is)i(global)f(to)h(the)f(attribute)g +(gram-)164 1758 y(mar,)f(ob)o(viating)h(rep)q(etition)f(of)i(attribute) +f(de\014nitions)g(in)g(man)o(y)f(grammar)f(rules.)164 +1903 y Fd(9.3)70 b(Using)22 b(Ox)h(with)f(scanners)h(not)g(based)g(on)h +(Lex)164 1995 y Fn(By)15 b(default,)g(Ox)h(pro)o(vides)f(prepro)q +(cessing)h(for)g(Lex)g(\014les)f(augmen)o(ted)f(with)i(Ox)f(con-)164 +2055 y(structs.)21 b(By)13 b(using)i(a)g(command)d(line)h(option,)i(Ox) +f(can)g(b)q(e)g(informed)f(that)i(the)f(L-\014le)164 +2115 y(con)o(tains)23 b(Ox-augmen)o(ted)e(C)i(co)q(de)g(rather)g(than)g +(the)g(usual)g(Ox-augmen)o(ted)e(Lex)164 2176 y(co)q(de.)164 +2320 y Fd(9.4)70 b(Use)22 b(of)h(m)n(ultiple)c(scanners)164 +2412 y Fn(Some)e(translators)i(con)o(tain)f(sev)o(eral)f(scanners.)28 +b(Suc)o(h)18 b(a)g(translator)h(is)f(designed)g(so)164 +2473 y(that)i(at)g(an)o(y)f(momen)o(t,)e(it)i(is)g(using)h(one)f +(scanner)h(or)g(another,)g(and)g(switc)o(hes)f(to)h(a)949 +2599 y(17)p eop +%%Page: 18 18 +18 17 bop 164 307 a Fn(di\013eren)o(t)16 b(one)h(when)g(there)f(is)g(a) +h(c)o(hange)g(in)f(con)o(text.)22 b(An)16 b(Ox)h(translator)h(that)f +(uses)164 367 y(more)g(than)i(one)f(scanner)h(can)f(b)q(e)h +(constructed)f(b)o(y)g(submitting)f(to)h(Ox)g(more)f(than)164 +428 y(one)f(L-\014le.)164 572 y Fd(9.5)70 b(Stripping)22 +b(Ox)h(constructs)164 664 y Fn(Occasionally)l(,)11 b(the)h(Ox)f(user)h +(ma)o(y)e(desire)h(copies)h(of)g(the)f(Y-\014le)g(and)i(L-\014le\(s\))f +(stripp)q(ed)164 725 y(of)17 b(Ox-sp)q(eci\014c)f(constructs.)23 +b(By)17 b(a)g(command-line)d(option,)j(the)f(Ox)h(user)g(can)g +(\014lter)164 785 y(all)f(Ox-sp)q(eci\014c)f(constructs)h(from)f(the)h +(inputs,)g(to)h(obtain)f(\014les)g(acceptable)f(to)i(Y)l(acc)164 +845 y(and)i(Lex.)28 b(The)18 b(original)h(copies)f(of)h(the)f(Y-\014le) +g(and)h(L-\014le\(s\))f(are)h(unc)o(hanged,)g(but)164 +905 y(Ox's)d(outputs)i(on)g Fg(oxout*.*)c Fn(con)o(tain)j(neither)f(Ox) +h(constructs)g(nor)h(the)f(usual)g(Ox-)164 965 y(generated)f +(parse-tree-managemen)o(t)e(co)q(de.)164 1110 y Fd(9.6)70 +b(Accessing)21 b(Y)-6 b(acc)23 b(pseudo)n(v)l(ariables)164 +1202 y Fn(A)o(ttribute)17 b(de\014nitions)g(that)i(refer)e(to)i(the)e +(Y)l(acc)h(pseudo)o(v)m(ariables)g Fg($$)p Fn(,)f Fg($1)p +Fn(,)h Fg($2)p Fn(,)f(etc.)164 1262 y(are)f(p)q(ermitted)f(in)g(v)m +(arious)i(forms,)e(including:)237 1383 y Fg(@i)25 b(@)p +Fh(gr)n(ammarsymb)n(ol)p Fg(.)p Fn([)p Fh(inte)n(ger)p +Fg(.)p Fn(])p Fh(attributename)p Fg(@)15 b(=)25 b($)p +Fa(n)p Fn(;)164 1503 y(where)14 b Fg($)p Fa(n)g Fn(denotes)h(a)g(Y)l +(acc)f(pseudo)o(v)m(ariable.)20 b(It)14 b(is)h(also)g(p)q(ossible)f(to) +h(cop)o(y)f(attribute)164 1563 y(instances)i(in)o(to)g(pseudo)o(v)m +(ariables.)164 1708 y Fd(9.7)70 b(Expressing)23 b(dep)r(endencies)d +(explicitl)o(y)164 1800 y Fn(Supp)q(ose)13 b(that)g(y)o(ou)f(ha)o(v)o +(e)f(a)i(C)f(function)g Fg(fun)f Fn(in)h(a)h(library)l(,)f(and)g(that)h +(y)o(ou)f(w)o(an)o(t)g(to)h(use)164 1860 y(it)k(to)h(de\014ne)f(an)g +(attribute)g(o)q(ccurrence,)g(sa)o(y)g Fg(sym.attrb)p +Fn(,)d(in)j(terms)f(of)i(some)e(other)164 1920 y(o)q(ccurrence)23 +b Fg(othersym.o)o(the)o(rA)o(ttr)o(b)p Fn(.)40 b(F)l(urther)24 +b(supp)q(ose)h(that)f(the)f(\014rst)h(formal)164 1981 +y(parameter)c(of)h Fg(fun)g Fn(is)g(of)g(the)g(same)f(t)o(yp)q(e)h(as)h +Fg(othersym.)o(oth)o(erA)o(tt)o(rb)p Fn(,)d(and)i(that)164 +2041 y Fg(fun)p Fn('s)14 b(second)h(formal)f(parameter)f(is)i(a)h(p)q +(oin)o(ter)e(to)i(something)e(of)h(the)g(same)f(t)o(yp)q(e)g(as)164 +2101 y Fg(sym.attrb)p Fn(.)21 b(A)16 b(call)h(to)g Fg(fun)f +Fn(c)o(hanges)i(the)f(con)o(ten)o(ts)f(of)i(the)f(lo)q(cation)g +(indicated)f(b)o(y)164 2161 y(its)g(second)g(argumen)o(t.)237 +2221 y(It)g(w)o(ouldn't)g(w)o(ork)g(to)h(write:)292 2323 +y Fg(@i)25 b(fun\(@other)o(Sym)o(.ot)o(he)o(rAt)o(trb)o(@,)d +(&@sym.attr)o(b@\))o(;)949 2599 y Fn(18)p eop +%%Page: 19 19 +19 18 bop 164 307 a Fn(since)19 b(the)g(mo)q(de)f(ann)o(uciator)i +Fg(@i)e Fn(\(see)h(section)g(4.1\))h(implies)d(that)j(the)f(o)q +(ccurrence)164 367 y(app)q(earing)c(\014rst)g(\()p Fg(otherSym.)o(oth)o +(er)o(Att)o(rb)p Fn(\))c(is)j(the)g(o)q(ccurrence)f(b)q(eing)h +(de\014ned,)g(and)164 428 y(that)j(it)e(dep)q(ends)i(on)g +Fg(sym.attrb)o Fn(.)i(Actually)14 b(y)o(ou)j(in)o(tend)e(the)h(opp)q +(osite.)237 488 y(One)c(solution)h(w)o(ould)g(b)q(e)g(to)g(mo)q(dify)e +(the)h(de\014nition)g(of)h Fg(fun)f Fn(\(rev)o(ersing)f(the)i(order)164 +548 y(of)e(its)g(formal)f(parameter)g(list\).)19 b(If)11 +b(y)o(ou)g(don't)g(w)o(an)o(t)g(to)h(disturb)f(the)g(library)l(,)g(ho)o +(w)o(ev)o(er,)164 608 y(it)16 b(w)o(ould)g(b)q(e)g(b)q(est)h(to)g(use)f +(Ox's)g Fh(explicit)j(mo)n(de)e(annunciator)23 b Fg(@e)15 +b Fn(as)i(follo)o(ws:)292 710 y Fg(@e)25 b(sym.attrb)d(:)k(otherSym.)o +(oth)o(er)o(Att)o(rb)c(;)369 770 y(fun\(@other)o(Sym)o(.ot)o(he)o(rAt)o +(trb)o(@,)g(&@sym.attr)o(b@\))o(;)164 872 y Fn(In)c(the)g(\014rst)g +(line)f(ab)q(o)o(v)o(e,)h(Ox)g(is)g(explicitly)d(giv)o(en)i(dep)q +(endency)g(information)h(using)164 932 y(a)f(Mak)o(e-lik)o(e)c(syn)o +(tax:)21 b(it)16 b(is)g(declared)g(that)g Fg(sym.attrb)d +Fn(dep)q(ends)k(on)164 992 y Fg(otherSym.o)o(the)o(rA)o(ttr)o(b)p +Fn(.)38 b(Use)22 b(of)h(the)g(explicit)d(mo)q(de)i(mak)o(es)g(the)g +(order)h(of)g(the)164 1052 y(o)q(ccurrences)16 b(in)f(the)h(second)h +(line's)d(call)i(to)g Fg(fun)f Fn(irrelev)m(an)o(t)g(to)i(Ox's)e +(understanding)164 1112 y(of)i(the)f(dep)q(endencies.)164 +1257 y Fd(9.8)70 b(Generating)22 b(ANSI/ISO/C++)i(output)164 +1349 y Fn(By)15 b(default,)g(the)h(C)g(co)q(de)g(generated)f(b)o(y)h +(Ox)f(follo)o(ws)h(traditional)f(C)h(syn)o(tax.)21 b(There)164 +1409 y(is,)16 b(ho)o(w)o(ev)o(er,)e(a)j(command-line)c(option)k(to)f +(pro)q(duce)h(co)q(de)f(compatible)f(with)164 1470 y(ANSI/ISO/C++)g +(syn)o(tax.)21 b(Th)o(us)c(it)e(is)h(easy)h(to)f(mak)o(e)e(Ox's)i(co)q +(de)g(generation)g(con-)164 1530 y(form)f(to)i(the)f(exp)q(ectations)g +(of)g(practically)f(an)o(y)h(C)h(or)f(C++)h(compiler.)164 +1696 y Fo(10)83 b(Ac)n(kno)n(wledgemen)n(ts)164 1806 +y Fn(This)19 b(is)f(to)h(thank)f(T)l(erry)g(Dineen,)g(Carolyn)h(Gib)q +(erson,)h(Markus)e(Klingsp)q(or,)h(John)164 1866 y(Levine,)14 +b(Carla)i(Marceau,)f(and)g(Mic)o(hael)f(Seager)h(for)g(their)g(helpful) +f(reviews)g(of)i(early)164 1926 y(v)o(ersions)g(of)g(this)g(pap)q(er.) +949 2599 y(19)p eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF -- 2.25.1