18e3e3a7aSWarner Losh<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 28e3e3a7aSWarner Losh<HTML> 38e3e3a7aSWarner Losh<HEAD> 48e3e3a7aSWarner Losh<TITLE>Lua 5.3 readme</TITLE> 58e3e3a7aSWarner Losh<LINK REL="stylesheet" TYPE="text/css" HREF="lua.css"> 68e3e3a7aSWarner Losh<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1"> 78e3e3a7aSWarner Losh<STYLE TYPE="text/css"> 88e3e3a7aSWarner Loshblockquote, .display { 98e3e3a7aSWarner Losh border: solid #a0a0a0 2px ; 108e3e3a7aSWarner Losh border-radius: 8px ; 118e3e3a7aSWarner Losh padding: 1em ; 128e3e3a7aSWarner Losh margin: 0px ; 138e3e3a7aSWarner Losh} 148e3e3a7aSWarner Losh 158e3e3a7aSWarner Losh.display { 168e3e3a7aSWarner Losh word-spacing: 0.25em ; 178e3e3a7aSWarner Losh} 188e3e3a7aSWarner Losh 198e3e3a7aSWarner Loshdl.display dd { 208e3e3a7aSWarner Losh padding-bottom: 0.2em ; 218e3e3a7aSWarner Losh} 228e3e3a7aSWarner Losh 238e3e3a7aSWarner Loshtt, kbd, code { 248e3e3a7aSWarner Losh font-size: 12pt ; 258e3e3a7aSWarner Losh} 268e3e3a7aSWarner Losh</STYLE> 278e3e3a7aSWarner Losh</HEAD> 288e3e3a7aSWarner Losh 298e3e3a7aSWarner Losh<BODY> 308e3e3a7aSWarner Losh 318e3e3a7aSWarner Losh<H1> 328e3e3a7aSWarner Losh<A HREF="http://www.lua.org/"><IMG SRC="logo.gif" ALT="Lua"></A> 338e3e3a7aSWarner LoshWelcome to Lua 5.3 348e3e3a7aSWarner Losh</H1> 358e3e3a7aSWarner Losh 368e3e3a7aSWarner Losh<DIV CLASS="menubar"> 378e3e3a7aSWarner Losh<A HREF="#about">about</A> 388e3e3a7aSWarner Losh· 398e3e3a7aSWarner Losh<A HREF="#install">installation</A> 408e3e3a7aSWarner Losh· 418e3e3a7aSWarner Losh<A HREF="#changes">changes</A> 428e3e3a7aSWarner Losh· 438e3e3a7aSWarner Losh<A HREF="#license">license</A> 448e3e3a7aSWarner Losh· 458e3e3a7aSWarner Losh<A HREF="contents.html">reference manual</A> 468e3e3a7aSWarner Losh</DIV> 478e3e3a7aSWarner Losh 488e3e3a7aSWarner Losh<H2><A NAME="about">About Lua</A></H2> 498e3e3a7aSWarner Losh<P> 508e3e3a7aSWarner LoshLua is a powerful, fast, lightweight, embeddable scripting language 518e3e3a7aSWarner Loshdeveloped by a 528e3e3a7aSWarner Losh<A HREF="http://www.lua.org/authors.html">team</A> 538e3e3a7aSWarner Loshat 548e3e3a7aSWarner Losh<A HREF="http://www.puc-rio.br/">PUC-Rio</A>, 558e3e3a7aSWarner Loshthe Pontifical Catholic University of Rio de Janeiro in Brazil. 568e3e3a7aSWarner LoshLua is 578e3e3a7aSWarner Losh<A HREF="#license">free software</A> 588e3e3a7aSWarner Loshused in many products and projects around the world. 598e3e3a7aSWarner Losh 608e3e3a7aSWarner Losh<P> 618e3e3a7aSWarner LoshLua's 628e3e3a7aSWarner Losh<A HREF="http://www.lua.org/">official web site</A> 638e3e3a7aSWarner Loshprovides complete information 648e3e3a7aSWarner Loshabout Lua, 658e3e3a7aSWarner Loshincluding 668e3e3a7aSWarner Loshan 678e3e3a7aSWarner Losh<A HREF="http://www.lua.org/about.html">executive summary</A> 688e3e3a7aSWarner Loshand 698e3e3a7aSWarner Loshupdated 708e3e3a7aSWarner Losh<A HREF="http://www.lua.org/docs.html">documentation</A>, 718e3e3a7aSWarner Loshespecially the 728e3e3a7aSWarner Losh<A HREF="http://www.lua.org/manual/5.3/">reference manual</A>, 738e3e3a7aSWarner Loshwhich may differ slightly from the 748e3e3a7aSWarner Losh<A HREF="contents.html">local copy</A> 758e3e3a7aSWarner Loshdistributed in this package. 768e3e3a7aSWarner Losh 778e3e3a7aSWarner Losh<H2><A NAME="install">Installing Lua</A></H2> 788e3e3a7aSWarner Losh<P> 798e3e3a7aSWarner LoshLua is distributed in 808e3e3a7aSWarner Losh<A HREF="http://www.lua.org/ftp/">source</A> 818e3e3a7aSWarner Loshform. 828e3e3a7aSWarner LoshYou need to build it before using it. 838e3e3a7aSWarner LoshBuilding Lua should be straightforward 848e3e3a7aSWarner Loshbecause 858e3e3a7aSWarner LoshLua is implemented in pure ANSI C and compiles unmodified in all known 868e3e3a7aSWarner Loshplatforms that have an ANSI C compiler. 878e3e3a7aSWarner LoshLua also compiles unmodified as C++. 888e3e3a7aSWarner LoshThe instructions given below for building Lua are for Unix-like platforms. 898e3e3a7aSWarner LoshSee also 908e3e3a7aSWarner Losh<A HREF="#other">instructions for other systems</A> 918e3e3a7aSWarner Loshand 928e3e3a7aSWarner Losh<A HREF="#customization">customization options</A>. 938e3e3a7aSWarner Losh 948e3e3a7aSWarner Losh<P> 958e3e3a7aSWarner LoshIf you don't have the time or the inclination to compile Lua yourself, 968e3e3a7aSWarner Loshget a binary from 978e3e3a7aSWarner Losh<A HREF="http://lua-users.org/wiki/LuaBinaries">LuaBinaries</A>. 988e3e3a7aSWarner LoshTry also 998e3e3a7aSWarner Losh<A HREF="http://luadist.org/">LuaDist</A>, 1008e3e3a7aSWarner Losha multi-platform distribution of Lua that includes batteries. 1018e3e3a7aSWarner Losh 1028e3e3a7aSWarner Losh<H3>Building Lua</H3> 1038e3e3a7aSWarner Losh<P> 1048e3e3a7aSWarner LoshIn most Unix-like platforms, simply do "<KBD>make</KBD>" with a suitable target. 1058e3e3a7aSWarner LoshHere are the details. 1068e3e3a7aSWarner Losh 1078e3e3a7aSWarner Losh<OL> 1088e3e3a7aSWarner Losh<LI> 1098e3e3a7aSWarner LoshOpen a terminal window and move to 110*e112e9d2SKyle Evansthe top-level directory, which is named <TT>lua-5.3.5</TT>. 1118e3e3a7aSWarner LoshThe <TT>Makefile</TT> there controls both the build process and the installation process. 1128e3e3a7aSWarner Losh<P> 1138e3e3a7aSWarner Losh<LI> 1148e3e3a7aSWarner Losh Do "<KBD>make</KBD>" and see if your platform is listed. 1158e3e3a7aSWarner Losh The platforms currently supported are: 1168e3e3a7aSWarner Losh<P> 1178e3e3a7aSWarner Losh<P CLASS="display"> 1188e3e3a7aSWarner Losh aix bsd c89 freebsd generic linux macosx mingw posix solaris 1198e3e3a7aSWarner Losh</P> 1208e3e3a7aSWarner Losh<P> 1218e3e3a7aSWarner Losh If your platform is listed, just do "<KBD>make xxx</KBD>", where xxx 1228e3e3a7aSWarner Losh is your platform name. 1238e3e3a7aSWarner Losh<P> 1248e3e3a7aSWarner Losh If your platform is not listed, try the closest one or posix, generic, 1258e3e3a7aSWarner Losh c89, in this order. 1268e3e3a7aSWarner Losh<P> 1278e3e3a7aSWarner Losh<LI> 1288e3e3a7aSWarner LoshThe compilation takes only a few moments 1298e3e3a7aSWarner Loshand produces three files in the <TT>src</TT> directory: 1308e3e3a7aSWarner Loshlua (the interpreter), 1318e3e3a7aSWarner Loshluac (the compiler), 1328e3e3a7aSWarner Loshand liblua.a (the library). 1338e3e3a7aSWarner Losh<P> 1348e3e3a7aSWarner Losh<LI> 1358e3e3a7aSWarner Losh To check that Lua has been built correctly, do "<KBD>make test</KBD>" 1368e3e3a7aSWarner Losh after building Lua. This will run the interpreter and print its version. 1378e3e3a7aSWarner Losh</OL> 1388e3e3a7aSWarner Losh<P> 1398e3e3a7aSWarner LoshIf you're running Linux and get compilation errors, 1408e3e3a7aSWarner Loshmake sure you have installed the <TT>readline</TT> development package 1418e3e3a7aSWarner Losh(which is probably named <TT>libreadline-dev</TT> or <TT>readline-devel</TT>). 1428e3e3a7aSWarner LoshIf you get link errors after that, 1438e3e3a7aSWarner Loshthen try "<KBD>make linux MYLIBS=-ltermcap</KBD>". 1448e3e3a7aSWarner Losh 1458e3e3a7aSWarner Losh<H3>Installing Lua</H3> 1468e3e3a7aSWarner Losh<P> 1478e3e3a7aSWarner Losh Once you have built Lua, you may want to install it in an official 1488e3e3a7aSWarner Losh place in your system. In this case, do "<KBD>make install</KBD>". The official 1498e3e3a7aSWarner Losh place and the way to install files are defined in the <TT>Makefile</TT>. You'll 1508e3e3a7aSWarner Losh probably need the right permissions to install files. 1518e3e3a7aSWarner Losh 1528e3e3a7aSWarner Losh<P> 1538e3e3a7aSWarner Losh To build and install Lua in one step, do "<KBD>make xxx install</KBD>", 1548e3e3a7aSWarner Losh where xxx is your platform name. 1558e3e3a7aSWarner Losh 1568e3e3a7aSWarner Losh<P> 1578e3e3a7aSWarner Losh To install Lua locally, do "<KBD>make local</KBD>". 1588e3e3a7aSWarner Losh This will create a directory <TT>install</TT> with subdirectories 1598e3e3a7aSWarner Losh <TT>bin</TT>, <TT>include</TT>, <TT>lib</TT>, <TT>man</TT>, <TT>share</TT>, 1608e3e3a7aSWarner Losh and install Lua as listed below. 1618e3e3a7aSWarner Losh 1628e3e3a7aSWarner Losh To install Lua locally, but in some other directory, do 1638e3e3a7aSWarner Losh "<KBD>make install INSTALL_TOP=xxx</KBD>", where xxx is your chosen directory. 1648e3e3a7aSWarner Losh The installation starts in the <TT>src</TT> and <TT>doc</TT> directories, 1658e3e3a7aSWarner Losh so take care if <TT>INSTALL_TOP</TT> is not an absolute path. 1668e3e3a7aSWarner Losh 1678e3e3a7aSWarner Losh<DL CLASS="display"> 1688e3e3a7aSWarner Losh<DT> 1698e3e3a7aSWarner Losh bin: 1708e3e3a7aSWarner Losh<DD> 1718e3e3a7aSWarner Losh lua luac 1728e3e3a7aSWarner Losh<DT> 1738e3e3a7aSWarner Losh include: 1748e3e3a7aSWarner Losh<DD> 1758e3e3a7aSWarner Losh lua.h luaconf.h lualib.h lauxlib.h lua.hpp 1768e3e3a7aSWarner Losh<DT> 1778e3e3a7aSWarner Losh lib: 1788e3e3a7aSWarner Losh<DD> 1798e3e3a7aSWarner Losh liblua.a 1808e3e3a7aSWarner Losh<DT> 1818e3e3a7aSWarner Losh man/man1: 1828e3e3a7aSWarner Losh<DD> 1838e3e3a7aSWarner Losh lua.1 luac.1 1848e3e3a7aSWarner Losh</DL> 1858e3e3a7aSWarner Losh 1868e3e3a7aSWarner Losh<P> 1878e3e3a7aSWarner Losh These are the only directories you need for development. 1888e3e3a7aSWarner Losh If you only want to run Lua programs, 1898e3e3a7aSWarner Losh you only need the files in <TT>bin</TT> and <TT>man</TT>. 1908e3e3a7aSWarner Losh The files in <TT>include</TT> and <TT>lib</TT> are needed for 1918e3e3a7aSWarner Losh embedding Lua in C or C++ programs. 1928e3e3a7aSWarner Losh 1938e3e3a7aSWarner Losh<H3><A NAME="customization">Customization</A></H3> 1948e3e3a7aSWarner Losh<P> 1958e3e3a7aSWarner Losh Three kinds of things can be customized by editing a file: 1968e3e3a7aSWarner Losh<UL> 1978e3e3a7aSWarner Losh <LI> Where and how to install Lua — edit <TT>Makefile</TT>. 1988e3e3a7aSWarner Losh <LI> How to build Lua — edit <TT>src/Makefile</TT>. 1998e3e3a7aSWarner Losh <LI> Lua features — edit <TT>src/luaconf.h</TT>. 2008e3e3a7aSWarner Losh</UL> 2018e3e3a7aSWarner Losh 2028e3e3a7aSWarner Losh<P> 2038e3e3a7aSWarner Losh You don't actually need to edit the Makefiles because you may set the 2048e3e3a7aSWarner Losh relevant variables in the command line when invoking make. 2058e3e3a7aSWarner Losh Nevertheless, it's probably best to edit and save the Makefiles to 2068e3e3a7aSWarner Losh record the changes you've made. 2078e3e3a7aSWarner Losh 2088e3e3a7aSWarner Losh<P> 2098e3e3a7aSWarner Losh On the other hand, if you need to customize some Lua features, you'll need 2108e3e3a7aSWarner Losh to edit <TT>src/luaconf.h</TT> before building and installing Lua. 2118e3e3a7aSWarner Losh The edited file will be the one installed, and 2128e3e3a7aSWarner Losh it will be used by any Lua clients that you build, to ensure consistency. 2138e3e3a7aSWarner Losh Further customization is available to experts by editing the Lua sources. 2148e3e3a7aSWarner Losh 2158e3e3a7aSWarner Losh<H3><A NAME="other">Building Lua on other systems</A></H3> 2168e3e3a7aSWarner Losh<P> 2178e3e3a7aSWarner Losh If you're not using the usual Unix tools, then the instructions for 2188e3e3a7aSWarner Losh building Lua depend on the compiler you use. You'll need to create 2198e3e3a7aSWarner Losh projects (or whatever your compiler uses) for building the library, 2208e3e3a7aSWarner Losh the interpreter, and the compiler, as follows: 2218e3e3a7aSWarner Losh 2228e3e3a7aSWarner Losh<DL CLASS="display"> 2238e3e3a7aSWarner Losh<DT> 2248e3e3a7aSWarner Loshlibrary: 2258e3e3a7aSWarner Losh<DD> 2268e3e3a7aSWarner Loshlapi.c lcode.c lctype.c ldebug.c ldo.c ldump.c lfunc.c lgc.c llex.c 2278e3e3a7aSWarner Loshlmem.c lobject.c lopcodes.c lparser.c lstate.c lstring.c ltable.c 2288e3e3a7aSWarner Loshltm.c lundump.c lvm.c lzio.c 2298e3e3a7aSWarner Loshlauxlib.c lbaselib.c lbitlib.c lcorolib.c ldblib.c liolib.c 2308e3e3a7aSWarner Loshlmathlib.c loslib.c lstrlib.c ltablib.c lutf8lib.c loadlib.c linit.c 2318e3e3a7aSWarner Losh<DT> 2328e3e3a7aSWarner Loshinterpreter: 2338e3e3a7aSWarner Losh<DD> 2348e3e3a7aSWarner Losh library, lua.c 2358e3e3a7aSWarner Losh<DT> 2368e3e3a7aSWarner Loshcompiler: 2378e3e3a7aSWarner Losh<DD> 2388e3e3a7aSWarner Losh library, luac.c 2398e3e3a7aSWarner Losh</DL> 2408e3e3a7aSWarner Losh 2418e3e3a7aSWarner Losh<P> 2428e3e3a7aSWarner Losh To use Lua as a library in your own programs you'll need to know how to 2438e3e3a7aSWarner Losh create and use libraries with your compiler. Moreover, to dynamically load 2448e3e3a7aSWarner Losh C libraries for Lua you'll need to know how to create dynamic libraries 2458e3e3a7aSWarner Losh and you'll need to make sure that the Lua API functions are accessible to 2468e3e3a7aSWarner Losh those dynamic libraries — but <EM>don't</EM> link the Lua library 2478e3e3a7aSWarner Losh into each dynamic library. For Unix, we recommend that the Lua library 2488e3e3a7aSWarner Losh be linked statically into the host program and its symbols exported for 2498e3e3a7aSWarner Losh dynamic linking; <TT>src/Makefile</TT> does this for the Lua interpreter. 2508e3e3a7aSWarner Losh For Windows, we recommend that the Lua library be a DLL. 2518e3e3a7aSWarner Losh In all cases, the compiler luac should be linked statically. 2528e3e3a7aSWarner Losh 2538e3e3a7aSWarner Losh<P> 2548e3e3a7aSWarner Losh As mentioned above, you may edit <TT>src/luaconf.h</TT> to customize 2558e3e3a7aSWarner Losh some features before building Lua. 2568e3e3a7aSWarner Losh 2578e3e3a7aSWarner Losh<H2><A NAME="changes">Changes since Lua 5.2</A></H2> 2588e3e3a7aSWarner Losh<P> 2598e3e3a7aSWarner LoshHere are the main changes introduced in Lua 5.3. 2608e3e3a7aSWarner LoshThe 2618e3e3a7aSWarner Losh<A HREF="contents.html">reference manual</A> 2628e3e3a7aSWarner Loshlists the 2638e3e3a7aSWarner Losh<A HREF="manual.html#8">incompatibilities</A> that had to be introduced. 2648e3e3a7aSWarner Losh 2658e3e3a7aSWarner Losh<H3>Main changes</H3> 2668e3e3a7aSWarner Losh<UL> 2678e3e3a7aSWarner Losh<LI> integers (64-bit by default) 2688e3e3a7aSWarner Losh<LI> official support for 32-bit numbers 2698e3e3a7aSWarner Losh<LI> bitwise operators 2708e3e3a7aSWarner Losh<LI> basic utf-8 support 2718e3e3a7aSWarner Losh<LI> functions for packing and unpacking values 2728e3e3a7aSWarner Losh 2738e3e3a7aSWarner Losh</UL> 2748e3e3a7aSWarner Losh 2758e3e3a7aSWarner LoshHere are the other changes introduced in Lua 5.3: 2768e3e3a7aSWarner Losh<H3>Language</H3> 2778e3e3a7aSWarner Losh<UL> 2788e3e3a7aSWarner Losh<LI> userdata can have any Lua value as uservalue 2798e3e3a7aSWarner Losh<LI> floor division 2808e3e3a7aSWarner Losh<LI> more flexible rules for some metamethods 2818e3e3a7aSWarner Losh</UL> 2828e3e3a7aSWarner Losh 2838e3e3a7aSWarner Losh<H3>Libraries</H3> 2848e3e3a7aSWarner Losh<UL> 2858e3e3a7aSWarner Losh<LI> <CODE>ipairs</CODE> and the table library respect metamethods 2868e3e3a7aSWarner Losh<LI> strip option in <CODE>string.dump</CODE> 2878e3e3a7aSWarner Losh<LI> table library respects metamethods 2888e3e3a7aSWarner Losh<LI> new function <CODE>table.move</CODE> 2898e3e3a7aSWarner Losh<LI> new function <CODE>string.pack</CODE> 2908e3e3a7aSWarner Losh<LI> new function <CODE>string.unpack</CODE> 2918e3e3a7aSWarner Losh<LI> new function <CODE>string.packsize</CODE> 2928e3e3a7aSWarner Losh</UL> 2938e3e3a7aSWarner Losh 2948e3e3a7aSWarner Losh<H3>C API</H3> 2958e3e3a7aSWarner Losh<UL> 2968e3e3a7aSWarner Losh<LI> simpler API for continuation functions in C 2978e3e3a7aSWarner Losh<LI> <CODE>lua_gettable</CODE> and similar functions return type of resulted value 2988e3e3a7aSWarner Losh<LI> strip option in <CODE>lua_dump</CODE> 2998e3e3a7aSWarner Losh<LI> new function: <CODE>lua_geti</CODE> 3008e3e3a7aSWarner Losh<LI> new function: <CODE>lua_seti</CODE> 3018e3e3a7aSWarner Losh<LI> new function: <CODE>lua_isyieldable</CODE> 3028e3e3a7aSWarner Losh<LI> new function: <CODE>lua_numbertointeger</CODE> 3038e3e3a7aSWarner Losh<LI> new function: <CODE>lua_rotate</CODE> 3048e3e3a7aSWarner Losh<LI> new function: <CODE>lua_stringtonumber</CODE> 3058e3e3a7aSWarner Losh</UL> 3068e3e3a7aSWarner Losh 3078e3e3a7aSWarner Losh<H3>Lua standalone interpreter</H3> 3088e3e3a7aSWarner Losh<UL> 3098e3e3a7aSWarner Losh<LI> can be used as calculator; no need to prefix with '=' 3108e3e3a7aSWarner Losh<LI> <CODE>arg</CODE> table available to all code 3118e3e3a7aSWarner Losh</UL> 3128e3e3a7aSWarner Losh 3138e3e3a7aSWarner Losh<H2><A NAME="license">License</A></H2> 3148e3e3a7aSWarner Losh<P> 3158e3e3a7aSWarner Losh<A HREF="http://www.opensource.org/docs/definition.php"> 3168e3e3a7aSWarner Losh<IMG SRC="osi-certified-72x60.png" ALIGN="right" ALT="[osi certified]" STYLE="padding-left: 30px ;"> 3178e3e3a7aSWarner Losh</A> 3188e3e3a7aSWarner LoshLua is free software distributed under the terms of the 3198e3e3a7aSWarner Losh<A HREF="http://www.opensource.org/licenses/mit-license.html">MIT license</A> 3208e3e3a7aSWarner Loshreproduced below; 3218e3e3a7aSWarner Loshit may be used for any purpose, including commercial purposes, 3228e3e3a7aSWarner Loshat absolutely no cost without having to ask us. 3238e3e3a7aSWarner Losh 3248e3e3a7aSWarner LoshThe only requirement is that if you do use Lua, 3258e3e3a7aSWarner Loshthen you should give us credit by including the appropriate copyright notice somewhere in your product or its documentation. 3268e3e3a7aSWarner Losh 3278e3e3a7aSWarner LoshFor details, see 3288e3e3a7aSWarner Losh<A HREF="http://www.lua.org/license.html">this</A>. 3298e3e3a7aSWarner Losh 3308e3e3a7aSWarner Losh<BLOCKQUOTE STYLE="padding-bottom: 0em"> 3318e3e3a7aSWarner LoshCopyright © 1994–2017 Lua.org, PUC-Rio. 3328e3e3a7aSWarner Losh 3338e3e3a7aSWarner Losh<P> 3348e3e3a7aSWarner LoshPermission is hereby granted, free of charge, to any person obtaining a copy 3358e3e3a7aSWarner Loshof this software and associated documentation files (the "Software"), to deal 3368e3e3a7aSWarner Loshin the Software without restriction, including without limitation the rights 3378e3e3a7aSWarner Loshto use, copy, modify, merge, publish, distribute, sublicense, and/or sell 3388e3e3a7aSWarner Loshcopies of the Software, and to permit persons to whom the Software is 3398e3e3a7aSWarner Loshfurnished to do so, subject to the following conditions: 3408e3e3a7aSWarner Losh 3418e3e3a7aSWarner Losh<P> 3428e3e3a7aSWarner LoshThe above copyright notice and this permission notice shall be included in 3438e3e3a7aSWarner Loshall copies or substantial portions of the Software. 3448e3e3a7aSWarner Losh 3458e3e3a7aSWarner Losh<P> 3468e3e3a7aSWarner LoshTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 3478e3e3a7aSWarner LoshIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 3488e3e3a7aSWarner LoshFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 3498e3e3a7aSWarner LoshAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 3508e3e3a7aSWarner LoshLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 3518e3e3a7aSWarner LoshOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 3528e3e3a7aSWarner LoshTHE SOFTWARE. 3538e3e3a7aSWarner Losh</BLOCKQUOTE> 3548e3e3a7aSWarner Losh<P> 3558e3e3a7aSWarner Losh 3568e3e3a7aSWarner Losh<P CLASS="footer"> 3578e3e3a7aSWarner LoshLast update: 358*e112e9d2SKyle EvansMon Jun 18 22:57:33 -03 2018 3598e3e3a7aSWarner Losh</P> 3608e3e3a7aSWarner Losh<!-- 361*e112e9d2SKyle EvansLast change: revised for Lua 5.3.5 3628e3e3a7aSWarner Losh--> 3638e3e3a7aSWarner Losh 3648e3e3a7aSWarner Losh</BODY> 3658e3e3a7aSWarner Losh</HTML> 366