%!PS-Adobe-2.0 %%Creator: dvips 5.58 Copyright 1986, 1994 Radical Eye Software %%Title: manual.dvi %%CreationDate: Tue May 14 15:22:07 1996 %%Pages: 38 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%EndComments %DVIPSCommandLine: _dvips -o manual.ps manual.dvi %DVIPSParameters: dpi=300, comments removed %DVIPSSource: TeX output 1996.05.14:1521 %%BeginProcSet: tex.pro /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} forall round exch round exch]setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]} if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict /eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ 4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet TeXDict begin 40258431 52099146 1000 300 300 (/home/lhf/w/lua/distr/lua/doc/manual.dvi) @start /Fa 7 115 df<000FE0007FFC01FFFE03F03E07C00E0F80041F00001F00003E00003E00007C 00007C00007C0000F80000F80000F80000F80000F80000F80000F80000F800007C00007C 00007C00003E00003E00001F00001F00010F800307C00703F01F01FFFE007FF8000FE018 227EA01D>67 D<001FF0007FFC01FFFF03F03F07C00F0F80021F00001F00003E00003C00 007C00007C0000780000F80000F80000F80000F80000F80000F80000F801FFF801FF7801 FF7C000F7C000F3C000F3E000F1F000F1F000F0F800F07C00F03F01F01FFFF007FFC001F E018227EA01E>71 D84 D<07E03FF87FFC783E601F400F000F000F01FF0FFF3FFF7F0FF80FF00FF00FF00FF83F7F FF3FFF1F8F10147E9316>97 D<03F0000FFC001FFE003E1F007C0700780700700380FFFF 80FFFF80FFFF80F00000F00000F000007000007800003C00803E07801FFF8007FF0001F8 0011147F9314>101 D<007E01FE03FE078207000F000F000F000F000F000F000F00FFF0 FFF0FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00 0F000F20809F0E>I114 D E /Fb 7 121 df<07F8001FFE003FFF803E07C03E03C01C01E00001E0003FE003FFE00FFFE03FC1E07C 01E07801E0F001E0F001E0F001E07803E07C07E03FFFFE1FFEFE03F87E17157E941A>97 D<01F80007FF000FFF801F07C03C03C07801E07801E0F000F0F000F0FFFFF0FFFFF0FFFF F0F000007000007800007C00F03E00F01F03F00FFFE003FFC000FE0014157D941A>101 D<7F0F8000FF7FE0007FFFF0000FF0F0000FC078000F8078000F0078000F0078000F0078 000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078 007FE1FF00FFF3FF807FE1FF00191580941A>110 D<7FC1F8FFC7FC7FDFFE03FE1E03F8 0C03F00003E00003E00003C00003C00003C00003C00003C00003C00003C00003C00003C0 0003C0007FFF80FFFF807FFF8017157F941A>114 D<01C00003C00003C00003C00003C0 0003C00003C0007FFFE0FFFFE0FFFFE003C00003C00003C00003C00003C00003C00003C0 0003C00003C00003C00003C0F003C0F003C0F003C0F001E1E001FFE000FF80003F00141C 7F9B1A>116 D<7FC7FCFFC7FE7FC7FC0F01E00F01E00F01E00F83E00783C00783C00783 C003C78003C78003C78001C70001EF0001EF0001EF0000FE0000FE0000FE00007C001715 7F941A>118 D<7FC7F87FCFFC7FC7F80787C007C78003EF8001FF0000FE0000FC00007C 00007C00007C0000FE0001EF0003EF0003C7800783C00F83E07FC7FCFFC7FE7FC7FC1715 7F941A>120 D E /Fc 1 122 df<1E0180370380670380670380C707000E07000E07000E 07001C0E001C0E001C0E000C1E000E3C0003DC00001C0038380078380078700030C0001F 00001114808D11>121 D E /Fd 3 121 df<70F8F8F878181818183030606040050E7C84 0D>59 D<0E07E0001F8FF00033F8780063F0380063E03C0063C03C00C780780007807800 07807800078078000F00F0000F00F0000F00F0000F01E1801E01E3001E03C3001E03C600 1E01CE003C01FC001800F00019147F931B>110 D<07C3C00FE7E0187C603078F06079F0 6079F0C0F1E000F1C000F00000F00001E00001E00039E00079E030FBC060FBC060F3C0C0 E7E3807CFF00383C0014147E931A>120 D E /Fe 51 121 df<0007F800007FFE0001FC 0F0003F01F0007E03F800FC03F800FC03F800FC03F800FC01F000FC004000FC000000FC0 00000FC00000FFFFFF80FFFFFF80FFFFFF800FC01F800FC01F800FC01F800FC01F800FC0 1F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC0 1F800FC01F800FC01F807FF8FFF07FF8FFF07FF8FFF01C237FA21F>12 D<3C7EFFFFFFFF7E3C08087C8710>46 D<0000180000380000380000700000700000E000 00E00000E00001C00001C0000380000380000380000700000700000700000E00000E0000 1C00001C00001C0000380000380000700000700000700000E00000E00001C00001C00001 C0000380000380000700000700000700000E00000E00000E00001C00001C000038000038 0000380000700000700000E00000E00000C0000015317DA41C>I<00FE0007FFC00F83E0 1F01F03E00F83E00F87C007C7C007C7C007CFC007CFC007EFC007EFC007EFC007EFC007E FC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C7C007C3E00F8 3E00F81F01F00F83E007FFC000FE0017207E9F1C>I<00180000780003F800FFF800FFF8 00FDF80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8 0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8 007FFFE07FFFE07FFFE013207C9F1C>I<03FC000FFF003FFFC0783FE07C0FF0FE07F0FE 03F8FE03F8FE03F87C03F83803F80003F80003F00007F00007E0000FC0001F80001F0000 3C0000780000F00001E03803C0380700380600380C00781FFFF03FFFF07FFFF0FFFFF0FF FFF0FFFFF015207D9F1C>I<01FE0007FF800FFFE01E07F03F03F03F03F83F83F83F03F8 1F03F80C03F80003F00007E00007C0001F8001FE0001FF000007E00003F00001F80001FC 0001FE0001FE7C01FE7C01FEFE01FEFE01FCFE01FC7C03F87C07F03FFFE00FFFC003FE00 17207E9F1C>I<0000E00001E00003E00007E0000FE0000FE0001FE0003FE00077E000E7 E000E7E001C7E00387E00707E00E07E00E07E01C07E03807E07007E0E007E0FFFFFFFFFF FFFFFFFF0007E00007E00007E00007E00007E00007E000FFFF00FFFF00FFFF18207E9F1C >I<2000603C01E03FFFC03FFFC03FFF803FFE003FFC003FF00038000038000038000038 000039FC003FFF003E0FC03807E03003F00003F00003F00003F80003F83803F87C03F8FC 03F8FC03F8FC03F0F803F07007E03C0FC03FFF800FFF0003F80015207D9F1C>I<001F80 00FFE003FFF007F0F00FC1F81F81F83F01F83F01F87E00F07E00007E0000FE0800FE7FC0 FEFFE0FF81F0FF00F8FF00FCFF00FCFE00FEFE00FEFE00FEFE00FE7E00FE7E00FE7E00FE 3E00FC3E00FC1F00F80F83F007FFE003FFC000FF0017207E9F1C>I<7000007C00007FFF FE7FFFFE7FFFFE7FFFFC7FFFF87FFFF0F00070E000E0E001C0E00380E00700000E00000E 00001C00003C0000380000780000780000F80000F00001F00001F00001F00001F00003F0 0003F00003F00003F00003F00003F00003F00001E00017227DA11C>I<00FE0003FFC007 FFE00F83F01E01F01E00F83E00F83E00F83F00F83F80F83FE1F01FF9E01FFFC00FFF8007 FFC003FFE00FFFF01F7FF83E1FFC7C07FC7C01FEF800FEF8007EF8003EF8003EF8003E7C 003C7E00783F01F81FFFF00FFFC001FF0017207E9F1C>I<00FE0007FF800FFFE01F83F0 3F01F07E00F87E00F8FE00FCFE00FCFE00FCFE00FEFE00FEFE00FEFE00FE7E01FE7E01FE 3E01FE1F03FE0FFEFE07FCFE0020FE0000FC0000FC1E00FC3F01F83F01F83F01F03F03E0 1E0FC01FFF800FFE0003F80017207E9F1C>I<00007000000000F800000000F800000000 F800000001FC00000001FC00000003FE00000003FE00000003FE000000077F000000077F 0000000F7F8000000E3F8000000E3F8000001C1FC000001C1FC000003C1FE00000380FE0 0000380FE00000700FF000007007F00000F007F80000FFFFF80000FFFFF80001FFFFFC00 01C001FC0001C001FC00038000FE00038000FE00078000FF000700007F00FFF007FFF8FF F007FFF8FFF007FFF825227EA12A>65 D<0003FE0180001FFF838000FFFFE78001FF00FF 8003F8003F8007F0001F800FE0000F801FC0000F803F800007803F800007807F80000380 7F000003807F00000380FF00000000FF00000000FF00000000FF00000000FF00000000FF 00000000FF00000000FF000000007F000000007F000003807F800003803F800003803F80 0007801FC00007000FE0000F0007F0001E0003F8003C0001FF00F80000FFFFF000001FFF C0000003FE000021227DA128>67 DIII72 DI76 DI<0007FC0000003FFF800000FE0FE00003F803F80007E000FC000FC0007E001FC0 007F001F80003F003F80003F803F80003F807F00001FC07F00001FC07F00001FC0FF0000 1FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001F E0FF00001FE07F00001FC07F80003FC07F80003FC03F80003F803FC0007F801FC0007F00 0FE000FE0007F001FC0003F803F80000FE0FE000003FFF80000007FC000023227DA12A> 79 DI82 D<01FE0607FF8E1FFFFE3F01FE7C007E78003E78001EF8001EF8000EF8000EFC0000FF00 00FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FE00007F00003F0000 1FE0001FE0001FE0001FF0001EF0003EFC003CFF00FCFFFFF8E7FFE0C0FF8018227DA11F >I<7FFFFFFF807FFFFFFF807FFFFFFF807E03F81F807C03F807807803F807807003F803 80F003F803C0F003F803C0E003F801C0E003F801C0E003F801C0E003F801C00003F80000 0003F800000003F800000003F800000003F800000003F800000003F800000003F8000000 03F800000003F800000003F800000003F800000003F800000003F800000003F800000003 F800000003F800000003F8000001FFFFF00001FFFFF00001FFFFF00022227EA127>I86 D<0FFE003FFF807E07E07E03F07E01F07E01F83C01F80001F80001F800FFF807FFF81FE1 F83F01F87E01F8FC01F8FC01F8FC01F8FC01F87E03F87E0EFF1FFCFF07F03F18167E951B >97 DI<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000 FC0000FC0000FC0000FC00007C00007E00007E00003E00381F00700FC0F007FFC000FF00 15167E9519>I<0001FF000001FF000001FF0000003F0000003F0000003F0000003F0000 003F0000003F0000003F0000003F0000003F0000003F0001FE3F0007FFBF000F81FF001F 007F003E003F007E003F007C003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC 003F00FC003F00FC003F007C003F007C003F003E003F001F00FF000F83FFE007FFBFE001 FC3FE01B237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00 F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00381F00700FC0F003FF C000FF0015167E951A>I<001F8000FFE001F1F003E3F007E3F00FC3F00FC1E00FC0000F C0000FC0000FC0000FC0000FC000FFFE00FFFE00FFFE000FC0000FC0000FC0000FC0000F C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0007F FC007FFC007FFC00142380A211>I<01FE1F0007FFFF800F87E7801F03E7801E01E7003E 01F0003E01F0003E01F0003E01F0003E01F0001E01E0001F03E0000F87C0000FFF800019 FE0000180000001C0000001C0000001FFFE0001FFFF8000FFFFE000FFFFF003FFFFF007C 003F80F8001F80F8000F80F8000F80F8000F807C001F007E003F001F80FC000FFFF80001 FFC00019217F951C>II<1E003F007F807F807F807F803F001E0000000000000000 0000000000FF80FF80FF801F801F801F801F801F801F801F801F801F801F801F801F801F 801F801F801F80FFF0FFF0FFF00C247FA30F>I<003C007E00FF00FF00FF00FF007E003C 00000000000000000000000003FF03FF03FF003F003F003F003F003F003F003F003F003F 003F003F003F003F003F003F003F003F003F003F003F003F003F783FFC3FFC3EFC7E78FC 7FF01FC0102E83A311>IIII I<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC00 7EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE0017167E951C >II114 D<07F3001FFF00781F00700F00F00700F00700F80000FF0000FFF0007FFC003FFE001FFF 0007FF00003F80E00F80E00780F00780F00780F80700FC1E00FFFC00C7F00011167E9516 >I<01C00001C00001C00001C00003C00003C00003C00007C00007C0000FC0003FFF00FF FF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F C3800FC3800FC3800FC3800FC3800FC30007E70003FE0000FC0011207F9F16>IIIII E /Ff 1 98 df<03CC0E2E183C381C301C701CE038E038E038E038C073C073C0F3 60F263361E1C10107C8F14>97 D E /Fg 2 104 df<003C00E001C00380038003800380 03800380038003800380038003800380038007001E00F8001E0007000380038003800380 03800380038003800380038003800380038001C000E0003C0E257E9B13>102 DI E /Fh 30 122 df<00FC000383000603800E07801C07801C0300 1C00001C00001C00001C0000FFFF80FFFF801C03801C03801C03801C03801C03801C0380 1C03801C03801C03801C03801C03801C0380FF8FF0FF8FF0141A809915>12 D<70F8FCFC7404040808102040060C7D990B>39 D<70F0F8F87808081010102040050C7D 840B>44 D<70F8F8F87005057D840B>46 D<07E01C38381C381C700E700E700EF00FF00F F00FF00FF00FF00FF00FF00FF00FF00F700E700E700E381C381C1C3807E010187F9713> 48 D<07E01FF8383C781C781E781E301E001E001C0038007007E00038001C000E000F00 0F700FF80FF80EF01E703C3FF80FE010187F9713>51 D<70F8F8F87000000000000070F0 F8F8780808101010204005177D8F0B>59 D<000C0000001E0000001E0000001E0000003F 0000003F0000003F000000678000006780000067800000C3C00000C3C00000C3C0000181 E0000181E0000181E0000300F00003FFF00007FFF80006007800060078000E007C000C00 3C001E003C00FF81FFC0FF81FFC01A1A7F991D>65 D<07C21FF6383E701E600EE006E006 E006F000F8007F803FF01FF80FFC01FE001E000F0007C007C007C007E006F00EFC1CDFF8 87E0101A7E9915>83 D91 D93 D<1FC000707000783800781C00301C00001C0003FC001F1C003C1C00781C00F01C00F01D 80F01D80F03D80785D801F8F0011107F8F13>97 DI<07F0 1C1C383C783C7018F000F000F000F000F000F0007000780C380C1C3807E00E107F8F11> I<003F00003F0000070000070000070000070000070000070000070000070003E7000C1F 00180F00380700700700F00700F00700F00700F00700F00700F00700700700780700380F 001C3FE007E7E0131A7F9915>I<07C01C7038387038701CF01CFFFCF000F000F000F000 7000780C38081C3807E00E107F8F11>I<01F007180E3C0C3C1C181C001C001C001C001C 00FFC0FFC01C001C001C001C001C001C001C001C001C001C001C001C00FF80FF800E1A80 990C>I<0FC700387B80703B80F03C00F03C00F03C00F03C007038003870006FC0004000 004000006000007FF0003FFC003FFE00600F00C00300C00300C00300C00300600600381C 0007E00011187F8F13>I<387C7C7C380000000000FCFC1C1C1C1C1C1C1C1C1C1C1C1CFF FF081A80990A>105 D108 DI< FC7C00FD87001E03801E03801C03801C03801C03801C03801C03801C03801C03801C0380 1C03801C0380FF9FF0FF9FF01410808F15>I<07E01C38381C700E700EF00FF00FF00FF0 0FF00FF00F700E700E381C1C3807E010107F8F13>II114 D<1F2060E04060C060C060F0007F003FC01FE000F0C070C030E030E020F0408F800C107F 8F0F>I<18001800180018001800180038007FC0FFC03800380038003800380038003800 386038603860386038601CC007800B177F960F>III121 D E /Fi 3 51 df<00C00000C00000C00000C00000C00000C00000C00000C00000C000FF FF80FFFF8000C00000C00000C00000C00000C00000C00000C00000C00000C00011147E8F 17>43 D<0C007C009C001C001C001C001C001C001C001C001C001C001C001C001C00FF80 09107E8F0F>49 D<1F006180C0C0E0E0E0E000E000C001C0018003000400082010203FC0 7FC0FFC00B107F8F0F>I E /Fj 5 107 df<03F0000FFC001FFE003FFF007FFF807FFF80 FFFFC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC07FFF807FFF803FFF001FFE000FFC0003F000 12127E9317>15 D<00000006000000000600000000060000000003000000000300000000 0380000000018000000000C0000000006000000000700000000018FFFFFFFFFFFFFFFFFF FF00000000180000000070000000006000000000C0000000018000000003800000000300 000000030000000006000000000600000000060028187E962D>33 D<001F007F00F801E003C003C003C003C003C003C003C003C003C003C003C003C003C003 C003C007800F00FE00F800FE000F00078003C003C003C003C003C003C003C003C003C003 C003C003C003C003C003C001E000F8007F001F102D7DA117>102 DI106 D E /Fk 2 51 df<06001E00FE00EE000E000E000E000E000E000E000E 000E000E000E000E000E000E000E000E00FFE0FFE00B157D9412>49 D<1F803FE070F0F870F878F838703800780070007000E001C00180030006000C18101820 387FF0FFF0FFF00D157E9412>I E /Fl 52 122 df<000FF000007FF80001F81C0003E0 3E0007E07E000FC07E000FC07E000FC07E000FC03C000FC000000FC000000FC1FF00FFFF FF00FFFFFF00FFFFFF000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC0 3F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F007FF9FFE07FF9 FFE07FF9FFE01B20809F1D>12 D<3C03C07E07E0FF0FF0FF8FF8FF8FF8FF8FF87F87F83D 83D80180180380380300300300300600600E00E01C01C038038030030015117E9F1B>34 D<3C007E00FF00FF80FF80FF807F803D80018003800300030006000E001C003800300009 117D9F0F>39 D<3C7EFFFFFFFF7E3C08087D870F>46 D<00380000F80007F800FFF800FF F800F9F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001 F80001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFE07FFFE07F FFE0131D7D9C1A>49 D<03FC001FFF803FFFC07C1FE0FE07F0FE03F0FE03F8FE01F87C01 F83801F80003F80003F00007E00007E0000FC0001F00003E00007C0000F00001E0380380 380700380E00781FFFF83FFFF07FFFF0FFFFF0FFFFF0FFFFF0151D7E9C1A>I<03FC000F FF801FFFC03C0FE07E07F07E03F07E03F07E03F03C07F00007E0000FC0001F8003FE0003 FC00000F800007E00003F00003F00003F83803F87C03F8FE03F8FE03F8FE03F0FC07F07C 0FE03FFFC01FFF0003FC00151D7E9C1A>I<0001E00003E00003E00007E0000FE0001FE0 003BE00073E000F3E001E3E001C3E00383E00703E00E03E01C03E03803E07803E0F003E0 FFFFFEFFFFFEFFFFFE0007E00007E00007E00007E00007E000FFFE00FFFE00FFFE171D7F 9C1A>I<3800E03FFFE03FFFC03FFF803FFF003FFC003FC0003800003800003800003800 0039FC003FFF803E07C03803E01003F00003F00003F80003F87803F8FC03F8FC03F8FC03 F8FC03F07807E07C0FE03FFFC00FFF0003F800151D7E9C1A>I<003F0001FFC007FFE00F C1E01F03F01E03F03E03F07E03F07C01E07C0000FC1000FCFF00FDFFC0FF03E0FE01F0FE 01F0FC01F8FC01F8FC01F8FC01F87C01F87C01F87C01F83C01F03E01F01F03E00FFFC007 FF8001FC00151D7E9C1A>I<7000007FFFF87FFFF87FFFF87FFFF07FFFE0FFFFC0F00380 E00700E00E00E00E00001C0000380000780000700000F00000F00001F00001E00003E000 03E00003E00007E00007E00007E00007E00007E00007E00003C000018000151E7D9D1A> I<01FE0007FF801FFFC03E07E03C03F07C01F07C01F07E01F07F81F07FE3E03FF3C03FFF 801FFF000FFF8007FFC01FFFE03E7FF07C1FF87807F8F803F8F801F8F800F8F800F8F800 F07C01F07F03E03FFFC00FFF8003FC00151D7E9C1A>I<0000E000000001F000000001F0 00000003F800000003F800000003F800000007FC00000007FC0000000FFE0000000EFE00 00000EFE0000001C7F0000001C7F0000003C7F800000383F800000383F800000701FC000 00701FC00000F01FE00000E00FE00000FFFFE00001FFFFF00001FFFFF00003C007F80003 8003F800038003F800070001FC00070001FC00FFF01FFFE0FFF01FFFE0FFF01FFFE0231F 7E9E28>65 DI<0007F806007FFF 0E01FFFFDE03FE03FE07F000FE0FC0007E1F80003E3F80001E3F00001E7F00000E7E0000 0E7E00000EFE000000FE000000FE000000FE000000FE000000FE000000FE0000007E0000 007E00000E7F00000E3F00000E3F80001C1F80001C0FC0003807F0007803FE03F001FFFF C0007FFF800007FC001F1F7D9E26>IIII73 D76 D<001FF80000FFFF0001F81F 8007E007E00FC003F01F8001F81F0000F83F0000FC7F0000FE7E00007E7E00007EFE0000 7FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007F7E0000 7E7F0000FE7F0000FE3F0000FC3F8001FC1F8001F80FC003F007E007E001F81F8000FFFF 00001FF800201F7D9E27>79 DI< 001FF80000FFFF0001F81F8007E007E00FC003F01F8001F81F8001F83F0000FC7F0000FE 7F0000FE7E00007EFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007F FE00007FFE00007F7E00007E7E00007E7F0000FE3F0000FC3F87C1FC1F8FE1F80FD833F0 07F81FE001F81F8000FFFF00001FFE0300000E0300000F0700000FFF000007FF000007FE 000007FE000003FC000001F8000000F020287D9E27>II<03FC180FFF381FFFF83E03F87C00F8780078F80078F80038F80038FC0000FF 0000FFF8007FFF007FFFC03FFFE01FFFF00FFFF803FFF8001FFC0001FC0000FC00007CE0 007CE0007CE0007CF00078F800F8FE01F0FFFFE0EFFFC0C1FF00161F7D9E1D>I<7FFFFF FC7FFFFFFC7FFFFFFC7E0FE0FC780FE03C700FE01CF00FE01EF00FE01EE00FE00EE00FE0 0EE00FE00EE00FE00E000FE000000FE000000FE000000FE000000FE000000FE000000FE0 00000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00007FFFF C007FFFFC007FFFFC01F1E7E9D24>I86 D<0600600E00E01C01C0380380300300600600600600E00E00C00C00DE0DE0FF0FF0FF8F F8FF8FF8FF8FF87F87F83F03F01E01E015117D9F1B>92 D<07FC001FFF803F0FC03F07E0 3F03F03F03F00C03F00003F001FFF00FFFF01F83F07E03F07C03F0F803F0F803F0F803F0 FC07F07E0DFE3FF8FE07E07E17147F9319>97 DI<01FE0007FF801F0FC03E0FC03E0FC07C0FC07C0300FC0000FC 0000FC0000FC0000FC0000FC00007C00007E00003E00E03F01C01F83C007FF8001FC0013 147E9317>I<0007FC000007FC000007FC000000FC000000FC000000FC000000FC000000 FC000000FC000000FC000000FC000000FC0001FCFC000FFFFC001F83FC003E00FC007E00 FC007C00FC007C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC007C00 FC007C00FC007E00FC003E01FC001F07FF800FFFFF8003F8FF8019207E9F1D>I<01FE00 07FF800F83C01E01E03E00F07C00F07C00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC0000 7C00007C00003E00381E00380F80F007FFE000FF8015147F9318>I<003F8000FFC003F3 E007E7E007C7E00FC7E00FC3C00FC0000FC0000FC0000FC0000FC000FFFC00FFFC00FFFC 000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0 000FC0000FC0007FFC007FFC007FFC0013207F9F10>I<03FC7C0FFFFE1E07DE3C03DE7C 03EC7C03E07C03E07C03E07C03E03C03C01E07801FFF0033FC003000007000007800007F FF803FFFF03FFFF81FFFFC3FFFFC7C00FEF8003EF8003EF8003EF8003E7C007C3F01F80F FFE003FF80171E7F931A>II<1E003F007F807F807F807F803F001E0000000000000000000000FF80FF80FF801F 801F801F801F801F801F801F801F801F801F801F801F801F801F80FFF0FFF0FFF00C217E A00F>I107 DI< FF07F00FE000FF1FFC3FF800FF387E70FC001F603FC07E001FC03F807E001FC03F807E00 1F803F007E001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E00 1F803F007E001F803F007E001F803F007E001F803F007E001F803F007E00FFF1FFE3FFC0 FFF1FFE3FFC0FFF1FFE3FFC02A147E932D>II<01FF 0007FFC01F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC007EFC00 7E7C007C7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>II<01F81C0007FE3C001F87FC003F01FC003E00FC007E00FC007C00FC00 FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC007C00FC007E00FC007E00FC00 3F01FC001F87FC000FFEFC0003F8FC000000FC000000FC000000FC000000FC000000FC00 0000FC000007FF800007FF800007FF80191D7E931C>II<0FE63FFE783E700EF00EF00EFE00FFE07FF8 3FFC1FFE0FFF007FE01FE00FF00FF00EFC1EFFFCC7F010147E9315>I<03800380038003 800780078007800F801F803FFCFFFCFFFC1F801F801F801F801F801F801F801F801F801F 8E1F8E1F8E1F8E1F8E0F9C07F803F00F1D7F9C14>I IIIII E /Fm 86 127 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F87000 0000000070F8F8F870051C779B18>33 D<2008701CF83EF83EF83EF83EF83EF83E701C70 1C701C701C701C30180F0E7C9C18>I<030600078F00078F00078F00078F00078F00078F 007FFFC0FFFFE0FFFFE07FFFC00F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFF E0FFFFE07FFFC01E3C001E3C001E3C001E3C001E3C001E3C000C1800131C7E9B18>I<00 C00001C00001C00001C00003F0000FFC003FFE007DDF0071CF00E1C780E1CF80E1CF80E1 CF80F1C70079C0007FC0003FF0001FFC0007FE0001FF0001CF0021C78071C380F9C380F9 C380F1C380F1C70079C7007DDE003FFC001FF80007E00001C00001C00001C00000C00011 247D9F18>I<3803007C07807C0780EE0F80EE0F00EE0F00EE1F00EE1E00EE1E00EE3E00 7C3C007C3C00387C0000780000780000F80000F00001F00001E00001E00003E00003C000 03C00007C0000783800787C00F87C00F0EE00F0EE01F0EE01E0EE01E0EE03E0EE03C07C0 3C07C018038013247E9F18>I<01C00007E0000FF0000E70001C38001C38001C38001C38 001C73F81CF3F81CE3F80FC1C00FC3800F83800F03801F07003F87007B8E0071CE00F1FC 00F0FC00F07C00F07870F0787078FE707FFFE03FC7E00F03C0151C7F9B18>I<387C7C7E 3E0E0E0E1C1C38F8F0C0070E789B18>I<007000F001E003C007800F001E001E003C003C 007800780078007000F000F000F000F000F000F000F000F00070007800780078003C003C 001E001E000F00078003C001F000F000700C24799F18>I<6000F00078003C001E000F00 0780078003C003C001E001E001E000E000F000F000F000F000F000F000F000F000E001E0 01E001E003C003C0078007800F001E003C007800F00060000C247C9F18>I<01C00001C0 0001C00001C00061C300F9CF80FDDF807FFF003FFE000FF8000FF8003FFE007FFF00FDDF 80F9CF8061C30001C00001C00001C00001C00011147D9718>I<00600000F00000F00000 F00000F00000F00000F00000F0007FFFC0FFFFE0FFFFE07FFFC000F00000F00000F00000 F00000F00000F00000F00000600013147E9718>I<1C3E7E7F3F1F070E1E7CF860080C78 8518>I<7FFFC0FFFFE0FFFFE07FFFC013047E8F18>I<3078FCFC78300606778518>I<00 0300000780000780000F80000F00001F00001E00001E00003E00003C00007C0000780000 780000F80000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F 00001F00001E00003E00003C00003C00007C0000780000F80000F00000F0000060000011 247D9F18>I<01F00007FC000FFE001F1F001E0F003C07807803C07803C07803C0F001E0 F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F803E07803C07803C07C07C0 3C07801E0F001F1F000FFE0007FC0001F000131C7E9B18>I<01C001C003C007C007C01F C0FFC0FBC063C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003 C003C07FFEFFFF7FFE101C7C9B18>I<03F0001FFE003FFF007C0F807807C0F003C0F801 E0F801E07001E00001E00001E00003C00003C0000780000780000F00001E00003C0000F8 0001F00003E00007C0000F80001E01E03C01E07FFFE0FFFFE07FFFE0131C7E9B18>I<03 F8001FFE003FFF003C0F807C07C07C03C07C03C01003C0000380000780000F0003FE0003 FE0003FF00000F800007C00003C00001E00001E00001E07001E0F801E0F803C0F007C07C 0F807FFF001FFE0007F000131C7E9B18>I<001F00003F00007F0000770000F70001E700 01C70003C7000787000707000E07001E07003C0700380700780700F00700FFFFF8FFFFF8 FFFFF8000700000700000700000700000700000700007FF0007FF0007FF0151C7F9B18> I<3FFF807FFF807FFF807800007800007800007800007800007800007800007800007BF8 007FFE007FFF007C0F803003C00003C00001E00001E07001E0F801E0F801E0F803C07807 C07C0F803FFF001FFC0003F000131C7E9B18>I55 D<3078FCFC783000000000000000003078FCFC78300614779318>58 D<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78F060071A789318>I<0000 C00003E00007E0001FC0003F8000FE0001FC0007F0000FE0003F80007F0000FC0000FC00 007F00003F80000FE00007F00001FC0000FE00003F80001FC00007E00003E00000C01318 7E9918>I<7FFFC0FFFFE0FFFFE07FFFC00000000000000000000000007FFFC0FFFFE0FF FFE07FFFC0130C7E9318>I<600000F80000FC00007F00003F80000FE00007F00001FC00 00FE00003F80001FC00007E00007E0001FC0003F8000FE0001FC0007F0000FE0003F8000 7F0000FC0000F8000060000013187E9918>I<0FF0003FFC007FFF00781F00F80780F807 80F80780201F00007E0000FC0001F00001E00003C00003C00003C00003C00003C0000380 0000000000000000000000000000000003800007C00007C00007C000038000111C7D9B18 >I<007C0001FE0007FF000F87801E03C03C1DC0387FC070FFE071E3E071C1E0E1C1E0E3 80E0E380E0E380E0E380E0E380E0E380E0E1C1C071C1C071E3C070FF80387F003C1C001E 01E00F83E007FFC001FF80007E00131C7E9B18>I<00F80000F80000F80001FC0001DC00 01DC0001DC0003DE0003DE0003DE0003DE00038E00078F00078F00078F00078F00078F00 0F07800FFF800FFF800FFF800F07801E03C01E03C01E03C07F8FF0FF8FF87F8FF0151C7F 9B18>I<7FFE00FFFF007FFF801E07C01E03C01E01E01E01E01E01E01E01E01E01E01E03 C01E07C01FFF801FFF001FFFC01E03E01E01E01E00F01E00F01E00F01E00F01E00F01E00 F01E01E01E03E07FFFC0FFFF807FFE00141C7F9B18>I<00F8E003FFE007FFE00F07E01E 03E03C03E03C01E07801E07801E0700000F00000F00000F00000F00000F00000F00000F0 0000F000007000007801E07801E03C01E03C01E01E03C00F07C007FF8003FE0000F80013 1C7E9B18>I<7FFC00FFFF007FFF801E07C01E03E01E01E01E01F01E00F01E00F01E00F8 1E00781E00781E00781E00781E00781E00781E00781E00781E00781E00F01E00F01E01F0 1E01E01E03E01E07C07FFF80FFFF007FFC00151C809B18>III<01F1C007FFC00FFFC0 1F0FC01E07C03C03C03803C07803C07803C0700000F00000F00000F00000F00000F00000 F01FF0F03FF0F01FF07003C07803C07803C03807C03C07C01E0FC01F0FC00FFFC007FFC0 01F3C0141C7E9B18>I<7F8FF0FFDFF87F8FF01E03C01E03C01E03C01E03C01E03C01E03 C01E03C01E03C01E03C01FFFC01FFFC01FFFC01E03C01E03C01E03C01E03C01E03C01E03 C01E03C01E03C01E03C01E03C07F8FF0FFDFF87F8FF0151C7F9B18>I<7FFF80FFFFC07F FF8001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001 E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0007FFF80FF FFC07FFF80121C7D9B18>I<01FFE001FFE001FFE0000F00000F00000F00000F00000F00 000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00 000F00700F00F80F00F80F00F83E007FFC003FF8000FE000131C7E9B18>I76 DI<7E07 F0FF0FF87F07F01F81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61 C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0F C07F07C0FF87C07F03C0151C7F9B18>I<0FFE003FFF807FFFC07C07C07803C0F803E0F0 01E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F0 01E0F001E0F001E0F001E0F803E07803C07C07C07FFFC03FFF800FFE00131C7E9B18>I< FFFE00FFFF80FFFFC01E07C01E03E01E01E01E00F01E00F01E00F01E00F01E00F01E01E0 1E03E01E07C01FFFC01FFF801FFE001E00001E00001E00001E00001E00001E00001E0000 1E0000FFC000FFC000FFC000141C7F9B18>I<7FF800FFFE007FFF001E1F801E07801E07 C01E03C01E03C01E03C01E07C01E07801E1F801FFF001FFE001FFE001E0F001E0F001E07 801E07801E07801E07801E07801E07BC1E07BC1E07BC7F83F8FFC1F87F80F0161C7F9B18 >82 D<7FFFF8FFFFF8FFFFF8F07878F07878F07878F07878007800007800007800007800 007800007800007800007800007800007800007800007800007800007800007800007800 00780000780007FF8007FF8007FF80151C7F9B18>84 DIII<7F8FE07F9FE07F8FE00F0F800F8F00079F0007DE0003FE0003FC0001 FC0001F80000F80000F00000F00000F80001F80001FC0003FC0003DE00079E00078F0007 8F000F07800F07801E07C07F8FF0FF8FF87F8FF0151C7F9B18>I91 D<600000F00000F00000F800007800007C00003C00003C00003E00001E00001F00000F00 000F00000F800007800007C00003C00003C00003E00001E00001F00000F00000F8000078 00007800007C00003C00003E00001E00001E00001F00000F00000F800007800007800003 0011247D9F18>II<03800FE03FF8FFFEFC7EF01E40040F077C9B18>I<7F FFC0FFFFE0FFFFE07FFFC013047E7F18>I<061E3E387070E0E0E0F8FC7C7C38070E789E 18>I<0FF0003FFC007FFE007C1F007C0F0038078000078000FF8007FF801FFF807F8780 7C0780F00780F00780F00780F807807C1F803FFFF81FFBF807E1F815147E9318>I<7F00 00FF00007F00000F00000F00000F00000F00000F00000F3E000FFF800FFFE00FC1F00F80 F00F00780F00780F003C0F003C0F003C0F003C0F003C0F003C0F00780F80780F80F00FC1 F00FFFE00FFF80073E00161C809B18>I<01FC0007FF001FFF803E0F803C0F8078070078 0000F00000F00000F00000F00000F00000F000007800007803C03C03C03E07C01FFF8007 FF0001FC0012147D9318>I<001FC0003FC0001FC00003C00003C00003C00003C00003C0 01F3C007FFC01FFFC03E0FC03C07C07803C07803C0F003C0F003C0F003C0F003C0F003C0 F003C07803C07807C03C07C03E1FC01FFFF807FBFC01F3F8161C7F9B18>I<01F80007FE 000FFF001F0F803C03C07803C07801C0F001E0F001E0FFFFE0FFFFE0FFFFE0F000007800 007801E03C01E01F03E00FFFC007FF8000FE0013147E9318>I<001F80007FC000FFE000 F3E001E3E001E08001E00001E0007FFFC0FFFFC0FFFFC001E00001E00001E00001E00001 E00001E00001E00001E00001E00001E00001E00001E00001E00001E0007FFF807FFF807F FF80131C7F9B18>I<03F1E00FFFF01FFFF83E1F783C0F30780780780780780780780780 7807803C0F003E1F003FFE003FFC003BF0003800003800001FFE001FFFC03FFFE07801F0 700070E00038E00038E00038E000387800F07E03F01FFFC00FFF8001FC00151F7F9318> I<7F0000FF00007F00000F00000F00000F00000F00000F00000F1F000F7F800FFFC00FE1 C00FC1E00F81E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01 E00F01E07FE3FCFFF3FE7FE3FC171C809B18>I<01C00003E00003E00003E00001C00000 00000000000000000000007FE000FFE0007FE00001E00001E00001E00001E00001E00001 E00001E00001E00001E00001E00001E00001E00001E00001E000FFFF80FFFF80FFFF8011 1D7D9C18>I<001C003E003E003E001C00000000000000000FFE0FFE0FFE001E001E001E 001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E 701CF83CF878FFF87FF01FC00F277E9C18>I<7E0000FE00007E00000E00000E00000E00 000E00000E00000E3FF00E3FF00E3FF00E07800E0F000E1E000E3C000E78000EF0000FF8 000FFC000F9C000F0E000E0F000E07000E03800E03C07FC7F8FFC7F87FC7F8151C7F9B18 >III<7F1F00FF7F807FFFC00FE1C00FC1E00F81E00F01 E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E07FE3FCFFF3 FE7FE3FC1714809318>I<01F0000FFE001FFF003E0F803C07807803C07803C0F001E0F0 01E0F001E0F001E0F001E0F001E07803C07803C03C07803F1F801FFF000FFE0001F00013 147E9318>I<7F3E00FFFF807FFFE00FC1F00F80F00F00780F00780F003C0F003C0F003C 0F003C0F003C0F003C0F00780F80780F80F00FC1F00FFFE00FFF800F3E000F00000F0000 0F00000F00000F00000F00000F00007FE000FFF0007FE000161E809318>I<01F9E007FD E00FFFE01F0FE03C07E07803E07801E0F001E0F001E0F001E0F001E0F001E0F001E07801 E07803E03C07E03E0FE01FFFE007FDE001F1E00001E00001E00001E00001E00001E00001 E00001E0000FFC001FFE000FFC171E7F9318>II<07FF003FFF007FFF00700F00E00F00E00F00F00000 7E00007FF0001FFC0007FF00003F00700780F00380F00380F80380FC0F00FFFF00FFFC00 E7F00011147D9318>I<0380000780000780000780000780007FFFC0FFFFC0FFFFC00780 000780000780000780000780000780000780000780000780000780C00781E00781E00781 E003C3C003FFC001FF00007E0013197F9818>I<7F0FE0FF1FE07F0FE00F01E00F01E00F 01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F03E00F07E007 FFFC03FFFE01F9FC1714809318>I<7F8FF0FF8FF87F8FF01C01C00E03800E03800E0380 070700070700070700078F00038E00038E0003DE0001DC0001DC0001DC0000F80000F800 00700015147F9318>II<7F8FF07F9FF07F8FF00F0700078E00039E0001DC0001F80000F80000700000 F00000F80001DC00039E00038E000707000E07807F8FF0FF8FF87F8FF015147F9318>I< 7F8FF0FF8FF87F8FF00E01C00E03800E0380070380070700070700038700038700038E00 01CE0001CE0001CC0000DC0000FC0000780000780000780000700000700000700000F000 7CE0007DE00073C0007F80003F00001E0000151E7F9318>I<3FFFF07FFFF07FFFF07803 E07807C0780F80001F00003E00007C0000F80001F00003E00007C0000F80F01F00F03E00 F07C00F0FFFFF0FFFFF0FFFFF014147F9318>I<0007E0001FE0007FE0007C0000F00000 F00000F00000F00000F00000F00000F00000F00000F00000F00000F00001F0007FE000FF C000FFC0007FE00001F00000F00000F00000F00000F00000F00000F00000F00000F00000 F00000F00000F000007C00007FE0001FE00007E013247E9F18>I<60F0F0F0F0F0F0F0F0 F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0600424769F18>I<7E00 00FF8000FFE00003E00000F00000F00000F00000F00000F00000F00000F00000F00000F0 0000F00000F00000F800007FC0003FE0003FE0007FC000F80000F00000F00000F00000F0 0000F00000F00000F00000F00000F00000F00000F00003E000FFE000FF80007E00001324 7E9F18>I<0E0C1F1E3FBEFBF8F1F060E00F067C9B18>I E /Fn 39 122 df<00001FE000007FF00001C0380001807800038078000700300007000000070000 00070000000E0000000E0000000E000000FFFFE000FFFFE0001C01C0001C01C0001C01C0 001C01C0001C038000380380003803800038038000380700003807000078070000700718 00700E3000700E3000700E3000600E6000E007E000E003C000E0000000E0000001C00000 01C00000318000007B800000F30000007E0000003C0000001D29829F1A>12 D<00003FC0FF800000FFE3FFC00001C1E700E0000381EE01E0000380DC01E00007001C00 C0000700180000000700380000000700380000000E00380000000E00380000000E007000 0000FFFFFFFF8000FFFFFFFF80000E00700700001C00700700001C00700700001C00E007 00001C00E00E00001C00E00E00003800E00E00003800E00E00003801C01C00003801C01C 00003801C01C00007001C01C60007001C038C00070038038C00070038038C00070038039 8000E003801F8000E003000F0000E00700000000E00700000001C00700000001C00E0000 0031860E000000798F1C000000F31E380000007E0FF00000003C07C00000002B29829F28 >14 D<00E001F001F003E003E003E003C003C003C00780078007800700070007000E000E 000E000C000C001C0018001800000000000000000000007000F800F800F000E0000C217B A00E>33 D<1C1C3E3E7E7E7E7E3E3E06060C0C0C0C1818181830306060C0C080800F0E78 9F17>I<70F8F8F0E005057B840E>46 D<000200060006000E003C00FC03DC031C003800 3800380038007000700070007000E000E000E000E001C001C001C001C003800380038003 80FFF8FFF80F1E7B9D17>49 D<0007C0001FE000386000E0E001C1E001C1E00380C00700 000F00000E00001E10001E7C001DFE003F07003E07003C07807C07807807807807807807 80700F00700F00F00F00F00E00F01E00701C0070380070380038F0001FC0000F8000131F 7B9D17>54 D<001F00007F8000E1C001C0E00380E00700E00700E00700E00F01C00F01C0 0F838007C70007EE0003F80001F80003FC000E7E001C3F00381F00700F00700700E00700 E00700E00700E00E00E00E00E01C00E0380070F0003FE0001F8000131F7B9D17>56 D<070F1F1F0E0000000000000000000070F8F8F0E008147B930E>58 D<0000FE020007FF06001F818C003E00DC0078007C00F0007C01E0003803C00038078000 380F8000381F0000301F0000303E0000303E0000007C0000007C0000007C0000007C0000 00F8000000F8000000F8000000F80000C0F80001807800018078000300780003003C0006 003C000C001E0018000F00300007C0E00003FF800000FE00001F217A9F21>67 D<01FFFFFC01FFFFF8001E0078001E0038001E0038003C0018003C0018003C0018003C00 3000780C3000780C3000780C0000781C0000F0380000FFF80000FFF80000F0380001E030 0001E0300001E0300001E0300003C0000003C0000003C0000003C0000007800000078000 000780000007800000FFFC0000FFF800001E1F7D9E1E>70 D<00FF007FE001FF00FFC000 1F001E00001F800C00001F800C0000378018000033C018000033C018000033C018000063 C030000061E030000061E030000061E0300000C0F0600000C0F0600000C0F0600000C078 6000018078C000018078C00001803CC00001803CC00003003D800003001F800003001F80 0003001F800006000F000006000F000006000F00000E000F0000FFC0060000FFC0060000 231F7D9E22>78 D<01FFFF8001FFFFE0001E01F0001E0078001E0078003C007C003C007C 003C007C003C007C007800F8007800F8007800F0007801E000F003C000F00F8000FFFF00 00FFF80001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C00000 07800000078000000780000007800000FFF80000FFF000001E1F7D9E1F>80 D<0007E040001FF8C0003C1D8000700F8000E0078001C007800180030003800300038003 0003800300038000000380000003C0000003F8000001FF800001FFE000007FF000001FF0 000001F80000007800000038000000380000003800300038003000380030003000700070 00700060007800E0007801C000EE078000C7FE000081F800001A217D9F1A>83 D<06060E0E1C1C1818303060606060C0C0C0C0F0F0F8F8F8F8F8F870700F0E749F17>92 D<00F18003FDC0078F800E07801C07803C07803C0700780700780700780700F00E00F00E 00F00E00F00E30F01C60F03C60707C6078FCC03FCFC00F070014147C9317>97 D<07803F803F000700070007000E000E000E000E001C001C001CF01FFC3F1E3E0E3C0F38 0F700F700F700F700FE01EE01EE01EE03CE03CE038607071E03FC01F0010207B9F15>I< 007E0001FF000383800F07801E07801C07003C0200780000780000780000F00000F00000 F00000F00000F00000700200700700381E001FF80007E00011147C9315>I<0000780003 F80003F00000700000700000700000E00000E00000E00000E00001C00001C000F1C003FD C0078F800E07801C07803C07803C0700780700780700780700F00E00F00E00F00E00F00E 30F01C60F03C60707C6078FCC03FCFC00F070015207C9F17>I<007C0001FF000783000F 01801E01803C01803C0300780E007FFC007FE000F00000F00000F00000F0000070000070 02007807003C1E001FF80007E00011147C9315>I<0000F80001FC0003BC00033C000718 000700000700000E00000E00000E00000E00000E0000FFE001FFE0001C00001C00001C00 00380000380000380000380000380000700000700000700000700000700000E00000E000 00E00000E00000E00001C00001C00001C0000180003380007B8000F300007E00003C0000 1629829F0E>I<003C6000FF7001E3E00381E00701E00F01E00F01C01E01C01E01C01E01 C03C03803C03803C03803C03803C07003C0F001C1F001E3F000FFE0003CE00000E00000E 00001C00001C00301C00783800F0F0007FE0003F8000141D7E9315>I<01E0000FE0000F C00001C00001C00001C000038000038000038000038000070000070000073E00077F000E C3800F81C00F01C00E01C01E03801C03801C03801C0380380700380700380700380E1870 0E30700E30701C60700C60E00FC060078015207D9F17>I<006000F000F000E000000000 000000000000000000000F001F80318031C063806380C3800700070007000E000E000E00 1C301C601C6038C018C01F800F000C1F7D9E0E>I<0001800003C00003C0000380000000 000000000000000000000000000000000000003C00007E0000C700018700030700030700 060E00000E00000E00000E00001C00001C00001C00001C00003800003800003800003800 00700000700000700000700000E00000E00030E00079C000F380007F00003C0000122882 9E0E>I<01E0000FE0000FC00001C00001C00001C0000380000380000380000380000700 000700000703C00707E00E0C600E18E00E31E00E61E01CC1C01F80001F00001FC00039E0 003870003870003838607070C07070C07070C0703980E03F00601E0013207D9F15>I<03 C01FC01F8003800380038007000700070007000E000E000E000E001C001C001C001C0038 003800380038007000700070007180E300E300E300E6007E003C000A207C9F0C>I<1E07 C0F8003F1FE1FC0033B8730E0063E076070063C03C07006380380700C780780E00070070 0E000700700E000700700E000E00E01C000E00E01C000E00E01C000E00E038601C01C038 C01C01C038C01C01C071801C01C031803803803F001801801E0023147D9325>I<1E07C0 3F1FE033B87063E07063C038638038C780700700700700700700700E00E00E00E00E00E0 0E01C31C01C61C01C61C038C1C018C3801F81800F018147D931A>I<007C0001FF000383 800F01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003C0F003C0F00780F007 00700F00701E003838001FF00007C00013147C9317>I<01C1E007E7F8067E3C0C7C1C0C 781E0C701E18E01E00E01E00E01E00E01E01C03C01C03C01C03C01C07803C07803C07003 C0E003E3C0077F80071E000700000700000E00000E00000E00000E00001C0000FFC000FF 8000171D809317>I<0E0F003F3F8033F1C063C1C063C3C06383C0C78380070000070000 0700000E00000E00000E00000E00001C00001C00001C00001C000038000018000012147D 9313>114 D<00FC03FE07070E0F0E0F0E0E1E000F800FF007F803FC003E001E701EF01C F01CE03860703FE01F8010147D9313>I<018001C0038003800380038007000700FFF0FF F00E000E000E000E001C001C001C001C0038003800380038307060706070C071803F001E 000C1C7C9B0F>I<0F00601F80703180E031C0E06380E06380E0C381C00701C00701C007 01C00E03800E03800E03800E038C0E07180E07180E0F180E1F3007F3F003E1C016147D93 18>I<0F01C01F83C03183E031C1E06380E06380E0C380C00700C00700C00700C00E0180 0E01800E01800E03000E03000E06000E06000F0C0007F80001E00013147D9315>I<0F00 60E01F8071E03180E1F031C0E0F06380E0706380E070C381C0600701C0600701C0600701 C0600E0380C00E0380C00E0380C00E0381800E0381800E0781800E078300070F860007F9 FC0001F0F8001C147D931E>I<0787800FCFC018F8E03070E06071E06071E0C0E1C000E0 0000E00000E00001C00001C00001C00071C060F380C0F380C0E38180C7C3007CFE00387C 0013147D9315>I<0F00601F80703180E031C0E06380E06380E0C381C00701C00701C007 01C00E03800E03800E03800E03800E07000E07000E0F000E1F0007FE0003EE00000E0000 0E00001C00781C0078380070700060E0003FC0001F0000141D7D9316>I E /Fo 77 123 df<001FC1F0007FF7F801F07E7C03C0FC7C0780FC7C0F00F8380F007800 0F0078000F0078000F0078000F0078000F007800FFFFFF80FFFFFF800F0078000F007800 0F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F007800 0F0078000F0078000F0078000F0078000F0078007FE3FF807FE3FF801E20809F1B>11 D<001F8000FFC001E0E003C0F00781F00F01F00F00E00F00000F00000F00000F00000F00 00FFFFF0FFFFF00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00 F00F00F00F00F00F00F00F00F00F00F00F00F07FC3FE7FC3FE1720809F19>I<001FB000 FFF001E1F003C1F00781F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0FFFFF0FF FFF00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F 00F00F00F00F00F00F00F00F00F07FE7FE7FE7FE1720809F19>I<001FC0FC00007FE7FE 0001F07F070003C0FE07800780FC0F800F00F80F800F007807000F007800000F00780000 0F007800000F007800000F00780000FFFFFFFF80FFFFFFFF800F007807800F007807800F 007807800F007807800F007807800F007807800F007807800F007807800F007807800F00 7807800F007807800F007807800F007807800F007807800F007807800F007807807FE3FF 3FF07FE3FF3FF02420809F26>I<070F1F1E3C78F0E0400809779F17>19 D<7038F87CFC7EFC7E7C3E0C060C060C06180C180C381C3018603040200F0E7F9F17>34 D<70F8FCFC7C0C0C0C181838306040060E7C9F0D>39 D<006000C001800380070006000E 001C001C003C003800380078007000700070007000F000F000F000F000F000F000F000F0 00F000F000F000F00070007000700070007800380038003C001C001C000E000600070003 80018000C000600B2E7CA112>II<00030000000300000003000000030000000300000003000000030000000300 0000030000000300000003000000030000000300000003000000030000FFFFFFFCFFFFFF FC0003000000030000000300000003000000030000000300000003000000030000000300 000003000000030000000300000003000000030000000300001E207E9A23>43 D<70F8F8F878181818183030606040050E7C840D>II<70F8 F8F87005057C840D>I<0000400000C00001800001800001800003000003000003000006 00000600000C00000C00000C000018000018000018000030000030000060000060000060 0000C00000C00000C0000180000180000180000300000300000600000600000600000C00 000C00000C0000180000180000300000300000300000600000600000600000C00000C000 00122D7EA117>I<03F0000FFC001E1E001C0E00380700780780700380700380700380F0 03C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F0 03C07003807003807003807807803807001C0E001E1E000FFC0003F000121F7E9D17>I< 00C001C00FC0FFC0F3C003C003C003C003C003C003C003C003C003C003C003C003C003C0 03C003C003C003C003C003C003C003C003C003C07FFF7FFF101E7D9D17>I<07F0000FFC 00383E00700F00600F80F80780FC07C0FC07C0FC03C07803C03003C00007C00007800007 80000F00001E00001C0000380000700000E00001C0000380000300C00600C00C00C01801 C03FFF807FFF80FFFF80FFFF80121E7E9D17>I<03F0000FFC001C1E00300F00780F807C 0F807C07807C0F803C0F80000F00000F00001E00007C0007F00007F000003C00000E0000 0F000007800007800007C03007C07807C0FC07C0FC07C0FC0780780F80700F003C1E001F FC0007F000121F7E9D17>I<000700000700000F00001F00001F00003F00007F0000EF00 00CF0001CF00038F00030F00070F000E0F000C0F00180F00380F00300F00600F00E00F00 FFFFF0FFFFF0000F00000F00000F00000F00000F00000F0000FFF000FFF0141E7F9D17> I<3003003FFF003FFE003FF8003FE00030000030000030000030000030000030000031F0 0037FC003E1E00380F00380F003007800007800007C00007C00007C07807C0F807C0F807 C0F80780F00780600F00700E00383C001FF80007E000121F7E9D17>I<007C0001FE0007 83000E07800C0F801C0F80380700380000780000700000700000F1F800F3FE00F40E00F8 0700F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C070038038038038 07001C07000E1E0007FC0001F000121F7E9D17>I<6000007FFFE07FFFE07FFFC07FFFC0 E00180C00300C00300C00600000C0000180000180000300000700000600000E00000E000 01E00001C00001C00003C00003C00003C00003C00007C00007C00007C00007C00007C000 07C000038000131F7E9D17>I<03F0000FFC001C1E003807003007007003807003807003 807803807C07007F07003F8E001FFC000FF80007FC0007FE001EFF00387F80701F80700F C0E003C0E003C0E001C0E001C0E001C0F001807003803807001E0E000FFC0003F000121F 7E9D17>I<03F00007F8001E1C00380E00380700700700700380F00380F00380F003C0F0 03C0F003C0F003C0F003C07007C07007C03807C01C0BC01FF3C007E3C000038000038000 07800007003807007C0E007C0E00781C003078001FF0000FC000121F7E9D17>I<70F8F8 F8700000000000000000000070F8F8F87005147C930D>I<70F8F8F87000000000000000 00000070F8F8F878181818183030606040051D7C930D>I61 D<0003800000038000000380000007C0000007C0000007C000000FE000 000FE000000FE0000019F0000019F0000019F0000030F8000030F8000030F80000607C00 00607C0000607C0000C03E0000C03E0000C03E0001FFFF0001FFFF0001801F0003000F80 03000F8003000F80060007C0060007C01F0007E0FFC03FFEFFC03FFE1F207F9F22>65 DI<000FE010007FF83000F80E70 03E00370078001F00F0000F01F0000F01E0000703C0000703C0000707C00003078000030 F8000030F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000 780000307C0000303C0000303C0000301E0000601F0000600F0000C00780018003E00300 00F80E00007FFC00000FE0001C217E9F21>IIII<000FE010007FF83000F80E7003E00370078001F0 0F0000F01F0000F01E0000703C0000703C0000707C00003078000030F8000030F8000000 F8000000F8000000F8000000F8000000F8000000F8007FFEF8007FFE780001F07C0001F0 3C0001F03C0001F01E0001F01F0001F00F0001F007C001F003E003F000FC0E70007FFC10 000FF0001F217E9F24>III<07FFE007FF E0001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F 00001F00001F00001F00001F00001F00001F00001F00001F00001F00781F00FC1F00FC1F 00FC1F00F83E00703E00387C001FF0000FC0001320809E17>I76 D II<001FE000007FF80001F03E00 03C00F00078007800F0003C01E0001E03E0001F03C0000F07C0000F87C0000F878000078 F800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007C 7C0000F87C0000F87C0000F83C0000F03E0001F01E0001E00F0003C00780078003C00F00 01F03E00007FF800001FE0001E217E9F23>II82 D<03F0400FFCC01E0FC03807C07803C07001C0F001C0F000C0F000C0F000C0F80000FC00 007F00007FF0003FFE001FFF000FFF8003FFC0007FE00007E00003F00001F00000F0C000 F0C000F0C000F0E000E0E000E0F001E0F801C0FE0780C7FF0081FC0014217E9F19>I<7F FFFFE07FFFFFE07C0F81E0700F80E0600F8060600F8060E00F8070C00F8030C00F8030C0 0F8030C00F8030000F8000000F8000000F8000000F8000000F8000000F8000000F800000 0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800000 0F8000000F800003FFFE0003FFFE001C1F7E9E21>IIII91 D<0804180C3018703860306030C060C060C060F87CFC7EFC7E7C3E381C0F0E7A9F 17>II<0FE0003FF8007C3C007C1E007C0F00380F 00000F00000F0001FF000FCF003E0F00780F00780F00F00F30F00F30F00F30F01F30783F F03FC7E00F83C014147E9317>97 D<1E0000FE0000FE00001E00001E00001E00001E0000 1E00001E00001E00001E00001E00001E3F001EFFC01FC1E01F00F01E00701E00781E0038 1E003C1E003C1E003C1E003C1E003C1E003C1E00381E00781E00701F00F01D83E01CFF80 183E0016207F9F19>I<01F80007FE001E1F003C1F00381F00780E00700000F00000F000 00F00000F00000F00000F000007800007800003C01803C03801F070007FE0001F8001114 7F9314>I<0001E0000FE0000FE00001E00001E00001E00001E00001E00001E00001E000 01E00001E003F1E007FDE01F07E03C03E03801E07801E07001E0F001E0F001E0F001E0F0 01E0F001E0F001E07001E07801E03801E03C03E01E0FE00FFDFC03F1FC16207F9F19>I< 03F0000FFC001E1E003C0F00380700780700700380F00380FFFF80FFFF80F00000F00000 F000007000007800003801803C03801F070007FE0001F80011147F9314>I<003E0000FF 0003CF80078F80078F800F07000F00000F00000F00000F00000F00000F0000FFF000FFF0 000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00 000F00000F00000F00000F00007FF0007FF0001120809F0E>I<0000E003E3F00FFE701C 1C70380E60780F00780F00780F00780F00780F00380E001C1C001FF80033E00020000030 00003000003FFE003FFF801FFFC01FFFE07001E06000F0E00070E00070E000707000E078 01E03E07C00FFF0003FC00141F7F9417>I<1E0000FE0000FE00001E00001E00001E0000 1E00001E00001E00001E00001E00001E00001E1F001E7F801EC3C01F81E01F01E01E01E0 1E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E0 FFC7FCFFC7FC16207F9F19>I<1C003E003E003E001C000000000000000000000000001E 00FE00FE001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E00FF C0FFC00A1F7F9E0D>I<007000F800F800F80070000000000000000000000000007807F8 07F800F80078007800780078007800780078007800780078007800780078007800780078 0078007800787078F878F8F0F9E07FC03F000D28839E0E>I<1E0000FE0000FE00001E00 001E00001E00001E00001E00001E00001E00001E00001E00001E1FF01E1FF01E0F801E0E 001E0C001E18001E30001E70001EF0001FF8001F78001E3C001E3E001E1E001E1F001E0F 801E07801E07C0FFCFF8FFCFF815207F9F18>I<1E00FE00FE001E001E001E001E001E00 1E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E00 1E001E001E001E00FFC0FFC00A207F9F0D>I<1E1F80FC00FE7FC3FE00FEC1E60F001F80 FC07801F00F807801E00F007801E00F007801E00F007801E00F007801E00F007801E00F0 07801E00F007801E00F007801E00F007801E00F007801E00F007801E00F007801E00F007 80FFC7FE3FF0FFC7FE3FF024147F9327>I<1E1F00FE7F80FEC3C01F81E01F01E01E01E0 1E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E0 FFC7FCFFC7FC16147F9319>I<01F80007FE001E07803C03C03801C07000E07000E0F000 F0F000F0F000F0F000F0F000F0F000F07000E07801E03801C03C03C01E078007FE0001F8 0014147F9317>I<1E3F00FEFFC0FFC3E01F00F01E00701E00781E00781E003C1E003C1E 003C1E003C1E003C1E003C1E00781E00781E00F01F00F01F83E01EFF801E3E001E00001E 00001E00001E00001E00001E00001E0000FFC000FFC000161D7F9319>I<01F06007FCE0 1F0EE03C03E03C03E07801E07801E0F001E0F001E0F001E0F001E0F001E0F001E07801E0 7801E03803E03C03E01F0FE00FFDE003F1E00001E00001E00001E00001E00001E00001E0 0001E0000FFC000FFC161D7F9318>I<1E78FEFCFF9E1F1E1F0C1F001E001E001E001E00 1E001E001E001E001E001E001E001E00FFE0FFE00F147F9312>I<0FC83FF870386018E0 18E018F000FF807FE03FF81FFC01FC003EC00EC00EE00EE00CF83CDFF887E00F147F9312 >I<06000600060006000E000E001E003E00FFF8FFF81E001E001E001E001E001E001E00 1E001E001E001E0C1E0C1E0C1E0C1E0C0F1807F003E00E1C7F9B12>I<1E01E0FE0FE0FE 0FE01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E 01E01E03E01E03E00E0DE007F9FC03F1FC16147F9319>III<7FE7 FC7FE7FC0F83E007838003C30003E70001EE0000FC00007800007800003C00007E0000FE 0001CF000187800387800703C00F03E0FF87FEFF87FE1714809318>II<7FFF7FFF781E703E603C607860F861F001E003E007 C007830F831F031E073C067C06781EFFFEFFFE10147F9314>I E /Fp 43 122 df<0001FF0000001FFFC000007F81E00000FC01E00001F807F00003F807F0 0007F007F00007F007F00007F007F00007F007F00007F001C00007F000000007F0000000 07F000000007F03FF800FFFFFFF800FFFFFFF800FFFFFFF80007F003F80007F003F80007 F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F0 03F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003 F80007F003F80007F003F80007F003F80007F003F8007FFF3FFF807FFF3FFF807FFF3FFF 80212A7FA925>12 D<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE00 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 00FE0000FE0000FE00FFFFFEFFFFFEFFFFFE17277BA622>49 D<00FF800007FFF0001FFF FC003E07FE007E01FF807F007F80FF807FC0FF803FC0FF803FE0FF801FE0FF801FE07F00 1FE03E003FE000003FE000003FC000003FC000007F8000007F000000FE000000FC000001 F8000003F0000007C000000F8000001F0000003C0000007800E0007000E000E000E001C0 01C0030001C0060001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFF FF801B277DA622>I<007F800003FFF00007FFFC000F81FE001F00FF001F80FF003FC07F 803FC07F803FC07F803FC07F801FC07F800F80FF000000FF000000FE000001FC000003F8 000007F00000FF800000FFC0000001F8000000FE0000007F0000007F8000003FC000003F C000003FE01C003FE07F003FE07F003FE0FF803FE0FF803FE0FF803FC0FF803FC07F007F 807E00FF003F01FE001FFFFC0007FFF00000FF80001B277DA622>I<00000F0000000F00 00001F0000003F0000007F000000FF000001FF000001FF000003BF0000073F00000E3F00 001C3F00003C3F0000383F0000703F0000E03F0001C03F0003803F0007803F0007003F00 0E003F001C003F0038003F0070003F00F0003F00FFFFFFF8FFFFFFF8FFFFFFF800007F00 00007F0000007F0000007F0000007F0000007F0000007F0000007F00001FFFF8001FFFF8 001FFFF81D277EA622>I<180003001F801F001FFFFE001FFFFC001FFFF8001FFFF0001F FFE0001FFF80001FFE00001C0000001C0000001C0000001C0000001C0000001C0000001C 7FC0001DFFF8001F80FC001E003F0008003F0000001F8000001FC000001FC000001FE000 001FE03C001FE07E001FE0FF001FE0FF001FE0FF001FE0FF001FC0FE001FC07C003F8078 003F803C007F001F01FE000FFFFC0003FFF00000FF80001B277DA622>I<0007F800003F FE0000FFFF0001FC0F8003F00F8007E01FC00FC03FC01F803FC01F803FC03F803FC03F00 1F807F000F007F0000007F000000FF020000FF1FF000FF3FFC00FF603E00FFC03F00FF80 1F80FF801FC0FF801FC0FF001FC0FF001FE0FF001FE0FF001FE07F001FE07F001FE07F00 1FE07F001FE03F001FE03F001FC01F801FC01F801F800FC03F0007E07E0003FFFC0001FF F800003FC0001B277DA622>I<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFF E07FFFFFC07FFFFF807FFFFF0070000E0070000E0070001C00E0003800E0007000E000E0 000001C0000001C0000003800000078000000F8000000F0000001F0000001F0000003F00 00003F0000007E0000007E0000007E000000FE000000FE000000FE000000FE000001FE00 0001FE000001FE000001FE000001FE000001FE000001FE000000FC0000007800001C297C A822>I<003FC00001FFF00003FFFC0007C07E000F003F001E001F001E000F803E000F80 3E000F803F000F803F800F803FC00F003FF01F001FFC1E001FFE3C000FFFF80007FFE000 03FFF00001FFFC0001FFFE0007FFFF000F0FFF801E07FFC03E01FFC07C007FE07C001FE0 F8000FE0F80007E0F80003E0F80003E0F80003E0F80003C07C0003C07E0007803F000F00 1FC03F000FFFFC0003FFF800007FC0001B277DA622>I<00000780000000000780000000 000FC0000000000FC0000000000FC0000000001FE0000000001FE0000000003FF0000000 003FF0000000003FF00000000077F80000000077F800000000F7FC00000000E3FC000000 00E3FC00000001C1FE00000001C1FE00000003C1FF0000000380FF0000000380FF000000 07007F80000007007F8000000F007FC000000E003FC000000E003FC000001C001FE00000 1C001FE000003FFFFFF000003FFFFFF000003FFFFFF00000700007F80000700007F80000 F00007FC0000E00003FC0001E00003FE0001C00001FE0001C00001FE0003C00001FF00FF FE003FFFFCFFFE003FFFFCFFFE003FFFFC2E297EA833>65 D<00007FE0030003FFFC0700 1FFFFF0F007FF00FDF00FF8001FF01FE0000FF03FC00007F07F000003F0FF000001F1FE0 00001F1FE000000F3FC000000F3FC00000077FC00000077F800000077F80000000FF8000 0000FF80000000FF80000000FF80000000FF80000000FF80000000FF80000000FF800000 00FF800000007F800000007F800000007FC00000073FC00000073FC00000071FE0000007 1FE000000E0FF000000E07F000001C03FC00003C01FE00007800FF8001F0007FF007C000 1FFFFF800003FFFE0000007FF00028297CA831>67 DIII 73 D76 D80 D<00FF806003FFF0E00FFFF9E01F80FFE03F001FE03E0007E07C0003E07C0003E0FC0001 E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFC00007FFFE0003FFFF8 001FFFFE001FFFFF0007FFFF8003FFFFC000FFFFC0000FFFE000007FE000001FF000000F F0000007F0E00003F0E00003F0E00003F0E00003F0F00003E0F00003E0F80007E0FC0007 C0FF000F80FFE03F80F3FFFE00E1FFFC00C01FF0001C297CA825>83 D<7FFFFFFFFF807FFFFFFFFF807FFFFFFFFF807F807F807F807C007F800F8078007F8007 8078007F80078070007F800380F0007F8003C0F0007F8003C0E0007F8001C0E0007F8001 C0E0007F8001C0E0007F8001C0E0007F8001C000007F80000000007F80000000007F8000 0000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000 0000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000 0000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000 0000007F80000000FFFFFFC00000FFFFFFC00000FFFFFFC0002A287EA72F>I86 D<01FF80000FFFF0001F81FC003FC0FE003FC07F003FC03F003FC03F801F803F800F003F 8000003F8000003F800000FF80007FFF8003FFFF800FF03F801FC03F803F803F807F003F 80FE003F80FE003F80FE003F80FE003F80FE007F807F00DF803F839FFC1FFF0FFC03FC03 FC1E1B7E9A21>97 DI<003FE00001FFFC0003F07E000FC0FF001FC0FF003F80FF003F80FF007F007E00 7F003C007F000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 7F0000007F0000007F8000003F8003803F8003801FC007000FE00E0003F83C0001FFF800 003FC000191B7E9A1E>I<00007FF000007FF000007FF0000007F0000007F0000007F000 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 3F87F001FFF7F007F03FF00FC00FF01F8007F03F8007F03F8007F07F0007F07F0007F07F 0007F0FF0007F0FF0007F0FF0007F0FF0007F0FF0007F0FF0007F0FF0007F0FF0007F07F 0007F07F0007F03F0007F03F8007F01F800FF00FC01FF007F07FFF01FFE7FF007F87FF20 2A7EA925>I<003FC00001FFF00003F0FC000FC03E001F803F001F801F003F801F807F00 1F807F001FC07F000FC0FF000FC0FF000FC0FFFFFFC0FFFFFFC0FF000000FF000000FF00 00007F0000007F0000007F0000003F8001C01F8001C00FC0038007C0070003F01E0000FF FC00003FE0001A1B7E9A1F>I<0003F800001FFE00007E3F0001FC3F8001F87F8003F87F 8007F07F8007F03F0007F03F0007F0000007F0000007F0000007F0000007F0000007F000 00FFFFC000FFFFC000FFFFC00007F0000007F0000007F0000007F0000007F0000007F000 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 0007F0000007F0000007F0000007F0000007F0000007F000007FFF80007FFF80007FFF80 00192A7EA915>I<00FF81F003FFE7F80FC1FE1C1F80FC7C3F007E7C3F007E387F007F00 7F007F007F007F007F007F007F007F007F007F003F007E003F007E001F80FC000FC1F800 1FFFE00018FF800038000000380000003C0000003E0000003FFFF8003FFFFF001FFFFFC0 0FFFFFE007FFFFF01FFFFFF03E0007F07C0001F8F80000F8F80000F8F80000F8F80000F8 7C0001F07C0001F03F0007E00FC01F8007FFFF00007FF0001E287E9A22>II<07000F801FC03FE03FE0 3FE01FC00F8007000000000000000000000000000000FFE0FFE0FFE00FE00FE00FE00FE0 0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFE FFFEFFFE0F2B7EAA12>I107 DIII<003FE00001FFFC0003F07E000FC01F801F800FC03F80 0FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF00 07F8FF0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800FE01F800FC00FC0 1F8007F07F0001FFFC00003FE0001D1B7E9A22>II114 D<03FE300FFFF03E03F07800F07000 F0F00070F00070F80070FE0000FFE0007FFF007FFFC03FFFE01FFFF007FFF800FFF80007 FC0000FCE0007CE0003CF0003CF00038F80038FC0070FF01E0F7FFC0C1FF00161B7E9A1B >I<00E00000E00000E00000E00001E00001E00001E00003E00003E00007E0000FE0001F FFE0FFFFE0FFFFE00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000F E0000FE0000FE0000FE0000FE0700FE0700FE0700FE0700FE0700FE0700FE07007F0E003 F0C001FF80007F0014267FA51A>IIIIII E /Fq 41 127 df<007E0001C1800301800703C00E03C00E01800E00 000E00000E00000E00000E0000FFFFC0FFFFC00E01C00E01C00E01C00E01C00E01C00E01 C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F87F87F8151D809C17 >12 D16 D<070F0F1C3870E0400808789C15>19 D<1C001E000780038003 800380FF00800009087B7E12>24 D<70F8F8F87005057D840C>46 D<07C01FF0387C603C601EF01FF81FF80FF80F700F001F001E001E003C0038007000E000 C00180030006000C031803100320067FFEFFFEFFFE101C7E9B15>50 D<000C00001C00001C00003C00007C00005C0000DC00019C00031C00031C00061C000C1C 00081C00181C00301C00201C00601C00C01C00FFFFC0FFFFC0001C00001C00001C00001C 00001C00001C0001FFC001FFC0121C7F9B15>52 D<00060000000F0000000F0000000F00 00001F8000001F8000001F8000003FC0000033C0000033C0000073E0000061E0000061E0 0000E1F00000C0F00000C0F00001C0F8000180780001FFF80003FFFC0003003C0003003C 0007003E0006001E0006001E000E001F001E000F00FF807FF0FF807FF01C1D7F9C1F>65 D<001F808000FFE18001F03B8007C00F800F0007801F0007801E0003803C0003807C0001 807C00018078000180F8000000F8000000F8000000F8000000F8000000F8000000F80000 00F8000000780001807C0001807C0001803C0001801E0003001F0003000F00060007C00C 0001F0380000FFF000001FC000191E7E9C1E>67 D69 D73 D76 D<003F800000E0E0000380380007001C 000E000E001E000F003C0007803C0007807C0007C0780003C0780003C0F80003E0F80003 E0F80003E0F80003E0F80003E0F80003E0F80003E0F80003E0780003C07C0007C07C0007 C03C0007803E000F801E000F000F001E0007001C000380380000E0E000003F80001B1E7E 9C20>79 DI<7FFFFFC07FFFFFC0780F03C0 700F01C0600F00C0E00F00E0C00F0060C00F0060C00F0060C00F0060000F0000000F0000 000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 000F0000000F0000000F0000000F0000000F000003FFFC0003FFFC001B1C7F9B1E>84 D86 D<0FE0001838003C1C003C0E00180E00000E0000 0E0001FE000F8E003C0E00780E00700E00F00E60F00E60F00E60701E603827C00FC38013 127F9115>97 DI<03F80E0C1C1E38 1E780C7000F000F000F000F000F000F0007000780638061C0C0E1803E00F127F9112>I< 001F80001F8000038000038000038000038000038000038000038000038000038003F380 0E0F801C0780380380780380700380F00380F00380F00380F00380F00380F00380700380 7803803803801C07800E1BF003F3F0141D7F9C17>I<07E00C301818381C701E700EF00E FFFEF000F000F000F000700070063806180C0E1803E00F127F9112>I<00F8018C071E06 1E0E0C0E000E000E000E000E000E00FFE0FFE00E000E000E000E000E000E000E000E000E 000E000E000E000E000E007FE07FE00F1D809C0D>I<00038007E4C00C39C0381DC0381C 00781E00781E00781E00781E00381C00381C001C300037E0002000003000003000003FF8 001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C 7F9215>II<38007C007C007C0038 00000000000000000000000000FC00FC001C001C001C001C001C001C001C001C001C001C 001C001C001C001C00FF80FF80091D7F9C0C>I<01C003E003E003E001C0000000000000 00000000000007E007E000E000E000E000E000E000E000E000E000E000E000E000E000E0 00E000E000E000E000E000E060E0F0C0F1C061803E000B25839C0D>I108 DII<03F0000E1C00180600380700700380700380F003C0F003C0F003C0F003C0F003C0F0 03C07003807003803807001C0E000E1C0003F00012127F9115>II<03F1800E19801C0780380780780380780380F00380F00380F00380F00380F003 80F003807003807803803807801C07800E1B8003E3800003800003800003800003800003 80000380001FF0001FF0141A7F9116>II<1F9020F04070C030C030E030 F8007F803FE00FF000F8C038C018C018E018E010D0608FC00D127F9110>I<0C000C000C 000C000C000C001C001C003FE0FFE01C001C001C001C001C001C001C001C001C301C301C 301C301C300C200E6003C00C1A7F9910>IIII<7F8FF07F8FF00F0780070600038E0001DC0001D80000F00000700000780000F800 01DC00038E00030E000607000F0380FF0FF8FF0FF81512809116>II<1C043F0843F080E00E047D9B15>126 D E /Fr 13 118 df<0F001F003F803F007E00F800F000C0000908769C18>19 D<00038000000380000007 C0000007C0000007C000000FE000000FE000001FF000001BF000003BF8000031F8000031 F8000060FC000060FC0000E0FE0000C07E0000C07E0001803F0001FFFF0003FFFF800300 1F8007001FC006000FC006000FC00C0007E00C0007E0FF803FFEFF803FFE1F1C7E9B24> 65 D<07F8601FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FFE000 7FFE003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0 E000E0F001C0FC03C0EFFF00C3FC00141C7D9B1B>83 D<07F8001FFE003F1F803F07803F 07C01E07C00C07C003FFC01FFFC03F87C07E07C0FC07C0FC07C0FC07C0FC0FC07E1FC03F FBF80FE1F815127F9117>97 DI<03 F8000FFE001F3F003E3F007C3F007C1E00FC0C00FC0000FC0000FC0000FC0000FC00007C 00007E01803E03801F07000FFE0003F80011127E9115>I<1C003E007F007F007F003E00 1C00000000000000000000007F007F001F001F001F001F001F001F001F001F001F001F00 1F001F001F001F00FFC0FFC00A1E7F9D0E>105 D109 D<01FC000FFF801F07C03E03E07C01F07C01F0FC01F8FC01F8 FC01F8FC01F8FC01F8FC01F87C01F07C01F03E03E01F07C00FFF8001FC0015127F9118> 111 D114 D<1FD83FF87038E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CF038FFF0CF C00E127E9113>I<030003000300070007000F000F003F00FFFCFFFC1F001F001F001F00 1F001F001F001F001F001F0C1F0C1F0C1F0C0F9807F003E00E1A7F9913>II E /Fs 7 115 df<000FF000007FFC0000 FFFF0001FFFF0007F81F0007E006000F8000001F0000003F0000003E0000003E0000007C 0000007C0000007C000000F8000000F8000000F8000000F8000000F8000000F8000000F8 000000F8000000F80000007C0000007C0000007C0000003E0000003E0000003F0000001F 0000000F80008007E0038007F80F8001FFFF8000FFFF00007FFC00000FF00019257DA31F >67 D<000FF000003FFE0000FFFF8001FFFF8003F80F8007E003000FC000001F8000001F 0000003E0000003E0000007C0000007C0000007C000000F8000000F8000000F8000000F8 000000F8000000F8000000F800FFC0F800FFC0F800FFC07C0003C07C0003C07C0003C03E 0003C03E0003C01F0003C01F8003C00FC003C007E003C003F807C001FFFFC000FFFFC000 3FFF00000FF8001A257DA321>71 D84 D<07F0003FFC007FFE00781F00600F004007 8000078000078000078001FF800FFF801FFF807F0780780780F00780F00780F00780F80F 807C1F807FFF803FFF801FC78011167E9517>97 D<01F80007FE000FFF001F07803C03C0 7801C07801C07000E0FFFFE0FFFFE0FFFFE0F00000F00000F000007000007800007C0000 3E00401F03C00FFFC007FF8000FC0013167F9516>101 D<007F01FF03FF07C107000F00 0F000F000F000F000F000F000F00FFF8FFF8FFF80F000F000F000F000F000F000F000F00 0F000F000F000F000F000F000F000F000F000F000F00102380A20F>I114 D E /Ft 30 118 df<387CFCFE7E3E0E1C3CF8F040070C788516> 44 DI<3078FCFC78300606788516>I<0001800003 80000380000700000700000E00000E00001C00001C0000380000380000700000700000E0 0000E00001C00001C0000380000380000700000700000E00000E00001C00001C00003800 00380000700000700000E00000E00000C0000011207E9C16>I<03E0000FF8001FFC001E 3C00380E00780F00700700700700E00380E00380E00380E00380E00380E00380E00380E0 0380F00780700700700700780F003C1E001E3C001FFC000FF80003E00011197E9816>I< 0300070007000F001F00FF00FF00E7000700070007000700070007000700070007000700 0700070007000700FFF8FFF8FFF80D197B9816>I<07E0001FF8003FFC00783E00E00700 F00780F00380600380000380000380000700000700000E00001C0000380000700000E000 01C0000380000F00001E03803803807FFF80FFFF807FFF8011197E9816>I<007C0000FC 0000FC0001DC00039C00039C00071C000F1C000E1C001E1C003C1C00381C00781C00F01C 00FFFFE0FFFFE0FFFFE0001C00001C00001C00001C00001C0001FFC001FFC001FFC01319 7F9816>52 D<3FFE007FFE007FFE00700000700000700000700000700000700000700000 77F0007FFC007FFE00780F00300700000380000380600380F00380F00380E00700781E00 3FFC001FF80007E00011197E9816>I<00F80003FC0007FE000F07001C0F00380F007806 00700000700000E7F800EFFC00FFFE00F80F00F00700F00380E00380E003807003807003 807007803807003C1E001FFC000FF80003E00011197E9816>I<07F0001FFC003FFE007C 1F00F00780E00380E00380E003807007007C1F001FFC0007F0001FFC003C1E00700700F0 0780E00380E00380E00380F007807007007C1F003FFE001FFC0007F00011197E9816>56 D<03E0000FF8001FFC003C1E00700E00700700E00700E00780E00380E00380E007807007 80780F803FFF801FFB800FF380000700000700300700780E00781C00707C003FF8001FE0 000F800011197E9816>I<3078FCFC78300000000000003078FCFC78300612789116>I<00 F80003FC0007FE000F07001C3B8038FF8079FF8073C7C07383C0E701C0E701C0E701C0E7 01C0E701C0E701C0E701C073838073C78079FF0038FE001C38000F03C007FFC003FF0000 FC0012197E9816>64 D<7FF800FFFE007FFF001C0F001C07801C03C01C01C01C01C01C01 E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C03C01C07 801C0F807FFF00FFFE007FF8001319809816>68 D<1FE0003FF0007FF800783C00300E00 000E00003E0007FE001FFE007FCE00780E00E00E00E00E00E00E00783E007FFFE03FF7E0 0FC3E013127E9116>97 DI<03F80FFC1FFE3C1E780C7000E000E0 00E000E000E000F000700778073E0E1FFC0FF803F010127D9116>I<003F00003F00003F 0000070000070000070000070003E7000FF7001FFF003C1F00780F00700700E00700E007 00E00700E00700E00700E00700700F00780F003C1F001FFFE00FF7E007C7E013197F9816 >I<03F0000FFC001FFE003C0F00780700700380E00380FFFF80FFFF80FFFF80E00000E0 00007003807803803E07801FFF0007FE0001F80011127E9116>I<001E00007F0001FF80 01C7800383000380000380007FFF00FFFF00FFFF00038000038000038000038000038000 0380000380000380000380000380000380000380007FFC00FFFE007FFC0011197F9816> I104 D<07000F800F800F800700000000000000FF80FF80FF8003 8003800380038003800380038003800380038003800380FFFCFFFEFFFC0F1A7C9916>I< 7FC000FFC0007FC00001C00001C00001C00001C00001C00001C00001C00001C00001C000 01C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF00FFFF80 7FFF0011197E9816>108 D<03E0000FF8001FFC003C1E00780F00700700E00380E00380 E00380E00380E00380F00780700700780F003C1E001FFC000FF80003E00011127E9116> 111 DI<7F0F80FF3FC07F7FE007F1E007C0C00780 000780000700000700000700000700000700000700000700000700007FFC00FFFC007FFC 0013127F9116>114 D<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8003C600EE00E F00EF81EFFFCFFF8C7E00F127D9116>I<0300000700000700000700000700007FFF00FF FF00FFFF0007000007000007000007000007000007000007000007010007038007038007 038007870003FE0001FC0000F80011177F9616>II E /Fu 34 125 df<038007800F800F001E003C0038007000E000 4000090A77A218>19 D45 D<000FE010003FF83000F80E70 01E0077003C001F0078001F00F0000F01E0000F03E0000703C0000707C0000707C000030 7800003078000030F8000000F8000000F8000000F8000000F8000000F8000000F8000000 F800000078000000780000307C0000307C0000303C0000303E0000601E0000600F0000C0 078000C003C0018001E0030000FC0E00003FFC00000FE0001C247DA223>67 DI< FFFFFFE0FFFFFFE007C007E007C001E007C000E007C0006007C0007007C0007007C00030 07C0003007C0183007C0183007C0180007C0180007C0380007C0780007FFF80007FFF800 07C0780007C0380007C0180007C0180007C0180007C0180007C0000007C0000007C00000 07C0000007C0000007C0000007C0000007C00000FFFF0000FFFF00001C227FA120>70 D72 DI76 D80 D82 D85 D87 D<1FF000383C007C0E007C0F007C0780380780000780000780 00FF8007C7801E07803C0780780780700780F00798F00798F00798F00F987817983C23F0 0FC1E015157E9418>97 D<0F0000FF0000FF00001F00000F00000F00000F00000F00000F 00000F00000F00000F00000F00000F00000F3F000F61C00F80600F00300F00380F003C0F 001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001C0F003C0F00380F00700F 80600E61C00C3F0017237FA21B>I<01FE000707000C0F801C0F80380F80780700700000 F00000F00000F00000F00000F00000F00000F000007000007800C03800C01C01800C0300 07060001F80012157E9416>I<0001E0001FE0001FE00003E00001E00001E00001E00001 E00001E00001E00001E00001E00001E00001E001F9E00707E00C03E01C01E03801E07801 E07001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07001E07801E03801E01801 E00C03F0070DFE01F1FE17237EA21B>I<01FC000707000C03801C01C03801C07801E070 00E0F000E0FFFFE0F00000F00000F00000F00000F000007000007800603800601C00C00E 018007070000FC0013157F9416>I<003E0000E18003C3C00387C00787C00F03800F0000 0F00000F00000F00000F00000F00000F00000F0000FFF800FFF8000F00000F00000F0000 0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000 0F00000F0000FFF000FFF000122380A20F>I<0000F003F1180E1E381C0E383807303807 007807807807807807807807803807003807001C0E001E1C0033F0002000002000003000 003800003FFE001FFFC00FFFE03801F0700070E00038E00038E00038E000386000307000 703800E00E038003FE0015217F9518>I<0F0000FF0000FF00001F00000F00000F00000F 00000F00000F00000F00000F00000F00000F00000F00000F0F800F31C00F40E00F80F00F 80F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F 00F00F00F00F00F0FFF3FFFFF3FF18237FA21B>I<0E001F001F001F000E000000000000 00000000000000000000000F007F007F001F000F000F000F000F000F000F000F000F000F 000F000F000F000F000F000F00FFE0FFE00B2280A10D>I<0F00FF00FF001F000F000F00 0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00 0F000F000F000F000F000F000F000F000F00FFF0FFF00C2380A20D>108 D<0F0FC07E00FF30E18700FF407203801F807C03C00F807C03C00F007803C00F007803C0 0F007803C00F007803C00F007803C00F007803C00F007803C00F007803C00F007803C00F 007803C00F007803C00F007803C00F007803C00F007803C0FFF3FF9FFCFFF3FF9FFC2615 7F9429>I<0F0F80FF31C0FF40E01F80F00F80F00F00F00F00F00F00F00F00F00F00F00F 00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0FFF3FFFFF3FF18157F94 1B>I<01FC000707000C01801800C03800E0700070700070F00078F00078F00078F00078 F00078F00078F000787000707800F03800E01C01C00E038007070001FC0015157F9418> I<0F3F00FF61C0FF80600F00700F00380F003C0F003C0F001E0F001E0F001E0F001E0F00 1E0F001E0F001E0F003C0F003C0F00380F00700F80E00F61C00F3F000F00000F00000F00 000F00000F00000F00000F00000F0000FFF000FFF000171F7F941B>I<01F860070CE00E 02E01C03E03801E07801E07801E0F001E0F001E0F001E0F001E0F001E0F001E0F001E078 01E07801E03801E01C03E00C03E0070DE001F1E00001E00001E00001E00001E00001E000 01E00001E00001E0001FFE001FFE171F7E941A>I<0F1E00FF2300FF47801F87800F8300 0F80000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000 0F00000F0000FFF800FFF8001115809413>I<0FC8307860386018E018E018F000FC007F C03FE01FF007F8007CC03CC01CC01CE01CE018F038D8708FC00E157E9413>I<06000600 06000600060006000E000E000E001E003FFCFFFC1E001E001E001E001E001E001E001E00 1E001E001E0C1E0C1E0C1E0C1E0C1E0C0F18071001E00E1F7F9E13>I<0F00F0FF0FF0FF 0FF01F01F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F 00F00F00F00F01F00F01F00702F80386FF00F8FF18157F941B>I121 D<3FFFC03C0780380F80300F00701E00 603E00603C0060780000F80000F00001E00003C00007C0C00780C00F00C01F01C01E0180 3C01807C0380780780FFFF8012157F9416>I124 D E /Fv 21 118 df<78FCFCFCFC7806067A8512>46 D<007F800001FFE0000781F8000E 007C0018003E0030001F0030000F8060000FC0600007C0F80007C0FC0007E0FE0007E0FE 0003E0FE0003E0FE0003E07C0007E0000007E0000007C0000007C000000FC000000F8000 000F8000001F0000003E0000003C00000078000000F8000000F0000001E0000003C00000 070000000E0000001C000000180000003000000060000000C00060018000600380006007 0000C00E0000C00C0000C0180001C03FFFFFC07FFFFF80FFFFFF80FFFFFF801B2F7DAE21 >50 D<00001C0000001C0000003C0000003C0000007C000000FC000000FC000001BC0000 03BC0000033C0000073C0000063C00000C3C00001C3C0000183C0000303C0000303C0000 603C0000E03C0000C03C0001803C0003803C0003003C0007003C0006003C000C003C001C 003C0018003C0030003C0030003C0060003C00E0003C00FFFFFFF8FFFFFFF800003C0000 003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000 007E00000FFFF0000FFFF01D2F7EAE21>52 D76 DI80 D82 D<03FE00000FFFC0001E03E0003F00F0003F0078003F003C001E001C000C001E0000001E 0000001E0000001E0000001E000001FE00003FFE0001FF1E0007F01E000F801E001F001E 003E001E007C001E007C001E00F8001E0CF8001E0CF8001E0CF8003E0CF8003E0C7C007E 0C3E00DF1C1F038FB80FFF07F003F803C01E1F7D9E21>97 D<001FF00000FFFC0001F01E 0007C03F000F003F000F003F001E001E003C000C003C0000007C00000078000000F80000 00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000007C0000 007C0000003C0000003E0001801E0001800F0003000F80070007C00E0001F81C0000FFF0 00001FC000191F7E9E1D>99 D<003F800000FFE00003E0F80007803C000F001E001E001E 001E000F003C000F007C000F007C000F8078000780F8000780FFFFFF80FFFFFF80F80000 00F8000000F8000000F8000000F8000000F8000000780000007C0000003C0000003C0001 801E0001800F0003000F80060007C00E0001F0380000FFF000001FC000191F7E9E1D> 101 D<0003F0000FF8003C3C00787E00F07E01E07E01E03C01C01803C00003C00003C000 03C00003C00003C00003C00003C00003C00003C00003C000FFFFC0FFFFC003C00003C000 03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000 03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000 07E0007FFF007FFF0017327FB114>I<000000F0007F03F801FFCF1C03C1FC3C0780F83C 0F0078181F007C001E003C003E003E003E003E003E003E003E003E003E003E003E003E00 3E003E001E003C001F007C000F0078000780F0000FC1E0000DFFC0001C7F000018000000 180000001C0000001C0000001E0000000FFFF8000FFFFF0007FFFF800FFFFFC01E0007E0 380001F07000007070000078E0000038E0000038E0000038E0000038E000003870000070 780000F03C0001E01E0003C007C01F0001FFFC00003FE0001E2F7E9F21>I<0780000000 FF80000000FF800000000F80000000078000000007800000000780000000078000000007 800000000780000000078000000007800000000780000000078000000007800000000780 0000000780000000078000000007800000000781FE00000787FF8000078E07C000079803 E00007B001E00007E000F00007C000F00007C000F00007C000F000078000F000078000F0 00078000F000078000F000078000F000078000F000078000F000078000F000078000F000 078000F000078000F000078000F000078000F000078000F000078000F000078000F00007 8000F000078000F000078000F0000FC001F800FFFC1FFF80FFFC1FFF8021327EB125>I< 0F001F801F801F801F800F00000000000000000000000000000000000000000000000780 7F807F800F80078007800780078007800780078007800780078007800780078007800780 0780078007800780078007800780078007800FC0FFF8FFF80D307EAF12>I<0780FF80FF 800F80078007800780078007800780078007800780078007800780078007800780078007 800780078007800780078007800780078007800780078007800780078007800780078007 80078007800780078007800780078007800FC0FFFCFFFC0E327EB112>108 D<0781FE003FC000FF87FF80FFF000FF8E07C1C0F8000F9803E3007C0007B001E6003C00 07E000FC001E0007C000F8001E0007C000F8001E0007C000F8001E00078000F0001E0007 8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780 00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000 F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0 001E00078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83 FFF0341F7E9E38>I<0781FE0000FF87FF8000FF8E07C0000F9803E00007B001E00007E0 00F00007C000F00007C000F00007C000F000078000F000078000F000078000F000078000 F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0 00078000F000078000F000078000F000078000F000078000F000078000F000078000F000 078000F0000FC001F800FFFC1FFF80FFFC1FFF80211F7E9E25>I<001FC00000FFF80001 E03C0007800F000F0007801E0003C01E0003C03C0001E03C0001E0780000F0780000F078 0000F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F878 0000F07C0001F03C0001E03C0001E01E0003C01E0003C00F00078007C01F0001F07C0000 FFF800001FC0001D1F7E9E21>I<0783E0FF8FF8FF9C7C0FB87C07F07C07E03807E00007 C00007C00007C00007800007800007800007800007800007800007800007800007800007 80000780000780000780000780000780000780000780000780000FC000FFFE00FFFE0016 1F7E9E19>114 D<00C00000C00000C00000C00000C00001C00001C00001C00003C00003 C00007C0000FC0001FC000FFFFE0FFFFE003C00003C00003C00003C00003C00003C00003 C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C03003C03003 C03003C03003C03003C03003C03003C03001E06001E06000F0C0007F80001F00142C7FAB 19>116 D<078000F000FF801FF000FF801FF0000F8001F000078000F000078000F00007 8000F000078000F000078000F000078000F000078000F000078000F000078000F0000780 00F000078000F000078000F000078000F000078000F000078000F000078000F000078000 F000078000F000078000F000078001F000078001F000078003F000038007F00003C00EF0 0001F03CF80000FFF0FF80003FC0FF80211F7E9E25>I E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%EndSetup %%Page: 1 1 1 0 bop 108 381 a Fv(Reference)22 b(Man)n(ual)f(of)g(the)h(Programming) f(Language)g(Lua)g(2.4)99 508 y Fu(Rob)q(erto)c(Ierusalimsc)o(h)o(y)49 b(Luiz)17 b(Henrique)e(de)h(Figueiredo)50 b(W)l(aldemar)17 b(Celes)g(Filho)563 587 y Ft(roberto,lhf,celes)o(@icad)o(.puc-)o(rio.b) o(r)359 694 y Fs(T)l(eC)431 709 y(Graf)534 694 y Fu(|)g(Departamen)o (to)f(de)g(Inform\023)-24 b(atica)17 b(|)f(PUC-Rio)661 790 y Ft(Date:)21 b(1996/04/29)f(18:50:08)842 957 y Fr(Abstract)72 1033 y Fq(Lua)13 b(is)h(an)f(extension)i(programmi)o(ng)c(language)h (designed)j(to)e(b)q(e)i(used)f(as)g(a)f(con\014guration)g(language)g (for)72 1083 y(an)o(y)18 b(program)e(that)i(needs)h(one.)30 b(This)18 b(do)q(cumen)o(t)f(describ)q(es)j(V)m(ersion)e(2.4)f(of)g (the)i(Lua)e(programming)72 1132 y(language)e(and)g(the)h(API)g(that)g (allo)o(ws)e(in)o(teraction)i(b)q(et)o(w)o(een)h(Lua)e(programs)f(and)i (its)f(host)h(C)g(program.)72 1182 y(It)e(also)f(presen)o(ts)j(some)d (examples)g(of)g(using)h(the)h(main)c(features)k(of)f(the)g(system.)881 1397 y Fr(Sum\023)-24 b(ario)72 1465 y Fq(Lua)15 b(\023)-20 b(e)18 b(uma)d(linguagem)f(de)j(extens~)-21 b(ao)18 b(pro)r(jetada)f (para)f(ser)i(usada)f(como)e(linguagem)g(de)i(con\014gura\030)-18 b(c~)d(ao)72 1515 y(em)12 b(qualquer)g(programa)e(que)j(precise)h(de)f (uma.)j(Este)e(do)q(cumen)o(to)d(descrev)o(e)k(a)d(v)o(ers~)-21 b(ao)13 b(2.4)e(da)h(linguagem)72 1565 y(de)18 b(programa\030)-18 b(c~)d(ao)16 b(Lua)i(e)g(a)g(In)o(terface)h(de)f(Programa\030)-18 b(c~)d(ao)16 b(que)i(p)q(ermite)g(a)f(in)o(tera\030)-18 b(c~)d(ao)18 b(en)o(tre)h(programas)72 1614 y(Lua)c(e)g(o)g(programa)e (C)h(hosp)q(edeiro.)22 b(O)15 b(do)q(cumen)o(to)g(tam)o(b)o(\023)-20 b(em)12 b(apresen)o(ta)k(alguns)e(exemplos)g(de)i(uso)f(das)72 1664 y(principais)f(caracter)-5 b(\023)-16 b(\020sticas)15 b(do)f(sistema.)-42 1807 y Fp(1)67 b(In)n(tro)r(duction)-42 1909 y Fo(Lua)18 b(is)f(an)g(extension)g(programmi)o(ng)d(language)j (designed)g(to)g(supp)q(ort)g(general)g(pro)q(cedural)g(programming)-42 1965 y(features)f(with)g(data)g(description)f(facilities.)22 b(It)16 b(is)g(supp)q(osed)h(to)f(b)q(e)g(used)h(as)f(a)g (con\014guration)g(language)f(for)-42 2022 y(an)o(y)j(program)d(that)i (needs)i(one.)27 b(Lua)18 b(has)f(b)q(een)i(designed)f(and)g(implemen)o (ted)d(b)o(y)j(W.)f(Celes)g(F.,)g(L.)h(H.)f(de)-42 2078 y(Figueiredo)e(and)g(R.)g(Ierusalimsc)o(h)o(y)l(.)29 2135 y(Lua)d(is)f(implemen)o(ted)f(as)h(a)g(library)l(,)g(written)g(in) h(C.)f(Being)g(an)h(extension)g(language,)f(Lua)h(has)f(no)h(notion)f (of)-42 2191 y(a)h(\\main")d(program:)16 b(it)10 b(only)h(w)o(orks)g Fn(emb)n(e)n(dde)n(d)f Fo(in)i(a)f(host)g(clien)o(t,)g(called)g(the)g Fn(emb)n(e)n(dding)f Fo(program.)17 b(This)11 b(host)-42 2248 y(program)i(can)j(in)o(v)o(ok)o(e)e(functions)h(to)f(execute)i(a)f (piece)g(of)g(co)q(de)g(in)g(Lua,)g(can)h(write)e(and)h(read)g(Lua)h(v) m(ariables,)-42 2304 y(and)f(can)e(register)g(C)h(functions)f(to)h(b)q (e)g(called)g(b)o(y)f(Lua)h(co)q(de.)20 b(Through)14 b(the)g(use)g(of)g(C)f(functions,)h(Lua)g(can)g(b)q(e)-42 2360 y(augmen)o(ted)d(to)h(cop)q(e)g(with)f(rather)h(di\013eren)o(t)f (domains,)f(th)o(us)i(creating)f(customized)g(programmi)o(ng)e (languages)-42 2417 y(sharing)15 b(a)g(syn)o(tactical)e(framew)o(ork.) 29 2473 y(Lua)f(is)e(free)i(distribution)e(soft)o(w)o(are,)g(and)h(pro) o(vided)g(as)g(usual)g(with)g(no)g(guaran)o(tees.)18 b(The)11 b(implemen)o(tatio)o(n)-42 2530 y(describ)q(ed)17 b(in)e(this)f(man)o(ual)g(is)g(a)o(v)m(ailable)g(b)o(y)h(anon)o(ymous)f (ftp)h(from)30 2623 y Fm(ftp.icad.puc-rio.br:/pub/lu)o(a/lua.t)o(ar.gz) 922 2748 y Fo(1)p eop %%Page: 2 2 2 1 bop -42 199 a Fo(or)15 b(b)o(y)g(WWW)g(\(W)l(orld)f(Wide)h(W)l (eb\))g(from)30 293 y Fm(http://www.inf.puc-rio.br/~)o(roberto)o (/lua.ht)o(ml)-42 436 y Fp(2)67 b(En)n(vironmen)n(t)25 b(and)e(Ch)n(unks)-42 538 y Fo(All)10 b(statemen)o(ts)e(in)i(Lua)h(are) f(executed)h(in)g(a)f Fn(glob)n(al)h(envir)n(onment)p Fo(.)17 b(This)9 b(en)o(vironmen)o(t,)h(whic)o(h)g(k)o(eeps)h(all)e (global)-42 594 y(v)m(ariables)14 b(and)g(functions,)f(is)g (initialized)g(at)g(the)h(b)q(eginning)g(of)f(the)h(em)o(b)q(edding)f (program)f(and)i(p)q(ersists)f(un)o(til)-42 651 y(its)i(end.)29 707 y(The)g(global)d(en)o(vironmen)o(t)h(can)h(b)q(e)h(manipulated)e(b) o(y)h(Lua)h(co)q(de)g(or)e(b)o(y)h(the)h(em)o(b)q(edding)f(program,)e (whic)o(h)-42 764 y(can)k(read)f(and)g(write)g(global)e(v)m(ariables)i (using)g(functions)g(in)g(the)g(library)f(that)h(implemen)o(ts)d(Lua.) 29 820 y(Global)g(v)m(ariables)h(do)h(not)f(need)h(declaration.)k(An)o (y)c(v)m(ariable)f(is)g(assumed)g(to)g(b)q(e)h(global)e(unless)i (explicitly)-42 876 y(declared)20 b(lo)q(cal)e(\(see)h(lo)q(cal)f (declarations,)h(Section)g(4.4.5\).)30 b(Before)19 b(the)g(\014rst)g (assignmen)o(t,)e(the)j(v)m(alue)f(of)g(a)-42 933 y(global)14 b(v)m(ariable)h(is)g Fl(nil)p Fo(.)29 989 y(The)g(unit)g(of)g (execution)h(of)e(Lua)i(is)f(called)f(a)h Fn(chunk)p Fo(.)20 b(The)15 b(syn)o(tax)g(for)f(c)o(h)o(unks)i(is:)1480 973 y Fk(1)42 1062 y Fn(chunk)50 b Fj(!)g(f)p Fn(statement)32 b Fj(j)16 b Fn(function)s Fj(g)-42 1134 y Fo(A)f(c)o(h)o(unk)f(ma)o(y)e (con)o(tain)h(statemen)o(ts)f(and)i(function)g(de\014nitions,)g(and)g (ma)o(y)e(b)q(e)j(in)f(a)g(\014le)g(or)f(in)h(a)g(string)f(inside)-42 1190 y(the)k(host)f(program.)22 b(When)17 b(a)g(c)o(h)o(unk)g(is)f (executed,)h(\014rst)g(all)e(its)h(functions)g(and)h(statemen)o(ts)e (are)h(compiled,)-42 1247 y(then)d(the)e(statemen)o(ts)f(are)i (executed)g(in)g(sequen)o(tial)f(order.)18 b(All)11 b(mo)q (di\014cations)f(a)i(c)o(h)o(unk)g(e\013ects)f(on)h(the)g(global)-42 1303 y(en)o(vironmen)o(t)k(p)q(ersist)h(after)f(its)g(end.)27 b(Those)17 b(include)g(mo)q(di\014cations)f(to)g(global)g(v)m(ariables) g(and)i(de\014nitions)-42 1359 y(of)d(new)h(functions)285 1343 y Fk(2)304 1359 y Fo(.)29 1416 y(Ch)o(unks)j(ma)o(y)e(b)q(e)i (pre-compiled;)g(see)g(program)d Fm(luac)i Fo(for)g(details.)30 b(Ascii)18 b(\014les)g(with)g(c)o(h)o(unk)h(co)q(de)g(and)-42 1472 y(their)e(binary)g(pre-compiled)f(forms)f(are)i(in)o(terc)o (hangeable.)25 b(Lua)17 b(automatically)d(detects)j(the)g(\014le)g(t)o (yp)q(e)g(and)-42 1529 y(acts)e(accordingly)l(.)-42 1672 y Fp(3)67 b(T)n(yp)r(es)-42 1773 y Fo(Lua)14 b(is)g(a)f(dynamically)f (t)o(yp)q(ed)i(language.)k(V)l(ariables)13 b(do)h(not)f(ha)o(v)o(e)g(t) o(yp)q(es;)h(only)f(v)m(alues)h(do.)19 b(All)13 b(v)m(alues)h(carry)-42 1830 y(their)h(o)o(wn)g(t)o(yp)q(e.)20 b(Therefore,)15 b(there)g(are)g(no)g(t)o(yp)q(e)g(de\014nitions)g(in)g(the)g(language.) 29 1886 y(There)20 b(are)f(sev)o(en)h(basic)f(t)o(yp)q(es)h(in)g(Lua:) 29 b Fn(nil)p Fo(,)19 b Fn(numb)n(er)p Fo(,)h Fn(string)p Fo(,)g Fn(function)p Fo(,)g Fn(CF)m(unction)p Fo(,)e Fn(user)n(data)p Fo(,)j(and)-42 1943 y Fn(table)p Fo(.)f Fn(Nil)14 b Fo(is)g(the)g(t)o(yp)q(e)h(of)f(the)h(v)m(alue)g Fl(nil)p Fo(,)e(whose)h(main)f(prop)q(ert)o(y)h(is)h(to)e(b)q(e)j (di\013eren)o(t)d(from)g(an)o(y)h(other)h(v)m(alue.)-42 1999 y Fn(Numb)n(er)h Fo(represen)o(ts)f(real)f(\(\015oating)g(p)q(oin) o(t\))g(n)o(um)o(b)q(ers,)h(while)f Fn(string)h Fo(has)g(the)g(usual)g (meaning.)29 2056 y(F)l(unctions)20 b(are)f(considered)i(\014rst-class) e(v)m(alues)h(in)g(Lua.)34 b(This)19 b(means)g(that)h(functions)f(can)h (b)q(e)h(stored)-42 2112 y(in)c(v)m(ariables,)g(passed)g(as)g(argumen)o (ts)f(to)g(other)h(functions)g(and)g(returned)h(as)e(results.)26 b(When)17 b(a)g(function)g(is)-42 2169 y(de\014ned)g(in)d(Lua,)h(its)f (b)q(o)q(dy)i(is)e(compiled)f(and)i(stored)g(in)f(a)h(giv)o(en)f(v)m (ariable.)19 b(Lua)c(can)g(call)f(\(and)h(manipulate\))-42 2225 y(functions)g(written)g(in)g(Lua)g(and)h(functions)f(written)f(in) h(C;)f(the)i(latter)e(ha)o(v)o(e)g(t)o(yp)q(e)i Fn(CF)m(unction)s Fo(.)29 2282 y(The)i(t)o(yp)q(e)f Fn(user)n(data)h Fo(is)g(pro)o(vided) f(to)g(allo)o(w)f(arbitrary)f(C)j(p)q(oin)o(ters)f(to)g(b)q(e)h(stored) f(in)g(Lua)h(v)m(ariables.)26 b(It)-42 2338 y(corresp)q(onds)18 b(to)f Fm(void*)f Fo(and)i(has)f(no)g(pre-de\014ned)j(op)q(erations)c (in)h(Lua,)h(b)q(esides)g(assignmen)o(t)d(and)j(equalit)o(y)-42 2394 y(test.)24 b(Ho)o(w)o(ev)o(er,)16 b(b)o(y)g(using)h(fallbac)o(ks,) e(the)i(programmer)c(ma)o(y)i(de\014ne)j(op)q(erations)e(for)g Fn(user)n(data)h Fo(v)m(alues;)g(see)-42 2451 y(Section)f(4.7.)p -42 2482 780 2 v 10 2509 a Fi(1)28 2524 y Fh(As)c(usual,)i Fg(f)p Ff(a)s Fg(g)f Fh(means)h(0)f(or)g(more)g Ff(a)s Fh('s,)f([)p Ff(a)s Fh(])f(means)j(an)f(optional)j Ff(a)c Fh(and)i Fg(f)p Ff(a)s Fg(g)1179 2509 y Fi(+)1217 2524 y Fh(means)f(one)h(or)f(more)g Ff(a)s Fh('s.)10 2554 y Fi(2)28 2570 y Fh(Actually)m(,)h(a)f(function)h(de\014nition)i(is)d (an)h(assignmen)o(t)h(to)d(a)h(global)j(v)n(ariable;)e(see)f(Section)i (3.)922 2748 y Fo(2)p eop %%Page: 3 3 3 2 bop 29 199 a Fo(The)12 b(t)o(yp)q(e)g Fn(table)g Fo(implemen)o(ts)d(asso)q(ciativ)o(e)i(arra)o(ys,)g(that)g(is,)h(arra)o (ys)e(whic)o(h)i(can)g(b)q(e)h(indexed)g(not)f(only)f(with)-42 256 y(n)o(um)o(b)q(ers,)k(but)g(with)g(an)o(y)g(v)m(alue)h(\(except)f Fl(nil)p Fo(\).)20 b(Therefore,)15 b(this)f(t)o(yp)q(e)i(ma)o(y)e(b)q (e)i(used)g(not)f(only)g(to)f(represen)o(t)-42 312 y(ordinary)h(arra)o (ys,)e(but)i(also)f(sym)o(b)q(ol)g(tables,)g(sets,)g(records,)h(etc.)20 b(T)l(o)15 b(represen)o(t)g(records,)f(Lua)i(uses)f(the)g(\014eld)-42 369 y(name)k(as)f(an)h(index.)32 b(The)19 b(language)g(supp)q(orts)g (this)f(represen)o(tation)g(b)o(y)i(pro)o(viding)e Fm(a.name)g Fo(as)g(syn)o(tactic)-42 425 y(sugar)i(for)f Fm(a["name"])p Fo(.)33 b(T)l(ables)20 b(ma)o(y)e(also)h(carry)g(metho)q(ds.)34 b(Because)20 b(functions)g(are)g(\014rst)f(class)h(v)m(alues,)-42 482 y(table)d(\014elds)g(ma)o(y)e(con)o(tain)g(functions.)25 b(The)16 b(form)f Fm(t:f\(x\))h Fo(is)g(syn)o(tactic)g(sugar)g(for)g Fm(t.f\(t,x\))p Fo(,)g(whic)o(h)g(calls)-42 538 y(the)g(metho)q(d)e Fm(f)h Fo(from)f(the)h(table)g Fm(t)g Fo(passing)f(itself)g(as)h(the)g (\014rst)g(parameter.)29 594 y(It)d(is)f(imp)q(ortan)o(t)e(to)i(notice) g(that)g(tables)g(are)g(ob)s(jects,)g(and)h(not)f(v)m(alues.)19 b(V)l(ariables)10 b(cannot)i(con)o(tain)e(tables,)-42 651 y(only)15 b(references)g(to)f(them.)19 b(Assignmen)o(t,)12 b(parameter)h(passing)i(and)f(returns)h(alw)o(a)o(ys)e(manipulate)g (references)-42 707 y(to)k(tables,)f(and)i(do)f(not)f(imply)g(an)o(y)h (kind)g(of)f(cop)o(y)l(.)26 b(Moreo)o(v)o(er,)16 b(tables)g(m)o(ust)f (b)q(e)j(explicitly)e(created)h(b)q(efore)-42 764 y(used;)f(see)f (Section)g(4.5.7.)-42 907 y Fp(4)67 b(The)23 b(Language)-42 1008 y Fo(This)15 b(section)g(describ)q(es)h(the)f(lexis,)f(syn)o(tax)h (and)g(seman)o(tics)e(of)i(Lua.)-42 1130 y Fe(4.1)56 b(Lexical)19 b(Con)n(v)n(en)n(tions)-42 1216 y Fo(Lua)g(is)e(a)g(case)h (sensitiv)o(e)f(language.)27 b(Iden)o(ti\014ers)18 b(can)g(b)q(e)g(an)o (y)f(string)g(of)g(letters,)h(digits,)e(and)i(underscores,)-42 1272 y(not)d(b)q(eginning)h(with)e(a)h(digit.)k(The)c(follo)o(wing)e(w) o(ords)i(are)f(reserv)o(ed,)h(and)h(cannot)f(b)q(e)h(used)f(as)g(iden)o (ti\014ers:)173 1366 y Fm(and)143 b(do)191 b(else)142 b(elseif)95 b(end)173 1422 y(function)23 b(if)191 b(local)118 b(nil)167 b(not)173 1478 y(or)g(repeat)95 b(return)f(until)119 b(then)95 b(while)29 1572 y Fo(The)15 b(follo)o(wing)e(strings)i (denote)g(other)g(tok)o(ens:)173 1665 y Fm(~=)48 b(<=)f(>=)h(<)71 b(>)h(==)47 b(=)71 b(..)48 b(+)71 b(-)h(*)f(/)173 1721 y(\045)h(\()f(\))h({)f(})h([)f(])g(;)h(,)f(.)29 1815 y Fo(Literal)17 b(strings)f(can)i(b)q(e)g(delimited)e(b)o(y)i(matc)o (hing)d(single)i(or)g(double)h(quotes,)g(and)f(can)h(con)o(tain)f(the)h (C-)-42 1871 y(lik)o(e)i(escap)q(e)i(sequences)g Fm('\\n')p Fo(,)f Fm('\\t')f Fo(and)h Fm('\\r')p Fo(.)36 b(Literal)20 b(strings)g(can)g(also)g(b)q(e)i(delimited)d(b)o(y)h(matc)o(hing)-42 1928 y Fm([[)k(...)g(]])p Fo(.)18 b(Literals)12 b(in)h(this)f(last)g (form)f(ma)o(y)h(run)h(for)f(sev)o(eral)g(lines,)h(ma)o(y)e(con)o(tain) h(nested)i Fm([[)23 b(...)h(]])p Fo(,)12 b(and)-42 1984 y(do)k(not)e(in)o(terpret)h(escap)q(e)h(sequences.)29 2041 y(Commen)o(ts)c(start)h(an)o(ywhere)i(outside)g(a)f(string)g(with) g(a)g(double)h(h)o(yphen)h(\()p Fm(--)p Fo(\))e(and)h(run)g(un)o(til)f (the)g(end)i(of)-42 2097 y(the)g(line.)29 2153 y(Numerical)h(constan)o (ts)g(ma)o(y)f(b)q(e)j(written)e(with)h(an)g(optional)e(decimal)h (part,)h(and)g(an)g(optional)f(decimal)-42 2210 y(exp)q(onen)o(t.)k (Examples)14 b(of)g(v)m(alid)h(n)o(umerical)f(constan)o(ts)g(are:)126 2303 y Fm(4)119 b(4.0)g(0.4)g(4.57e-3)f(0.3e12)-42 2425 y Fe(4.2)56 b(Co)r(ercion)-42 2511 y Fo(Lua)19 b(pro)o(vides)f(some)f (automatic)f(con)o(v)o(ersions.)29 b(An)o(y)19 b(arithmetic)d(op)q (eration)i(applied)g(to)g(a)g(string)f(tries)h(to)-42 2567 y(con)o(v)o(ert)d(that)f(string)g(to)h(a)f(n)o(um)o(b)q(er,)g (follo)o(wing)f(the)i(usual)g(rules.)20 b(Con)o(v)o(ersely)l(,)14 b(whenev)o(er)h(a)g(n)o(um)o(b)q(er)f(is)h(used)-42 2623 y(when)h(a)f(string)f(is)h(exp)q(ected,)h(that)e(n)o(um)o(b)q(er)h(is)g (con)o(v)o(erted)g(to)f(a)h(string,)f(according)h(to)f(the)h(follo)o (wing)e(rule:)20 b(if)922 2748 y(3)p eop %%Page: 4 4 4 3 bop -42 199 a Fo(the)13 b(n)o(um)o(b)q(er)g(is)f(an)h(in)o(teger,)f (it)g(is)g(written)g(without)g(exp)q(onen)o(t)h(or)f(decimal)f(p)q(oin) o(t;)i(otherwise,)f(it)g(is)h(formatted)-42 256 y(follo)o(wing)g(the)j (\\)p Fm(\045g)p Fo(")e(con)o(v)o(ersion)g(sp)q(eci\014cation)h(of)g (the)h(standard)e Fm(printf)h Fo(C)g(function.)-42 377 y Fe(4.3)56 b(Adjustmen)n(t)-42 463 y Fo(F)l(unctions)14 b(in)g(Lua)h(can)f(return)g(man)o(y)f(v)m(alues.)19 b(Because)c(there)f (are)g(no)g(t)o(yp)q(e)h(declarations,)d(the)i(system)f(do)q(es)-42 520 y(not)18 b(kno)o(w)f(ho)o(w)g(man)o(y)f(v)m(alues)i(a)g(function)f (will)g(return,)g(or)h(ho)o(w)f(man)o(y)f(parameters)g(it)h(needs.)28 b(Therefore,)-42 576 y(sometimes,)10 b(a)i(list)g(of)g(v)m(alues)h(m)o (ust)e(b)q(e)i Fn(adjuste)n(d)5 b Fo(,)13 b(at)f(run)g(time,)f(to)h(a)h (giv)o(en)f(length.)18 b(If)13 b(there)g(are)f(more)f(v)m(alues)-42 633 y(than)17 b(are)f(needed,)i(the)f(last)f(v)m(alues)h(are)f(thro)o (wn)g(a)o(w)o(a)o(y)l(.)23 b(If)17 b(there)g(are)f(more)g(needs)h(than) g(v)m(alues,)g(the)f(list)g(is)-42 689 y(extended)j(with)e(as)h(man)o (y)e Fl(nil)p Fo('s)h(as)g(needed.)29 b(Adjustmen)o(t)17 b(o)q(ccurs)h(in)f(m)o(ultiple)f(assignmen)o(t)g(and)i(function)-42 746 y(calls.)-42 867 y Fe(4.4)56 b(Statemen)n(ts)-42 953 y Fo(Lua)19 b(supp)q(orts)f(an)f(almost)f(con)o(v)o(en)o(tional)g (set)i(of)f(statemen)o(ts.)26 b(The)18 b(con)o(v)o(en)o(tional)e (commands)f(include)k(as-)-42 1009 y(signmen)o(t,)d(con)o(trol)f (structures)i(and)g(pro)q(cedure)h(calls.)24 b(Non-con)o(v)o(en)o (tional)16 b(commands)e(include)k(table)e(con-)-42 1066 y(structors,)e(explained)i(in)f(Section)g(4.5.7,)e(and)i(lo)q(cal)g(v)m (ariable)f(declarations.)-42 1186 y Fl(4.4.1)52 b(Blo)q(c)o(ks)-42 1272 y Fo(A)15 b(blo)q(c)o(k)f(is)f(a)h(list)f(of)h(statemen)o(ts,)e (executed)j(sequen)o(tially)l(.)k(An)o(y)14 b(statemen)o(t)e(can)j(b)q (e)g(optionally)d(follo)o(w)o(ed)h(b)o(y)-42 1328 y(a)i(semicolon.)42 1388 y Fn(blo)n(ck)49 b Fj(!)h(f)p Fn(stat)16 b(sc)s Fj(g)g Fo([)p Fn(r)n(et)f(sc)s Fo(])98 1444 y Fn(sc)49 b Fj(!)h Fo([';'])-42 1512 y(F)l(or)13 b(syn)o(tactic)f(reasons,)g(a)h (return)g(statemen)o(t)e(can)i(only)g(b)q(e)g(written)f(as)h(the)g (last)f(statemen)o(t)f(of)h(a)h(blo)q(c)o(k.)19 b(This)-42 1569 y(restriction)14 b(also)g(a)o(v)o(oids)g(some)g(\\statemen)o(t)f (not)i(reac)o(hed")g(errors.)-42 1689 y Fl(4.4.2)52 b(Assignmen)o(t)-42 1775 y Fo(The)18 b(language)e(allo)o(ws)f(m)o(ultiple)g(assignmen)o(t.) 23 b(Therefore,)17 b(the)g(syn)o(tax)g(de\014nes)h(a)f(list)e(of)i(v)m (ariables)f(on)h(the)-42 1831 y(left)h(side,)g(and)h(a)e(list)g(of)h (expressions)g(on)g(the)g(righ)o(t)f(side.)29 b(Both)18 b(lists)f(ha)o(v)o(e)g(their)h(elemen)o(ts)f(separated)h(b)o(y)-42 1888 y(commas.)116 1947 y Fn(stat)50 b Fj(!)g Fn(varlist1)16 b Fo('=')g Fn(explist1)42 2003 y(varlist1)50 b Fj(!)g Fn(var)17 b Fj(f)p Fo(',')d Fn(var)5 b Fj(g)-42 2072 y Fo(This)15 b(statemen)o(t)d(\014rst)i(ev)m(aluates)g(all)g(v)m(alues) g(on)h(the)f(righ)o(t)g(side)g(and)h(ev)o(en)o(tual)f(indices)g(on)h (the)f(left)g(side,)g(and)-42 2128 y(then)i(mak)o(es)e(the)h(assignmen) o(ts.)j(Therefore,)c(it)h(can)g(b)q(e)h(used)g(to)e(exc)o(hange)i(t)o (w)o(o)e(v)m(alues,)h(as)f(in)30 2222 y Fm(x,)24 b(y)f(=)h(y,)g(x)-42 2316 y Fo(Before)f(the)g(assignmen)o(t,)f(the)g(list)f(of)i(v)m(alues)f (is)g Fn(adjuste)n(d)h Fo(to)f(the)h(length)f(of)g(the)h(list)e(of)h(v) m(ariables;)j(see)-42 2372 y(Section)16 b(4.3.)42 2444 y Fn(var)50 b Fj(!)g Fn(name)-42 2516 y Fo(A)16 b(single)e(name)g(can)i (denote)f(a)g(global)f(or)h(a)g(lo)q(cal)f(v)m(ariable,)g(or)h(a)g (formal)d(parameter.)42 2589 y Fn(var)50 b Fj(!)g Fn(var)17 b Fo('[')e Fn(exp1)i Fo(']')922 2748 y(4)p eop %%Page: 5 5 5 4 bop -42 199 a Fo(Square)20 b(brac)o(k)o(ets)f(are)h(used)g(to)f (index)h(a)f(table.)33 b(If)20 b Fm(var)f Fo(results)g(in)g(a)h(table)f (v)m(alue,)h(the)g(\014eld)g(indexed)h(b)o(y)-42 256 y(the)c(expression)f(v)m(alue)h(gets)f(the)h(assigned)f(v)m(alue.)24 b(Otherwise,)16 b(the)h(fallbac)o(k)e Fn(settable)h Fo(is)g(called,)g (with)f(three)-42 312 y(parameters:)31 b(the)22 b(v)m(alue)f(of)g Fm(var)p Fo(,)h(the)g(v)m(alue)g(of)f(expression,)h(and)g(the)f(v)m (alue)h(b)q(eing)g(assigned)f(to)g(it;)i(see)-42 369 y(Section)16 b(4.7.)42 441 y Fn(var)50 b Fj(!)g Fn(var)17 b Fo('.')j Fn(name)-42 513 y Fo(The)c(syn)o(tax)e Fm(var.NAME)g Fo(is)h(just)g(syn)o(tactic)f(sugar)h(for)f Fm(var["NAME"])p Fo(.)-42 633 y Fl(4.4.3)52 b(Con)o(trol)17 b(Structures)-42 719 y Fo(The)k(condition)e(expression)h(of)f(a)h(con)o(trol)e (structure)i(can)g(return)g(an)o(y)g(v)m(alue.)34 b(All)19 b(v)m(alues)h(di\013eren)o(t)f(from)-42 775 y Fl(nil)f Fo(are)g(considered)g(true,)h(while)f Fl(nil)f Fo(is)h(considered)h (false.)28 b Fm(if)p Fo('s,)18 b Fm(while)p Fo('s)f(and)h Fm(repeat)p Fo('s)f(ha)o(v)o(e)h(the)h(usual)-42 832 y(meaning.)70 900 y Fn(stat)50 b Fj(!)g Fl(while)15 b Fn(exp1)i Fl(do)f Fn(blo)n(ck)g Fl(end)245 956 y Fj(j)32 b Fl(rep)q(eat)17 b Fn(blo)n(ck)f Fl(un)o(til)f Fn(exp1)245 1013 y Fj(j)32 b Fl(if)16 b Fn(exp1)h Fl(then)g Fn(blo)n(ck)e Fj(f)p Fn(elseif)8 b Fj(g)16 b Fo([)p Fl(else)f Fn(blo)n(ck)5 b Fo(])15 b Fl(end)42 1069 y Fn(elseif)49 b Fj(!)h Fl(elseif)15 b Fn(exp1)i Fl(then)f Fn(blo)n(ck)29 1162 y Fo(A)g Fm(return)g Fo(is)g(used)g(to)g(return)g(v)m(alues)h(from)d(a)i(function.)23 b(Because)17 b(a)f(function)g(ma)o(y)f(return)h(more)f(than)-42 1219 y(one)h(v)m(alue,)f(the)g(syn)o(tax)g(for)f(a)h(return)g(statemen) o(t)e(is:)42 1291 y Fn(r)n(et)50 b Fj(!)g Fl(return)16 b Fn(explist)-42 1483 y Fl(4.4.4)52 b(F)l(unction)18 b(Calls)e(as)h(Statemen)o(ts)-42 1569 y Fo(Because)f(of)f(p)q(ossible)g (side-e\013ects,)g(function)g(calls)f(can)h(b)q(e)h(executed)g(as)f (statemen)o(ts.)42 1641 y Fn(stat)50 b Fj(!)g Fn(functionc)n(al)r(l)-42 1713 y Fo(Ev)o(en)o(tual)15 b(returned)g(v)m(alues)h(are)f(thro)o(wn)f (a)o(w)o(a)o(y)l(.)19 b(F)l(unction)c(calls)f(are)h(explained)g(in)g (Section)g(4.5.8.)-42 1833 y Fl(4.4.5)52 b(Lo)q(cal)19 b(Declarations)-42 1919 y Fo(Lo)q(cal)e(v)m(ariables)e(can)h(b)q(e)h (declared)f(an)o(ywhere)g(inside)g(a)g(blo)q(c)o(k.)22 b(Their)16 b(scop)q(e)h(b)q(egins)f(after)f(the)i(declaration)-42 1975 y(and)f(lasts)e(un)o(til)g(the)i(end)f(of)g(the)g(blo)q(c)o(k.)20 b(The)15 b(declaration)f(ma)o(y)g(include)i(an)f(initial)e(assignmen)o (t:)92 2044 y Fn(stat)50 b Fj(!)g Fl(lo)q(cal)17 b Fn(de)n(clist)e Fo([)p Fn(init)t Fo(])42 2100 y Fn(de)n(clist)49 b Fj(!)h Fn(name)16 b Fj(f)p Fo(',')f Fn(name)s Fj(g)96 2157 y Fn(init)49 b Fj(!)h Fo('=')16 b Fn(explist1)-42 2225 y Fo(If)f(there)f(is)f(an)h(initial)e(assignmen)o(t,)g(it)h(has)h(the)g (same)f(seman)o(tics)f(of)h(a)h(m)o(ultiple)e(assignmen)o(t.)17 b(Otherwise,)d(all)-42 2281 y(v)m(ariables)h(are)g(initialized)e(with)i Fl(nil)p Fo(.)-42 2403 y Fe(4.5)56 b(Expressions)-42 2489 y Fl(4.5.1)c(Simple)15 b(Expressions)-42 2575 y Fo(Simple)f(expressions)h(are:)922 2748 y(5)p eop %%Page: 6 6 6 5 bop 42 193 a Fn(exp)50 b Fj(!)g Fo('\(')16 b Fn(exp)g Fo('\)')42 250 y Fn(exp)50 b Fj(!)g Fl(nil)42 306 y Fn(exp)g Fj(!)g Fo('n)o(um)o(b)q(er')42 362 y Fn(exp)g Fj(!)g Fo('literal')42 419 y Fn(exp)g Fj(!)g Fn(var)-42 490 y Fo(Num)o(b)q(ers)22 b(\(n)o(umerical)f(constan)o(ts\))g(and)i(string) f(literals)f(are)h(explained)h(in)f(Section)h(4.1.)41 b(V)l(ariables)22 b(are)-42 546 y(explained)16 b(in)f(Section)g(4.4.2.) -42 665 y Fl(4.5.2)52 b(Arithmetic)15 b(Op)q(erators)-42 751 y Fo(Lua)21 b(supp)q(orts)g(the)g(usual)f(arithmetic)e(op)q (erators.)35 b(These)21 b(op)q(erators)f(are)g(the)g(binary)h Fm(+)p Fo(,)g Fm(-)p Fo(,)g Fm(*)p Fo(,)h Fm(/)e Fo(and)h Fm(^)-42 808 y Fo(\(exp)q(onen)o(tiation\),)15 b(and)h(the)g(unary)g Fm(-)p Fo(.)22 b(If)16 b(the)g(op)q(erands)g(are)g(n)o(um)o(b)q(ers,)f (or)g(strings)g(that)g(can)h(b)q(e)h(con)o(v)o(erted)-42 864 y(to)d(n)o(um)o(b)q(ers,)g(according)g(to)g(the)g(rules)g(giv)o(en) g(in)h(Section)f(4.2,)f(all)h(op)q(erations)f(but)i(exp)q(onen)o (tiation)e(ha)o(v)o(e)h(the)-42 920 y(usual)f(meaning.)18 b(Otherwise,)13 b(the)g(fallbac)o(k)f(\\arith")g(is)g(called;)h(see)g (Section)g(4.7.)19 b(An)13 b(exp)q(onen)o(tiation)f(alw)o(a)o(ys)-42 977 y(calls)k(this)f(fallbac)o(k.)22 b(The)16 b(standard)g (mathematical)c(library)j(rede\014nes)j(this)d(fallbac)o(k,)g(giving)g (the)h(exp)q(ected)-42 1033 y(meaning)e(to)h(exp)q(onen)o(tiation;)f (see)h(Section)g(6.3.)-42 1152 y Fl(4.5.3)52 b(Relational)18 b(Op)q(erators)-42 1238 y Fo(Lua)e(o\013ers)e(the)i(follo)o(wing)d (relational)g(op)q(erators:)126 1327 y Fm(<)71 b(>)g(<=)48 b(>=)f(~=)h(==)-42 1415 y Fo(All)15 b(return)g Fl(nil)f Fo(as)h(false)g(and)g(a)g(v)m(alue)g(di\013eren)o(t)g(from)e Fl(nil)h Fo(\(actually)g(the)h(n)o(um)o(b)q(er)g(1\))g(as)f(true.)29 1472 y(Equalit)o(y)h(\014rst)h(compares)f(the)i(t)o(yp)q(es)f(of)h(its) e(op)q(erands.)24 b(If)17 b(they)g(are)f(di\013eren)o(t,)g(the)g (result)g(is)g Fl(nil)p Fo(.)23 b(Oth-)-42 1528 y(erwise,)18 b(their)f(v)m(alues)h(are)g(compared.)26 b(Num)o(b)q(ers)17 b(and)h(strings)f(are)h(compared)e(in)i(the)g(usual)f(w)o(a)o(y)l(.)27 b(T)l(ables,)-42 1585 y(CF)l(unctions,)14 b(and)g(functions)g(are)g (compared)f(b)o(y)h(reference,)h(that)e(is,)h(t)o(w)o(o)e(tables)i(are) g(considered)g(equal)g(only)-42 1641 y(if)h(they)g(are)g(the)h(same)d (table.)20 b(The)15 b(op)q(erator)g Fm(~=)f Fo(is)h(exactly)g(the)g (negation)f(of)h(equalit)o(y)f(\()p Fm(==)p Fo(\).)29 1698 y(The)19 b(other)g(op)q(erators)f(w)o(ork)g(as)g(follo)o(ws.)29 b(If)19 b(b)q(oth)g(argumen)o(ts)e(are)i(n)o(um)o(b)q(ers,)f(they)h (are)g(compared)f(as)-42 1754 y(suc)o(h.)27 b(Otherwise,)17 b(if)g(b)q(oth)g(argumen)o(ts)f(can)h(b)q(e)h(con)o(v)o(erted)f(to)g (strings,)f(their)h(v)m(alues)g(are)g(compared)g(using)-42 1811 y(lexicographical)d(order.)20 b(Otherwise,)14 b(the)i(fallbac)o(k) d(\\order")i(is)g(called;)f(see)h(Section)h(4.7.)-42 1930 y Fl(4.5.4)52 b(Logical)18 b(Op)q(erators)-42 2016 y Fo(All)f(logical)f(op)q(erators,)g(lik)o(e)h(con)o(trol)f (structures,)h(consider)g Fl(nil)g Fo(as)g(false)g(and)g(an)o(ything)g (else)g(as)g(true.)26 b(The)-42 2072 y(logical)14 b(op)q(erators)g (are:)269 2161 y Fm(and)71 b(or)g(not)-42 2249 y Fo(The)17 b(op)q(erators)f Fm(and)g Fo(and)h Fm(or)f Fo(use)h(short-cut)f(ev)m (aluation,)g(that)g(is,)g(the)h(second)g(op)q(erand)g(is)f(ev)m (aluated)h(only)-42 2306 y(if)e(necessary)l(.)-42 2425 y Fl(4.5.5)52 b(Concatenation)-42 2511 y Fo(Lua)18 b(o\013ers)d(a)i (string)f(concatenation)g(op)q(erator,)f(denoted)j(b)o(y)e(\\)p Fm(..)p Fo(".)24 b(If)17 b(op)q(erands)g(are)g(strings)e(or)i(n)o(um)o (b)q(ers,)-42 2567 y(they)c(are)g(con)o(v)o(erted)f(to)g(strings)g (according)g(to)g(the)h(rules)f(in)h(Section)f(4.2.)18 b(Otherwise,)13 b(the)g(fallbac)o(k)e(\\concat")-42 2623 y(is)k(called;)g(see)g(Section)g(4.7.)922 2748 y(6)p eop %%Page: 7 7 7 6 bop -42 199 a Fl(4.5.6)52 b(Precedence)-42 285 y Fo(Op)q(erator)15 b(precedence)i(follo)o(ws)d(the)h(table)g(b)q(elo)o (w,)f(from)f(the)j(lo)o(w)o(er)d(to)i(the)g(higher)g(priorit)o(y:)269 379 y Fm(and)71 b(or)269 435 y(<)g(>)h(<=)47 b(>=)h(~=)f(==)269 492 y(..)269 548 y(+)71 b(-)269 605 y(*)g(/)269 661 y(not)47 b(-)24 b(\(unary\))269 718 y(^)-42 811 y Fo(All)15 b(binary)g(op)q (erators)f(are)h(left)f(asso)q(ciativ)o(e,)g(except)h(for)g Fm(^)p Fo(,)g(whic)o(h)g(is)f(righ)o(t)g(asso)q(ciativ)o(e.)-42 931 y Fl(4.5.7)52 b(T)l(able)18 b(Constructors)-42 1017 y Fo(T)l(able)d(constructors)f(are)h(expressions)g(that)f(create)h (tables;)f(ev)o(ery)h(time)e(a)i(constructor)f(is)h(ev)m(aluated,)g(a)f (new)-42 1074 y(table)f(is)g(created.)19 b(Constructors)12 b(can)h(b)q(e)h(used)g(to)e(create)h(empt)o(y)f(tables,)g(or)h(to)g (create)g(a)f(table)h(and)g(initialize)-42 1130 y(some)h(\014elds.)29 1187 y(The)h(general)g(syn)o(tax)g(for)f(constructors)h(is:)42 1255 y Fn(table)n(c)n(onstructor)49 b Fj(!)i Fo(')p Fj(f)p Fo(')15 b Fn(\014eld)r(list)g Fo(')p Fj(g)p Fo(')212 1311 y Fn(\014eld)r(list)48 b Fj(!)j Fn(l\014eld)r(list)31 b Fj(j)16 b Fn(\016eld)r(list)31 b Fj(j)16 b Fn(l\014eld)r(list)f Fo(';')g Fn(\016eld)r(list)200 1368 y(l\014eld)r(list)48 b Fj(!)j Fo([)p Fn(l\014eld)r(list1)6 b Fo(])197 1424 y Fn(\016eld)r(list)49 b Fj(!)i Fo([)p Fn(\016eld)r(list1)6 b Fo(])29 1517 y(The)15 b(form)f Fn(l\014eld)r(list1)g Fo(is)h(used)g(to)g(initialize)e(lists.)42 1589 y Fn(l\014eld)r(list1) 49 b Fj(!)h Fn(exp)16 b Fj(f)p Fo(',')f Fn(exp)s Fj(g)h Fo([','])-42 1662 y(The)i(expressions)f(in)g(the)g(list)f(are)h (assigned)g(to)g(consecutiv)o(e)g(n)o(umerical)f(indexes,)h(starting)f (with)h(1.)25 b(As)18 b(an)-42 1718 y(example:)30 1812 y Fm(a)24 b(=)g({"v1",)f("v2",)g(34})-42 1906 y Fo(is)15 b(equiv)m(alen)o(t)g(to:)30 2000 y Fm(temp)23 b(=)h({})30 2056 y(temp[1])f(=)h("v1")30 2112 y(temp[2])f(=)h("v2")30 2169 y(temp[3])f(=)h(34)30 2225 y(a)g(=)g(temp)29 2319 y Fo(The)15 b(next)h(form)d(initializes)g(named)i(\014elds)g(in)g(a)g (table.)42 2378 y Fn(\016eld)r(list1)50 b Fj(!)g Fn(\016eld)16 b Fj(f)p Fo(',')f Fn(\016eld)5 b Fj(g)15 b Fo([','])127 2435 y Fn(\016eld)50 b Fj(!)g Fn(name)16 b Fo('=')g Fn(exp)-42 2503 y Fo(As)g(an)f(example:)30 2597 y Fm(a)24 b(=)g({x)f(=)h(1,)f(y)h (=)g(3})922 2748 y Fo(7)p eop %%Page: 8 8 8 7 bop -42 199 a Fo(is)15 b(equiv)m(alen)o(t)g(to:)30 293 y Fm(temp)23 b(=)h({})30 350 y(temp.x)f(=)h(1)30 406 y(temp.y)f(=)h(3)30 462 y(a)g(=)g(temp)-42 582 y Fl(4.5.8)52 b(F)l(unction)18 b(Calls)-42 668 y Fo(A)e(function)f(call)f (has)h(the)g(follo)o(wing)e(syn)o(tax:)42 740 y Fn(functionc)n(al)r(l) 49 b Fj(!)h Fn(var)17 b(r)n(e)n(alPar)n(ams)-42 813 y Fo(Here,)i Fm(var)e Fo(can)h(b)q(e)h(an)o(y)e(v)m(ariable)h(\(global,)e (lo)q(cal,)i(indexed,)g(etc\).)28 b(If)18 b(its)f(t)o(yp)q(e)h(is)g Fn(function)j Fo(or)c Fn(CF)m(unction)s Fo(,)-42 869 y(this)g(function)g(is)f(called.)25 b(Otherwise,)17 b(the)g(fallbac)o (k)f(\\function")g(is)h(called,)g(ha)o(ving)f(as)g(\014rst)h(parameter) e(the)-42 925 y(v)m(alue)h(of)f Fm(var)p Fo(,)f(and)h(then)h(the)f (original)f(call)g(parameters.)29 982 y(The)h(form:)42 1054 y Fn(functionc)n(al)r(l)49 b Fj(!)h Fn(var)17 b Fo(':')j Fn(name)c(r)n(e)n(alPar)n(ams)-42 1126 y Fo(can)g(b)q(e)g (used)f(to)g(call)f(\\metho)q(ds".)19 b(A)c(call)f Fm(var:name\(...\))g Fo(is)g(syn)o(tactic)h(sugar)f(for)6 1220 y Fm(var.name\(var,)22 b(...\))-42 1314 y Fo(except)16 b(that)f Fm(var)f Fo(is)h(ev)m(aluated) g(only)g(once.)42 1382 y Fn(r)n(e)n(alPar)n(ams)49 b Fj(!)h Fo('\(')16 b([)p Fn(explist1)6 b Fo(])15 b('\)')42 1438 y Fn(r)n(e)n(alPar)n(ams)49 b Fj(!)h Fn(table)n(c)n(onstructor)115 1495 y(explist1)f Fj(!)h Fn(exp1)17 b Fj(f)p Fo(',')e Fn(exp1)6 b Fj(g)-42 1563 y Fo(All)18 b(argumen)o(t)e(expressions)i (are)g(ev)m(aluated)g(b)q(efore)g(the)h(call;)f(then)g(the)g(list)f(of) h(argumen)o(ts)e(is)i(adjusted)g(to)-42 1620 y(the)j(length)f(of)f(the) h(list)f(of)h(parameters)e(\(see)j(Section)f(4.3\);)h(\014nally)l(,)f (this)g(list)f(is)g(assigned)h(to)g(the)g(formal)-42 1676 y(parameters.)g(A)15 b(call)g(of)g(the)h(form)e Fm(f{...})h Fo(is)g(syn)o(tactic)f(sugar)h(for)g Fm(f\({...}\))p Fo(,)f(that)h(is,)g(the)h(parameter)e(list)-42 1732 y(is)h(a)g(single)g (new)g(table.)29 1789 y(Because)h(a)f(function)h(can)g(return)f(an)o(y) g(n)o(um)o(b)q(er)g(of)g(results)g(\(see)h(Section)f(4.4.3\),)e(the)j (n)o(um)o(b)q(er)f(of)g(results)-42 1845 y(m)o(ust)e(b)q(e)h(adjusted)g (b)q(efore)g(used.)20 b(If)14 b(the)g(function)f(is)h(called)f(as)g(a)h (statemen)o(t)d(\(see)j(Section)g(4.4.4\),)e(its)g(return)-42 1902 y(list)18 b(is)h(adjusted)g(to)g(0.)31 b(If)20 b(the)f(function)g (is)g(called)g(in)g(a)g(place)g(that)f(needs)i(a)f(single)f(v)m(alue)i (\(syn)o(tactically)-42 1958 y(denoted)f(b)o(y)f(the)g(non-terminal)e Fm(exp1)p Fo(\),)h(its)g(return)h(list)f(is)g(adjusted)h(to)g(1.)27 b(If)18 b(the)g(function)g(is)g(called)f(in)h(a)-42 2015 y(place)f(that)g(can)g(hold)g(man)o(y)e(v)m(alues)i(\(syn)o(tactically) e(denoted)j(b)o(y)f(the)g(non-terminal)e Fm(exp)p Fo(\),)h(no)h (adjustmen)o(t)-42 2071 y(is)e(done.)-42 2193 y Fe(4.6)56 b(F)-5 b(unction)20 b(De\014nitions)-42 2279 y Fo(F)l(unctions)c(in)g (Lua)g(can)g(b)q(e)h(de\014ned)g(an)o(ywhere)f(in)g(the)g(global)e(lev) o(el)i(of)f(a)h(c)o(h)o(unk.)22 b(The)16 b(syn)o(tax)f(for)h(function) -42 2335 y(de\014nition)g(is:)42 2407 y Fn(function)50 b Fj(!)g Fl(function)16 b Fn(var)h Fo('\(')e([)p Fn(p)n(arlist1)6 b Fo(])16 b('\)')f Fn(blo)n(ck)g Fl(end)29 2536 y Fo(When)f(Lua)g (pre-compiles)f(a)g(c)o(h)o(unk,)h(all)f(its)f(function)i(b)q(o)q(dies) g(are)f(pre-compiled,)g(to)q(o.)19 b(Then,)14 b(when)g(Lua)-42 2592 y(\\executes")i(the)f(function)g(de\014nition,)g(its)f(b)q(o)q(dy) i(is)f(stored,)f(with)h(t)o(yp)q(e)g Fn(function)p Fo(,)f(in)o(to)g (the)i(v)m(ariable)e Fm(var)p Fo(.)922 2748 y(8)p eop %%Page: 9 9 9 8 bop 29 199 a Fo(P)o(arameters)13 b(act)i(as)f(lo)q(cal)h(v)m (ariables,)f(initialized)f(with)i(the)g(argumen)o(t)f(v)m(alues.)42 271 y Fn(p)n(arlist1)50 b Fj(!)g Fn(name)16 b Fj(f)p Fo(',')f Fn(name)s Fj(g)29 400 y Fo(Results)g(are)f(returned)h(using)f (the)h Fm(return)f Fo(statemen)o(t)e(\(see)j(Section)f(4.4.3\).)k(If)d (con)o(trol)e(reac)o(hes)i(the)g(end)-42 456 y(of)g(a)g(function)g (without)f(a)h(return)g(instruction,)f(the)h(function)g(returns)h(with) e(no)h(results.)29 513 y(There)22 b(is)f(a)g(sp)q(ecial)g(syn)o(tax)g (for)g(de\014nition)h(of)f(metho)q(ds,)h(that)e(is,)j(functions)e(whic) o(h)g(ha)o(v)o(e)h(an)f(extra)-42 569 y(parameter)14 b Fn(self)p Fo(.)42 641 y Fn(function)50 b Fj(!)g Fl(function)16 b Fn(var)h Fo(':')j Fn(name)c Fo('\(')f([)p Fn(p)n(arlist1)6 b Fo(])16 b('\)')f Fn(blo)n(ck)g Fl(end)-42 714 y Fo(A)h(declaration)e (lik)o(e)-42 807 y Fm(function)23 b(v:f)h(\(...\))6 864 y(...)-42 920 y(end)-42 1014 y Fo(is)15 b(equiv)m(alen)o(t)g(to)-42 1108 y Fm(function)23 b(v.f)h(\(self,)f(...\))6 1164 y(...)-42 1221 y(end)-42 1315 y Fo(that)16 b(is,)g(the)g(function)g (gets)g(an)g(extra)f(formal)f(parameter)h(called)h Fm(self)p Fo(.)22 b(Notice)16 b(that)f(the)h(v)m(ariable)g Fm(v)g Fo(m)o(ust)-42 1371 y(ha)o(v)o(e)f(b)q(een)i(previously)d(initialized)g (with)g(a)h(table)g(v)m(alue.)-42 1493 y Fe(4.7)56 b(F)-5 b(allbac)n(ks)-42 1579 y Fo(Lua)17 b(pro)o(vides)f(a)g(p)q(o)o(w)o (erful)g(mec)o(hanism)e(to)h(extend)i(its)f(seman)o(tics,)e(called)i Fn(fal)r(lb)n(acks)p Fo(.)23 b(Basically)l(,)15 b(a)h(fallbac)o(k)-42 1635 y(is)f(a)g(programmer)d(de\014ned)17 b(function)e(whic)o(h)g(is)f (called)h(whenev)o(er)h(Lua)f(do)q(es)h(not)f(kno)o(w)f(ho)o(w)h(to)g (pro)q(ceed.)29 1691 y(Lua)h(supp)q(orts)f(the)g(follo)o(wing)e (fallbac)o(ks,)h(iden)o(ti\014ed)h(b)o(y)g(the)g(giv)o(en)g(strings:) -42 1785 y Fl(\\arith")24 b Fo(called)17 b(when)g(an)h(arithmetic)c(op) q(eration)j(is)g(applied)g(to)f(non)i(n)o(umerical)d(op)q(erands,)j(or) f(when)g(the)72 1842 y(binary)f Fm(^)g Fo(op)q(eration)g(is)f(called.) 23 b(It)17 b(receiv)o(es)f(three)g(argumen)o(ts:)k(the)d(t)o(w)o(o)e (op)q(erands)h(\(the)g(second)h(one)72 1898 y(is)j(nil)g(when)h(the)g (op)q(eration)e(is)h(unary)h(min)o(us\))e(and)h(one)h(of)f(the)g(follo) o(wing)f(strings)g(describing)h(the)72 1955 y(o\013ended)c(op)q (erator:)120 2067 y Fm(add)47 b(sub)g(mul)h(div)f(pow)g(unm)72 2180 y Fo(Its)15 b(return)f(v)m(alue)h(is)f(the)h(\014nal)f(result)g (of)g(the)h(arithmetic)d(op)q(eration.)19 b(The)c(default)f(function)g (issues)h(an)72 2236 y(error.)-42 2330 y Fl(\\order")23 b Fo(called)15 b(when)h(an)g(order)f(comparison)e(is)i(applied)h(to)f (non)g(n)o(umerical)f(or)h(non)h(string)e(op)q(erands.)21 b(It)72 2386 y(receiv)o(es)d(three)g(argumen)o(ts:)23 b(the)18 b(t)o(w)o(o)f(op)q(erands)h(and)g(one)g(of)f(the)h(follo)o (wing)e(strings)h(describing)g(the)72 2443 y(o\013ended)f(op)q(erator:) 120 2555 y Fm(lt)23 b(gt)h(le)g(ge)922 2748 y Fo(9)p eop %%Page: 10 10 10 9 bop 72 199 a Fo(Its)17 b(return)h(v)m(alue)f(is)g(the)g(\014nal)g (result)g(of)g(the)g(comparison)f(op)q(eration.)25 b(The)18 b(default)e(function)i(issues)72 256 y(an)d(error.)-42 350 y Fl(\\concat")25 b Fo(called)d(when)g(a)f(concatenation)f(is)h (applied)h(to)f(non)h(string)e(op)q(erands.)39 b(It)22 b(receiv)o(es)f(the)h(t)o(w)o(o)72 406 y(op)q(erands)d(as)f(argumen)o (ts.)29 b(Its)18 b(return)h(v)m(alue)g(is)f(the)g(\014nal)h(result)f (of)g(the)h(concatenation)f(op)q(eration.)72 462 y(The)e(default)e (function)h(issues)g(an)h(error.)-42 556 y Fl(\\index")23 b Fo(called)14 b(when)i(Lua)f(tries)f(to)g(retriev)o(e)g(the)h(v)m (alue)g(of)f(an)h(index)g(not)f(presen)o(t)h(in)f(a)h(table.)k(It)c (receiv)o(es)72 613 y(as)20 b(argumen)o(ts)e(the)i(table)g(and)g(the)g (index.)35 b(Its)20 b(return)g(v)m(alue)g(is)f(the)h(\014nal)g(result)g (of)f(the)i(indexing)72 669 y(op)q(eration.)e(The)d(default)e(function) h(returns)h(nil.)-42 763 y Fl(\\getglobal")24 b Fo(called)15 b(when)h(Lua)f(tries)f(to)h(retriev)o(e)f(the)i(v)m(alue)f(of)g(a)f (global)g(v)m(ariable)h(whic)o(h)g(has)g(a)g(nil)f(v)m(alue)72 819 y(\(or)k(whic)o(h)h(has)g(not)g(b)q(een)h(initialized\).)30 b(It)19 b(receiv)o(es)g(as)f(argumen)o(t)g(the)h(name)f(of)g(the)i(v)m (ariable.)30 b(Its)72 876 y(return)15 b(v)m(alue)h(is)e(the)i(\014nal)f (result)f(of)h(the)g(expression.)20 b(The)c(default)e(function)h (returns)g(nil.)-42 970 y Fl(\\gettable")25 b Fo(called)17 b(when)i(Lua)g(tries)e(to)g(index)i(a)f(non)g(table)g(v)m(alue.)29 b(It)18 b(receiv)o(es)g(as)g(argumen)o(ts)e(the)i(non)72 1026 y(table)d(v)m(alue)h(and)g(the)g(index.)22 b(Its)15 b(return)h(v)m(alue)g(is)f(the)h(\014nal)g(result)f(of)g(the)h (indexing)g(op)q(eration.)k(The)72 1083 y(default)15 b(function)g(issues)g(an)g(error.)-42 1176 y Fl(\\settable")24 b Fo(called)18 b(when)g(Lua)g(tries)f(to)h(assign)f(indexed)h(a)g(non)g (table)f(v)m(alue.)28 b(It)18 b(receiv)o(es)g(as)f(argumen)o(ts)72 1233 y(the)e(non)h(table)e(v)m(alue,)h(the)h(index,)f(and)g(the)h (assigned)e(v)m(alue.)20 b(The)c(default)f(function)g(issues)g(an)g (error.)-42 1327 y Fl(\\function")24 b Fo(called)16 b(when)h(Lua)g (tries)f(to)g(call)f(a)h(non)h(function)f(v)m(alue.)24 b(It)17 b(receiv)o(es)f(as)g(argumen)o(ts)f(the)h(non)72 1383 y(function)i(v)m(alue)h(and)g(the)f(argumen)o(ts)f(giv)o(en)h(in)g (the)h(original)d(call.)29 b(Its)19 b(return)f(v)m(alues)h(are)f(the)h (\014nal)72 1440 y(results)c(of)f(the)i(call)e(op)q(eration.)19 b(The)d(default)e(function)h(issues)g(an)h(error.)-42 1533 y Fl(\\gc")24 b Fo(called)12 b(during)g(garbage)e(collection.)18 b(It)12 b(receiv)o(es)g(as)f(argumen)o(t)f(the)i(table)f(b)q(eing)h (collected.)19 b(After)11 b(eac)o(h)72 1590 y(run)16 b(of)f(the)g(collector)f(this)h(function)g(is)g(called)g(with)g (argumen)o(t)f(nil.)20 b(Because)c(this)e(function)i(op)q(erates)72 1646 y(during)i(garbage)g(collection,)f(it)h(m)o(ust)f(b)q(e)i(used)g (with)f(great)f(care,)i(and)f(programmers)d(should)k(a)o(v)o(oid)72 1703 y(the)g(creation)g(of)g(new)g(ob)s(jects)g(\(tables)f(or)h (strings\))e(in)i(this)g(function.)32 b(The)19 b(default)g(function)g (do)q(es)72 1759 y(nothing.)-42 1853 y Fl(\\error")k Fo(called)16 b(when)i(an)f(error)f(o)q(ccurs.)26 b(It)17 b(receiv)o(es)g(as)g(argumen)o(t)e(a)i(string)f(describing)h(the)g (error.)25 b(The)72 1910 y(default)15 b(function)g(prin)o(ts)f(the)i (message)d(on)j(the)f(standard)g(error)f(output.)29 2003 y(The)19 b(function)f Fm(setfallback)f Fo(is)g(used)i(to)f(c)o(hange)g (a)g(fallbac)o(k)f(action.)29 b(Its)18 b(\014rst)g(argumen)o(t)f(is)g (a)h(string)-42 2060 y(describing)f(the)g(fallbac)o(k,)e(and)i(the)f (second)i(the)e(new)h(function)g(to)f(b)q(e)h(called.)24 b(It)16 b(returns)h(the)f(old)h(function)-42 2116 y(for)e(the)g(giv)o (en)g(fallbac)o(k.)29 2173 y(Section)g(8.6)f(sho)o(ws)h(an)g(example)f (of)h(the)g(use)h(of)e(fallbac)o(ks.)-42 2294 y Fe(4.8)56 b(Error)18 b(Handling)-42 2380 y Fo(Because)c(Lua)g(is)e(an)h (extension)g(language,)f(all)g(Lua)i(actions)e(start)g(from)f(C)i(co)q (de)h(calling)d(a)i(function)g(from)e(the)-42 2437 y(Lua)j(library)l(.) k(Whenev)o(er)13 b(an)g(error)f(o)q(ccurs)i(during)f(Lua)g(compilation) d(or)j(execution,)g(an)g(error)f(fallbac)o(k)g(func-)-42 2493 y(tion)k(is)g(called,)f(and)i(then)f(the)g(corresp)q(onding)h (function)f(from)e(the)i(library)f(\()p Fm(lua_dofile)p Fo(,)g Fm(lua_dostring)p Fo(,)-42 2550 y Fm(lua_call)p Fo(,)f(and)i Fm(lua_callfunction)p Fo(\))c(is)j(terminated)e(returning) i(an)g(error)g(condition.)911 2748 y(10)p eop %%Page: 11 11 11 10 bop 29 199 a Fo(The)15 b(only)f(argumen)o(t)e(to)i(the)g(error)g (fallbac)o(k)f(function)h(is)g(a)g(string)g(describing)g(the)g(error.) 19 b(The)c(standard)-42 256 y(I/O)i(library)d(rede\014nes)j(this)e (fallbac)o(k,)f(using)h(the)h(debug)g(facilities)e(\(see)h(Section)h (7,)f(in)g(order)h(to)f(prin)o(t)g(some)-42 312 y(extra)h (informations,)c(lik)o(e)j(the)h(stac)o(k)f(of)h(calls.)21 b(F)l(or)15 b(more)f(information)f(ab)q(out)j(an)g(error,)e(the)i(Lua)h (program)-42 369 y(can)j(include)f(the)g(compilation)d(pragma)h Fm($debug)p Fo(.)62 b(This)18 b(pragma)f(m)o(ust)h(b)q(e)h(written)f (in)h(a)f(line)h(b)o(y)g(itself.)-42 425 y(When)14 b(an)f(error)f(o)q (ccurs)h(in)g(a)f(program)f(compiled)h(with)g(this)g(option,)g(the)h (error)g(routine)f(is)g(able)h(to)f(prin)o(t)g(also)-42 482 y(the)18 b(lines)f(where)h(the)g(calls)e(\(and)i(the)f(error\))g(w) o(ere)g(made.)26 b(If)18 b(needed,)h(it)e(is)g(p)q(ossible)g(to)g(c)o (hange)h(the)f(error)-42 538 y(fallbac)o(k)d(routine;)h(see)g(Section)g (4.7.)29 594 y(Lua)e(co)q(de)g(can)f(generate)g(an)g(error)g(b)o(y)g (calling)f(the)i(function)f Fm(error)p Fo(.)18 b(Its)13 b(optional)d(parameter)h(is)h(a)g(string,)-42 651 y(whic)o(h)k(is)e (used)i(as)f(the)g(error)g(message.)-42 794 y Fp(5)67 b(The)23 b(Application)h(Program)f(In)n(terface)-42 896 y Fo(This)13 b(section)g(describ)q(es)h(the)f(API)g(for)g(Lua,)h(that)e (is,)h(the)g(set)g(of)f(C)h(functions)g(a)o(v)m(ailable)f(to)h(the)g (host)g(program)-42 952 y(to)i(comm)o(unicate)e(with)h(the)h(library)l (.)k(The)d(API)f(functions)g(can)h(b)q(e)f(classi\014ed)g(in)g(the)h (follo)o(wing)d(categories:)14 1046 y(1.)22 b(executing)15 b(Lua)h(co)q(de;)14 1140 y(2.)22 b(con)o(v)o(erting)14 b(v)m(alues)i(b)q(et)o(w)o(een)f(C)g(and)g(Lua;)14 1233 y(3.)22 b(manipulating)13 b(\(reading)h(and)i(writing\))d(Lua)j(ob)s (jects;)14 1327 y(4.)22 b(calling)14 b(Lua)i(functions;)14 1421 y(5.)22 b(C)15 b(functions)g(to)g(b)q(e)g(called)g(b)o(y)g(Lua;)14 1515 y(6.)22 b(references)16 b(to)f(Lua)g(Ob)s(jects.)-42 1609 y(All)g(API)h(functions)f(are)f(declared)i(in)f(the)g(\014le)g Fm(lua.h)p Fo(.)-42 1730 y Fe(5.1)56 b(Executing)18 b(Lua)h(Co)r(de)-42 1816 y Fo(A)12 b(host)f(program)f(can)i(execute)g(Lua)g(c)o(h)o(unks)g (written)f(in)g(a)h(\014le)f(or)h(in)f(a)g(string,)g(using)h(the)g (follo)o(wing)d(functions:)-42 1967 y Fm(int)286 b(lua_dofile)357 b(\(char)23 b(*filename\);)-42 2023 y(int)286 b(lua_dostring)309 b(\(char)23 b(*string\);)-42 2117 y Fo(Both)15 b(functions)f(return)g (an)g(error)f(co)q(de:)20 b(0,)14 b(in)g(case)g(of)g(success;)h(non)f (zero,)g(in)g(case)h(of)e(errors.)19 b(The)c(function)-42 2173 y Fm(lua_dofile)p Fo(,)h(if)g(called)g(with)g(argumen)o(t)f(NULL)j (\(0\),)d(executes)j(the)f(\\\014le")f Fm(stdin)p Fo(.)23 b(F)l(unction)17 b Fm(lua_dofile)-42 2230 y Fo(is)f(also)e(able)h(to)g (execute)h(pre-compiled)f(c)o(h)o(unks.)21 b(It)16 b(detects)f(whether) h(the)f(\014le)h(is)f(text)g(or)g(not,)g(and)g(loads)g(it)-42 2286 y(accordingly)g(\(see)g(program)e Fm(luac)p Fo(\).)-42 2408 y Fe(5.2)56 b(Con)n(v)n(erting)20 b(V)-5 b(alues)20 b(b)r(et)n(w)n(een)e(C)h(and)h(Lua)-42 2494 y Fo(Because)13 b(Lua)f(has)g(no)f(static)g(t)o(yp)q(e)h(system,)f(all)f(v)m(alues)i (passed)g(b)q(et)o(w)o(een)g(Lua)g(and)g(C)g(ha)o(v)o(e)f(t)o(yp)q(e)h Fm(lua_Object)p Fo(,)-42 2550 y(whic)o(h)f(w)o(orks)f(lik)o(e)g(an)h (abstract)f(t)o(yp)q(e)h(in)g(C)g(that)f(can)h(hold)g(an)o(y)g(Lua)g(v) m(alue.)19 b(V)l(alues)11 b(of)f(t)o(yp)q(e)h Fm(lua_Object)f Fo(ha)o(v)o(e)-42 2607 y(no)16 b(meaning)d(outside)i(Lua;)g(for)g (instance,)g(the)g(comparisson)e(of)i(t)o(w)o(o)f Fm(lua_Object's)f Fo(is)i(of)g(no)g(signi\014cance.)911 2748 y(11)p eop %%Page: 12 12 12 11 bop 29 199 a Fo(Lua)11 b(has)f(automatic)e(memory)f(managemen)o (t,)i(and)h(garbage)g(collection.)17 b(Because)11 b(of)f(that,)g(a)g Fm(lua_Object)-42 256 y Fo(has)18 b(a)f(limited)e(scop)q(e,)j(and)g(is) f(only)g(v)m(alid)g(inside)g(the)h Fn(blo)n(ck)j Fo(where)d(it)f(w)o (as)f(created.)27 b(A)17 b(C)h(function)f(called)-42 312 y(from)c(Lua)i(is)f(a)h(blo)q(c)o(k,)f(and)h(its)e(parameters)g (are)h(v)m(alid)h(only)f(un)o(til)g(its)f(end.)21 b(A)14 b(go)q(o)q(d)h(programmi)o(ng)d(practice)-42 369 y(is)i(to)f(con)o(v)o (ert)g(Lua)h(ob)s(jects)f(to)g(C)h(v)m(alues)g(as)f(so)q(on)h(as)f (they)h(are)g(a)o(v)m(ailable,)e(and)i(nev)o(er)g(to)f(store)g Fm(lua_Object)p Fo(s)-42 425 y(in)j(C)e(global)g(v)m(ariables.)29 482 y(When)f(C)g(co)q(de)h(calls)e(Lua)h(rep)q(eatedly)l(,)g(as)g(in)g (a)f(lo)q(op,)h(ob)s(jects)f(returned)i(b)o(y)f(these)g(calls)f(accum)o (ulate,)f(and)-42 538 y(ma)o(y)j(create)h(a)g(memory)d(problem.)19 b(T)l(o)c(a)o(v)o(oid)f(this,)g(nested)i(blo)q(c)o(ks)f(can)g(b)q(e)h (de\014ned)g(with)f(the)g(functions:)-42 629 y Fm(void)262 b(lua_beginblock)f(\(void\);)-42 686 y(void)h(lua_endblock)309 b(\(void\);)-42 777 y Fo(After)15 b(the)h(end)f(of)g(the)g(blo)q(c)o (k,)g(all)f Fm(lua_Object)p Fo('s)g(created)h(inside)g(it)f(are)h (released.)29 834 y(T)l(o)g(c)o(hec)o(k)g(the)h(t)o(yp)q(e)f(of)g(a)g Fm(lua_Object)p Fo(,)e(the)i(follo)o(wing)e(function)i(is)g(a)o(v)m (ailable:)-42 925 y Fm(int)286 b(lua_type)405 b(\(lua_Object)22 b(object\);)-42 1016 y Fo(plus)16 b(the)f(follo)o(wing)e(macros)g(and)j (functions:)-42 1108 y Fm(int)286 b(lua_isnil)381 b(\(lua_Object)22 b(object\);)-42 1164 y(int)286 b(lua_isnumber)309 b(\(lua_Object)22 b(object\);)-42 1220 y(int)286 b(lua_isstring)309 b(\(lua_Object)22 b(object\);)-42 1277 y(int)286 b(lua_istable)333 b(\(lua_Object)22 b(object\);)-42 1333 y(int)286 b(lua_isfunction)261 b(\(lua_Object)22 b(object\);)-42 1390 y(int)286 b(lua_iscfunction)237 b(\(lua_Object)22 b(object\);)-42 1446 y(int)286 b(lua_isuserdata)261 b(\(lua_Object)22 b(object\);)-42 1538 y Fo(All)14 b(macros)f(return)i (1)f(if)g(the)h(ob)s(ject)f(is)g(compatible)f(with)h(the)g(giv)o(en)g (t)o(yp)q(e,)h(and)g(0)f(otherwise.)19 b(The)c(function)-42 1594 y Fm(lua_isnumber)d Fo(accepts)i(n)o(um)o(b)q(ers)f(and)h(n)o (umerical)e(strings,)g Fm(lua_isstring)g Fo(accepts)i(strings)e(and)i (n)o(um)o(b)q(ers)-42 1650 y(\(see)i(Section)f(4.2\),)e(and)j Fm(lua_isfunction)d Fo(accepts)i(Lua)h(and)f(C)g(functions.)29 1707 y(The)20 b(function)g Fm(lua_type)f Fo(can)h(b)q(e)h(used)f(to)g (distinguish)f(b)q(et)o(w)o(een)h(di\013eren)o(t)f(kinds)h(of)g(user)g (data;)h(see)-42 1763 y(b)q(elo)o(w.)29 1820 y(T)l(o)15 b(translate)f(a)h(v)m(alue)g(from)f(t)o(yp)q(e)h Fm(lua_Object)f Fo(to)g(a)h(sp)q(eci\014c)h(C)f(t)o(yp)q(e,)g(the)g(programmer)d(can)k (use:)-42 1911 y Fm(double)214 b(lua_getnumber)285 b(\(lua_Object)22 b(object\);)-42 1968 y(char)239 b(*lua_getstring)284 b(\(lua_Object)22 b(object\);)-42 2024 y(lua_CFunction)46 b(lua_getcfunction)213 b(\(lua_Object)22 b(object\);)-42 2081 y(void)239 b(*lua_getuserdata)d(\(lua_Object)22 b(object\);)-42 2172 y(lua_getnumber)14 b Fo(con)o(v)o(erts)g(a)g Fm(lua_Object)g Fo(to)g(a)h(\015oat.)k(This)c Fm(lua_Object)e Fo(m)o(ust)h(b)q(e)h(a)g(n)o(um)o(b)q(er)f(or)h(a)f(string)-42 2228 y(con)o(v)o(ertible)h(to)f(n)o(um)o(b)q(er)h(\(see)g(Section)g (4.2\);)f(otherwise,)g(the)h(function)g(returns)g(0.)29 2285 y Fm(lua_getstring)c Fo(con)o(v)o(erts)g(a)h Fm(lua_Object)f Fo(to)h(a)g(string)g(\()p Fm(char)23 b(*)p Fo(\).)18 b(This)12 b Fm(lua_Object)f Fo(m)o(ust)g(b)q(e)i(a)f(string)-42 2341 y(or)k(a)f(n)o(um)o(b)q(er;)h(otherwise,)e(the)i(function)g (returns)g(0)f(\(the)h(n)o(ull)f(p)q(oin)o(ter\).)21 b(This)16 b(function)f(do)q(es)i(not)e(create)h(a)-42 2398 y(new)f(string,)d(but)i(returns)g(a)f(p)q(oin)o(ter)g(to)h(a)f (string)g(inside)g(the)h(Lua)g(en)o(vironmen)o(t.)k(Because)d(Lua)f (has)f(garbage)-42 2454 y(collection,)h(there)h(is)g(no)g(guaran)o(tee) g(that)f(suc)o(h)i(p)q(oin)o(ter)e(will)g(b)q(e)i(v)m(alid)f(after)f (the)i(blo)q(c)o(k)f(ends.)29 2511 y Fm(lua_getcfunction)f Fo(con)o(v)o(erts)h(a)h Fm(lua_Object)f Fo(to)g(a)h(C)g(function.)23 b(This)15 b Fm(lua_Object)g Fo(m)o(ust)g(ha)o(v)o(e)g(t)o(yp)q(e)-42 2567 y Fn(CF)m(unction)s Fo(;)j(otherwise,)f(the)h(function)g(returns)g (0)f(\(the)h(n)o(ull)f(p)q(oin)o(ter\).)27 b(The)18 b(t)o(yp)q(e)g Fm(lua_CFunction)e Fo(is)h(ex-)-42 2623 y(plained)f(in)f(Section)g (5.5.)911 2748 y(12)p eop %%Page: 13 13 13 12 bop 29 199 a Fm(lua_getuserdata)10 b Fo(con)o(v)o(erts)i(a)g Fm(lua_Object)e Fo(to)i Fm(void*)p Fo(.)18 b(This)12 b Fm(lua_Object)f Fo(m)o(ust)g(ha)o(v)o(e)h(t)o(yp)q(e)g Fn(user)n(data)s Fo(;)-42 256 y(otherwise,)j(the)g(function)g(returns)g (0)g(\(the)g(n)o(ull)f(p)q(oin)o(ter\).)29 312 y(The)j(rev)o(erse)g (pro)q(cess,)h(that)e(is,)h(passing)f(a)h(sp)q(eci\014c)h(C)f(v)m(alue) g(to)g(Lua,)h(is)e(done)i(b)o(y)f(using)g(the)g(follo)o(wing)-42 369 y(functions:)-42 457 y Fm(void)262 b(lua_pushnumber)f(\(double)23 b(n\);)-42 513 y(void)262 b(lua_pushstring)f(\(char)23 b(*s\);)-42 570 y(void)262 b(lua_pushcfunction)189 b(\(lua_CFunction)22 b(f\);)-42 626 y(void)262 b(lua_pushusertag)237 b(\(void)23 b(*u,)h(int)f(tag\);)-42 714 y Fo(plus)16 b(the)f(macro:)-42 802 y Fm(void)262 b(lua_pushuserdata)213 b(\(void)23 b(*u\);)-42 890 y Fo(All)17 b(of)f(them)g(receiv)o(e)h(a)f(C)h(v)m (alue,)g(con)o(v)o(ert)f(it)h(to)f(a)g(corresp)q(onden)o(t)i Fm(lua_Object)p Fo(,)d(and)i(lea)o(v)o(e)f(the)h(result)g(on)-42 947 y(the)h(top)g(of)f(the)h(Lua)g(stac)o(k,)f(where)h(it)f(can)h(b)q (e)h(assigned)e(to)g(a)h(Lua)g(v)m(ariable,)f(passed)h(as)g(paramen)o (ter)e(to)h(a)-42 1003 y(Lua)f(function,)f(etc)g(\(see)g(b)q(elo)o (w\).)29 1060 y(User)10 b(data)g(can)h(ha)o(v)o(e)e(di\013eren)o(t)h (tags,)g(whose)g(seman)o(tics)f(are)h(de\014ned)h(b)o(y)g(the)f(host)g (program.)16 b(An)o(y)10 b(p)q(ositiv)o(e)-42 1116 y(in)o(teger)15 b(can)h(b)q(e)h(used)f(to)g(tag)e(a)i(user)g(data.)21 b(When)16 b(a)g(user)g(data)f(is)g(retriev)o(ed,)g(the)h(function)g Fm(lua_type)e Fo(can)-42 1173 y(b)q(e)i(used)g(to)f(get)f(its)h(tag.)29 1229 y(T)l(o)g(complete)f(the)h(set,)g(the)g(v)m(alue)g Fl(nil)g Fo(or)f(a)h Fm(lua_Object)f Fo(can)h(also)g(b)q(e)g(pushed)i (on)o(to)d(the)h(stac)o(k,)f(with:)-42 1317 y Fm(void)262 b(lua_pushnil)333 b(\(void\);)-42 1374 y(void)262 b(lua_pushobject)f (\(lua_Object)22 b(object\);)-42 1494 y Fe(5.3)56 b(Manipulating)22 b(Lua)c(Ob)s(jects)-42 1580 y Fo(T)l(o)d(read)h(the)f(v)m(alue)g(of)g (an)o(y)g(global)f(Lua)h(v)m(ariable,)f(one)i(can)f(use)h(the)f (function:)-42 1668 y Fm(lua_Object)118 b(lua_getglobal)285 b(\(char)23 b(*varname\);)-42 1756 y Fo(As)16 b(in)f(Lua,)g(if)g(the)g (v)m(alue)g(of)g(the)g(global)f(is)h Fl(nil)p Fo(,)f(the)h Fm("getglobal")f Fo(fallbac)o(k)g(is)g(called.)29 1813 y(T)l(o)h(store)f(a)h(v)m(alue)h(previously)e(pushed)j(on)o(to)d(the)h (stac)o(k)g(in)g(a)f(global)g(v)m(ariable,)h(there)g(is)g(the)g (function:)-42 1901 y Fm(void)262 b(lua_storeglobal)237 b(\(char)23 b(*varname\);)29 1989 y Fo(T)l(ables)15 b(can)g(also)f(b)q (e)i(manipulated)e(via)g(the)i(API.)f(The)g(function)-42 2077 y Fm(lua_Object)118 b(lua_getsubscript)213 b(\(void\);)-42 2165 y Fo(exp)q(ects)16 b(on)f(the)h(stac)o(k)e(a)h(table)f(and)i(an)f (index,)g(and)g(returns)g(the)g(con)o(ten)o(ts)g(of)g(the)g(table)f(at) h(that)f(index.)20 b(As)-42 2221 y(in)15 b(Lua,)g(if)g(the)g(\014rst)f (ob)s(ject)h(is)f(not)h(a)f(table,)g(or)h(the)g(index)g(is)g(not)f (presen)o(t)h(in)g(the)g(table,)f(the)h(corresp)q(onden)o(t)-42 2278 y(fallbac)o(k)f(is)h(called.)29 2334 y(T)l(o)h(store)g(a)g(v)m (alue)h(in)f(an)h(index,)g(the)f(program)e(m)o(ust)h(push)j(on)o(to)d (the)i(stac)o(k)e(the)i(table,)f(the)h(index,)f(and)-42 2391 y(the)g(v)m(alue,)f(and)g(then)h(call)e(the)h(function:)-42 2479 y Fm(void)24 b(lua_storesubscript)d(\(void\);)-42 2567 y Fo(Again,)15 b(the)g(corresp)q(onden)o(t)g(fallbac)o(k)f(is)h (called)g(if)f(needed.)29 2623 y(Finally)l(,)g(the)h(function)911 2748 y(13)p eop %%Page: 14 14 14 13 bop -42 199 a Fm(lua_Object)118 b(lua_createtable)237 b(\(void\);)-42 293 y Fo(creates)15 b(a)g(new)h(table.)29 349 y Fn(Ple)n(ase)22 b(Notic)n(e:)36 b Fo(Most)22 b(functions)g(from)e (the)j(Lua)f(library)f(receiv)o(e)i(parameters)d(through)i(the)h(stac)o (k.)-42 406 y(Because)c(other)e(functions)g(also)g(use)h(the)g(stac)o (k,)f(it)g(is)g(imp)q(ortan)o(t)e(that)i(these)h(parameters)e(b)q(e)i (pushed)h(just)-42 462 y(b)q(efore)d(the)f(corresp)q(onden)o(t)g(call,) f(without)g(in)o(termediate)e(calls)i(to)h(the)g(Lua)g(library)l(.)k(F) l(or)14 b(instance,)h(supp)q(ose)-42 519 y(the)h(user)f(w)o(an)o(ts)f (the)h(v)m(alue)h(of)f Fm(a[i])p Fo(.)k(A)c(simplistic)e(solution)h(w)o (ould)g(b)q(e:)6 613 y Fm(/*)24 b(Warning:)f(WRONG)g(CODE)g(*/)6 669 y(lua_Object)g(result;)6 725 y(lua_pushobject\(lua_getglobal)o (\("a"\)\);)44 b(/*)24 b(push)f(table)g(*/)6 782 y (lua_pushobject\(lua_getglobal)o(\("i"\)\);)44 b(/*)24 b(push)f(index)g(*/)6 838 y(result)g(=)h(lua_getsubscript\(\);)-42 932 y Fo(Ho)o(w)o(ev)o(er,)c(the)f(call)g Fm(lua_getglobal\("i"\))e Fo(mo)q(di\014es)i(the)h(stac)o(k,)f(and)h(in)o(v)m(alidates)e(the)i (previous)f(pushed)-42 989 y(v)m(alue.)i(A)15 b(correct)g(solution)f (could)h(b)q(e:)6 1082 y Fm(lua_Object)23 b(result;)6 1139 y(lua_Object)g(index)g(=)h(lua_getglobal\("i"\);)6 1195 y(lua_pushobject\(lua_getglobal)o(\("a"\)\);)44 b(/*)24 b(push)f(table)g(*/)6 1252 y(lua_pushobject\(index\);)355 b(/*)24 b(push)f(index)g(*/)6 1308 y(result)g(=)h (lua_getsubscript\(\);)-42 1430 y Fe(5.4)56 b(Calling)21 b(Lua)e(F)-5 b(unctions)-42 1516 y Fo(F)l(unctions)19 b(de\014ned)g(in)g(Lua)f(b)o(y)h(a)f(c)o(h)o(unk)g(executed)i(with)e Fm(dofile)f Fo(or)h Fm(dostring)f Fo(can)i(b)q(e)g(called)f(from)e(the) -42 1572 y(host)h(program.)23 b(This)16 b(is)g(done)h(using)g(the)g (follo)o(wing)e(proto)q(col:)22 b(\014rst,)16 b(the)h(argumen)o(ts)e (to)h(the)h(function)g(are)-42 1629 y(pushed)f(on)o(to)d(the)i(Lua)g (stac)o(k)e(\(see)i(Section)f(5.2\),)f(in)h(direct)g(order,)g(i.e.,)g (the)g(\014rst)g(argumen)o(t)f(is)h(pushed)h(\014rst.)-42 1685 y(Again,)g(it)f(is)h(imp)q(ortan)o(t)e(to)h(emphasize)h(that,)f (during)h(this)f(phase,)i(no)f(other)g(Lua)g(function)g(can)g(b)q(e)h (called.)29 1741 y(Then,)f(the)h(function)f(is)f(called)h(using)-42 1835 y Fm(int)286 b(lua_call)405 b(\(char)23 b(*functionname\);)-42 1929 y Fo(or)-42 2023 y Fm(int)286 b(lua_callfunction)213 b(\(lua_Object)22 b(function\);)-42 2116 y Fo(Both)16 b(functions)g(return)f(an)h(error)f(co)q(de:)22 b(0,)15 b(in)h(case)g(of)f(success;)i(non)f(zero,)f(in)h(case)g(of)f(errors.)21 b(Finally)l(,)14 b(the)-42 2173 y(returned)i(v)m(alues)f(\(a)g(Lua)h (function)f(ma)o(y)e(return)i(man)o(y)f(v)m(alues\))h(can)g(b)q(e)h (retriev)o(ed)f(with)f(the)i(macro)-42 2267 y Fm(lua_Object)118 b(lua_getresult)309 b(\(int)23 b(number\);)-42 2360 y Fo(where)18 b Fm(number)d Fo(is)i(the)g(order)f(of)h(the)g(result,)f (starting)f(with)h(1.)25 b(When)17 b(called)f(with)g(a)h(n)o(um)o(b)q (er)f(larger)g(than)-42 2417 y(the)g(actual)e(n)o(um)o(b)q(er)h(of)f (results,)h(this)f(function)h(returns)g Fm(LUA_NOOBJECT)p Fo(.)29 2473 y(Tw)o(o)j(sp)q(ecial)g(Lua)g(functions)h(ha)o(v)o(e)e (exclusiv)o(e)i(in)o(terfaces:)25 b Fm(error)18 b Fo(and)g Fm(setfallback)p Fo(.)28 b(A)18 b(C)h(function)-42 2530 y(can)d(generate)f(a)g(Lua)g(error)g(calling)f(the)h(function)-42 2623 y Fm(void)24 b(lua_error)e(\(char)i(*message\);)911 2748 y Fo(14)p eop %%Page: 15 15 15 14 bop -42 199 a Fo(This)18 b(function)g(nev)o(er)g(returns.)28 b(If)18 b(the)g(C)f(function)h(has)g(b)q(een)h(called)f(from)e(Lua,)i (the)g(corresp)q(onding)g(Lua)-42 256 y(execution)f(terminates,)d(as)i (if)g(an)g(error)f(had)i(o)q(ccurred)g(inside)f(Lua)h(co)q(de.)23 b(Otherwise,)16 b(the)h(whole)f(program)-42 312 y(terminates.)29 369 y(F)l(allbac)o(ks)e(can)h(b)q(e)h(c)o(hanged)g(with:)-42 454 y Fm(lua_Object)23 b(lua_setfallback)f(\(char)h(*name,)g (lua_CFunction)f(fallback\);)-42 540 y Fo(The)12 b(\014rst)f(parameter) f(is)g(the)i(fallbac)o(k)e(name,)h(and)g(the)h(second)f(a)h(CF)l (unction)f(to)f(b)q(e)i(used)g(as)f(the)h(new)f(fallbac)o(k.)-42 596 y(This)k(function)f(returns)h(a)f Fm(lua_Object)p Fo(,)g(whic)o(h)g(is)g(the)h(old)g(fallbac)o(k)e(v)m(alue,)i(or)f Fl(nil)g Fo(on)g(fail)g(\(in)o(v)m(alid)g(fallbac)o(k)-42 653 y(name\).)19 b(This)c(old)g(v)m(alue)g(can)g(b)q(e)h(used)g(for)f (c)o(haining)f(fallbac)o(ks.)29 709 y(An)i(example)e(of)g(C)h(co)q(de)h (calling)e(a)h(Lua)g(function)h(is)e(sho)o(wn)h(in)g(Section)g(8.10.) -42 829 y Fe(5.5)56 b(C)19 b(F)-5 b(unctions)-42 915 y Fo(T)l(o)15 b(register)g(a)f(C)h(function)g(to)g(Lua,)g(there)g(is)g (the)g(follo)o(wing)e(macro:)-42 1001 y Fm(#define)23 b(lua_register\(n,f\))165 b(\(lua_pushcfunction\(f\),)21 b(lua_storeglobal\(n\)\))-42 1057 y(/*)j(char)f(*n;)215 b(*/)-42 1114 y(/*)24 b(lua_CFunction)e(f;)i(*/)-42 1199 y Fo(whic)o(h)15 b(receiv)o(es)g(the)f(name)g(the)h(function)f(will)g (ha)o(v)o(e)g(in)g(Lua,)h(and)g(a)f(p)q(oin)o(ter)g(to)g(the)h (function.)20 b(This)14 b(p)q(oin)o(ter)-42 1256 y(m)o(ust)g(ha)o(v)o (e)h(t)o(yp)q(e)g Fm(lua_CFunction)p Fo(,)e(whic)o(h)i(is)g(de\014ned)i (as)-42 1341 y Fm(typedef)23 b(void)h(\(*lua_CFunction\))d(\(void\);) -42 1427 y Fo(that)15 b(is,)f(a)h(p)q(oin)o(ter)g(to)f(a)h(function)g (with)g(no)g(parameters)e(and)j(no)f(results.)29 1483 y(In)g(order)e(to)h(comm)o(unicate)d(prop)q(erly)j(with)f(Lua,)h(a)f(C) h(function)g(m)o(ust)e(follo)o(w)g(a)i(proto)q(col,)f(whic)o(h)g (de\014nes)-42 1540 y(the)j(w)o(a)o(y)e(parameters)f(and)j(results)e (are)h(passed.)29 1596 y(T)l(o)g(access)g(its)g(argumen)o(ts,)e(a)i(C)g (function)g(calls:)-42 1682 y Fm(lua_Object)118 b(lua_getparam)309 b(\(int)23 b(number\);)-42 1767 y Fo(where)16 b Fm(number)e Fo(starts)g(with)h(1)g(to)f(get)h(the)h(\014rst)e(argumen)o(t.)19 b(When)c(called)g(with)g(a)g(n)o(um)o(b)q(er)f(larger)g(than)h(the)-42 1824 y(actual)d(n)o(um)o(b)q(er)g(of)g(argumen)o(ts,)f(this)g(function) i(returns)f Fm(LUA_NOOBJECT)p Fo(.)e(In)j(this)f(w)o(a)o(y)l(,)g(it)g (is)f(p)q(ossible)i(to)e(write)-42 1880 y(functions)k(that)g(w)o(ork)f (with)h(a)g(v)m(ariable)f(n)o(um)o(b)q(er)h(of)f(parameters.)29 1937 y(T)l(o)g(return)g(v)m(alues,)g(a)g(C)g(function)g(just)f(pushes)i (them)e(on)o(to)g(the)i(stac)o(k,)e(in)h(direct)g(order;)f(see)i (Section)f(5.2.)-42 1993 y(Lik)o(e)i(a)e(Lua)i(function,)f(a)g(C)g (function)g(called)f(b)o(y)h(Lua)h(can)f(also)g(return)g(man)o(y)e (results.)29 2050 y(Section)i(8.9)f(presen)o(ts)i(an)f(example)f(of)g (a)h(CF)l(unction.)-42 2170 y Fe(5.6)56 b(References)17 b(to)i(Lua)f(Ob)s(jects)-42 2256 y Fo(As)h(already)g(noted,)g Fm(lua_Object)p Fo(s)f(are)h(v)o(olatile.)29 b(If)19 b(the)g(C)g(co)q(de)h(needs)g(to)e(k)o(eep)h(a)g Fm(lua_Object)f Fo(outside)-42 2312 y(blo)q(c)o(k)f(b)q(oundaries,)g(it)e(m)o(ust)g (create)i(a)f Fn(r)n(efer)n(enc)n(e)f Fo(to)h(the)g(ob)s(ject.)23 b(The)17 b(routines)f(to)g(manipulate)f(references)-42 2369 y(are)g(the)h(follo)o(wing:)-42 2454 y Fm(int)286 b(lua_ref)23 b(\(int)h(lock\);)-42 2511 y(lua_Object)118 b(lua_getref)47 b(\(int)23 b(ref\);)-42 2567 y(void)262 b(lua_pushref)23 b(\(int)g(ref\);)-42 2623 y(void)262 b(lua_unref)23 b(\(int)g(ref\);)911 2748 y Fo(15)p eop %%Page: 16 16 16 15 bop -42 199 a Fo(The)23 b(function)e Fm(lua_ref)g Fo(creates)g(a)h(reference)g(to)g(the)f(ob)s(ject)h(whic)o(h)f(is)h(on) f(the)h(top)g(of)f(the)h(stac)o(k,)g(and)-42 256 y(returns)f(this)f (reference.)36 b(If)21 b Fm(lock)f Fo(is)g(true,)h(the)g(ob)s(ject)f (is)g Fn(lo)n(cke)n(d)p Fo(:)30 b(that)19 b(means)h(the)h(ob)s(ject)e (will)h(not)g(b)q(e)-42 312 y(garbage)g(collected.)35 b(Notice)19 b(that)h(an)g(unlo)q(c)o(k)o(ed)g(reference)h(ma)o(y)e(b)q (e)i(garbage)e(collected.)35 b(Whenev)o(er)20 b(the)-42 369 y(referenced)15 b(ob)s(ject)e(is)f(needed,)j(a)e(call)f(to)h Fm(lua_getref)f Fo(returns)h(a)g(handle)h(to)f(it,)f(while)h Fm(lua_pushref)f Fo(pushes)-42 425 y(the)k(ob)s(ject)g(on)g(the)g(stac) o(k.)21 b(If)16 b(the)g(ob)s(ject)f(has)h(b)q(een)h(collected,)e Fm(lua_getref)g Fo(returns)g Fm(LUA_NOOBJECT)p Fo(,)f(and)-42 482 y Fm(lua_pushobject)g Fo(issues)h(an)g(error.)29 538 y(When)h(a)f(reference)g(is)g(no)g(longer)g(needed,)h(it)e(can)i(b) q(e)g(freed)f(with)g(a)f(call)h(to)f Fm(lua_unref)p Fo(.)-42 681 y Fp(6)67 b(Prede\014ned)24 b(F)-6 b(unctions)24 b(and)f(Libraries)-42 783 y Fo(The)17 b(set)g(of)f(prede\014ned)i (functions)e(in)h(Lua)f(is)h(small)d(but)j(p)q(o)o(w)o(erful.)23 b(Most)15 b(of)h(them)g(pro)o(vide)g(features)g(that)-42 839 y(allo)o(ws)d(some)h(degree)g(of)h(re\015exivit)o(y)e(in)i(the)f (language.)19 b(Some)14 b(of)g(these)h(features)f(cannot)g(b)q(e)i(sim) o(ulated)c(with)-42 896 y(the)21 b(rest)f(of)g(the)h(Language)g(nor)f (with)g(the)h(standard)f(Lua)h(API.)f(Others)h(are)f(just)h(helpful)f (in)o(terfaces)g(to)-42 952 y(common)13 b(API)j(functions.)29 1008 y(The)e(libraries,)e(on)i(the)f(other)g(hand,)h(pro)o(vide)g (useful)f(routines)g(that)g(are)h(implemen)o(ted)d(directly)i(through) -42 1065 y(the)g(standard)f(API.)h(Therefore,)f(they)h(are)f(not)g (necessary)h(to)f(the)g(language,)g(and)h(are)f(pro)o(vided)h(as)f (separated)-42 1121 y(C)j(mo)q(dules.)k(Curren)o(tly)c(there)g(are)g (three)g(standard)g(libraries:)27 1215 y Fj(\017)22 b Fo(string)14 b(manipulation;)27 1309 y Fj(\017)22 b Fo(mathematical)11 b(functions)k(\(sin,)g(cos,)f(etc\);)27 1403 y Fj(\017)22 b Fo(input)15 b(and)h(output)f(\(plus)g(some)e(system)h(facilities\).) -42 1497 y(In)j(order)f(to)g(ha)o(v)o(e)g(access)g(to)g(these)g (libraries,)f(the)h(host)g(program)e(m)o(ust)h(call)g(the)h(functions)g Fm(strlib_open)p Fo(,)-42 1553 y Fm(mathlib_open)p Fo(,)e(and)h Fm(iolib_open)p Fo(,)e(declared)j(in)f Fm(lualib.h)p Fo(.)-42 1675 y Fe(6.1)56 b(Prede\014ned)18 b(F)-5 b(unctions)-42 1761 y Fm(dofile)24 b(\(filename\))-42 1846 y Fo(This)18 b(function)g(receiv)o(es)g(a)f(\014le)h(name,)f(op)q(ens)i(it)e(and)h (executes)h(its)e(con)o(ten)o(ts)g(as)h(a)f(Lua)i(c)o(h)o(unk,)f(or)g (as)f(pre-)-42 1903 y(compiled)e(c)o(h)o(unks.)20 b(When)c(called)f (without)f(argumen)o(ts,)g(it)g(executes)i(the)g(con)o(ten)o(ts)e(of)h (the)h(standard)f(input.)-42 1959 y(It)i(returns)g(1)f(if)g(there)h (are)f(no)h(errors,)f Fl(nil)g Fo(otherwise.)23 b(It)17 b(issues)f(an)h(error)f(when)h(called)f(with)g(a)h(non)f(string)-42 2016 y(argumen)o(t.)-42 2136 y Fm(dostring)23 b(\(string\))-42 2222 y Fo(This)e(function)h(executes)g(a)f(giv)o(en)g(string)f(as)h(a)g (Lua)h(c)o(h)o(unk.)38 b(It)22 b(returns)f(1)g(if)g(there)g(are)g(no)h (errors,)f Fl(nil)-42 2278 y Fo(otherwise.)-42 2398 y Fm(next)j(\(table,)f(index\))-42 2484 y Fo(This)18 b(function)f(allo)o (ws)f(a)i(program)d(to)i(tra)o(v)o(erse)g(all)g(\014elds)h(of)f(a)g (table.)27 b(Its)18 b(\014rst)f(argumen)o(t)f(is)i(a)f(table)g(and)-42 2540 y(its)e(second)i(argumen)o(t)c(is)j(an)f(index)h(in)g(this)f (table.)21 b(It)15 b(returns)h(the)g(next)f(index)h(of)g(the)f(table)h (and)f(the)h(v)m(alue)-42 2597 y(asso)q(ciated)g(with)f(the)h(index.)23 b(When)17 b(called)e(with)h Fl(nil)f Fo(as)g(its)h(second)g(argumen)o (t,)e(the)j(function)e(returns)h(the)911 2748 y(16)p eop %%Page: 17 17 17 16 bop -42 199 a Fo(\014rst)16 b(index)g(of)g(the)g(table)g(\(and)f (its)h(asso)q(ciated)f(v)m(alue\).)22 b(When)17 b(called)e(with)h(the)g (last)f(index,)h(or)f(with)h Fl(nil)f Fo(in)-42 256 y(an)h(empt)o(y)e (table,)g(it)g(returns)h Fl(nil)p Fo(.)29 312 y(In)i(Lua)f(there)g(is)g (no)g(declaration)f(of)h(\014elds;)g(seman)o(tically)l(,)d(there)j(is)g (no)g(di\013erence)g(b)q(et)o(w)o(een)h(a)e(\014eld)i(not)-42 369 y(presen)o(t)g(in)f(a)g(table)f(or)h(a)g(\014eld)h(with)e(v)m(alue) i Fl(nil)p Fo(.)22 b(Therefore,)16 b(the)g(function)g(only)g(considers) g(\014elds)h(with)e(non)-42 425 y(nil)g(v)m(alues.)20 b(The)c(order)f(the)g(indices)g(are)g(en)o(umerated)f(is)h(not)g(sp)q (eci\014ed,)h Fn(even)f(for)i(numeric)f(indic)n(es)p Fo(.)29 482 y(See)g(Section)f(8.2)f(for)h(an)g(example)f(of)h(the)g (use)h(of)e(this)h(function.)-42 602 y Fm(nextvar)23 b(\(name\))-42 687 y Fo(This)18 b(function)g(is)g(similar)d(to)i(the)i (function)f Fm(next)p Fo(,)f(but)i(it)e(iterates)g(o)o(v)o(er)g(the)h (global)f(v)m(ariables.)28 b(Its)18 b(single)-42 744 y(argumen)o(t)c(is)h(the)h(name)e(of)h(a)g(global)f(v)m(ariable,)g(or)h Fl(nil)g Fo(to)g(get)g(a)g(\014rst)g(name.)k(Similarly)13 b(to)h Fm(next)p Fo(,)h(it)g(returns)-42 800 y(the)j(name)e(of)g (another)h(v)m(ariable)f(and)h(its)f(v)m(alue,)i(or)e Fl(nil)g Fo(if)g(there)h(are)g(no)g(more)e(v)m(ariables.)25 b(See)18 b(Section)e(8.2)-42 857 y(for)f(an)g(example)f(of)h(the)g(use) h(of)f(this)f(function.)-42 977 y Fm(tostring)23 b(\(e\))-42 1063 y Fo(This)15 b(function)g(receiv)o(es)g(an)g(argumen)o(t)f(of)h (an)o(y)g(t)o(yp)q(e)g(and)g(con)o(v)o(erts)g(it)f(to)h(a)f(string)h (in)g(a)g(reasonable)f(format.)-42 1183 y Fm(print)24 b(\(e1,)f(e2,)g(...\))-42 1269 y Fo(This)18 b(function)g(receiv)o(es)g (an)o(y)g(n)o(um)o(b)q(er)g(of)f(argumen)o(ts,)g(and)h(prin)o(ts)g (their)f(v)m(alues)i(in)f(a)g(reasonable)f(format.)-42 1325 y(Eac)o(h)i(v)m(alue)g(is)f(prin)o(ted)h(in)f(a)h(new)g(line.)30 b(This)18 b(function)h(is)f(not)g(in)o(tended)h(for)f(formatted)f (output,)i(but)g(as)-42 1381 y(a)h(quic)o(k)f(w)o(a)o(y)g(to)g(sho)o(w) g(a)g(v)m(alue,)i(for)e(instance)g(for)g(error)g(messages)f(or)h (debugging.)34 b(See)20 b(Section)f(6.4)g(for)-42 1438 y(functions)c(for)g(formatted)e(output.)-42 1558 y Fm(tonumber)23 b(\(e\))-42 1644 y Fo(This)13 b(function)f(receiv)o(es)g(one)h(argumen) o(t,)e(and)h(tries)g(to)g(con)o(v)o(ert)f(it)h(to)g(a)g(n)o(um)o(b)q (er.)18 b(If)13 b(the)g(argumen)o(t)d(is)i(already)-42 1700 y(a)j(n)o(um)o(b)q(er)g(or)g(a)g(string)f(con)o(v)o(ertible)g(to)h (a)g(n)o(um)o(b)q(er)f(\(see)h(Section)h(4.2\),)d(it)i(returns)g(that)f (n)o(um)o(b)q(er;)h(otherwise,)-42 1757 y(it)g(returns)g Fl(nil)p Fo(.)-42 1877 y Fm(type)24 b(\(v\))-42 1963 y Fo(This)13 b(function)h(allo)o(ws)d(Lua)j(to)e(test)h(the)g(t)o(yp)q (e)h(of)f(a)g(v)m(alue.)19 b(It)13 b(receiv)o(es)h(one)f(argumen)o(t,)f (and)h(returns)g(its)g(t)o(yp)q(e,)-42 2019 y(co)q(ded)21 b(as)e(a)g(string.)31 b(The)19 b(p)q(ossible)g(results)g(of)g(this)g (function)g(are)g Fm("nil")g Fo(\(a)f(string,)h(not)g(the)h(v)m(alue)f Fl(nil)p Fo(\),)-42 2075 y Fm("number")p Fo(,)g Fm("string")p Fo(,)g Fm("table")p Fo(,)h Fm("function")e Fo(\(returned)h(b)q(oth)h (for)f(C)g(functions)g(and)h(Lua)f(functions\),)-42 2132 y(and)d Fm("userdata")p Fo(.)29 2188 y(Besides)f(this)f(string,)f(the)i (function)f(returns)h(a)f(second)h(result,)f(whic)o(h)g(is)g(the)h Fn(tag)g Fo(of)f(the)g(v)m(alue.)20 b(This)14 b(tag)-42 2245 y(can)g(b)q(e)h(used)f(to)f(distinguish)g(b)q(et)o(w)o(een)g(user) h(data)f(with)g(di\013eren)o(t)g(tags,)g(and)h(b)q(et)o(w)o(een)f(C)h (functions)f(and)h(Lua)-42 2301 y(functions.)-42 2421 y Fm(assert)24 b(\(v\))-42 2507 y Fo(This)15 b(function)g(issues)g(an)g Fn(\\assertion)h(faile)n(d!")k Fo(error)15 b(when)h(its)e(argumen)o(t)f (is)i Fl(nil)p Fo(.)911 2748 y(17)p eop %%Page: 18 18 18 17 bop -42 199 a Fm(error)24 b(\(message\))-42 285 y Fo(This)e(function)f(issues)g(an)h(error)f(message)f(and)h (terminates)f(the)h(last)g(called)g(function)g(from)f(the)i(library)-42 342 y(\()p Fm(lua_dofile)p Fo(,)14 b Fm(lua_dostring)p Fo(,)f(.)7 b(.)g(.)g(\).)20 b(It)15 b(nev)o(er)g(returns.)-42 462 y Fm(setglobal)23 b(\(name,)g(value\))-42 547 y Fo(This)18 b(function)h(assigns)e(the)i(giv)o(en)f(v)m(alue)g(to)g(a)g(global)f(v) m(ariable.)29 b(The)19 b(string)e Fm(name)h Fo(do)q(es)h(not)f(need)h (to)f(b)q(e)-42 604 y(a)f(syn)o(tactically)d(v)m(alid)i(v)m(ariable)g (name.)22 b(Therefore,)17 b(this)f(function)g(can)g(set)h(global)e(v)m (ariables)g(with)h(strange)-42 660 y(names)f(lik)o(e)f Fm(m)24 b(v)f(1)15 b Fo(or)g Fm(34)p Fo(.)20 b(It)15 b(returns)g(the)g(v)m(alue)h(of)e(its)h(second)h(argumen)o(t.)-42 780 y Fm(getglobal)23 b(\(name\))-42 866 y Fo(This)e(function)g (retriev)o(es)g(the)g(v)m(alue)h(of)f(a)g(global)f(v)m(ariable.)37 b(The)22 b(string)e Fm(name)h Fo(do)q(es)g(not)g(need)h(to)f(b)q(e)h(a) -42 923 y(syn)o(tactically)14 b(v)m(alid)g(v)m(ariable)h(name.)-42 1043 y Fm(setfallback)23 b(\(fallbackname,)f(newfallback\))-42 1128 y Fo(This)13 b(function)f(sets)g(a)h(new)f(fallbac)o(k)g(function) g(to)g(the)h(giv)o(en)f(fallbac)o(k.)18 b(It)12 b(returns)h(the)g(old)f (fallbac)o(k)f(function.)-42 1250 y Fe(6.2)56 b(String)19 b(Manipulation)-42 1336 y Fo(This)j(library)e(pro)o(vides)i(generic)f (functions)h(for)f(string)g(manipulation,)f(suc)o(h)i(as)g(\014nding)g (and)g(extracting)-42 1392 y(substrings.)29 b(When)19 b(indexing)f(a)g(string,)f(the)i(\014rst)f(c)o(haracter)f(has)h(p)q (osition)g(1.)29 b(See)19 b(Section)f(8.3)f(for)h(some)-42 1449 y(examples)c(on)i(string)e(manipulation)f(in)i(Lua.)-42 1569 y Fm(strfind)23 b(\(str,)h(substr,)e([init,)i([end]]\))-42 1655 y Fo(Receiv)o(es)c(t)o(w)o(o)e(string)h(argumen)o(ts,)f(and)h (returns)g(a)g(n)o(um)o(b)q(er.)32 b(This)19 b(n)o(um)o(b)q(er)f (indicates)h(the)g(\014rst)g(p)q(osition)-42 1711 y(where)13 b(the)f(second)h(argumen)o(t)e(app)q(ears)h(in)g(the)g(\014rst)g (argumen)o(t.)17 b(If)c(the)f(second)h(argumen)o(t)d(is)i(not)g(a)g (substring)-42 1768 y(of)j(the)g(\014rst)g(one,)f(then)i Fm(strfind)e Fo(returns)h Fl(nil)p Fo(.)j(A)e(third)e(optional)g(n)o (umerical)f(argumen)o(t)g(sp)q(eci\014es)j(where)f(to)-42 1824 y(start)f(the)i(searc)o(h.)j(Another)d(optional)d(n)o(umerical)h (argumen)o(t)f(sp)q(eci\014es)j(where)g(to)e(stop)h(it.)-42 1944 y Fm(strlen)24 b(\(s\))-42 2030 y Fo(Receiv)o(es)16 b(a)f(string)f(and)i(returns)f(its)f(length.)-42 2150 y Fm(strsub)24 b(\(s,)f(i,)h([j]\))-42 2236 y Fo(Returns)17 b(another)f(string,)f(whic)o(h)h(is)g(a)g(substring)g(of)g Fm(s)p Fo(,)g(starting)e(at)i Fm(i)g Fo(and)g(runing)g(un)o(til)g Fm(j)p Fo(.)23 b(If)16 b Fm(j)g Fo(is)g(absen)o(t,)-42 2292 y(it)f(is)g(assumed)g(to)f(b)q(e)i(equal)g(to)e(the)i(length)f(of) g Fm(s)p Fo(.)20 b(P)o(articularly)l(,)13 b(the)j(call)e Fm(strsub\(s,1,j\))g Fo(returns)h(a)g(pre\014x)-42 2349 y(of)g Fm(s)g Fo(with)g(length)g Fm(j)p Fo(,)f(while)h(the)g(call)g Fm(strsub\(s,i\))e Fo(returns)i(a)g(su\016x)g(of)g Fm(s)p Fo(,)g(starting)e(at)i Fm(i)p Fo(.)-42 2469 y Fm(strlower)23 b(\(s\))-42 2555 y Fo(Receiv)o(es)14 b(a)e(string)g(and)h(returns)f(a)h (cop)o(y)f(of)h(that)f(string)f(with)h(all)g(upp)q(er)i(case)f(letters) e(c)o(hanged)i(to)f(lo)o(w)o(er)g(case.)-42 2611 y(All)j(other)g(c)o (haracters)f(are)h(left)g(unc)o(hanged.)911 2748 y(18)p eop %%Page: 19 19 19 18 bop -42 199 a Fm(strupper)23 b(\(s\))-42 285 y Fo(Receiv)o(es)14 b(a)e(string)g(and)h(returns)f(a)h(cop)o(y)f(of)h (that)f(string)f(with)h(all)g(lo)o(w)o(er)f(case)i(letters)f(c)o (hanged)h(to)f(upp)q(er)i(case.)-42 342 y(All)h(other)g(c)o(haracters)f (are)h(left)g(unc)o(hanged.)-42 462 y Fm(ascii)24 b(\(s,)f([i]\))-42 547 y Fo(Returns)16 b(the)f(ascii)g(co)q(de)h(of)e(the)i(c)o(haracter)e Fm(s[i])p Fo(.)19 b(If)d Fm(i)f Fo(is)g(absen)o(t,)f(it)h(is)f(assumed) h(to)f(b)q(e)i(1.)-42 667 y Fm(format)24 b(\(formatstring,)d(e1,)j(e2,) f(...\))-42 753 y Fo(This)14 b(function)f(returns)g(a)h(formated)d(v)o (ersion)i(of)g(its)g(v)m(ariable)g(n)o(um)o(b)q(er)f(of)i(argumen)o(ts) d(follo)o(wing)g(the)j(descrip-)-42 810 y(tion)h(giv)o(en)f(in)h(its)f (\014rst)g(argumen)o(t)f(\(whic)o(h)h(m)o(ust)g(b)q(e)h(a)g(string\).)j (The)d(format)e(string)g(follo)o(ws)g(the)i(same)f(rules)-42 866 y(as)g(the)h Fm(printf)e Fo(family)f(of)i(standard)g(C)g (functions.)19 b(The)c(only)f(di\013erencies)g(are)g(that)f(the)i (options/mo)q(di\014ers)-42 923 y Fm(*)p Fo(,)f Fm(l)p Fo(,)g Fm(L)p Fo(,)f Fm(n)p Fo(,)h Fm(p)p Fo(,)g(and)g Fm(h)g Fo(are)f(not)h(supp)q(orted,)g(and)g(there)g(is)g(an)g(extra)f (option,)g Fm(q)p Fo(.)19 b(This)14 b(option)f(formats)f(a)h(string)-42 979 y(in)19 b(a)f(form)f(suitable)h(to)g(b)q(e)i(safely)e(read)g(bac)o (k)h(b)o(y)f(the)h(Lua)g(in)o(terpreter.)30 b(The)19 b(string)e(is)h(written)g(b)q(et)o(w)o(een)-42 1036 y(double)g(quotes,) f(and)h(all)e(double)i(quotes,)f(returns)g(and)g(bac)o(kslashes)g(in)g (the)h(string)e(are)h(correctly)f(escap)q(ed)-42 1092 y(when)g(written.)29 1148 y(The)k(options)e Fm(c)p Fo(,)i Fm(d)p Fo(,)g Fm(E)p Fo(,)e Fm(e)p Fo(,)i Fm(f)p Fo(,)g Fm(g)f(i)p Fo(,)h Fm(o)p Fo(,)g Fm(u)p Fo(,)g Fm(X)p Fo(,)e(and)i Fm(x)f Fo(all)f(exp)q(ect)i(a)f(n)o(um)o(b)q(er)g(argumen) o(t,)f(while)h Fm(q)g Fo(and)h Fm(s)-42 1205 y Fo(exp)q(ects)c(a)f (string.)-42 1327 y Fe(6.3)56 b(Mathematical)20 b(F)-5 b(unctions)-42 1412 y Fo(This)13 b(library)f(is)h(an)g(in)o(terface)f (to)h(some)e(functions)i(of)g(the)g(standard)g(C)g(math)e(library)l(.) 19 b(Moreo)o(v)o(er,)11 b(it)i(registers)-42 1469 y(a)i(fallbac)o(k)f (for)h(the)g(binary)g(op)q(erator)f Fm(^)h Fo(whic)o(h,)g(when)h (applied)f(to)f(n)o(um)o(b)q(ers)h Fm(x^y)p Fo(,)f(returns)h Fd(x)1619 1452 y Fc(y)1640 1469 y Fo(.)29 1525 y(The)g(library)f(pro)o (vides)h(the)g(follo)o(wing)e(functions:)-42 1619 y Fm(abs)24 b(acos)f(asin)h(atan)f(atan2)g(ceil)g(cos)h(floor)f(log)g(log10)-42 1676 y(max)h(min)47 b(mod)h(sin)f(sqrt)23 b(tan)h(random)f(randomseed) -42 1769 y Fo(Most)17 b(of)g(them)g(are)g(only)g(in)o(terfaces)g(to)g (the)g(homon)o(ymous)e(functions)j(in)f(the)h(C)f(library)l(,)g(except) h(that,)f(for)-42 1826 y(the)f(trigonometri)o(c)d(functions,)h(all)h (angles)f(are)h(expressed)h(in)f(degrees.)29 1882 y(The)d(function)f Fm(max)g Fo(returns)g(the)g(maxim)o(um)d(v)m(alue)j(of)g(its)f(n)o (umeric)h(argumen)o(ts.)16 b(Similarly)l(,)9 b Fm(min)i Fo(computes)-42 1939 y(the)16 b(minim)o(um)o(.)h(Both)e(can)g(b)q(e)h (used)g(with)e(an)h(unlimited)f(n)o(um)o(b)q(er)g(of)h(argumen)o(ts.)29 1995 y(The)g(function)h Fm(mod)e Fo(is)h(equiv)m(alen)o(t)g(to)f(the)i Fm(\045)f Fo(op)q(erator)f(in)h(C.)29 2052 y(The)f(functions)g Fm(random)f Fo(and)h Fm(randomseed)f Fo(are)h(in)o(terfaces)f(to)g(the) h(simple)f(random)g(generator)g(functions)-42 2108 y Fm(rand)18 b Fo(and)h Fm(srand)p Fo(,)f(pro)o(vided)g(b)o(y)g(ANSI)h (C.)f(The)h(function)f Fm(random)f Fo(returns)h(pseudo-random)g(n)o(um) o(b)q(ers)g(in)-42 2165 y(the)e(range)f([0)p Fd(;)8 b Fo(1\).)-42 2286 y Fe(6.4)56 b(I/O)19 b(F)-5 b(acilities)-42 2372 y Fo(All)20 b(I/O)g(op)q(erations)f(in)h(Lua)g(are)f(done)i(o)o(v) o(er)e(t)o(w)o(o)f Fn(curr)n(ent)i Fo(\014les,)g(one)g(for)g(reading)f (and)h(one)g(for)f(writing.)-42 2429 y(Initially)l(,)14 b(the)h(curren)o(t)g(input)h(\014le)f(is)g Fm(stdin)p Fo(,)f(and)h(the)g(curren)o(t)g(output)g(\014le)h(is)e Fm(stdout)p Fo(.)29 2485 y(Unless)h(otherwise)g(stated,)f(all)g(I/O)i (functions)f(return)g(1)g(on)g(success)h(and)f Fl(nil)f Fo(on)h(failure.)911 2748 y(19)p eop %%Page: 20 20 20 19 bop -42 199 a Fm(readfrom)23 b(\(filename\))-42 285 y Fo(This)e(function)g(op)q(ens)g(a)g(\014le)g(named)f Fm(filename)g Fo(and)h(sets)g(it)f(as)h(the)g Fn(curr)n(ent)f Fo(input)h(\014le.)38 b(When)21 b(called)-42 342 y(without)c (parameters,)e(this)i(function)g(closes)f(the)i(curren)o(t)f(input)g (\014le,)g(and)h(restores)e Fm(stdin)h Fo(as)f(the)i(curren)o(t)-42 398 y(input)e(\014le.)29 454 y Fn(System)f(dep)n(endent:)k Fo(if)13 b Fm(filename)h Fo(starts)e(with)i(a)g Fm(|)p Fo(,)g(then)g(a)g(pip)q(ed)h(input)g(is)e(op)q(en,)i(via)e(function)i Fm(popen)p Fo(.)-42 574 y Fm(writeto)23 b(\(filename\))-42 660 y Fo(This)d(function)g(op)q(ens)g(a)f(\014le)h(named)f Fm(filename)g Fo(and)h(sets)g(it)f(as)g(the)h Fn(curr)n(ent)g Fo(output)f(\014le.)34 b(Notice)20 b(that,)-42 717 y(if)g(the)g(\014le) f(already)h(exists,)f(it)h(will)e(b)q(e)i Fn(c)n(ompletely)g(er)n(ase)n (d)g Fo(with)f(this)g(op)q(eration.)33 b(When)20 b(called)f(without)-42 773 y(parameters,)13 b(this)i(function)g(closes)f(the)h(curren)o(t)g (output)g(\014le,)g(and)g(restores)f Fm(stdout)g Fo(as)h(the)g(curren)o (t)g(output)-42 829 y(\014le.)29 886 y Fn(System)e(dep)n(endent:)18 b Fo(if)12 b Fm(filename)f Fo(starts)g(with)h(a)g Fm(|)p Fo(,)g(then)h(a)f(pip)q(ed)h(output)g(is)e(op)q(en,)j(via)d(function)i Fm(popen)p Fo(.)-42 1006 y Fm(appendto)23 b(\(filename\))-42 1091 y Fo(This)11 b(function)g(op)q(ens)h(a)f(\014le)g(named)f Fm(filename)g Fo(and)i(sets)f(it)f(as)h(the)g Fn(curr)n(ent)g Fo(output)g(\014le.)19 b(Unlik)o(e)10 b(the)h Fm(writeto)-42 1148 y Fo(op)q(eration,)k(this)f(function)h(do)q(es)h(not)f(erase)g(an) o(y)f(previous)h(con)o(ten)o(t)g(of)g(the)g(\014le.)-42 1268 y Fm(remove)24 b(\(filename\))-42 1354 y Fo(This)15 b(function)g(deletes)h(the)f(\014le)g(with)g(the)g(giv)o(en)g(name.)-42 1473 y Fm(rename)24 b(\(name1,)e(name2\))-42 1559 y Fo(This)15 b(function)g(renames)f(\014le)i Fm(name1)e Fo(to)h Fm(name2)p Fo(.)-42 1679 y Fm(tmpname)23 b(\(\))-42 1765 y Fo(This)15 b(function)g(returns)g(a)g(string)f(with)h(a)g(\014le)g(name)f(that)h (can)g(safely)g(b)q(e)g(used)h(for)f(a)g(temp)q(orary)e(\014le.)-42 1885 y Fm(read)24 b(\([format]\))-42 1970 y Fo(This)17 b(function)g(returns)f(a)h(v)m(alue)g(read)g(from)e(the)i(curren)o(t)g (input.)25 b(An)17 b(optional)f(string)g(argumen)o(t)f(sp)q(eci\014es) -42 2027 y(the)h(w)o(a)o(y)e(the)h(input)g(is)g(in)o(terpreted.)29 2083 y(Without)d(a)h(format)d(argumen)o(t,)h Fm(read)i Fo(\014rst)f(skips)h(blanks,)g(tabs)f(and)h(newlines.)19 b(Then)14 b(it)e(c)o(hec)o(ks)h(whether)-42 2140 y(the)h(curren)o(t)f (c)o(haracter)f(is)h Fm(")g Fo(or)f Fm(')p Fo(.)19 b(If)14 b(so,)e(it)h(reads)g(a)f(string)g(up)i(to)f(the)g(ending)g(quotation)f (mark,)f(and)j(returns)-42 2196 y(this)h(string,)f(without)g(the)h (quotation)f(marks.)k(Otherwise)d(it)g(reads)g(up)h(to)e(a)h(blank,)g (tab)f(or)h(newline.)29 2253 y(The)g(format)e(string)i(can)g(ha)o(v)o (e)g(the)g(follo)o(wing)e(format:)30 2345 y Fm(?[n])-42 2438 y Fo(where)j Fm(?)f Fo(can)g(b)q(e:)-42 2530 y Fl('s')i(or)g('S')k Fo(to)15 b(read)g(a)g(string;)-42 2623 y Fl('f)5 b(')17 b(or)g('F')22 b Fo(to)14 b(read)h(a)g(real)g(n)o(um)o(b)q(er;)911 2748 y(20)p eop %%Page: 21 21 21 20 bop -42 199 a Fl('i')16 b(or)i('I')j Fo(to)15 b(read)g(an)g(in)o (teger.)-42 293 y(The)e(optional)e Fm(n)h Fo(is)g(a)g(n)o(um)o(b)q(er)g (whic)o(h)g(sp)q(eci\014es)h(ho)o(w)f(man)o(y)f(c)o(haracters)h(m)o (ust)e(b)q(e)j(read)g(to)e(comp)q(ose)h(the)g(input)-42 350 y(v)m(alue.)21 b(P)o(articularly)l(,)12 b(the)k(format)c Fm("s1")j Fo(reads)g(a)g(single)g(c)o(haracter.)-42 470 y Fm(readuntil)23 b(\(char\))-42 555 y Fo(Reads)f(the)f(curren)o(t)f (input)h(un)o(til)f(the)h(\014rst)f(o)q(currence)i(of)e(the)h(giv)o(en) f(c)o(haracter.)36 b(When)21 b(called)f(with)h(no)-42 612 y(parameters,)16 b(reads)h(un)o(til)f(the)h(end)h(of)e(the)h (curren)o(t)g(input)g(\014le.)26 b(Returns)17 b(the)h(string)e(read.)25 b(The)17 b(c)o(haracter)-42 668 y(itself)e(is)f(not)h(read.)-42 788 y Fm(write)24 b(\(value,)f([format]\))-42 874 y Fo(This)d(function) g(writes)f(the)i(v)m(alue)f(of)g(its)f(\014rst)h(argumen)o(t)e(to)i (the)g(curren)o(t)g(output.)35 b(An)20 b(optional)f(second)-42 931 y(argumen)o(t)13 b(sp)q(eci\014es)i(the)f(format)e(to)i(b)q(e)h (used.)20 b(This)14 b(format)e(is)i(giv)o(en)f(as)h(a)g(string,)f(comp) q(osed)h(of)g(four)f(parts.)-42 987 y(The)j(\014rst)f(part)f(is)h(the)g (only)g(one)g(not)g(optional,)f(and)h(m)o(ust)f(b)q(e)i(one)f(of)g(the) g(follo)o(wing)e(c)o(haracters:)-42 1081 y Fl('s')k(or)g('S')k Fo(to)15 b(write)f(strings;)-42 1175 y Fl('f)5 b(')17 b(or)g('F')22 b Fo(to)14 b(write)g(\015oats;)-42 1269 y Fl('i')i(or)i('I')j Fo(to)15 b(write)f(in)o(tegers;)-42 1362 y Fl('q')j(or)g('Q')22 b Fo(to)17 b(write)g(quoted)g(strings.)27 b(This)17 b(format)e(writes)i(the)h(string)f(in)g(a)h(form)e(suitable)h (to)g(b)q(e)h(safely)72 1419 y(read)13 b(bac)o(k)f(b)o(y)h(the)g(Lua)g (in)o(terpreter.)18 b(The)13 b(string)e(is)i(written)e(b)q(et)o(w)o (een)i(double)g(quotes,)g(and)g(all)e(double)72 1475 y(quotes,)k(returns)g(and)g(bac)o(kslashes)g(in)g(the)g(string)f(are)h (correctly)g(escap)q(ed)h(when)f(written.)-42 1569 y(These)h(c)o (haracters)e(can)i(b)q(e)g(follo)o(w)o(ed)d(b)o(y)30 1663 y Fm([?][m][.n])-42 1757 y Fo(where:)-42 1851 y Fm(?)23 b Fo(indicates)15 b(justi\014cation)f(inside)h(the)g(\014eld.) 100 1944 y(')p Fm(<)p Fo(')22 b(righ)o(t)14 b(justi\014cation)g (\(default\);)100 2017 y(')p Fm(>)p Fo(')22 b(left)15 b(justi\014cation;)100 2090 y(')p Fm(|)p Fo(')22 b(cen)o(ter)15 b(justi\014cation.)-42 2184 y Fm(m)23 b Fo(Indicates)16 b(the)f(\014eld)g(size)g(in)g(c)o(haracters.)-42 2278 y Fm(.n)23 b Fo(F)l(or)18 b(reals,)h(indicates)f(the)h(n)o(um)o(b)q(er) f(of)g(digital)f(places.)31 b(F)l(or)18 b(in)o(tegers,)h(it)f(is)g(the) h(minim)o(um)c(n)o(um)o(b)q(er)j(of)72 2335 y(digits.)h(This)c(option)f (has)h(no)g(meaning)f(for)h(strings.)29 2428 y(When)20 b(called)e(without)g(a)h(format)e(string,)i(this)f(function)h(writes)f (n)o(um)o(b)q(ers)h(using)f(the)i Fm(\045g)e Fo(format)f(and)-42 2485 y(strings)e(with)f Fm(\045s)p Fo(.)20 b(F)l(or)14 b(b)q(etter)h(format)e(facilities,)g(the)j(function)f Fm(format)f Fo(should)h(b)q(e)h(used)g(\(see)f(Section)g(6.2\).)911 2748 y(21)p eop %%Page: 22 22 22 21 bop -42 199 a Fm(date)24 b(\([format]\))-42 285 y Fo(This)19 b(function)f(returns)h(a)f(string)g(con)o(taining)f(date)h (and)h(time)e(formatted)g(according)h(to)g(the)g(giv)o(en)g(string)-42 342 y Fm(format)p Fo(,)g(follo)o(wing)e(the)i(same)f(rules)h(of)f(the)i (ANSI)f(C)g(function)g Fm(strftime)p Fo(.)28 b(When)18 b(called)g(without)f(argu-)-42 398 y(men)o(ts,)d(it)g(returns)h(a)g (reasonable)g(date)g(and)g(time)f(represen)o(tation.)29 454 y(This)h(function)g(replaces)g(functions)g Fm(date)g Fo(and)g Fm(time)g Fo(from)e(previous)i(Lua)g(v)o(ersions.)-42 574 y Fm(exit)24 b(\([code]\))-42 660 y Fo(This)15 b(function)g(calls)g (the)g(C)g(function)g Fm(exit)p Fo(,)f(with)h(an)g(optional)f Fm(code)p Fo(,)g(to)g(terminate)g(the)h(program.)-42 804 y Fp(7)67 b(The)23 b(Debuger)f(In)n(terface)-42 905 y Fo(Lua)c(has)e(no)h(built)f(in)g(debuger)i(facilities.)k(Instead,)17 b(it)f(o\013ers)g(a)h(sp)q(ecial)f(in)o(terface,)g(b)o(y)h(means)e(of)i (functions)-42 961 y(and)12 b Fn(ho)n(oks)p Fo(,)g(whic)o(h)f(allo)o (ws)f(the)i(construction)e(of)h(di\013eren)o(t)g(kinds)h(of)f (debugers,)h(pro\014les,)g(and)g(other)f(to)q(ols)f(that)-42 1018 y(need)17 b(\\inside")d(information)e(from)i(the)h(in)o (terpreter.)k(This)c(in)o(terface)f(is)h(declared)h(in)f(the)g(\014le)g Fm(luadebug.h)p Fo(.)-42 1140 y Fe(7.1)56 b(Stac)n(k)19 b(and)g(F)-5 b(unction)20 b(Information)-42 1225 y Fo(The)c(main)e (function)h(to)f(get)h(information)d(ab)q(out)j(the)h(in)o(terpreter)e (stac)o(k)g(is)-42 1319 y Fm(lua_Function)23 b(lua_stackedfunction)e (\(int)i(level\);)-42 1413 y Fo(It)18 b(returns)f(a)g(handle)h(\()p Fm(lua_Function)p Fo(\))d(to)h(the)i Fn(activation)g(r)n(e)n(c)n(or)n (d)j Fo(of)c(the)h(function)f(executing)g(at)g(a)g(giv)o(en)-42 1470 y(lev)o(el.)34 b(Lev)o(el)20 b(0)f(is)h(the)g(curren)o(t)f (running)h(function,)h(while)e(lev)o(el)g Fd(n)14 b Fo(+)f(1)20 b(is)f(the)h(function)g(that)f(has)h(called)-42 1526 y(lev)o(el)g Fd(n)p Fo(.)34 b(When)21 b(called)e(with)h(a)f(lev)o(el)h (greater)f(than)h(the)g(stac)o(k)f(depth,)i Fm(lua_stackedfunction)d Fo(returns)-42 1582 y Fm(LUA_NOOBJECT)p Fo(.)29 1639 y(The)k(t)o(yp)q(e)f Fm(lua_Function)f Fo(is)h(just)g(another)g(name)g (to)g Fm(lua_Object)p Fo(.)37 b(Although,)22 b(in)f(this)g(library)l(,) h(a)-42 1695 y Fm(lua_Function)12 b Fo(can)i(b)q(e)g(used)g(wherev)o (er)f(a)g Fm(lua_Object)f Fo(is)h(required,)g(a)g(parameter)f Fm(lua_Function)f Fo(accepts)-42 1752 y(only)k(a)g(handle)h(returned)f (b)o(y)g Fm(lua_stackedfunction)p Fo(.)29 1808 y(Three)g(other)g (functions)g(pro)q(duce)h(extra)f(information)d(ab)q(out)j(a)g (function:)-42 1902 y Fm(void)24 b(lua_funcinfo)e(\(lua_Object)g(func,) i(char)f(**filename,)f(int)i(*linedefined\);)-42 1959 y(int)g(lua_currentline)e(\(lua_Function)g(func\);)-42 2015 y(char)i(*lua_getobjname)e(\(lua_Object)g(o,)i(char)f(**name\);) -42 2109 y(lua_funcinfo)16 b Fo(giv)o(es)g(the)h(\014le)g(name)g(and)g (the)g(line)g(where)g(the)g(giv)o(en)g(function)g(has)g(b)q(een)h (de\014ned.)27 b(If)17 b(the)-42 2165 y(\\function")f(is)f(in)h(fact)g (the)g(main)f(co)q(de)h(of)g(a)g(c)o(h)o(unk,)g Fm(linedefined)f Fo(is)g(0.)22 b(If)17 b(the)f(function)g(is)f(a)h(C)g(function,)-42 2222 y Fm(linedefined)e Fo(is)h(-1,)g(and)g Fm(filename)f Fo(is)h Fm("\(C\)")p Fo(.)29 2278 y(The)j(function)f Fm(lua_currentline)f Fo(giv)o(es)g(the)i(curren)o(t)f(line)g(where)h(a) f(giv)o(en)g(function)h(is)f(executing.)26 b(It)-42 2335 y(only)16 b(w)o(orks)e(if)h(the)g(function)h(has)f(b)q(een)i (pre-compiled)d(with)h(debug)h(information)d(\(see)i(Section)h(4.8\).)j (When)-42 2391 y(no)d(line)e(information)f(is)i(a)o(v)m(ailable,)e(it)h (returns)i(-1.)29 2448 y(F)l(unction)g Fm(lua_getobjname)e Fo(tries)i(to)f(\014nd)i(a)f(reasonable)g(name)f(for)h(a)f(giv)o(en)h (function.)23 b(Because)17 b(func-)-42 2504 y(tions)11 b(in)g(Lua)g(are)g(\014rst)g(class)f(v)m(alues,)i(they)f(do)g(not)g(ha) o(v)o(e)g(a)g(\014xed)g(name.)18 b(Some)10 b(functions)h(ma)o(y)e(b)q (e)j(the)g(v)m(alue)f(of)-42 2560 y(man)o(y)j(global)f(v)m(ariables,)h (while)g(others)h(ma)o(y)e(b)q(e)i(stored)f(only)h(in)f(a)h(table)f (\014eld.)20 b(F)l(unction)14 b Fm(lua_getobjname)-42 2617 y Fo(\014rst)j(c)o(hec)o(ks)g(whether)h(the)f(giv)o(en)f(function) h(is)g(a)f(fallbac)o(k.)24 b(If)18 b(so,)e(it)h(returns)f(the)i(string) e Fm("fallback")p Fo(,)f(and)911 2748 y(22)p eop %%Page: 23 23 23 22 bop -42 199 a Fm(name)16 b Fo(is)f(set)h(to)f(p)q(oin)o(t)g(to)g (the)h(fallbac)o(k)f(name.)21 b(Otherwise,)15 b(if)h(the)f(giv)o(en)h (function)g(is)f(the)h(v)m(alue)g(of)f(a)h(global)-42 256 y(v)m(ariable,)e Fm(lua_getobjname)f Fo(returns)i(the)g(string)e Fm("global")p Fo(,)h(while)g Fm(name)g Fo(p)q(oin)o(ts)g(to)g(the)h(v)m (ariable)f(name.)19 b(If)-42 312 y(the)f(giv)o(en)e(function)h(is)f (neither)h(a)g(fallbac)o(k)f(nor)g(a)h(global)e(v)m(ariable,)i Fm(lua_getobjname)e Fo(returns)i(the)g(empt)o(y)-42 369 y(string,)d(and)i Fm(name)e Fo(is)h(set)g(to)f Fm(NULL)p Fo(.)-42 487 y Fe(7.2)56 b(Manipulating)22 b(Lo)r(cal)c(V)-5 b(ariables)-42 573 y Fo(The)17 b(follo)o(wing)d(functions)i(allo)o(w)e (the)i(manipulation)e(of)i(the)g(lo)q(cal)f(v)m(ariables)h(of)g(a)f (giv)o(en)h(activ)m(ation)f(record.)-42 629 y(They)h(only)f(w)o(ork)f (if)h(the)g(function)g(has)g(b)q(een)h(pre-compiled)f(with)f(debug)i (information)c(\(see)j(Section)h(4.8\).)-42 706 y Fm(lua_Object)23 b(lua_getlocal)f(\(lua_Function)g(func,)h(int)h(local_number,)e(char)h (**name\);)-42 762 y(int)h(lua_setlocal)e(\(lua_Function)g(func,)h(int) h(local_number\);)-42 839 y Fo(The)19 b(\014rst)f(one)h(returns)g(the)f (v)m(alue)h(of)f(a)g(lo)q(cal)g(v)m(ariable,)g(and)h(sets)f Fm(name)g Fo(to)g(p)q(oin)o(t)g(to)g(the)h(v)m(ariable)f(name.)-42 895 y Fm(local_number)f Fo(is)i(an)f(index)h(for)f(lo)q(cal)g(v)m (ariables.)29 b(The)19 b(\014rst)f(parameter)f(has)i(index)f(1,)h(and)g (so)f(on,)h(un)o(til)-42 952 y(the)k(last)e(activ)o(e)h(lo)q(cal)f(v)m (ariable.)40 b(When)23 b(called)f(with)g(a)g Fm(local_number)e Fo(greater)i(than)g(the)g(n)o(um)o(b)q(er)g(of)-42 1008 y(activ)o(e)15 b(lo)q(cal)g(v)m(ariables,)f(or)h(if)g(the)h(activ)m (ation)e(record)h(has)h(no)f(debug)h(information,)d Fm(lua_getlocal)h Fo(returns)-42 1065 y Fm(LUA_NOOBJECT)p Fo(.)29 1121 y(The)d(function)h Fm(lua_setlocal)d Fo(sets)i(the)g(lo)q(cal)f(v)m (ariable)h Fm(local_number)f Fo(to)g(the)h(v)m(alue)h(previously)e (pushed)-42 1178 y(on)19 b(the)f(stac)o(k)f(\(see)h(Section)g(5.2\).)28 b(If)18 b(the)h(function)f(succeeds)h(it)e(returns)h(1.)29 b(If)18 b Fm(local_number)f Fo(is)g(greater)-42 1234 y(than)d(the)f(n)o(um)o(b)q(er)g(of)g(activ)o(e)g(lo)q(cal)f(v)m (ariables,)h(or)g(if)g(the)g(activ)m(ation)f(record)i(has)f(no)g(debug) h(information,)d(this)-42 1291 y(function)16 b(fails)d(and)j(returns)f (0.)-42 1409 y Fe(7.3)56 b(Ho)r(oks)-42 1495 y Fo(The)16 b(Lua)f(in)o(terpreter)g(o\013ers)f(t)o(w)o(o)g(ho)q(oks)h(for)g(debug) g(purp)q(oses:)-42 1572 y Fm(typedef)23 b(void)h(\(*lua_CHFunction\))d (\(lua_Function)h(func,)i(char)f(*file,)g(int)g(line\);)-42 1628 y(extern)h(lua_CHFunction)d(lua_callhook;)-42 1741 y(typedef)i(void)h(\(*lua_LHFunction\))d(\(int)j(line\);)-42 1797 y(extern)g(lua_LHFunction)d(lua_linehook;)-42 1874 y Fo(The)i(\014rst)f(one)g(is)f(called)h(whenev)o(er)h(the)f(in)o (terpreter)f(en)o(ters)h(or)f(lea)o(v)o(es)h(a)f(function.)41 b(When)22 b(en)o(tering)g(a)-42 1930 y(function,)c(its)f(parameters)f (are)h(a)h(handle)g(to)f(the)g(function)h(activ)m(ation)e(record,)i (plus)g(the)f(\014le)h(and)g(the)g(line)-42 1987 y(where)h(the)g (function)f(is)g(de\014ned)h(\(the)f(same)f(information)f(whic)o(h)i (is)g(pro)o(vided)g(b)o(y)g Fm(lua_funcinfo)p Fo(\);)g(when)-42 2043 y(lea)o(ving)d(a)f(function,)h Fm(func)g Fo(is)f Fm(LUA_NOOBJECT)p Fo(,)g Fm(file)g Fo(is)h Fm("\(return\)")p Fo(,)e(and)j Fm(line)e Fo(is)h(0.)29 2100 y(The)24 b(other)f(ho)q(ok)g (is)g(called)g(ev)o(ery)g(time)f(the)h(in)o(terpreter)g(c)o(hanges)g (the)g(line)g(of)g(co)q(de)h(it)f(is)g(execut-)-42 2156 y(ing.)31 b(Its)19 b(only)g(parameter)e(is)i(the)g(line)f(n)o(um)o(b)q (er)h(\(the)f(same)g(information)e(whic)o(h)j(is)g(pro)o(vided)f(b)o(y) h(the)g(call)-42 2213 y Fm(lua_currentline\(lua_stackedfun)o(ction\(0)o (\)\))p Fo(\).)d(This)d(second)h(ho)q(ok)f(is)g(only)f(called)h(if)g (the)g(activ)o(e)g(func-)-42 2269 y(tion)i(has)g(b)q(een)h (pre-compiled)f(with)f(debug)i(information)c(\(see)k(Section)f(4.8\).) 29 2326 y(A)g(ho)q(ok)g(is)g(disabled)g(when)h(its)e(v)m(alue)i(is)e (NULL)i(\(0\),)e(whic)o(h)h(is)g(the)g(initial)f(v)m(alue)h(of)g(b)q (oth)g(ho)q(oks.)-42 2466 y Fp(8)67 b(Some)22 b(Examples)-42 2567 y Fo(This)17 b(section)f(giv)o(es)g(examples)g(sho)o(wing)g(some)g (features)g(of)h(Lua.)25 b(It)17 b(do)q(es)g(not)g(in)o(tend)f(to)h(co) o(v)o(er)f(the)h(whole)-42 2623 y(language,)e(but)g(only)g(to)f (illustrate)f(some)h(in)o(teresting)g(uses)i(of)e(the)i(system.)911 2748 y(23)p eop %%Page: 24 24 24 23 bop -42 199 a Fe(8.1)56 b(Data)19 b(Structures)-42 285 y Fo(T)l(ables)c(are)f(a)g(strong)f(unifying)h(data)g(constructor.) 19 b(They)c(directly)f(implemen)o(t)d(a)j(m)o(ultitude)f(of)h(data)g(t) o(yp)q(es,)-42 342 y(lik)o(e)h(ordinary)f(arra)o(ys,)g(records,)g (sets,)h(bags,)f(and)i(lists.)29 398 y(Arra)o(ys)e(need)h(no)g (explanations.)k(In)c(Lua,)g(it)e(is)i(con)o(v)o(en)o(tional)e(to)h (start)f(indices)i(from)e(1,)h(but)h(this)f(is)g(only)-42 454 y(a)f(con)o(v)o(en)o(tion.)19 b(Arra)o(ys)12 b(can)h(b)q(e)h (indexed)g(b)o(y)f(0,)g(negativ)o(e)g(n)o(um)o(b)q(ers,)f(or)h(an)o(y)g (other)f(v)m(alue)i(\(but)f Fl(nil)p Fo(\).)18 b(Records)-42 511 y(are)d(also)g(trivially)d(implemen)o(ted)h(b)o(y)i(the)h(syn)o (tactic)e(sugar)g Fm(a.x)p Fo(.)29 567 y(The)j(b)q(est)g(w)o(a)o(y)f (to)g(implemen)o(t)e(a)i(set)h(is)f(to)g(store)g(its)g(elemen)o(ts)g (as)g(indices)h(of)f(a)h(table.)24 b(The)17 b(statemen)o(t)-42 624 y Fm(s)24 b(=)g({})14 b Fo(creates)h(an)f(empt)o(y)g(set)g Fm(s)p Fo(.)20 b(The)15 b(statemen)o(t)d Fm(s[x])24 b(=)f(1)15 b Fo(inserts)f(the)h(v)m(alue)g(of)f Fm(x)h Fo(in)o(to)e(the)i(set)g Fm(s)p Fo(.)k(The)-42 680 y(expression)e Fm(s[x])f Fo(is)h(true)f(if)g (and)h(only)g(if)f Fm(x)h Fo(b)q(elongs)f(to)g Fm(s)p Fo(.)25 b(Finally)l(,)15 b(the)i(statemen)o(t)e Fm(s[x])23 b(=)h(nil)16 b Fo(erases)h Fm(x)-42 737 y Fo(from)d Fm(s)p Fo(.)29 793 y(Bags)h(can)h(b)q(e)g(implemen)o(ted)e(similarl)o(y)f(to)i (sets,)g(but)h(using)f(the)h(v)m(alue)f(asso)q(ciated)g(to)g(an)h (elemen)o(t)e(as)h(its)-42 850 y(coun)o(ter.)20 b(So,)15 b(to)f(insert)h(an)g(elemen)o(t,)f(the)h(follo)o(wing)e(co)q(de)j(is)f (enough:)-42 943 y Fm(if)24 b(s[x])f(then)h(s[x])f(=)h(s[x]+1)-42 1000 y(else)g(s[x])f(=)h(1)g(end)-42 1094 y Fo(and)16 b(to)e(remo)o(v)o(e)g(an)h(elemen)o(t:)-42 1188 y Fm(if)24 b(s[x])f(then)h(s[x])f(=)h(s[x]-1)f(end)-42 1244 y(if)h(s[x])f(==)h(0)g (then)f(s[x])g(=)h(nil)g(end)29 1338 y Fo(Lisp-lik)o(e)d(lists)f(also)g (ha)o(v)o(e)h(an)g(easy)g(implemen)o(tatio)o(n.)36 b(The)21 b(\\cons")g(of)g(t)o(w)o(o)f(elemen)o(ts)g Fm(x)h Fo(and)g Fm(y)g Fo(can)-42 1394 y(b)q(e)d(created)e(with)g(the)h(co)q(de)g Fm(l)23 b(=)h({car=x,)f(cdr=y})p Fo(.)g(The)17 b(expression)f Fm(l.car)g Fo(extracts)g(the)g(header,)h(while)-42 1451 y Fm(l.cdr)d Fo(extracts)g(the)g(tail.)k(An)d(alternativ)o(e)d(w)o(a)o (y)i(is)f(to)h(create)g(the)g(list)g(directly)f(with)h Fm(l={x,y})p Fo(,)f(and)h(then)h(to)-42 1507 y(extract)g(the)g(header)h (with)e Fm(l[1])h Fo(and)g(the)h(tail)d(with)i Fm(l[2])p Fo(.)-42 1629 y Fe(8.2)56 b(The)18 b(F)-5 b(unctions)21 b Fb(next)c Fe(and)i Fb(nextvar)-42 1715 y Fo(This)f(example)f(sho)o (ws)g(ho)o(w)h(to)f(use)i(the)f(function)g Fm(next)f Fo(to)h(iterate)f(o)o(v)o(er)g(the)h(\014elds)g(of)g(a)g(table.)28 b(F)l(unction)-42 1771 y Fn(clone)15 b Fo(receiv)o(es)g(an)o(y)g(table) f(and)i(returns)f(a)g(clone)g(of)g(it.)-42 1865 y Fm(function)23 b(clone)g(\(t\))263 b(--)23 b(t)h(is)f(a)h(table)6 1921 y(local)f(new_t)h(=)f({})263 b(--)23 b(create)g(a)h(new)f(table)6 1978 y(local)g(i,)h(v)g(=)f(next\(t,)g(nil\))48 b(--)23 b(i)h(is)f(an)h(index)f(of)h(t,)f(v)h(=)g(t[i])6 2034 y(while)f(i)h(do)54 2091 y(new_t[i])f(=)g(v)54 2147 y(i,)h(v)f(=)h (next\(t,)f(i\))191 b(--)23 b(get)h(next)f(index)6 2204 y(end)6 2260 y(return)g(new_t)-42 2317 y(end)29 2410 y Fo(The)15 b(next)h(example)e(prin)o(ts)g(the)i(names)e(of)g(all)h (global)e(v)m(ariables)i(in)g(the)g(system)f(with)h(non)g(nil)g(v)m (alues:)-42 2504 y Fm(function)23 b(printGlobalVariables)e(\(\))6 2561 y(local)i(i,)h(v)g(=)f(nextvar\(nil\))6 2617 y(while)g(i)h(do)911 2748 y Fo(24)p eop %%Page: 25 25 25 24 bop 54 199 a Fm(print\(i\))54 256 y(i,)24 b(v)f(=)h(nextvar\(i\)) 6 312 y(end)-42 369 y(end)-42 488 y Fe(8.3)56 b(String)19 b(Manipulation)-42 574 y Fo(The)d(\014rst)f(example)f(is)g(a)h (function)g(to)g(trim)e(extra)i(blanks)g(at)f(the)h(b)q(eginning)h(and) f(end)h(of)f(a)g(string.)-42 654 y Fm(function)23 b(trim\(s\))6 710 y(local)g(l)h(=)g(1)6 767 y(while)f(strsub\(s,l,l\))f(==)i(')g(')g (do)54 823 y(l)g(=)f(l+1)6 880 y(end)6 936 y(local)g(r)h(=)g (strlen\(s\))6 992 y(while)f(strsub\(s,r,r\))f(==)i(')g(')g(do)54 1049 y(r)g(=)f(r-1)6 1105 y(end)6 1162 y(return)g(strsub\(s,l,r\))-42 1218 y(end)29 1298 y Fo(The)15 b(second)h(example)e(sho)o(ws)h(a)g (function)g(that)f(eliminates)f(all)h(blanks)h(of)g(a)g(string.)-42 1379 y Fm(function)23 b(remove_blanks)f(\(s\))6 1435 y(local)h(b)h(=)g(strfind\(s,)e(')i('\))6 1492 y(while)f(b)h(do)54 1548 y(s)g(=)f(strsub\(s,)g(1,)h(b-1\))f(..)h(strsub\(s,)e(b+1\))54 1604 y(b)i(=)f(strfind\(s,)g(')h('\))6 1661 y(end)6 1717 y(return)f(s)-42 1774 y(end)-42 1893 y Fe(8.4)56 b(V)-5 b(ariable)21 b(n)n(um)n(b)r(er)d(of)h(argumen)n(ts)-42 1979 y Fo(Lua)14 b(do)q(es)f(not)g(pro)o(vide)f(an)o(y)h(explicit)f (mec)o(hanism)f(to)h(deal)h(with)f(v)m(ariable)h(n)o(um)o(b)q(er)f(of)h (argumen)o(ts.)k(Ho)o(w)o(ev)o(er,)-42 2035 y(one)f(can)g(use)g(table)f (constructors)g(to)g(sim)o(ulate)e(this)i(mec)o(hanism.)k(As)d(an)g (example,)e(supp)q(ose)i(a)g(function)f(to)-42 2092 y(concatenate)g (all)g(its)f(argumen)o(ts.)k(It)d(could)g(b)q(e)h(written)f(lik)o(e)-42 2172 y Fm(function)23 b(concat)g(\(o\))6 2228 y(local)g(i)h(=)g(1)6 2285 y(local)f(s)h(=)g('')6 2341 y(while)f(o[i])h(do)54 2398 y(s)g(=)f(s)h(..)g(o[i])54 2454 y(i)g(=)f(i+1)6 2511 y(end)6 2567 y(return)g(s)-42 2623 y(end)911 2748 y Fo(25)p eop %%Page: 26 26 26 25 bop -42 199 a Fo(T)l(o)15 b(call)g(it,)f(one)h(uses)h(a)e(table)h (constructor)g(to)f(join)h(all)f(argumen)o(ts:)6 293 y Fm(x)24 b(=)g(concat{"hello)e(",)h("john",)g(")h(and)f(",)h("mary"}) -42 415 y Fe(8.5)56 b(P)n(ersistence)-42 501 y Fo(Because)21 b(of)e(its)g(re\015exiv)o(e)g(facilities,)g(p)q(ersistence)h(in)f(Lua)h (can)g(b)q(e)g(ac)o(hiev)o(ed)g(within)f(the)g(language.)33 b(This)-42 557 y(section)12 b(sho)o(ws)f(some)g(w)o(a)o(ys)g(to)g (store)g(and)h(retriev)o(e)f(v)m(alues)i(in)e(Lua,)i(using)f(a)f(text)h (\014le)g(written)e(in)i(the)g(language)-42 614 y(itself)j(as)f(the)i (storage)e(media.)29 670 y(T)l(o)h(store)f(a)h(single)g(v)m(alue)g (with)g(a)g(name,)f(the)h(follo)o(wing)e(co)q(de)j(is)e(enough:)-42 764 y Fm(function)23 b(store)g(\(name,)g(value\))6 820 y(write\(format\('\\n\045s)f(=',)h(name\)\))6 877 y (write_value\(value\))-42 933 y(end)-42 1039 y(function)g(write_value)g (\(value\))6 1096 y(local)g(t)h(=)g(type\(value\))102 1152 y(if)f(t)h(==)g('nil')94 b(then)24 b(write\('nil'\))6 1209 y(elseif)f(t)h(==)g('number')e(then)i(write\(value\))6 1265 y(elseif)f(t)h(==)g('string')e(then)i(write\(value,)e('q'\))6 1322 y(end)-42 1378 y(end)-42 1484 y Fo(In)16 b(order)f(to)g(restore)f (this)h(v)m(alue,)g(a)g Fm(lua_dofile)f Fo(su\016ces.)29 1541 y(Storing)i(tables)h(is)g(a)g(little)e(more)h(complex.)25 b(Assuming)16 b(that)g(the)h(table)g(is)g(a)g(tree,)g(and)g(all)f (indices)i(are)-42 1597 y(iden)o(ti\014ers)13 b(\(that)e(is,)i(the)g (tables)f(are)g(b)q(eing)h(used)g(as)g(records\),)f(its)g(v)m(alue)h (can)g(b)q(e)g(written)f(directly)g(with)g(table)-42 1654 y(constructors.)19 b(First,)14 b(the)h(function)g Fm(write_value)f Fo(is)h(c)o(hanged)g(to)-42 1748 y Fm(function)23 b(write_value)g(\(value\))6 1804 y(local)g(t)h(=)g(type\(value\))102 1860 y(if)f(t)h(==)g('nil')94 b(then)24 b(write\('nil'\))6 1917 y(elseif)f(t)h(==)g('number')e(then)i(write\(value\))6 1973 y(elseif)f(t)h(==)g('string')e(then)i(write\(value,)e('q'\))6 2030 y(elseif)h(t)h(==)g('table')46 b(then)24 b(write_record\(value\))6 2086 y(end)-42 2143 y(end)-42 2237 y Fo(The)16 b(function)f Fm(write_record)e Fo(is:)-42 2330 y Fm(function)23 b(write_record\(t\)) 6 2387 y(local)g(i,)h(v)g(=)f(next\(t,)g(nil\))6 2443 y(write\('{'\))47 b(--)23 b(starts)g(constructor)6 2500 y(while)g(i)h(do)54 2556 y(store\(i,)f(v\))54 2613 y(write\(',)g('\)) 911 2748 y Fo(26)p eop %%Page: 27 27 27 26 bop 54 199 a Fm(i,)24 b(v)f(=)h(next\(t,)f(i\))6 256 y(end)6 312 y(write\('}'\))47 b(--)23 b(closes)g(constructor)-42 369 y(end)-42 490 y Fe(8.6)56 b(Inheritance)-42 576 y Fo(The)15 b(fallbac)o(k)f(for)g(absen)o(t)g(indices)h(can)g(b)q(e)g (used)g(to)f(implemen)o(t)e(man)o(y)h(kinds)i(of)f(inheritance)g(in)h (Lua.)20 b(As)15 b(an)-42 632 y(example,)f(the)h(follo)o(wing)e(co)q (de)j(implemen)o(ts)d(single)h(inheritance:)-42 726 y Fm(function)23 b(Index)g(\(t,f\))6 782 y(if)h(f)g(==)f('parent')g(then) 47 b(--)24 b(to)f(avoid)g(loop)54 838 y(return)g(OldIndex\(t,f\))6 895 y(end)6 951 y(local)g(p)h(=)g(t.parent)6 1008 y(if)g(type\(p\))f (==)g('table')g(then)54 1064 y(return)g(p[f])6 1121 y(else)54 1177 y(return)g(OldIndex\(t,f\))6 1234 y(end)-42 1290 y(end)-42 1403 y(OldIndex)g(=)h(setfallback\("index",)d(Index\))-42 1496 y Fo(Whenev)o(er)15 b(Lua)g(attempts)d(to)i(access)h(an)f(absen)o (t)g(\014eld)h(in)f(a)g(table,)g(it)g(calls)f(the)i(fallbac)o(k)e (function)h Fm(Index)p Fo(.)19 b(If)-42 1553 y(the)14 b(table)e(has)h(a)g(\014eld)h Fm(parent)e Fo(with)h(a)g(table)f(v)m (alue,)i(then)f(Lua)h(attempts)d(to)h(access)i(the)f(desired)g(\014eld) h(in)f(this)-42 1609 y(paren)o(t)i(ob)s(ject.)k(This)c(pro)q(cess)g(is) f(rep)q(eated)h(\\up)o(w)o(ards")f(un)o(til)g(a)h(v)m(alue)g(for)f(the) h(\014eld)g(is)g(found)g(or)f(the)h(ob)s(ject)-42 1665 y(has)h(no)f(paren)o(t.)k(In)d(the)f(latter)f(case,)h(the)g(previous)g (fallbac)o(k)f(is)h(called)g(to)f(supply)i(a)e(v)m(alue)i(for)e(the)i (\014eld.)29 1722 y(When)e(b)q(etter)g(p)q(erformance)f(is)g(needed,)i (the)f(same)e(fallbac)o(k)h(ma)o(y)f(b)q(e)i(implemen)o(ted)e(in)i(C,)f (as)g(illustrated)-42 1778 y(in)j(Figure)e(1.)20 b(This)14 b(co)q(de)i(m)o(ust)e(b)q(e)i(registered)e(with:)6 1871 y Fm(lua_pushstring\("parent"\);)6 1928 y(lockedParentName)22 b(=)i(lua_ref\(1\);)6 1984 y(lua_pushobject\(lua_setfallba)o(ck\("ind)o (ex",)d(Index\)\);)6 2041 y(lockedOldIndex)h(=)i(lua_ref\(1\);)-42 2134 y Fo(Notice)15 b(ho)o(w)g(the)g(string)f Fm("parent")g Fo(is)h(k)o(ept)g(lo)q(c)o(k)o(ed)g(in)g(Lua)h(for)e(optimal)f(p)q (erformance.)-42 2255 y Fe(8.7)56 b(Programming)19 b(with)h(Classes)-42 2341 y Fo(There)e(are)g(man)o(y)e(di\013eren)o(t)h(w)o(a)o(ys)g(to)g (do)h(ob)s(ject-orien)o(ted)e(programming)e(in)k(Lua.)28 b(This)17 b(section)h(presen)o(ts)-42 2398 y(one)g(p)q(ossible)f(w)o(a) o(y)f(to)g(implemen)o(t)f(classes,)h(using)h(the)g(inheritance)g(mec)o (hanism)e(presen)o(ted)j(ab)q(o)o(v)o(e.)25 b Fn(Ple)n(ase)-42 2454 y(notic)n(e:)20 b(the)d(fol)r(lowing)e(examples)g(only)h(work)g (with)g(the)h(index)e(fal)r(lb)n(ack)g(r)n(e)n(de\014ne)n(d)g(ac)n(c)n (or)n(ding)g(to)h(Se)n(ction)e(8.6)p Fo(.)29 2511 y(As)j(one)g(could)f (exp)q(ect,)i(a)e(go)q(o)q(d)h(w)o(a)o(y)e(to)h(represen)o(t)h(a)f (class)g(is)h(as)f(a)g(table.)24 b(This)16 b(table)g(will)g(con)o(tain) g(all)-42 2567 y(instance)f(metho)q(ds)f(of)h(the)g(class,)f(plus)h(ev) o(en)o(tual)f(default)h(v)m(alues)g(for)f(instance)h(v)m(ariables.)k (An)c(instance)g(of)g(a)-42 2623 y(class)g(has)g(its)f Fm(parent)h Fo(\014eld)g(p)q(oin)o(ting)g(to)f(the)h(class,)g(and)g(so) g(it)f(\\inherits")g(all)g(metho)q(ds.)911 2748 y(27)p eop %%Page: 28 28 28 27 bop -42 261 1950 6 v -42 355 a Fm(#include)23 b("lua.h")-42 467 y(int)h(lockedParentName;)45 b(/*)24 b(lock)f(index)g(for)h(the)f (string)g("parent")g(*/)-42 524 y(int)h(lockedOldIndex;)93 b(/*)24 b(previous)f(fallback)f(function)h(*/)-42 637 y(void)h(callOldFallback)e(\(lua_Object)g(table,)h(lua_Object)g (index\))-42 693 y({)6 750 y(lua_Object)g(oldIndex)f(=)i (lua_getref\(lockedOldIndex\);)6 806 y(lua_pushobject\(table\);)6 863 y(lua_pushobject\(index\);)6 919 y(lua_callfunction\(oldIndex\);) -42 976 y(})-42 1088 y(void)g(Index)f(\(void\))-42 1145 y({)6 1201 y(lua_Object)g(table)g(=)h(lua_getparam\(1\);)6 1258 y(lua_Object)f(index)g(=)h(lua_getparam\(2\);)6 1314 y(lua_Object)f(parent;)6 1371 y(if)h(\(lua_isstring\(index\))d(&&) j(strcmp\(lua_getstring\(in)o(dex\),)d("parent"\))h(==)i(0\))6 1427 y({)54 1484 y(callOldFallback\(table,)d(index\);)54 1540 y(return;)6 1597 y(})6 1653 y(lua_pushobject\(table\);)6 1709 y(lua_pushref\(lockedParentName)o(\);)6 1766 y(parent)i(=)h (lua_getsubscript\(\);)6 1822 y(if)g(\(lua_istable\(parent\)\))6 1879 y({)54 1935 y(lua_pushobject\(parent\);)54 1992 y(lua_pushobject\(index\);)54 2048 y(/*)g(return)f(result)g(from)g (getsubscript)f(*/)54 2105 y(lua_pushobject\(lua_getsubs)o(cript\(\))o (\);)6 2161 y(})6 2218 y(else)54 2274 y(callOldFallback\(table,)f (index\);)-42 2330 y(})665 2466 y Fo(Figure)15 b(1:)k(Inheritance)d(in) f(C.)p -42 2522 V 911 2748 a(28)p eop %%Page: 29 29 29 28 bop -42 159 1950 6 v -42 253 a Fm(Point)24 b(=)f({x)h(=)g(0,)f(y) h(=)g(0})-42 366 y(function)f(Point:create)f(\(o\))6 423 y(o.parent)h(=)h(self)6 479 y(return)f(o)-42 536 y(end)-42 648 y(function)g(Point:move)g(\(p\))6 705 y(self.x)g(=)h (self.x)f(+)h(p.x)6 761 y(self.y)f(=)h(self.y)f(+)h(p.y)-42 818 y(end)-42 931 y(...)-42 1044 y(--)-42 1100 y(--)g(creating)f (points)-42 1157 y(--)-42 1213 y(p1)h(=)g(Point:create{x)e(=)h(10,)h(y) g(=)f(20})-42 1270 y(p2)h(=)g(Point:create{x)e(=)h(10})48 b(--)23 b(y)h(will)f(be)h(inherited)f(until)g(it)g(is)h(set)-42 1382 y(--)-42 1439 y(--)g(example)f(of)h(a)f(method)g(invocation)-42 1495 y(--)-42 1552 y(p1:move\(p2\))690 1687 y Fo(Figure)15 b(2:)k(A)c(Class)g(P)o(oin)o(t.)p -42 1744 V 29 1872 a(F)l(or)e(instance,)g(a)g(class)g Fm(Point)g Fo(can)g(b)q(e)h(describ) q(ed)h(as)e(in)g(Figure)f(2.)19 b(F)l(unction)14 b Fm(create)e Fo(helps)i(the)f(creation)-42 1928 y(of)f(new)h(p)q(oin)o(ts,)f(adding) g(the)g(paren)o(t)g(\014eld.)20 b(F)l(unction)12 b Fm(move)f Fo(is)h(an)h(example)e(of)h(an)g(instance)g(metho)q(d.)18 b(Finally)l(,)-42 1984 y(a)h(sub)q(class)f(can)h(b)q(e)h(created)e(as)g (a)h(new)g(table,)f(with)g(the)h Fm(parent)f Fo(\014eld)h(p)q(oin)o (ting)e(to)h(its)g(sup)q(erclass.)30 b(It)19 b(is)-42 2041 y(in)o(teresting)d(to)g(notice)g(ho)o(w)g(the)h(use)g(of)f Fm(self)g Fo(in)h(metho)q(d)e Fm(create)h Fo(allo)o(ws)f(this)h(metho)q (d)g(to)g(w)o(ork)g(prop)q(erly)-42 2097 y(ev)o(en)g(when)g(inherited)f (b)o(y)g(a)f(sub)q(class.)20 b(As)c(usual,)e(a)h(sub)q(class)g(ma)o(y)f (o)o(v)o(erwrite)f(an)o(y)i(inherited)g(metho)q(d)f(with)-42 2154 y(its)h(o)o(wn)g(v)o(ersion.)-42 2275 y Fe(8.8)56 b(Mo)r(dules)-42 2361 y Fo(Here)17 b(w)o(e)f(explain)f(one)i(p)q (ossible)f(w)o(a)o(y)f(to)g(sim)o(ulate)f(mo)q(dules)h(in)h(Lua.)23 b(The)17 b(main)d(idea)i(is)g(to)f(use)i(a)f(table)f(to)-42 2418 y(store)g(the)g(mo)q(dule)g(functions.)29 2474 y(A)g(mo)q(dule)g (should)g(b)q(e)h(written)e(as)h(a)g(separate)f(c)o(h)o(unk,)h (starting)f(with:)-42 2567 y Fm(if)24 b(modulename)f(then)g(return)g (end)47 b(--)24 b(avoid)f(loading)g(twice)g(the)h(same)f(module)-42 2623 y(modulename)g(=)h({})47 b(--)24 b(create)f(a)h(table)f(to)g (represent)g(the)g(module)911 2748 y Fo(29)p eop %%Page: 30 30 30 29 bop -42 159 1950 6 v -42 253 a Fm(function)23 b(open)h(\(mod\))6 310 y(local)f(n,)h(f)g(=)f(next\(mod,)g(nil\))6 366 y(while)g(n)h(do)54 423 y(setglobal\(n,)e(f\))54 479 y(n,)i(f)f(=)h(next\(mod,)f(n\))6 536 y(end)-42 592 y(end)645 727 y Fo(Figure)14 b(3:)20 b(Op)q(ening)c(a)f(mo)q(dule.)p -42 784 V -42 913 a(After)g(that,)f (functions)h(can)h(b)q(e)g(directly)e(de\014ned)j(with)d(the)h(syn)o (tax)-42 1006 y Fm(function)23 b(modulename.foo)f(\(...\))6 1063 y(...)-42 1119 y(end)29 1213 y Fo(An)o(y)14 b(co)q(de)g(that)f (needs)i(this)e(mo)q(dule)g(has)g(only)h(to)f(execute)h Fm(dofile\("filename"\))p Fo(,)d(where)j Fm(filename)f Fo(is)-42 1270 y(the)j(\014le)f(where)g(the)h(mo)q(dule)e(is)h (written.)k(After)14 b(this,)h(an)o(y)g(function)g(can)g(b)q(e)h (called)f(with)-42 1363 y Fm(modulename.foo\(...\))29 1457 y Fo(If)h(a)f(mo)q(dule)g(function)h(is)f(going)g(to)g(b)q(e)h (used)g(man)o(y)f(times,)e(the)j(program)e(can)i(giv)o(e)f(a)g(lo)q (cal)g(name)f(to)i(it.)-42 1514 y(Because)g(functions)f(are)g(v)m (alues,)g(it)g(is)f(enough)i(to)e(write)-42 1607 y Fm(localname)23 b(=)h(modulename.foo)-42 1701 y Fo(Finally)l(,)15 b(a)g(mo)q(dule)g(ma) o(y)f(b)q(e)j Fn(op)n(ene)n(d)p Fo(,)e(giving)f(direct)i(access)g(to)f (all)g(its)g(functions,)g(as)g(sho)o(wn)h(in)f(the)h(co)q(de)h(in)-42 1758 y(Figure)e(3.)-42 1879 y Fe(8.9)56 b(A)19 b(CF)-5 b(unction)-42 1965 y Fo(A)18 b(CF)l(unction)f(to)f(compute)h(the)g (maxim)o(um)c(of)k(a)g(v)m(ariable)g(n)o(um)o(b)q(er)f(of)h(argumen)o (ts)f(is)h(sho)o(wn)g(in)g(Figure)f(4.)-42 2022 y(After)f(registered)g (with)-42 2115 y Fm(lua_register)23 b(\("max",)g(math_max\);)-42 2209 y Fo(this)15 b(function)g(is)g(a)o(v)m(ailable)f(in)h(Lua,)g(as)g (follo)o(ws:)-42 2303 y Fm(i)24 b(=)g(max\(4,)f(5,)h(10,)f(-34\))47 b(--)24 b(i)g(receives)e(10)-42 2425 y Fe(8.10)56 b(Calling)21 b(Lua)e(F)-5 b(unctions)-42 2511 y Fo(This)17 b(example)e(illustrates)f (ho)o(w)i(a)h(C)f(function)g(can)h(call)e(the)i(Lua)g(function)f Fm(remove_blanks)f Fo(presen)o(ted)i(in)-42 2567 y(Section)f(8.3.)911 2748 y(30)p eop %%Page: 31 31 31 30 bop -42 628 1950 6 v -42 722 a Fm(void)24 b(math_max)f(\(void\)) -42 778 y({)-18 834 y(int)h(i=1;)71 b(/*)23 b(number)g(of)h(arguments)f (*/)-18 891 y(double)g(d,)h(dmax;)-18 947 y(lua_Object)f(o;)-18 1004 y(/*)h(the)f(function)g(must)g(get)h(at)g(least)f(one)g(argument)g (*/)-18 1060 y(if)h(\(\(o)f(=)h(lua_getparam\(i++\)\))e(==)h (LUA_NOOBJECT\))30 1117 y(lua_error)g(\("too)g(few)g(arguments)g(to)h (function)e(`max'"\);)-18 1173 y(/*)i(and)f(this)h(argument)e(must)i (be)f(a)h(number)f(*/)-18 1230 y(if)h(\(!lua_isnumber\(o\)\))30 1286 y(lua_error)f(\("incorrect)f(argument)h(to)g(function)g(`max'"\);) -18 1343 y(dmax)h(=)f(lua_getnumber)f(\(o\);)-18 1399 y(/*)i(loops)f(until)g(there)g(is)h(no)g(more)f(arguments)g(*/)-18 1455 y(while)h(\(\(o)f(=)h(lua_getparam\(i++\)\))d(!=)j(LUA_NOOBJECT\)) -18 1512 y({)6 1568 y(if)g(\(!lua_isnumber\(o\)\))54 1625 y(lua_error)f(\("incorrect)f(argument)h(to)g(function)g(`max'"\);) 6 1681 y(d)h(=)g(lua_getnumber)e(\(o\);)6 1738 y(if)i(\(d)f(>)h(dmax\)) f(dmax)h(=)f(d;)-18 1794 y(})-18 1851 y(/*)h(push)f(the)h(result)f(to)g (be)h(returned)f(*/)-18 1907 y(lua_pushnumber)f(\(dmax\);)-42 1964 y(})623 2099 y Fo(Figure)14 b(4:)20 b(C)15 b(function)g Fm(math)p 1147 2099 15 2 v 16 w(max)p Fo(.)p -42 2155 1950 6 v 911 2748 a(31)p eop %%Page: 32 32 32 31 bop -42 199 a Fm(void)24 b(remove_blanks)e(\(char)h(*s\))-42 256 y({)6 312 y(lua_pushstring\(s\);)45 b(/*)24 b(prepare)f(parameter)g (*/)6 369 y(lua_call\("remove_blanks"\);)44 b(/*)24 b(call)f(Lua)h (function)f(*/)6 425 y(strcpy\(s,)g(lua_getstring\(lua_getresu)o (lt\(1\)\)\))o(;)45 b(/*)24 b(copy)f(result)g(back)g(to)h('s')f(*/)-42 482 y(})-42 625 y Fp(Ac)n(kno)n(wledgmen)n(ts)-42 726 y Fo(The)15 b(authors)f(w)o(ould)f(lik)o(e)h(to)f(thank)h(CENPES/PETR)o (OBR)1053 715 y(\023)1047 726 y(AS)h(whic)o(h,)f(join)o(tly)f(with)h Fa(T)l(eC)1574 740 y(Graf)1656 726 y Fo(,)g(used)h(exten-)-42 783 y(siv)o(ely)i(early)g(v)o(ersions)g(of)h(this)f(system)f(and)i(ga)o (v)o(e)f(v)m(aluable)g(commen)o(ts.)25 b(The)18 b(authors)f(w)o(ould)g (also)g(lik)o(e)g(to)-42 839 y(thank)f(Carlos)d(Henrique)j(Levy)l(,)f (who)g(found)h(the)f(name)f(of)h(the)h(game.)i(Lua)d(means)g Fn(mo)n(on)g Fo(in)g(P)o(ortuguese.)-42 982 y Fp(A)68 b(Incompatibiliti)q(es)24 b(with)f(Previous)h(V)-6 b(ersions)-42 1084 y Fo(Although)15 b(great)f(care)h(has)g(b)q(een)h(tak)o(en)f(to)f (a)o(v)o(oid)g(incompatibiliti)o(es)e(with)j(the)g(previous)g(public)g (v)o(ersions)f(of)-42 1140 y(Lua,)i(some)e(di\013erences)h(had)g(to)g (b)q(e)h(in)o(tro)q(duced.)k(Here)15 b(is)g(a)g(list)f(of)h(all)f (these)h(di\013erences.)-42 1262 y Fe(Incompatibilities)21 b(with)f(v)n(ersion)f(2.2)27 1348 y Fj(\017)j Fo(F)l(unctions)15 b Fm(date)f Fo(and)h Fm(time)f Fo(\(from)f Fm(iolib)p Fo(\))g(ha)o(v)o(e)i(b)q(een)h(sup)q(erseded)g(b)o(y)e(the)h(new)g(v)o (ersion)f(of)h(function)72 1404 y Fm(date)p Fo(.)27 1498 y Fj(\017)22 b Fo(F)l(unction)17 b Fm(append)g Fo(\(from)e Fm(iolib)p Fo(\))i(no)o(w)f(returns)i(1)f(whenev)o(er)h(it)e(succeeds,) j(whether)e(the)h(\014le)f(is)g(new)72 1555 y(or)e(not.)27 1648 y Fj(\017)22 b Fo(F)l(unction)14 b Fm(int2str)g Fo(\(from)f Fm(strlib)p Fo(\))g(has)h(b)q(een)i(sup)q(erseded)g(b)o(y)e (new)h(function)g Fm(format)p Fo(,)e(with)h(param-)72 1705 y(eter)h Fm("\045c")p Fo(.)27 1799 y Fj(\017)22 b Fo(The)15 b(API)h(lo)q(c)o(k)f(mec)o(hanism)d(has)j(b)q(een)h(sup)q (erseded)h(b)o(y)e(the)g(reference)h(mec)o(hanism.)h(Ho)o(w)o(ev)o(er,) d Fm(lua.h)72 1855 y Fo(pro)o(vides)h(compatibilit)n(y)e(macros,)g(so)h (there)i(is)e(no)i(need)g(to)e(c)o(hange)h(programs.)27 1949 y Fj(\017)22 b Fo(API)16 b(function)f Fm(lua_pushliteral)e Fo(no)o(w)i(is)f(just)h(a)g(macro)f(to)g Fm(lua_pushstring)p Fo(.)-42 2071 y Fe(Incompatibilities)21 b(with)f(v)n(ersion)f(2.1)27 2156 y Fj(\017)j Fo(The)13 b(function)f Fm(type)g Fo(no)o(w)g(returns)h (the)f(string)g Fm("function")f Fo(b)q(oth)h(for)g(C)g(and)h(Lua)g (functions.)19 b(Because)72 2213 y(Lua)f(functions)g(and)g(C)g (functions)f(are)h(compatible,)e(this)i(b)q(eha)o(vior)f(is)g(usually)h (more)e(useful.)28 b(When)72 2269 y(needed,)20 b(the)e(second)g(result) g(of)f(function)h Fm(type)f Fo(ma)o(y)f(b)q(e)j(used)g(to)e (distinguish)g(b)q(et)o(w)o(een)h(Lua)h(and)f(C)72 2326 y(functions.)27 2420 y Fj(\017)k Fo(A)15 b(function)g(de\014nition)g (only)g(assigns)f(the)h(function)g(v)m(alue)g(to)g(the)g(giv)o(en)f(v)m (ariable)h(at)f(execution)h(time.)911 2748 y(32)p eop %%Page: 33 33 33 32 bop -42 199 a Fe(Incompatibilities)21 b(with)f(v)n(ersion)f(1.1) 27 285 y Fj(\017)j Fo(The)16 b(equalit)o(y)e(test)g(op)q(erator)h(no)o (w)f(is)h(denoted)h(b)o(y)f Fm(==)p Fo(,)f(instead)h(of)g Fm(=)p Fo(.)27 379 y Fj(\017)22 b Fo(The)13 b(syn)o(tax)f(for)g(table)g (construction)g(has)h(b)q(een)h(greatly)d(simpli\014ed.)18 b(The)13 b(old)f Fm(@\(size\))g Fo(has)g(b)q(een)i(sub-)72 435 y(stituted)h(b)o(y)h Fm({})p Fo(.)21 b(The)16 b(list)e(constructor) h(\(formerly)e Fm(@[...])p Fo(\))i(and)h(the)f(record)h(constructor)f (\(formerly)72 492 y Fm(@{...})p Fo(\))f(no)o(w)g(are)h(b)q(oth)f(co)q (ded)i(lik)o(e)e Fm({...})p Fo(.)19 b(When)c(the)g(construction)f(in)o (v)o(olv)o(es)g(a)g(function)h(call,)e(lik)o(e)72 548 y(in)i Fm(@func{...})p Fo(,)e(the)i(new)g(syn)o(tax)f(do)q(es)i(not)e (use)h(the)g Fm(@)p Fo(.)20 b(More)14 b(imp)q(ortan)o(t,)e Fn(a)17 b(c)n(onstruction)e(function)72 605 y(must)i(now)f(explicitly)g (r)n(eturn)g(the)g(c)n(onstructe)n(d)g(table)p Fo(.)27 699 y Fj(\017)22 b Fo(The)16 b(function)f Fm(lua_call)f Fo(no)h(longer)f(has)h(the)h(parameter)d Fm(nparam)p Fo(.)27 792 y Fj(\017)22 b Fo(The)g(function)f Fm(lua_pop)g Fo(is)g(no)h(longer)e(a)o(v)m(ailable,)i(since)g(it)f(could)g(lead)g (to)g(strange)g(b)q(eha)o(vior.)39 b(In)72 849 y(particular,)18 b(to)h(access)g(results)g(returned)g(from)f(a)g(Lua)i(function,)f(the)h (new)f(macro)e Fm(lua_getresult)72 905 y Fo(should)e(b)q(e)h(used.)27 999 y Fj(\017)22 b Fo(The)16 b(old)e(functions)h Fm(lua_storefield)f Fo(and)h Fm(lua_storeindexed)e Fo(ha)o(v)o(e)i(b)q(een)h(replaced)f(b)o (y)72 1112 y Fm(int)24 b(lua_storesubscript)d(\(void\);)72 1224 y Fo(with)15 b(the)g(parameters)e(explicitly)h(pushed)j(on)e(the)g (stac)o(k.)27 1318 y Fj(\017)22 b Fo(The)12 b(functionalit)o(y)e(of)i (the)g(function)f Fm(lua_errorfunction)f Fo(has)h(b)q(een)i(replaced)f (b)o(y)g(the)g Fn(fal)r(lb)n(ack)f Fo(mec)o(h-)72 1374 y(anism;)i(see)j(Section)f(4.8.)27 1468 y Fj(\017)22 b Fo(When)16 b(calling)e(a)h(function)h(from)d(the)j(Lua)g(library)l(,) e(parameters)g(passed)h(through)h(the)f(stac)o(k)g(m)o(ust)f(b)q(e)72 1525 y(pushed)20 b(just)f(b)q(efore)g(the)g(corresp)q(onden)o(t)g (call,)f(with)g(no)h(in)o(termediate)e(calls)g(to)i(Lua.)31 b(Sp)q(ecial)19 b(care)72 1581 y(should)c(b)q(e)h(tak)o(en)f(with)f (macros)g(lik)o(e)g Fm(lua_getindexed)f Fo(and)j Fm(lua_getfield)p Fo(.)911 2748 y(33)p eop %%Page: 34 34 34 33 bop -42 264 a Fp(Index)-42 354 y Fo(..)20 b(6)-42 411 y(abs)c(19)-42 467 y(acos)f(19)-42 524 y(Adjustmen)o(t)f(4)-42 580 y(and)i(6)-42 637 y(app)q(endto)g(20)-42 693 y(argumen)o(ts)e(8)-42 749 y(arithmetic)f(fallbac)o(k)h(9)-42 806 y(arithmetic)f(op)q(erators) i(6)-42 862 y(arra)o(ys)f(3)-42 919 y(ascii)h(19)-42 975 y(asin)g(19)-42 1032 y(assert)g(17)-42 1088 y(Assignmen)o(t)f(4)-42 1145 y(asso)q(ciativ)o(e)g(arra)o(ys)g(3)-42 1201 y(atan)h(19)-42 1258 y(atan2)g(19)-42 1314 y(basic)g(t)o(yp)q(es)h(2)-42 1370 y(blo)q(c)o(k)f(4)-42 1427 y(C)g(p)q(oin)o(ters)g(2)-42 1483 y(ceil)g(19)-42 1540 y(CF)l(unction)g(2)-42 1596 y(c)o(h)o(unk)h(2)-42 1653 y(clone)g(24)-42 1709 y(closing)f(a)g (\014le)g(20)-42 1766 y(Co)q(ercion)g(3)-42 1822 y(Commen)o(ts)e(3)-42 1879 y(concatenation)i(fallbac)o(k)f(10)-42 1935 y(concatenation)h(6) -42 1991 y(condition)g(expression)g(5)-42 2048 y(constructors)g(7)-42 2104 y(cos)g(19)-42 2161 y(Data)f(Structures)i(24)-42 2217 y(date)f(22)-42 2274 y(debug)h(pragma)e(11)-42 2330 y(do\014le)i(16)-42 2387 y(dostring)f(16)-42 2443 y(error)g(fallbac)o (k)f(10)-42 2500 y(error)h(18)-42 2556 y(exit)g(22)-42 2612 y(exp)q(onen)o(tiation)g(6)1006 354 y(Expressions)g(5)1006 411 y(fallbac)o(ks)f(9)1006 467 y(\015o)q(or)h(19)1006 524 y(format)e(19)1006 580 y(function)i(call)f(8)1006 637 y(F)l(unction)h(De\014nitions)g(8)1006 693 y(function)g(falbac)o(k) f(10)1006 749 y(function)h(2)1006 806 y(functions)g(in)g(C)g(30)1006 862 y(getglobal)f(18)1006 919 y(gettable)g(fallbac)o(k)g(10)1006 975 y(global)g(en)o(vironmen)o(t)f(2)1006 1032 y(Global)h(v)m(ariables) g(2)1006 1088 y(Iden)o(ti\014ers)i(3)1006 1145 y(if-then-else)f(5)1006 1201 y(index)h(fallbac)o(k)e(10)1006 1258 y(index)i(getglobal)d(10)1006 1314 y(inheritance)i(27)1006 1370 y(Literal)f(strings)g(3)1006 1427 y(Lo)q(cal)h(v)m(ariables)g(5)1006 1483 y(log10)f(19)1006 1540 y(log)g(19)1006 1596 y(logical)g(op)q(erators)g(6)1006 1653 y(luac)h(11)1006 1709 y(luac)g(2)1006 1766 y(lua)p 1070 1766 14 2 v 16 w(call)f(14)1006 1822 y(lua)p 1070 1822 V 16 w(callfunction)g(14)1006 1879 y(lua)p 1070 1879 V 16 w(CF)l(unction)h(15)1006 1935 y(lua)p 1070 1935 V 16 w(createtable)g(13)1006 1991 y(lua)p 1070 1991 V 16 w(do\014le)g(11)1006 2048 y(lua)p 1070 2048 V 16 w(dostring)f(11)1006 2104 y(lua)p 1070 2104 V 16 w(error)h(14)1006 2161 y(lua)p 1070 2161 V 16 w(getcfunction)g(12)1006 2217 y(lua)p 1070 2217 V 16 w(getglobal)f(13)1006 2274 y(lua)p 1070 2274 V 16 w(getn)o(um)o(b)q(er)g(12)1006 2330 y(lua)p 1070 2330 V 16 w(getparam)f(15)1006 2387 y(lua)p 1070 2387 V 16 w(getref)i(15)1006 2443 y(lua)p 1070 2443 V 16 w(getresult)f(14)1006 2500 y(lua)p 1070 2500 V 16 w(getstring)g(12)1006 2556 y(lua)p 1070 2556 V 16 w(getsubscript)h(13)1006 2612 y(lua)p 1070 2612 V 16 w(getuserdata)f(12)911 2748 y(34)p eop %%Page: 35 35 35 34 bop -42 199 a Fo(lua)p 22 199 14 2 v 16 w(iscfunction)15 b(12)-42 256 y(lua)p 22 256 V 16 w(isfunction)g(12)-42 312 y(lua)p 22 312 V 16 w(isnil)g(12)-42 369 y(lua)p 22 369 V 16 w(isn)o(um)o(b)q(er)g(12)-42 425 y(lua)p 22 425 V 16 w(isstring)f(12)-42 482 y(lua)p 22 482 V 16 w(istable)h(12)-42 538 y(lua)p 22 538 V 16 w(isuserdata)g(12)-42 594 y(LUA)p 57 594 V 17 w(NOOBJECT)i(15)-42 651 y(lua)p 22 651 V 16 w(Ob)s(ject)f(11)-42 707 y(lua)p 22 707 V 16 w(pushcfunction)g(13)-42 764 y(lua)p 22 764 V 16 w(pushnil)g(13)-42 820 y(lua)p 22 820 V 16 w(pushn)o(um)o(b)q(er)g(13)-42 877 y(lua)p 22 877 V 16 w(pushob)s(ject)g(13)-42 933 y(lua)p 22 933 V 16 w(pushref)g(15)-42 990 y(lua)p 22 990 V 16 w(pushstring)f(13)-42 1046 y(lua)p 22 1046 V 16 w(push)o(userdata)h(13)-42 1103 y(lua)p 22 1103 V 16 w(push)o(usertag)f(13)-42 1159 y(lua)p 22 1159 V 16 w(ref)h(15)-42 1215 y(lua)p 22 1215 V 16 w(register)f(15)-42 1272 y(lua)p 22 1272 V 16 w(setfallbac)o(k)f(15)-42 1328 y(lua)p 22 1328 V 16 w(storeglobal)g(13)-42 1385 y(lua)p 22 1385 V 16 w(storesubscript)h(13)-42 1441 y(lua)p 22 1441 V 16 w(t)o(yp)q(e)h(12)-42 1498 y(lua)p 22 1498 V 16 w(unref)g(15)-42 1554 y(max)e(19)-42 1611 y(metho)q(ds)h(9)-42 1667 y(min)f(19)-42 1724 y(mo)q(d)h(19)-42 1780 y(Mo)q(dules)h(29)-42 1836 y(m)o(ultiple)e(assignmen)o(t)f(4)-42 1893 y(next)j(16)-42 1949 y(next)g(24)-42 2006 y(nextv)m(ar)g(17)-42 2062 y(nextv)m(ar)g(24)-42 2119 y(nil)f(2)-42 2175 y(not)g(6)-42 2232 y(n)o(um)o(b)q(er)g(2)-42 2288 y(Numerical)f(constan)o(ts)g(3)-42 2345 y(Op)q(erator)h(precedence)i(7)-42 2401 y(or)e(6)-42 2457 y(order)g(fallbac)o(k)f(9)-42 2514 y(P)o(ersistence)h(26)-42 2570 y(pip)q(ed)h(input)g(20)1006 199 y(pip)q(ed)g(output)f(20)1006 256 y(p)q(op)q(en)h(20)1006 312 y(p)q(op)q(en)g(20)1006 369 y(pre-compilation)d(2)1006 425 y(prede\014ned)k(functions)e(16)1006 482 y(prin)o(t)g(17)1006 538 y(Programmi)o(ng)d(with)j(Classes)f(27) 1006 594 y(random)g(19)1006 651 y(randomseed)h(19)1006 707 y(read)g(20)1006 764 y(readfrom)f(20)1006 820 y(readun)o(til)g(21) 1006 877 y(records)h(3)1006 933 y(reference)h(15)1006 990 y(re\015exivit)o(y)e(16)1006 1046 y(relational)f(op)q(erators)i(6) 1006 1103 y(remo)o(v)o(e)f(20)1006 1159 y(rename)g(20)1006 1215 y(rep)q(eat-un)o(til)h(5)1006 1272 y(reserv)o(ed)g(w)o(ords)g(3) 1006 1328 y(return)g(statemen)o(t)e(4)1006 1385 y(return)i(statemen)o (t)e(5)1006 1441 y(self)i(9)1006 1498 y(setfallbac)o(k)f(10)1006 1554 y(setfallbac)o(k)g(18)1006 1611 y(setglobal)g(18)1006 1667 y(settable)h(fallbac)o(k)f(10)1006 1724 y(short-cut)h(ev)m (aluation)f(6)1006 1780 y(Simple)g(Expressions)h(5)1006 1836 y(sin)g(19)1006 1893 y(sqrt)g(19)1006 1949 y(statemen)o(ts)e(4) 1006 2006 y(str\014nd)i(18)1006 2062 y(string)f(2)1006 2119 y(strlen)h(18)1006 2175 y(strlo)o(w)o(er)e(18)1006 2232 y(strsub)i(18)1006 2288 y(strupp)q(er)h(19)1006 2345 y(table)f(2)1006 2401 y(tag)f(17)1006 2457 y(tan)h(19)1006 2514 y(tmpname)e(20)1006 2570 y(tok)o(ens)i(3)911 2748 y(35)p eop %%Page: 36 36 36 35 bop -42 199 a Fo(ton)o(um)o(b)q(er)14 b(17)-42 256 y(tostring)g(17)-42 312 y(t)o(yp)q(e)i(17)-42 369 y(T)o(yp)q(es)g(2)-42 425 y(userdata)f(2)-42 482 y(V)l(ariable)g(n)o (um)o(b)q(er)f(of)h(argumen)o(ts)f(25)-42 538 y(v)o(ersion)h(1.1)f(33) -42 594 y(v)o(ersion)h(2.1)f(32)-42 651 y(v)o(ersion)h(2.2)f(32)-42 707 y(while-do)h(5)-42 764 y(write)g(21)-42 820 y(writeto)f(20)911 2748 y(36)p eop %%Page: 37 37 37 36 bop -42 199 a Fp(Con)n(ten)n(ts)-42 301 y Fl(1)43 b(In)o(tro)q(duction)1567 b(1)-42 403 y(2)43 b(En)o(vironmen)o(t)14 b(and)k(Ch)o(unks)1268 b(2)-42 505 y(3)43 b(T)o(yp)q(es)1717 b(2)-42 607 y(4)43 b(The)17 b(Language)1534 b(3)27 663 y Fo(4.1)45 b(Lexical)15 b(Con)o(v)o(en)o(tions)40 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.) 65 b(3)27 720 y(4.2)45 b(Co)q(ercion)16 b(.)23 b(.)f(.)g(.)h(.)f(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) g(.)65 b(3)27 776 y(4.3)45 b(Adjustmen)o(t)28 b(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)h(.)f(.)g(.)65 b(4)27 833 y(4.4)45 b(Statemen)o(ts)40 b(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(4)131 889 y(4.4.1)51 b(Blo)q(c)o(ks)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(4)131 946 y(4.4.2)51 b(Assignmen)o(t)27 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(4)131 1002 y(4.4.3)51 b(Con)o(trol)13 b(Structures)30 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(5)131 1059 y(4.4.4)51 b(F)l(unction)15 b(Calls)f(as)g(Statemen)o(ts)30 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(5)131 1115 y(4.4.5)51 b(Lo)q(cal)15 b(Declarations)28 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(5)27 1171 y(4.5)45 b(Expressions)30 b(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(5)131 1228 y(4.5.1)51 b(Simple)14 b(Expressions)k(.)k(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)h(.)f(.)g(.)65 b(5)131 1284 y(4.5.2)51 b(Arithmetic)13 b(Op)q(erators)41 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) g(.)65 b(6)131 1341 y(4.5.3)51 b(Relational)13 b(Op)q(erators)19 b(.)k(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(6)131 1397 y(4.5.4)51 b(Logical)14 b(Op)q(erators)44 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(6)131 1454 y(4.5.5)51 b(Concatenation)40 b(.)23 b(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(6)131 1510 y(4.5.6)51 b(Precedence)40 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(7)131 1567 y(4.5.7)51 b(T)l(able)15 b(Constructors)j(.)k(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(7)131 1623 y(4.5.8)51 b(F)l(unction)15 b(Calls)39 b(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(8)27 1680 y(4.6)45 b(F)l(unction)15 b(De\014nitions)35 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(8)27 1736 y(4.7)45 b(F)l(allbac)o(ks)f(.)22 b(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(9)27 1792 y(4.8)45 b(Error)14 b(Handling)31 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) h(.)f(.)g(.)42 b(10)-42 1894 y Fl(5)h(The)17 b(Application)g(Program)f (In)o(terface)1020 b(11)27 1951 y Fo(5.1)45 b(Executing)15 b(Lua)h(Co)q(de)32 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)h(.)f(.)g(.)42 b(11)27 2007 y(5.2)j(Con)o(v)o(erting)14 b(V)l(alues)h(b)q(et)o(w)o(een)h(C)f(and)g(Lua)27 b(.)c(.)f(.)g(.)h(.)f (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) h(.)f(.)g(.)42 b(11)27 2064 y(5.3)j(Manipulating)14 b(Lua)h(Ob)s(jects) 20 b(.)i(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 b(13)27 2120 y(5.4)j(Calling)14 b(Lua)h(F)l(unctions)34 b(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g (.)42 b(14)27 2177 y(5.5)j(C)15 b(F)l(unctions)22 b(.)g(.)h(.)f(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g (.)42 b(15)27 2233 y(5.6)j(References)17 b(to)d(Lua)i(Ob)s(jects)21 b(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 b(15)-42 2335 y Fl(6)h(Prede\014ned)16 b(F)l(unctions)h(and)h (Libraries)1024 b(16)27 2391 y Fo(6.1)45 b(Prede\014ned)17 b(F)l(unctions)k(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)h(.)f(.)g(.)42 b(16)27 2448 y(6.2)j(String)15 b(Manipulation)35 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)h(.)f(.)g(.)42 b(18)27 2504 y(6.3)j(Mathematical)12 b(F)l(unctions)29 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)h(.)f(.)g(.)42 b(19)27 2561 y(6.4)j(I/O)16 b(F)l(acilities)31 b(.)23 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)h(.)f(.)g(.)42 b(19)911 2748 y(37)p eop %%Page: 38 38 38 37 bop -42 199 a Fl(7)43 b(The)17 b(Debuger)h(In)o(terface)1309 b(22)27 256 y Fo(7.1)45 b(Stac)o(k)15 b(and)g(F)l(unction)g (Information)e(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 b(22)27 312 y(7.2)j(Manipulating)14 b(Lo)q(cal)h(V)l(ariables)29 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 b(23)27 369 y(7.3)j(Ho)q(oks)34 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.) 42 b(23)-42 471 y Fl(8)h(Some)16 b(Examples)1468 b(23)27 527 y Fo(8.1)45 b(Data)14 b(Structures)i(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 b(24)27 583 y(8.2)j(The)16 b(F)l(unctions)f Fm(next)f Fo(and)i Fm(nextvar)i Fo(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.) 42 b(24)27 640 y(8.3)j(String)15 b(Manipulation)35 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.) 42 b(25)27 696 y(8.4)j(V)l(ariable)15 b(n)o(um)o(b)q(er)f(of)h(argumen) o(ts)d(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 b(25)27 753 y(8.5)j(P)o(ersistence)e(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 b(26)27 809 y(8.6)j(Inheritance)40 b(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 b(27)27 866 y(8.7)j(Programmi)o(ng)12 b(with)j(Classes)e(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 b(27)27 922 y(8.8)j(Mo)q(dules)25 b(.)e(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 b(29)27 979 y(8.9)j(A)15 b(CF)l(unction)41 b(.)23 b(.)f(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 b(30)27 1035 y(8.10)22 b(Calling)14 b(Lua)h(F)l(unctions)34 b(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g (.)42 b(30)-42 1137 y Fl(A)29 b(Incompatibilities)14 b(with)j(Previous)f(V)l(ersions)899 b(32)911 2748 y Fo(38)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF