Added locking to SpriteBatch, and conf.lua.

This commit is contained in:
rude
2009-07-27 15:17:54 +02:00
parent 4f32377efa
commit 5c068db487
7 changed files with 396 additions and 248 deletions
+2 -2
View File
@@ -124,8 +124,8 @@ int main(int argc, char ** argv)
// which gets everything started. // which gets everything started.
// TODO: This is obviously test code. // TODO: This is obviously test code.
//luaL_dofile(L, "../../src/scripts/boot.lua"); luaL_dofile(L, "../../src/scripts/boot.lua");
# include "scripts/boot.lua.h" //# include "scripts/boot.lua.h"
lua_close(L); lua_close(L);
+34 -9
View File
@@ -33,7 +33,7 @@ namespace graphics
namespace opengl namespace opengl
{ {
SpriteBatch::SpriteBatch(Image * image, int size, int usage) 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(); image->retain();
@@ -92,17 +92,24 @@ namespace opengl
// Transform. // Transform.
Matrix t; Matrix t;
t.translate(x, y); t.setTransformation(x, y, a, sx, sy, ox, oy);
t.scale(sx, sy);
t.rotate(a);
t.transform(v, v, 4); t.transform(v, v, 4);
glBindBuffer(GL_ARRAY_BUFFER, vbo[0]); if(lockp != 0)
glBufferSubData(GL_ARRAY_BUFFER, (next*4)*sizeof(vertex), sizeof(vertex)*4, v); {
glBindBuffer(GL_ARRAY_BUFFER, 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. // Increment counter.
next++; next++;
} }
} }
@@ -112,10 +119,28 @@ namespace opengl
next = 0; 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 void SpriteBatch::draw(float x, float y, float angle, float sx, float sy, float ox, float oy) const
{ {
static Matrix t;
glPushMatrix(); glPushMatrix();
glTranslatef(x, y, 0);
t.setTransformation(x, y, angle, sx, sy, ox, oy);
glMultMatrixf((const GLfloat*)t.getElements());
image->bind(); image->bind();
@@ -68,6 +68,9 @@ namespace opengl
int usage; int usage;
int gl_usage; int gl_usage;
// If the buffer is locked, this pointer is nonzero.
vertex * lockp;
public: public:
enum UsageHint 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 addf(float x, float y, float a, float sx, float sy, float ox, float oy, Frame * frame);
void clear(); void clear();
void * lock();
void unlock();
// Implements Drawable. // Implements Drawable.
void draw(float x, float y, float angle, float sx, float sy, float ox, float oy) const; void draw(float x, float y, float angle, float sx, float sy, float ox, float oy) const;
@@ -52,9 +52,25 @@ namespace opengl
return 0; 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[] = { static const luaL_Reg wrap_SpriteBatch_functions[] = {
{ "add", _wrap_SpriteBatch_add }, { "add", _wrap_SpriteBatch_add },
{ "clear", _wrap_SpriteBatch_clear }, { "clear", _wrap_SpriteBatch_clear },
{ "lock", _wrap_SpriteBatch_lock },
{ "unlock", _wrap_SpriteBatch_unlock },
{ 0, 0 } { 0, 0 }
}; };
@@ -33,6 +33,8 @@ namespace opengl
SpriteBatch * luax_checkspritebatch(lua_State * L, int idx); SpriteBatch * luax_checkspritebatch(lua_State * L, int idx);
int _wrap_SpriteBatch_add(lua_State * L); int _wrap_SpriteBatch_add(lua_State * L);
int _wrap_SpriteBatch_clear(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); int wrap_SpriteBatch_open(lua_State * L);
} // opengl } // opengl
+76 -38
View File
@@ -5,13 +5,6 @@ if not love then love = {} end
-- Used for setup: -- Used for setup:
love.path = {} 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 /. -- Replace any \ with /.
function love.path.normalslashes(p) function love.path.normalslashes(p)
return string.gsub(p, "\\", "/") return string.gsub(p, "\\", "/")
@@ -94,46 +87,89 @@ love.handlers = {
end, 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 if love.__args then
for i,v in pairs(love.__args) do for i,v in pairs(love.__args) do
print(i,v) print(i,v)
end end
end end
love.filesystem = require("love.filesystem") -- Sets the source for the game.
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")
if love.__args[1] and love.__args[1] ~= "" then if love.__args[1] and love.__args[1] ~= "" then
love.filesystem.setIdentity("love2")
love.filesystem.setSource(love.path.getfull(love.__args[1])) love.filesystem.setSource(love.path.getfull(love.__args[1]))
require("main.lua")
end 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 end
function love.run() 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 if love.load then love.load() end
-- Main loop time. -- Main loop time.
@@ -180,10 +216,12 @@ end
-- The root of all calls. -- The root of all calls.
----------------------------------------------------------- -----------------------------------------------------------
local result = xpcall(love.init, function error_printer(msg)
function (msg) print("boot", msg, debug.traceback())
print(msg, debug.traceback()) end
end)
result = xpcall(love.boot, error_printer)
result = xpcall(love.init, error_printer)
result = xpcall(love.run, error_printer)
print("Done.") print("Done.")
+260 -199
View File
@@ -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, 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, 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,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, 32,123,125, 13, 10, 13, 10, 45, 45, 32, 82,101,112,108, 97, 99,101, 32, 97,110,
46,105,110,115,109,111,100, 40,110, 97,109,101, 44, 32,112,114,111,118,105,100, 121, 32, 92, 32,119,105,116,104, 32, 47, 46, 13, 10,102,117,110, 99,116,105,111,
101,115, 41, 13, 10, 9,105,102, 32,108,111,118,101, 46, 95, 95,109,111,100, 91, 110, 32,108,111,118,101, 46,112, 97,116,104, 46,110,111,114,109, 97,108,115,108,
112,114,111,118,105,100,101,115, 93, 32, 97,110,100, 32,108,111,118,101, 46, 95, 97,115,104,101,115, 40,112, 41, 13, 10, 9,114,101,116,117,114,110, 32,115,116,
95,109,111,100, 91,112,114,111,118,105,100,101,115, 93, 91,110, 97,109,101, 93, 114,105,110,103, 46,103,115,117, 98, 40,112, 44, 32, 34, 92, 92, 34, 44, 32, 34,
32,116,104,101,110, 13, 10, 9, 9,108,111,118,101, 46, 95, 95,109,111,100, 91, 47, 34, 41, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 32, 77, 97,107,101,115,
112,114,111,118,105,100,101,115, 93, 91,110, 97,109,101, 93, 46,111,112,101,110, 32,115,117,114,101, 32,116,104,101,114,101, 32,105,115, 32, 97, 32,115,108, 97,
40, 41, 13, 10, 9, 9,112,114,105,110,116, 40, 34, 79,112,101,110,101,100, 32, 115,104, 32, 97,116, 32,116,104,101, 32,101,110,100, 13, 10, 45, 45, 32,111,102,
34, 32, 46, 46, 32,112,114,111,118,105,100,101,115, 32, 46, 46, 32, 34, 32,109, 32, 97, 32,112, 97,116,104, 46, 13, 10,102,117,110, 99,116,105,111,110, 32,108,
111,100,117,108,101, 32, 34, 32, 46, 46, 32,110, 97,109,101, 32, 46, 46, 32, 34, 111,118,101, 46,112, 97,116,104, 46,101,110,100,115,108, 97,115,104, 40,112, 41,
46, 34, 41, 13, 10, 9,101,110,100, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 13, 10, 9,105,102, 32,115,116,114,105,110,103, 46,115,117, 98, 40,112, 44, 32,
32, 82,101,112,108, 97, 99,101, 32, 97,110,121, 32, 92, 32,119,105,116,104, 32, 115,116,114,105,110,103, 46,108,101,110, 40,112, 41, 45, 49, 41, 32,126, 61, 32,
47, 46, 13, 10,102,117,110, 99,116,105,111,110, 32,108,111,118,101, 46,112, 97, 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, 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, 10, 9,101,110,100, 13, 10, 13, 10, 9,108,111, 99, 97,108, 32, 99,119,100, 32,
40,112, 44, 32, 34, 92, 92, 34, 44, 32, 34, 47, 34, 41, 13, 10,101,110,100, 13, 61, 32,108,111,118,101, 46,102,105,108,101,115,121,115,116,101,109, 46,103,101,
10, 13, 10, 45, 45, 32, 77, 97,107,101,115, 32,115,117,114,101, 32,116,104,101, 116, 87,111,114,107,105,110,103, 68,105,114,101, 99,116,111,114,121, 40, 41, 13,
114,101, 32,105,115, 32, 97, 32,115,108, 97,115,104, 32, 97,116, 32,116,104,101, 10, 9, 99,119,100, 32, 61, 32,108,111,118,101, 46,112, 97,116,104, 46,110,111,
32,101,110,100, 13, 10, 45, 45, 32,111,102, 32, 97, 32,112, 97,116,104, 46, 13, 114,109, 97,108,115,108, 97,115,104,101,115, 40, 99,119,100, 41, 13, 10, 9, 99,
10,102,117,110, 99,116,105,111,110, 32,108,111,118,101, 46,112, 97,116,104, 46, 119,100, 32, 61, 32,108,111,118,101, 46,112, 97,116,104, 46,101,110,100,115,108,
101,110,100,115,108, 97,115,104, 40,112, 41, 13, 10, 9,105,102, 32,115,116,114, 97,115,104, 40, 99,119,100, 41, 13, 10, 9, 13, 10, 9, 45, 45, 32, 67,111,110,
105,110,103, 46,115,117, 98, 40,112, 44, 32,115,116,114,105,110,103, 46,108,101, 115,116,114,117, 99,116, 32, 97, 32,102,117,108,108, 32,112, 97,116,104, 46, 13,
110, 40,112, 41, 45, 49, 41, 32,126, 61, 32, 34, 47, 34, 32,116,104,101,110, 13, 10, 9,114,101,116,117,114,110, 32, 99,119,100, 32, 46, 46, 32,108,111,118,101,
10, 9, 9,114,101,116,117,114,110, 32,112, 32, 46, 46, 32, 34, 47, 34, 13, 10, 46,112, 97,116,104, 46,110,111,114,109, 97,108,115,108, 97,115,104,101,115, 40,
9,101,108,115,101, 13, 10, 9, 9,114,101,116,117,114,110, 32,112, 13, 10, 9, 112, 41, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 32, 82,101,116,117,
101,110,100, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 32, 67,104,101, 99,107, 114,110,115, 32,116,104,101, 32,108,101, 97,102, 32,111,102, 32, 97, 32,102,117,
115, 32,119,104,101,116,104,101,114, 32, 97, 32,112, 97,116,104, 32,105,115, 32, 108,108, 32,112, 97,116,104, 46, 13, 10,102,117,110, 99,116,105,111,110, 32,108,
97, 98,115,111,108,117,116,101, 32,111,114, 32,110,111,116, 46, 13, 10,102,117, 111,118,101, 46,112, 97,116,104, 46,108,101, 97,102, 40,112, 41, 13, 10, 13, 10,
110, 99,116,105,111,110, 32,108,111,118,101, 46,112, 97,116,104, 46, 97, 98,115, 101,110,100, 13, 10, 13, 10, 45, 45, 32, 83,116, 97,110,100, 97,114,100, 32, 99,
40,112, 41, 13, 10, 13, 10, 9,108,111, 99, 97,108, 32,116,109,112, 32, 61, 32, 97,108,108, 98, 97, 99,107, 32,104, 97,110,100,108,101,114,115, 46, 13, 10,108,
108,111,118,101, 46,112, 97,116,104, 46,110,111,114,109, 97,108,115,108, 97,115, 111,118,101, 46,104, 97,110,100,108,101,114,115, 32, 61, 32,123, 13, 10, 9, 91,
104,101,115, 40,112, 41, 13, 10, 13, 10, 9, 45, 45, 32, 80, 97,116,104, 32,105, 108,111,118,101, 46,101,118,101,110,116, 95,107,101,121,112,114,101,115,115,101,
115, 32, 97, 98,115,111,108,117,116,101, 32,105,102, 32,105,116, 32,115,116, 97, 100, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40, 98, 44, 32,117, 41,
114,116,115, 32,119,105,116,104, 32, 97, 32, 34, 47, 34, 46, 13, 10, 9,105,102, 13, 10, 9, 9,105,102, 32,108,111,118,101, 46,107,101,121,112,114,101,115,115,
32,115,116,114,105,110,103, 46,102,105,110,100, 40,116,109,112, 44, 32, 34, 47, 101,100, 32,116,104,101,110, 32,108,111,118,101, 46,107,101,121,112,114,101,115,
34, 41, 32, 61, 61, 32, 49, 32,116,104,101,110, 13, 10, 9, 9,114,101,116,117, 115,101,100, 40, 98, 44, 32,117, 41, 32,101,110,100, 13, 10, 9,101,110,100, 44,
114,110, 32,116,114,117,101, 13, 10, 9,101,110,100, 13, 10, 13, 10, 9, 45, 45, 13, 10, 9, 91,108,111,118,101, 46,101,118,101,110,116, 95,107,101,121,114,101,
32, 80, 97,116,104, 32,105,115, 32, 97, 98,115,111,108,117,116,101, 32,105,102, 108,101, 97,115,101,100, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,
32,105,116, 32,115,116, 97,114,116,115, 32,119,105,116,104, 32, 97, 32, 13, 10, 98, 41, 13, 10, 9, 9,105,102, 32,108,111,118,101, 46,107,101,121,114,101,108,
9, 45, 45, 32,108,101,116,116,101,114, 32,102,111,108,108,111,119,101,100, 32, 101, 97,115,101,100, 32,116,104,101,110, 32,108,111,118,101, 46,107,101,121,114,
98,121, 32, 97, 32, 99,111,108,111,110, 46, 13, 10, 9,105,102, 32,115,116,114, 101,108,101, 97,115,101,100, 40, 98, 41, 32,101,110,100, 13, 10, 9,101,110,100,
105,110,103, 46,102,105,110,100, 40,116,109,112, 44, 32, 34, 37, 97, 58, 34, 41, 44, 13, 10, 9, 91,108,111,118,101, 46,101,118,101,110,116, 95,109,111,117,115,
32, 61, 61, 32, 49, 32,116,104,101,110, 13, 10, 9, 9,114,101,116,117,114,110, 101,112,114,101,115,115,101,100, 93, 32, 61, 32,102,117,110, 99,116,105,111,110,
32,116,114,117,101, 13, 10, 9,101,110,100, 13, 10, 9, 13, 10, 9, 45, 45, 32, 32, 40,120, 44,121, 44, 98, 41, 13, 10, 9, 9,105,102, 32,108,111,118,101, 46,
82,101,108, 97,116,105,118,101, 46, 13, 10, 9,114,101,116,117,114,110, 32,102, 109,111,117,115,101,112,114,101,115,115,101,100, 32,116,104,101,110, 32,108,111,
97,108,115,101, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 32, 67,111, 118,101, 46,109,111,117,115,101,112,114,101,115,115,101,100, 40,120, 44,121, 44,
110,118,101,114,116,115, 32, 97,110,121, 32,112, 97,116,104, 32,105,110,116,111, 98, 41, 32,101,110,100, 13, 10, 9,101,110,100, 44, 13, 10, 9, 91,108,111,118,
32, 97, 32,102,117,108,108, 32,112, 97,116,104, 46, 13, 10,102,117,110, 99,116, 101, 46,101,118,101,110,116, 95,109,111,117,115,101,114,101,108,101, 97,115,101,
105,111,110, 32,108,111,118,101, 46,112, 97,116,104, 46,103,101,116,102,117,108, 100, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,120, 44,121, 44, 98,
108, 40,112, 41, 13, 10, 13, 10, 9,105,102, 32,108,111,118,101, 46,112, 97,116, 41, 13, 10, 9, 9,105,102, 32,108,111,118,101, 46,109,111,117,115,101,114,101,
104, 46, 97, 98,115, 40,112, 41, 32,116,104,101,110, 13, 10, 9, 9,114,101,116, 108,101, 97,115,101,100, 32,116,104,101,110, 32,108,111,118,101, 46,109,111,117,
117,114,110, 32,108,111,118,101, 46,112, 97,116,104, 46,110,111,114,109, 97,108, 115,101,114,101,108,101, 97,115,101,100, 40,120, 44,121, 44, 98, 41, 32,101,110,
115,108, 97,115,104,101,115, 40,112, 41, 13, 10, 9,101,110,100, 13, 10, 13, 10, 100, 13, 10, 9,101,110,100, 44, 13, 10, 9, 91,108,111,118,101, 46,101,118,101,
9,108,111, 99, 97,108, 32, 99,119,100, 32, 61, 32,108,111,118,101, 46,102,105, 110,116, 95,106,111,121,115,116,105, 99,107,112,114,101,115,115,101,100, 93, 32,
108,101,115,121,115,116,101,109, 46,103,101,116, 87,111,114,107,105,110,103, 68, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,106, 44, 98, 41, 13, 10, 9, 9,
105,114,101, 99,116,111,114,121, 40, 41, 13, 10, 9, 99,119,100, 32, 61, 32,108, 105,102, 32,108,111,118,101, 46,106,111,121,115,116,105, 99,107,112,114,101,115,
111,118,101, 46,112, 97,116,104, 46,110,111,114,109, 97,108,115,108, 97,115,104, 115,101,100, 32,116,104,101,110, 32,108,111,118,101, 46,106,111,121,115,116,105,
101,115, 40, 99,119,100, 41, 13, 10, 9, 99,119,100, 32, 61, 32,108,111,118,101, 99,107,112,114,101,115,115,101,100, 40,106, 44, 98, 41, 32,101,110,100, 13, 10,
46,112, 97,116,104, 46,101,110,100,115,108, 97,115,104, 40, 99,119,100, 41, 13, 9,101,110,100, 44, 13, 10, 9, 91,108,111,118,101, 46,101,118,101,110,116, 95,
10, 9, 13, 10, 9, 45, 45, 32, 67,111,110,115,116,114,117, 99,116, 32, 97, 32, 106,111,121,115,116,105, 99,107,114,101,108,101, 97,115,101,100, 93, 32, 61, 32,
102,117,108,108, 32,112, 97,116,104, 46, 13, 10, 9,114,101,116,117,114,110, 32, 102,117,110, 99,116,105,111,110, 32, 40,106, 44, 98, 41, 13, 10, 9, 9,105,102,
99,119,100, 32, 46, 46, 32,108,111,118,101, 46,112, 97,116,104, 46,110,111,114, 32,108,111,118,101, 46,106,111,121,115,116,105, 99,107,114,101,108,101, 97,115,
109, 97,108,115,108, 97,115,104,101,115, 40,112, 41, 13, 10, 13, 10,101,110,100, 101,100, 32,116,104,101,110, 32,108,111,118,101, 46,106,111,121,115,116,105, 99,
13, 10, 13, 10, 45, 45, 32, 82,101,116,117,114,110,115, 32,116,104,101, 32,108, 107,114,101,108,101, 97,115,101,100, 40,106, 44, 98, 41, 32,101,110,100, 13, 10,
101, 97,102, 32,111,102, 32, 97, 32,102,117,108,108, 32,112, 97,116,104, 46, 13, 9,101,110,100, 44, 13, 10, 9, 91,108,111,118,101, 46,101,118,101,110,116, 95,
10,102,117,110, 99,116,105,111,110, 32,108,111,118,101, 46,112, 97,116,104, 46, 113,117,105,116, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40, 41, 13,
108,101, 97,102, 40,112, 41, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 10, 9, 9,114,101,116,117,114,110, 13, 10, 9,101,110,100, 44, 13, 10,125, 13,
32, 83,116, 97,110,100, 97,114,100, 32, 99, 97,108,108, 98, 97, 99,107, 32,104, 10, 13, 10, 45, 45, 32, 84,104,105,115, 32, 99, 97,110, 39,116, 32, 98,101, 32,
97,110,100,108,101,114,115, 46, 13, 10,108,111,118,101, 46,104, 97,110,100,108, 111,118,101,114,114,105,100,101,110, 46, 32, 13, 10,102,117,110, 99,116,105,111,
101,114,115, 32, 61, 32,123, 13, 10, 9, 91,108,111,118,101, 46,101,118,101,110, 110, 32,108,111,118,101, 46, 98,111,111,116, 40, 41, 13, 10, 13, 10, 9,112,114,
116, 95,107,101,121,112,114,101,115,115,101,100, 93, 32, 61, 32,102,117,110, 99, 105,110,116, 40, 34, 98,111,111,116, 34, 41, 13, 10, 13, 10, 9, 45, 45, 32, 84,
116,105,111,110, 32, 40, 98, 44, 32,117, 41, 13, 10, 9, 9,105,102, 32,108,111, 104,105,115, 32,105,115, 32, 97, 98,115,111,108,117,116,101,108,121, 32,110,101,
118,101, 46,107,101,121,112,114,101,115,115,101,100, 32,116,104,101,110, 32,108, 101,100,101,100, 46, 32, 13, 10, 9,108,111,118,101, 46,102,105,108,101,115,121,
111,118,101, 46,107,101,121,112,114,101,115,115,101,100, 40, 98, 44, 32,117, 41, 115,116,101,109, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101,
32,101,110,100, 13, 10, 9,101,110,100, 44, 13, 10, 9, 91,108,111,118,101, 46, 46,102,105,108,101,115,121,115,116,101,109, 34, 41, 13, 10, 13, 10, 9, 45, 45,
101,118,101,110,116, 95,107,101,121,114,101,108,101, 97,115,101,100, 93, 32, 61, 32, 80,114,105,110,116,115, 32,116,104,101, 32, 97,114,103,117,109,101,110,116,
32,102,117,110, 99,116,105,111,110, 32, 40, 98, 41, 13, 10, 9, 9,105,102, 32, 115, 32,112, 97,115,115,101,115, 32,116,111, 32,116,104,101, 32, 97,112,112, 46,
108,111,118,101, 46,107,101,121,114,101,108,101, 97,115,101,100, 32,116,104,101, 13, 10, 9,105,102, 32,108,111,118,101, 46, 95, 95, 97,114,103,115, 32,116,104,
110, 32,108,111,118,101, 46,107,101,121,114,101,108,101, 97,115,101,100, 40, 98, 101,110, 13, 10, 9, 9,102,111,114, 32,105, 44,118, 32,105,110, 32,112, 97,105,
41, 32,101,110,100, 13, 10, 9,101,110,100, 44, 13, 10, 9, 91,108,111,118,101, 114,115, 40,108,111,118,101, 46, 95, 95, 97,114,103,115, 41, 32,100,111, 13, 10,
46,101,118,101,110,116, 95,109,111,117,115,101,112,114,101,115,115,101,100, 93, 9, 9, 9,112,114,105,110,116, 40,105, 44,118, 41, 13, 10, 9, 9,101,110,100,
32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,120, 44,121, 44, 98, 41, 13, 13, 10, 9,101,110,100, 9, 13, 10, 9, 13, 10, 9, 45, 45, 32, 83,101,116,115,
10, 9, 9,105,102, 32,108,111,118,101, 46,109,111,117,115,101,112,114,101,115, 32,116,104,101, 32,115,111,117,114, 99,101, 32,102,111,114, 32,116,104,101, 32,
115,101,100, 32,116,104,101,110, 32,108,111,118,101, 46,109,111,117,115,101,112, 103, 97,109,101, 46, 13, 10, 9,105,102, 32,108,111,118,101, 46, 95, 95, 97,114,
114,101,115,115,101,100, 40,120, 44,121, 44, 98, 41, 32,101,110,100, 13, 10, 9, 103,115, 91, 49, 93, 32, 97,110,100, 32,108,111,118,101, 46, 95, 95, 97,114,103,
101,110,100, 44, 13, 10, 9, 91,108,111,118,101, 46,101,118,101,110,116, 95,109, 115, 91, 49, 93, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 13, 10, 9, 9,108,
111,117,115,101,114,101,108,101, 97,115,101,100, 93, 32, 61, 32,102,117,110, 99, 111,118,101, 46,102,105,108,101,115,121,115,116,101,109, 46,115,101,116, 83,111,
116,105,111,110, 32, 40,120, 44,121, 44, 98, 41, 13, 10, 9, 9,105,102, 32,108, 117,114, 99,101, 40,108,111,118,101, 46,112, 97,116,104, 46,103,101,116,102,117,
111,118,101, 46,109,111,117,115,101,114,101,108,101, 97,115,101,100, 32,116,104, 108,108, 40,108,111,118,101, 46, 95, 95, 97,114,103,115, 91, 49, 93, 41, 41, 13,
101,110, 32,108,111,118,101, 46,109,111,117,115,101,114,101,108,101, 97,115,101, 10, 9,101,110,100, 13, 10, 9, 13, 10,101,110,100, 13, 10, 13, 10,102,117,110,
100, 40,120, 44,121, 44, 98, 41, 32,101,110,100, 13, 10, 9,101,110,100, 44, 13, 99,116,105,111,110, 32,108,111,118,101, 46,105,110,105,116, 40, 41, 13, 10, 13,
10, 9, 91,108,111,118,101, 46,101,118,101,110,116, 95,106,111,121,115,116,105, 10, 9, 45, 45, 32, 67,114,101, 97,116,101, 32,100,101,102, 97,117,108,116, 32,
99,107,112,114,101,115,115,101,100, 93, 32, 61, 32,102,117,110, 99,116,105,111, 99,111,110,102,105,103,117,114, 97,116,105,111,110, 32,115,101,116,116,105,110,
110, 32, 40,106, 44, 98, 41, 13, 10, 9, 9,105,102, 32,108,111,118,101, 46,106, 103,115, 46, 13, 10, 9,108,111, 99, 97,108, 32, 99, 32, 61, 32,123, 13, 10, 9,
111,121,115,116,105, 99,107,112,114,101,115,115,101,100, 32,116,104,101,110, 32, 9,116,105,116,108,101, 32, 61, 32, 34, 85,110,116,105,116,108,101,100, 34, 44,
108,111,118,101, 46,106,111,121,115,116,105, 99,107,112,114,101,115,115,101,100, 13, 10, 9, 9, 97,117,116,104,111,114, 32, 61, 32, 34, 85,110,110, 97,109,101,
40,106, 44, 98, 41, 32,101,110,100, 13, 10, 9,101,110,100, 44, 13, 10, 9, 91, 100, 34, 44, 13, 10, 9, 9,118,101,114,115,105,111,110, 32, 61, 32, 48, 44, 13,
108,111,118,101, 46,101,118,101,110,116, 95,106,111,121,115,116,105, 99,107,114, 10, 9, 9,115, 99,114,101,101,110, 32, 61, 32,123, 13, 10, 9, 9, 9,119,105,
101,108,101, 97,115,101,100, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 100,116,104, 32, 61, 32, 56, 48, 48, 44, 13, 10, 9, 9, 9,104,101,105,103,104,
40,106, 44, 98, 41, 13, 10, 9, 9,105,102, 32,108,111,118,101, 46,106,111,121, 116, 32, 61, 32, 54, 48, 48, 44, 13, 10, 9, 9, 9,102,117,108,108,115, 99,114,
115,116,105, 99,107,114,101,108,101, 97,115,101,100, 32,116,104,101,110, 32,108, 101,101,110, 32, 61, 32,102, 97,108,115,101, 44, 13, 10, 9, 9, 9,118,115,121,
111,118,101, 46,106,111,121,115,116,105, 99,107,114,101,108,101, 97,115,101,100, 110, 99, 32, 61, 32,116,114,117,101, 44, 13, 10, 9, 9, 9,102,115, 97, 97, 32,
40,106, 44, 98, 41, 32,101,110,100, 13, 10, 9,101,110,100, 44, 13, 10, 9, 91, 61, 32, 48, 44, 13, 10, 9, 9,125, 44, 32, 13, 10, 9, 9,109,111,100,117,108,
108,111,118,101, 46,101,118,101,110,116, 95,113,117,105,116, 93, 32, 61, 32,102, 101,115, 32, 61, 32,123, 13, 10, 9, 9, 9,101,118,101,110,116, 32, 61, 32,116,
117,110, 99,116,105,111,110, 32, 40, 41, 13, 10, 9, 9,114,101,116,117,114,110, 114,117,101, 44, 13, 10, 9, 9, 9,107,101,121, 98,111, 97,114,100, 32, 61, 32,
13, 10, 9,101,110,100, 44, 13, 10,125, 13, 10, 13, 10,102,117,110, 99,116,105, 116,114,117,101, 44, 13, 10, 9, 9, 9,109,111,117,115,101, 32, 61, 32,116,114,
111,110, 32,108,111,118,101, 46,105,110,105,116, 40, 41, 13, 10, 13, 10, 9,105, 117,101, 44, 13, 10, 9, 9, 9,116,105,109,101,114, 32, 61, 32,116,114,117,101,
102, 32,108,111,118,101, 46, 95, 95, 97,114,103,115, 32,116,104,101,110, 13, 10, 44, 13, 10, 9, 9, 9,106,111,121,115,116,105, 99,107, 32, 61, 32,116,114,117,
9, 9,102,111,114, 32,105, 44,118, 32,105,110, 32,112, 97,105,114,115, 40,108, 101, 44, 13, 10, 9, 9, 9,105,109, 97,103,101, 32, 61, 32,116,114,117,101, 44,
111,118,101, 46, 95, 95, 97,114,103,115, 41, 32,100,111, 13, 10, 9, 9, 9,112, 13, 10, 9, 9, 9,103,114, 97,112,104,105, 99,115, 32, 61, 32,116,114,117,101,
114,105,110,116, 40,105, 44,118, 41, 13, 10, 9, 9,101,110,100, 13, 10, 9,101, 44, 13, 10, 9, 9, 9, 97,117,100,105,111, 32, 61, 32,116,114,117,101, 44, 13,
110,100, 13, 10, 13, 10, 9,108,111,118,101, 46,102,105,108,101,115,121,115,116, 10, 9, 9, 9,112,104,121,115,105, 99,115, 32, 61, 32,116,114,117,101, 44, 13,
101,109, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,102, 10, 9, 9, 9,115,111,117,110,100, 32, 61, 32,116,114,117,101, 44, 13, 10, 9,
105,108,101,115,121,115,116,101,109, 34, 41, 13, 10, 9,108,111,118,101, 46,101, 9, 9,110, 97,116,105,118,101, 32, 61, 32,116,114,117,101, 44, 13, 10, 9, 9,
118,101,110,116, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 125, 44, 13, 10, 9,125, 13, 10, 13, 10, 9, 45, 45, 32, 73,102, 32, 99,111,110,
46,101,118,101,110,116, 34, 41, 13, 10, 9,108,111,118,101, 46,107,101,121, 98, 102,105,103, 32,102,105,108,101, 32,101,120,105,115,116,115, 44, 32,108,111, 97,
111, 97,114,100, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 100, 32,105,116, 32, 97,110,100, 32, 97,108,108,111,119, 32,105,116, 32,116,111,
46,107,101,121, 98,111, 97,114,100, 34, 41, 13, 10, 9,108,111,118,101, 46,109, 32,117,112,100, 97,116,101, 32, 99,111,110,102,105,103, 32,116, 97, 98,108,101,
111,117,115,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46, 13, 10, 9,105,102, 32,108,111,118,101, 46,102,105,108,101,115,121,115,116,
46,109,111,117,115,101, 34, 41, 13, 10, 9,108,111,118,101, 46,116,105,109,101, 101,109, 46,101,120,105,115,116,115, 40, 34, 99,111,110,102, 46,108,117, 97, 34,
114, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,116,105, 41, 32,116,104,101,110, 13, 10, 9, 9,114,101,113,117,105,114,101, 40, 34, 99,
109,101,114, 34, 41, 13, 10, 9,108,111,118,101, 46,106,111,121,115,116,105, 99, 111,110,102, 46,108,117, 97, 34, 41, 13, 10, 9, 9,108,111,118,101, 46, 99,111,
107, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,106,111, 110,102, 40, 99, 41, 13, 10, 9,101,110,100, 13, 10, 9, 13, 10, 9,105,102, 32,
121,115,116,105, 99,107, 34, 41, 13, 10, 9,108,111,118,101, 46,105,109, 97,103, 99, 46,109,111,100,117,108,101,115, 46,101,118,101,110,116, 32,116,104,101,110,
101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,105,109, 32,108,111,118,101, 46,101,118,101,110,116, 32, 61, 32,114,101,113,117,105,114,
97,103,101, 34, 41, 13, 10, 9,108,111,118,101, 46,103,114, 97,112,104,105, 99, 101, 40, 34,108,111,118,101, 46,101,118,101,110,116, 34, 41, 32,101,110,100, 13,
115, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,103,114, 10, 9,105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,107,101,121, 98,111,
97,112,104,105, 99,115, 34, 41, 13, 10, 9,108,111,118,101, 46, 97,117,100,105, 97,114,100, 32,116,104,101,110, 32,108,111,118,101, 46,107,101,121, 98,111, 97,
111, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46, 97,117, 114,100, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,107,
100,105,111, 34, 41, 13, 10, 9,108,111,118,101, 46,112,104,121,115,105, 99,115, 101,121, 98,111, 97,114,100, 34, 41, 32,101,110,100, 13, 10, 9,105,102, 32, 99,
32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,112,104,121, 46,109,111,100,117,108,101,115, 46,109,111,117,115,101, 32,116,104,101,110, 32,
115,105, 99,115, 34, 41, 13, 10, 9,108,111,118,101, 46,115,111,117,110,100, 32, 108,111,118,101, 46,109,111,117,115,101, 32, 61, 32,114,101,113,117,105,114,101,
61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,115,111,117,110, 40, 34,108,111,118,101, 46,109,111,117,115,101, 34, 41, 32,101,110,100, 13, 10,
100, 34, 41, 13, 10, 9,108,111,118,101, 46,110, 97,116,105,118,101, 32, 61, 32, 9,105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,116,105,109,101,114, 32,
114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,110, 97,116,105,118,101, 116,104,101,110, 32,108,111,118,101, 46,116,105,109,101,114, 32, 61, 32,114,101,
34, 41, 13, 10, 13, 10, 9,105,102, 32,108,111,118,101, 46, 95, 95, 97,114,103, 113,117,105,114,101, 40, 34,108,111,118,101, 46,116,105,109,101,114, 34, 41, 32,
115, 91, 49, 93, 32, 97,110,100, 32,108,111,118,101, 46, 95, 95, 97,114,103,115, 101,110,100, 13, 10, 9,105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,106,
91, 49, 93, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 13, 10, 9, 9,108,111, 111,121,115,116,105, 99,107, 32,116,104,101,110, 32,108,111,118,101, 46,106,111,
118,101, 46,102,105,108,101,115,121,115,116,101,109, 46,115,101,116, 73,100,101, 121,115,116,105, 99,107, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,
110,116,105,116,121, 40, 34,108,111,118,101, 50, 34, 41, 13, 10, 9, 9,108,111, 118,101, 46,106,111,121,115,116,105, 99,107, 34, 41, 32,101,110,100, 13, 10, 9,
118,101, 46,102,105,108,101,115,121,115,116,101,109, 46,115,101,116, 83,111,117, 105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,105,109, 97,103,101, 32,116,
114, 99,101, 40,108,111,118,101, 46,112, 97,116,104, 46,103,101,116,102,117,108, 104,101,110, 32,108,111,118,101, 46,105,109, 97,103,101, 32, 61, 32,114,101,113,
108, 40,108,111,118,101, 46, 95, 95, 97,114,103,115, 91, 49, 93, 41, 41, 13, 10, 117,105,114,101, 40, 34,108,111,118,101, 46,105,109, 97,103,101, 34, 41, 32,101,
9, 9,114,101,113,117,105,114,101, 40, 34,109, 97,105,110, 46,108,117, 97, 34, 110,100, 13, 10, 9,105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,103,114,
41, 13, 10, 9,101,110,100, 13, 10, 13, 10, 9,108,111,118,101, 46,114,117,110, 97,112,104,105, 99,115, 32,116,104,101,110, 32,108,111,118,101, 46,103,114, 97,
40, 41, 13, 10,101,110,100, 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32, 112,104,105, 99,115, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,
108,111,118,101, 46,114,117,110, 40, 41, 13, 10, 13, 10, 9, 45, 45, 32, 67, 79, 101, 46,103,114, 97,112,104,105, 99,115, 34, 41, 32,101,110,100, 13, 10, 9,105,
78, 70, 73, 71, 32, 66, 69, 71, 73, 78, 83, 13, 10, 13, 10, 9,105,102, 32,108, 102, 32, 99, 46,109,111,100,117,108,101,115, 46, 97,117,100,105,111, 32,116,104,
111,118,101, 46,103,114, 97,112,104,105, 99,115, 46, 99,104,101, 99,107, 77,111, 101,110, 32,108,111,118,101, 46, 97,117,100,105,111, 32, 61, 32,114,101,113,117,
100,101, 40, 56, 48, 48, 44, 32, 54, 48, 48, 44, 32,102, 97,108,115,101, 41, 32, 105,114,101, 40, 34,108,111,118,101, 46, 97,117,100,105,111, 34, 41, 32,101,110,
116,104,101,110, 13, 10, 9, 9,108,111,118,101, 46,103,114, 97,112,104,105, 99, 100, 13, 10, 9,105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,112,104,121,
115, 46,115,101,116, 77,111,100,101, 40, 56, 48, 48, 44, 32, 54, 48, 48, 44, 32, 115,105, 99,115, 32,116,104,101,110, 32,108,111,118,101, 46,112,104,121,115,105,
102, 97,108,115,101, 44, 32,102, 97,108,115,101, 41, 13, 10, 9,101,110,100, 13, 99,115, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,112,
10, 13, 10, 9, 45, 45, 32, 67, 79, 78, 70, 73, 71, 32, 69, 78, 68, 83, 13, 10, 104,121,115,105, 99,115, 34, 41, 32,101,110,100, 13, 10, 9,105,102, 32, 99, 46,
13, 10, 9,105,102, 32,108,111,118,101, 46,108,111, 97,100, 32,116,104,101,110, 109,111,100,117,108,101,115, 46,115,111,117,110,100, 32,116,104,101,110, 32,108,
32,108,111,118,101, 46,108,111, 97,100, 40, 41, 32,101,110,100, 13, 10, 13, 10, 111,118,101, 46,115,111,117,110,100, 32, 61, 32,114,101,113,117,105,114,101, 40,
9, 45, 45, 32, 77, 97,105,110, 32,108,111,111,112, 32,116,105,109,101, 46, 13, 34,108,111,118,101, 46,115,111,117,110,100, 34, 41, 32,101,110,100, 13, 10, 9,
10, 9,119,104,105,108,101, 32,116,114,117,101, 32,100,111, 13, 10, 9, 9,108, 105,102, 32, 99, 46,109,111,100,117,108,101,115, 46,110, 97,116,105,118,101, 32,
111,118,101, 46,116,105,109,101,114, 46,115,116,101,112, 40, 41, 13, 10, 9, 9, 116,104,101,110, 32,108,111,118,101, 46,110, 97,116,105,118,101, 32, 61, 32,114,
105,102, 32,108,111,118,101, 46,117,112,100, 97,116,101, 32,116,104,101,110, 32, 101,113,117,105,114,101, 40, 34,108,111,118,101, 46,110, 97,116,105,118,101, 34,
108,111,118,101, 46,117,112,100, 97,116,101, 40,108,111,118,101, 46,116,105,109, 41, 32,101,110,100, 13, 10, 9, 13, 10, 9, 45, 45, 32, 83,101,116,117,112, 32,
101,114, 46,103,101,116, 68,101,108,116, 97, 40, 41, 41, 32,101,110,100, 13, 10, 115, 99,114,101,101,110, 32,104,101,114,101, 46, 13, 10, 9,105,102, 32, 99, 46,
9, 9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46, 99,108,101, 97, 115, 99,114,101,101,110, 32, 97,110,100, 32, 99, 46,109,111,100,117,108,101,115,
114, 40, 41, 13, 10, 9, 9,105,102, 32,108,111,118,101, 46,100,114, 97,119, 32, 46,103,114, 97,112,104,105, 99,115, 32,116,104,101,110, 32, 13, 10, 9, 9,105,
116,104,101,110, 32,108,111,118,101, 46,100,114, 97,119, 40, 41, 32,101,110,100, 102, 32,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46, 99,104,101, 99,
13, 10, 13, 10, 9, 9, 45, 45, 32, 80,114,111, 99,101,115,115, 32,101,118,101, 107, 77,111,100,101, 40, 99, 46,115, 99,114,101,101,110, 46,119,105,100,116,104,
110,116,115, 46, 13, 10, 9, 9,102,111,114, 32,101, 44, 97, 44, 98, 44, 99, 32, 44, 32, 99, 46,115, 99,114,101,101,110, 46,104,101,105,103,104,116, 44, 32, 99,
105,110, 32,108,111,118,101, 46,101,118,101,110,116, 46,112,111,108,108, 40, 41, 46,115, 99,114,101,101,110, 46,102,117,108,108,115, 99,114,101,101,110, 41, 32,
32,100,111, 13, 10, 9, 9, 9,105,102, 32,101, 32, 61, 61, 32,108,111,118,101, 116,104,101,110, 13, 10, 9, 9, 9,108,111,118,101, 46,103,114, 97,112,104,105,
46,101,118,101,110,116, 95,113,117,105,116, 32,116,104,101,110, 32,114,101,116, 99,115, 46,115,101,116, 77,111,100,101, 40, 99, 46,115, 99,114,101,101,110, 46,
117,114,110, 32,101,110,100, 13, 10, 9, 9, 9,108,111,118,101, 46,104, 97,110, 119,105,100,116,104, 44, 32, 99, 46,115, 99,114,101,101,110, 46,104,101,105,103,
100,108,101,114,115, 91,101, 93, 40, 97, 44, 98, 44, 99, 41, 13, 10, 9, 9,101, 104,116, 44, 32, 99, 46,115, 99,114,101,101,110, 46,102,117,108,108,115, 99,114,
110,100, 13, 10, 13, 10, 9, 9, 45, 45,108,111,118,101, 46,116,105,109,101,114, 101,101,110, 44, 32, 99, 46,115, 99,114,101,101,110, 46,118,115,121,110, 99, 44,
46,115,108,101,101,112, 40, 49, 48, 41, 13, 10, 9, 9,108,111,118,101, 46,103, 32, 99, 46,115, 99,114,101,101,110, 46,102,115, 97, 97, 41, 13, 10, 9, 9,101,
114, 97,112,104,105, 99,115, 46,112,114,101,115,101,110,116, 40, 41, 13, 10, 13, 110,100, 13, 10, 9, 9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,
10, 9,101,110,100, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 45, 45, 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, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 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, 45, 45, 45, 45, 45, 13, 10, 45, 45, 32, 68,101,102, 97,117,108,116, 32,115, 99,
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,
114,101,101,110, 46, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 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, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 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, 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, 111,118,101, 46,100,101,102, 97,117,108,116,115, 99,114,101,101,110, 40, 41, 13,
13, 10, 9, 45, 45, 32, 77, 97,105,110, 32,108,111,111,112, 32,103,111,101,115, 10, 13, 10, 9, 45, 45, 32, 77, 97,105,110, 32,108,111,111,112, 32,103,111,101,
32,104,101,114,101, 46, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 45, 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, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 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, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 45,
32, 84,104,101, 32,114,111,111,116, 32,111,102, 32, 97,108,108, 32, 99, 97,108, 45, 32, 69,114,114,111,114, 32,115, 99,114,101,101,110, 46, 13, 10, 45, 45, 45,
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, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 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, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 13, 10,
32, 61, 32,120,112, 99, 97,108,108, 40,108,111,118,101, 46,105,110,105,116, 44, 102,117,110, 99,116,105,111,110, 32,108,111,118,101, 46,101,114,114,111,114,115,
13, 10, 9,102,117,110, 99,116,105,111,110, 32, 40,109,115,103, 41, 13, 10, 9, 99,114,101,101,110, 40, 41, 13, 10, 9, 13, 10, 9, 45, 45, 32, 77, 97,105,110,
9,112,114,105,110,116, 40,109,115,103, 44, 32,100,101, 98,117,103, 46,116,114, 32,108,111,111,112, 32,103,111,101,115, 32,104,101,114,101, 46, 13, 10, 13, 10,
97, 99,101, 98, 97, 99,107, 40, 41, 41, 13, 10, 9,101,110,100, 41, 13, 10, 13, 101,110,100, 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
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, 45, 45, 45, 45,
45, 45, 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); if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"boot.lua")==0) lua_call(L, 0, 0);