diff options
Diffstat (limited to 'src/libjin-lua/scripts/utils')
-rw-r--r-- | src/libjin-lua/scripts/utils/json.lua | 512 | ||||
-rw-r--r-- | src/libjin-lua/scripts/utils/json.lua.h | 904 | ||||
-rw-r--r-- | src/libjin-lua/scripts/utils/xml.lua | 244 | ||||
-rw-r--r-- | src/libjin-lua/scripts/utils/xml.lua.h | 451 |
4 files changed, 1020 insertions, 1091 deletions
diff --git a/src/libjin-lua/scripts/utils/json.lua b/src/libjin-lua/scripts/utils/json.lua index d2c44b3..4f84400 100644 --- a/src/libjin-lua/scripts/utils/json.lua +++ b/src/libjin-lua/scripts/utils/json.lua @@ -14,108 +14,108 @@ local json = { _version = "0.1.1" } local encode local escape_char_map = { - [ "\\" ] = "\\\\", - [ "\"" ] = "\\\"", - [ "\b" ] = "\\b", - [ "\f" ] = "\\f", - [ "\n" ] = "\\n", - [ "\r" ] = "\\r", - [ "\t" ] = "\\t", + [ "\\" ] = "\\\\", + [ "\"" ] = "\\\"", + [ "\b" ] = "\\b", + [ "\f" ] = "\\f", + [ "\n" ] = "\\n", + [ "\r" ] = "\\r", + [ "\t" ] = "\\t", } local escape_char_map_inv = { [ "\\/" ] = "/" } for k, v in pairs(escape_char_map) do - escape_char_map_inv[v] = k + escape_char_map_inv[v] = k end local function escape_char(c) - return escape_char_map[c] or string.format("\\u%04x", c:byte()) + return escape_char_map[c] or string.format("\\u%04x", c:byte()) end local function encode_nil(val) - return "null" + return "null" end local function encode_table(val, stack) - local res = {} - stack = stack or {} - - -- Circular reference? - if stack[val] then error("circular reference") end - - stack[val] = true - - if val[1] ~= nil or next(val) == nil then - -- Treat as array -- check keys are valid and it is not sparse - local n = 0 - for k in pairs(val) do - if type(k) ~= "number" then - error("invalid table: mixed or invalid key types") - end - n = n + 1 - end - if n ~= #val then - error("invalid table: sparse array") - end - -- Encode - for i, v in ipairs(val) do - table.insert(res, encode(v, stack)) - end - stack[val] = nil - return "[" .. table.concat(res, ",") .. "]" - - else - -- Treat as an object - for k, v in pairs(val) do - if type(k) ~= "string" then - error("invalid table: mixed or invalid key types") - end - table.insert(res, encode(k, stack) .. ":" .. encode(v, stack)) - end - stack[val] = nil - return "{" .. table.concat(res, ",") .. "}" + local res = {} + stack = stack or {} + + -- Circular reference? + if stack[val] then error("circular reference") end + + stack[val] = true + + if val[1] ~= nil or next(val) == nil then + -- Treat as array -- check keys are valid and it is not sparse + local n = 0 + for k in pairs(val) do + if type(k) ~= "number" then + error("invalid table: mixed or invalid key types") + end + n = n + 1 + end + if n ~= #val then + error("invalid table: sparse array") + end + -- Encode + for i, v in ipairs(val) do + table.insert(res, encode(v, stack)) end + stack[val] = nil + return "[" .. table.concat(res, ",") .. "]" + + else + -- Treat as an object + for k, v in pairs(val) do + if type(k) ~= "string" then + error("invalid table: mixed or invalid key types") + end + table.insert(res, encode(k, stack) .. ":" .. encode(v, stack)) + end + stack[val] = nil + return "{" .. table.concat(res, ",") .. "}" + end end local function encode_string(val) - return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"' + return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"' end local function encode_number(val) - -- Check for NaN, -inf and inf - if val ~= val or val <= -math.huge or val >= math.huge then - error("unexpected number value '" .. tostring(val) .. "'") - end - return string.format("%.14g", val) + -- Check for NaN, -inf and inf + if val ~= val or val <= -math.huge or val >= math.huge then + error("unexpected number value '" .. tostring(val) .. "'") + end + return string.format("%.14g", val) end local type_func_map = { - [ "nil" ] = encode_nil, - [ "table" ] = encode_table, - [ "string" ] = encode_string, - [ "number" ] = encode_number, - [ "boolean" ] = tostring, + [ "nil" ] = encode_nil, + [ "table" ] = encode_table, + [ "string" ] = encode_string, + [ "number" ] = encode_number, + [ "boolean" ] = tostring, } encode = function(val, stack) - local t = type(val) - local f = type_func_map[t] - if f then - return f(val, stack) - end - error("unexpected type '" .. t .. "'") + local t = type(val) + local f = type_func_map[t] + if f then + return f(val, stack) + end + error("unexpected type '" .. t .. "'") end function json.encode(val) - return ( encode(val) ) + return ( encode(val) ) end @@ -126,257 +126,257 @@ end local parse local function create_set(...) - local res = {} - for i = 1, select("#", ...) do - res[ select(i, ...) ] = true - end - return res + local res = {} + for i = 1, select("#", ...) do + res[ select(i, ...) ] = true + end + return res end -local space_chars = create_set(" ", "\t", "\r", "\n") -local delim_chars = create_set(" ", "\t", "\r", "\n", "]", "}", ",") -local escape_chars = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u") -local literals = create_set("true", "false", "null") +local space_chars = create_set(" ", "\t", "\r", "\n") +local delim_chars = create_set(" ", "\t", "\r", "\n", "]", "}", ",") +local escape_chars = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u") +local literals = create_set("true", "false", "null") local literal_map = { - [ "true" ] = true, - [ "false" ] = false, - [ "null" ] = nil, + [ "true" ] = true, + [ "false" ] = false, + [ "null" ] = nil, } local function next_char(str, idx, set, negate) - for i = idx, #str do - if set[str:sub(i, i)] ~= negate then - return i - end + for i = idx, #str do + if set[str:sub(i, i)] ~= negate then + return i end - return #str + 1 + end + return #str + 1 end local function decode_error(str, idx, msg) - local line_count = 1 - local col_count = 1 - for i = 1, idx - 1 do - col_count = col_count + 1 - if str:sub(i, i) == "\n" then - line_count = line_count + 1 - col_count = 1 - end + local line_count = 1 + local col_count = 1 + for i = 1, idx - 1 do + col_count = col_count + 1 + if str:sub(i, i) == "\n" then + line_count = line_count + 1 + col_count = 1 end - error( string.format("%s at line %d col %d", msg, line_count, col_count) ) + end + error( string.format("%s at line %d col %d", msg, line_count, col_count) ) end local function codepoint_to_utf8(n) - -- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa - local f = math.floor - if n <= 0x7f then - return string.char(n) - elseif n <= 0x7ff then - return string.char(f(n / 64) + 192, n % 64 + 128) - elseif n <= 0xffff then - return string.char(f(n / 4096) + 224, f(n % 4096 / 64) + 128, n % 64 + 128) - elseif n <= 0x10ffff then - return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128, - f(n % 4096 / 64) + 128, n % 64 + 128) - end - error( string.format("invalid unicode codepoint '%x'", n) ) + -- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa + local f = math.floor + if n <= 0x7f then + return string.char(n) + elseif n <= 0x7ff then + return string.char(f(n / 64) + 192, n % 64 + 128) + elseif n <= 0xffff then + return string.char(f(n / 4096) + 224, f(n % 4096 / 64) + 128, n % 64 + 128) + elseif n <= 0x10ffff then + return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128, + f(n % 4096 / 64) + 128, n % 64 + 128) + end + error( string.format("invalid unicode codepoint '%x'", n) ) end local function parse_unicode_escape(s) - local n1 = tonumber( s:sub(3, 6), 16 ) - local n2 = tonumber( s:sub(9, 12), 16 ) - -- Surrogate pair? - if n2 then - return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000) - else - return codepoint_to_utf8(n1) - end + local n1 = tonumber( s:sub(3, 6), 16 ) + local n2 = tonumber( s:sub(9, 12), 16 ) + -- Surrogate pair? + if n2 then + return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000) + else + return codepoint_to_utf8(n1) + end end local function parse_string(str, i) - local has_unicode_escape = false - local has_surrogate_escape = false - local has_escape = false - local last - for j = i + 1, #str do - local x = str:byte(j) - - if x < 32 then - decode_error(str, j, "control character in string") - end - - if last == 92 then -- "\\" (escape char) - if x == 117 then -- "u" (unicode escape sequence) - local hex = str:sub(j + 1, j + 5) - if not hex:find("%x%x%x%x") then - decode_error(str, j, "invalid unicode escape in string") - end - if hex:find("^[dD][89aAbB]") then - has_surrogate_escape = true - else - has_unicode_escape = true - end - else - local c = string.char(x) - if not escape_chars[c] then - decode_error(str, j, "invalid escape char '" .. c .. "' in string") - end - has_escape = true - end - last = nil - - elseif x == 34 then -- '"' (end of string) - local s = str:sub(i + 1, j - 1) - if has_surrogate_escape then - s = s:gsub("\\u[dD][89aAbB]..\\u....", parse_unicode_escape) - end - if has_unicode_escape then - s = s:gsub("\\u....", parse_unicode_escape) - end - if has_escape then - s = s:gsub("\\.", escape_char_map_inv) - end - return s, j + 1 + local has_unicode_escape = false + local has_surrogate_escape = false + local has_escape = false + local last + for j = i + 1, #str do + local x = str:byte(j) + + if x < 32 then + decode_error(str, j, "control character in string") + end + if last == 92 then -- "\\" (escape char) + if x == 117 then -- "u" (unicode escape sequence) + local hex = str:sub(j + 1, j + 5) + if not hex:find("%x%x%x%x") then + decode_error(str, j, "invalid unicode escape in string") + end + if hex:find("^[dD][89aAbB]") then + has_surrogate_escape = true else - last = x + has_unicode_escape = true + end + else + local c = string.char(x) + if not escape_chars[c] then + decode_error(str, j, "invalid escape char '" .. c .. "' in string") end + has_escape = true + end + last = nil + + elseif x == 34 then -- '"' (end of string) + local s = str:sub(i + 1, j - 1) + if has_surrogate_escape then + s = s:gsub("\\u[dD][89aAbB]..\\u....", parse_unicode_escape) + end + if has_unicode_escape then + s = s:gsub("\\u....", parse_unicode_escape) + end + if has_escape then + s = s:gsub("\\.", escape_char_map_inv) + end + return s, j + 1 + + else + last = x end - decode_error(str, i, "expected closing quote for string") + end + decode_error(str, i, "expected closing quote for string") end local function parse_number(str, i) - local x = next_char(str, i, delim_chars) - local s = str:sub(i, x - 1) - local n = tonumber(s) - if not n then - decode_error(str, i, "invalid number '" .. s .. "'") - end - return n, x + local x = next_char(str, i, delim_chars) + local s = str:sub(i, x - 1) + local n = tonumber(s) + if not n then + decode_error(str, i, "invalid number '" .. s .. "'") + end + return n, x end local function parse_literal(str, i) - local x = next_char(str, i, delim_chars) - local word = str:sub(i, x - 1) - if not literals[word] then - decode_error(str, i, "invalid literal '" .. word .. "'") - end - return literal_map[word], x + local x = next_char(str, i, delim_chars) + local word = str:sub(i, x - 1) + if not literals[word] then + decode_error(str, i, "invalid literal '" .. word .. "'") + end + return literal_map[word], x end local function parse_array(str, i) - local res = {} - local n = 1 - i = i + 1 - while 1 do - local x - i = next_char(str, i, space_chars, true) - -- Empty / end of array? - if str:sub(i, i) == "]" then - i = i + 1 - break - end - -- Read token - x, i = parse(str, i) - res[n] = x - n = n + 1 - -- Next token - i = next_char(str, i, space_chars, true) - local chr = str:sub(i, i) - i = i + 1 - if chr == "]" then break end - if chr ~= "," then decode_error(str, i, "expected ']' or ','") end + local res = {} + local n = 1 + i = i + 1 + while 1 do + local x + i = next_char(str, i, space_chars, true) + -- Empty / end of array? + if str:sub(i, i) == "]" then + i = i + 1 + break end - return res, i + -- Read token + x, i = parse(str, i) + res[n] = x + n = n + 1 + -- Next token + i = next_char(str, i, space_chars, true) + local chr = str:sub(i, i) + i = i + 1 + if chr == "]" then break end + if chr ~= "," then decode_error(str, i, "expected ']' or ','") end + end + return res, i end local function parse_object(str, i) - local res = {} - i = i + 1 - while 1 do - local key, val - i = next_char(str, i, space_chars, true) - -- Empty / end of object? - if str:sub(i, i) == "}" then - i = i + 1 - break - end - -- Read key - if str:sub(i, i) ~= '"' then - decode_error(str, i, "expected string for key") - end - key, i = parse(str, i) - -- Read ':' delimiter - i = next_char(str, i, space_chars, true) - if str:sub(i, i) ~= ":" then - decode_error(str, i, "expected ':' after key") - end - i = next_char(str, i + 1, space_chars, true) - -- Read value - val, i = parse(str, i) - -- Set - res[key] = val - -- Next token - i = next_char(str, i, space_chars, true) - local chr = str:sub(i, i) - i = i + 1 - if chr == "}" then break end - if chr ~= "," then decode_error(str, i, "expected '}' or ','") end + local res = {} + i = i + 1 + while 1 do + local key, val + i = next_char(str, i, space_chars, true) + -- Empty / end of object? + if str:sub(i, i) == "}" then + i = i + 1 + break + end + -- Read key + if str:sub(i, i) ~= '"' then + decode_error(str, i, "expected string for key") + end + key, i = parse(str, i) + -- Read ':' delimiter + i = next_char(str, i, space_chars, true) + if str:sub(i, i) ~= ":" then + decode_error(str, i, "expected ':' after key") end - return res, i + i = next_char(str, i + 1, space_chars, true) + -- Read value + val, i = parse(str, i) + -- Set + res[key] = val + -- Next token + i = next_char(str, i, space_chars, true) + local chr = str:sub(i, i) + i = i + 1 + if chr == "}" then break end + if chr ~= "," then decode_error(str, i, "expected '}' or ','") end + end + return res, i end local char_func_map = { - [ '"' ] = parse_string, - [ "0" ] = parse_number, - [ "1" ] = parse_number, - [ "2" ] = parse_number, - [ "3" ] = parse_number, - [ "4" ] = parse_number, - [ "5" ] = parse_number, - [ "6" ] = parse_number, - [ "7" ] = parse_number, - [ "8" ] = parse_number, - [ "9" ] = parse_number, - [ "-" ] = parse_number, - [ "t" ] = parse_literal, - [ "f" ] = parse_literal, - [ "n" ] = parse_literal, - [ "[" ] = parse_array, - [ "{" ] = parse_object, + [ '"' ] = parse_string, + [ "0" ] = parse_number, + [ "1" ] = parse_number, + [ "2" ] = parse_number, + [ "3" ] = parse_number, + [ "4" ] = parse_number, + [ "5" ] = parse_number, + [ "6" ] = parse_number, + [ "7" ] = parse_number, + [ "8" ] = parse_number, + [ "9" ] = parse_number, + [ "-" ] = parse_number, + [ "t" ] = parse_literal, + [ "f" ] = parse_literal, + [ "n" ] = parse_literal, + [ "[" ] = parse_array, + [ "{" ] = parse_object, } parse = function(str, idx) - local chr = str:sub(idx, idx) - local f = char_func_map[chr] - if f then - return f(str, idx) - end - decode_error(str, idx, "unexpected character '" .. chr .. "'") + local chr = str:sub(idx, idx) + local f = char_func_map[chr] + if f then + return f(str, idx) + end + decode_error(str, idx, "unexpected character '" .. chr .. "'") end function json.decode(str) - if type(str) ~= "string" then - error("expected argument of type string, got " .. type(str)) - end - local res, idx = parse(str, next_char(str, 1, space_chars, true)) - idx = next_char(str, idx, space_chars, true) - if idx <= #str then - decode_error(str, idx, "trailing garbage") - end - return res + if type(str) ~= "string" then + error("expected argument of type string, got " .. type(str)) + end + local res, idx = parse(str, next_char(str, 1, space_chars, true)) + idx = next_char(str, idx, space_chars, true) + if idx <= #str then + decode_error(str, idx, "trailing garbage") + end + return res end ------------------------------------------------------------------------------------------------------------------ diff --git a/src/libjin-lua/scripts/utils/json.lua.h b/src/libjin-lua/scripts/utils/json.lua.h index 128c88d..4b95a44 100644 --- a/src/libjin-lua/scripts/utils/json.lua.h +++ b/src/libjin-lua/scripts/utils/json.lua.h @@ -28,517 +28,469 @@ static char json_lua[] = { 45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,108,111,99, 97,108,32,101,110,99,111,100,101,13,10,13,10,108,111,99,97,108,32,101, 115,99,97,112,101,95,99,104,97,114,95,109,97,112,32,61,32,123,13,10, -32,32,32,32,91,32,34,92,92,34,32,93,32,61,32,34,92,92,92,92, -34,44,13,10,32,32,32,32,91,32,34,92,34,34,32,93,32,61,32,34, -92,92,92,34,34,44,13,10,32,32,32,32,91,32,34,92,98,34,32,93, -32,61,32,34,92,92,98,34,44,13,10,32,32,32,32,91,32,34,92,102, -34,32,93,32,61,32,34,92,92,102,34,44,13,10,32,32,32,32,91,32, -34,92,110,34,32,93,32,61,32,34,92,92,110,34,44,13,10,32,32,32, -32,91,32,34,92,114,34,32,93,32,61,32,34,92,92,114,34,44,13,10, -32,32,32,32,91,32,34,92,116,34,32,93,32,61,32,34,92,92,116,34, -44,13,10,125,13,10,13,10,108,111,99,97,108,32,101,115,99,97,112,101, -95,99,104,97,114,95,109,97,112,95,105,110,118,32,61,32,123,32,91,32, -34,92,92,47,34,32,93,32,61,32,34,47,34,32,125,13,10,102,111,114, -32,107,44,32,118,32,105,110,32,112,97,105,114,115,40,101,115,99,97,112, -101,95,99,104,97,114,95,109,97,112,41,32,100,111,13,10,32,32,32,32, -101,115,99,97,112,101,95,99,104,97,114,95,109,97,112,95,105,110,118,91, -118,93,32,61,32,107,13,10,101,110,100,13,10,13,10,13,10,108,111,99, -97,108,32,102,117,110,99,116,105,111,110,32,101,115,99,97,112,101,95,99, -104,97,114,40,99,41,13,10,32,32,32,32,114,101,116,117,114,110,32,101, -115,99,97,112,101,95,99,104,97,114,95,109,97,112,91,99,93,32,111,114, -32,115,116,114,105,110,103,46,102,111,114,109,97,116,40,34,92,92,117,37, -48,52,120,34,44,32,99,58,98,121,116,101,40,41,41,13,10,101,110,100, -13,10,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110, -32,101,110,99,111,100,101,95,110,105,108,40,118,97,108,41,13,10,32,32, +32,32,91,32,34,92,92,34,32,93,32,61,32,34,92,92,92,92,34,44, +13,10,32,32,91,32,34,92,34,34,32,93,32,61,32,34,92,92,92,34, +34,44,13,10,32,32,91,32,34,92,98,34,32,93,32,61,32,34,92,92, +98,34,44,13,10,32,32,91,32,34,92,102,34,32,93,32,61,32,34,92, +92,102,34,44,13,10,32,32,91,32,34,92,110,34,32,93,32,61,32,34, +92,92,110,34,44,13,10,32,32,91,32,34,92,114,34,32,93,32,61,32, +34,92,92,114,34,44,13,10,32,32,91,32,34,92,116,34,32,93,32,61, +32,34,92,92,116,34,44,13,10,125,13,10,13,10,108,111,99,97,108,32, +101,115,99,97,112,101,95,99,104,97,114,95,109,97,112,95,105,110,118,32, +61,32,123,32,91,32,34,92,92,47,34,32,93,32,61,32,34,47,34,32, +125,13,10,102,111,114,32,107,44,32,118,32,105,110,32,112,97,105,114,115, +40,101,115,99,97,112,101,95,99,104,97,114,95,109,97,112,41,32,100,111, +13,10,32,32,101,115,99,97,112,101,95,99,104,97,114,95,109,97,112,95, +105,110,118,91,118,93,32,61,32,107,13,10,101,110,100,13,10,13,10,13, +10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,101,115,99,97, +112,101,95,99,104,97,114,40,99,41,13,10,32,32,114,101,116,117,114,110, +32,101,115,99,97,112,101,95,99,104,97,114,95,109,97,112,91,99,93,32, +111,114,32,115,116,114,105,110,103,46,102,111,114,109,97,116,40,34,92,92, +117,37,48,52,120,34,44,32,99,58,98,121,116,101,40,41,41,13,10,101, +110,100,13,10,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105, +111,110,32,101,110,99,111,100,101,95,110,105,108,40,118,97,108,41,13,10, 32,32,114,101,116,117,114,110,32,34,110,117,108,108,34,13,10,101,110,100, 13,10,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110, 32,101,110,99,111,100,101,95,116,97,98,108,101,40,118,97,108,44,32,115, -116,97,99,107,41,13,10,32,32,32,32,108,111,99,97,108,32,114,101,115, -32,61,32,123,125,13,10,32,32,32,32,115,116,97,99,107,32,61,32,115, -116,97,99,107,32,111,114,32,123,125,13,10,13,10,32,32,32,32,45,45, -32,67,105,114,99,117,108,97,114,32,114,101,102,101,114,101,110,99,101,63, -13,10,32,32,32,32,105,102,32,115,116,97,99,107,91,118,97,108,93,32, -116,104,101,110,32,101,114,114,111,114,40,34,99,105,114,99,117,108,97,114, -32,114,101,102,101,114,101,110,99,101,34,41,32,101,110,100,13,10,13,10, -32,32,32,32,115,116,97,99,107,91,118,97,108,93,32,61,32,116,114,117, -101,13,10,13,10,32,32,32,32,105,102,32,118,97,108,91,49,93,32,126, -61,32,110,105,108,32,111,114,32,110,101,120,116,40,118,97,108,41,32,61, -61,32,110,105,108,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32, -45,45,32,84,114,101,97,116,32,97,115,32,97,114,114,97,121,32,45,45, -32,99,104,101,99,107,32,107,101,121,115,32,97,114,101,32,118,97,108,105, -100,32,97,110,100,32,105,116,32,105,115,32,110,111,116,32,115,112,97,114, -115,101,13,10,32,32,32,32,32,32,32,32,108,111,99,97,108,32,110,32, -61,32,48,13,10,32,32,32,32,32,32,32,32,102,111,114,32,107,32,105, -110,32,112,97,105,114,115,40,118,97,108,41,32,100,111,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,105,102,32,116,121,112,101,40,107,41,32, -126,61,32,34,110,117,109,98,101,114,34,32,116,104,101,110,13,10,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,114,114,111,114,40, -34,105,110,118,97,108,105,100,32,116,97,98,108,101,58,32,109,105,120,101, -100,32,111,114,32,105,110,118,97,108,105,100,32,107,101,121,32,116,121,112, -101,115,34,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,110, -100,13,10,32,32,32,32,32,32,32,32,32,32,32,32,110,32,61,32,110, -32,43,32,49,13,10,32,32,32,32,32,32,32,32,101,110,100,13,10,32, -32,32,32,32,32,32,32,105,102,32,110,32,126,61,32,35,118,97,108,32, -116,104,101,110,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,114, -114,111,114,40,34,105,110,118,97,108,105,100,32,116,97,98,108,101,58,32, -115,112,97,114,115,101,32,97,114,114,97,121,34,41,13,10,32,32,32,32, -32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,45,45,32, -69,110,99,111,100,101,13,10,32,32,32,32,32,32,32,32,102,111,114,32, -105,44,32,118,32,105,110,32,105,112,97,105,114,115,40,118,97,108,41,32, -100,111,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116,97,98,108, -101,46,105,110,115,101,114,116,40,114,101,115,44,32,101,110,99,111,100,101, -40,118,44,32,115,116,97,99,107,41,41,13,10,32,32,32,32,32,32,32, -32,101,110,100,13,10,32,32,32,32,32,32,32,32,115,116,97,99,107,91, -118,97,108,93,32,61,32,110,105,108,13,10,32,32,32,32,32,32,32,32, -114,101,116,117,114,110,32,34,91,34,32,46,46,32,116,97,98,108,101,46, -99,111,110,99,97,116,40,114,101,115,44,32,34,44,34,41,32,46,46,32, -34,93,34,13,10,13,10,32,32,32,32,101,108,115,101,13,10,32,32,32, -32,32,32,32,32,45,45,32,84,114,101,97,116,32,97,115,32,97,110,32, -111,98,106,101,99,116,13,10,32,32,32,32,32,32,32,32,102,111,114,32, -107,44,32,118,32,105,110,32,112,97,105,114,115,40,118,97,108,41,32,100, -111,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,116,121, -112,101,40,107,41,32,126,61,32,34,115,116,114,105,110,103,34,32,116,104, -101,110,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -101,114,114,111,114,40,34,105,110,118,97,108,105,100,32,116,97,98,108,101, -58,32,109,105,120,101,100,32,111,114,32,105,110,118,97,108,105,100,32,107, -101,121,32,116,121,112,101,115,34,41,13,10,32,32,32,32,32,32,32,32, -32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,32,32,32, -32,116,97,98,108,101,46,105,110,115,101,114,116,40,114,101,115,44,32,101, -110,99,111,100,101,40,107,44,32,115,116,97,99,107,41,32,46,46,32,34, -58,34,32,46,46,32,101,110,99,111,100,101,40,118,44,32,115,116,97,99, -107,41,41,13,10,32,32,32,32,32,32,32,32,101,110,100,13,10,32,32, -32,32,32,32,32,32,115,116,97,99,107,91,118,97,108,93,32,61,32,110, -105,108,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,34, -123,34,32,46,46,32,116,97,98,108,101,46,99,111,110,99,97,116,40,114, -101,115,44,32,34,44,34,41,32,46,46,32,34,125,34,13,10,32,32,32, -32,101,110,100,13,10,101,110,100,13,10,13,10,13,10,108,111,99,97,108, -32,102,117,110,99,116,105,111,110,32,101,110,99,111,100,101,95,115,116,114, -105,110,103,40,118,97,108,41,13,10,32,32,32,32,114,101,116,117,114,110, -32,39,34,39,32,46,46,32,118,97,108,58,103,115,117,98,40,39,91,37, -122,92,49,45,92,51,49,92,92,34,93,39,44,32,101,115,99,97,112,101, -95,99,104,97,114,41,32,46,46,32,39,34,39,13,10,101,110,100,13,10, -13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,101, -110,99,111,100,101,95,110,117,109,98,101,114,40,118,97,108,41,13,10,32, -32,32,32,45,45,32,67,104,101,99,107,32,102,111,114,32,78,97,78,44, -32,45,105,110,102,32,97,110,100,32,105,110,102,13,10,32,32,32,32,105, -102,32,118,97,108,32,126,61,32,118,97,108,32,111,114,32,118,97,108,32, -60,61,32,45,109,97,116,104,46,104,117,103,101,32,111,114,32,118,97,108, -32,62,61,32,109,97,116,104,46,104,117,103,101,32,116,104,101,110,13,10, -32,32,32,32,32,32,32,32,101,114,114,111,114,40,34,117,110,101,120,112, -101,99,116,101,100,32,110,117,109,98,101,114,32,118,97,108,117,101,32,39, -34,32,46,46,32,116,111,115,116,114,105,110,103,40,118,97,108,41,32,46, -46,32,34,39,34,41,13,10,32,32,32,32,101,110,100,13,10,32,32,32, -32,114,101,116,117,114,110,32,115,116,114,105,110,103,46,102,111,114,109,97, -116,40,34,37,46,49,52,103,34,44,32,118,97,108,41,13,10,101,110,100, -13,10,13,10,13,10,108,111,99,97,108,32,116,121,112,101,95,102,117,110, -99,95,109,97,112,32,61,32,123,13,10,32,32,32,32,91,32,34,110,105, -108,34,32,32,32,32,32,32,32,32,32,93,32,61,32,101,110,99,111,100, -101,95,110,105,108,44,13,10,32,32,32,32,91,32,34,116,97,98,108,101, -34,32,32,32,32,32,93,32,61,32,101,110,99,111,100,101,95,116,97,98, -108,101,44,13,10,32,32,32,32,91,32,34,115,116,114,105,110,103,34,32, -32,32,32,93,32,61,32,101,110,99,111,100,101,95,115,116,114,105,110,103, -44,13,10,32,32,32,32,91,32,34,110,117,109,98,101,114,34,32,32,32, -32,93,32,61,32,101,110,99,111,100,101,95,110,117,109,98,101,114,44,13, -10,32,32,32,32,91,32,34,98,111,111,108,101,97,110,34,32,93,32,61, -32,116,111,115,116,114,105,110,103,44,13,10,125,13,10,13,10,13,10,101, -110,99,111,100,101,32,61,32,102,117,110,99,116,105,111,110,40,118,97,108, -44,32,115,116,97,99,107,41,13,10,32,32,32,32,108,111,99,97,108,32, -116,32,61,32,116,121,112,101,40,118,97,108,41,13,10,32,32,32,32,108, -111,99,97,108,32,102,32,61,32,116,121,112,101,95,102,117,110,99,95,109, -97,112,91,116,93,13,10,32,32,32,32,105,102,32,102,32,116,104,101,110, -13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,102,40,118, -97,108,44,32,115,116,97,99,107,41,13,10,32,32,32,32,101,110,100,13, -10,32,32,32,32,101,114,114,111,114,40,34,117,110,101,120,112,101,99,116, -101,100,32,116,121,112,101,32,39,34,32,46,46,32,116,32,46,46,32,34, -39,34,41,13,10,101,110,100,13,10,13,10,13,10,102,117,110,99,116,105, -111,110,32,106,115,111,110,46,101,110,99,111,100,101,40,118,97,108,41,13, -10,32,32,32,32,114,101,116,117,114,110,32,40,32,101,110,99,111,100,101, -40,118,97,108,41,32,41,13,10,101,110,100,13,10,13,10,13,10,45,45, +116,97,99,107,41,13,10,32,32,108,111,99,97,108,32,114,101,115,32,61, +32,123,125,13,10,32,32,115,116,97,99,107,32,61,32,115,116,97,99,107, +32,111,114,32,123,125,13,10,13,10,32,32,45,45,32,67,105,114,99,117, +108,97,114,32,114,101,102,101,114,101,110,99,101,63,13,10,32,32,105,102, +32,115,116,97,99,107,91,118,97,108,93,32,116,104,101,110,32,101,114,114, +111,114,40,34,99,105,114,99,117,108,97,114,32,114,101,102,101,114,101,110, +99,101,34,41,32,101,110,100,13,10,13,10,32,32,115,116,97,99,107,91, +118,97,108,93,32,61,32,116,114,117,101,13,10,13,10,32,32,105,102,32, +118,97,108,91,49,93,32,126,61,32,110,105,108,32,111,114,32,110,101,120, +116,40,118,97,108,41,32,61,61,32,110,105,108,32,116,104,101,110,13,10, +32,32,32,32,45,45,32,84,114,101,97,116,32,97,115,32,97,114,114,97, +121,32,45,45,32,99,104,101,99,107,32,107,101,121,115,32,97,114,101,32, +118,97,108,105,100,32,97,110,100,32,105,116,32,105,115,32,110,111,116,32, +115,112,97,114,115,101,13,10,32,32,32,32,108,111,99,97,108,32,110,32, +61,32,48,13,10,32,32,32,32,102,111,114,32,107,32,105,110,32,112,97, +105,114,115,40,118,97,108,41,32,100,111,13,10,32,32,32,32,32,32,105, +102,32,116,121,112,101,40,107,41,32,126,61,32,34,110,117,109,98,101,114, +34,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,101,114,114,111, +114,40,34,105,110,118,97,108,105,100,32,116,97,98,108,101,58,32,109,105, +120,101,100,32,111,114,32,105,110,118,97,108,105,100,32,107,101,121,32,116, +121,112,101,115,34,41,13,10,32,32,32,32,32,32,101,110,100,13,10,32, +32,32,32,32,32,110,32,61,32,110,32,43,32,49,13,10,32,32,32,32, +101,110,100,13,10,32,32,32,32,105,102,32,110,32,126,61,32,35,118,97, +108,32,116,104,101,110,13,10,32,32,32,32,32,32,101,114,114,111,114,40, +34,105,110,118,97,108,105,100,32,116,97,98,108,101,58,32,115,112,97,114, +115,101,32,97,114,114,97,121,34,41,13,10,32,32,32,32,101,110,100,13, +10,32,32,32,32,45,45,32,69,110,99,111,100,101,13,10,32,32,32,32, +102,111,114,32,105,44,32,118,32,105,110,32,105,112,97,105,114,115,40,118, +97,108,41,32,100,111,13,10,32,32,32,32,32,32,116,97,98,108,101,46, +105,110,115,101,114,116,40,114,101,115,44,32,101,110,99,111,100,101,40,118, +44,32,115,116,97,99,107,41,41,13,10,32,32,32,32,101,110,100,13,10, +32,32,32,32,115,116,97,99,107,91,118,97,108,93,32,61,32,110,105,108, +13,10,32,32,32,32,114,101,116,117,114,110,32,34,91,34,32,46,46,32, +116,97,98,108,101,46,99,111,110,99,97,116,40,114,101,115,44,32,34,44, +34,41,32,46,46,32,34,93,34,13,10,13,10,32,32,101,108,115,101,13, +10,32,32,32,32,45,45,32,84,114,101,97,116,32,97,115,32,97,110,32, +111,98,106,101,99,116,13,10,32,32,32,32,102,111,114,32,107,44,32,118, +32,105,110,32,112,97,105,114,115,40,118,97,108,41,32,100,111,13,10,32, +32,32,32,32,32,105,102,32,116,121,112,101,40,107,41,32,126,61,32,34, +115,116,114,105,110,103,34,32,116,104,101,110,13,10,32,32,32,32,32,32, +32,32,101,114,114,111,114,40,34,105,110,118,97,108,105,100,32,116,97,98, +108,101,58,32,109,105,120,101,100,32,111,114,32,105,110,118,97,108,105,100, +32,107,101,121,32,116,121,112,101,115,34,41,13,10,32,32,32,32,32,32, +101,110,100,13,10,32,32,32,32,32,32,116,97,98,108,101,46,105,110,115, +101,114,116,40,114,101,115,44,32,101,110,99,111,100,101,40,107,44,32,115, +116,97,99,107,41,32,46,46,32,34,58,34,32,46,46,32,101,110,99,111, +100,101,40,118,44,32,115,116,97,99,107,41,41,13,10,32,32,32,32,101, +110,100,13,10,32,32,32,32,115,116,97,99,107,91,118,97,108,93,32,61, +32,110,105,108,13,10,32,32,32,32,114,101,116,117,114,110,32,34,123,34, +32,46,46,32,116,97,98,108,101,46,99,111,110,99,97,116,40,114,101,115, +44,32,34,44,34,41,32,46,46,32,34,125,34,13,10,32,32,101,110,100, +13,10,101,110,100,13,10,13,10,13,10,108,111,99,97,108,32,102,117,110, +99,116,105,111,110,32,101,110,99,111,100,101,95,115,116,114,105,110,103,40, +118,97,108,41,13,10,32,32,114,101,116,117,114,110,32,39,34,39,32,46, +46,32,118,97,108,58,103,115,117,98,40,39,91,37,122,92,49,45,92,51, +49,92,92,34,93,39,44,32,101,115,99,97,112,101,95,99,104,97,114,41, +32,46,46,32,39,34,39,13,10,101,110,100,13,10,13,10,13,10,108,111, +99,97,108,32,102,117,110,99,116,105,111,110,32,101,110,99,111,100,101,95, +110,117,109,98,101,114,40,118,97,108,41,13,10,32,32,45,45,32,67,104, +101,99,107,32,102,111,114,32,78,97,78,44,32,45,105,110,102,32,97,110, +100,32,105,110,102,13,10,32,32,105,102,32,118,97,108,32,126,61,32,118, +97,108,32,111,114,32,118,97,108,32,60,61,32,45,109,97,116,104,46,104, +117,103,101,32,111,114,32,118,97,108,32,62,61,32,109,97,116,104,46,104, +117,103,101,32,116,104,101,110,13,10,32,32,32,32,101,114,114,111,114,40, +34,117,110,101,120,112,101,99,116,101,100,32,110,117,109,98,101,114,32,118, +97,108,117,101,32,39,34,32,46,46,32,116,111,115,116,114,105,110,103,40, +118,97,108,41,32,46,46,32,34,39,34,41,13,10,32,32,101,110,100,13, +10,32,32,114,101,116,117,114,110,32,115,116,114,105,110,103,46,102,111,114, +109,97,116,40,34,37,46,49,52,103,34,44,32,118,97,108,41,13,10,101, +110,100,13,10,13,10,13,10,108,111,99,97,108,32,116,121,112,101,95,102, +117,110,99,95,109,97,112,32,61,32,123,13,10,32,32,91,32,34,110,105, +108,34,32,32,32,32,32,93,32,61,32,101,110,99,111,100,101,95,110,105, +108,44,13,10,32,32,91,32,34,116,97,98,108,101,34,32,32,32,93,32, +61,32,101,110,99,111,100,101,95,116,97,98,108,101,44,13,10,32,32,91, +32,34,115,116,114,105,110,103,34,32,32,93,32,61,32,101,110,99,111,100, +101,95,115,116,114,105,110,103,44,13,10,32,32,91,32,34,110,117,109,98, +101,114,34,32,32,93,32,61,32,101,110,99,111,100,101,95,110,117,109,98, +101,114,44,13,10,32,32,91,32,34,98,111,111,108,101,97,110,34,32,93, +32,61,32,116,111,115,116,114,105,110,103,44,13,10,125,13,10,13,10,13, +10,101,110,99,111,100,101,32,61,32,102,117,110,99,116,105,111,110,40,118, +97,108,44,32,115,116,97,99,107,41,13,10,32,32,108,111,99,97,108,32, +116,32,61,32,116,121,112,101,40,118,97,108,41,13,10,32,32,108,111,99, +97,108,32,102,32,61,32,116,121,112,101,95,102,117,110,99,95,109,97,112, +91,116,93,13,10,32,32,105,102,32,102,32,116,104,101,110,13,10,32,32, +32,32,114,101,116,117,114,110,32,102,40,118,97,108,44,32,115,116,97,99, +107,41,13,10,32,32,101,110,100,13,10,32,32,101,114,114,111,114,40,34, +117,110,101,120,112,101,99,116,101,100,32,116,121,112,101,32,39,34,32,46, +46,32,116,32,46,46,32,34,39,34,41,13,10,101,110,100,13,10,13,10, +13,10,102,117,110,99,116,105,111,110,32,106,115,111,110,46,101,110,99,111, +100,101,40,118,97,108,41,13,10,32,32,114,101,116,117,114,110,32,40,32, +101,110,99,111,100,101,40,118,97,108,41,32,41,13,10,101,110,100,13,10, +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,13,10,45, -45,32,68,101,99,111,100,101,13,10,45,45,45,45,45,45,45,45,45,45, +45,45,45,13,10,45,45,32,68,101,99,111,100,101,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,13,10,13,10,108,111,99,97,108,32,112, -97,114,115,101,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105, -111,110,32,99,114,101,97,116,101,95,115,101,116,40,46,46,46,41,13,10, -32,32,32,32,108,111,99,97,108,32,114,101,115,32,61,32,123,125,13,10, -32,32,32,32,102,111,114,32,105,32,61,32,49,44,32,115,101,108,101,99, -116,40,34,35,34,44,32,46,46,46,41,32,100,111,13,10,32,32,32,32, -32,32,32,32,114,101,115,91,32,115,101,108,101,99,116,40,105,44,32,46, -46,46,41,32,93,32,61,32,116,114,117,101,13,10,32,32,32,32,101,110, -100,13,10,32,32,32,32,114,101,116,117,114,110,32,114,101,115,13,10,101, -110,100,13,10,13,10,108,111,99,97,108,32,115,112,97,99,101,95,99,104, -97,114,115,32,32,32,32,32,61,32,99,114,101,97,116,101,95,115,101,116, -40,34,32,34,44,32,34,92,116,34,44,32,34,92,114,34,44,32,34,92, -110,34,41,13,10,108,111,99,97,108,32,100,101,108,105,109,95,99,104,97, -114,115,32,32,32,32,32,61,32,99,114,101,97,116,101,95,115,101,116,40, -34,32,34,44,32,34,92,116,34,44,32,34,92,114,34,44,32,34,92,110, -34,44,32,34,93,34,44,32,34,125,34,44,32,34,44,34,41,13,10,108, -111,99,97,108,32,101,115,99,97,112,101,95,99,104,97,114,115,32,32,32, -32,61,32,99,114,101,97,116,101,95,115,101,116,40,34,92,92,34,44,32, -34,47,34,44,32,39,34,39,44,32,34,98,34,44,32,34,102,34,44,32, -34,110,34,44,32,34,114,34,44,32,34,116,34,44,32,34,117,34,41,13, -10,108,111,99,97,108,32,108,105,116,101,114,97,108,115,32,32,32,32,32, -32,32,32,32,32,32,32,61,32,99,114,101,97,116,101,95,115,101,116,40, -34,116,114,117,101,34,44,32,34,102,97,108,115,101,34,44,32,34,110,117, -108,108,34,41,13,10,13,10,108,111,99,97,108,32,108,105,116,101,114,97, -108,95,109,97,112,32,61,32,123,13,10,32,32,32,32,91,32,34,116,114, -117,101,34,32,32,32,32,93,32,61,32,116,114,117,101,44,13,10,32,32, -32,32,91,32,34,102,97,108,115,101,34,32,93,32,61,32,102,97,108,115, -101,44,13,10,32,32,32,32,91,32,34,110,117,108,108,34,32,32,32,32, -93,32,61,32,110,105,108,44,13,10,125,13,10,13,10,13,10,108,111,99, -97,108,32,102,117,110,99,116,105,111,110,32,110,101,120,116,95,99,104,97, -114,40,115,116,114,44,32,105,100,120,44,32,115,101,116,44,32,110,101,103, -97,116,101,41,13,10,32,32,32,32,102,111,114,32,105,32,61,32,105,100, -120,44,32,35,115,116,114,32,100,111,13,10,32,32,32,32,32,32,32,32, -105,102,32,115,101,116,91,115,116,114,58,115,117,98,40,105,44,32,105,41, -93,32,126,61,32,110,101,103,97,116,101,32,116,104,101,110,13,10,32,32, -32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,105,13,10, -32,32,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,101,110,100, -13,10,32,32,32,32,114,101,116,117,114,110,32,35,115,116,114,32,43,32, -49,13,10,101,110,100,13,10,13,10,13,10,108,111,99,97,108,32,102,117, -110,99,116,105,111,110,32,100,101,99,111,100,101,95,101,114,114,111,114,40, -115,116,114,44,32,105,100,120,44,32,109,115,103,41,13,10,32,32,32,32, -108,111,99,97,108,32,108,105,110,101,95,99,111,117,110,116,32,61,32,49, -13,10,32,32,32,32,108,111,99,97,108,32,99,111,108,95,99,111,117,110, -116,32,61,32,49,13,10,32,32,32,32,102,111,114,32,105,32,61,32,49, -44,32,105,100,120,32,45,32,49,32,100,111,13,10,32,32,32,32,32,32, -32,32,99,111,108,95,99,111,117,110,116,32,61,32,99,111,108,95,99,111, -117,110,116,32,43,32,49,13,10,32,32,32,32,32,32,32,32,105,102,32, -115,116,114,58,115,117,98,40,105,44,32,105,41,32,61,61,32,34,92,110, -34,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,32,32,32,32, -108,105,110,101,95,99,111,117,110,116,32,61,32,108,105,110,101,95,99,111, -117,110,116,32,43,32,49,13,10,32,32,32,32,32,32,32,32,32,32,32, -32,99,111,108,95,99,111,117,110,116,32,61,32,49,13,10,32,32,32,32, -32,32,32,32,101,110,100,13,10,32,32,32,32,101,110,100,13,10,32,32, -32,32,101,114,114,111,114,40,32,115,116,114,105,110,103,46,102,111,114,109, -97,116,40,34,37,115,32,97,116,32,108,105,110,101,32,37,100,32,99,111, -108,32,37,100,34,44,32,109,115,103,44,32,108,105,110,101,95,99,111,117, -110,116,44,32,99,111,108,95,99,111,117,110,116,41,32,41,13,10,101,110, -100,13,10,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111, -110,32,99,111,100,101,112,111,105,110,116,95,116,111,95,117,116,102,56,40, -110,41,13,10,32,32,32,32,45,45,32,104,116,116,112,58,47,47,115,99, -114,105,112,116,115,46,115,105,108,46,111,114,103,47,99,109,115,47,115,99, -114,105,112,116,115,47,112,97,103,101,46,112,104,112,63,115,105,116,101,95, -105,100,61,110,114,115,105,38,105,100,61,105,119,115,45,97,112,112,101,110, -100,105,120,97,13,10,32,32,32,32,108,111,99,97,108,32,102,32,61,32, -109,97,116,104,46,102,108,111,111,114,13,10,32,32,32,32,105,102,32,110, -32,60,61,32,48,120,55,102,32,116,104,101,110,13,10,32,32,32,32,32, -32,32,32,114,101,116,117,114,110,32,115,116,114,105,110,103,46,99,104,97, -114,40,110,41,13,10,32,32,32,32,101,108,115,101,105,102,32,110,32,60, -61,32,48,120,55,102,102,32,116,104,101,110,13,10,32,32,32,32,32,32, -32,32,114,101,116,117,114,110,32,115,116,114,105,110,103,46,99,104,97,114, -40,102,40,110,32,47,32,54,52,41,32,43,32,49,57,50,44,32,110,32, -37,32,54,52,32,43,32,49,50,56,41,13,10,32,32,32,32,101,108,115, +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,112,97,114,115,101,13,10,13,10,108,111,99,97,108,32, +102,117,110,99,116,105,111,110,32,99,114,101,97,116,101,95,115,101,116,40, +46,46,46,41,13,10,32,32,108,111,99,97,108,32,114,101,115,32,61,32, +123,125,13,10,32,32,102,111,114,32,105,32,61,32,49,44,32,115,101,108, +101,99,116,40,34,35,34,44,32,46,46,46,41,32,100,111,13,10,32,32, +32,32,114,101,115,91,32,115,101,108,101,99,116,40,105,44,32,46,46,46, +41,32,93,32,61,32,116,114,117,101,13,10,32,32,101,110,100,13,10,32, +32,114,101,116,117,114,110,32,114,101,115,13,10,101,110,100,13,10,13,10, +108,111,99,97,108,32,115,112,97,99,101,95,99,104,97,114,115,32,32,32, +61,32,99,114,101,97,116,101,95,115,101,116,40,34,32,34,44,32,34,92, +116,34,44,32,34,92,114,34,44,32,34,92,110,34,41,13,10,108,111,99, +97,108,32,100,101,108,105,109,95,99,104,97,114,115,32,32,32,61,32,99, +114,101,97,116,101,95,115,101,116,40,34,32,34,44,32,34,92,116,34,44, +32,34,92,114,34,44,32,34,92,110,34,44,32,34,93,34,44,32,34,125, +34,44,32,34,44,34,41,13,10,108,111,99,97,108,32,101,115,99,97,112, +101,95,99,104,97,114,115,32,32,61,32,99,114,101,97,116,101,95,115,101, +116,40,34,92,92,34,44,32,34,47,34,44,32,39,34,39,44,32,34,98, +34,44,32,34,102,34,44,32,34,110,34,44,32,34,114,34,44,32,34,116, +34,44,32,34,117,34,41,13,10,108,111,99,97,108,32,108,105,116,101,114, +97,108,115,32,32,32,32,32,32,61,32,99,114,101,97,116,101,95,115,101, +116,40,34,116,114,117,101,34,44,32,34,102,97,108,115,101,34,44,32,34, +110,117,108,108,34,41,13,10,13,10,108,111,99,97,108,32,108,105,116,101, +114,97,108,95,109,97,112,32,61,32,123,13,10,32,32,91,32,34,116,114, +117,101,34,32,32,93,32,61,32,116,114,117,101,44,13,10,32,32,91,32, +34,102,97,108,115,101,34,32,93,32,61,32,102,97,108,115,101,44,13,10, +32,32,91,32,34,110,117,108,108,34,32,32,93,32,61,32,110,105,108,44, +13,10,125,13,10,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116, +105,111,110,32,110,101,120,116,95,99,104,97,114,40,115,116,114,44,32,105, +100,120,44,32,115,101,116,44,32,110,101,103,97,116,101,41,13,10,32,32, +102,111,114,32,105,32,61,32,105,100,120,44,32,35,115,116,114,32,100,111, +13,10,32,32,32,32,105,102,32,115,101,116,91,115,116,114,58,115,117,98, +40,105,44,32,105,41,93,32,126,61,32,110,101,103,97,116,101,32,116,104, +101,110,13,10,32,32,32,32,32,32,114,101,116,117,114,110,32,105,13,10, +32,32,32,32,101,110,100,13,10,32,32,101,110,100,13,10,32,32,114,101, +116,117,114,110,32,35,115,116,114,32,43,32,49,13,10,101,110,100,13,10, +13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,100, +101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44,32,105,100,120, +44,32,109,115,103,41,13,10,32,32,108,111,99,97,108,32,108,105,110,101, +95,99,111,117,110,116,32,61,32,49,13,10,32,32,108,111,99,97,108,32, +99,111,108,95,99,111,117,110,116,32,61,32,49,13,10,32,32,102,111,114, +32,105,32,61,32,49,44,32,105,100,120,32,45,32,49,32,100,111,13,10, +32,32,32,32,99,111,108,95,99,111,117,110,116,32,61,32,99,111,108,95, +99,111,117,110,116,32,43,32,49,13,10,32,32,32,32,105,102,32,115,116, +114,58,115,117,98,40,105,44,32,105,41,32,61,61,32,34,92,110,34,32, +116,104,101,110,13,10,32,32,32,32,32,32,108,105,110,101,95,99,111,117, +110,116,32,61,32,108,105,110,101,95,99,111,117,110,116,32,43,32,49,13, +10,32,32,32,32,32,32,99,111,108,95,99,111,117,110,116,32,61,32,49, +13,10,32,32,32,32,101,110,100,13,10,32,32,101,110,100,13,10,32,32, +101,114,114,111,114,40,32,115,116,114,105,110,103,46,102,111,114,109,97,116, +40,34,37,115,32,97,116,32,108,105,110,101,32,37,100,32,99,111,108,32, +37,100,34,44,32,109,115,103,44,32,108,105,110,101,95,99,111,117,110,116, +44,32,99,111,108,95,99,111,117,110,116,41,32,41,13,10,101,110,100,13, +10,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32, +99,111,100,101,112,111,105,110,116,95,116,111,95,117,116,102,56,40,110,41, +13,10,32,32,45,45,32,104,116,116,112,58,47,47,115,99,114,105,112,116, +115,46,115,105,108,46,111,114,103,47,99,109,115,47,115,99,114,105,112,116, +115,47,112,97,103,101,46,112,104,112,63,115,105,116,101,95,105,100,61,110, +114,115,105,38,105,100,61,105,119,115,45,97,112,112,101,110,100,105,120,97, +13,10,32,32,108,111,99,97,108,32,102,32,61,32,109,97,116,104,46,102, +108,111,111,114,13,10,32,32,105,102,32,110,32,60,61,32,48,120,55,102, +32,116,104,101,110,13,10,32,32,32,32,114,101,116,117,114,110,32,115,116, +114,105,110,103,46,99,104,97,114,40,110,41,13,10,32,32,101,108,115,101, +105,102,32,110,32,60,61,32,48,120,55,102,102,32,116,104,101,110,13,10, +32,32,32,32,114,101,116,117,114,110,32,115,116,114,105,110,103,46,99,104, +97,114,40,102,40,110,32,47,32,54,52,41,32,43,32,49,57,50,44,32, +110,32,37,32,54,52,32,43,32,49,50,56,41,13,10,32,32,101,108,115, 101,105,102,32,110,32,60,61,32,48,120,102,102,102,102,32,116,104,101,110, -13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,115,116,114, -105,110,103,46,99,104,97,114,40,102,40,110,32,47,32,52,48,57,54,41, -32,43,32,50,50,52,44,32,102,40,110,32,37,32,52,48,57,54,32,47, +13,10,32,32,32,32,114,101,116,117,114,110,32,115,116,114,105,110,103,46, +99,104,97,114,40,102,40,110,32,47,32,52,48,57,54,41,32,43,32,50, +50,52,44,32,102,40,110,32,37,32,52,48,57,54,32,47,32,54,52,41, +32,43,32,49,50,56,44,32,110,32,37,32,54,52,32,43,32,49,50,56, +41,13,10,32,32,101,108,115,101,105,102,32,110,32,60,61,32,48,120,49, +48,102,102,102,102,32,116,104,101,110,13,10,32,32,32,32,114,101,116,117, +114,110,32,115,116,114,105,110,103,46,99,104,97,114,40,102,40,110,32,47, +32,50,54,50,49,52,52,41,32,43,32,50,52,48,44,32,102,40,110,32, +37,32,50,54,50,49,52,52,32,47,32,52,48,57,54,41,32,43,32,49, +50,56,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,102,40,110,32,37,32,52,48,57,54,32,47, 32,54,52,41,32,43,32,49,50,56,44,32,110,32,37,32,54,52,32,43, -32,49,50,56,41,13,10,32,32,32,32,101,108,115,101,105,102,32,110,32, -60,61,32,48,120,49,48,102,102,102,102,32,116,104,101,110,13,10,32,32, -32,32,32,32,32,32,114,101,116,117,114,110,32,115,116,114,105,110,103,46, -99,104,97,114,40,102,40,110,32,47,32,50,54,50,49,52,52,41,32,43, -32,50,52,48,44,32,102,40,110,32,37,32,50,54,50,49,52,52,32,47, -32,52,48,57,54,41,32,43,32,49,50,56,44,13,10,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -102,40,110,32,37,32,52,48,57,54,32,47,32,54,52,41,32,43,32,49, -50,56,44,32,110,32,37,32,54,52,32,43,32,49,50,56,41,13,10,32, -32,32,32,101,110,100,13,10,32,32,32,32,101,114,114,111,114,40,32,115, -116,114,105,110,103,46,102,111,114,109,97,116,40,34,105,110,118,97,108,105, -100,32,117,110,105,99,111,100,101,32,99,111,100,101,112,111,105,110,116,32, -39,37,120,39,34,44,32,110,41,32,41,13,10,101,110,100,13,10,13,10, -13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,112,97,114, -115,101,95,117,110,105,99,111,100,101,95,101,115,99,97,112,101,40,115,41, -13,10,32,32,32,32,108,111,99,97,108,32,110,49,32,61,32,116,111,110, -117,109,98,101,114,40,32,115,58,115,117,98,40,51,44,32,54,41,44,32, -32,32,32,49,54,32,41,13,10,32,32,32,32,108,111,99,97,108,32,110, -50,32,61,32,116,111,110,117,109,98,101,114,40,32,115,58,115,117,98,40, -57,44,32,49,50,41,44,32,49,54,32,41,13,10,32,32,32,32,45,45, -32,83,117,114,114,111,103,97,116,101,32,112,97,105,114,63,13,10,32,32, -32,32,105,102,32,110,50,32,116,104,101,110,13,10,32,32,32,32,32,32, -32,32,114,101,116,117,114,110,32,99,111,100,101,112,111,105,110,116,95,116, -111,95,117,116,102,56,40,40,110,49,32,45,32,48,120,100,56,48,48,41, -32,42,32,48,120,52,48,48,32,43,32,40,110,50,32,45,32,48,120,100, -99,48,48,41,32,43,32,48,120,49,48,48,48,48,41,13,10,32,32,32, -32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114, -110,32,99,111,100,101,112,111,105,110,116,95,116,111,95,117,116,102,56,40, -110,49,41,13,10,32,32,32,32,101,110,100,13,10,101,110,100,13,10,13, -10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,112,97, -114,115,101,95,115,116,114,105,110,103,40,115,116,114,44,32,105,41,13,10, -32,32,32,32,108,111,99,97,108,32,104,97,115,95,117,110,105,99,111,100, -101,95,101,115,99,97,112,101,32,61,32,102,97,108,115,101,13,10,32,32, -32,32,108,111,99,97,108,32,104,97,115,95,115,117,114,114,111,103,97,116, +32,49,50,56,41,13,10,32,32,101,110,100,13,10,32,32,101,114,114,111, +114,40,32,115,116,114,105,110,103,46,102,111,114,109,97,116,40,34,105,110, +118,97,108,105,100,32,117,110,105,99,111,100,101,32,99,111,100,101,112,111, +105,110,116,32,39,37,120,39,34,44,32,110,41,32,41,13,10,101,110,100, +13,10,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110, +32,112,97,114,115,101,95,117,110,105,99,111,100,101,95,101,115,99,97,112, +101,40,115,41,13,10,32,32,108,111,99,97,108,32,110,49,32,61,32,116, +111,110,117,109,98,101,114,40,32,115,58,115,117,98,40,51,44,32,54,41, +44,32,32,49,54,32,41,13,10,32,32,108,111,99,97,108,32,110,50,32, +61,32,116,111,110,117,109,98,101,114,40,32,115,58,115,117,98,40,57,44, +32,49,50,41,44,32,49,54,32,41,13,10,32,32,45,45,32,83,117,114, +114,111,103,97,116,101,32,112,97,105,114,63,13,10,32,32,105,102,32,110, +50,32,116,104,101,110,13,10,32,32,32,32,114,101,116,117,114,110,32,99, +111,100,101,112,111,105,110,116,95,116,111,95,117,116,102,56,40,40,110,49, +32,45,32,48,120,100,56,48,48,41,32,42,32,48,120,52,48,48,32,43, +32,40,110,50,32,45,32,48,120,100,99,48,48,41,32,43,32,48,120,49, +48,48,48,48,41,13,10,32,32,101,108,115,101,13,10,32,32,32,32,114, +101,116,117,114,110,32,99,111,100,101,112,111,105,110,116,95,116,111,95,117, +116,102,56,40,110,49,41,13,10,32,32,101,110,100,13,10,101,110,100,13, +10,13,10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32, +112,97,114,115,101,95,115,116,114,105,110,103,40,115,116,114,44,32,105,41, +13,10,32,32,108,111,99,97,108,32,104,97,115,95,117,110,105,99,111,100, 101,95,101,115,99,97,112,101,32,61,32,102,97,108,115,101,13,10,32,32, -32,32,108,111,99,97,108,32,104,97,115,95,101,115,99,97,112,101,32,61, -32,102,97,108,115,101,13,10,32,32,32,32,108,111,99,97,108,32,108,97, -115,116,13,10,32,32,32,32,102,111,114,32,106,32,61,32,105,32,43,32, -49,44,32,35,115,116,114,32,100,111,13,10,32,32,32,32,32,32,32,32, -108,111,99,97,108,32,120,32,61,32,115,116,114,58,98,121,116,101,40,106, -41,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,120,32,60,32, -51,50,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,32,32,32, +108,111,99,97,108,32,104,97,115,95,115,117,114,114,111,103,97,116,101,95, +101,115,99,97,112,101,32,61,32,102,97,108,115,101,13,10,32,32,108,111, +99,97,108,32,104,97,115,95,101,115,99,97,112,101,32,61,32,102,97,108, +115,101,13,10,32,32,108,111,99,97,108,32,108,97,115,116,13,10,32,32, +102,111,114,32,106,32,61,32,105,32,43,32,49,44,32,35,115,116,114,32, +100,111,13,10,32,32,32,32,108,111,99,97,108,32,120,32,61,32,115,116, +114,58,98,121,116,101,40,106,41,13,10,13,10,32,32,32,32,105,102,32, +120,32,60,32,51,50,32,116,104,101,110,13,10,32,32,32,32,32,32,100, +101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44,32,106,44,32, +34,99,111,110,116,114,111,108,32,99,104,97,114,97,99,116,101,114,32,105, +110,32,115,116,114,105,110,103,34,41,13,10,32,32,32,32,101,110,100,13, +10,13,10,32,32,32,32,105,102,32,108,97,115,116,32,61,61,32,57,50, +32,116,104,101,110,32,45,45,32,34,92,92,34,32,40,101,115,99,97,112, +101,32,99,104,97,114,41,13,10,32,32,32,32,32,32,105,102,32,120,32, +61,61,32,49,49,55,32,116,104,101,110,32,45,45,32,34,117,34,32,40, +117,110,105,99,111,100,101,32,101,115,99,97,112,101,32,115,101,113,117,101, +110,99,101,41,13,10,32,32,32,32,32,32,32,32,108,111,99,97,108,32, +104,101,120,32,61,32,115,116,114,58,115,117,98,40,106,32,43,32,49,44, +32,106,32,43,32,53,41,13,10,32,32,32,32,32,32,32,32,105,102,32, +110,111,116,32,104,101,120,58,102,105,110,100,40,34,37,120,37,120,37,120, +37,120,34,41,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,32, 32,100,101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44,32,106, -44,32,34,99,111,110,116,114,111,108,32,99,104,97,114,97,99,116,101,114, -32,105,110,32,115,116,114,105,110,103,34,41,13,10,32,32,32,32,32,32, -32,32,101,110,100,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32, -108,97,115,116,32,61,61,32,57,50,32,116,104,101,110,32,45,45,32,34, -92,92,34,32,40,101,115,99,97,112,101,32,99,104,97,114,41,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,105,102,32,120,32,61,61,32,49, -49,55,32,116,104,101,110,32,45,45,32,34,117,34,32,40,117,110,105,99, -111,100,101,32,101,115,99,97,112,101,32,115,101,113,117,101,110,99,101,41, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,108,111, -99,97,108,32,104,101,120,32,61,32,115,116,114,58,115,117,98,40,106,32, -43,32,49,44,32,106,32,43,32,53,41,13,10,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,105,102,32,110,111,116,32,104,101,120,58, -102,105,110,100,40,34,37,120,37,120,37,120,37,120,34,41,32,116,104,101, -110,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,100,101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44, -32,106,44,32,34,105,110,118,97,108,105,100,32,117,110,105,99,111,100,101, -32,101,115,99,97,112,101,32,105,110,32,115,116,114,105,110,103,34,41,13, -10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,110,100, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102, -32,104,101,120,58,102,105,110,100,40,34,94,91,100,68,93,91,56,57,97, -65,98,66,93,34,41,32,116,104,101,110,13,10,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,104,97,115,95,115,117,114, -114,111,103,97,116,101,95,101,115,99,97,112,101,32,61,32,116,114,117,101, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108, -115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,104,97,115,95,117,110,105,99,111,100,101,95,101,115,99,97, -112,101,32,61,32,116,114,117,101,13,10,32,32,32,32,32,32,32,32,32, +44,32,34,105,110,118,97,108,105,100,32,117,110,105,99,111,100,101,32,101, +115,99,97,112,101,32,105,110,32,115,116,114,105,110,103,34,41,13,10,32, 32,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32, -32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,108,111,99,97,108,32,99,32,61,32,115,116,114,105, -110,103,46,99,104,97,114,40,120,41,13,10,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,105,102,32,110,111,116,32,101,115,99,97,112, -101,95,99,104,97,114,115,91,99,93,32,116,104,101,110,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,100,101,99, -111,100,101,95,101,114,114,111,114,40,115,116,114,44,32,106,44,32,34,105, -110,118,97,108,105,100,32,101,115,99,97,112,101,32,99,104,97,114,32,39, -34,32,46,46,32,99,32,46,46,32,34,39,32,105,110,32,115,116,114,105, -110,103,34,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,104,97,115,95,101,115,99,97,112,101,32,61,32,116,114,117,101, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,110,100,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,108,97,115,116,32,61,32,110,105, -108,13,10,13,10,32,32,32,32,32,32,32,32,101,108,115,101,105,102,32, -120,32,61,61,32,51,52,32,116,104,101,110,32,45,45,32,39,34,39,32, -40,101,110,100,32,111,102,32,115,116,114,105,110,103,41,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,108,111,99,97,108,32,115,32,61,32,115, -116,114,58,115,117,98,40,105,32,43,32,49,44,32,106,32,45,32,49,41, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,104,97,115, -95,115,117,114,114,111,103,97,116,101,95,101,115,99,97,112,101,32,116,104, -101,110,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -115,32,61,32,115,58,103,115,117,98,40,34,92,92,117,91,100,68,93,91, -56,57,97,65,98,66,93,46,46,92,92,117,46,46,46,46,34,44,32,112, +105,102,32,104,101,120,58,102,105,110,100,40,34,94,91,100,68,93,91,56, +57,97,65,98,66,93,34,41,32,116,104,101,110,13,10,32,32,32,32,32, +32,32,32,32,32,104,97,115,95,115,117,114,114,111,103,97,116,101,95,101, +115,99,97,112,101,32,61,32,116,114,117,101,13,10,32,32,32,32,32,32, +32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,104,97, +115,95,117,110,105,99,111,100,101,95,101,115,99,97,112,101,32,61,32,116, +114,117,101,13,10,32,32,32,32,32,32,32,32,101,110,100,13,10,32,32, +32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,108,111, +99,97,108,32,99,32,61,32,115,116,114,105,110,103,46,99,104,97,114,40, +120,41,13,10,32,32,32,32,32,32,32,32,105,102,32,110,111,116,32,101, +115,99,97,112,101,95,99,104,97,114,115,91,99,93,32,116,104,101,110,13, +10,32,32,32,32,32,32,32,32,32,32,100,101,99,111,100,101,95,101,114, +114,111,114,40,115,116,114,44,32,106,44,32,34,105,110,118,97,108,105,100, +32,101,115,99,97,112,101,32,99,104,97,114,32,39,34,32,46,46,32,99, +32,46,46,32,34,39,32,105,110,32,115,116,114,105,110,103,34,41,13,10, +32,32,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32, +32,104,97,115,95,101,115,99,97,112,101,32,61,32,116,114,117,101,13,10, +32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,108,97,115, +116,32,61,32,110,105,108,13,10,13,10,32,32,32,32,101,108,115,101,105, +102,32,120,32,61,61,32,51,52,32,116,104,101,110,32,45,45,32,39,34, +39,32,40,101,110,100,32,111,102,32,115,116,114,105,110,103,41,13,10,32, +32,32,32,32,32,108,111,99,97,108,32,115,32,61,32,115,116,114,58,115, +117,98,40,105,32,43,32,49,44,32,106,32,45,32,49,41,13,10,32,32, +32,32,32,32,105,102,32,104,97,115,95,115,117,114,114,111,103,97,116,101, +95,101,115,99,97,112,101,32,116,104,101,110,13,10,32,32,32,32,32,32, +32,32,115,32,61,32,115,58,103,115,117,98,40,34,92,92,117,91,100,68, +93,91,56,57,97,65,98,66,93,46,46,92,92,117,46,46,46,46,34,44, +32,112,97,114,115,101,95,117,110,105,99,111,100,101,95,101,115,99,97,112, +101,41,13,10,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32, +32,105,102,32,104,97,115,95,117,110,105,99,111,100,101,95,101,115,99,97, +112,101,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,115,32,61, +32,115,58,103,115,117,98,40,34,92,92,117,46,46,46,46,34,44,32,112, 97,114,115,101,95,117,110,105,99,111,100,101,95,101,115,99,97,112,101,41, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,110,100,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,105,102,32,104,97,115,95,117,110, -105,99,111,100,101,95,101,115,99,97,112,101,32,116,104,101,110,13,10,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,115,32,61,32,115, -58,103,115,117,98,40,34,92,92,117,46,46,46,46,34,44,32,112,97,114, -115,101,95,117,110,105,99,111,100,101,95,101,115,99,97,112,101,41,13,10, -32,32,32,32,32,32,32,32,32,32,32,32,101,110,100,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,105,102,32,104,97,115,95,101,115,99,97, -112,101,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,115,32,61,32,115,58,103,115,117,98,40,34,92,92,46, -34,44,32,101,115,99,97,112,101,95,99,104,97,114,95,109,97,112,95,105, -110,118,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,110,100, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110, -32,115,44,32,106,32,43,32,49,13,10,13,10,32,32,32,32,32,32,32, -32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,108, -97,115,116,32,61,32,120,13,10,32,32,32,32,32,32,32,32,101,110,100, -13,10,32,32,32,32,101,110,100,13,10,32,32,32,32,100,101,99,111,100, -101,95,101,114,114,111,114,40,115,116,114,44,32,105,44,32,34,101,120,112, -101,99,116,101,100,32,99,108,111,115,105,110,103,32,113,117,111,116,101,32, -102,111,114,32,115,116,114,105,110,103,34,41,13,10,101,110,100,13,10,13, -10,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,112,97, -114,115,101,95,110,117,109,98,101,114,40,115,116,114,44,32,105,41,13,10, -32,32,32,32,108,111,99,97,108,32,120,32,61,32,110,101,120,116,95,99, -104,97,114,40,115,116,114,44,32,105,44,32,100,101,108,105,109,95,99,104, -97,114,115,41,13,10,32,32,32,32,108,111,99,97,108,32,115,32,61,32, -115,116,114,58,115,117,98,40,105,44,32,120,32,45,32,49,41,13,10,32, -32,32,32,108,111,99,97,108,32,110,32,61,32,116,111,110,117,109,98,101, -114,40,115,41,13,10,32,32,32,32,105,102,32,110,111,116,32,110,32,116, -104,101,110,13,10,32,32,32,32,32,32,32,32,100,101,99,111,100,101,95, +13,10,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,105, +102,32,104,97,115,95,101,115,99,97,112,101,32,116,104,101,110,13,10,32, +32,32,32,32,32,32,32,115,32,61,32,115,58,103,115,117,98,40,34,92, +92,46,34,44,32,101,115,99,97,112,101,95,99,104,97,114,95,109,97,112, +95,105,110,118,41,13,10,32,32,32,32,32,32,101,110,100,13,10,32,32, +32,32,32,32,114,101,116,117,114,110,32,115,44,32,106,32,43,32,49,13, +10,13,10,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,108, +97,115,116,32,61,32,120,13,10,32,32,32,32,101,110,100,13,10,32,32, +101,110,100,13,10,32,32,100,101,99,111,100,101,95,101,114,114,111,114,40, +115,116,114,44,32,105,44,32,34,101,120,112,101,99,116,101,100,32,99,108, +111,115,105,110,103,32,113,117,111,116,101,32,102,111,114,32,115,116,114,105, +110,103,34,41,13,10,101,110,100,13,10,13,10,13,10,108,111,99,97,108, +32,102,117,110,99,116,105,111,110,32,112,97,114,115,101,95,110,117,109,98, +101,114,40,115,116,114,44,32,105,41,13,10,32,32,108,111,99,97,108,32, +120,32,61,32,110,101,120,116,95,99,104,97,114,40,115,116,114,44,32,105, +44,32,100,101,108,105,109,95,99,104,97,114,115,41,13,10,32,32,108,111, +99,97,108,32,115,32,61,32,115,116,114,58,115,117,98,40,105,44,32,120, +32,45,32,49,41,13,10,32,32,108,111,99,97,108,32,110,32,61,32,116, +111,110,117,109,98,101,114,40,115,41,13,10,32,32,105,102,32,110,111,116, +32,110,32,116,104,101,110,13,10,32,32,32,32,100,101,99,111,100,101,95, 101,114,114,111,114,40,115,116,114,44,32,105,44,32,34,105,110,118,97,108, 105,100,32,110,117,109,98,101,114,32,39,34,32,46,46,32,115,32,46,46, -32,34,39,34,41,13,10,32,32,32,32,101,110,100,13,10,32,32,32,32, -114,101,116,117,114,110,32,110,44,32,120,13,10,101,110,100,13,10,13,10, -13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,112,97,114, -115,101,95,108,105,116,101,114,97,108,40,115,116,114,44,32,105,41,13,10, -32,32,32,32,108,111,99,97,108,32,120,32,61,32,110,101,120,116,95,99, -104,97,114,40,115,116,114,44,32,105,44,32,100,101,108,105,109,95,99,104, -97,114,115,41,13,10,32,32,32,32,108,111,99,97,108,32,119,111,114,100, -32,61,32,115,116,114,58,115,117,98,40,105,44,32,120,32,45,32,49,41, -13,10,32,32,32,32,105,102,32,110,111,116,32,108,105,116,101,114,97,108, -115,91,119,111,114,100,93,32,116,104,101,110,13,10,32,32,32,32,32,32, -32,32,100,101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44,32, -105,44,32,34,105,110,118,97,108,105,100,32,108,105,116,101,114,97,108,32, -39,34,32,46,46,32,119,111,114,100,32,46,46,32,34,39,34,41,13,10, -32,32,32,32,101,110,100,13,10,32,32,32,32,114,101,116,117,114,110,32, -108,105,116,101,114,97,108,95,109,97,112,91,119,111,114,100,93,44,32,120, -13,10,101,110,100,13,10,13,10,13,10,108,111,99,97,108,32,102,117,110, -99,116,105,111,110,32,112,97,114,115,101,95,97,114,114,97,121,40,115,116, -114,44,32,105,41,13,10,32,32,32,32,108,111,99,97,108,32,114,101,115, -32,61,32,123,125,13,10,32,32,32,32,108,111,99,97,108,32,110,32,61, -32,49,13,10,32,32,32,32,105,32,61,32,105,32,43,32,49,13,10,32, -32,32,32,119,104,105,108,101,32,49,32,100,111,13,10,32,32,32,32,32, -32,32,32,108,111,99,97,108,32,120,13,10,32,32,32,32,32,32,32,32, -105,32,61,32,110,101,120,116,95,99,104,97,114,40,115,116,114,44,32,105, -44,32,115,112,97,99,101,95,99,104,97,114,115,44,32,116,114,117,101,41, -13,10,32,32,32,32,32,32,32,32,45,45,32,69,109,112,116,121,32,47, -32,101,110,100,32,111,102,32,97,114,114,97,121,63,13,10,32,32,32,32, -32,32,32,32,105,102,32,115,116,114,58,115,117,98,40,105,44,32,105,41, -32,61,61,32,34,93,34,32,116,104,101,110,13,10,32,32,32,32,32,32, -32,32,32,32,32,32,105,32,61,32,105,32,43,32,49,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,98,114,101,97,107,13,10,32,32,32,32, -32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,45,45,32, -82,101,97,100,32,116,111,107,101,110,13,10,32,32,32,32,32,32,32,32, -120,44,32,105,32,61,32,112,97,114,115,101,40,115,116,114,44,32,105,41, -13,10,32,32,32,32,32,32,32,32,114,101,115,91,110,93,32,61,32,120, -13,10,32,32,32,32,32,32,32,32,110,32,61,32,110,32,43,32,49,13, -10,32,32,32,32,32,32,32,32,45,45,32,78,101,120,116,32,116,111,107, -101,110,13,10,32,32,32,32,32,32,32,32,105,32,61,32,110,101,120,116, -95,99,104,97,114,40,115,116,114,44,32,105,44,32,115,112,97,99,101,95, -99,104,97,114,115,44,32,116,114,117,101,41,13,10,32,32,32,32,32,32, -32,32,108,111,99,97,108,32,99,104,114,32,61,32,115,116,114,58,115,117, -98,40,105,44,32,105,41,13,10,32,32,32,32,32,32,32,32,105,32,61, -32,105,32,43,32,49,13,10,32,32,32,32,32,32,32,32,105,102,32,99, -104,114,32,61,61,32,34,93,34,32,116,104,101,110,32,98,114,101,97,107, -32,101,110,100,13,10,32,32,32,32,32,32,32,32,105,102,32,99,104,114, -32,126,61,32,34,44,34,32,116,104,101,110,32,100,101,99,111,100,101,95, -101,114,114,111,114,40,115,116,114,44,32,105,44,32,34,101,120,112,101,99, -116,101,100,32,39,93,39,32,111,114,32,39,44,39,34,41,32,101,110,100, -13,10,32,32,32,32,101,110,100,13,10,32,32,32,32,114,101,116,117,114, -110,32,114,101,115,44,32,105,13,10,101,110,100,13,10,13,10,13,10,108, -111,99,97,108,32,102,117,110,99,116,105,111,110,32,112,97,114,115,101,95, -111,98,106,101,99,116,40,115,116,114,44,32,105,41,13,10,32,32,32,32, -108,111,99,97,108,32,114,101,115,32,61,32,123,125,13,10,32,32,32,32, -105,32,61,32,105,32,43,32,49,13,10,32,32,32,32,119,104,105,108,101, -32,49,32,100,111,13,10,32,32,32,32,32,32,32,32,108,111,99,97,108, -32,107,101,121,44,32,118,97,108,13,10,32,32,32,32,32,32,32,32,105, -32,61,32,110,101,120,116,95,99,104,97,114,40,115,116,114,44,32,105,44, -32,115,112,97,99,101,95,99,104,97,114,115,44,32,116,114,117,101,41,13, -10,32,32,32,32,32,32,32,32,45,45,32,69,109,112,116,121,32,47,32, +32,34,39,34,41,13,10,32,32,101,110,100,13,10,32,32,114,101,116,117, +114,110,32,110,44,32,120,13,10,101,110,100,13,10,13,10,13,10,108,111, +99,97,108,32,102,117,110,99,116,105,111,110,32,112,97,114,115,101,95,108, +105,116,101,114,97,108,40,115,116,114,44,32,105,41,13,10,32,32,108,111, +99,97,108,32,120,32,61,32,110,101,120,116,95,99,104,97,114,40,115,116, +114,44,32,105,44,32,100,101,108,105,109,95,99,104,97,114,115,41,13,10, +32,32,108,111,99,97,108,32,119,111,114,100,32,61,32,115,116,114,58,115, +117,98,40,105,44,32,120,32,45,32,49,41,13,10,32,32,105,102,32,110, +111,116,32,108,105,116,101,114,97,108,115,91,119,111,114,100,93,32,116,104, +101,110,13,10,32,32,32,32,100,101,99,111,100,101,95,101,114,114,111,114, +40,115,116,114,44,32,105,44,32,34,105,110,118,97,108,105,100,32,108,105, +116,101,114,97,108,32,39,34,32,46,46,32,119,111,114,100,32,46,46,32, +34,39,34,41,13,10,32,32,101,110,100,13,10,32,32,114,101,116,117,114, +110,32,108,105,116,101,114,97,108,95,109,97,112,91,119,111,114,100,93,44, +32,120,13,10,101,110,100,13,10,13,10,13,10,108,111,99,97,108,32,102, +117,110,99,116,105,111,110,32,112,97,114,115,101,95,97,114,114,97,121,40, +115,116,114,44,32,105,41,13,10,32,32,108,111,99,97,108,32,114,101,115, +32,61,32,123,125,13,10,32,32,108,111,99,97,108,32,110,32,61,32,49, +13,10,32,32,105,32,61,32,105,32,43,32,49,13,10,32,32,119,104,105, +108,101,32,49,32,100,111,13,10,32,32,32,32,108,111,99,97,108,32,120, +13,10,32,32,32,32,105,32,61,32,110,101,120,116,95,99,104,97,114,40, +115,116,114,44,32,105,44,32,115,112,97,99,101,95,99,104,97,114,115,44, +32,116,114,117,101,41,13,10,32,32,32,32,45,45,32,69,109,112,116,121, +32,47,32,101,110,100,32,111,102,32,97,114,114,97,121,63,13,10,32,32, +32,32,105,102,32,115,116,114,58,115,117,98,40,105,44,32,105,41,32,61, +61,32,34,93,34,32,116,104,101,110,13,10,32,32,32,32,32,32,105,32, +61,32,105,32,43,32,49,13,10,32,32,32,32,32,32,98,114,101,97,107, +13,10,32,32,32,32,101,110,100,13,10,32,32,32,32,45,45,32,82,101, +97,100,32,116,111,107,101,110,13,10,32,32,32,32,120,44,32,105,32,61, +32,112,97,114,115,101,40,115,116,114,44,32,105,41,13,10,32,32,32,32, +114,101,115,91,110,93,32,61,32,120,13,10,32,32,32,32,110,32,61,32, +110,32,43,32,49,13,10,32,32,32,32,45,45,32,78,101,120,116,32,116, +111,107,101,110,13,10,32,32,32,32,105,32,61,32,110,101,120,116,95,99, +104,97,114,40,115,116,114,44,32,105,44,32,115,112,97,99,101,95,99,104, +97,114,115,44,32,116,114,117,101,41,13,10,32,32,32,32,108,111,99,97, +108,32,99,104,114,32,61,32,115,116,114,58,115,117,98,40,105,44,32,105, +41,13,10,32,32,32,32,105,32,61,32,105,32,43,32,49,13,10,32,32, +32,32,105,102,32,99,104,114,32,61,61,32,34,93,34,32,116,104,101,110, +32,98,114,101,97,107,32,101,110,100,13,10,32,32,32,32,105,102,32,99, +104,114,32,126,61,32,34,44,34,32,116,104,101,110,32,100,101,99,111,100, +101,95,101,114,114,111,114,40,115,116,114,44,32,105,44,32,34,101,120,112, +101,99,116,101,100,32,39,93,39,32,111,114,32,39,44,39,34,41,32,101, +110,100,13,10,32,32,101,110,100,13,10,32,32,114,101,116,117,114,110,32, +114,101,115,44,32,105,13,10,101,110,100,13,10,13,10,13,10,108,111,99, +97,108,32,102,117,110,99,116,105,111,110,32,112,97,114,115,101,95,111,98, +106,101,99,116,40,115,116,114,44,32,105,41,13,10,32,32,108,111,99,97, +108,32,114,101,115,32,61,32,123,125,13,10,32,32,105,32,61,32,105,32, +43,32,49,13,10,32,32,119,104,105,108,101,32,49,32,100,111,13,10,32, +32,32,32,108,111,99,97,108,32,107,101,121,44,32,118,97,108,13,10,32, +32,32,32,105,32,61,32,110,101,120,116,95,99,104,97,114,40,115,116,114, +44,32,105,44,32,115,112,97,99,101,95,99,104,97,114,115,44,32,116,114, +117,101,41,13,10,32,32,32,32,45,45,32,69,109,112,116,121,32,47,32, 101,110,100,32,111,102,32,111,98,106,101,99,116,63,13,10,32,32,32,32, -32,32,32,32,105,102,32,115,116,114,58,115,117,98,40,105,44,32,105,41, -32,61,61,32,34,125,34,32,116,104,101,110,13,10,32,32,32,32,32,32, -32,32,32,32,32,32,105,32,61,32,105,32,43,32,49,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,98,114,101,97,107,13,10,32,32,32,32, -32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,45,45,32, -82,101,97,100,32,107,101,121,13,10,32,32,32,32,32,32,32,32,105,102, -32,115,116,114,58,115,117,98,40,105,44,32,105,41,32,126,61,32,39,34, -39,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,32,32,32,32, -100,101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44,32,105,44, -32,34,101,120,112,101,99,116,101,100,32,115,116,114,105,110,103,32,102,111, -114,32,107,101,121,34,41,13,10,32,32,32,32,32,32,32,32,101,110,100, -13,10,32,32,32,32,32,32,32,32,107,101,121,44,32,105,32,61,32,112, -97,114,115,101,40,115,116,114,44,32,105,41,13,10,32,32,32,32,32,32, -32,32,45,45,32,82,101,97,100,32,39,58,39,32,100,101,108,105,109,105, -116,101,114,13,10,32,32,32,32,32,32,32,32,105,32,61,32,110,101,120, -116,95,99,104,97,114,40,115,116,114,44,32,105,44,32,115,112,97,99,101, -95,99,104,97,114,115,44,32,116,114,117,101,41,13,10,32,32,32,32,32, -32,32,32,105,102,32,115,116,114,58,115,117,98,40,105,44,32,105,41,32, -126,61,32,34,58,34,32,116,104,101,110,13,10,32,32,32,32,32,32,32, +105,102,32,115,116,114,58,115,117,98,40,105,44,32,105,41,32,61,61,32, +34,125,34,32,116,104,101,110,13,10,32,32,32,32,32,32,105,32,61,32, +105,32,43,32,49,13,10,32,32,32,32,32,32,98,114,101,97,107,13,10, +32,32,32,32,101,110,100,13,10,32,32,32,32,45,45,32,82,101,97,100, +32,107,101,121,13,10,32,32,32,32,105,102,32,115,116,114,58,115,117,98, +40,105,44,32,105,41,32,126,61,32,39,34,39,32,116,104,101,110,13,10, +32,32,32,32,32,32,100,101,99,111,100,101,95,101,114,114,111,114,40,115, +116,114,44,32,105,44,32,34,101,120,112,101,99,116,101,100,32,115,116,114, +105,110,103,32,102,111,114,32,107,101,121,34,41,13,10,32,32,32,32,101, +110,100,13,10,32,32,32,32,107,101,121,44,32,105,32,61,32,112,97,114, +115,101,40,115,116,114,44,32,105,41,13,10,32,32,32,32,45,45,32,82, +101,97,100,32,39,58,39,32,100,101,108,105,109,105,116,101,114,13,10,32, +32,32,32,105,32,61,32,110,101,120,116,95,99,104,97,114,40,115,116,114, +44,32,105,44,32,115,112,97,99,101,95,99,104,97,114,115,44,32,116,114, +117,101,41,13,10,32,32,32,32,105,102,32,115,116,114,58,115,117,98,40, +105,44,32,105,41,32,126,61,32,34,58,34,32,116,104,101,110,13,10,32, 32,32,32,32,32,100,101,99,111,100,101,95,101,114,114,111,114,40,115,116, 114,44,32,105,44,32,34,101,120,112,101,99,116,101,100,32,39,58,39,32, -97,102,116,101,114,32,107,101,121,34,41,13,10,32,32,32,32,32,32,32, -32,101,110,100,13,10,32,32,32,32,32,32,32,32,105,32,61,32,110,101, -120,116,95,99,104,97,114,40,115,116,114,44,32,105,32,43,32,49,44,32, -115,112,97,99,101,95,99,104,97,114,115,44,32,116,114,117,101,41,13,10, -32,32,32,32,32,32,32,32,45,45,32,82,101,97,100,32,118,97,108,117, -101,13,10,32,32,32,32,32,32,32,32,118,97,108,44,32,105,32,61,32, -112,97,114,115,101,40,115,116,114,44,32,105,41,13,10,32,32,32,32,32, -32,32,32,45,45,32,83,101,116,13,10,32,32,32,32,32,32,32,32,114, -101,115,91,107,101,121,93,32,61,32,118,97,108,13,10,32,32,32,32,32, -32,32,32,45,45,32,78,101,120,116,32,116,111,107,101,110,13,10,32,32, -32,32,32,32,32,32,105,32,61,32,110,101,120,116,95,99,104,97,114,40, -115,116,114,44,32,105,44,32,115,112,97,99,101,95,99,104,97,114,115,44, -32,116,114,117,101,41,13,10,32,32,32,32,32,32,32,32,108,111,99,97, -108,32,99,104,114,32,61,32,115,116,114,58,115,117,98,40,105,44,32,105, -41,13,10,32,32,32,32,32,32,32,32,105,32,61,32,105,32,43,32,49, -13,10,32,32,32,32,32,32,32,32,105,102,32,99,104,114,32,61,61,32, -34,125,34,32,116,104,101,110,32,98,114,101,97,107,32,101,110,100,13,10, -32,32,32,32,32,32,32,32,105,102,32,99,104,114,32,126,61,32,34,44, -34,32,116,104,101,110,32,100,101,99,111,100,101,95,101,114,114,111,114,40, -115,116,114,44,32,105,44,32,34,101,120,112,101,99,116,101,100,32,39,125, -39,32,111,114,32,39,44,39,34,41,32,101,110,100,13,10,32,32,32,32, -101,110,100,13,10,32,32,32,32,114,101,116,117,114,110,32,114,101,115,44, -32,105,13,10,101,110,100,13,10,13,10,13,10,108,111,99,97,108,32,99, -104,97,114,95,102,117,110,99,95,109,97,112,32,61,32,123,13,10,32,32, -32,32,91,32,39,34,39,32,93,32,61,32,112,97,114,115,101,95,115,116, -114,105,110,103,44,13,10,32,32,32,32,91,32,34,48,34,32,93,32,61, -32,112,97,114,115,101,95,110,117,109,98,101,114,44,13,10,32,32,32,32, -91,32,34,49,34,32,93,32,61,32,112,97,114,115,101,95,110,117,109,98, -101,114,44,13,10,32,32,32,32,91,32,34,50,34,32,93,32,61,32,112, -97,114,115,101,95,110,117,109,98,101,114,44,13,10,32,32,32,32,91,32, -34,51,34,32,93,32,61,32,112,97,114,115,101,95,110,117,109,98,101,114, -44,13,10,32,32,32,32,91,32,34,52,34,32,93,32,61,32,112,97,114, -115,101,95,110,117,109,98,101,114,44,13,10,32,32,32,32,91,32,34,53, +97,102,116,101,114,32,107,101,121,34,41,13,10,32,32,32,32,101,110,100, +13,10,32,32,32,32,105,32,61,32,110,101,120,116,95,99,104,97,114,40, +115,116,114,44,32,105,32,43,32,49,44,32,115,112,97,99,101,95,99,104, +97,114,115,44,32,116,114,117,101,41,13,10,32,32,32,32,45,45,32,82, +101,97,100,32,118,97,108,117,101,13,10,32,32,32,32,118,97,108,44,32, +105,32,61,32,112,97,114,115,101,40,115,116,114,44,32,105,41,13,10,32, +32,32,32,45,45,32,83,101,116,13,10,32,32,32,32,114,101,115,91,107, +101,121,93,32,61,32,118,97,108,13,10,32,32,32,32,45,45,32,78,101, +120,116,32,116,111,107,101,110,13,10,32,32,32,32,105,32,61,32,110,101, +120,116,95,99,104,97,114,40,115,116,114,44,32,105,44,32,115,112,97,99, +101,95,99,104,97,114,115,44,32,116,114,117,101,41,13,10,32,32,32,32, +108,111,99,97,108,32,99,104,114,32,61,32,115,116,114,58,115,117,98,40, +105,44,32,105,41,13,10,32,32,32,32,105,32,61,32,105,32,43,32,49, +13,10,32,32,32,32,105,102,32,99,104,114,32,61,61,32,34,125,34,32, +116,104,101,110,32,98,114,101,97,107,32,101,110,100,13,10,32,32,32,32, +105,102,32,99,104,114,32,126,61,32,34,44,34,32,116,104,101,110,32,100, +101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44,32,105,44,32, +34,101,120,112,101,99,116,101,100,32,39,125,39,32,111,114,32,39,44,39, +34,41,32,101,110,100,13,10,32,32,101,110,100,13,10,32,32,114,101,116, +117,114,110,32,114,101,115,44,32,105,13,10,101,110,100,13,10,13,10,13, +10,108,111,99,97,108,32,99,104,97,114,95,102,117,110,99,95,109,97,112, +32,61,32,123,13,10,32,32,91,32,39,34,39,32,93,32,61,32,112,97, +114,115,101,95,115,116,114,105,110,103,44,13,10,32,32,91,32,34,48,34, +32,93,32,61,32,112,97,114,115,101,95,110,117,109,98,101,114,44,13,10, +32,32,91,32,34,49,34,32,93,32,61,32,112,97,114,115,101,95,110,117, +109,98,101,114,44,13,10,32,32,91,32,34,50,34,32,93,32,61,32,112, +97,114,115,101,95,110,117,109,98,101,114,44,13,10,32,32,91,32,34,51, 34,32,93,32,61,32,112,97,114,115,101,95,110,117,109,98,101,114,44,13, -10,32,32,32,32,91,32,34,54,34,32,93,32,61,32,112,97,114,115,101, -95,110,117,109,98,101,114,44,13,10,32,32,32,32,91,32,34,55,34,32, -93,32,61,32,112,97,114,115,101,95,110,117,109,98,101,114,44,13,10,32, -32,32,32,91,32,34,56,34,32,93,32,61,32,112,97,114,115,101,95,110, -117,109,98,101,114,44,13,10,32,32,32,32,91,32,34,57,34,32,93,32, -61,32,112,97,114,115,101,95,110,117,109,98,101,114,44,13,10,32,32,32, -32,91,32,34,45,34,32,93,32,61,32,112,97,114,115,101,95,110,117,109, -98,101,114,44,13,10,32,32,32,32,91,32,34,116,34,32,93,32,61,32, -112,97,114,115,101,95,108,105,116,101,114,97,108,44,13,10,32,32,32,32, +10,32,32,91,32,34,52,34,32,93,32,61,32,112,97,114,115,101,95,110, +117,109,98,101,114,44,13,10,32,32,91,32,34,53,34,32,93,32,61,32, +112,97,114,115,101,95,110,117,109,98,101,114,44,13,10,32,32,91,32,34, +54,34,32,93,32,61,32,112,97,114,115,101,95,110,117,109,98,101,114,44, +13,10,32,32,91,32,34,55,34,32,93,32,61,32,112,97,114,115,101,95, +110,117,109,98,101,114,44,13,10,32,32,91,32,34,56,34,32,93,32,61, +32,112,97,114,115,101,95,110,117,109,98,101,114,44,13,10,32,32,91,32, +34,57,34,32,93,32,61,32,112,97,114,115,101,95,110,117,109,98,101,114, +44,13,10,32,32,91,32,34,45,34,32,93,32,61,32,112,97,114,115,101, +95,110,117,109,98,101,114,44,13,10,32,32,91,32,34,116,34,32,93,32, +61,32,112,97,114,115,101,95,108,105,116,101,114,97,108,44,13,10,32,32, 91,32,34,102,34,32,93,32,61,32,112,97,114,115,101,95,108,105,116,101, -114,97,108,44,13,10,32,32,32,32,91,32,34,110,34,32,93,32,61,32, -112,97,114,115,101,95,108,105,116,101,114,97,108,44,13,10,32,32,32,32, -91,32,34,91,34,32,93,32,61,32,112,97,114,115,101,95,97,114,114,97, -121,44,13,10,32,32,32,32,91,32,34,123,34,32,93,32,61,32,112,97, -114,115,101,95,111,98,106,101,99,116,44,13,10,125,13,10,13,10,13,10, -112,97,114,115,101,32,61,32,102,117,110,99,116,105,111,110,40,115,116,114, -44,32,105,100,120,41,13,10,32,32,32,32,108,111,99,97,108,32,99,104, -114,32,61,32,115,116,114,58,115,117,98,40,105,100,120,44,32,105,100,120, -41,13,10,32,32,32,32,108,111,99,97,108,32,102,32,61,32,99,104,97, -114,95,102,117,110,99,95,109,97,112,91,99,104,114,93,13,10,32,32,32, -32,105,102,32,102,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32, -114,101,116,117,114,110,32,102,40,115,116,114,44,32,105,100,120,41,13,10, -32,32,32,32,101,110,100,13,10,32,32,32,32,100,101,99,111,100,101,95, +114,97,108,44,13,10,32,32,91,32,34,110,34,32,93,32,61,32,112,97, +114,115,101,95,108,105,116,101,114,97,108,44,13,10,32,32,91,32,34,91, +34,32,93,32,61,32,112,97,114,115,101,95,97,114,114,97,121,44,13,10, +32,32,91,32,34,123,34,32,93,32,61,32,112,97,114,115,101,95,111,98, +106,101,99,116,44,13,10,125,13,10,13,10,13,10,112,97,114,115,101,32, +61,32,102,117,110,99,116,105,111,110,40,115,116,114,44,32,105,100,120,41, +13,10,32,32,108,111,99,97,108,32,99,104,114,32,61,32,115,116,114,58, +115,117,98,40,105,100,120,44,32,105,100,120,41,13,10,32,32,108,111,99, +97,108,32,102,32,61,32,99,104,97,114,95,102,117,110,99,95,109,97,112, +91,99,104,114,93,13,10,32,32,105,102,32,102,32,116,104,101,110,13,10, +32,32,32,32,114,101,116,117,114,110,32,102,40,115,116,114,44,32,105,100, +120,41,13,10,32,32,101,110,100,13,10,32,32,100,101,99,111,100,101,95, 101,114,114,111,114,40,115,116,114,44,32,105,100,120,44,32,34,117,110,101, 120,112,101,99,116,101,100,32,99,104,97,114,97,99,116,101,114,32,39,34, 32,46,46,32,99,104,114,32,46,46,32,34,39,34,41,13,10,101,110,100, 13,10,13,10,13,10,102,117,110,99,116,105,111,110,32,106,115,111,110,46, -100,101,99,111,100,101,40,115,116,114,41,13,10,32,32,32,32,105,102,32, -116,121,112,101,40,115,116,114,41,32,126,61,32,34,115,116,114,105,110,103, -34,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,101,114,114,111, -114,40,34,101,120,112,101,99,116,101,100,32,97,114,103,117,109,101,110,116, -32,111,102,32,116,121,112,101,32,115,116,114,105,110,103,44,32,103,111,116, -32,34,32,46,46,32,116,121,112,101,40,115,116,114,41,41,13,10,32,32, -32,32,101,110,100,13,10,32,32,32,32,108,111,99,97,108,32,114,101,115, -44,32,105,100,120,32,61,32,112,97,114,115,101,40,115,116,114,44,32,110, -101,120,116,95,99,104,97,114,40,115,116,114,44,32,49,44,32,115,112,97, -99,101,95,99,104,97,114,115,44,32,116,114,117,101,41,41,13,10,32,32, -32,32,105,100,120,32,61,32,110,101,120,116,95,99,104,97,114,40,115,116, -114,44,32,105,100,120,44,32,115,112,97,99,101,95,99,104,97,114,115,44, -32,116,114,117,101,41,13,10,32,32,32,32,105,102,32,105,100,120,32,60, -61,32,35,115,116,114,32,116,104,101,110,13,10,32,32,32,32,32,32,32, -32,100,101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44,32,105, -100,120,44,32,34,116,114,97,105,108,105,110,103,32,103,97,114,98,97,103, -101,34,41,13,10,32,32,32,32,101,110,100,13,10,32,32,32,32,114,101, -116,117,114,110,32,114,101,115,13,10,101,110,100,13,10,13,10,45,45,45, +100,101,99,111,100,101,40,115,116,114,41,13,10,32,32,105,102,32,116,121, +112,101,40,115,116,114,41,32,126,61,32,34,115,116,114,105,110,103,34,32, +116,104,101,110,13,10,32,32,32,32,101,114,114,111,114,40,34,101,120,112, +101,99,116,101,100,32,97,114,103,117,109,101,110,116,32,111,102,32,116,121, +112,101,32,115,116,114,105,110,103,44,32,103,111,116,32,34,32,46,46,32, +116,121,112,101,40,115,116,114,41,41,13,10,32,32,101,110,100,13,10,32, +32,108,111,99,97,108,32,114,101,115,44,32,105,100,120,32,61,32,112,97, +114,115,101,40,115,116,114,44,32,110,101,120,116,95,99,104,97,114,40,115, +116,114,44,32,49,44,32,115,112,97,99,101,95,99,104,97,114,115,44,32, +116,114,117,101,41,41,13,10,32,32,105,100,120,32,61,32,110,101,120,116, +95,99,104,97,114,40,115,116,114,44,32,105,100,120,44,32,115,112,97,99, +101,95,99,104,97,114,115,44,32,116,114,117,101,41,13,10,32,32,105,102, +32,105,100,120,32,60,61,32,35,115,116,114,32,116,104,101,110,13,10,32, +32,32,32,100,101,99,111,100,101,95,101,114,114,111,114,40,115,116,114,44, +32,105,100,120,44,32,34,116,114,97,105,108,105,110,103,32,103,97,114,98, +97,103,101,34,41,13,10,32,32,101,110,100,13,10,32,32,114,101,116,117, +114,110,32,114,101,115,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,45,45,45,45,45,45,45,13,10,45,45,32,69,120,112,111, -114,116,32,116,111,32,74,105,110,46,13,10,45,45,45,45,45,45,45,45, +45,45,45,45,45,45,45,45,45,13,10,45,45,32,69,120,112,111,114,116, +32,116,111,32,74,105,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,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,13,10,13,10,106,105,110,46,117,116,105,108,115,46, -106,115,111,110,32,61,32,106,115,111,110,13,10,0 +45,45,45,45,13,10,13,10,106,105,110,46,117,116,105,108,115,46,106,115, +111,110,32,61,32,106,115,111,110,13,10,0 }; diff --git a/src/libjin-lua/scripts/utils/xml.lua b/src/libjin-lua/scripts/utils/xml.lua index 9f10b17..bdd8d51 100644 --- a/src/libjin-lua/scripts/utils/xml.lua +++ b/src/libjin-lua/scripts/utils/xml.lua @@ -8,147 +8,147 @@ jin.utils = jin.utils or {} local XmlParser = {} function XmlParser.toXmlString(value) - value = string.gsub(value, "&", "&"); -- '&' -> "&" - value = string.gsub(value, "<", "<"); -- '<' -> "<" - value = string.gsub(value, ">", ">"); -- '>' -> ">" - value = string.gsub(value, "\"", """); -- '"' -> """ - value = string.gsub(value, "([^%w%&%;%p%\t% ])", - function(c) - return string.format("&#x%X;", string.byte(c)) - end); - return value; + value = string.gsub(value, "&", "&"); -- '&' -> "&" + value = string.gsub(value, "<", "<"); -- '<' -> "<" + value = string.gsub(value, ">", ">"); -- '>' -> ">" + value = string.gsub(value, "\"", """); -- '"' -> """ + value = string.gsub(value, "([^%w%&%;%p%\t% ])", + function(c) + return string.format("&#x%X;", string.byte(c)) + end); + return value; end function XmlParser.fromXmlString(value) - value = string.gsub(value, "&#x([%x]+)%;", - function(h) - return string.char(tonumber(h, 16)) - end); - value = string.gsub(value, "&#([0-9]+)%;", - function(h) - return string.char(tonumber(h, 10)) - end); - value = string.gsub(value, """, "\""); - value = string.gsub(value, "'", "'"); - value = string.gsub(value, ">", ">"); - value = string.gsub(value, "<", "<"); - value = string.gsub(value, "&", "&"); - return value; + value = string.gsub(value, "&#x([%x]+)%;", + function(h) + return string.char(tonumber(h, 16)) + end); + value = string.gsub(value, "&#([0-9]+)%;", + function(h) + return string.char(tonumber(h, 10)) + end); + value = string.gsub(value, """, "\""); + value = string.gsub(value, "'", "'"); + value = string.gsub(value, ">", ">"); + value = string.gsub(value, "<", "<"); + value = string.gsub(value, "&", "&"); + return value; end function XmlParser.parseArgs(node, s) - string.gsub(s, "(%w+)=([\"'])(.-)%2", function(w, _, a) - node:addProperty(w, XmlParser.fromXmlString(a)) - end) + string.gsub(s, "(%w+)=([\"'])(.-)%2", function(w, _, a) + node:addProperty(w, XmlParser.fromXmlString(a)) + end) end - + local function newNode(name) - local node = {} - node.___value = nil - node.___name = name - node.___children = {} - node.___props = {} - - function node:value() return self.___value end - function node:setValue(val) self.___value = val end - function node:name() return self.___name end - function node:setName(name) self.___name = name end - function node:children() return self.___children end - function node:numChildren() return #self.___children end - function node:addChild(child) - if self[child:name()] ~= nil then - if type(self[child:name()].name) == "function" then - local tempTable = {} - table.insert(tempTable, self[child:name()]) - self[child:name()] = tempTable - end - table.insert(self[child:name()], child) - else - self[child:name()] = child - end - table.insert(self.___children, child) + local node = {} + node.___value = nil + node.___name = name + node.___children = {} + node.___props = {} + + function node:value() return self.___value end + function node:setValue(val) self.___value = val end + function node:name() return self.___name end + function node:setName(name) self.___name = name end + function node:children() return self.___children end + function node:numChildren() return #self.___children end + function node:addChild(child) + if self[child:name()] ~= nil then + if type(self[child:name()].name) == "function" then + local tempTable = {} + table.insert(tempTable, self[child:name()]) + self[child:name()] = tempTable + end + table.insert(self[child:name()], child) + else + self[child:name()] = child end - - function node:properties() return self.___props end - function node:numProperties() return #self.___props end - function node:addProperty(name, value) - local lName = "@" .. name - if self[lName] ~= nil then - if type(self[lName]) == "string" then - local tempTable = {} - table.insert(tempTable, self[lName]) - self[lName] = tempTable - end - table.insert(self[lName], value) - else - self[lName] = value - end - table.insert(self.___props, { name = name, value = self[name] }) + table.insert(self.___children, child) + end + + function node:properties() return self.___props end + function node:numProperties() return #self.___props end + function node:addProperty(name, value) + local lName = "@" .. name + if self[lName] ~= nil then + if type(self[lName]) == "string" then + local tempTable = {} + table.insert(tempTable, self[lName]) + self[lName] = tempTable + end + table.insert(self[lName], value) + else + self[lName] = value end + table.insert(self.___props, { name = name, value = self[name] }) + end - return node + return node end function XmlParser.parseXmlText(xmlText) - local stack = {} - local top = newNode() - table.insert(stack, top) - local ni, c, label, xarg, empty - local i, j = 1, 1 - while true do - ni, j, c, label, xarg, empty = string.find(xmlText, "<(%/?)([%w_:]+)(.-)(%/?)>", i) - if not ni then break end - local text = string.sub(xmlText, i, ni - 1); - if not string.find(text, "^%s*$") then - local lVal = (top:value() or "") .. XmlParser.fromXmlString(text) - stack[#stack]:setValue(lVal) - end - if empty == "/" then -- empty element tag - local lNode = newNode(label) - XmlParser.parseArgs(lNode, xarg) - top:addChild(lNode) - elseif c == "" then -- start tag - local lNode = newNode(label) - XmlParser.parseArgs(lNode, xarg) - table.insert(stack, lNode) - top = lNode - else -- end tag - local toclose = table.remove(stack) -- remove top - - top = stack[#stack] - if #stack < 1 then - error("XmlParser. nothing to close with " .. label) - end - if toclose:name() ~= label then - error("XmlParser. trying to close " .. toclose.name .. " with " .. label) - end - top:addChild(toclose) - end - i = j + 1 + local stack = {} + local top = newNode() + table.insert(stack, top) + local ni, c, label, xarg, empty + local i, j = 1, 1 + while true do + ni, j, c, label, xarg, empty = string.find(xmlText, "<(%/?)([%w_:]+)(.-)(%/?)>", i) + if not ni then break end + local text = string.sub(xmlText, i, ni - 1); + if not string.find(text, "^%s*$") then + local lVal = (top:value() or "") .. XmlParser.fromXmlString(text) + stack[#stack]:setValue(lVal) end - local text = string.sub(xmlText, i); - if #stack > 1 then - error("XmlParser. unclosed " .. stack[#stack]:name()) + if empty == "/" then -- empty element tag + local lNode = newNode(label) + XmlParser.parseArgs(lNode, xarg) + top:addChild(lNode) + elseif c == "" then -- start tag + local lNode = newNode(label) + XmlParser.parseArgs(lNode, xarg) + table.insert(stack, lNode) + top = lNode + else -- end tag + local toclose = table.remove(stack) -- remove top + + top = stack[#stack] + if #stack < 1 then + error("XmlParser. nothing to close with " .. label) + end + if toclose:name() ~= label then + error("XmlParser. trying to close " .. toclose.name .. " with " .. label) + end + top:addChild(toclose) end - return top + i = j + 1 + end + local text = string.sub(xmlText, i); + if #stack > 1 then + error("XmlParser. unclosed " .. stack[#stack]:name()) + end + return top end function XmlParser.loadFile(xmlFilename, base) - if not base then - base = system.ResourceDirectory - end - - local path = system.pathForFile(xmlFilename, base) - local hFile, err = io.open(path, "r"); - - if hFile and not err then - local xmlText = hFile:read("*a"); -- read file content - io.close(hFile); - return XmlParser.parseXmlText(xmlText), nil; - else - print(err) - return nil - end + if not base then + base = system.ResourceDirectory + end + + local path = system.pathForFile(xmlFilename, base) + local hFile, err = io.open(path, "r"); + + if hFile and not err then + local xmlText = hFile:read("*a"); -- read file content + io.close(hFile); + return XmlParser.parseXmlText(xmlText), nil; + else + print(err) + return nil + end end ------------------------------------------------------------------------------------------------------------------ diff --git a/src/libjin-lua/scripts/utils/xml.lua.h b/src/libjin-lua/scripts/utils/xml.lua.h index 2ab4cb4..c32f699 100644 --- a/src/libjin-lua/scripts/utils/xml.lua.h +++ b/src/libjin-lua/scripts/utils/xml.lua.h @@ -19,261 +19,238 @@ static char xml_lua[] = { 111,99,97,108,32,88,109,108,80,97,114,115,101,114,32,61,32,123,125,13, 10,13,10,102,117,110,99,116,105,111,110,32,88,109,108,80,97,114,115,101, 114,46,116,111,88,109,108,83,116,114,105,110,103,40,118,97,108,117,101,41, -13,10,32,32,32,32,118,97,108,117,101,32,61,32,115,116,114,105,110,103, -46,103,115,117,98,40,118,97,108,117,101,44,32,34,38,34,44,32,34,38, -97,109,112,59,34,41,59,32,45,45,32,39,38,39,32,45,62,32,34,38, -97,109,112,59,34,13,10,32,32,32,32,118,97,108,117,101,32,61,32,115, -116,114,105,110,103,46,103,115,117,98,40,118,97,108,117,101,44,32,34,60, -34,44,32,34,38,108,116,59,34,41,59,32,45,45,32,39,60,39,32,45, -62,32,34,38,108,116,59,34,13,10,32,32,32,32,118,97,108,117,101,32, -61,32,115,116,114,105,110,103,46,103,115,117,98,40,118,97,108,117,101,44, -32,34,62,34,44,32,34,38,103,116,59,34,41,59,32,45,45,32,39,62, -39,32,45,62,32,34,38,103,116,59,34,13,10,32,32,32,32,118,97,108, -117,101,32,61,32,115,116,114,105,110,103,46,103,115,117,98,40,118,97,108, -117,101,44,32,34,92,34,34,44,32,34,38,113,117,111,116,59,34,41,59, -32,45,45,32,39,34,39,32,45,62,32,34,38,113,117,111,116,59,34,13, -10,32,32,32,32,118,97,108,117,101,32,61,32,115,116,114,105,110,103,46, -103,115,117,98,40,118,97,108,117,101,44,32,34,40,91,94,37,119,37,38, -37,59,37,112,37,92,116,37,32,93,41,34,44,13,10,32,32,32,32,32, -32,32,32,102,117,110,99,116,105,111,110,40,99,41,13,10,32,32,32,32, -32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,115,116,114,105,110, +13,10,32,32,118,97,108,117,101,32,61,32,115,116,114,105,110,103,46,103, +115,117,98,40,118,97,108,117,101,44,32,34,38,34,44,32,34,38,97,109, +112,59,34,41,59,32,45,45,32,39,38,39,32,45,62,32,34,38,97,109, +112,59,34,13,10,32,32,118,97,108,117,101,32,61,32,115,116,114,105,110, +103,46,103,115,117,98,40,118,97,108,117,101,44,32,34,60,34,44,32,34, +38,108,116,59,34,41,59,32,45,45,32,39,60,39,32,45,62,32,34,38, +108,116,59,34,13,10,32,32,118,97,108,117,101,32,61,32,115,116,114,105, +110,103,46,103,115,117,98,40,118,97,108,117,101,44,32,34,62,34,44,32, +34,38,103,116,59,34,41,59,32,45,45,32,39,62,39,32,45,62,32,34, +38,103,116,59,34,13,10,32,32,118,97,108,117,101,32,61,32,115,116,114, +105,110,103,46,103,115,117,98,40,118,97,108,117,101,44,32,34,92,34,34, +44,32,34,38,113,117,111,116,59,34,41,59,32,45,45,32,39,34,39,32, +45,62,32,34,38,113,117,111,116,59,34,13,10,32,32,118,97,108,117,101, +32,61,32,115,116,114,105,110,103,46,103,115,117,98,40,118,97,108,117,101, +44,32,34,40,91,94,37,119,37,38,37,59,37,112,37,92,116,37,32,93, +41,34,44,13,10,32,32,32,32,102,117,110,99,116,105,111,110,40,99,41, +13,10,32,32,32,32,32,32,114,101,116,117,114,110,32,115,116,114,105,110, 103,46,102,111,114,109,97,116,40,34,38,35,120,37,88,59,34,44,32,115, 116,114,105,110,103,46,98,121,116,101,40,99,41,41,13,10,32,32,32,32, -32,32,32,32,101,110,100,41,59,13,10,32,32,32,32,114,101,116,117,114, -110,32,118,97,108,117,101,59,13,10,101,110,100,13,10,13,10,102,117,110, -99,116,105,111,110,32,88,109,108,80,97,114,115,101,114,46,102,114,111,109, -88,109,108,83,116,114,105,110,103,40,118,97,108,117,101,41,13,10,32,32, -32,32,118,97,108,117,101,32,61,32,115,116,114,105,110,103,46,103,115,117, -98,40,118,97,108,117,101,44,32,34,38,35,120,40,91,37,120,93,43,41, -37,59,34,44,13,10,32,32,32,32,32,32,32,32,102,117,110,99,116,105, -111,110,40,104,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,114, -101,116,117,114,110,32,115,116,114,105,110,103,46,99,104,97,114,40,116,111, -110,117,109,98,101,114,40,104,44,32,49,54,41,41,13,10,32,32,32,32, -32,32,32,32,101,110,100,41,59,13,10,32,32,32,32,118,97,108,117,101, -32,61,32,115,116,114,105,110,103,46,103,115,117,98,40,118,97,108,117,101, -44,32,34,38,35,40,91,48,45,57,93,43,41,37,59,34,44,13,10,32, -32,32,32,32,32,32,32,102,117,110,99,116,105,111,110,40,104,41,13,10, -32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,115, -116,114,105,110,103,46,99,104,97,114,40,116,111,110,117,109,98,101,114,40, -104,44,32,49,48,41,41,13,10,32,32,32,32,32,32,32,32,101,110,100, -41,59,13,10,32,32,32,32,118,97,108,117,101,32,61,32,115,116,114,105, -110,103,46,103,115,117,98,40,118,97,108,117,101,44,32,34,38,113,117,111, -116,59,34,44,32,34,92,34,34,41,59,13,10,32,32,32,32,118,97,108, -117,101,32,61,32,115,116,114,105,110,103,46,103,115,117,98,40,118,97,108, -117,101,44,32,34,38,97,112,111,115,59,34,44,32,34,39,34,41,59,13, -10,32,32,32,32,118,97,108,117,101,32,61,32,115,116,114,105,110,103,46, -103,115,117,98,40,118,97,108,117,101,44,32,34,38,103,116,59,34,44,32, -34,62,34,41,59,13,10,32,32,32,32,118,97,108,117,101,32,61,32,115, +101,110,100,41,59,13,10,32,32,114,101,116,117,114,110,32,118,97,108,117, +101,59,13,10,101,110,100,13,10,13,10,102,117,110,99,116,105,111,110,32, +88,109,108,80,97,114,115,101,114,46,102,114,111,109,88,109,108,83,116,114, +105,110,103,40,118,97,108,117,101,41,13,10,32,32,118,97,108,117,101,32, +61,32,115,116,114,105,110,103,46,103,115,117,98,40,118,97,108,117,101,44, +32,34,38,35,120,40,91,37,120,93,43,41,37,59,34,44,13,10,32,32, +32,32,102,117,110,99,116,105,111,110,40,104,41,13,10,32,32,32,32,32, +32,114,101,116,117,114,110,32,115,116,114,105,110,103,46,99,104,97,114,40, +116,111,110,117,109,98,101,114,40,104,44,32,49,54,41,41,13,10,32,32, +32,32,101,110,100,41,59,13,10,32,32,118,97,108,117,101,32,61,32,115, 116,114,105,110,103,46,103,115,117,98,40,118,97,108,117,101,44,32,34,38, -108,116,59,34,44,32,34,60,34,41,59,13,10,32,32,32,32,118,97,108, -117,101,32,61,32,115,116,114,105,110,103,46,103,115,117,98,40,118,97,108, -117,101,44,32,34,38,97,109,112,59,34,44,32,34,38,34,41,59,13,10, -32,32,32,32,114,101,116,117,114,110,32,118,97,108,117,101,59,13,10,101, -110,100,13,10,13,10,102,117,110,99,116,105,111,110,32,88,109,108,80,97, -114,115,101,114,46,112,97,114,115,101,65,114,103,115,40,110,111,100,101,44, -32,115,41,13,10,32,32,32,32,115,116,114,105,110,103,46,103,115,117,98, -40,115,44,32,34,40,37,119,43,41,61,40,91,92,34,39,93,41,40,46, -45,41,37,50,34,44,32,102,117,110,99,116,105,111,110,40,119,44,32,95, -44,32,97,41,13,10,32,32,32,32,32,32,32,32,110,111,100,101,58,97, -100,100,80,114,111,112,101,114,116,121,40,119,44,32,88,109,108,80,97,114, -115,101,114,46,102,114,111,109,88,109,108,83,116,114,105,110,103,40,97,41, -41,13,10,32,32,32,32,101,110,100,41,13,10,101,110,100,13,10,32,32, +35,40,91,48,45,57,93,43,41,37,59,34,44,13,10,32,32,32,32,102, +117,110,99,116,105,111,110,40,104,41,13,10,32,32,32,32,32,32,114,101, +116,117,114,110,32,115,116,114,105,110,103,46,99,104,97,114,40,116,111,110, +117,109,98,101,114,40,104,44,32,49,48,41,41,13,10,32,32,32,32,101, +110,100,41,59,13,10,32,32,118,97,108,117,101,32,61,32,115,116,114,105, +110,103,46,103,115,117,98,40,118,97,108,117,101,44,32,34,38,113,117,111, +116,59,34,44,32,34,92,34,34,41,59,13,10,32,32,118,97,108,117,101, +32,61,32,115,116,114,105,110,103,46,103,115,117,98,40,118,97,108,117,101, +44,32,34,38,97,112,111,115,59,34,44,32,34,39,34,41,59,13,10,32, +32,118,97,108,117,101,32,61,32,115,116,114,105,110,103,46,103,115,117,98, +40,118,97,108,117,101,44,32,34,38,103,116,59,34,44,32,34,62,34,41, +59,13,10,32,32,118,97,108,117,101,32,61,32,115,116,114,105,110,103,46, +103,115,117,98,40,118,97,108,117,101,44,32,34,38,108,116,59,34,44,32, +34,60,34,41,59,13,10,32,32,118,97,108,117,101,32,61,32,115,116,114, +105,110,103,46,103,115,117,98,40,118,97,108,117,101,44,32,34,38,97,109, +112,59,34,44,32,34,38,34,41,59,13,10,32,32,114,101,116,117,114,110, +32,118,97,108,117,101,59,13,10,101,110,100,13,10,13,10,102,117,110,99, +116,105,111,110,32,88,109,108,80,97,114,115,101,114,46,112,97,114,115,101, +65,114,103,115,40,110,111,100,101,44,32,115,41,13,10,32,32,115,116,114, +105,110,103,46,103,115,117,98,40,115,44,32,34,40,37,119,43,41,61,40, +91,92,34,39,93,41,40,46,45,41,37,50,34,44,32,102,117,110,99,116, +105,111,110,40,119,44,32,95,44,32,97,41,13,10,32,32,32,32,110,111, +100,101,58,97,100,100,80,114,111,112,101,114,116,121,40,119,44,32,88,109, +108,80,97,114,115,101,114,46,102,114,111,109,88,109,108,83,116,114,105,110, +103,40,97,41,41,13,10,32,32,101,110,100,41,13,10,101,110,100,13,10, 32,32,13,10,108,111,99,97,108,32,102,117,110,99,116,105,111,110,32,110, -101,119,78,111,100,101,40,110,97,109,101,41,13,10,32,32,32,32,108,111, -99,97,108,32,110,111,100,101,32,61,32,123,125,13,10,32,32,32,32,110, -111,100,101,46,95,95,95,118,97,108,117,101,32,61,32,110,105,108,13,10, -32,32,32,32,110,111,100,101,46,95,95,95,110,97,109,101,32,61,32,110, -97,109,101,13,10,32,32,32,32,110,111,100,101,46,95,95,95,99,104,105, -108,100,114,101,110,32,61,32,123,125,13,10,32,32,32,32,110,111,100,101, -46,95,95,95,112,114,111,112,115,32,61,32,123,125,13,10,13,10,32,32, -32,32,102,117,110,99,116,105,111,110,32,110,111,100,101,58,118,97,108,117, -101,40,41,32,114,101,116,117,114,110,32,115,101,108,102,46,95,95,95,118, -97,108,117,101,32,101,110,100,13,10,32,32,32,32,102,117,110,99,116,105, -111,110,32,110,111,100,101,58,115,101,116,86,97,108,117,101,40,118,97,108, -41,32,115,101,108,102,46,95,95,95,118,97,108,117,101,32,61,32,118,97, -108,32,101,110,100,13,10,32,32,32,32,102,117,110,99,116,105,111,110,32, -110,111,100,101,58,110,97,109,101,40,41,32,114,101,116,117,114,110,32,115, -101,108,102,46,95,95,95,110,97,109,101,32,101,110,100,13,10,32,32,32, -32,102,117,110,99,116,105,111,110,32,110,111,100,101,58,115,101,116,78,97, -109,101,40,110,97,109,101,41,32,115,101,108,102,46,95,95,95,110,97,109, -101,32,61,32,110,97,109,101,32,101,110,100,13,10,32,32,32,32,102,117, +101,119,78,111,100,101,40,110,97,109,101,41,13,10,32,32,108,111,99,97, +108,32,110,111,100,101,32,61,32,123,125,13,10,32,32,110,111,100,101,46, +95,95,95,118,97,108,117,101,32,61,32,110,105,108,13,10,32,32,110,111, +100,101,46,95,95,95,110,97,109,101,32,61,32,110,97,109,101,13,10,32, +32,110,111,100,101,46,95,95,95,99,104,105,108,100,114,101,110,32,61,32, +123,125,13,10,32,32,110,111,100,101,46,95,95,95,112,114,111,112,115,32, +61,32,123,125,13,10,13,10,32,32,102,117,110,99,116,105,111,110,32,110, +111,100,101,58,118,97,108,117,101,40,41,32,114,101,116,117,114,110,32,115, +101,108,102,46,95,95,95,118,97,108,117,101,32,101,110,100,13,10,32,32, +102,117,110,99,116,105,111,110,32,110,111,100,101,58,115,101,116,86,97,108, +117,101,40,118,97,108,41,32,115,101,108,102,46,95,95,95,118,97,108,117, +101,32,61,32,118,97,108,32,101,110,100,13,10,32,32,102,117,110,99,116, +105,111,110,32,110,111,100,101,58,110,97,109,101,40,41,32,114,101,116,117, +114,110,32,115,101,108,102,46,95,95,95,110,97,109,101,32,101,110,100,13, +10,32,32,102,117,110,99,116,105,111,110,32,110,111,100,101,58,115,101,116, +78,97,109,101,40,110,97,109,101,41,32,115,101,108,102,46,95,95,95,110, +97,109,101,32,61,32,110,97,109,101,32,101,110,100,13,10,32,32,102,117, 110,99,116,105,111,110,32,110,111,100,101,58,99,104,105,108,100,114,101,110, 40,41,32,114,101,116,117,114,110,32,115,101,108,102,46,95,95,95,99,104, -105,108,100,114,101,110,32,101,110,100,13,10,32,32,32,32,102,117,110,99, -116,105,111,110,32,110,111,100,101,58,110,117,109,67,104,105,108,100,114,101, -110,40,41,32,114,101,116,117,114,110,32,35,115,101,108,102,46,95,95,95, -99,104,105,108,100,114,101,110,32,101,110,100,13,10,32,32,32,32,102,117, -110,99,116,105,111,110,32,110,111,100,101,58,97,100,100,67,104,105,108,100, -40,99,104,105,108,100,41,13,10,32,32,32,32,32,32,32,32,105,102,32, -115,101,108,102,91,99,104,105,108,100,58,110,97,109,101,40,41,93,32,126, -61,32,110,105,108,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32, -32,32,32,32,105,102,32,116,121,112,101,40,115,101,108,102,91,99,104,105, -108,100,58,110,97,109,101,40,41,93,46,110,97,109,101,41,32,61,61,32, -34,102,117,110,99,116,105,111,110,34,32,116,104,101,110,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,108,111,99,97,108,32,116, -101,109,112,84,97,98,108,101,32,61,32,123,125,13,10,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,116,97,98,108,101,46,105,110,115, -101,114,116,40,116,101,109,112,84,97,98,108,101,44,32,115,101,108,102,91, -99,104,105,108,100,58,110,97,109,101,40,41,93,41,13,10,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,115,101,108,102,91,99,104,105, -108,100,58,110,97,109,101,40,41,93,32,61,32,116,101,109,112,84,97,98, -108,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,110,100,13, -10,32,32,32,32,32,32,32,32,32,32,32,32,116,97,98,108,101,46,105, -110,115,101,114,116,40,115,101,108,102,91,99,104,105,108,100,58,110,97,109, -101,40,41,93,44,32,99,104,105,108,100,41,13,10,32,32,32,32,32,32, -32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32, +105,108,100,114,101,110,32,101,110,100,13,10,32,32,102,117,110,99,116,105, +111,110,32,110,111,100,101,58,110,117,109,67,104,105,108,100,114,101,110,40, +41,32,114,101,116,117,114,110,32,35,115,101,108,102,46,95,95,95,99,104, +105,108,100,114,101,110,32,101,110,100,13,10,32,32,102,117,110,99,116,105, +111,110,32,110,111,100,101,58,97,100,100,67,104,105,108,100,40,99,104,105, +108,100,41,13,10,32,32,32,32,105,102,32,115,101,108,102,91,99,104,105, +108,100,58,110,97,109,101,40,41,93,32,126,61,32,110,105,108,32,116,104, +101,110,13,10,32,32,32,32,32,32,105,102,32,116,121,112,101,40,115,101, +108,102,91,99,104,105,108,100,58,110,97,109,101,40,41,93,46,110,97,109, +101,41,32,61,61,32,34,102,117,110,99,116,105,111,110,34,32,116,104,101, +110,13,10,32,32,32,32,32,32,32,32,108,111,99,97,108,32,116,101,109, +112,84,97,98,108,101,32,61,32,123,125,13,10,32,32,32,32,32,32,32, +32,116,97,98,108,101,46,105,110,115,101,114,116,40,116,101,109,112,84,97, +98,108,101,44,32,115,101,108,102,91,99,104,105,108,100,58,110,97,109,101, +40,41,93,41,13,10,32,32,32,32,32,32,32,32,115,101,108,102,91,99, +104,105,108,100,58,110,97,109,101,40,41,93,32,61,32,116,101,109,112,84, +97,98,108,101,13,10,32,32,32,32,32,32,101,110,100,13,10,32,32,32, +32,32,32,116,97,98,108,101,46,105,110,115,101,114,116,40,115,101,108,102, +91,99,104,105,108,100,58,110,97,109,101,40,41,93,44,32,99,104,105,108, +100,41,13,10,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32, 115,101,108,102,91,99,104,105,108,100,58,110,97,109,101,40,41,93,32,61, -32,99,104,105,108,100,13,10,32,32,32,32,32,32,32,32,101,110,100,13, -10,32,32,32,32,32,32,32,32,116,97,98,108,101,46,105,110,115,101,114, -116,40,115,101,108,102,46,95,95,95,99,104,105,108,100,114,101,110,44,32, -99,104,105,108,100,41,13,10,32,32,32,32,101,110,100,13,10,13,10,32, -32,32,32,102,117,110,99,116,105,111,110,32,110,111,100,101,58,112,114,111, -112,101,114,116,105,101,115,40,41,32,114,101,116,117,114,110,32,115,101,108, -102,46,95,95,95,112,114,111,112,115,32,101,110,100,13,10,32,32,32,32, -102,117,110,99,116,105,111,110,32,110,111,100,101,58,110,117,109,80,114,111, -112,101,114,116,105,101,115,40,41,32,114,101,116,117,114,110,32,35,115,101, -108,102,46,95,95,95,112,114,111,112,115,32,101,110,100,13,10,32,32,32, -32,102,117,110,99,116,105,111,110,32,110,111,100,101,58,97,100,100,80,114, -111,112,101,114,116,121,40,110,97,109,101,44,32,118,97,108,117,101,41,13, -10,32,32,32,32,32,32,32,32,108,111,99,97,108,32,108,78,97,109,101, +32,99,104,105,108,100,13,10,32,32,32,32,101,110,100,13,10,32,32,32, +32,116,97,98,108,101,46,105,110,115,101,114,116,40,115,101,108,102,46,95, +95,95,99,104,105,108,100,114,101,110,44,32,99,104,105,108,100,41,13,10, +32,32,101,110,100,13,10,13,10,32,32,102,117,110,99,116,105,111,110,32, +110,111,100,101,58,112,114,111,112,101,114,116,105,101,115,40,41,32,114,101, +116,117,114,110,32,115,101,108,102,46,95,95,95,112,114,111,112,115,32,101, +110,100,13,10,32,32,102,117,110,99,116,105,111,110,32,110,111,100,101,58, +110,117,109,80,114,111,112,101,114,116,105,101,115,40,41,32,114,101,116,117, +114,110,32,35,115,101,108,102,46,95,95,95,112,114,111,112,115,32,101,110, +100,13,10,32,32,102,117,110,99,116,105,111,110,32,110,111,100,101,58,97, +100,100,80,114,111,112,101,114,116,121,40,110,97,109,101,44,32,118,97,108, +117,101,41,13,10,32,32,32,32,108,111,99,97,108,32,108,78,97,109,101, 32,61,32,34,64,34,32,46,46,32,110,97,109,101,13,10,32,32,32,32, -32,32,32,32,105,102,32,115,101,108,102,91,108,78,97,109,101,93,32,126, -61,32,110,105,108,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32, -32,32,32,32,105,102,32,116,121,112,101,40,115,101,108,102,91,108,78,97, -109,101,93,41,32,61,61,32,34,115,116,114,105,110,103,34,32,116,104,101, -110,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,108, -111,99,97,108,32,116,101,109,112,84,97,98,108,101,32,61,32,123,125,13, -10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,97,98, -108,101,46,105,110,115,101,114,116,40,116,101,109,112,84,97,98,108,101,44, -32,115,101,108,102,91,108,78,97,109,101,93,41,13,10,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,115,101,108,102,91,108,78,97,109, -101,93,32,61,32,116,101,109,112,84,97,98,108,101,13,10,32,32,32,32, -32,32,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32, -32,32,32,32,32,116,97,98,108,101,46,105,110,115,101,114,116,40,115,101, -108,102,91,108,78,97,109,101,93,44,32,118,97,108,117,101,41,13,10,32, -32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32, -32,32,32,32,32,115,101,108,102,91,108,78,97,109,101,93,32,61,32,118, -97,108,117,101,13,10,32,32,32,32,32,32,32,32,101,110,100,13,10,32, -32,32,32,32,32,32,32,116,97,98,108,101,46,105,110,115,101,114,116,40, -115,101,108,102,46,95,95,95,112,114,111,112,115,44,32,123,32,110,97,109, -101,32,61,32,110,97,109,101,44,32,118,97,108,117,101,32,61,32,115,101, -108,102,91,110,97,109,101,93,32,125,41,13,10,32,32,32,32,101,110,100, -13,10,13,10,32,32,32,32,114,101,116,117,114,110,32,110,111,100,101,13, -10,101,110,100,13,10,13,10,102,117,110,99,116,105,111,110,32,88,109,108, -80,97,114,115,101,114,46,112,97,114,115,101,88,109,108,84,101,120,116,40, -120,109,108,84,101,120,116,41,13,10,32,32,32,32,108,111,99,97,108,32, -115,116,97,99,107,32,61,32,123,125,13,10,32,32,32,32,108,111,99,97, -108,32,116,111,112,32,61,32,110,101,119,78,111,100,101,40,41,13,10,32, -32,32,32,116,97,98,108,101,46,105,110,115,101,114,116,40,115,116,97,99, -107,44,32,116,111,112,41,13,10,32,32,32,32,108,111,99,97,108,32,110, -105,44,32,99,44,32,108,97,98,101,108,44,32,120,97,114,103,44,32,101, -109,112,116,121,13,10,32,32,32,32,108,111,99,97,108,32,105,44,32,106, -32,61,32,49,44,32,49,13,10,32,32,32,32,119,104,105,108,101,32,116, -114,117,101,32,100,111,13,10,32,32,32,32,32,32,32,32,110,105,44,32, -106,44,32,99,44,32,108,97,98,101,108,44,32,120,97,114,103,44,32,101, -109,112,116,121,32,61,32,115,116,114,105,110,103,46,102,105,110,100,40,120, -109,108,84,101,120,116,44,32,34,60,40,37,47,63,41,40,91,37,119,95, -58,93,43,41,40,46,45,41,40,37,47,63,41,62,34,44,32,105,41,13, -10,32,32,32,32,32,32,32,32,105,102,32,110,111,116,32,110,105,32,116, -104,101,110,32,98,114,101,97,107,32,101,110,100,13,10,32,32,32,32,32, -32,32,32,108,111,99,97,108,32,116,101,120,116,32,61,32,115,116,114,105, -110,103,46,115,117,98,40,120,109,108,84,101,120,116,44,32,105,44,32,110, -105,32,45,32,49,41,59,13,10,32,32,32,32,32,32,32,32,105,102,32, -110,111,116,32,115,116,114,105,110,103,46,102,105,110,100,40,116,101,120,116, -44,32,34,94,37,115,42,36,34,41,32,116,104,101,110,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,108,111,99,97,108,32,108,86,97,108,32, -61,32,40,116,111,112,58,118,97,108,117,101,40,41,32,111,114,32,34,34, -41,32,46,46,32,88,109,108,80,97,114,115,101,114,46,102,114,111,109,88, -109,108,83,116,114,105,110,103,40,116,101,120,116,41,13,10,32,32,32,32, -32,32,32,32,32,32,32,32,115,116,97,99,107,91,35,115,116,97,99,107, -93,58,115,101,116,86,97,108,117,101,40,108,86,97,108,41,13,10,32,32, -32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,105, -102,32,101,109,112,116,121,32,61,61,32,34,47,34,32,116,104,101,110,32, -45,45,32,101,109,112,116,121,32,101,108,101,109,101,110,116,32,116,97,103, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,108,111,99,97,108,32, -108,78,111,100,101,32,61,32,110,101,119,78,111,100,101,40,108,97,98,101, -108,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,88,109,108,80, -97,114,115,101,114,46,112,97,114,115,101,65,114,103,115,40,108,78,111,100, -101,44,32,120,97,114,103,41,13,10,32,32,32,32,32,32,32,32,32,32, -32,32,116,111,112,58,97,100,100,67,104,105,108,100,40,108,78,111,100,101, -41,13,10,32,32,32,32,32,32,32,32,101,108,115,101,105,102,32,99,32, -61,61,32,34,34,32,116,104,101,110,32,45,45,32,115,116,97,114,116,32, -116,97,103,13,10,32,32,32,32,32,32,32,32,32,32,32,32,108,111,99, -97,108,32,108,78,111,100,101,32,61,32,110,101,119,78,111,100,101,40,108, -97,98,101,108,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,88, -109,108,80,97,114,115,101,114,46,112,97,114,115,101,65,114,103,115,40,108, -78,111,100,101,44,32,120,97,114,103,41,13,10,32,32,32,32,32,32,32, -32,32,32,32,32,116,97,98,108,101,46,105,110,115,101,114,116,40,115,116, -97,99,107,44,32,108,78,111,100,101,41,13,10,9,116,111,112,32,61,32, -108,78,111,100,101,13,10,32,32,32,32,32,32,32,32,101,108,115,101,32, -45,45,32,101,110,100,32,116,97,103,13,10,32,32,32,32,32,32,32,32, -32,32,32,32,108,111,99,97,108,32,116,111,99,108,111,115,101,32,61,32, -116,97,98,108,101,46,114,101,109,111,118,101,40,115,116,97,99,107,41,32, -45,45,32,114,101,109,111,118,101,32,116,111,112,13,10,13,10,32,32,32, -32,32,32,32,32,32,32,32,32,116,111,112,32,61,32,115,116,97,99,107, -91,35,115,116,97,99,107,93,13,10,32,32,32,32,32,32,32,32,32,32, -32,32,105,102,32,35,115,116,97,99,107,32,60,32,49,32,116,104,101,110, -13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,114, -114,111,114,40,34,88,109,108,80,97,114,115,101,114,46,32,110,111,116,104, -105,110,103,32,116,111,32,99,108,111,115,101,32,119,105,116,104,32,34,32, -46,46,32,108,97,98,101,108,41,13,10,32,32,32,32,32,32,32,32,32, -32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,32,32,32,32, -105,102,32,116,111,99,108,111,115,101,58,110,97,109,101,40,41,32,126,61, -32,108,97,98,101,108,32,116,104,101,110,13,10,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,101,114,114,111,114,40,34,88,109,108,80, -97,114,115,101,114,46,32,116,114,121,105,110,103,32,116,111,32,99,108,111, -115,101,32,34,32,46,46,32,116,111,99,108,111,115,101,46,110,97,109,101, -32,46,46,32,34,32,119,105,116,104,32,34,32,46,46,32,108,97,98,101, -108,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,110,100,13, -10,32,32,32,32,32,32,32,32,32,32,32,32,116,111,112,58,97,100,100, -67,104,105,108,100,40,116,111,99,108,111,115,101,41,13,10,32,32,32,32, -32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,32,32,105,32,61, -32,106,32,43,32,49,13,10,32,32,32,32,101,110,100,13,10,32,32,32, -32,108,111,99,97,108,32,116,101,120,116,32,61,32,115,116,114,105,110,103, -46,115,117,98,40,120,109,108,84,101,120,116,44,32,105,41,59,13,10,32, -32,32,32,105,102,32,35,115,116,97,99,107,32,62,32,49,32,116,104,101, -110,13,10,32,32,32,32,32,32,32,32,101,114,114,111,114,40,34,88,109, -108,80,97,114,115,101,114,46,32,117,110,99,108,111,115,101,100,32,34,32, -46,46,32,115,116,97,99,107,91,35,115,116,97,99,107,93,58,110,97,109, -101,40,41,41,13,10,32,32,32,32,101,110,100,13,10,32,32,32,32,114, +105,102,32,115,101,108,102,91,108,78,97,109,101,93,32,126,61,32,110,105, +108,32,116,104,101,110,13,10,32,32,32,32,32,32,105,102,32,116,121,112, +101,40,115,101,108,102,91,108,78,97,109,101,93,41,32,61,61,32,34,115, +116,114,105,110,103,34,32,116,104,101,110,13,10,32,32,32,32,32,32,32, +32,108,111,99,97,108,32,116,101,109,112,84,97,98,108,101,32,61,32,123, +125,13,10,32,32,32,32,32,32,32,32,116,97,98,108,101,46,105,110,115, +101,114,116,40,116,101,109,112,84,97,98,108,101,44,32,115,101,108,102,91, +108,78,97,109,101,93,41,13,10,32,32,32,32,32,32,32,32,115,101,108, +102,91,108,78,97,109,101,93,32,61,32,116,101,109,112,84,97,98,108,101, +13,10,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,116, +97,98,108,101,46,105,110,115,101,114,116,40,115,101,108,102,91,108,78,97, +109,101,93,44,32,118,97,108,117,101,41,13,10,32,32,32,32,101,108,115, +101,13,10,32,32,32,32,32,32,115,101,108,102,91,108,78,97,109,101,93, +32,61,32,118,97,108,117,101,13,10,32,32,32,32,101,110,100,13,10,32, +32,32,32,116,97,98,108,101,46,105,110,115,101,114,116,40,115,101,108,102, +46,95,95,95,112,114,111,112,115,44,32,123,32,110,97,109,101,32,61,32, +110,97,109,101,44,32,118,97,108,117,101,32,61,32,115,101,108,102,91,110, +97,109,101,93,32,125,41,13,10,32,32,101,110,100,13,10,13,10,32,32, +114,101,116,117,114,110,32,110,111,100,101,13,10,101,110,100,13,10,13,10, +102,117,110,99,116,105,111,110,32,88,109,108,80,97,114,115,101,114,46,112, +97,114,115,101,88,109,108,84,101,120,116,40,120,109,108,84,101,120,116,41, +13,10,32,32,108,111,99,97,108,32,115,116,97,99,107,32,61,32,123,125, +13,10,32,32,108,111,99,97,108,32,116,111,112,32,61,32,110,101,119,78, +111,100,101,40,41,13,10,32,32,116,97,98,108,101,46,105,110,115,101,114, +116,40,115,116,97,99,107,44,32,116,111,112,41,13,10,32,32,108,111,99, +97,108,32,110,105,44,32,99,44,32,108,97,98,101,108,44,32,120,97,114, +103,44,32,101,109,112,116,121,13,10,32,32,108,111,99,97,108,32,105,44, +32,106,32,61,32,49,44,32,49,13,10,32,32,119,104,105,108,101,32,116, +114,117,101,32,100,111,13,10,32,32,32,32,110,105,44,32,106,44,32,99, +44,32,108,97,98,101,108,44,32,120,97,114,103,44,32,101,109,112,116,121, +32,61,32,115,116,114,105,110,103,46,102,105,110,100,40,120,109,108,84,101, +120,116,44,32,34,60,40,37,47,63,41,40,91,37,119,95,58,93,43,41, +40,46,45,41,40,37,47,63,41,62,34,44,32,105,41,13,10,32,32,32, +32,105,102,32,110,111,116,32,110,105,32,116,104,101,110,32,98,114,101,97, +107,32,101,110,100,13,10,32,32,32,32,108,111,99,97,108,32,116,101,120, +116,32,61,32,115,116,114,105,110,103,46,115,117,98,40,120,109,108,84,101, +120,116,44,32,105,44,32,110,105,32,45,32,49,41,59,13,10,32,32,32, +32,105,102,32,110,111,116,32,115,116,114,105,110,103,46,102,105,110,100,40, +116,101,120,116,44,32,34,94,37,115,42,36,34,41,32,116,104,101,110,13, +10,32,32,32,32,32,32,108,111,99,97,108,32,108,86,97,108,32,61,32, +40,116,111,112,58,118,97,108,117,101,40,41,32,111,114,32,34,34,41,32, +46,46,32,88,109,108,80,97,114,115,101,114,46,102,114,111,109,88,109,108, +83,116,114,105,110,103,40,116,101,120,116,41,13,10,32,32,32,32,32,32, +115,116,97,99,107,91,35,115,116,97,99,107,93,58,115,101,116,86,97,108, +117,101,40,108,86,97,108,41,13,10,32,32,32,32,101,110,100,13,10,32, +32,32,32,105,102,32,101,109,112,116,121,32,61,61,32,34,47,34,32,116, +104,101,110,32,45,45,32,101,109,112,116,121,32,101,108,101,109,101,110,116, +32,116,97,103,13,10,32,32,32,32,32,32,108,111,99,97,108,32,108,78, +111,100,101,32,61,32,110,101,119,78,111,100,101,40,108,97,98,101,108,41, +13,10,32,32,32,32,32,32,88,109,108,80,97,114,115,101,114,46,112,97, +114,115,101,65,114,103,115,40,108,78,111,100,101,44,32,120,97,114,103,41, +13,10,32,32,32,32,32,32,116,111,112,58,97,100,100,67,104,105,108,100, +40,108,78,111,100,101,41,13,10,32,32,32,32,101,108,115,101,105,102,32, +99,32,61,61,32,34,34,32,116,104,101,110,32,45,45,32,115,116,97,114, +116,32,116,97,103,13,10,32,32,32,32,32,32,108,111,99,97,108,32,108, +78,111,100,101,32,61,32,110,101,119,78,111,100,101,40,108,97,98,101,108, +41,13,10,32,32,32,32,32,32,88,109,108,80,97,114,115,101,114,46,112, +97,114,115,101,65,114,103,115,40,108,78,111,100,101,44,32,120,97,114,103, +41,13,10,32,32,32,32,32,32,116,97,98,108,101,46,105,110,115,101,114, +116,40,115,116,97,99,107,44,32,108,78,111,100,101,41,13,10,9,116,111, +112,32,61,32,108,78,111,100,101,13,10,32,32,32,32,101,108,115,101,32, +45,45,32,101,110,100,32,116,97,103,13,10,32,32,32,32,32,32,108,111, +99,97,108,32,116,111,99,108,111,115,101,32,61,32,116,97,98,108,101,46, +114,101,109,111,118,101,40,115,116,97,99,107,41,32,45,45,32,114,101,109, +111,118,101,32,116,111,112,13,10,13,10,32,32,32,32,32,32,116,111,112, +32,61,32,115,116,97,99,107,91,35,115,116,97,99,107,93,13,10,32,32, +32,32,32,32,105,102,32,35,115,116,97,99,107,32,60,32,49,32,116,104, +101,110,13,10,32,32,32,32,32,32,32,32,101,114,114,111,114,40,34,88, +109,108,80,97,114,115,101,114,46,32,110,111,116,104,105,110,103,32,116,111, +32,99,108,111,115,101,32,119,105,116,104,32,34,32,46,46,32,108,97,98, +101,108,41,13,10,32,32,32,32,32,32,101,110,100,13,10,32,32,32,32, +32,32,105,102,32,116,111,99,108,111,115,101,58,110,97,109,101,40,41,32, +126,61,32,108,97,98,101,108,32,116,104,101,110,13,10,32,32,32,32,32, +32,32,32,101,114,114,111,114,40,34,88,109,108,80,97,114,115,101,114,46, +32,116,114,121,105,110,103,32,116,111,32,99,108,111,115,101,32,34,32,46, +46,32,116,111,99,108,111,115,101,46,110,97,109,101,32,46,46,32,34,32, +119,105,116,104,32,34,32,46,46,32,108,97,98,101,108,41,13,10,32,32, +32,32,32,32,101,110,100,13,10,32,32,32,32,32,32,116,111,112,58,97, +100,100,67,104,105,108,100,40,116,111,99,108,111,115,101,41,13,10,32,32, +32,32,101,110,100,13,10,32,32,32,32,105,32,61,32,106,32,43,32,49, +13,10,32,32,101,110,100,13,10,32,32,108,111,99,97,108,32,116,101,120, +116,32,61,32,115,116,114,105,110,103,46,115,117,98,40,120,109,108,84,101, +120,116,44,32,105,41,59,13,10,32,32,105,102,32,35,115,116,97,99,107, +32,62,32,49,32,116,104,101,110,13,10,32,32,32,32,101,114,114,111,114, +40,34,88,109,108,80,97,114,115,101,114,46,32,117,110,99,108,111,115,101, +100,32,34,32,46,46,32,115,116,97,99,107,91,35,115,116,97,99,107,93, +58,110,97,109,101,40,41,41,13,10,32,32,101,110,100,13,10,32,32,114, 101,116,117,114,110,32,116,111,112,13,10,101,110,100,13,10,13,10,102,117, 110,99,116,105,111,110,32,88,109,108,80,97,114,115,101,114,46,108,111,97, 100,70,105,108,101,40,120,109,108,70,105,108,101,110,97,109,101,44,32,98, -97,115,101,41,13,10,32,32,32,32,105,102,32,110,111,116,32,98,97,115, -101,32,116,104,101,110,13,10,32,32,32,32,32,32,32,32,98,97,115,101, -32,61,32,115,121,115,116,101,109,46,82,101,115,111,117,114,99,101,68,105, -114,101,99,116,111,114,121,13,10,32,32,32,32,101,110,100,13,10,13,10, -32,32,32,32,108,111,99,97,108,32,112,97,116,104,32,61,32,115,121,115, -116,101,109,46,112,97,116,104,70,111,114,70,105,108,101,40,120,109,108,70, -105,108,101,110,97,109,101,44,32,98,97,115,101,41,13,10,32,32,32,32, -108,111,99,97,108,32,104,70,105,108,101,44,32,101,114,114,32,61,32,105, -111,46,111,112,101,110,40,112,97,116,104,44,32,34,114,34,41,59,13,10, -13,10,32,32,32,32,105,102,32,104,70,105,108,101,32,97,110,100,32,110, -111,116,32,101,114,114,32,116,104,101,110,13,10,32,32,32,32,32,32,32, -32,108,111,99,97,108,32,120,109,108,84,101,120,116,32,61,32,104,70,105, -108,101,58,114,101,97,100,40,34,42,97,34,41,59,32,45,45,32,114,101, -97,100,32,102,105,108,101,32,99,111,110,116,101,110,116,13,10,32,32,32, -32,32,32,32,32,105,111,46,99,108,111,115,101,40,104,70,105,108,101,41, -59,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,88,109, -108,80,97,114,115,101,114,46,112,97,114,115,101,88,109,108,84,101,120,116, -40,120,109,108,84,101,120,116,41,44,32,110,105,108,59,13,10,32,32,32, -32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,112,114,105,110,116, -40,101,114,114,41,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114, -110,32,110,105,108,13,10,32,32,32,32,101,110,100,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, +97,115,101,41,13,10,32,32,105,102,32,110,111,116,32,98,97,115,101,32, +116,104,101,110,13,10,32,32,32,32,98,97,115,101,32,61,32,115,121,115, +116,101,109,46,82,101,115,111,117,114,99,101,68,105,114,101,99,116,111,114, +121,13,10,32,32,101,110,100,13,10,13,10,32,32,108,111,99,97,108,32, +112,97,116,104,32,61,32,115,121,115,116,101,109,46,112,97,116,104,70,111, +114,70,105,108,101,40,120,109,108,70,105,108,101,110,97,109,101,44,32,98, +97,115,101,41,13,10,32,32,108,111,99,97,108,32,104,70,105,108,101,44, +32,101,114,114,32,61,32,105,111,46,111,112,101,110,40,112,97,116,104,44, +32,34,114,34,41,59,13,10,13,10,32,32,105,102,32,104,70,105,108,101, +32,97,110,100,32,110,111,116,32,101,114,114,32,116,104,101,110,13,10,32, +32,32,32,108,111,99,97,108,32,120,109,108,84,101,120,116,32,61,32,104, +70,105,108,101,58,114,101,97,100,40,34,42,97,34,41,59,32,45,45,32, +114,101,97,100,32,102,105,108,101,32,99,111,110,116,101,110,116,13,10,32, +32,32,32,105,111,46,99,108,111,115,101,40,104,70,105,108,101,41,59,13, +10,32,32,32,32,114,101,116,117,114,110,32,88,109,108,80,97,114,115,101, +114,46,112,97,114,115,101,88,109,108,84,101,120,116,40,120,109,108,84,101, +120,116,41,44,32,110,105,108,59,13,10,32,32,101,108,115,101,13,10,32, +32,32,32,112,114,105,110,116,40,101,114,114,41,13,10,32,32,32,32,114, +101,116,117,114,110,32,110,105,108,13,10,32,32,101,110,100,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,45,45,45,13,10,45, -45,32,69,120,112,111,114,116,32,116,111,32,74,105,110,46,32,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,13, +10,45,45,32,69,120,112,111,114,116,32,116,111,32,74,105,110,46,32,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,45,45,45,13,10,13,10,106,105,110, -46,117,116,105,108,115,46,120,109,108,32,61,32,88,109,108,80,97,114,115, -101,114,0 +45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,106, +105,110,46,117,116,105,108,115,46,120,109,108,32,61,32,88,109,108,80,97, +114,115,101,114,0 }; |