diff --git a/src/love.cpp b/src/love.cpp index a29de4ed3..d51bb24b4 100644 --- a/src/love.cpp +++ b/src/love.cpp @@ -124,8 +124,8 @@ int main(int argc, char ** argv) // which gets everything started. // TODO: This is obviously test code. - //luaL_dofile(L, "../../src/scripts/boot.lua"); -# include "scripts/boot.lua.h" + luaL_dofile(L, "../../src/scripts/boot.lua"); +//# include "scripts/boot.lua.h" lua_close(L); diff --git a/src/modules/graphics/opengl/SpriteBatch.cpp b/src/modules/graphics/opengl/SpriteBatch.cpp index 4a8a2ab29..59f2df9d3 100644 --- a/src/modules/graphics/opengl/SpriteBatch.cpp +++ b/src/modules/graphics/opengl/SpriteBatch.cpp @@ -33,7 +33,7 @@ namespace graphics namespace opengl { SpriteBatch::SpriteBatch(Image * image, int size, int usage) - : image(image), size(size), next(0), usage(usage) + : image(image), size(size), next(0), usage(usage), lockp(0) { image->retain(); @@ -92,17 +92,24 @@ namespace opengl // Transform. Matrix t; - t.translate(x, y); - t.scale(sx, sy); - t.rotate(a); + t.setTransformation(x, y, a, sx, sy, ox, oy); t.transform(v, v, 4); - glBindBuffer(GL_ARRAY_BUFFER, vbo[0]); - glBufferSubData(GL_ARRAY_BUFFER, (next*4)*sizeof(vertex), sizeof(vertex)*4, v); - glBindBuffer(GL_ARRAY_BUFFER, 0); + if(lockp != 0) + { + // Copy into mapped memory if buffer is locked. + memcpy(lockp + (next*4), v, sizeof(vertex)*4); + } + else + { + // ... use glBufferSubData otherwise. + glBindBuffer(GL_ARRAY_BUFFER, vbo[0]); + glBufferSubData(GL_ARRAY_BUFFER, (next*4)*sizeof(vertex), sizeof(vertex)*4, v); + glBindBuffer(GL_ARRAY_BUFFER, 0); + } // Increment counter. - next++; + next++; } } @@ -112,10 +119,28 @@ namespace opengl next = 0; } + void * SpriteBatch::lock() + { + glBindBuffer(GL_ARRAY_BUFFER, vbo[0]); + lockp = (vertex *)glMapBuffer(GL_ARRAY_BUFFER, GL_READ_WRITE); + return lockp; + } + + void SpriteBatch::unlock() + { + glUnmapBuffer(GL_ARRAY_BUFFER); + lockp = 0; + glBindBuffer(GL_ARRAY_BUFFER, 0); + } + void SpriteBatch::draw(float x, float y, float angle, float sx, float sy, float ox, float oy) const { + static Matrix t; + glPushMatrix(); - glTranslatef(x, y, 0); + + t.setTransformation(x, y, angle, sx, sy, ox, oy); + glMultMatrixf((const GLfloat*)t.getElements()); image->bind(); diff --git a/src/modules/graphics/opengl/SpriteBatch.h b/src/modules/graphics/opengl/SpriteBatch.h index 9e1a82114..d1f9c383e 100644 --- a/src/modules/graphics/opengl/SpriteBatch.h +++ b/src/modules/graphics/opengl/SpriteBatch.h @@ -68,6 +68,9 @@ namespace opengl int usage; int gl_usage; + // If the buffer is locked, this pointer is nonzero. + vertex * lockp; + public: enum UsageHint @@ -85,6 +88,9 @@ namespace opengl //void addf(float x, float y, float a, float sx, float sy, float ox, float oy, Frame * frame); void clear(); + void * lock(); + void unlock(); + // Implements Drawable. void draw(float x, float y, float angle, float sx, float sy, float ox, float oy) const; diff --git a/src/modules/graphics/opengl/wrap_SpriteBatch.cpp b/src/modules/graphics/opengl/wrap_SpriteBatch.cpp index 29b8d66bc..e396e78c3 100644 --- a/src/modules/graphics/opengl/wrap_SpriteBatch.cpp +++ b/src/modules/graphics/opengl/wrap_SpriteBatch.cpp @@ -52,9 +52,25 @@ namespace opengl return 0; } + int _wrap_SpriteBatch_lock(lua_State * L) + { + SpriteBatch * t = luax_checkspritebatch(L, 1); + lua_pushlightuserdata(L, t->lock()); + return 1; + } + + int _wrap_SpriteBatch_unlock(lua_State * L) + { + SpriteBatch * t = luax_checkspritebatch(L, 1); + t->unlock(); + return 0; + } + static const luaL_Reg wrap_SpriteBatch_functions[] = { { "add", _wrap_SpriteBatch_add }, { "clear", _wrap_SpriteBatch_clear }, + { "lock", _wrap_SpriteBatch_lock }, + { "unlock", _wrap_SpriteBatch_unlock }, { 0, 0 } }; diff --git a/src/modules/graphics/opengl/wrap_SpriteBatch.h b/src/modules/graphics/opengl/wrap_SpriteBatch.h index 5d56fbabd..96fa0711b 100644 --- a/src/modules/graphics/opengl/wrap_SpriteBatch.h +++ b/src/modules/graphics/opengl/wrap_SpriteBatch.h @@ -33,6 +33,8 @@ namespace opengl SpriteBatch * luax_checkspritebatch(lua_State * L, int idx); int _wrap_SpriteBatch_add(lua_State * L); int _wrap_SpriteBatch_clear(lua_State * L); + int _wrap_SpriteBatch_lock(lua_State * L); + int _wrap_SpriteBatch_unlock(lua_State * L); int wrap_SpriteBatch_open(lua_State * L); } // opengl diff --git a/src/scripts/boot.lua b/src/scripts/boot.lua index 3ea28c399..2099ab287 100644 --- a/src/scripts/boot.lua +++ b/src/scripts/boot.lua @@ -5,13 +5,6 @@ if not love then love = {} end -- Used for setup: love.path = {} -function love.insmod(name, provides) - if love.__mod[provides] and love.__mod[provides][name] then - love.__mod[provides][name].open() - print("Opened " .. provides .. " module " .. name .. ".") - end -end - -- Replace any \ with /. function love.path.normalslashes(p) return string.gsub(p, "\\", "/") @@ -94,46 +87,89 @@ love.handlers = { end, } -function love.init() +-- This can't be overriden. +function love.boot() + print("boot") + + -- This is absolutely needed. + love.filesystem = require("love.filesystem") + + -- Prints the arguments passes to the app. if love.__args then for i,v in pairs(love.__args) do print(i,v) end - end - - love.filesystem = require("love.filesystem") - love.event = require("love.event") - love.keyboard = require("love.keyboard") - love.mouse = require("love.mouse") - love.timer = require("love.timer") - love.joystick = require("love.joystick") - love.image = require("love.image") - love.graphics = require("love.graphics") - love.audio = require("love.audio") - love.physics = require("love.physics") - love.sound = require("love.sound") - love.native = require("love.native") - + end + + -- Sets the source for the game. if love.__args[1] and love.__args[1] ~= "" then - love.filesystem.setIdentity("love2") love.filesystem.setSource(love.path.getfull(love.__args[1])) - require("main.lua") end + +end - love.run() +function love.init() + + -- Create default configuration settings. + local c = { + title = "Untitled", + author = "Unnamed", + version = 0, + screen = { + width = 800, + height = 600, + fullscreen = false, + vsync = true, + fsaa = 0, + }, + modules = { + event = true, + keyboard = true, + mouse = true, + timer = true, + joystick = true, + image = true, + graphics = true, + audio = true, + physics = true, + sound = true, + native = true, + }, + } + + -- If config file exists, load it and allow it to update config table. + if love.filesystem.exists("conf.lua") then + require("conf.lua") + love.conf(c) + end + + if c.modules.event then love.event = require("love.event") end + if c.modules.keyboard then love.keyboard = require("love.keyboard") end + if c.modules.mouse then love.mouse = require("love.mouse") end + if c.modules.timer then love.timer = require("love.timer") end + if c.modules.joystick then love.joystick = require("love.joystick") end + if c.modules.image then love.image = require("love.image") end + if c.modules.graphics then love.graphics = require("love.graphics") end + if c.modules.audio then love.audio = require("love.audio") end + if c.modules.physics then love.physics = require("love.physics") end + if c.modules.sound then love.sound = require("love.sound") end + if c.modules.native then love.native = require("love.native") end + + -- Setup screen here. + if c.screen and c.modules.graphics then + if love.graphics.checkMode(c.screen.width, c.screen.height, c.screen.fullscreen) then + love.graphics.setMode(c.screen.width, c.screen.height, c.screen.fullscreen, c.screen.vsync, c.screen.fsaa) + end + love.graphics.setCaption(c.title) + end + + if love.filesystem.exists("main.lua") then require("main.lua") end + end function love.run() - -- CONFIG BEGINS - - if love.graphics.checkMode(800, 600, false) then - love.graphics.setMode(800, 600, false, false) - end - - -- CONFIG ENDS - if love.load then love.load() end -- Main loop time. @@ -180,10 +216,12 @@ end -- The root of all calls. ----------------------------------------------------------- -local result = xpcall(love.init, - function (msg) - print(msg, debug.traceback()) - end) +function error_printer(msg) + print("boot", msg, debug.traceback()) +end +result = xpcall(love.boot, error_printer) +result = xpcall(love.init, error_printer) +result = xpcall(love.run, error_printer) print("Done.") \ No newline at end of file diff --git a/src/scripts/boot.lua.h b/src/scripts/boot.lua.h index 09f3e4b29..bb59c8afc 100644 --- a/src/scripts/boot.lua.h +++ b/src/scripts/boot.lua.h @@ -10,216 +10,277 @@ static const unsigned char B1[]={ 116, 32,108,111,118,101, 32,116,104,101,110, 32,108,111,118,101, 32, 61, 32,123, 125, 32,101,110,100, 13, 10, 13, 10, 45, 45, 32, 85,115,101,100, 32,102,111,114, 32,115,101,116,117,112, 58, 13, 10,108,111,118,101, 46,112, 97,116,104, 32, 61, - 32,123,125, 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32,108,111,118,101, - 46,105,110,115,109,111,100, 40,110, 97,109,101, 44, 32,112,114,111,118,105,100, -101,115, 41, 13, 10, 9,105,102, 32,108,111,118,101, 46, 95, 95,109,111,100, 91, -112,114,111,118,105,100,101,115, 93, 32, 97,110,100, 32,108,111,118,101, 46, 95, - 95,109,111,100, 91,112,114,111,118,105,100,101,115, 93, 91,110, 97,109,101, 93, - 32,116,104,101,110, 13, 10, 9, 9,108,111,118,101, 46, 95, 95,109,111,100, 91, -112,114,111,118,105,100,101,115, 93, 91,110, 97,109,101, 93, 46,111,112,101,110, - 40, 41, 13, 10, 9, 9,112,114,105,110,116, 40, 34, 79,112,101,110,101,100, 32, - 34, 32, 46, 46, 32,112,114,111,118,105,100,101,115, 32, 46, 46, 32, 34, 32,109, -111,100,117,108,101, 32, 34, 32, 46, 46, 32,110, 97,109,101, 32, 46, 46, 32, 34, - 46, 34, 41, 13, 10, 9,101,110,100, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, - 32, 82,101,112,108, 97, 99,101, 32, 97,110,121, 32, 92, 32,119,105,116,104, 32, - 47, 46, 13, 10,102,117,110, 99,116,105,111,110, 32,108,111,118,101, 46,112, 97, + 32,123,125, 13, 10, 13, 10, 45, 45, 32, 82,101,112,108, 97, 99,101, 32, 97,110, +121, 32, 92, 32,119,105,116,104, 32, 47, 46, 13, 10,102,117,110, 99,116,105,111, +110, 32,108,111,118,101, 46,112, 97,116,104, 46,110,111,114,109, 97,108,115,108, + 97,115,104,101,115, 40,112, 41, 13, 10, 9,114,101,116,117,114,110, 32,115,116, +114,105,110,103, 46,103,115,117, 98, 40,112, 44, 32, 34, 92, 92, 34, 44, 32, 34, + 47, 34, 41, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 32, 77, 97,107,101,115, + 32,115,117,114,101, 32,116,104,101,114,101, 32,105,115, 32, 97, 32,115,108, 97, +115,104, 32, 97,116, 32,116,104,101, 32,101,110,100, 13, 10, 45, 45, 32,111,102, + 32, 97, 32,112, 97,116,104, 46, 13, 10,102,117,110, 99,116,105,111,110, 32,108, +111,118,101, 46,112, 97,116,104, 46,101,110,100,115,108, 97,115,104, 40,112, 41, + 13, 10, 9,105,102, 32,115,116,114,105,110,103, 46,115,117, 98, 40,112, 44, 32, +115,116,114,105,110,103, 46,108,101,110, 40,112, 41, 45, 49, 41, 32,126, 61, 32, + 34, 47, 34, 32,116,104,101,110, 13, 10, 9, 9,114,101,116,117,114,110, 32,112, + 32, 46, 46, 32, 34, 47, 34, 13, 10, 9,101,108,115,101, 13, 10, 9, 9,114,101, +116,117,114,110, 32,112, 13, 10, 9,101,110,100, 13, 10,101,110,100, 13, 10, 13, + 10, 45, 45, 32, 67,104,101, 99,107,115, 32,119,104,101,116,104,101,114, 32, 97, + 32,112, 97,116,104, 32,105,115, 32, 97, 98,115,111,108,117,116,101, 32,111,114, + 32,110,111,116, 46, 13, 10,102,117,110, 99,116,105,111,110, 32,108,111,118,101, + 46,112, 97,116,104, 46, 97, 98,115, 40,112, 41, 13, 10, 13, 10, 9,108,111, 99, + 97,108, 32,116,109,112, 32, 61, 32,108,111,118,101, 46,112, 97,116,104, 46,110, +111,114,109, 97,108,115,108, 97,115,104,101,115, 40,112, 41, 13, 10, 13, 10, 9, + 45, 45, 32, 80, 97,116,104, 32,105,115, 32, 97, 98,115,111,108,117,116,101, 32, +105,102, 32,105,116, 32,115,116, 97,114,116,115, 32,119,105,116,104, 32, 97, 32, + 34, 47, 34, 46, 13, 10, 9,105,102, 32,115,116,114,105,110,103, 46,102,105,110, +100, 40,116,109,112, 44, 32, 34, 47, 34, 41, 32, 61, 61, 32, 49, 32,116,104,101, +110, 13, 10, 9, 9,114,101,116,117,114,110, 32,116,114,117,101, 13, 10, 9,101, +110,100, 13, 10, 13, 10, 9, 45, 45, 32, 80, 97,116,104, 32,105,115, 32, 97, 98, +115,111,108,117,116,101, 32,105,102, 32,105,116, 32,115,116, 97,114,116,115, 32, +119,105,116,104, 32, 97, 32, 13, 10, 9, 45, 45, 32,108,101,116,116,101,114, 32, +102,111,108,108,111,119,101,100, 32, 98,121, 32, 97, 32, 99,111,108,111,110, 46, + 13, 10, 9,105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,116,109, +112, 44, 32, 34, 37, 97, 58, 34, 41, 32, 61, 61, 32, 49, 32,116,104,101,110, 13, + 10, 9, 9,114,101,116,117,114,110, 32,116,114,117,101, 13, 10, 9,101,110,100, + 13, 10, 9, 13, 10, 9, 45, 45, 32, 82,101,108, 97,116,105,118,101, 46, 13, 10, + 9,114,101,116,117,114,110, 32,102, 97,108,115,101, 13, 10, 13, 10,101,110,100, + 13, 10, 13, 10, 45, 45, 32, 67,111,110,118,101,114,116,115, 32, 97,110,121, 32, +112, 97,116,104, 32,105,110,116,111, 32, 97, 32,102,117,108,108, 32,112, 97,116, +104, 46, 13, 10,102,117,110, 99,116,105,111,110, 32,108,111,118,101, 46,112, 97, +116,104, 46,103,101,116,102,117,108,108, 40,112, 41, 13, 10, 13, 10, 9,105,102, + 32,108,111,118,101, 46,112, 97,116,104, 46, 97, 98,115, 40,112, 41, 32,116,104, +101,110, 13, 10, 9, 9,114,101,116,117,114,110, 32,108,111,118,101, 46,112, 97, 116,104, 46,110,111,114,109, 97,108,115,108, 97,115,104,101,115, 40,112, 41, 13, - 10, 9,114,101,116,117,114,110, 32,115,116,114,105,110,103, 46,103,115,117, 98, - 40,112, 44, 32, 34, 92, 92, 34, 44, 32, 34, 47, 34, 41, 13, 10,101,110,100, 13, - 10, 13, 10, 45, 45, 32, 77, 97,107,101,115, 32,115,117,114,101, 32,116,104,101, -114,101, 32,105,115, 32, 97, 32,115,108, 97,115,104, 32, 97,116, 32,116,104,101, - 32,101,110,100, 13, 10, 45, 45, 32,111,102, 32, 97, 32,112, 97,116,104, 46, 13, - 10,102,117,110, 99,116,105,111,110, 32,108,111,118,101, 46,112, 97,116,104, 46, -101,110,100,115,108, 97,115,104, 40,112, 41, 13, 10, 9,105,102, 32,115,116,114, -105,110,103, 46,115,117, 98, 40,112, 44, 32,115,116,114,105,110,103, 46,108,101, -110, 40,112, 41, 45, 49, 41, 32,126, 61, 32, 34, 47, 34, 32,116,104,101,110, 13, - 10, 9, 9,114,101,116,117,114,110, 32,112, 32, 46, 46, 32, 34, 47, 34, 13, 10, - 9,101,108,115,101, 13, 10, 9, 9,114,101,116,117,114,110, 32,112, 13, 10, 9, -101,110,100, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 32, 67,104,101, 99,107, -115, 32,119,104,101,116,104,101,114, 32, 97, 32,112, 97,116,104, 32,105,115, 32, - 97, 98,115,111,108,117,116,101, 32,111,114, 32,110,111,116, 46, 13, 10,102,117, -110, 99,116,105,111,110, 32,108,111,118,101, 46,112, 97,116,104, 46, 97, 98,115, - 40,112, 41, 13, 10, 13, 10, 9,108,111, 99, 97,108, 32,116,109,112, 32, 61, 32, -108,111,118,101, 46,112, 97,116,104, 46,110,111,114,109, 97,108,115,108, 97,115, -104,101,115, 40,112, 41, 13, 10, 13, 10, 9, 45, 45, 32, 80, 97,116,104, 32,105, -115, 32, 97, 98,115,111,108,117,116,101, 32,105,102, 32,105,116, 32,115,116, 97, -114,116,115, 32,119,105,116,104, 32, 97, 32, 34, 47, 34, 46, 13, 10, 9,105,102, - 32,115,116,114,105,110,103, 46,102,105,110,100, 40,116,109,112, 44, 32, 34, 47, - 34, 41, 32, 61, 61, 32, 49, 32,116,104,101,110, 13, 10, 9, 9,114,101,116,117, -114,110, 32,116,114,117,101, 13, 10, 9,101,110,100, 13, 10, 13, 10, 9, 45, 45, - 32, 80, 97,116,104, 32,105,115, 32, 97, 98,115,111,108,117,116,101, 32,105,102, - 32,105,116, 32,115,116, 97,114,116,115, 32,119,105,116,104, 32, 97, 32, 13, 10, - 9, 45, 45, 32,108,101,116,116,101,114, 32,102,111,108,108,111,119,101,100, 32, - 98,121, 32, 97, 32, 99,111,108,111,110, 46, 13, 10, 9,105,102, 32,115,116,114, -105,110,103, 46,102,105,110,100, 40,116,109,112, 44, 32, 34, 37, 97, 58, 34, 41, - 32, 61, 61, 32, 49, 32,116,104,101,110, 13, 10, 9, 9,114,101,116,117,114,110, - 32,116,114,117,101, 13, 10, 9,101,110,100, 13, 10, 9, 13, 10, 9, 45, 45, 32, - 82,101,108, 97,116,105,118,101, 46, 13, 10, 9,114,101,116,117,114,110, 32,102, - 97,108,115,101, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 32, 67,111, -110,118,101,114,116,115, 32, 97,110,121, 32,112, 97,116,104, 32,105,110,116,111, - 32, 97, 32,102,117,108,108, 32,112, 97,116,104, 46, 13, 10,102,117,110, 99,116, -105,111,110, 32,108,111,118,101, 46,112, 97,116,104, 46,103,101,116,102,117,108, -108, 40,112, 41, 13, 10, 13, 10, 9,105,102, 32,108,111,118,101, 46,112, 97,116, -104, 46, 97, 98,115, 40,112, 41, 32,116,104,101,110, 13, 10, 9, 9,114,101,116, -117,114,110, 32,108,111,118,101, 46,112, 97,116,104, 46,110,111,114,109, 97,108, -115,108, 97,115,104,101,115, 40,112, 41, 13, 10, 9,101,110,100, 13, 10, 13, 10, - 9,108,111, 99, 97,108, 32, 99,119,100, 32, 61, 32,108,111,118,101, 46,102,105, -108,101,115,121,115,116,101,109, 46,103,101,116, 87,111,114,107,105,110,103, 68, -105,114,101, 99,116,111,114,121, 40, 41, 13, 10, 9, 99,119,100, 32, 61, 32,108, -111,118,101, 46,112, 97,116,104, 46,110,111,114,109, 97,108,115,108, 97,115,104, -101,115, 40, 99,119,100, 41, 13, 10, 9, 99,119,100, 32, 61, 32,108,111,118,101, - 46,112, 97,116,104, 46,101,110,100,115,108, 97,115,104, 40, 99,119,100, 41, 13, - 10, 9, 13, 10, 9, 45, 45, 32, 67,111,110,115,116,114,117, 99,116, 32, 97, 32, -102,117,108,108, 32,112, 97,116,104, 46, 13, 10, 9,114,101,116,117,114,110, 32, - 99,119,100, 32, 46, 46, 32,108,111,118,101, 46,112, 97,116,104, 46,110,111,114, -109, 97,108,115,108, 97,115,104,101,115, 40,112, 41, 13, 10, 13, 10,101,110,100, - 13, 10, 13, 10, 45, 45, 32, 82,101,116,117,114,110,115, 32,116,104,101, 32,108, -101, 97,102, 32,111,102, 32, 97, 32,102,117,108,108, 32,112, 97,116,104, 46, 13, - 10,102,117,110, 99,116,105,111,110, 32,108,111,118,101, 46,112, 97,116,104, 46, -108,101, 97,102, 40,112, 41, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, - 32, 83,116, 97,110,100, 97,114,100, 32, 99, 97,108,108, 98, 97, 99,107, 32,104, - 97,110,100,108,101,114,115, 46, 13, 10,108,111,118,101, 46,104, 97,110,100,108, -101,114,115, 32, 61, 32,123, 13, 10, 9, 91,108,111,118,101, 46,101,118,101,110, -116, 95,107,101,121,112,114,101,115,115,101,100, 93, 32, 61, 32,102,117,110, 99, -116,105,111,110, 32, 40, 98, 44, 32,117, 41, 13, 10, 9, 9,105,102, 32,108,111, -118,101, 46,107,101,121,112,114,101,115,115,101,100, 32,116,104,101,110, 32,108, -111,118,101, 46,107,101,121,112,114,101,115,115,101,100, 40, 98, 44, 32,117, 41, - 32,101,110,100, 13, 10, 9,101,110,100, 44, 13, 10, 9, 91,108,111,118,101, 46, -101,118,101,110,116, 95,107,101,121,114,101,108,101, 97,115,101,100, 93, 32, 61, - 32,102,117,110, 99,116,105,111,110, 32, 40, 98, 41, 13, 10, 9, 9,105,102, 32, -108,111,118,101, 46,107,101,121,114,101,108,101, 97,115,101,100, 32,116,104,101, -110, 32,108,111,118,101, 46,107,101,121,114,101,108,101, 97,115,101,100, 40, 98, - 41, 32,101,110,100, 13, 10, 9,101,110,100, 44, 13, 10, 9, 91,108,111,118,101, - 46,101,118,101,110,116, 95,109,111,117,115,101,112,114,101,115,115,101,100, 93, - 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,120, 44,121, 44, 98, 41, 13, - 10, 9, 9,105,102, 32,108,111,118,101, 46,109,111,117,115,101,112,114,101,115, -115,101,100, 32,116,104,101,110, 32,108,111,118,101, 46,109,111,117,115,101,112, -114,101,115,115,101,100, 40,120, 44,121, 44, 98, 41, 32,101,110,100, 13, 10, 9, -101,110,100, 44, 13, 10, 9, 91,108,111,118,101, 46,101,118,101,110,116, 95,109, -111,117,115,101,114,101,108,101, 97,115,101,100, 93, 32, 61, 32,102,117,110, 99, -116,105,111,110, 32, 40,120, 44,121, 44, 98, 41, 13, 10, 9, 9,105,102, 32,108, -111,118,101, 46,109,111,117,115,101,114,101,108,101, 97,115,101,100, 32,116,104, -101,110, 32,108,111,118,101, 46,109,111,117,115,101,114,101,108,101, 97,115,101, -100, 40,120, 44,121, 44, 98, 41, 32,101,110,100, 13, 10, 9,101,110,100, 44, 13, - 10, 9, 91,108,111,118,101, 46,101,118,101,110,116, 95,106,111,121,115,116,105, - 99,107,112,114,101,115,115,101,100, 93, 32, 61, 32,102,117,110, 99,116,105,111, -110, 32, 40,106, 44, 98, 41, 13, 10, 9, 9,105,102, 32,108,111,118,101, 46,106, -111,121,115,116,105, 99,107,112,114,101,115,115,101,100, 32,116,104,101,110, 32, -108,111,118,101, 46,106,111,121,115,116,105, 99,107,112,114,101,115,115,101,100, - 40,106, 44, 98, 41, 32,101,110,100, 13, 10, 9,101,110,100, 44, 13, 10, 9, 91, -108,111,118,101, 46,101,118,101,110,116, 95,106,111,121,115,116,105, 99,107,114, -101,108,101, 97,115,101,100, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, - 40,106, 44, 98, 41, 13, 10, 9, 9,105,102, 32,108,111,118,101, 46,106,111,121, -115,116,105, 99,107,114,101,108,101, 97,115,101,100, 32,116,104,101,110, 32,108, -111,118,101, 46,106,111,121,115,116,105, 99,107,114,101,108,101, 97,115,101,100, - 40,106, 44, 98, 41, 32,101,110,100, 13, 10, 9,101,110,100, 44, 13, 10, 9, 91, -108,111,118,101, 46,101,118,101,110,116, 95,113,117,105,116, 93, 32, 61, 32,102, -117,110, 99,116,105,111,110, 32, 40, 41, 13, 10, 9, 9,114,101,116,117,114,110, - 13, 10, 9,101,110,100, 44, 13, 10,125, 13, 10, 13, 10,102,117,110, 99,116,105, -111,110, 32,108,111,118,101, 46,105,110,105,116, 40, 41, 13, 10, 13, 10, 9,105, -102, 32,108,111,118,101, 46, 95, 95, 97,114,103,115, 32,116,104,101,110, 13, 10, - 9, 9,102,111,114, 32,105, 44,118, 32,105,110, 32,112, 97,105,114,115, 40,108, -111,118,101, 46, 95, 95, 97,114,103,115, 41, 32,100,111, 13, 10, 9, 9, 9,112, -114,105,110,116, 40,105, 44,118, 41, 13, 10, 9, 9,101,110,100, 13, 10, 9,101, -110,100, 13, 10, 13, 10, 9,108,111,118,101, 46,102,105,108,101,115,121,115,116, -101,109, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,102, -105,108,101,115,121,115,116,101,109, 34, 41, 13, 10, 9,108,111,118,101, 46,101, -118,101,110,116, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, - 46,101,118,101,110,116, 34, 41, 13, 10, 9,108,111,118,101, 46,107,101,121, 98, -111, 97,114,100, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, - 46,107,101,121, 98,111, 97,114,100, 34, 41, 13, 10, 9,108,111,118,101, 46,109, -111,117,115,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, - 46,109,111,117,115,101, 34, 41, 13, 10, 9,108,111,118,101, 46,116,105,109,101, -114, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,116,105, -109,101,114, 34, 41, 13, 10, 9,108,111,118,101, 46,106,111,121,115,116,105, 99, -107, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,106,111, -121,115,116,105, 99,107, 34, 41, 13, 10, 9,108,111,118,101, 46,105,109, 97,103, -101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,105,109, - 97,103,101, 34, 41, 13, 10, 9,108,111,118,101, 46,103,114, 97,112,104,105, 99, -115, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,103,114, - 97,112,104,105, 99,115, 34, 41, 13, 10, 9,108,111,118,101, 46, 97,117,100,105, -111, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46, 97,117, -100,105,111, 34, 41, 13, 10, 9,108,111,118,101, 46,112,104,121,115,105, 99,115, - 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,112,104,121, -115,105, 99,115, 34, 41, 13, 10, 9,108,111,118,101, 46,115,111,117,110,100, 32, - 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,115,111,117,110, -100, 34, 41, 13, 10, 9,108,111,118,101, 46,110, 97,116,105,118,101, 32, 61, 32, -114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,110, 97,116,105,118,101, - 34, 41, 13, 10, 13, 10, 9,105,102, 32,108,111,118,101, 46, 95, 95, 97,114,103, -115, 91, 49, 93, 32, 97,110,100, 32,108,111,118,101, 46, 95, 95, 97,114,103,115, - 91, 49, 93, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 13, 10, 9, 9,108,111, -118,101, 46,102,105,108,101,115,121,115,116,101,109, 46,115,101,116, 73,100,101, -110,116,105,116,121, 40, 34,108,111,118,101, 50, 34, 41, 13, 10, 9, 9,108,111, -118,101, 46,102,105,108,101,115,121,115,116,101,109, 46,115,101,116, 83,111,117, -114, 99,101, 40,108,111,118,101, 46,112, 97,116,104, 46,103,101,116,102,117,108, -108, 40,108,111,118,101, 46, 95, 95, 97,114,103,115, 91, 49, 93, 41, 41, 13, 10, - 9, 9,114,101,113,117,105,114,101, 40, 34,109, 97,105,110, 46,108,117, 97, 34, - 41, 13, 10, 9,101,110,100, 13, 10, 13, 10, 9,108,111,118,101, 46,114,117,110, - 40, 41, 13, 10,101,110,100, 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32, -108,111,118,101, 46,114,117,110, 40, 41, 13, 10, 13, 10, 9, 45, 45, 32, 67, 79, - 78, 70, 73, 71, 32, 66, 69, 71, 73, 78, 83, 13, 10, 13, 10, 9,105,102, 32,108, -111,118,101, 46,103,114, 97,112,104,105, 99,115, 46, 99,104,101, 99,107, 77,111, -100,101, 40, 56, 48, 48, 44, 32, 54, 48, 48, 44, 32,102, 97,108,115,101, 41, 32, -116,104,101,110, 13, 10, 9, 9,108,111,118,101, 46,103,114, 97,112,104,105, 99, -115, 46,115,101,116, 77,111,100,101, 40, 56, 48, 48, 44, 32, 54, 48, 48, 44, 32, -102, 97,108,115,101, 44, 32,102, 97,108,115,101, 41, 13, 10, 9,101,110,100, 13, - 10, 13, 10, 9, 45, 45, 32, 67, 79, 78, 70, 73, 71, 32, 69, 78, 68, 83, 13, 10, - 13, 10, 9,105,102, 32,108,111,118,101, 46,108,111, 97,100, 32,116,104,101,110, - 32,108,111,118,101, 46,108,111, 97,100, 40, 41, 32,101,110,100, 13, 10, 13, 10, - 9, 45, 45, 32, 77, 97,105,110, 32,108,111,111,112, 32,116,105,109,101, 46, 13, - 10, 9,119,104,105,108,101, 32,116,114,117,101, 32,100,111, 13, 10, 9, 9,108, -111,118,101, 46,116,105,109,101,114, 46,115,116,101,112, 40, 41, 13, 10, 9, 9, -105,102, 32,108,111,118,101, 46,117,112,100, 97,116,101, 32,116,104,101,110, 32, -108,111,118,101, 46,117,112,100, 97,116,101, 40,108,111,118,101, 46,116,105,109, -101,114, 46,103,101,116, 68,101,108,116, 97, 40, 41, 41, 32,101,110,100, 13, 10, - 9, 9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46, 99,108,101, 97, -114, 40, 41, 13, 10, 9, 9,105,102, 32,108,111,118,101, 46,100,114, 97,119, 32, -116,104,101,110, 32,108,111,118,101, 46,100,114, 97,119, 40, 41, 32,101,110,100, - 13, 10, 13, 10, 9, 9, 45, 45, 32, 80,114,111, 99,101,115,115, 32,101,118,101, -110,116,115, 46, 13, 10, 9, 9,102,111,114, 32,101, 44, 97, 44, 98, 44, 99, 32, -105,110, 32,108,111,118,101, 46,101,118,101,110,116, 46,112,111,108,108, 40, 41, - 32,100,111, 13, 10, 9, 9, 9,105,102, 32,101, 32, 61, 61, 32,108,111,118,101, - 46,101,118,101,110,116, 95,113,117,105,116, 32,116,104,101,110, 32,114,101,116, -117,114,110, 32,101,110,100, 13, 10, 9, 9, 9,108,111,118,101, 46,104, 97,110, -100,108,101,114,115, 91,101, 93, 40, 97, 44, 98, 44, 99, 41, 13, 10, 9, 9,101, -110,100, 13, 10, 13, 10, 9, 9, 45, 45,108,111,118,101, 46,116,105,109,101,114, - 46,115,108,101,101,112, 40, 49, 48, 41, 13, 10, 9, 9,108,111,118,101, 46,103, -114, 97,112,104,105, 99,115, 46,112,114,101,115,101,110,116, 40, 41, 13, 10, 13, - 10, 9,101,110,100, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 45, 45, + 10, 9,101,110,100, 13, 10, 13, 10, 9,108,111, 99, 97,108, 32, 99,119,100, 32, + 61, 32,108,111,118,101, 46,102,105,108,101,115,121,115,116,101,109, 46,103,101, +116, 87,111,114,107,105,110,103, 68,105,114,101, 99,116,111,114,121, 40, 41, 13, + 10, 9, 99,119,100, 32, 61, 32,108,111,118,101, 46,112, 97,116,104, 46,110,111, +114,109, 97,108,115,108, 97,115,104,101,115, 40, 99,119,100, 41, 13, 10, 9, 99, +119,100, 32, 61, 32,108,111,118,101, 46,112, 97,116,104, 46,101,110,100,115,108, + 97,115,104, 40, 99,119,100, 41, 13, 10, 9, 13, 10, 9, 45, 45, 32, 67,111,110, +115,116,114,117, 99,116, 32, 97, 32,102,117,108,108, 32,112, 97,116,104, 46, 13, + 10, 9,114,101,116,117,114,110, 32, 99,119,100, 32, 46, 46, 32,108,111,118,101, + 46,112, 97,116,104, 46,110,111,114,109, 97,108,115,108, 97,115,104,101,115, 40, +112, 41, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 32, 82,101,116,117, +114,110,115, 32,116,104,101, 32,108,101, 97,102, 32,111,102, 32, 97, 32,102,117, +108,108, 32,112, 97,116,104, 46, 13, 10,102,117,110, 99,116,105,111,110, 32,108, +111,118,101, 46,112, 97,116,104, 46,108,101, 97,102, 40,112, 41, 13, 10, 13, 10, +101,110,100, 13, 10, 13, 10, 45, 45, 32, 83,116, 97,110,100, 97,114,100, 32, 99, + 97,108,108, 98, 97, 99,107, 32,104, 97,110,100,108,101,114,115, 46, 13, 10,108, +111,118,101, 46,104, 97,110,100,108,101,114,115, 32, 61, 32,123, 13, 10, 9, 91, +108,111,118,101, 46,101,118,101,110,116, 95,107,101,121,112,114,101,115,115,101, +100, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40, 98, 44, 32,117, 41, + 13, 10, 9, 9,105,102, 32,108,111,118,101, 46,107,101,121,112,114,101,115,115, +101,100, 32,116,104,101,110, 32,108,111,118,101, 46,107,101,121,112,114,101,115, +115,101,100, 40, 98, 44, 32,117, 41, 32,101,110,100, 13, 10, 9,101,110,100, 44, + 13, 10, 9, 91,108,111,118,101, 46,101,118,101,110,116, 95,107,101,121,114,101, +108,101, 97,115,101,100, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40, + 98, 41, 13, 10, 9, 9,105,102, 32,108,111,118,101, 46,107,101,121,114,101,108, +101, 97,115,101,100, 32,116,104,101,110, 32,108,111,118,101, 46,107,101,121,114, +101,108,101, 97,115,101,100, 40, 98, 41, 32,101,110,100, 13, 10, 9,101,110,100, + 44, 13, 10, 9, 91,108,111,118,101, 46,101,118,101,110,116, 95,109,111,117,115, +101,112,114,101,115,115,101,100, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, + 32, 40,120, 44,121, 44, 98, 41, 13, 10, 9, 9,105,102, 32,108,111,118,101, 46, +109,111,117,115,101,112,114,101,115,115,101,100, 32,116,104,101,110, 32,108,111, +118,101, 46,109,111,117,115,101,112,114,101,115,115,101,100, 40,120, 44,121, 44, + 98, 41, 32,101,110,100, 13, 10, 9,101,110,100, 44, 13, 10, 9, 91,108,111,118, +101, 46,101,118,101,110,116, 95,109,111,117,115,101,114,101,108,101, 97,115,101, +100, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,120, 44,121, 44, 98, + 41, 13, 10, 9, 9,105,102, 32,108,111,118,101, 46,109,111,117,115,101,114,101, +108,101, 97,115,101,100, 32,116,104,101,110, 32,108,111,118,101, 46,109,111,117, +115,101,114,101,108,101, 97,115,101,100, 40,120, 44,121, 44, 98, 41, 32,101,110, +100, 13, 10, 9,101,110,100, 44, 13, 10, 9, 91,108,111,118,101, 46,101,118,101, +110,116, 95,106,111,121,115,116,105, 99,107,112,114,101,115,115,101,100, 93, 32, + 61, 32,102,117,110, 99,116,105,111,110, 32, 40,106, 44, 98, 41, 13, 10, 9, 9, +105,102, 32,108,111,118,101, 46,106,111,121,115,116,105, 99,107,112,114,101,115, +115,101,100, 32,116,104,101,110, 32,108,111,118,101, 46,106,111,121,115,116,105, + 99,107,112,114,101,115,115,101,100, 40,106, 44, 98, 41, 32,101,110,100, 13, 10, + 9,101,110,100, 44, 13, 10, 9, 91,108,111,118,101, 46,101,118,101,110,116, 95, +106,111,121,115,116,105, 99,107,114,101,108,101, 97,115,101,100, 93, 32, 61, 32, +102,117,110, 99,116,105,111,110, 32, 40,106, 44, 98, 41, 13, 10, 9, 9,105,102, + 32,108,111,118,101, 46,106,111,121,115,116,105, 99,107,114,101,108,101, 97,115, +101,100, 32,116,104,101,110, 32,108,111,118,101, 46,106,111,121,115,116,105, 99, +107,114,101,108,101, 97,115,101,100, 40,106, 44, 98, 41, 32,101,110,100, 13, 10, + 9,101,110,100, 44, 13, 10, 9, 91,108,111,118,101, 46,101,118,101,110,116, 95, +113,117,105,116, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40, 41, 13, + 10, 9, 9,114,101,116,117,114,110, 13, 10, 9,101,110,100, 44, 13, 10,125, 13, + 10, 13, 10, 45, 45, 32, 84,104,105,115, 32, 99, 97,110, 39,116, 32, 98,101, 32, +111,118,101,114,114,105,100,101,110, 46, 32, 13, 10,102,117,110, 99,116,105,111, +110, 32,108,111,118,101, 46, 98,111,111,116, 40, 41, 13, 10, 13, 10, 9,112,114, +105,110,116, 40, 34, 98,111,111,116, 34, 41, 13, 10, 13, 10, 9, 45, 45, 32, 84, +104,105,115, 32,105,115, 32, 97, 98,115,111,108,117,116,101,108,121, 32,110,101, +101,100,101,100, 46, 32, 13, 10, 9,108,111,118,101, 46,102,105,108,101,115,121, +115,116,101,109, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, + 46,102,105,108,101,115,121,115,116,101,109, 34, 41, 13, 10, 13, 10, 9, 45, 45, + 32, 80,114,105,110,116,115, 32,116,104,101, 32, 97,114,103,117,109,101,110,116, +115, 32,112, 97,115,115,101,115, 32,116,111, 32,116,104,101, 32, 97,112,112, 46, + 13, 10, 9,105,102, 32,108,111,118,101, 46, 95, 95, 97,114,103,115, 32,116,104, +101,110, 13, 10, 9, 9,102,111,114, 32,105, 44,118, 32,105,110, 32,112, 97,105, +114,115, 40,108,111,118,101, 46, 95, 95, 97,114,103,115, 41, 32,100,111, 13, 10, + 9, 9, 9,112,114,105,110,116, 40,105, 44,118, 41, 13, 10, 9, 9,101,110,100, + 13, 10, 9,101,110,100, 9, 13, 10, 9, 13, 10, 9, 45, 45, 32, 83,101,116,115, + 32,116,104,101, 32,115,111,117,114, 99,101, 32,102,111,114, 32,116,104,101, 32, +103, 97,109,101, 46, 13, 10, 9,105,102, 32,108,111,118,101, 46, 95, 95, 97,114, +103,115, 91, 49, 93, 32, 97,110,100, 32,108,111,118,101, 46, 95, 95, 97,114,103, +115, 91, 49, 93, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 13, 10, 9, 9,108, +111,118,101, 46,102,105,108,101,115,121,115,116,101,109, 46,115,101,116, 83,111, +117,114, 99,101, 40,108,111,118,101, 46,112, 97,116,104, 46,103,101,116,102,117, +108,108, 40,108,111,118,101, 46, 95, 95, 97,114,103,115, 91, 49, 93, 41, 41, 13, + 10, 9,101,110,100, 13, 10, 9, 13, 10,101,110,100, 13, 10, 13, 10,102,117,110, + 99,116,105,111,110, 32,108,111,118,101, 46,105,110,105,116, 40, 41, 13, 10, 13, + 10, 9, 45, 45, 32, 67,114,101, 97,116,101, 32,100,101,102, 97,117,108,116, 32, + 99,111,110,102,105,103,117,114, 97,116,105,111,110, 32,115,101,116,116,105,110, +103,115, 46, 13, 10, 9,108,111, 99, 97,108, 32, 99, 32, 61, 32,123, 13, 10, 9, + 9,116,105,116,108,101, 32, 61, 32, 34, 85,110,116,105,116,108,101,100, 34, 44, + 13, 10, 9, 9, 97,117,116,104,111,114, 32, 61, 32, 34, 85,110,110, 97,109,101, +100, 34, 44, 13, 10, 9, 9,118,101,114,115,105,111,110, 32, 61, 32, 48, 44, 13, + 10, 9, 9,115, 99,114,101,101,110, 32, 61, 32,123, 13, 10, 9, 9, 9,119,105, +100,116,104, 32, 61, 32, 56, 48, 48, 44, 13, 10, 9, 9, 9,104,101,105,103,104, +116, 32, 61, 32, 54, 48, 48, 44, 13, 10, 9, 9, 9,102,117,108,108,115, 99,114, +101,101,110, 32, 61, 32,102, 97,108,115,101, 44, 13, 10, 9, 9, 9,118,115,121, +110, 99, 32, 61, 32,116,114,117,101, 44, 13, 10, 9, 9, 9,102,115, 97, 97, 32, + 61, 32, 48, 44, 13, 10, 9, 9,125, 44, 32, 13, 10, 9, 9,109,111,100,117,108, +101,115, 32, 61, 32,123, 13, 10, 9, 9, 9,101,118,101,110,116, 32, 61, 32,116, +114,117,101, 44, 13, 10, 9, 9, 9,107,101,121, 98,111, 97,114,100, 32, 61, 32, +116,114,117,101, 44, 13, 10, 9, 9, 9,109,111,117,115,101, 32, 61, 32,116,114, +117,101, 44, 13, 10, 9, 9, 9,116,105,109,101,114, 32, 61, 32,116,114,117,101, + 44, 13, 10, 9, 9, 9,106,111,121,115,116,105, 99,107, 32, 61, 32,116,114,117, +101, 44, 13, 10, 9, 9, 9,105,109, 97,103,101, 32, 61, 32,116,114,117,101, 44, + 13, 10, 9, 9, 9,103,114, 97,112,104,105, 99,115, 32, 61, 32,116,114,117,101, + 44, 13, 10, 9, 9, 9, 97,117,100,105,111, 32, 61, 32,116,114,117,101, 44, 13, + 10, 9, 9, 9,112,104,121,115,105, 99,115, 32, 61, 32,116,114,117,101, 44, 13, + 10, 9, 9, 9,115,111,117,110,100, 32, 61, 32,116,114,117,101, 44, 13, 10, 9, + 9, 9,110, 97,116,105,118,101, 32, 61, 32,116,114,117,101, 44, 13, 10, 9, 9, +125, 44, 13, 10, 9,125, 13, 10, 13, 10, 9, 45, 45, 32, 73,102, 32, 99,111,110, +102,105,103, 32,102,105,108,101, 32,101,120,105,115,116,115, 44, 32,108,111, 97, +100, 32,105,116, 32, 97,110,100, 32, 97,108,108,111,119, 32,105,116, 32,116,111, + 32,117,112,100, 97,116,101, 32, 99,111,110,102,105,103, 32,116, 97, 98,108,101, + 46, 13, 10, 9,105,102, 32,108,111,118,101, 46,102,105,108,101,115,121,115,116, +101,109, 46,101,120,105,115,116,115, 40, 34, 99,111,110,102, 46,108,117, 97, 34, + 41, 32,116,104,101,110, 13, 10, 9, 9,114,101,113,117,105,114,101, 40, 34, 99, +111,110,102, 46,108,117, 97, 34, 41, 13, 10, 9, 9,108,111,118,101, 46, 99,111, +110,102, 40, 99, 41, 13, 10, 9,101,110,100, 13, 10, 9, 13, 10, 9,105,102, 32, + 99, 46,109,111,100,117,108,101,115, 46,101,118,101,110,116, 32,116,104,101,110, + 32,108,111,118,101, 46,101,118,101,110,116, 32, 61, 32,114,101,113,117,105,114, +101, 40, 34,108,111,118,101, 46,101,118,101,110,116, 34, 41, 32,101,110,100, 13, + 10, 9,105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,107,101,121, 98,111, + 97,114,100, 32,116,104,101,110, 32,108,111,118,101, 46,107,101,121, 98,111, 97, +114,100, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,107, +101,121, 98,111, 97,114,100, 34, 41, 32,101,110,100, 13, 10, 9,105,102, 32, 99, + 46,109,111,100,117,108,101,115, 46,109,111,117,115,101, 32,116,104,101,110, 32, +108,111,118,101, 46,109,111,117,115,101, 32, 61, 32,114,101,113,117,105,114,101, + 40, 34,108,111,118,101, 46,109,111,117,115,101, 34, 41, 32,101,110,100, 13, 10, + 9,105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,116,105,109,101,114, 32, +116,104,101,110, 32,108,111,118,101, 46,116,105,109,101,114, 32, 61, 32,114,101, +113,117,105,114,101, 40, 34,108,111,118,101, 46,116,105,109,101,114, 34, 41, 32, +101,110,100, 13, 10, 9,105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,106, +111,121,115,116,105, 99,107, 32,116,104,101,110, 32,108,111,118,101, 46,106,111, +121,115,116,105, 99,107, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111, +118,101, 46,106,111,121,115,116,105, 99,107, 34, 41, 32,101,110,100, 13, 10, 9, +105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,105,109, 97,103,101, 32,116, +104,101,110, 32,108,111,118,101, 46,105,109, 97,103,101, 32, 61, 32,114,101,113, +117,105,114,101, 40, 34,108,111,118,101, 46,105,109, 97,103,101, 34, 41, 32,101, +110,100, 13, 10, 9,105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,103,114, + 97,112,104,105, 99,115, 32,116,104,101,110, 32,108,111,118,101, 46,103,114, 97, +112,104,105, 99,115, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118, +101, 46,103,114, 97,112,104,105, 99,115, 34, 41, 32,101,110,100, 13, 10, 9,105, +102, 32, 99, 46,109,111,100,117,108,101,115, 46, 97,117,100,105,111, 32,116,104, +101,110, 32,108,111,118,101, 46, 97,117,100,105,111, 32, 61, 32,114,101,113,117, +105,114,101, 40, 34,108,111,118,101, 46, 97,117,100,105,111, 34, 41, 32,101,110, +100, 13, 10, 9,105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,112,104,121, +115,105, 99,115, 32,116,104,101,110, 32,108,111,118,101, 46,112,104,121,115,105, + 99,115, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,112, +104,121,115,105, 99,115, 34, 41, 32,101,110,100, 13, 10, 9,105,102, 32, 99, 46, +109,111,100,117,108,101,115, 46,115,111,117,110,100, 32,116,104,101,110, 32,108, +111,118,101, 46,115,111,117,110,100, 32, 61, 32,114,101,113,117,105,114,101, 40, + 34,108,111,118,101, 46,115,111,117,110,100, 34, 41, 32,101,110,100, 13, 10, 9, +105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,110, 97,116,105,118,101, 32, +116,104,101,110, 32,108,111,118,101, 46,110, 97,116,105,118,101, 32, 61, 32,114, +101,113,117,105,114,101, 40, 34,108,111,118,101, 46,110, 97,116,105,118,101, 34, + 41, 32,101,110,100, 13, 10, 9, 13, 10, 9, 45, 45, 32, 83,101,116,117,112, 32, +115, 99,114,101,101,110, 32,104,101,114,101, 46, 13, 10, 9,105,102, 32, 99, 46, +115, 99,114,101,101,110, 32, 97,110,100, 32, 99, 46,109,111,100,117,108,101,115, + 46,103,114, 97,112,104,105, 99,115, 32,116,104,101,110, 32, 13, 10, 9, 9,105, +102, 32,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46, 99,104,101, 99, +107, 77,111,100,101, 40, 99, 46,115, 99,114,101,101,110, 46,119,105,100,116,104, + 44, 32, 99, 46,115, 99,114,101,101,110, 46,104,101,105,103,104,116, 44, 32, 99, + 46,115, 99,114,101,101,110, 46,102,117,108,108,115, 99,114,101,101,110, 41, 32, +116,104,101,110, 13, 10, 9, 9, 9,108,111,118,101, 46,103,114, 97,112,104,105, + 99,115, 46,115,101,116, 77,111,100,101, 40, 99, 46,115, 99,114,101,101,110, 46, +119,105,100,116,104, 44, 32, 99, 46,115, 99,114,101,101,110, 46,104,101,105,103, +104,116, 44, 32, 99, 46,115, 99,114,101,101,110, 46,102,117,108,108,115, 99,114, +101,101,110, 44, 32, 99, 46,115, 99,114,101,101,110, 46,118,115,121,110, 99, 44, + 32, 99, 46,115, 99,114,101,101,110, 46,102,115, 97, 97, 41, 13, 10, 9, 9,101, +110,100, 13, 10, 9, 9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46, +115,101,116, 67, 97,112,116,105,111,110, 40, 99, 46,116,105,116,108,101, 41, 13, + 10, 9,101,110,100, 13, 10, 9, 13, 10, 9,105,102, 32,108,111,118,101, 46,102, +105,108,101,115,121,115,116,101,109, 46,101,120,105,115,116,115, 40, 34,109, 97, +105,110, 46,108,117, 97, 34, 41, 32,116,104,101,110, 32,114,101,113,117,105,114, +101, 40, 34,109, 97,105,110, 46,108,117, 97, 34, 41, 32,101,110,100, 13, 10, 9, + 13, 10,101,110,100, 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32,108,111, +118,101, 46,114,117,110, 40, 41, 13, 10, 13, 10, 9,105,102, 32,108,111,118,101, + 46,108,111, 97,100, 32,116,104,101,110, 32,108,111,118,101, 46,108,111, 97,100, + 40, 41, 32,101,110,100, 13, 10, 13, 10, 9, 45, 45, 32, 77, 97,105,110, 32,108, +111,111,112, 32,116,105,109,101, 46, 13, 10, 9,119,104,105,108,101, 32,116,114, +117,101, 32,100,111, 13, 10, 9, 9,108,111,118,101, 46,116,105,109,101,114, 46, +115,116,101,112, 40, 41, 13, 10, 9, 9,105,102, 32,108,111,118,101, 46,117,112, +100, 97,116,101, 32,116,104,101,110, 32,108,111,118,101, 46,117,112,100, 97,116, +101, 40,108,111,118,101, 46,116,105,109,101,114, 46,103,101,116, 68,101,108,116, + 97, 40, 41, 41, 32,101,110,100, 13, 10, 9, 9,108,111,118,101, 46,103,114, 97, +112,104,105, 99,115, 46, 99,108,101, 97,114, 40, 41, 13, 10, 9, 9,105,102, 32, +108,111,118,101, 46,100,114, 97,119, 32,116,104,101,110, 32,108,111,118,101, 46, +100,114, 97,119, 40, 41, 32,101,110,100, 13, 10, 13, 10, 9, 9, 45, 45, 32, 80, +114,111, 99,101,115,115, 32,101,118,101,110,116,115, 46, 13, 10, 9, 9,102,111, +114, 32,101, 44, 97, 44, 98, 44, 99, 32,105,110, 32,108,111,118,101, 46,101,118, +101,110,116, 46,112,111,108,108, 40, 41, 32,100,111, 13, 10, 9, 9, 9,105,102, + 32,101, 32, 61, 61, 32,108,111,118,101, 46,101,118,101,110,116, 95,113,117,105, +116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,101,110,100, 13, 10, 9, + 9, 9,108,111,118,101, 46,104, 97,110,100,108,101,114,115, 91,101, 93, 40, 97, + 44, 98, 44, 99, 41, 13, 10, 9, 9,101,110,100, 13, 10, 13, 10, 9, 9, 45, 45, +108,111,118,101, 46,116,105,109,101,114, 46,115,108,101,101,112, 40, 49, 48, 41, + 13, 10, 9, 9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,112,114, +101,115,101,110,116, 40, 41, 13, 10, 13, 10, 9,101,110,100, 13, 10, 13, 10,101, +110,100, 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 45, 45, 32, - 68,101,102, 97,117,108,116, 32,115, 99,114,101,101,110, 46, 13, 10, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 13, 10, -102,117,110, 99,116,105,111,110, 32,108,111,118,101, 46,100,101,102, 97,117,108, -116,115, 99,114,101,101,110, 40, 41, 13, 10, 13, 10, 9, 45, 45, 32, 77, 97,105, -110, 32,108,111,111,112, 32,103,111,101,115, 32,104,101,114,101, 46, 13, 10, 13, - 10,101,110,100, 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 13, 10, 45, 45, 32, 69,114,114,111,114, 32,115, 99, + 45, 45, 45, 45, 45, 13, 10, 45, 45, 32, 68,101,102, 97,117,108,116, 32,115, 99, 114,101,101,110, 46, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32,108, -111,118,101, 46,101,114,114,111,114,115, 99,114,101,101,110, 40, 41, 13, 10, 9, - 13, 10, 9, 45, 45, 32, 77, 97,105,110, 32,108,111,111,112, 32,103,111,101,115, - 32,104,101,114,101, 46, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 45, +111,118,101, 46,100,101,102, 97,117,108,116,115, 99,114,101,101,110, 40, 41, 13, + 10, 13, 10, 9, 45, 45, 32, 77, 97,105,110, 32,108,111,111,112, 32,103,111,101, +115, 32,104,101,114,101, 46, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 45, 45, - 32, 84,104,101, 32,114,111,111,116, 32,111,102, 32, 97,108,108, 32, 99, 97,108, -108,115, 46, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 45, + 45, 32, 69,114,114,111,114, 32,115, 99,114,101,101,110, 46, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 13, 10, 13, 10,108,111, 99, 97,108, 32,114,101,115,117,108,116, - 32, 61, 32,120,112, 99, 97,108,108, 40,108,111,118,101, 46,105,110,105,116, 44, - 13, 10, 9,102,117,110, 99,116,105,111,110, 32, 40,109,115,103, 41, 13, 10, 9, - 9,112,114,105,110,116, 40,109,115,103, 44, 32,100,101, 98,117,103, 46,116,114, - 97, 99,101, 98, 97, 99,107, 40, 41, 41, 13, 10, 9,101,110,100, 41, 13, 10, 13, - 10, 13, 10,112,114,105,110,116, 40, 34, 68,111,110,101, 46, 34, 41, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 13, 10, +102,117,110, 99,116,105,111,110, 32,108,111,118,101, 46,101,114,114,111,114,115, + 99,114,101,101,110, 40, 41, 13, 10, 9, 13, 10, 9, 45, 45, 32, 77, 97,105,110, + 32,108,111,111,112, 32,103,111,101,115, 32,104,101,114,101, 46, 13, 10, 13, 10, +101,110,100, 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 13, 10, 45, 45, 32, 84,104,101, 32,114,111,111,116, 32, +111,102, 32, 97,108,108, 32, 99, 97,108,108,115, 46, 13, 10, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 13, 10,102,117, +110, 99,116,105,111,110, 32,101,114,114,111,114, 95,112,114,105,110,116,101,114, + 40,109,115,103, 41, 13, 10, 9,112,114,105,110,116, 40, 34, 98,111,111,116, 34, + 44, 32,109,115,103, 44, 32,100,101, 98,117,103, 46,116,114, 97, 99,101, 98, 97, + 99,107, 40, 41, 41, 13, 10,101,110,100, 13, 10, 13, 10,114,101,115,117,108,116, + 32, 61, 32,120,112, 99, 97,108,108, 40,108,111,118,101, 46, 98,111,111,116, 44, + 32,101,114,114,111,114, 95,112,114,105,110,116,101,114, 41, 13, 10,114,101,115, +117,108,116, 32, 61, 32,120,112, 99, 97,108,108, 40,108,111,118,101, 46,105,110, +105,116, 44, 32,101,114,114,111,114, 95,112,114,105,110,116,101,114, 41, 13, 10, +114,101,115,117,108,116, 32, 61, 32,120,112, 99, 97,108,108, 40,108,111,118,101, + 46,114,117,110, 44, 32,101,114,114,111,114, 95,112,114,105,110,116,101,114, 41, + 13, 10, 13, 10,112,114,105,110,116, 40, 34, 68,111,110,101, 46, 34, 41, }; if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"boot.lua")==0) lua_call(L, 0, 0);