diff --git a/.gitignore b/.gitignore index 29b636a..4d714f7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -.idea +.idea *.iml \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..cc46178 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2015 Lee Gao + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index b95339c..dd55e8f 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,226 @@ -Welcome to Lua, in Lua! -=================== - - -Hey! I'm glad you've found me. I am a somewhat correct compiler for the [Lua 5.2.4](http://lua.org/) language into the Lua Bytecode format, but more than that, I hope that I can become a useful guide for those who are interested in language implementation. - -I grew out of a [month-long sprint](https://github.com/leegao/Lua-SideProjectMonth) from an initiative to complete a side-project within the span of the November of 2015, but I wanted to keep tredding on. - -Why Lua? If you're interested in language implementation, you typically see two types of tutorials out there depending on your background. - -1. If you're in college, chances are you'll find your local Programming Language department to be filled with OCaml/Haskell enthusiasts pushing for compilers for mini-OCaml/Haskell/Imp. You'll be shown the purple Dragon Book and the way out. -2. If you're on your own, chances are you'll stumble across various tutorials on how to use Lex/Yacc masquerading as "How to write your own compiler!" guides. You'll learn about words, and then you get shown this weird parser language called BNF, and finally you get a grammar for some subset of C. "Parsing is the hardest part of a compiler" they'll tell you, "the rest is trivial and is subsequently left as an exercise for the reader." Finally, they'll tell you to go out and buy the purple Dragon Book. - -I've tried both of these approaches, and neither worked. Obviously, the Dragon Book is to be blamed. - -My philosophy: don't read, just do. This is one of the core tenets of people who love to program. No matter how hard you try, you will rarely be able to have a full end-to-end perspective on a large and complex system. Stop falling into never-ending rabbit holes and start iterating. There's no better way to learn about a domain than to get your hands dirty. - -So this is my sell for my grand ambition of getting free labor. Lua turns out to be a rather curious language, both from the language design perspective as well as the choice of tooling that it uses. No matter if you're a fresh developer or a seasoned Clang hacker (that's me!), you're sure to find something fresh and interesting because the design choices made by Lua are somewhat unconventional. So come hack along and squash some bugs. Hopefully you'll gain some valuable insights that'll finally bridge you across the deep chasm between the "How to even Compilers for Dummies" and actually fleshing out your own language. - ----------- - +Welcome to Lua, in Lua! +=================== + + +Hey! I'm glad you've found me. I am a somewhat correct compiler for the [Lua 5.2](http://lua.org/) language into the Lua Bytecode format, but more than that, I hope that I can become a useful guide for those who are interested in language implementation. + +I grew out of a [month-long sprint](https://github.com/leegao/Lua-SideProjectMonth) from an initiative to complete a side-project within the span of the November of 2015, but I wanted to keep tredding on. + +## Installation + +Make sure that you have Lua 5.2 with `luarocks` installed. Note that it's possible that you may have `luarocks` +configured with `luajit`. In this case, the LUA_PATH ought to stay the same, so you can still use the `luainlua` +package; you just won't be able to run `lua.lua`. + +```bash +git clone https://github.com/leegao/LuaInLua.git +cd LuaInLua +luarocks make +``` + +And voila, the package `luainlua` and the script `lua.lua` will be installed. + +## Usage + +`luainlua` comes with a scripted "interpreter" (`lua.lua`) as well as the entire compilation API. + +#### lua.lua + +`lua.lua filename.lua` will compile and run `filename.lua` using the luainlua compiler. In addition, you may pass +in the `-d` flag (at the very end) in order to print a human-readable disassembly, like so + +```bash +leegao@DESKTOP-3RST9I3:/mnt/c/Users/leegao/Documents/IdeaProjects/LuaInLua$ lua.lua testing/hello_world.lua -d +Level 0 +Code +1 (line 10) CLOSURE(A=r(0), Bx=v(0)) +2 (line 13) MOVE(A=r(1), B=r(0)) +3 (line 13) LOADK(A=r(2), Bx=Kst(0)) +4 (line 13) LOADK(A=r(3), Bx=Kst(1)) +5 (line 13) LOADK(A=r(4), Bx=Kst(2)) +6 (line 13) CALL(A=r(1), B=v(4), C=v(1)) +7 (line 9) RETURN(A=r(0), B=v(1)) +Constants +1 1 +2 2 +3 3 +Upvalues +0 _ENV upval 0 + Level 1 + Code + 1 (line 10) GETTABUP(A=r(0), B=v(0), C=Kst(0):rk(256)) + 2 (line 10) VARARG(A=r(1), B=v(0)) + 3 (line 10) CALL(A=r(0), B=v(0), C=v(1)) + 4 (line 10) RETURN(A=r(0), B=v(1)) + Constants + 1 print + Upvalues + 0 _ENV upval 0 +--- END OF DUMP --- +1 2 3 +``` + +Additionally, if you don't specify a file to run, `lua.lua` will read from `stdin`. + +#### Compilation API + +You can directly invoke the `luainlua` compiler using the `luainlua.luac` package. It exposes a single `compile` +method that compiles source code (not file) into a quadruple of a lua function, its raw bytecode (in 5.2 compliant format), its internal representation in `luainlua`, and a human-readable dumper. + +```lua +local luac = require 'luainlua.luac' +local func, bytecode, proto, dumper = luac.compile('print("Hello World")') +-- Inspect the disassembly of bytecode +dumper(proto) +-- Run func +func() +``` + +There's a wealth of internal APIs revolved around the compilation process (`luainlua.lua.*`) as well as the bytecode +format (`luainlua.bytecode.*`) that can be useful for anyone who wishes to understand the Lua internals. + +#### Bootstrapping Test + +The ultimate test of a compiler written in its own language is the bootstrap test. That is, can we use the compiler +to compile itself, and then use the resulting compiler to compile an arbitrary program. + +Here is `hello world` in `lua.lua` in lua. + +```lua +-- lua.lua +luac = require 'luainlua.luac' +func, bytecode, prototype, dumper = luac.compile('print("Hello World")') +dumper(prototype) -- Human readable disassembly +func() +-- +--[[ Level 0 + Code + 1 (line 1) GETTABUP(A=r(0), B=v(0), C=Kst(0):rk(256)) + 2 (line 1) LOADK(A=r(1), Bx=Kst(1)) + 3 (line 1) CALL(A=r(0), B=v(2), C=v(1)) + 4 (line 1) RETURN(A=r(0), B=v(1)) + Constants + 1 print + 2 Hello World + Upvalues + 0 _ENV upval 0 + Hello World +]]-- +``` + +#### Parser + +In addition to the vanilla compiler, `luainlua` also comes with its own recursive-descent powered parser generator +and its own implementation of "regular" regular expression. Both of these are within the `luainlua.parsing.*` and the +`luainlua.ll1.ll1` packages. In addition, you can augment the vanilla `lua` grammar (`luainlua/lua/grammar.ylua`) +and recompile it by just requiring `luainlua.generate_parser`. + +A sample grammar for the handmade parser generator is given here: +``` +%file "experimental_parser" +%require "luainlua.parsing.lex" +%require "luainlua.parsing.re" + +/* +root = expr +rexpr = %eps | $expr | PLUS $expr +expr = $consts $rexpr | ID $rexpr | FUN ID -> $expr | LPAREN $expr RPAREN $rexpr +consts = NUMBER | STRING | TRUE | FALSE +*/ + +%code {: +local string_stack = {} +local function id(token) return function(...) return {token, ...} end end +local function ignore(...) return end +local function pop(stack) return table.remove(stack) end +local function push(item, stack) table.insert(stack, item) end +local tokenizer = lex.lex { + root = { + {'+', id 'PLUS'}, + {'fun', id 'FUN'}, + {'->', id 'ARROW'}, + {'(', id 'LPAREN'}, + {')', id 'RPAREN'}, + {'true', id 'TRUE'}, + {'false', id 'FALSE'}, + {re '%s+', ignore}, + {re '%d+', id 'NUMBER'}, + {re '%d+%.%d+', id 'NUMBER'}, + {re '(%a|_)(%a|%d|_|\')*', id 'ID'}, + {'"', function(piece, lexer) lexer:go 'string'; push('', string_stack) end}, + }, + string = { + {'"', function(piece, lexer) + lexer:go 'root' + return {'STRING', pop(string_stack)} + end}, + {re '.', function(piece, lexer) + push(pop(string_stack) .. piece, string_stack) + end} + }, +} +:} + +%default.action {: + function(item) + return item + end +:} + +%prologue {: + function(stream) + local tokens = {} + for token in tokenizer(stream) do + table.insert(tokens, token) + end + return tokens + end +:} + +%convert {: + function(token) + return token[1] + end +:} + +%epilogue {: + function(result) + return result + end +:} + +%quote '(' LPAREN +%quote ')' RPAREN +%quote 'fun' FUN +%quote '->' ARROW +%quote '+' PLUS +%quote 'true' TRUE +%quote 'false' FALSE + +consts := NUMBER + | STRING + | 'true' + | 'false' + +expr := ('(' $expr ')' | $consts | ID ;) ( '+' $expr | $expr;)? | 'fun' ID+ '->' $expr; +root := $expr; +``` + +This presents a lambda-calculus-esque language. + +# Philosophy + +Why Lua? If you're interested in language implementation, you typically see two types of tutorials out there depending on your background. + +1. If you're in college, chances are you'll find your local Programming Language department to be filled with OCaml/Haskell enthusiasts pushing for compilers for mini-OCaml/Haskell/Imp. You'll be shown the purple Dragon Book and the way out. +2. If you're on your own, chances are you'll stumble across various tutorials on how to use Lex/Yacc masquerading as "How to write your own compiler!" guides. You'll learn about words, and then you get shown this weird parser language called BNF, and finally you get a grammar for some subset of C. "Parsing is the hardest part of a compiler" they'll tell you, "the rest is trivial and is subsequently left as an exercise for the reader." Finally, they'll tell you to go out and buy the purple Dragon Book. + +I've tried both of these approaches, and neither worked. Obviously, the Dragon Book is to be blamed. + +My philosophy: don't read, just do. This is one of the core tenets of people who love to program. No matter how hard you try, you will rarely be able to have a full end-to-end perspective on a large and complex system. Stop falling into never-ending rabbit holes and start iterating. There's no better way to learn about a domain than to get your hands dirty. + +So this is my sell for my grand ambition of getting free labor. Lua turns out to be a rather curious language, both from the language design perspective as well as the choice of tooling that it uses. No matter if you're a fresh developer or a seasoned Clang hacker (that's me!), you're sure to find something fresh and interesting because the design choices made by Lua are somewhat unconventional. So come hack along and squash some bugs. Hopefully you'll gain some valuable insights that'll finally bridge you across the deep chasm between the "How to even Compilers for Dummies" and actually fleshing out your own language. + +---------- + ![Lua](http://www.lua.org/images/logo.gif) \ No newline at end of file diff --git a/hello.lua b/hello.lua index bf3136f..3635995 100644 --- a/hello.lua +++ b/hello.lua @@ -1,90 +1,90 @@ --- local ll1 = require 'll1.ll1' -local parser = require 'lua.parser' -local utils = require 'common.utils' -local re = require 'parsing.re' -local undump = require 'bytecode.undump' - ---print(config:pretty()) ---print(utils.to_list(config:follow('block'))) ---print(config:follows():dot()) ---ll1.yacc(parser.grammar) --- print(utils.to_list(config:get_dependency_graph().reverse['suffixedexp\'star#1'])) ---print(utils.to_list(config:first('stat'))) - ---local seen = {['suffixedexp\'star#1'] = true} ---for node, _, forward, reverse in config:get_dependency_graph():reverse_dfs('suffixedexp\'star#1') do --- if seen[node] then --- print(node) --- for rev, tag in pairs(reverse) do --- for suffix in pairs(tag) do --- local first = ll1.first(config, suffix) --- if first[''] then --- print('', rev, utils.to_string(suffix)) --- seen[rev] = true --- end --- if first['LBRACE'] or first['String'] or first['LBRACK'] or first['LPAREN'] then --- if not first[''] then print('', rev, utils.to_string(suffix)) end --- print('', '', utils.to_list(ll1.first(config, suffix))) --- end --- end --- end --- end ---end - ---ll1.yacc(parser.grammar) ---local srcs = {} ---for line in io.lines 'lua/parser.lua' do --- table.insert(srcs, line) ---end ---debug.sethook( --- function(...) --- local info = debug.getinfo(2) --- local info2 = debug.getinfo(4) --- if not info.name and info.short_src == './lua/parser.lua' and info2.short_src == './ll1/ll1.lua' then --- -- print("call: " .. info.short_src .. ':' .. info.currentline .. ':') --- local local_src = srcs[info.linedefined] --- if local_src:sub(1, #'__GRAMMAR__.grammar["') == '__GRAMMAR__.grammar["' then --- local _, index = debug.getlocal(4, 7) --- local _, conf = debug.getlocal(4, 1) --- local _, state = debug.getlocal(4, 3) --- local production = conf.configuration[state][index] --- print(utils.to_string(production)) --- print("call: " .. info.short_src .. ':' .. info.currentline .. ':', srcs[info.linedefined]) --- end --- end --- end, --- "c") - -local luac = require "luac" -local dump = require "bytecode.dump" -local undump = require "bytecode.undump" - ---local prototype = undump.undump(function(...) print(...) end) ---for pc, op in ipairs(prototype.code) do --- print(pc, op) ---end --- ---local foo, bytecode, prototype, dumper = luac "testing/hello_world.lua" ---dumper() ---foo() - -local compiler, bytecode, prototype, dumper = luac "lua/compiler.lua" --- dumper() -compiler = compiler() -local tree = parser(io.open("lua/compiler.lua", 'r'):read('*all')) -local prototype = compiler(tree) -local bytecode = dump.dump(prototype) -local compiler, err = loadstring(tostring(bytecode)) -compiler = compiler() -local tree = parser(io.open("lua/compiler.lua", 'r'):read('*all')) -local prototype = compiler(tree) -local bytecode = dump.dump(prototype) -local compiler, err = loadstring(tostring(bytecode)) -compiler = compiler() -local tree = parser(io.open("testing/hello_world.lua", 'r'):read('*all')) -local prototype = compiler(tree) -local bytecode = dump.dump(prototype) -local func, err = loadstring(tostring(bytecode)) -func() ---local foo = luac "testing/hello_world.lua" +-- local ll1 = require 'll1.ll1' +local parser = require 'luainlua.lua.parser' +local utils = require 'luainlua.common.utils' +local re = require 'luainlua.parsing.re' +local undump = require 'luainlua.bytecode.undump' + +--print(config:pretty()) +--print(utils.to_list(config:follow('block'))) +--print(config:follows():dot()) +--ll1.yacc(parser.grammar) +-- print(utils.to_list(config:get_dependency_graph().reverse['suffixedexp\'star#1'])) +--print(utils.to_list(config:first('stat'))) + +--local seen = {['suffixedexp\'star#1'] = true} +--for node, _, forward, reverse in config:get_dependency_graph():reverse_dfs('suffixedexp\'star#1') do +-- if seen[node] then +-- print(node) +-- for rev, tag in pairs(reverse) do +-- for suffix in pairs(tag) do +-- local first = ll1.first(config, suffix) +-- if first[''] then +-- print('', rev, utils.to_string(suffix)) +-- seen[rev] = true +-- end +-- if first['LBRACE'] or first['String'] or first['LBRACK'] or first['LPAREN'] then +-- if not first[''] then print('', rev, utils.to_string(suffix)) end +-- print('', '', utils.to_list(ll1.first(config, suffix))) +-- end +-- end +-- end +-- end +--end + +--ll1.yacc(parser.grammar) +--local srcs = {} +--for line in io.lines 'lua/parser.lua' do +-- table.insert(srcs, line) +--end +--debug.sethook( +-- function(...) +-- local info = debug.getinfo(2) +-- local info2 = debug.getinfo(4) +-- if not info.name and info.short_src == './lua/parser.lua' and info2.short_src == './ll1/ll1.lua' then +-- -- print("call: " .. info.short_src .. ':' .. info.currentline .. ':') +-- local local_src = srcs[info.linedefined] +-- if local_src:sub(1, #'__GRAMMAR__.grammar["') == '__GRAMMAR__.grammar["' then +-- local _, index = debug.getlocal(4, 7) +-- local _, conf = debug.getlocal(4, 1) +-- local _, state = debug.getlocal(4, 3) +-- local production = conf.configuration[state][index] +-- print(utils.to_string(production)) +-- print("call: " .. info.short_src .. ':' .. info.currentline .. ':', srcs[info.linedefined]) +-- end +-- end +-- end, +-- "c") + +local luac = require "luainlua.luac" +local dump = require "luainlua.bytecode.dump" +local undump = require "luainlua.bytecode.undump" + +--local prototype = undump.undump(function(...) print(...) end) +--for pc, op in ipairs(prototype.code) do +-- print(pc, op) +--end +-- +--local foo, bytecode, prototype, dumper = luac "testing/hello_world.lua" +--dumper() +--foo() + +local compiler, bytecode, prototype, dumper = luac.luac "luainlua/lua/compiler.lua" +-- dumper() +compiler = compiler() +local tree = parser(io.open("luainlua/lua/compiler.lua", 'r'):read('*all')) +local prototype = compiler(tree) +local bytecode = dump.dump(prototype) +local compiler, err = loadstring(tostring(bytecode)) +compiler = compiler() +local tree = parser(io.open("luainlua/lua/compiler.lua", 'r'):read('*all')) +local prototype = compiler(tree) +local bytecode = dump.dump(prototype) +local compiler, err = loadstring(tostring(bytecode)) +compiler = compiler() +local tree = parser(io.open("luainlua/testing/hello_world.lua", 'r'):read('*all')) +local prototype = compiler(tree) +local bytecode = dump.dump(prototype) +local func, err = loadstring(tostring(bytecode)) +func() +--local foo = luac "testing/hello_world.lua" --foo() \ No newline at end of file diff --git a/lua/parser.table b/lua/parser.table deleted file mode 100644 index c325506..0000000 --- a/lua/parser.table +++ /dev/null @@ -1 +0,0 @@ -return {[1] = {['\101\120\112\054'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 1, ['\077\073\078'] = 1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = 1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\097\114\103\115\039\109\097\121\098\101\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 1, ['\077\073\078'] = 1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = 2, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\101\120\112\039'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 1, ['\084\072\069\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 1, ['\077\073\078'] = 1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = 1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = 1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = 1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\082\069\080\069\065\084'] = 1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = 1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = 1, ['\082\080\065\082\069\078'] = 1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = 1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = 1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 1, ['\079\082'] = 2, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = 1, ['\073\070'] = 1, ['\076\066\082\065\067\075'] = 1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = 1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 1, ['\065\078\068'] = -1}, ['\108\101\118\101\108\054'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = 3, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = 2, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = 1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 2, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 2, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = 1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = 2, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = 1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = 1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\101\120\112\056\039\103\114\111\117\112\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = 1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\102\117\110\099\116\105\111\110\100\101\102'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 1, ['\077\073\078'] = 1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = 1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\098\105\110\111\112'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = 14, ['\077\085\076'] = 13, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = 15, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = 4, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = 6, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = 8, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = 12, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = 1, ['\080\079\087'] = 11, ['\067\079\078\067\065\084'] = 9, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = 5, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = 10, ['\076\069'] = 7, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = 3, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = 2}, ['\115\116\097\116\039\109\097\121\098\101\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\117\110\111\112'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 1, ['\077\073\078'] = 3, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 2, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\101\120\112'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 1, ['\077\073\078'] = 1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\115\116\097\116\039\115\116\097\114\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 1, ['\065\078\068'] = -1}, ['\108\101\118\101\108\056'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = 1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = 1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 2, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = 1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\102\105\101\108\100'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 1, ['\077\073\078'] = 1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = {[1] = 1, [2] = 2}, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = 3, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = 1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = 2, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 2, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\097\115\115\105\103\110\109\101\110\116'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 2, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = 1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = 4, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = 2, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = 3, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\102\105\101\108\100\115\101\112'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 2, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\101\120\112\054\039'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 1, ['\084\072\069\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 1, ['\077\073\078'] = 1, ['\077\085\076'] = 2, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = 1, ['\080\076\085\083'] = 1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = 1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = 1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\082\069\080\069\065\084'] = 1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = 1, ['\036\036\069\079\070\036\036'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = 1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = 1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = 1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = 2, ['\068\079'] = 1, ['\082\080\065\082\069\078'] = 1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = 1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = 1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 1, ['\079\082'] = 1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = 1, ['\073\070'] = 1, ['\076\066\082\065\067\075'] = 1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = 2, ['\076\069'] = 1, ['\069\078\068'] = 1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = 1, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 1, ['\065\078\068'] = 1}, ['\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = 2, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = 2, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = 2, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\082\069\080\069\065\084'] = 2, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = 2, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = 2, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 2, ['\085\078\084\073\076'] = 2, ['\070\085\078\067\084\073\079\078'] = 2, ['\076\079\067\065\076'] = 2, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 2, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 2, ['\070\079\082'] = 2, ['\073\070'] = 2, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 2, ['\065\078\068'] = -1}, ['\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\101\120\112\095\115\116\111\112'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 4, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 8, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 5, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 2, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 3, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 7, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 2, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 6, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 9, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\102\105\101\108\100\039\109\097\121\098\101\035\051'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 2, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 2, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 2, ['\077\073\078'] = 2, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 2, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 2, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 2, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 2, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = 2, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 2, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 2, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\108\101\118\101\108\053'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = 1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = 2, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\114\111\111\116'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = 1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = 1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\082\069\080\069\065\084'] = 1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = 1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = 1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = 1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = 1, ['\073\070'] = 1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\114\101\116\115\116\097\116'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\101\120\112\052'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 1, ['\077\073\078'] = 1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\101\120\112\052\039\103\114\111\117\112\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\102\105\101\108\100\039\109\097\121\098\101\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 2, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 2, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 2, ['\077\073\078'] = 2, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 2, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 2, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 2, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 2, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = 2, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 2, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 2, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\101\120\112\053\039'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 1, ['\084\072\069\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 1, ['\077\073\078'] = {[1] = 1, [2] = 2}, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = 1, ['\080\076\085\083'] = 2, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = 1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = 1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\082\069\080\069\065\084'] = 1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = 1, ['\036\036\069\079\070\036\036'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = 1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = 1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = 1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = 1, ['\082\080\065\082\069\078'] = 1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = 1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = 1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 1, ['\079\082'] = 1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = 1, ['\073\070'] = 1, ['\076\066\082\065\067\075'] = 1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = 1, ['\069\078\068'] = 1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = 1, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 1, ['\065\078\068'] = 1}, ['\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 2, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = {[1] = 1, [2] = 2}, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\115\116\097\116\039\103\114\111\117\112\035\052'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\115\116\097\116\039\103\114\111\117\112\035\050'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = {[1] = 1, [2] = 2}, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\108\101\118\101\108\055'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 2, ['\077\073\078'] = 1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 3, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\108\101\118\101\108\052'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = 1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\115\116\097\116\039\103\114\111\117\112\035\051'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 1, ['\065\078\068'] = -1}, ['\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\097\114\103\115'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 3, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 1, ['\077\073\078'] = 1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = 2, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 2, ['\065\078\068'] = -1}, ['\101\120\112\052\039\109\097\121\098\101\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 2, ['\084\072\069\078'] = 2, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 2, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 2, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 2, ['\077\073\078'] = 2, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = 2, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = 2, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = 2, ['\083\116\114\105\110\103'] = 2, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\082\069\080\069\065\084'] = 2, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = 2, ['\036\036\069\079\070\036\036'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = 2, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = 2, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = 2, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = 2, ['\082\080\065\082\069\078'] = 2, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 2, ['\085\078\084\073\076'] = 2, ['\070\085\078\067\084\073\079\078'] = 2, ['\076\079\067\065\076'] = 2, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 2, ['\079\082'] = 2, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 2, ['\070\079\082'] = 2, ['\073\070'] = 2, ['\076\066\082\065\067\075'] = 2, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 2, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = 2, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = 2, ['\069\078\068'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = 2, ['\078\117\109\098\101\114'] = 2, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 2, ['\065\078\068'] = 2}, ['\101\120\112\056'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\102\117\110\099\098\111\100\121'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\108\101\118\101\108\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = 1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\101\120\112\050\039'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 1, ['\084\072\069\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 1, ['\077\073\078'] = 1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = 1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = 1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = 1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\082\069\080\069\065\084'] = 1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = 1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = 1, ['\082\080\065\082\069\078'] = 1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = 1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = 1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 1, ['\079\082'] = 1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = 1, ['\073\070'] = 1, ['\076\066\082\065\067\075'] = 1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = 1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 1, ['\065\078\068'] = 2}, ['\112\097\114\108\105\115\116'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\115\116\097\116\039\103\114\111\117\112\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 2, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\108\101\118\101\108\051'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = 1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = 5, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = 6, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = 3, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = 4, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = 2, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\108\101\118\101\108\050'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = 1}, ['\115\116\097\116'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = 8, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = 6, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 12, ['\082\069\080\069\065\084'] = 5, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = 9, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = 7, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 11, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 2, ['\076\079\067\065\076'] = 1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 10, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 11, ['\070\079\082'] = 3, ['\073\070'] = 4, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\098\108\111\099\107\039\109\097\121\098\101\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = 2, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 2, ['\065\078\068'] = -1}, ['\112\114\105\109\097\114\121\101\120\112'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 2, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\115\117\102\102\105\120'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = 4, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = 2, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = 3, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\101\120\112\053'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 1, ['\077\073\078'] = 1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = 2, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\101\120\112\108\105\115\116'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 1, ['\077\073\078'] = 1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 2, ['\084\072\069\078'] = 2, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 2, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 2, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 2, ['\077\073\078'] = 2, ['\077\085\076'] = 2, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = 2, ['\080\076\085\083'] = 2, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = 1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = 2, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = 2, ['\083\116\114\105\110\103'] = {[1] = 1, [2] = 2}, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\082\069\080\069\065\084'] = 2, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = 1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = 2, ['\036\036\069\079\070\036\036'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = 2, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = 2, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = 2, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = {[1] = 1, [2] = 2}, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = 2, ['\068\079'] = 2, ['\082\080\065\082\069\078'] = 2, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = {[1] = 1, [2] = 2}, ['\085\078\084\073\076'] = 2, ['\070\085\078\067\084\073\079\078'] = 2, ['\076\079\067\065\076'] = 2, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 2, ['\079\082'] = 2, ['\080\079\087'] = 2, ['\067\079\078\067\065\084'] = 2, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 2, ['\070\079\082'] = 2, ['\073\070'] = 2, ['\076\066\082\065\067\075'] = {[1] = 1, [2] = 2}, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 2, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = 2, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = 2, ['\076\069'] = 2, ['\069\078\068'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = 2, ['\078\117\109\098\101\114'] = 2, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 2, ['\065\078\068'] = 2}, ['\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = 2, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = 2, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = 1, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\082\069\080\069\065\084'] = 2, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = 2, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = 2, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 2, ['\085\078\084\073\076'] = 2, ['\070\085\078\067\084\073\079\078'] = 2, ['\076\079\067\065\076'] = 2, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 2, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 2, ['\070\079\082'] = 2, ['\073\070'] = 2, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 2, ['\065\078\068'] = -1}, ['\102\117\110\099\110\097\109\101'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\102\105\101\108\100\039\109\097\121\098\101\035\050'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 2, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 2, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 2, ['\077\073\078'] = 2, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 2, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 2, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 2, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 2, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = 2, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 2, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 2, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\101\120\112\050'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 1, ['\077\073\078'] = 1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = 2, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = 2, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = 1, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\082\069\080\069\065\084'] = 2, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = 2, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = 2, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 2, ['\085\078\084\073\076'] = 2, ['\070\085\078\067\084\073\079\078'] = 2, ['\076\079\067\065\076'] = 2, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 2, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 2, ['\070\079\082'] = 2, ['\073\070'] = 2, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 2, ['\065\078\068'] = -1}, ['\098\108\111\099\107\039\115\116\097\114\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = 1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = 1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\082\069\080\069\065\084'] = 1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = 1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = 1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = 2, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = 1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = 1, ['\073\070'] = 1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 2, ['\065\078\068'] = -1}, ['\110\097\109\101\108\105\115\116'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = 2, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 2, ['\065\078\068'] = -1}, ['\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = 2, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\101\120\112\051\039'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 1, ['\084\072\069\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 1, ['\077\073\078'] = 1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = 1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = 1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = 1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\082\069\080\069\065\084'] = 1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = 2, ['\036\036\069\079\070\036\036'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = 2, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = 2, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = 1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = 1, ['\082\080\065\082\069\078'] = 1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = 1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = 1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 1, ['\079\082'] = 1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = 1, ['\073\070'] = 1, ['\076\066\082\065\067\075'] = 1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = 2, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = 2, ['\069\078\068'] = 1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = 2, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 1, ['\065\078\068'] = 1}, ['\101\120\112\056\039\109\097\121\098\101\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 2, ['\084\072\069\078'] = 2, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 2, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 2, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 2, ['\077\073\078'] = 2, ['\077\085\076'] = 2, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = 2, ['\080\076\085\083'] = 2, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = 2, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = 2, ['\083\116\114\105\110\103'] = 2, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\082\069\080\069\065\084'] = 2, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = 2, ['\036\036\069\079\070\036\036'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = 2, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = 2, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = 2, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = 2, ['\068\079'] = 2, ['\082\080\065\082\069\078'] = 2, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 2, ['\085\078\084\073\076'] = 2, ['\070\085\078\067\084\073\079\078'] = 2, ['\076\079\067\065\076'] = 2, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 2, ['\079\082'] = 2, ['\080\079\087'] = 1, ['\067\079\078\067\065\084'] = 2, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 2, ['\070\079\082'] = 2, ['\073\070'] = 2, ['\076\066\082\065\067\075'] = 2, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 2, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = 2, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = 2, ['\076\069'] = 2, ['\069\078\068'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = 2, ['\078\117\109\098\101\114'] = 2, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 2, ['\065\078\068'] = 2}, ['\108\097\098\101\108'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = -1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = -1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 2, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = 2, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = 1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = 2, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = 2, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\082\069\080\069\065\084'] = 2, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = 1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = 2, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = 2, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = {[1] = 1, [2] = 2}, ['\085\078\084\073\076'] = 2, ['\070\085\078\067\084\073\079\078'] = 2, ['\076\079\067\065\076'] = 2, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 2, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 2, ['\070\079\082'] = 2, ['\073\070'] = 2, ['\076\066\082\065\067\075'] = 1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 2, ['\065\078\068'] = -1}, ['\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = 1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = 2, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = 2, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\082\069\080\069\065\084'] = 2, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = 2, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = 2, ['\082\080\065\082\069\078'] = 2, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 2, ['\085\078\084\073\076'] = 2, ['\070\085\078\067\084\073\079\078'] = 2, ['\076\079\067\065\076'] = 2, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 2, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 2, ['\070\079\082'] = 2, ['\073\070'] = 2, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 2, ['\065\078\068'] = -1}, ['\101\120\112\055'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 2, ['\077\073\078'] = 2, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 2, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}, ['\098\108\111\099\107'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = -1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = -1, ['\077\073\078'] = -1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = 1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = 1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = -1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\082\069\080\069\065\084'] = 1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = 1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = 1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = 1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = 1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = 1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = 1, ['\073\070'] = 1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = 1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = -1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = 1, ['\065\078\068'] = -1}, ['\101\120\112\051'] = {['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\036\102\105\101\108\100'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\067\079\077\077\065'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\068\079\084\083'] = 1, ['\036\101\120\112\054\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\070\065\076\083\069'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\036\101\120\112\052'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107'] = -1, ['\072\065\083\072'] = 1, ['\077\073\078'] = 1, ['\077\085\076'] = -1, ['\036\097\114\103\115'] = -1, ['\071\079\084\079'] = -1, ['\080\076\085\083'] = -1, ['\036\101\120\112\055'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\087\072\073\076\069'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\083\116\114\105\110\103'] = 1, ['\073\078'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\069\081'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\082\069\080\069\065\084'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\067\079\076\079\078'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\036\101\120\112\053'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\036\101\120\112\050\039'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\069\081\069\081'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\071\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\084'] = -1, ['\036\101\120\112'] = -1, ['\066\082\069\065\075'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\073\086'] = -1, ['\068\079'] = -1, ['\082\080\065\082\069\078'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\076\080\065\082\069\078'] = 1, ['\085\078\084\073\076'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\076\079\067\065\076'] = -1, ['\036\101\120\112\056'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\036\101\120\112\051'] = -1, ['\036\101\120\112\054'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\081\085\065\068'] = -1, ['\079\082'] = -1, ['\080\079\087'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\084\082\085\069'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\050'] = -1, ['\078\097\109\101'] = 1, ['\070\079\082'] = -1, ['\073\070'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\078\079\084'] = 1, ['\036\108\101\118\101\108\052'] = -1, ['\036\101\120\112\053\039'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\071\069'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\077\079\068'] = -1, ['\076\069'] = -1, ['\069\078\068'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\078\079\084\069\081'] = -1, ['\078\117\109\098\101\114'] = 1, ['\036\115\116\097\116'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\078\073\076'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\069\076\083\069\073\070'] = -1, ['\065\078\068'] = -1}}, [2] = {['\101\120\112\054'] = {[1] = {[1] = '\036\101\120\112\055', [2] = '\036\101\120\112\054\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\054'}, ['\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\069\081', [2] = '\036\101\120\112\108\105\115\116', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'}, ['\097\114\103\115\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\101\120\112\108\105\115\116', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\112\114\101\115\101\110\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\097\114\103\115\039\109\097\121\098\101\035\049'}, ['\101\120\112\039'] = {[1] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\036\108\101\118\101\108\049', [2] = '\036\101\120\112\050', [3] = '\036\101\120\112\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\039'}, ['\108\101\118\101\108\054'] = {[1] = {[1] = '\077\079\068', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\068\073\086', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\077\085\076', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\101\118\101\108\054'}, ['\098\108\111\099\107\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\114\101\116\115\116\097\116', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\112\114\101\115\101\110\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\098\108\111\099\107\039\109\097\121\098\101\035\049'}, ['\115\116\097\116'] = {[1] = {[1] = '\076\079\067\065\076', [2] = '\036\115\116\097\116\039\103\114\111\117\112\035\049', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\070\085\078\067\084\073\079\078', [2] = '\036\102\117\110\099\110\097\109\101', [3] = '\036\102\117\110\099\098\111\100\121', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\070\079\082', [2] = '\036\115\116\097\116\039\103\114\111\117\112\035\050', ['\097\099\116\105\111\110'] = nil}, [4] = {[1] = '\073\070', [2] = '\036\101\120\112', [3] = '\084\072\069\078', [4] = '\036\098\108\111\099\107', [5] = '\036\115\116\097\116\039\115\116\097\114\035\049', [6] = '\036\115\116\097\116\039\109\097\121\098\101\035\049', [7] = '\069\078\068', ['\097\099\116\105\111\110'] = nil}, [5] = {[1] = '\082\069\080\069\065\084', [2] = '\036\098\108\111\099\107', [3] = '\085\078\084\073\076', [4] = '\036\101\120\112', ['\097\099\116\105\111\110'] = nil}, [6] = {[1] = '\087\072\073\076\069', [2] = '\036\101\120\112', [3] = '\068\079', [4] = '\036\098\108\111\099\107', [5] = '\069\078\068', ['\097\099\116\105\111\110'] = nil}, [7] = {[1] = '\068\079', [2] = '\036\098\108\111\099\107', [3] = '\069\078\068', ['\097\099\116\105\111\110'] = nil}, [8] = {[1] = '\071\079\084\079', [2] = '\078\097\109\101', ['\097\099\116\105\111\110'] = nil}, [9] = {[1] = '\066\082\069\065\075', ['\097\099\116\105\111\110'] = nil}, [10] = {[1] = '\036\108\097\098\101\108', ['\097\099\116\105\111\110'] = nil}, [11] = {[1] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108', ['\097\099\116\105\111\110'] = nil}, [12] = {[1] = '\083\069\077\073\067\079\076\079\078', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116'}, ['\101\120\112\056\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\036\108\101\118\101\108\056', [2] = '\036\101\120\112\056', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\056\039\103\114\111\117\112\035\049'}, ['\102\117\110\099\116\105\111\110\100\101\102'] = {[1] = {[1] = '\070\085\078\067\084\073\079\078', [2] = '\036\102\117\110\099\098\111\100\121', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\117\110\099\116\105\111\110\100\101\102'}, ['\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\102\105\101\108\100', [2] = '\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\108\105\115\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'}, ['\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\067\079\077\077\065', [2] = '\036\101\120\112', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'}, ['\101\120\112\050\039'] = {[1] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\036\108\101\118\101\108\050', [2] = '\036\101\120\112\051', [3] = '\036\101\120\112\050\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\050\039'}, ['\115\116\097\116\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\115\116\097\116\039\103\114\111\117\112\035\052', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\112\114\101\115\101\110\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\109\097\121\098\101\035\049'}, ['\117\110\111\112'] = {[1] = {[1] = '\072\065\083\072', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\078\079\084', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\077\073\078', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\117\110\111\112'}, ['\101\120\112'] = {[1] = {[1] = '\036\101\120\112\050', [2] = '\036\101\120\112\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112'}, ['\115\116\097\116\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\115\116\097\116\039\103\114\111\117\112\035\051', [2] = '\036\115\116\097\116\039\115\116\097\114\035\049', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\108\105\115\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\115\116\097\114\035\049'}, ['\108\101\118\101\108\056'] = {[1] = {[1] = '\080\079\087', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\101\118\101\108\056'}, ['\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\112\114\101\115\101\110\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'}, ['\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\080\069\082\073\079\068', [2] = '\078\097\109\101', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'}, ['\102\105\101\108\100'] = {[1] = {[1] = '\036\101\120\112', [2] = '\036\102\105\101\108\100\039\109\097\121\098\101\035\049', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\101\120\112'}, [2] = {[1] = '\078\097\109\101', [2] = '\069\081', [3] = '\036\101\120\112', [4] = '\036\102\105\101\108\100\039\109\097\121\098\101\035\050', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\097\115\115\105\103\110'}, [3] = {[1] = '\076\066\082\065\067\075', [2] = '\036\101\120\112', [3] = '\082\066\082\065\067\075', [4] = '\069\081', [5] = '\036\101\120\112', [6] = '\036\102\105\101\108\100\039\109\097\121\098\101\035\051', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\105\101\108\100', ['\099\111\110\102\108\105\099\116'] = {['\078\097\109\101'] = nil}}, ['\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049', [2] = '\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\108\105\115\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'}, ['\097\115\115\105\103\110\109\101\110\116'] = {[1] = {[1] = '\069\081', [2] = '\036\101\120\112\108\105\115\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\067\079\077\077\065', [2] = '\036\112\114\105\109\097\114\121\101\120\112', [3] = '\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049', [4] = '\036\097\115\115\105\103\110\109\101\110\116', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\097\115\115\105\103\110\109\101\110\116'}, ['\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\036\097\114\103\115', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\099\097\108\108'}, [2] = {[1] = '\067\079\076\079\078', [2] = '\078\097\109\101', [3] = '\036\097\114\103\115', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\076\066\082\065\067\075', [2] = '\036\101\120\112', [3] = '\082\066\082\065\067\075', ['\097\099\116\105\111\110'] = nil}, [4] = {[1] = '\080\069\082\073\079\068', [2] = '\078\097\109\101', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'}, ['\102\105\101\108\100\115\101\112'] = {[1] = {[1] = '\083\069\077\073\067\079\076\079\078', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\067\079\077\077\065', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\105\101\108\100\115\101\112'}, ['\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\078\097\109\101', [2] = '\067\079\077\077\065', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\110\097\109\101\108\105\115\116'}, ['\118\097\114\105\097\098\108\101'] = '\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'}, ['\101\120\112\054\039'] = {[1] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\036\108\101\118\101\108\054', [2] = '\036\101\120\112\055', [3] = '\036\101\120\112\054\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\054\039'}, ['\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049', [2] = '\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\108\105\115\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'}, ['\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = {[1] = {[1] = '\036\112\114\105\109\097\114\121\101\120\112', [2] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049', [3] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'}, ['\101\120\112\095\115\116\111\112'] = {[1] = {[1] = '\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\036\112\114\105\109\097\114\121\101\120\112', [2] = '\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\036\102\117\110\099\116\105\111\110\100\101\102', ['\097\099\116\105\111\110'] = nil}, [4] = {[1] = '\068\079\084\083', ['\097\099\116\105\111\110'] = nil}, [5] = {[1] = '\083\116\114\105\110\103', ['\097\099\116\105\111\110'] = nil}, [6] = {[1] = '\078\117\109\098\101\114', ['\097\099\116\105\111\110'] = nil}, [7] = {[1] = '\084\082\085\069', ['\097\099\116\105\111\110'] = nil}, [8] = {[1] = '\070\065\076\083\069', ['\097\099\116\105\111\110'] = nil}, [9] = {[1] = '\078\073\076', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\095\115\116\111\112'}, ['\102\105\101\108\100\039\109\097\121\098\101\035\051'] = {[1] = {[1] = '\036\102\105\101\108\100\115\101\112', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\112\114\101\115\101\110\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\105\101\108\100\039\109\097\121\098\101\035\051'}, ['\108\101\118\101\108\053'] = {[1] = {[1] = '\077\073\078', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\080\076\085\083', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\101\118\101\108\053'}, ['\114\111\111\116'] = {[1] = {[1] = '\036\098\108\111\099\107', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\114\111\111\116'}, ['\114\101\116\115\116\097\116'] = {[1] = {[1] = '\082\069\084\085\082\078', [2] = '\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049', [3] = '\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\114\101\116\115\116\097\116'}, ['\101\120\112\052'] = {[1] = {[1] = '\036\101\120\112\053', [2] = '\036\101\120\112\052\039\109\097\121\098\101\035\049', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\052'}, ['\101\120\112\052\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\036\108\101\118\101\108\052', [2] = '\036\101\120\112\052', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\052\039\103\114\111\117\112\035\049'}, ['\102\105\101\108\100\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\102\105\101\108\100\115\101\112', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\112\114\101\115\101\110\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\105\101\108\100\039\109\097\121\098\101\035\049'}, ['\101\120\112\053\039'] = {[1] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\036\108\101\118\101\108\053', [2] = '\036\101\120\112\054', [3] = '\036\101\120\112\053\039', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\109\105\110\117\115'}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\053\039', ['\099\111\110\102\108\105\099\116'] = {['\077\073\078'] = nil}}, ['\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049', [2] = '\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\108\105\115\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049', ['\099\111\110\102\108\105\099\116'] = {['\078\097\109\101'] = nil}}, ['\115\116\097\116\039\103\114\111\117\112\035\052'] = {[1] = {[1] = '\069\076\083\069', [2] = '\036\098\108\111\099\107', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\103\114\111\117\112\035\052'}, ['\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = {[1] = {[1] = '\076\066\082\065\067\069', [2] = '\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049', [3] = '\082\066\082\065\067\069', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'}, ['\115\116\097\116\039\103\114\111\117\112\035\050'] = {[1] = {[1] = '\036\110\097\109\101\108\105\115\116', [2] = '\073\078', [3] = '\036\101\120\112\108\105\115\116', [4] = '\068\079', [5] = '\036\098\108\111\099\107', [6] = '\069\078\068', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\102\111\114\101\097\099\104'}, [2] = {[1] = '\078\097\109\101', [2] = '\069\081', [3] = '\036\101\120\112', [4] = '\067\079\077\077\065', [5] = '\036\101\120\112', [6] = '\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049', [7] = '\068\079', [8] = '\036\098\108\111\099\107', [9] = '\069\078\068', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\102\111\114\099\111\117\110\116\101\114'}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\103\114\111\117\112\035\050', ['\099\111\110\102\108\105\099\116'] = {['\078\097\109\101'] = nil}}, ['\108\101\118\101\108\055'] = {[1] = {[1] = '\077\073\078', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\072\065\083\072', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\078\079\084', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\101\118\101\108\055'}, ['\108\101\118\101\108\052'] = {[1] = {[1] = '\067\079\078\067\065\084', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\101\118\101\108\052'}, ['\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = {[1] = {[1] = '\067\079\076\079\078', [2] = '\078\097\109\101', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'}, ['\115\116\097\116\039\103\114\111\117\112\035\051'] = {[1] = {[1] = '\069\076\083\069\073\070', [2] = '\036\101\120\112', [3] = '\084\072\069\078', [4] = '\036\098\108\111\099\107', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\103\114\111\117\112\035\051'}, ['\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\067\079\077\077\065', [2] = '\078\097\109\101', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'}, ['\097\114\103\115'] = {[1] = {[1] = '\083\116\114\105\110\103', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\076\080\065\082\069\078', [2] = '\036\097\114\103\115\039\109\097\121\098\101\035\049', [3] = '\082\080\065\082\069\078', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\097\114\103\115'}, ['\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\067\079\077\077\065', [2] = '\036\101\120\112', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'}, ['\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\101\120\112\108\105\115\116', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\112\114\101\115\101\110\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'}, ['\101\120\112\052\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\101\120\112\052\039\103\114\111\117\112\035\049', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\112\114\101\115\101\110\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\052\039\109\097\121\098\101\035\049'}, ['\101\120\112\051'] = {[1] = {[1] = '\036\101\120\112\052', [2] = '\036\101\120\112\051\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\051'}, ['\102\117\110\099\098\111\100\121'] = {[1] = {[1] = '\076\080\065\082\069\078', [2] = '\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049', [3] = '\082\080\065\082\069\078', [4] = '\036\098\108\111\099\107', [5] = '\069\078\068', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\117\110\099\098\111\100\121'}, ['\098\108\111\099\107'] = {[1] = {[1] = '\036\098\108\111\099\107\039\115\116\097\114\035\049', [2] = '\036\098\108\111\099\107\039\109\097\121\098\101\035\049', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\098\108\111\099\107'}, ['\098\105\110\111\112'] = {[1] = {[1] = '\079\082', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\065\078\068', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\078\079\084\069\081', ['\097\099\116\105\111\110'] = nil}, [4] = {[1] = '\069\081\069\081', ['\097\099\116\105\111\110'] = nil}, [5] = {[1] = '\071\069', ['\097\099\116\105\111\110'] = nil}, [6] = {[1] = '\071\084', ['\097\099\116\105\111\110'] = nil}, [7] = {[1] = '\076\069', ['\097\099\116\105\111\110'] = nil}, [8] = {[1] = '\076\084', ['\097\099\116\105\111\110'] = nil}, [9] = {[1] = '\067\079\078\067\065\084', ['\097\099\116\105\111\110'] = nil}, [10] = {[1] = '\077\079\068', ['\097\099\116\105\111\110'] = nil}, [11] = {[1] = '\080\079\087', ['\097\099\116\105\111\110'] = nil}, [12] = {[1] = '\068\073\086', ['\097\099\116\105\111\110'] = nil}, [13] = {[1] = '\077\085\076', ['\097\099\116\105\111\110'] = nil}, [14] = {[1] = '\077\073\078', ['\097\099\116\105\111\110'] = nil}, [15] = {[1] = '\080\076\085\083', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\098\105\110\111\112'}, ['\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\115\117\102\102\105\120', [2] = '\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\108\105\115\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'}, ['\115\116\097\116\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\036\110\097\109\101\108\105\115\116', [2] = '\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\070\085\078\067\084\073\079\078', [2] = '\078\097\109\101', [3] = '\036\102\117\110\099\098\111\100\121', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\103\114\111\117\112\035\049'}, ['\108\101\118\101\108\051'] = {[1] = {[1] = '\069\081\069\081', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\078\079\084\069\081', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\071\069', ['\097\099\116\105\111\110'] = nil}, [4] = {[1] = '\076\069', ['\097\099\116\105\111\110'] = nil}, [5] = {[1] = '\071\084', ['\097\099\116\105\111\110'] = nil}, [6] = {[1] = '\076\084', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\101\118\101\108\051'}, ['\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049', [2] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\108\105\115\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049', ['\099\111\110\102\108\105\099\116'] = {['\076\080\065\082\069\078'] = nil}}, ['\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = {[1] = {[1] = '\068\079\084\083', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\078\097\109\101', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'}, ['\112\097\114\108\105\115\116'] = {[1] = {[1] = '\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049', [2] = '\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\112\097\114\108\105\115\116'}, ['\112\114\105\109\097\114\121\101\120\112'] = {[1] = {[1] = '\076\080\065\082\069\078', [2] = '\036\101\120\112', [3] = '\082\080\065\082\069\078', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\078\097\109\101', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\112\114\105\109\097\114\121\101\120\112'}, ['\115\117\102\102\105\120'] = {[1] = {[1] = '\036\097\114\103\115', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\067\079\076\079\078', [2] = '\078\097\109\101', [3] = '\036\097\114\103\115', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\076\066\082\065\067\075', [2] = '\036\101\120\112', [3] = '\082\066\082\065\067\075', ['\097\099\116\105\111\110'] = nil}, [4] = {[1] = '\080\069\082\073\079\068', [2] = '\078\097\109\101', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\117\102\102\105\120'}, ['\101\120\112\051\039'] = {[1] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\036\108\101\118\101\108\051', [2] = '\036\101\120\112\052', [3] = '\036\101\120\112\051\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\051\039'}, ['\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\112\114\101\115\101\110\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'}, ['\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = {[1] = {[1] = '\083\069\077\073\067\079\076\079\078', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\112\114\101\115\101\110\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'}, ['\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\115\117\102\102\105\120', [2] = '\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\108\105\115\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049', ['\099\111\110\102\108\105\099\116'] = {['\076\066\082\065\067\069'] = nil, ['\076\080\065\082\069\078'] = nil, ['\083\116\114\105\110\103'] = nil, ['\076\066\082\065\067\075'] = nil}}, ['\098\108\111\099\107\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\115\116\097\116', [2] = '\036\098\108\111\099\107\039\115\116\097\114\035\049', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\108\105\115\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\098\108\111\099\107\039\115\116\097\114\035\049'}, ['\102\117\110\099\110\097\109\101'] = {[1] = {[1] = '\078\097\109\101', [2] = '\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049', [3] = '\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\117\110\099\110\097\109\101'}, ['\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\112\114\101\115\101\110\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'}, ['\101\120\112\050'] = {[1] = {[1] = '\036\101\120\112\051', [2] = '\036\101\120\112\050\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\050'}, ['\102\105\101\108\100\039\109\097\121\098\101\035\050'] = {[1] = {[1] = '\036\102\105\101\108\100\115\101\112', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\112\114\101\115\101\110\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\105\101\108\100\039\109\097\121\098\101\035\050'}, ['\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\097\115\115\105\103\110\109\101\110\116', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\112\114\101\115\101\110\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'}, ['\110\097\109\101\108\105\115\116'] = {[1] = {[1] = '\078\097\109\101', [2] = '\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\110\097\109\101\108\105\115\116'}, ['\101\120\112\108\105\115\116'] = {[1] = {[1] = '\036\101\120\112', [2] = '\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\108\105\115\116'}, ['\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\112\097\114\108\105\115\116', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\112\114\101\115\101\110\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'}, ['\101\120\112\053'] = {[1] = {[1] = '\036\101\120\112\054', [2] = '\036\101\120\112\053\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\053'}, ['\101\120\112\056\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\101\120\112\056\039\103\114\111\117\112\035\049', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\112\114\101\115\101\110\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\056\039\109\097\121\098\101\035\049'}, ['\108\097\098\101\108'] = {[1] = {[1] = '\081\085\065\068', [2] = '\078\097\109\101', [3] = '\081\085\065\068', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\097\098\101\108'}, ['\108\101\118\101\108\050'] = {[1] = {[1] = '\065\078\068', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\101\118\101\108\050'}, ['\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049', [2] = '\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049', ['\097\099\116\105\111\110'] = nil, ['\116\097\103'] = '\035\108\105\115\116'}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'}, ['\101\120\112\055'] = {[1] = {[1] = '\036\101\120\112\056', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\036\108\101\118\101\108\055', [2] = '\036\101\120\112\055', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\055'}, ['\108\101\118\101\108\049'] = {[1] = {[1] = '\079\082', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\101\118\101\108\049'}, ['\101\120\112\056'] = {[1] = {[1] = '\036\101\120\112\095\115\116\111\112', [2] = '\036\101\120\112\056\039\109\097\121\098\101\035\049', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\056'}}} \ No newline at end of file diff --git a/luainlua-0.1-0.rockspec b/luainlua-0.1-0.rockspec new file mode 100644 index 0000000..92043e3 --- /dev/null +++ b/luainlua-0.1-0.rockspec @@ -0,0 +1,59 @@ +package = "luainlua" +version = "0.1-0" +source = { + url = "git://github.com/leegao/LuaInLua", +} +description = { + summary = "An example for the LuaRocks tutorial.", + detailed = [[ + This is an example for the LuaRocks tutorial. + Here we would put a detailed, typically + paragraph-long description. + ]], + homepage = "http://...", -- We don't have one yet + license = "MIT/X11" -- or whatever you like +} +dependencies = { + "lua < 5.3", + "bit32", + "argparse", +} +build = { + type = "builtin", + install = { + bin = {"luainlua/lua.lua"}, + }, + modules = { + ['luainlua.bytecode.dump'] = 'luainlua/bytecode/dump.lua', + ['luainlua.bytecode.ir'] = 'luainlua/bytecode/ir.lua', + ['luainlua.bytecode.opcode'] = 'luainlua/bytecode/opcode.lua', + ['luainlua.bytecode.reader'] = 'luainlua/bytecode/reader.lua', + ['luainlua.bytecode.undump'] = 'luainlua/bytecode/undump.lua', + ['luainlua.bytecode.writer'] = 'luainlua/bytecode/writer.lua', + ['luainlua.cfg.cfg'] = 'luainlua/cfg/cfg.lua', + ['luainlua.cfg.liveness'] = 'luainlua/cfg/liveness.lua', + ['luainlua.cfg.local_origin'] = 'luainlua/cfg/local_origin.lua', + ['luainlua.common.graph'] = 'luainlua/common/graph.lua', + ['luainlua.common.utils'] = 'luainlua/common/utils.lua', + ['luainlua.common.worklist'] = 'luainlua/common/worklist.lua', + ['luainlua.hll.hll'] = 'luainlua/hll/hll.lua', + ['luainlua.hll.inlineable'] = 'luainlua/hll/inlineable.lua', + ['luainlua.ll1.elimination'] = 'luainlua/ll1/elimination.lua', + ['luainlua.ll1.ll1'] = 'luainlua/ll1/ll1.lua', + ['luainlua.lua.ast'] = 'luainlua/lua/ast.lua', + ['luainlua.lua.base_visitor'] = 'luainlua/lua/base_visitor.lua', + ['luainlua.lua.compiler'] = 'luainlua/lua/compiler.lua', + ['luainlua.lua.decompiler'] = 'luainlua/lua/decompiler.lua', + ['luainlua.lua.parser'] = 'luainlua/lua/parser.lua', + ['luainlua.lua.parser_table'] = 'luainlua/lua/parser_table.lua', + ['luainlua.lua.tokenizer'] = 'luainlua/lua/tokenizer.lua', + ['luainlua.luac'] = 'luainlua/luac.lua', + ['luainlua.lua'] = 'luainlua/lua.lua', + ['luainlua.generate_parser'] = 'luainlua/generate_parser.lua', + ['luainlua.parsing.lex'] = 'luainlua/parsing/lex.lua', + ['luainlua.parsing.ll1_grammar'] = 'luainlua/parsing/ll1_grammar.lua', + ['luainlua.parsing.ll1_parsing_table'] = 'luainlua/parsing/ll1_parsing_table.lua', + ['luainlua.parsing.ll1_tokenizer'] = 'luainlua/parsing/ll1_tokenizer.lua', + ['luainlua.parsing.re'] = 'luainlua/parsing/re.lua', + }, +} \ No newline at end of file diff --git a/bytecode/dump.lua b/luainlua/bytecode/dump.lua similarity index 88% rename from bytecode/dump.lua rename to luainlua/bytecode/dump.lua index a848a54..24fd6f7 100644 --- a/bytecode/dump.lua +++ b/luainlua/bytecode/dump.lua @@ -1,105 +1,105 @@ -local dump = {} - -local undump = require "bytecode.undump" -- needed for sizet info -local opcode = require "bytecode.opcode" -local writer = require "bytecode.writer" -local utils = require 'common.utils' - -local function generic_list(ctx, list, serializer, size) - local n = #list - local out = ctx.writer - out:int(n, size) - for object in utils.loop(list) do - serializer(ctx, object) - end -end - -function dump.dump_code(ctx, code) - local out = ctx.writer - generic_list( - ctx, - code, - function(ctx, instruction) - out:int(opcode.serialize(instruction), undump.sizeof_instruction) - end) -end - -function dump.dump_constants(ctx, constants) - local out = ctx.writer - generic_list( - ctx, - constants, - function(_, object) - local t = type(object) - if t == 'number' then - out:byte(3) - out:double(object) - elseif t == 'boolean' then - out:byte(1) - out:byte(object and 1 or 0) - elseif t == 'string' then - out:byte(4) - out:string(object, undump.sizeof_sizet) - else - out:byte(0) - end - end) - generic_list(ctx, constants.functions, dump.dump_function) -end - -function dump.dump_upvalues(ctx, upvalues) - local out = ctx.writer - generic_list( - ctx, - upvalues, - function(_, upvalue) out:byte(upvalue.instack):byte(upvalue.index) end) -end - -function dump.dump_debug(ctx, debug) - local out = ctx.writer - out:string(debug.source or "", undump.sizeof_sizet) -- debug.source - generic_list(ctx, debug.lineinfo or {}, function(_, info) out:int(info) end) - generic_list( - ctx, - debug.locals or {}, - function(_, object) out:string(object.name, undump.sizeof_sizet):int(object.first_pc):int(object.last_pc) end) - generic_list(ctx, debug.upvalues or {}, function(_, name) out:string(name, undump.sizeof_sizet) end) -end - -function dump.dump_header(ctx) - local out = ctx.writer - out:int(0x61754c1b) - :byte(0x52) - :byte(0) - :byte(1) - :byte(undump.sizeof_int) - :byte(undump.sizeof_sizet) - :byte(undump.sizeof_instruction) - :byte(undump.sizeof_number) - :byte(0) - :int(0x0a0d9319) - :short(0x0a1a) -end - -function dump.dump_function(ctx, closure) - local out = ctx.writer - out:int(closure.first_line) - out:int(closure.last_line) - out:byte(closure.nparams) - out:byte(closure.is_vararg and 1 or 0) - out:byte(100) -- closure.stack_size - dump.dump_code(ctx, closure.code) - dump.dump_constants(ctx, closure.constants) - dump.dump_upvalues(ctx, closure.upvalues) - dump.dump_debug(ctx, closure.debug) -end - -function dump.dump(closure) - local ctx = {writer = writer.new_writer()} - ctx.writer:configure(undump.sizeof_int) - dump.dump_header(ctx) - dump.dump_function(ctx, closure) - return tostring(ctx.writer) -end - +local dump = {} + +local undump = require "luainlua.bytecode.undump" -- needed for sizet info +local opcode = require "luainlua.bytecode.opcode" +local writer = require "luainlua.bytecode.writer" +local utils = require 'luainlua.common.utils' + +local function generic_list(ctx, list, serializer, size) + local n = #list + local out = ctx.writer + out:int(n, size) + for object in utils.loop(list) do + serializer(ctx, object) + end +end + +function dump.dump_code(ctx, code) + local out = ctx.writer + generic_list( + ctx, + code, + function(ctx, instruction) + out:int(opcode.serialize(instruction), undump.sizeof_instruction) + end) +end + +function dump.dump_constants(ctx, constants) + local out = ctx.writer + generic_list( + ctx, + constants, + function(_, object) + local t = type(object) + if t == 'number' then + out:byte(3) + out:double(object) + elseif t == 'boolean' then + out:byte(1) + out:byte(object and 1 or 0) + elseif t == 'string' then + out:byte(4) + out:string(object, undump.sizeof_sizet) + else + out:byte(0) + end + end) + generic_list(ctx, constants.functions, dump.dump_function) +end + +function dump.dump_upvalues(ctx, upvalues) + local out = ctx.writer + generic_list( + ctx, + upvalues, + function(_, upvalue) out:byte(upvalue.instack):byte(upvalue.index) end) +end + +function dump.dump_debug(ctx, debug) + local out = ctx.writer + out:string(debug.source or "", undump.sizeof_sizet) -- debug.source + generic_list(ctx, debug.lineinfo or {}, function(_, info) out:int(info) end) + generic_list( + ctx, + debug.locals or {}, + function(_, object) out:string(object.name, undump.sizeof_sizet):int(object.first_pc):int(object.last_pc) end) + generic_list(ctx, debug.upvalues or {}, function(_, name) out:string(name, undump.sizeof_sizet) end) +end + +function dump.dump_header(ctx) + local out = ctx.writer + out:int(0x61754c1b) + :byte(0x52) + :byte(0) + :byte(1) + :byte(undump.sizeof_int) + :byte(undump.sizeof_sizet) + :byte(undump.sizeof_instruction) + :byte(undump.sizeof_number) + :byte(0) + :int(0x0a0d9319) + :short(0x0a1a) +end + +function dump.dump_function(ctx, closure) + local out = ctx.writer + out:int(closure.first_line) + out:int(closure.last_line) + out:byte(closure.nparams) + out:byte(closure.is_vararg and 1 or 0) + out:byte(100) -- closure.stack_size + dump.dump_code(ctx, closure.code) + dump.dump_constants(ctx, closure.constants) + dump.dump_upvalues(ctx, closure.upvalues) + dump.dump_debug(ctx, closure.debug) +end + +function dump.dump(closure) + local ctx = {writer = writer.new_writer()} + ctx.writer:configure(undump.sizeof_int) + dump.dump_header(ctx) + dump.dump_function(ctx, closure) + return tostring(ctx.writer) +end + return dump \ No newline at end of file diff --git a/bytecode/ir.lua b/luainlua/bytecode/ir.lua similarity index 96% rename from bytecode/ir.lua rename to luainlua/bytecode/ir.lua index 1ab95da..0836c1d 100644 --- a/bytecode/ir.lua +++ b/luainlua/bytecode/ir.lua @@ -1,89 +1,89 @@ -local ir = {} - -function ir:label(name) - return setmetatable({op="LABEL", name = name, ir=true},{ - __tostring = function(self) - return "."..tostring(self.name) - end, - __eq = function (self, other) - return type(other) == "table" and other.name == self.name - end}) -end - -function ir:cjmp(op, A, B, C, to) - return setmetatable({op="CJMP", cond = op, A = A, B = B, C = C, to = to, ir=true},{ - __tostring = function(self) - return string.format( - "CJMP(op=%s, %s, %s, %s, to = %s)", - self.cond, - tostring(self.A), - tostring(self.B) or '', - tostring(self.C), - self.to) - end}) -end - -function ir:R(r, pos) - if self.Registers[r] then return self.Registers[r] end - local register = setmetatable({r = r, raw = r, pos = pos, ctx = self}, {__tostring = function() - if self.Function then - local local_ = self.Function.debug.locals[r+1] - local name = (local_ or {}).name - if name and tostring(name):byte(1) ~= 40 then - return 'r('..tostring(name)..':' .. r .. ')' - end - end - return "r("..r..")" - end}) - self.Registers[r] = register - return register -end - -function ir:Kst(r, pos) - if self.Constants[r] then return self.Constants[r] end - local register = setmetatable({k = r, raw = r, pos = pos, ctx = self}, {__tostring = function() - if not self.Function then - return "Kst("..r..")" - else - return ''..tostring(self.Function.constants[r+1])..':' .. r - end - end}) - self.Constants[r] = register - return register -end - -function ir:RK(r, pos) - local result - if r < 0x100 then - result = self:R(r, pos) - else - result = self:Kst(r-0x100, pos) - end - return setmetatable( - {rk = result, raw = r, pos = pos, ctx = self}, - {__tostring = function() return tostring(result) .. ':rk(' .. r .. ')' end}) -end - -function ir:V(r, pos) - if self.Values[r] then return self.Values[r] end - local value = setmetatable({v = r, raw = r, pos = pos, ctx = self}, {__tostring = function() return "v("..r..")" end}) - self.Values[r] = value - return value -end - -function ir:configure(func) - self.Function = func -end - -return setmetatable( - ir, - { - __call = function() - local self = {} - self.Values = {} - self.Constants = {} - self.Registers = {} - return setmetatable(self, {__index = ir}) - end - } +local ir = {} + +function ir:label(name) + return setmetatable({op="LABEL", name = name, ir=true},{ + __tostring = function(self) + return "."..tostring(self.name) + end, + __eq = function (self, other) + return type(other) == "table" and other.name == self.name + end}) +end + +function ir:cjmp(op, A, B, C, to) + return setmetatable({op="CJMP", cond = op, A = A, B = B, C = C, to = to, ir=true},{ + __tostring = function(self) + return string.format( + "CJMP(op=%s, %s, %s, %s, to = %s)", + self.cond, + tostring(self.A), + tostring(self.B) or '', + tostring(self.C), + self.to) + end}) +end + +function ir:R(r, pos) + if self.Registers[r] then return self.Registers[r] end + local register = setmetatable({r = r, raw = r, pos = pos, ctx = self}, {__tostring = function() + if self.Function then + local local_ = self.Function.debug.locals[r+1] + local name = (local_ or {}).name + if name and tostring(name):byte(1) ~= 40 then + return 'r('..tostring(name)..':' .. r .. ')' + end + end + return "r("..r..")" + end}) + self.Registers[r] = register + return register +end + +function ir:Kst(r, pos) + if self.Constants[r] then return self.Constants[r] end + local register = setmetatable({k = r, raw = r, pos = pos, ctx = self}, {__tostring = function() + if not self.Function then + return "Kst("..r..")" + else + return ''..tostring(self.Function.constants[r+1])..':' .. r + end + end}) + self.Constants[r] = register + return register +end + +function ir:RK(r, pos) + local result + if r < 0x100 then + result = self:R(r, pos) + else + result = self:Kst(r-0x100, pos) + end + return setmetatable( + {rk = result, raw = r, pos = pos, ctx = self}, + {__tostring = function() return tostring(result) .. ':rk(' .. r .. ')' end}) +end + +function ir:V(r, pos) + if self.Values[r] then return self.Values[r] end + local value = setmetatable({v = r, raw = r, pos = pos, ctx = self}, {__tostring = function() return "v("..r..")" end}) + self.Values[r] = value + return value +end + +function ir:configure(func) + self.Function = func +end + +return setmetatable( + ir, + { + __call = function() + local self = {} + self.Values = {} + self.Constants = {} + self.Registers = {} + return setmetatable(self, {__index = ir}) + end + } ) \ No newline at end of file diff --git a/bytecode/opcode.lua b/luainlua/bytecode/opcode.lua similarity index 96% rename from bytecode/opcode.lua rename to luainlua/bytecode/opcode.lua index 44d34e3..7dd58e8 100644 --- a/bytecode/opcode.lua +++ b/luainlua/bytecode/opcode.lua @@ -1,225 +1,225 @@ -local bit = require "bit" -local ir = require "bytecode.ir" -local utils = require "common.utils" ---[[ -/*---------------------------------------------------------------------- -name args description -------------------------------------------------------------------------*/ -OP_MOVE,/* A B R(A) := R(B) */ -OP_LOADK,/* A Bx R(A) := Kst(Bx) */ -OP_LOADBOOL,/* A B C R(A) := (Bool)B; if (C) pc++ */ -OP_LOADNIL,/* A B R(A) := ... := R(B) := nil */ -OP_GETUPVAL,/* A B R(A) := UpValue[B] */ - -OP_GETGLOBAL,/* A Bx R(A) := Gbl[Kst(Bx)] */ -OP_GETTABLE,/* A B C R(A) := R(B)[RK(C)] */ - -OP_SETGLOBAL,/* A Bx Gbl[Kst(Bx)] := R(A) */ -OP_SETUPVAL,/* A B UpValue[B] := R(A) */ -OP_SETTABLE,/* A B C R(A)[RK(B)] := RK(C) */ - -OP_NEWTABLE,/* A B C R(A) := {} (size = B,C) */ - -OP_SELF,/* A B C R(A+1) := R(B); R(A) := R(B)[RK(C)] */ - -OP_ADD,/* A B C R(A) := RK(B) + RK(C) */ -OP_SUB,/* A B C R(A) := RK(B) - RK(C) */ -OP_MUL,/* A B C R(A) := RK(B) * RK(C) */ -OP_DIV,/* A B C R(A) := RK(B) / RK(C) */ -OP_MOD,/* A B C R(A) := RK(B) % RK(C) */ -OP_POW,/* A B C R(A) := RK(B) ^ RK(C) */ -OP_UNM,/* A B R(A) := -R(B) */ -OP_NOT,/* A B R(A) := not R(B) */ -OP_LEN,/* A B R(A) := length of R(B) */ - -OP_CONCAT,/* A B C R(A) := R(B).. ... ..R(C) */ - -OP_JMP,/* sBx pc+=sBx */ - -OP_EQ,/* A B C if ((RK(B) == RK(C)) ~= A) then pc++ */ -OP_LT,/* A B C if ((RK(B) < RK(C)) ~= A) then pc++ */ -OP_LE,/* A B C if ((RK(B) <= RK(C)) ~= A) then pc++ */ - -OP_TEST,/* A C if not (R(A) <=> C) then pc++ */ -OP_TESTSET,/* A B C if (R(B) <=> C) then R(A) := R(B) else pc++ */ - -OP_CALL,/* A B C R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) */ -OP_TAILCALL,/* A B C return R(A)(R(A+1), ... ,R(A+B-1)) */ -OP_RETURN,/* A B return R(A), ... ,R(A+B-2) (see note) */ - -OP_FORLOOP,/* A sBx R(A)+=R(A+2); - if R(A) C) then pc++ - "TESTSET", --if (R(B) <=> C) then R(A) := R(B) else pc++ - "CALL", --R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) - "TAILCALL", --return R(A)(R(A+1), ... ,R(A+B-1)) - "RETURN", --return R(A), ... ,R(A+B-2)(see note) - "FORLOOP", --R(A)+=R(A+2); - "FORPREP", --R(A)-=R(A+2); pc+=sBx - "TFORCALL", --R(A+3), ... ,R(A+2+C) := R(A)(R(A+1), R(A+2)); - "TFORLOOP", --if R(A+1) ~= nil then { R(A)=R(A+1); pc += sBx } - "SETLIST", --R(A)[(C-1)*FPF+i] := R(A+i), 1 <= i <= B - "CLOSURE", --R(A) := closure(KPROTO[Bx], R(A), ... ,R(A+n)) - "VARARG", --R(A), R(A+1), ..., R(A+B-1) = vararg - "EXTRAARG", --extra (larger) argument for previous opcode -} - -for v,k in ipairs(OPCODES) do - OPCODES[k] = v -end - -local A, B, C, Ax, Bx, sBx = 'A', 'B', 'C', 'Ax', 'Bx', 'sBx' -local R, RK, Kst, V = ir.R, ir.RK, ir.Kst, ir.V -local ARGS = { - {{A, R}, {B, R}}, --R(A) := R(B) - {{A, R}, {Bx, Kst}}, --R(A) := Kst(Bx) - {{A, R}}, --R(A) := Kst(extra arg) (next instruction is extra args) - {{A, R}, {B, V}, {C, V}}, --R(A) := (Bool)B; if (C) pc++ - {{A, R}, {B, R}}, --R(A) := ... := R(B) := nil - {{A, R}, {B, V}}, --R(A) := UpValue[B] - {{A, R}, {B, V}, {C, RK}}, --R(A) := UpValue[B][RK(C)] - {{A, R}, {B, R}, {C, RK}}, --R(A) := R(B)[RK(C)] - {{A, V}, {B, RK}, {C, RK}}, --UpValue[A][RK(B)] := RK(C) - {{A, R}, {B, V}}, --UpValue[B] := R(A) - {{A, R}, {B, RK}, {C, RK}}, --R(A)[RK(B)] := RK(C) - {{A, R}, {B, V}, {C, V}}, --R(A) := {} (size = B,C) - {{A, R}, {B, RK}, {C, RK}}, --R(A) := RK(B) + RK(C) - {{A, R}, {B, RK}, {C, RK}}, - {{A, R}, {B, RK}, {C, RK}}, - {{A, R}, {B, RK}, {C, RK}}, - {{A, R}, {B, RK}, {C, RK}}, - {{A, R}, {B, RK}, {C, RK}}, - {{A, R}, {B, RK}, {C, RK}}, - {{A, R}, {B, R}}, --R(A) := -R(B) - {{A, R}, {B, R}}, - {{A, R}, {B, R}}, --R(A) := length of R(B) - {{A, R}, {B, R}, {C, R}}, --R(A) := R(B).. ... ..R(C) - {{A, V}, {sBx, V}}, --pc+=sBx; if (A) close all upvalues >= R(A - 1) - {{A, V}, {B, RK}, {C, RK}}, --if ((RK(B) == RK(C)) ~= A) then pc++ - {{A, V}, {B, RK}, {C, RK}}, - {{A, V}, {B, RK}, {C, RK}}, - {{A, R}, {C, V}}, --if not (R(A) <=> C) then pc++ - {{A, R}, {B, R}, {C, V}}, --if (R(B) <=> C) then R(A) := R(B) else pc++ - {{A, R}, {B, V}, {C, V}}, --R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) - {{A, R}, {B, R}, {C, function() return V(0) end}}, --return R(A)(R(A+1), ... ,R(A+B-1)) - {{A, R}, {B, V}}, --return R(A), ... ,R(A+B-2)(see note) - {{A, R}, {sBx, V}}, --R(A)+=R(A+2) - {{A, R}, {sBx, V}}, - {{A, R}, {C, V}}, --R(A+3), ... ,R(A+2+C) := R(A)(R(A+1), R(A+2)); - {{A, R}, {sBx, V}}, --if R(A+1) ~= nil then { R(A)=R(A+1); pc += sBx } - {{A, R}, {B, V}, {C, V}}, - {{A, R}, {Bx, V}}, - {{A, R}, {B, V}}, - {{Ax, V}} -} - -local OPMT = {__tostring = function(self) - local r = {"A", "B", "C", "Ax", "Bx", "sBx"} - local r2 = {} - for _,v in ipairs(r) do - if v == "sBx" and self.to then - table.insert(r2,string.format("to=%s",self.to)) - elseif self[v] then - table.insert(r2,string.format("%s=%s",v,tostring(self[v]))) - end - end - return string.format("%s(%s)",self.op, table.concat(r2, ', ')) - end} - -local function instruction(ctx, int, position) - -- 6 8 9 9 - local op = bit.band(int, 0x3f)+1 - local A = bit.rshift(bit.band(int, 0x3fc0), 6) - local C = bit.rshift(bit.band(int, 0x7fc000), 6+8) - local B = bit.rshift(bit.band(int, 0xff800000), 6+8+9) - local Ax = bit.rshift(int, 6) - local Bx = bit.lshift(B, 9)+C - local sBx = Bx - 131071 - local this = {A = A, B = B, C = C, Ax = Ax, Bx = Bx, sBx = sBx } - if not OPCODES[op] then - error("Opcode " .. op .. " not found!") - end - - local inst = setmetatable({op = OPCODES[op]}, OPMT) - for _,v in ipairs(ARGS[op]) do - inst[v[1]] = v[2](ctx, this[v[1]], position) - end - - return inst -end - -local function serialize(instruction) - -- data, pos, ctx - local op = OPCODES[instruction.op] - local A = function(int) return bit.lshift(bit.band(int, 0xff), 6) end - local C = function(int) return bit.lshift(bit.band(int, 0x1ff), 6+8) end - local B = function(int) return bit.lshift(bit.band(int, 0x1ff), 6+8+9) end - local Ax = function(int) return bit.lshift(int, 6) end - local Bx = function(int) return bit.lshift(int, 14) end - local sBx = function(int) return Bx(int + 131071) end - local this = {A = A, B = B, C = C, Ax = Ax, Bx = Bx, sBx = sBx } - local serialized_instruction = op - 1 - - for i, parameter in ipairs(ARGS[op]) do - local type = unpack(parameter) - local arg = instruction[type] - serialized_instruction = bit.bor(serialized_instruction, this[type](arg.raw)) - end - return serialized_instruction -end - -local function make(ctx, pc, name, ...) - local op = OPCODES[name] - assert(ARGS[op], tostring(name)) - local inst = setmetatable({op = OPCODES[op]}, OPMT) - local arguments = {...} - assert( - #ARGS[op] == #arguments, - "Wrong number of arguments for " .. name .. ", expecting " .. #ARGS[op] .. " but got " .. #arguments .. " instead.") - for i, parameter in ipairs(ARGS[op]) do - local type, func = unpack(parameter) - inst[type] = func(ctx, arguments[i], pc) - end - return inst -end - +local bit = require "bit32" +local ir = require "luainlua.bytecode.ir" +local utils = require "luainlua.common.utils" +--[[ +/*---------------------------------------------------------------------- +name args description +------------------------------------------------------------------------*/ +OP_MOVE,/* A B R(A) := R(B) */ +OP_LOADK,/* A Bx R(A) := Kst(Bx) */ +OP_LOADBOOL,/* A B C R(A) := (Bool)B; if (C) pc++ */ +OP_LOADNIL,/* A B R(A) := ... := R(B) := nil */ +OP_GETUPVAL,/* A B R(A) := UpValue[B] */ + +OP_GETGLOBAL,/* A Bx R(A) := Gbl[Kst(Bx)] */ +OP_GETTABLE,/* A B C R(A) := R(B)[RK(C)] */ + +OP_SETGLOBAL,/* A Bx Gbl[Kst(Bx)] := R(A) */ +OP_SETUPVAL,/* A B UpValue[B] := R(A) */ +OP_SETTABLE,/* A B C R(A)[RK(B)] := RK(C) */ + +OP_NEWTABLE,/* A B C R(A) := {} (size = B,C) */ + +OP_SELF,/* A B C R(A+1) := R(B); R(A) := R(B)[RK(C)] */ + +OP_ADD,/* A B C R(A) := RK(B) + RK(C) */ +OP_SUB,/* A B C R(A) := RK(B) - RK(C) */ +OP_MUL,/* A B C R(A) := RK(B) * RK(C) */ +OP_DIV,/* A B C R(A) := RK(B) / RK(C) */ +OP_MOD,/* A B C R(A) := RK(B) % RK(C) */ +OP_POW,/* A B C R(A) := RK(B) ^ RK(C) */ +OP_UNM,/* A B R(A) := -R(B) */ +OP_NOT,/* A B R(A) := not R(B) */ +OP_LEN,/* A B R(A) := length of R(B) */ + +OP_CONCAT,/* A B C R(A) := R(B).. ... ..R(C) */ + +OP_JMP,/* sBx pc+=sBx */ + +OP_EQ,/* A B C if ((RK(B) == RK(C)) ~= A) then pc++ */ +OP_LT,/* A B C if ((RK(B) < RK(C)) ~= A) then pc++ */ +OP_LE,/* A B C if ((RK(B) <= RK(C)) ~= A) then pc++ */ + +OP_TEST,/* A C if not (R(A) <=> C) then pc++ */ +OP_TESTSET,/* A B C if (R(B) <=> C) then R(A) := R(B) else pc++ */ + +OP_CALL,/* A B C R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) */ +OP_TAILCALL,/* A B C return R(A)(R(A+1), ... ,R(A+B-1)) */ +OP_RETURN,/* A B return R(A), ... ,R(A+B-2) (see note) */ + +OP_FORLOOP,/* A sBx R(A)+=R(A+2); + if R(A) C) then pc++ + "TESTSET", --if (R(B) <=> C) then R(A) := R(B) else pc++ + "CALL", --R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) + "TAILCALL", --return R(A)(R(A+1), ... ,R(A+B-1)) + "RETURN", --return R(A), ... ,R(A+B-2)(see note) + "FORLOOP", --R(A)+=R(A+2); + "FORPREP", --R(A)-=R(A+2); pc+=sBx + "TFORCALL", --R(A+3), ... ,R(A+2+C) := R(A)(R(A+1), R(A+2)); + "TFORLOOP", --if R(A+1) ~= nil then { R(A)=R(A+1); pc += sBx } + "SETLIST", --R(A)[(C-1)*FPF+i] := R(A+i), 1 <= i <= B + "CLOSURE", --R(A) := closure(KPROTO[Bx], R(A), ... ,R(A+n)) + "VARARG", --R(A), R(A+1), ..., R(A+B-1) = vararg + "EXTRAARG", --extra (larger) argument for previous opcode +} + +for v,k in ipairs(OPCODES) do + OPCODES[k] = v +end + +local A, B, C, Ax, Bx, sBx = 'A', 'B', 'C', 'Ax', 'Bx', 'sBx' +local R, RK, Kst, V = ir.R, ir.RK, ir.Kst, ir.V +local ARGS = { + {{A, R}, {B, R}}, --R(A) := R(B) + {{A, R}, {Bx, Kst}}, --R(A) := Kst(Bx) + {{A, R}}, --R(A) := Kst(extra arg) (next instruction is extra args) + {{A, R}, {B, V}, {C, V}}, --R(A) := (Bool)B; if (C) pc++ + {{A, R}, {B, R}}, --R(A) := ... := R(B) := nil + {{A, R}, {B, V}}, --R(A) := UpValue[B] + {{A, R}, {B, V}, {C, RK}}, --R(A) := UpValue[B][RK(C)] + {{A, R}, {B, R}, {C, RK}}, --R(A) := R(B)[RK(C)] + {{A, V}, {B, RK}, {C, RK}}, --UpValue[A][RK(B)] := RK(C) + {{A, R}, {B, V}}, --UpValue[B] := R(A) + {{A, R}, {B, RK}, {C, RK}}, --R(A)[RK(B)] := RK(C) + {{A, R}, {B, V}, {C, V}}, --R(A) := {} (size = B,C) + {{A, R}, {B, RK}, {C, RK}}, --R(A) := RK(B) + RK(C) + {{A, R}, {B, RK}, {C, RK}}, + {{A, R}, {B, RK}, {C, RK}}, + {{A, R}, {B, RK}, {C, RK}}, + {{A, R}, {B, RK}, {C, RK}}, + {{A, R}, {B, RK}, {C, RK}}, + {{A, R}, {B, RK}, {C, RK}}, + {{A, R}, {B, R}}, --R(A) := -R(B) + {{A, R}, {B, R}}, + {{A, R}, {B, R}}, --R(A) := length of R(B) + {{A, R}, {B, R}, {C, R}}, --R(A) := R(B).. ... ..R(C) + {{A, V}, {sBx, V}}, --pc+=sBx; if (A) close all upvalues >= R(A - 1) + {{A, V}, {B, RK}, {C, RK}}, --if ((RK(B) == RK(C)) ~= A) then pc++ + {{A, V}, {B, RK}, {C, RK}}, + {{A, V}, {B, RK}, {C, RK}}, + {{A, R}, {C, V}}, --if not (R(A) <=> C) then pc++ + {{A, R}, {B, R}, {C, V}}, --if (R(B) <=> C) then R(A) := R(B) else pc++ + {{A, R}, {B, V}, {C, V}}, --R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) + {{A, R}, {B, R}, {C, function() return V(0) end}}, --return R(A)(R(A+1), ... ,R(A+B-1)) + {{A, R}, {B, V}}, --return R(A), ... ,R(A+B-2)(see note) + {{A, R}, {sBx, V}}, --R(A)+=R(A+2) + {{A, R}, {sBx, V}}, + {{A, R}, {C, V}}, --R(A+3), ... ,R(A+2+C) := R(A)(R(A+1), R(A+2)); + {{A, R}, {sBx, V}}, --if R(A+1) ~= nil then { R(A)=R(A+1); pc += sBx } + {{A, R}, {B, V}, {C, V}}, + {{A, R}, {Bx, V}}, + {{A, R}, {B, V}}, + {{Ax, V}} +} + +local OPMT = {__tostring = function(self) + local r = {"A", "B", "C", "Ax", "Bx", "sBx"} + local r2 = {} + for _,v in ipairs(r) do + if v == "sBx" and self.to then + table.insert(r2,string.format("to=%s",self.to)) + elseif self[v] then + table.insert(r2,string.format("%s=%s",v,tostring(self[v]))) + end + end + return string.format("%s(%s)",self.op, table.concat(r2, ', ')) + end} + +local function instruction(ctx, int, position) + -- 6 8 9 9 + local op = bit.band(int, 0x3f)+1 + local A = bit.rshift(bit.band(int, 0x3fc0), 6) + local C = bit.rshift(bit.band(int, 0x7fc000), 6+8) + local B = bit.rshift(bit.band(int, 0xff800000), 6+8+9) + local Ax = bit.rshift(int, 6) + local Bx = bit.lshift(B, 9)+C + local sBx = Bx - 131071 + local this = {A = A, B = B, C = C, Ax = Ax, Bx = Bx, sBx = sBx } + if not OPCODES[op] then + error("Opcode " .. op .. " not found!") + end + + local inst = setmetatable({op = OPCODES[op]}, OPMT) + for _,v in ipairs(ARGS[op]) do + inst[v[1]] = v[2](ctx, this[v[1]], position) + end + + return inst +end + +local function serialize(instruction) + -- data, pos, ctx + local op = OPCODES[instruction.op] + local A = function(int) return bit.lshift(bit.band(int, 0xff), 6) end + local C = function(int) return bit.lshift(bit.band(int, 0x1ff), 6+8) end + local B = function(int) return bit.lshift(bit.band(int, 0x1ff), 6+8+9) end + local Ax = function(int) return bit.lshift(int, 6) end + local Bx = function(int) return bit.lshift(int, 14) end + local sBx = function(int) return Bx(int + 131071) end + local this = {A = A, B = B, C = C, Ax = Ax, Bx = Bx, sBx = sBx } + local serialized_instruction = op - 1 + + for i, parameter in ipairs(ARGS[op]) do + local type = unpack(parameter) + local arg = instruction[type] + serialized_instruction = bit.bor(serialized_instruction, this[type](arg.raw)) + end + return serialized_instruction +end + +local function make(ctx, pc, name, ...) + local op = OPCODES[name] + assert(ARGS[op], tostring(name)) + local inst = setmetatable({op = OPCODES[op]}, OPMT) + local arguments = {...} + assert( + #ARGS[op] == #arguments, + "Wrong number of arguments for " .. name .. ", expecting " .. #ARGS[op] .. " but got " .. #arguments .. " instead.") + for i, parameter in ipairs(ARGS[op]) do + local type, func = unpack(parameter) + inst[type] = func(ctx, arguments[i], pc) + end + return inst +end + return {instruction = instruction, serialize = serialize, make = make, OPCODES = OPCODES, ARGS = ARGS, OPMT = OPMT} \ No newline at end of file diff --git a/bytecode/reader.lua b/luainlua/bytecode/reader.lua similarity index 91% rename from bytecode/reader.lua rename to luainlua/bytecode/reader.lua index 40b978f..894db4f 100644 --- a/bytecode/reader.lua +++ b/luainlua/bytecode/reader.lua @@ -1,78 +1,78 @@ -local bit = require "bit" -local utils = require "common.utils" - -local function int(str, i, n) - if n == 1 then - return str:byte(i), i + 1 - end - local k = str:byte(i) - local m, i = int(str, i + 1, n-1) - return bit.lshift(m, 8) + k, i -end - -local function short(str, i) - return int(str, i, 2) -end - -local function byte(str, i) - return str:byte(i), i+1 -end - -local function string(str, i, size) - local size, i = int(str, i, size) - if size == 0 then - return nil, i - end - local str = str:sub(i, i+size-2) - return str, i+size -end - -local function double(str, i) - local lo, i = int(str, i, 4) - local hi, i = int(str, i, 4) - if lo == 0 and hi == 0 then return 0, i end - -- 1 11 52 - -- hi:63 - sign - -- hi:62-52 - exp - -- hilo - 0 - man - -- exp_mask = 0b01111111111100000000000000000000 - local e = 2^(bit.rshift(bit.band(hi,0x7ff00000),20)-1023) - --print(bit.tohex(hi),bit.tohex(lo), e) - local m = 1 - for k=1,52 do - local c = 0 - local n, j = lo, k-1 - if j >= 32 then - n, j = hi, j-32 - end - local msk = 2^j - if bit.rshift(bit.band(n, msk), j) ~= 0 then - -- add (1/msk)/2 to m - m = m + (1/(2^(53-i))) - end - end - return m*e, i -end - -local function contexualize(f) - return function(ctx, ...) - local str, i = unpack(ctx) - local r, i = f(str, i, ... or ctx.sizeof_int) - ctx[2] = i - return r - end -end - -local reader = {int=contexualize(int), short=contexualize(short), byte=contexualize(byte), string=contexualize(string), double=contexualize(double), contexualize = contexualize} - -function reader:configure(size) - self.sizeof_int = size -end - -local function new_reader(str) - return setmetatable({str, 1, sizeof_int = 4}, {__index=utils.copy(reader)}) -end - -reader.new_reader = new_reader - +local bit = require "bit32" +local utils = require "luainlua.common.utils" + +local function int(str, i, n) + if n == 1 then + return str:byte(i), i + 1 + end + local k = str:byte(i) + local m, i = int(str, i + 1, n-1) + return bit.lshift(m, 8) + k, i +end + +local function short(str, i) + return int(str, i, 2) +end + +local function byte(str, i) + return str:byte(i), i+1 +end + +local function string(str, i, size) + local size, i = int(str, i, size) + if size == 0 then + return nil, i + end + local str = str:sub(i, i+size-2) + return str, i+size +end + +local function double(str, i) + local lo, i = int(str, i, 4) + local hi, i = int(str, i, 4) + if lo == 0 and hi == 0 then return 0, i end + -- 1 11 52 + -- hi:63 - sign + -- hi:62-52 - exp + -- hilo - 0 - man + -- exp_mask = 0b01111111111100000000000000000000 + local e = 2^(bit.rshift(bit.band(hi,0x7ff00000),20)-1023) + --print(bit.tohex(hi),bit.tohex(lo), e) + local m = 1 + for k=1,52 do + local c = 0 + local n, j = lo, k-1 + if j >= 32 then + n, j = hi, j-32 + end + local msk = 2^j + if bit.rshift(bit.band(n, msk), j) ~= 0 then + -- add (1/msk)/2 to m + m = m + (1/(2^(53-i))) + end + end + return m*e, i +end + +local function contexualize(f) + return function(ctx, ...) + local str, i = unpack(ctx) + local r, i = f(str, i, ... or ctx.sizeof_int) + ctx[2] = i + return r + end +end + +local reader = {int=contexualize(int), short=contexualize(short), byte=contexualize(byte), string=contexualize(string), double=contexualize(double), contexualize = contexualize} + +function reader:configure(size) + self.sizeof_int = size +end + +local function new_reader(str) + return setmetatable({str, 1, sizeof_int = 4}, {__index=utils.copy(reader)}) +end + +reader.new_reader = new_reader + return reader \ No newline at end of file diff --git a/bytecode/undump.lua b/luainlua/bytecode/undump.lua similarity index 87% rename from bytecode/undump.lua rename to luainlua/bytecode/undump.lua index 0c4e534..0a7696e 100644 --- a/bytecode/undump.lua +++ b/luainlua/bytecode/undump.lua @@ -1,160 +1,160 @@ --- See A No-Frills Introduction to Lua 5.1 VM Instructions --- and http://www.lua.org/source/5.2/lundump.c.html#luaU_undump for changes - -local opcode = require "bytecode.opcode" -local reader = require "bytecode.reader" -local ir = require 'bytecode.ir' - -local undump = {} - ---chunk.sizeof_int = 4 ---chunk.sizeof_sizet = 4 ---chunk.sizeof_instruction = 4 -undump.sizeof_number = 8 - -local function generic_list(ctx, parser, size) - local n = ctx:int(size) - local ret = {} - for i = 1, n do - table.insert(ret, parser(ctx)) - end - return ret -end - -local function constant(ctx) - local type = ctx:byte() - - if type == 0 then - return {} -- nil - elseif type == 1 then -- boolean - return ctx:byte() ~= 0 - elseif type == 3 then - return ctx:double() - elseif type == 4 then - return ctx:string(undump.sizeof_sizet) - else - error "Cannot parse constant" - end -end - -function undump.load_header(ctx) - assert(ctx:int() == 0x61754c1b) -- ESC. Lua - assert(ctx:byte() == 0x52) -- version - assert(ctx:byte() == 0) -- format version - assert(ctx:byte() == 1) -- little endian - if not undump.sizeof_int then - undump.sizeof_int = assert(ctx:byte()) -- sizeof(int) - undump.sizeof_sizet = assert(ctx:byte()) -- sizeof(size_t) - undump.sizeof_instruction = assert(ctx:byte()) -- sizeof(Instruction) - else - assert(ctx:byte() == undump.sizeof_int) -- sizeof(int) - assert(ctx:byte() == undump.sizeof_sizet) -- sizeof(size_t) - assert(ctx:byte() == undump.sizeof_instruction) -- sizeof(Instruction) - end - assert(ctx:byte() == undump.sizeof_number) -- sizeof(number) - assert(ctx:byte() == 0) -- is integer - assert(ctx:int() == 0x0a0d9319) -- TAIL - assert(ctx:short() == 0x0a1a) -- MORE TAIL - return -end - - -function undump.load_code(ctx) - local ir = ctx:get_ir() - local n = ctx:int() - local instructions = {} - for i = 1, n do - local int = ctx:int(undump.sizeof_instruction) - local instruction = opcode.instruction(ir, int, i) - local serialized = opcode.serialize(instruction) - assert(serialized == int, serialized .. ' versus ' .. int) - table.insert(instructions, instruction) - end - return instructions -end - -function undump.load_constants(ctx) - local constants = generic_list(ctx, constant) - constants.functions = generic_list(ctx, undump.load_function) - return constants -end - -function undump.load_upvalues(ctx) - return generic_list( - ctx, - function(ctx) - return {instack = ctx:byte(), index = ctx:byte()} - end - ) -end - -function undump.load_debug(ctx) - local source = ctx:string(undump.sizeof_sizet) - local lineinfo = generic_list(ctx, function(ctx) return ctx:int() end) - local locals = generic_list( - ctx, - function(ctx) - return {name = ctx:string(undump.sizeof_sizet), first_pc = ctx:int(), last_pc = ctx:int()} - end - ) - local upvalues = generic_list(ctx, function(ctx) return ctx:string(undump.sizeof_sizet) end) - return { - source = source, - lineinfo = lineinfo, - locals = locals, - upvalues = upvalues, - } -end - -function undump.load_function(ctx) - table.insert(ctx.ir_stack, ir()) - local first_line = ctx:int() - local last_line = ctx:int() - local nparams = ctx:byte() -- 27 - local is_vararg = ctx:byte() - local stack_size = ctx:byte() - local code = undump.load_code(ctx) - local constants = undump.load_constants(ctx) - local upvalues = undump.load_upvalues(ctx) - local debug = undump.load_debug(ctx) - - local ir_context = table.remove(ctx.ir_stack) - local func = { - first_line = first_line, - last_line = last_line, - nparams = nparams, - is_vararg = is_vararg, - stack_size = stack_size, - code = code, - constants = constants, - upvalues = upvalues, - debug = debug, - ir_context = ir_context, - } - ir_context:configure(func) - return func -end - --- Configure the chunk reader for the first time -undump.load_header(reader.new_reader(string.dump(loadstring ''))) - -function undump.undump(str_or_function) - local str = str_or_function - if type(str_or_function) == 'function' then - str = string.dump(str_or_function) - end - assert(type(str) == 'string', "You can only undump functions or bytecode") - local ctx = reader.new_reader(str) - ctx:configure(undump.sizeof_int) - ctx.ir_stack = {} - function ctx:get_ir() - return self.ir_stack[#self.ir_stack] - end - undump.load_header(ctx) -- verify - local func = undump.load_function(ctx) - assert(ctx[2] > #ctx[1], "There is some extra data left inside the bytecode.") - -- TODO: Verify bytecode - return func -end - +-- See A No-Frills Introduction to Lua 5.1 VM Instructions +-- and http://www.lua.org/source/5.2/lundump.c.html#luaU_undump for changes + +local opcode = require "luainlua.bytecode.opcode" +local reader = require "luainlua.bytecode.reader" +local ir = require 'luainlua.bytecode.ir' + +local undump = {} + +--chunk.sizeof_int = 4 +--chunk.sizeof_sizet = 4 +--chunk.sizeof_instruction = 4 +undump.sizeof_number = 8 + +local function generic_list(ctx, parser, size) + local n = ctx:int(size) + local ret = {} + for i = 1, n do + table.insert(ret, parser(ctx)) + end + return ret +end + +local function constant(ctx) + local type = ctx:byte() + + if type == 0 then + return {} -- nil + elseif type == 1 then -- boolean + return ctx:byte() ~= 0 + elseif type == 3 then + return ctx:double() + elseif type == 4 then + return ctx:string(undump.sizeof_sizet) + else + error "Cannot parse constant" + end +end + +function undump.load_header(ctx) + assert(ctx:int() == 0x61754c1b, "Make sure you're running vanilla Lua 5.2") -- ESC. Lua + assert(ctx:byte() == 0x52, "Make sure you're running vanilla Lua 5.2") -- version + assert(ctx:byte() == 0, "Not expecting extensions.") -- format version + assert(ctx:byte() == 1, "Not expecting big-endianess.") -- little endian + if not undump.sizeof_int then + undump.sizeof_int = assert(ctx:byte()) -- sizeof(int) + undump.sizeof_sizet = assert(ctx:byte()) -- sizeof(size_t) + undump.sizeof_instruction = assert(ctx:byte()) -- sizeof(Instruction) + else + assert(ctx:byte() == undump.sizeof_int) -- sizeof(int) + assert(ctx:byte() == undump.sizeof_sizet) -- sizeof(size_t) + assert(ctx:byte() == undump.sizeof_instruction) -- sizeof(Instruction) + end + assert(ctx:byte() == undump.sizeof_number) -- sizeof(number) + assert(ctx:byte() == 0) -- is integer + assert(ctx:int() == 0x0a0d9319) -- TAIL + assert(ctx:short() == 0x0a1a) -- MORE TAIL + return +end + + +function undump.load_code(ctx) + local ir = ctx:get_ir() + local n = ctx:int() + local instructions = {} + for i = 1, n do + local int = ctx:int(undump.sizeof_instruction) + local instruction = opcode.instruction(ir, int, i) + local serialized = opcode.serialize(instruction) + assert(serialized == int, serialized .. ' versus ' .. int) + table.insert(instructions, instruction) + end + return instructions +end + +function undump.load_constants(ctx) + local constants = generic_list(ctx, constant) + constants.functions = generic_list(ctx, undump.load_function) + return constants +end + +function undump.load_upvalues(ctx) + return generic_list( + ctx, + function(ctx) + return {instack = ctx:byte(), index = ctx:byte()} + end + ) +end + +function undump.load_debug(ctx) + local source = ctx:string(undump.sizeof_sizet) + local lineinfo = generic_list(ctx, function(ctx) return ctx:int() end) + local locals = generic_list( + ctx, + function(ctx) + return {name = ctx:string(undump.sizeof_sizet), first_pc = ctx:int(), last_pc = ctx:int()} + end + ) + local upvalues = generic_list(ctx, function(ctx) return ctx:string(undump.sizeof_sizet) end) + return { + source = source, + lineinfo = lineinfo, + locals = locals, + upvalues = upvalues, + } +end + +function undump.load_function(ctx) + table.insert(ctx.ir_stack, ir()) + local first_line = ctx:int() + local last_line = ctx:int() + local nparams = ctx:byte() -- 27 + local is_vararg = ctx:byte() + local stack_size = ctx:byte() + local code = undump.load_code(ctx) + local constants = undump.load_constants(ctx) + local upvalues = undump.load_upvalues(ctx) + local debug = undump.load_debug(ctx) + + local ir_context = table.remove(ctx.ir_stack) + local func = { + first_line = first_line, + last_line = last_line, + nparams = nparams, + is_vararg = is_vararg, + stack_size = stack_size, + code = code, + constants = constants, + upvalues = upvalues, + debug = debug, + ir_context = ir_context, + } + ir_context:configure(func) + return func +end + +-- Configure the chunk reader for the first time +undump.load_header(reader.new_reader(string.dump(loadstring ''))) + +function undump.undump(str_or_function) + local str = str_or_function + if type(str_or_function) == 'function' then + str = string.dump(str_or_function) + end + assert(type(str) == 'string', "You can only undump functions or bytecode") + local ctx = reader.new_reader(str) + ctx:configure(undump.sizeof_int) + ctx.ir_stack = {} + function ctx:get_ir() + return self.ir_stack[#self.ir_stack] + end + undump.load_header(ctx) -- verify + local func = undump.load_function(ctx) + assert(ctx[2] > #ctx[1], "There is some extra data left inside the bytecode.") + -- TODO: Verify bytecode + return func +end + return undump \ No newline at end of file diff --git a/bytecode/writer.lua b/luainlua/bytecode/writer.lua similarity index 92% rename from bytecode/writer.lua rename to luainlua/bytecode/writer.lua index a4a086d..e57b33b 100644 --- a/bytecode/writer.lua +++ b/luainlua/bytecode/writer.lua @@ -1,90 +1,90 @@ -local bit = require "bit" -local utils = require "common.utils" - -local function byte(ctx, byte) - table.insert(ctx.buffer, string.char(byte)) -end - -local function int(ctx, number, n) - byte(ctx, bit.band(number, 0xff)) - if n == 1 then - return - end - int(ctx, bit.rshift(number, 8), n-1) -end - -local function short(ctx, number, n) - int(ctx, number, 2) -end - -local function string(ctx, str, size) - int(ctx, #str + 1, size) - for i = 1, #str do - byte(ctx, str:byte(i)) - end - byte(ctx, 0) -end - -local function mantissa_to_bytes(m) - -- 54 bits - -- floor(2^k * m) = 2^k m_53 + ... + m_{53 - k} - -- 0 - 31 (32 bits), 32 - 54 (23 bits) - local hi = math.floor(0x100000 * m) - local lo = 0x100000 * m - hi - lo = math.floor(lo * 0x100000000) - hi = bit.band(0xfffff, hi) - return lo, hi -end - -local function double(ctx, number) - if number == 0 then int(ctx, 0, 8) return end - local m, e = math.frexp(number) - m = 2*m - e = e - 1 - local lo, hi_m = mantissa_to_bytes(m) - -- 1 11 52 - -- hi:63 - sign - -- hi:62-52 - exp - -- hilo - 0 - man - -- HI LO - -- 00000000000000000000000000000000 00000000000000000000000000000000 - -- Seeeeeeeeeeemmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm - local hi_e = bit.lshift(bit.band(0x7ff, e + 1023), 20) - local sign = bit.lshift(number < 0 and 1 or 0, 31) - local hi = bit.bor(sign, bit.bor(hi_m, hi_e)) - int(ctx, lo, 4) - int(ctx, hi, 4) -end - -local function contexualize(f) - return function(ctx, object, ...) - f(ctx, object, ... or ctx.sizeof_int) - return ctx - end -end - -local writer = { - int = contexualize(int), - short = contexualize(short), - byte = contexualize(byte), - string = contexualize(string), - double = contexualize(double), -} - -function writer:configure(size) - self.sizeof_int = size -end - -function writer.new_writer() - return setmetatable( - {buffer = {}}, - { - __tostring = function(self) - return table.concat(self.buffer) - end, - __index = utils.copy(writer), - } - ) -end - +local bit = require "bit32" +local utils = require "luainlua.common.utils" + +local function byte(ctx, byte) + table.insert(ctx.buffer, string.char(byte)) +end + +local function int(ctx, number, n) + byte(ctx, bit.band(number, 0xff)) + if n == 1 then + return + end + int(ctx, bit.rshift(number, 8), n-1) +end + +local function short(ctx, number, n) + int(ctx, number, 2) +end + +local function string(ctx, str, size) + int(ctx, #str + 1, size) + for i = 1, #str do + byte(ctx, str:byte(i)) + end + byte(ctx, 0) +end + +local function mantissa_to_bytes(m) + -- 54 bits + -- floor(2^k * m) = 2^k m_53 + ... + m_{53 - k} + -- 0 - 31 (32 bits), 32 - 54 (23 bits) + local hi = math.floor(0x100000 * m) + local lo = 0x100000 * m - hi + lo = math.floor(lo * 0x100000000) + hi = bit.band(0xfffff, hi) + return lo, hi +end + +local function double(ctx, number) + if number == 0 then int(ctx, 0, 8) return end + local m, e = math.frexp(number) + m = 2*m + e = e - 1 + local lo, hi_m = mantissa_to_bytes(m) + -- 1 11 52 + -- hi:63 - sign + -- hi:62-52 - exp + -- hilo - 0 - man + -- HI LO + -- 00000000000000000000000000000000 00000000000000000000000000000000 + -- Seeeeeeeeeeemmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm + local hi_e = bit.lshift(bit.band(0x7ff, e + 1023), 20) + local sign = bit.lshift(number < 0 and 1 or 0, 31) + local hi = bit.bor(sign, bit.bor(hi_m, hi_e)) + int(ctx, lo, 4) + int(ctx, hi, 4) +end + +local function contexualize(f) + return function(ctx, object, ...) + f(ctx, object, ... or ctx.sizeof_int) + return ctx + end +end + +local writer = { + int = contexualize(int), + short = contexualize(short), + byte = contexualize(byte), + string = contexualize(string), + double = contexualize(double), +} + +function writer:configure(size) + self.sizeof_int = size +end + +function writer.new_writer() + return setmetatable( + {buffer = {}}, + { + __tostring = function(self) + return table.concat(self.buffer) + end, + __index = utils.copy(writer), + } + ) +end + return writer \ No newline at end of file diff --git a/cfg/cfg.lua b/luainlua/cfg/cfg.lua similarity index 94% rename from cfg/cfg.lua rename to luainlua/cfg/cfg.lua index ac956ec..0ba1044 100644 --- a/cfg/cfg.lua +++ b/luainlua/cfg/cfg.lua @@ -1,235 +1,235 @@ --- Builds a control flow graph from bytecode - -local utils = require 'common.utils' -local undump = require 'bytecode.undump' -local graph = require 'common.graph' - -local cfg = {} - -local simple_ops = { - "MOVE", --R(A) := R(B) - "LOADK", --R(A) := Kst(Bx) - "LOADKX", --R(A) := Kst(extra arg) - "LOADNIL", --R(A) := ... := R(B) := nil - "GETUPVAL", --R(A) := UpValue[B] - "GETTABUP", --R(A) := UpValue[B][RK(C)] - "GETTABLE", --R(A) := R(B)[RK(C)] - "SETTABUP", --UpValue[A][RK(B)] := RK(C) - "SETUPVAL", --UpValue[B] := R(A) - "SETTABLE", --R(A)[RK(B)] := RK(C) - "NEWTABLE", --R(A) := {} (size = B,C) - "SELF", --R(A+1) := R(B); R(A) := R(B)[RK(C)] - "ADD", --R(A) := RK(B) + RK(C) - "SUB", --R(A) := RK(B) - RK(C) - "MUL", --R(A) := RK(B) * RK(C) - "DIV", --R(A) := RK(B) / RK(C) - "MOD", --R(A) := RK(B) % RK(C) - "POW", --R(A) := RK(B) ^ RK(C) - "UNM", --R(A) := -R(B) - "NOT", --R(A) := not R(B) - "LEN", --R(A) := length of R(B) - "CONCAT", --R(A) := R(B).. ... ..R(C) - "CALL", --R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) - "TAILCALL", --return R(A)(R(A+1), ... ,R(A+B-1)) - - "SETLIST", --R(A)[(C-1)*FPF+i] := R(A+i), 1 <= i <= B - "CLOSURE", --R(A) := closure(KPROTO[Bx], R(A), ... ,R(A+n)) - "VARARG", --R(A), R(A+1), ..., R(A+B-1) = vararg - "EXTRAARG", --extra (larger) argument for previous opcode -} - -local jump_ops = { - "LOADBOOL", --R(A) := (Bool)B; if (C) pc++ - "EQ", --if ((RK(B) == RK(C)) ~= A) then pc++ - "LT", --if ((RK(B) < RK(C)) ~= A) then pc++ - "LE", --if ((RK(B) <= RK(C)) ~= A) then pc++ - "TEST", --if not (R(A) <=> C) then pc++ - "TESTSET", --if (R(B) <=> C) then R(A) := R(B) else pc++ -} - -local long_jump_ops = { - "FORPREP", --R(A)-=R(A+2); pc+=sBx - "TFORLOOP", --if R(A+1) ~= nil then { R(A)=R(A+1); pc += sBx } - "FORLOOP", --R(A)+=R(A+2); - "TFORCALL", --R(A+3), ... ,R(A+2+C) := R(A)(R(A+1), R(A+2)); -} - -function cfg.build(closure) - local g = graph() - g:vertex(0, "START") - g:set_root(0) - local v = {} - local predeccessors_map = {[1] = {{0}}} - - local function get_predecessors(to) - return predeccessors_map[to] or {} - end - - local function set_successors(from, to, tag) - if not tag then tag = "fallthrough" end - if not predeccessors_map[to] then predeccessors_map[to] = {} end - table.insert(predeccessors_map[to], {from, tag}) - end - - function v.RETURN(pc, instr) - g:vertex(pc, instr) - end - - function v.JMP(pc, instr) - g:vertex(pc, instr) - set_successors(pc, pc + instr.sBx.raw + 1, 'jump') - end - - for op in utils.loop(simple_ops) do - v[op] = function(pc, instr) - g:vertex(pc, instr) - set_successors(pc, pc + 1) - end - end - - for op in utils.loop(jump_ops) do - v[op] = function(pc, instr) - g:vertex(pc, instr) - set_successors(pc, pc + 1) - set_successors(pc, pc + 2, 'jump') - end - end - - for op in utils.loop(long_jump_ops) do - v[op] = function(pc, instr) - g:vertex(pc, instr) - set_successors(pc, pc + 1) - set_successors(pc, pc + instr.sBx.raw + 1, 'jump') - end - end - - for pc, instr in ipairs(closure.code) do - v[instr.op](pc, instr) - end - - for to, froms in pairs(predeccessors_map) do - for from_pair in utils.loop(froms) do - local from, tag = unpack(from_pair) - g:edge(from, to, tag) - end - end - - local function get_reachable_nodes() - local reachable = {} - for node in g:dfs(0) do - reachable[node] = true - end - return reachable - end - - -- eliminate dead nodes - local reachable_nodes = get_reachable_nodes() - local dead_nodes = {} - for node in g:vertices() do - if not reachable_nodes[node] then - g:remove_vertex(node) - end - end - - return g -end - -function cfg.coalesce(g) - -- reduce a graph into an equivalent graph of basic blocks - -- If N has multiple entries, it has to be an entry node - -- If M has multiple exits, it has to be an exit node - -- If N-M, and N is an exit node, then M is an entry node - -- If N-M, and M is an entry node, then N is an exit node - -- If N-M, and N is not an exit, and M is not an entry, then merge into N-M - local entries, exits = {}, {} - local function change(a, b) - if a[b] then return false else a[b] = true; return true end - end - local changed - repeat - changed = false - for node, tag, forward, reverse in g:dfs(0) do - if #utils.to_list(reverse) > 1 then - changed = change(entries, node) or changed - end - if #utils.to_list(forward) > 1 then - changed = change(exits, node) or changed - end - end - for from, to in g:edges() do - if exits[from] then - changed = change(entries, to) or changed - end - if entries[to] then - changed = change(exits, from) or changed - end - end - until not changed - - local pointers_forward, pointers_reverse = {}, {} - local edges = {} - - for from, to, jump in g:edges() do - if not exits[from] and not entries[to] then - assert(not pointers_reverse[to] and not pointers_forward[from]) - pointers_forward[from] = to - pointers_reverse[to] = from - else - table.insert(edges, {from, to, jump}) - end - end - - local heads, tails = {}, {} - local blocks = {} - - -- compute the correct chains of pointers - local function follow(pointer, pointers, cache) - -- return the "end" of the chain - if cache[pointer] then return cache[pointer] end - if pointers[pointer] then - cache[pointer] = follow(pointers[pointer], pointers, cache) - return cache[pointer] - else - cache[pointer] = pointer - return cache[pointer] - end - end - - for key in g:vertices() do follow(key, pointers_forward, tails) end - for key in g:vertices() do - local head = follow(key, pointers_reverse, heads) - blocks[head] = setmetatable({}, {__tostring = function(self) return tostring(table.concat(utils.map(tostring, self), '\n')) end}) - end - - local g_ = graph() - for head, start in pairs(blocks) do - local id = head - while head do - table.insert(start, g.nodes[head]) - head = pointers_forward[head] - end - g_:vertex(id, start) - end - - for edge in utils.loop(edges) do - local from, to, jump = unpack(edge) - local from_, to_ = heads[from], heads[to] - assert(from_, from) - assert(to_, to) - assert(from_ ~= to_) - g_:edge(from_, to_, jump) - end - return g_ -end - -function cfg.tostring(g) - return g:dot( - function(node, self) return " [label=\"" .. tostring(node) .. "\n" .. tostring(self.nodes[node]) .. "\"]" end, - function(c) return c == true and '' or tostring(c) end) -end - -function cfg.make(closure) - return cfg.coalesce(cfg.build(closure)) -end - +-- Builds a control flow graph from bytecode + +local utils = require 'luainlua.common.utils' +local undump = require 'luainlua.bytecode.undump' +local graph = require 'luainlua.common.graph' + +local cfg = {} + +local simple_ops = { + "MOVE", --R(A) := R(B) + "LOADK", --R(A) := Kst(Bx) + "LOADKX", --R(A) := Kst(extra arg) + "LOADNIL", --R(A) := ... := R(B) := nil + "GETUPVAL", --R(A) := UpValue[B] + "GETTABUP", --R(A) := UpValue[B][RK(C)] + "GETTABLE", --R(A) := R(B)[RK(C)] + "SETTABUP", --UpValue[A][RK(B)] := RK(C) + "SETUPVAL", --UpValue[B] := R(A) + "SETTABLE", --R(A)[RK(B)] := RK(C) + "NEWTABLE", --R(A) := {} (size = B,C) + "SELF", --R(A+1) := R(B); R(A) := R(B)[RK(C)] + "ADD", --R(A) := RK(B) + RK(C) + "SUB", --R(A) := RK(B) - RK(C) + "MUL", --R(A) := RK(B) * RK(C) + "DIV", --R(A) := RK(B) / RK(C) + "MOD", --R(A) := RK(B) % RK(C) + "POW", --R(A) := RK(B) ^ RK(C) + "UNM", --R(A) := -R(B) + "NOT", --R(A) := not R(B) + "LEN", --R(A) := length of R(B) + "CONCAT", --R(A) := R(B).. ... ..R(C) + "CALL", --R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) + "TAILCALL", --return R(A)(R(A+1), ... ,R(A+B-1)) + + "SETLIST", --R(A)[(C-1)*FPF+i] := R(A+i), 1 <= i <= B + "CLOSURE", --R(A) := closure(KPROTO[Bx], R(A), ... ,R(A+n)) + "VARARG", --R(A), R(A+1), ..., R(A+B-1) = vararg + "EXTRAARG", --extra (larger) argument for previous opcode +} + +local jump_ops = { + "LOADBOOL", --R(A) := (Bool)B; if (C) pc++ + "EQ", --if ((RK(B) == RK(C)) ~= A) then pc++ + "LT", --if ((RK(B) < RK(C)) ~= A) then pc++ + "LE", --if ((RK(B) <= RK(C)) ~= A) then pc++ + "TEST", --if not (R(A) <=> C) then pc++ + "TESTSET", --if (R(B) <=> C) then R(A) := R(B) else pc++ +} + +local long_jump_ops = { + "FORPREP", --R(A)-=R(A+2); pc+=sBx + "TFORLOOP", --if R(A+1) ~= nil then { R(A)=R(A+1); pc += sBx } + "FORLOOP", --R(A)+=R(A+2); + "TFORCALL", --R(A+3), ... ,R(A+2+C) := R(A)(R(A+1), R(A+2)); +} + +function cfg.build(closure) + local g = graph() + g:vertex(0, "START") + g:set_root(0) + local v = {} + local predeccessors_map = {[1] = {{0}}} + + local function get_predecessors(to) + return predeccessors_map[to] or {} + end + + local function set_successors(from, to, tag) + if not tag then tag = "fallthrough" end + if not predeccessors_map[to] then predeccessors_map[to] = {} end + table.insert(predeccessors_map[to], {from, tag}) + end + + function v.RETURN(pc, instr) + g:vertex(pc, instr) + end + + function v.JMP(pc, instr) + g:vertex(pc, instr) + set_successors(pc, pc + instr.sBx.raw + 1, 'jump') + end + + for op in utils.loop(simple_ops) do + v[op] = function(pc, instr) + g:vertex(pc, instr) + set_successors(pc, pc + 1) + end + end + + for op in utils.loop(jump_ops) do + v[op] = function(pc, instr) + g:vertex(pc, instr) + set_successors(pc, pc + 1) + set_successors(pc, pc + 2, 'jump') + end + end + + for op in utils.loop(long_jump_ops) do + v[op] = function(pc, instr) + g:vertex(pc, instr) + set_successors(pc, pc + 1) + set_successors(pc, pc + instr.sBx.raw + 1, 'jump') + end + end + + for pc, instr in ipairs(closure.code) do + v[instr.op](pc, instr) + end + + for to, froms in pairs(predeccessors_map) do + for from_pair in utils.loop(froms) do + local from, tag = unpack(from_pair) + g:edge(from, to, tag) + end + end + + local function get_reachable_nodes() + local reachable = {} + for node in g:dfs(0) do + reachable[node] = true + end + return reachable + end + + -- eliminate dead nodes + local reachable_nodes = get_reachable_nodes() + local dead_nodes = {} + for node in g:vertices() do + if not reachable_nodes[node] then + g:remove_vertex(node) + end + end + + return g +end + +function cfg.coalesce(g) + -- reduce a graph into an equivalent graph of basic blocks + -- If N has multiple entries, it has to be an entry node + -- If M has multiple exits, it has to be an exit node + -- If N-M, and N is an exit node, then M is an entry node + -- If N-M, and M is an entry node, then N is an exit node + -- If N-M, and N is not an exit, and M is not an entry, then merge into N-M + local entries, exits = {}, {} + local function change(a, b) + if a[b] then return false else a[b] = true; return true end + end + local changed + repeat + changed = false + for node, tag, forward, reverse in g:dfs(0) do + if #utils.to_list(reverse) > 1 then + changed = change(entries, node) or changed + end + if #utils.to_list(forward) > 1 then + changed = change(exits, node) or changed + end + end + for from, to in g:edges() do + if exits[from] then + changed = change(entries, to) or changed + end + if entries[to] then + changed = change(exits, from) or changed + end + end + until not changed + + local pointers_forward, pointers_reverse = {}, {} + local edges = {} + + for from, to, jump in g:edges() do + if not exits[from] and not entries[to] then + assert(not pointers_reverse[to] and not pointers_forward[from]) + pointers_forward[from] = to + pointers_reverse[to] = from + else + table.insert(edges, {from, to, jump}) + end + end + + local heads, tails = {}, {} + local blocks = {} + + -- compute the correct chains of pointers + local function follow(pointer, pointers, cache) + -- return the "end" of the chain + if cache[pointer] then return cache[pointer] end + if pointers[pointer] then + cache[pointer] = follow(pointers[pointer], pointers, cache) + return cache[pointer] + else + cache[pointer] = pointer + return cache[pointer] + end + end + + for key in g:vertices() do follow(key, pointers_forward, tails) end + for key in g:vertices() do + local head = follow(key, pointers_reverse, heads) + blocks[head] = setmetatable({}, {__tostring = function(self) return tostring(table.concat(utils.map(tostring, self), '\n')) end}) + end + + local g_ = graph() + for head, start in pairs(blocks) do + local id = head + while head do + table.insert(start, g.nodes[head]) + head = pointers_forward[head] + end + g_:vertex(id, start) + end + + for edge in utils.loop(edges) do + local from, to, jump = unpack(edge) + local from_, to_ = heads[from], heads[to] + assert(from_, from) + assert(to_, to) + assert(from_ ~= to_) + g_:edge(from_, to_, jump) + end + return g_ +end + +function cfg.tostring(g) + return g:dot( + function(node, self) return " [label=\"" .. tostring(node) .. "\n" .. tostring(self.nodes[node]) .. "\"]" end, + function(c) return c == true and '' or tostring(c) end) +end + +function cfg.make(closure) + return cfg.coalesce(cfg.build(closure)) +end + return cfg \ No newline at end of file diff --git a/cfg/liveness.lua b/luainlua/cfg/liveness.lua similarity index 95% rename from cfg/liveness.lua rename to luainlua/cfg/liveness.lua index 1dd91ac..deb4280 100644 --- a/cfg/liveness.lua +++ b/luainlua/cfg/liveness.lua @@ -1,252 +1,252 @@ --- Live variable analysis: computing whether a register is live at a program point - -local utils = require 'common.utils' -local cfg = require 'cfg.cfg' -local undump = require 'bytecode.undump' -local worklist = require 'common.worklist' - -local TOP = 'TOP' - -local liveness = {} - -local woot = function(n) n = unpack(n) return n > 255 and {} or {n} end - -local A = function(instr) return woot {instr.A.raw} end -local B = function(instr) return woot {instr.B.raw} end -local C = function(instr) return woot {instr.C.raw} end -local function top(number) - return function(instr) - local x = unpack(number(instr)) - if x == 0 then - return {TOP} - end - return {x} - end -end -local function range(from, number) - return function(instr) - local left = unpack(from(instr)) - local num = unpack(number(instr)) - local registers = {} - if num == TOP then return {left} end - for i = 0, num do - table.insert(registers, left + i) - end - return registers - end -end -local function offset(start, amount, invert) - return function(instr) - local left = unpack(start(instr)) - local off = unpack(amount(instr)) - if left == TOP then return {TOP} end - return {invert and (left - off) or (left + off)} - end -end -local function constant(n) - return function() return {n} end -end - -local function kill(...) - local actions = {...} - return function(self, pc, instr, current, graph, node) - local new = utils.copy(current) - for action in utils.loop(actions) do - for register in utils.loop(action(instr)) do - new[register] = nil - end - end - return new - end -end - -local function use(...) - local actions = {...} - return function(self, pc, instr, current, graph, node) - local new = utils.copy(current) - for action in utils.loop(actions) do - for register in utils.loop(action(instr)) do - new[register] = true - end - end - return new - end -end - -local actions = { - {"MOVE", kill(A), use(B)}, --R(A) := R(B) - {"LOADK", kill(A), use()}, --R(A) := Kst(Bx) - {"LOADKX", kill(A), use()}, --R(A) := Kst(extra arg) - {"LOADBOOL", kill(A), use()}, --R(A) := (Bool)B; if (C) pc++ - {"LOADNIL", kill(range(A, offset(B, A, true))), use()}, --R(A) := ... := R(B) := nil - {"GETUPVAL", kill(A), use()}, --R(A) := UpValue[B] - {"GETTABUP", kill(A), use(C)}, --R(A) := UpValue[B][RK(C)] - {"GETTABLE", kill(A), use(B, C)}, --R(A) := R(B)[RK(C)] - {"SETTABUP", kill(), use(B, C)}, --UpValue[A][RK(B)] := RK(C) - {"SETUPVAL", kill(), use(A)}, --UpValue[B] := R(A) - {"SETTABLE", kill(), use(A, B, C)}, --R(A)[RK(B)] := RK(C) - {"NEWTABLE", kill(A), use()}, --R(A) := {} (size = B,C) - {"SELF", kill(A, offset(A, constant(1))), use(B, C)}, --R(A+1) := R(B); R(A) := R(B)[RK(C)] - {"ADD", kill(A), use(B, C)}, --R(A) := RK(B) + RK(C) - {"SUB", kill(A), use(B, C)}, --R(A) := RK(B) - RK(C) - {"MUL", kill(A), use(B, C)}, --R(A) := RK(B) * RK(C) - {"DIV", kill(A), use(B, C)}, --R(A) := RK(B) / RK(C) - {"MOD", kill(A), use(B, C)}, --R(A) := RK(B) % RK(C) - {"POW", kill(A), use(B, C)}, --R(A) := RK(B) ^ RK(C) - {"UNM", kill(A), use(B)}, --R(A) := -R(B) - {"NOT", kill(A), use(B)}, --R(A) := not R(B) - {"LEN", kill(A), use(B)}, --R(A) := length of R(B) - {"CONCAT", kill(A), use(range(B, offset(C, B, true)))}, --R(A) := R(B).. ... ..R(C) - {"JMP", kill(), use()}, --pc+=sBx - {"EQ", kill(), use(B, C)}, --if ((RK(B) == RK(C)) ~= A) then pc++ - {"LT", kill(), use(B, C)}, --if ((RK(B) < RK(C)) ~= A) then pc++ - {"LE", kill(), use(B, C)}, --if ((RK(B) <= RK(C)) ~= A) then pc++ - {"TEST", kill(), use(A)}, --if not (R(A) <=> C) then pc++ - {"TESTSET", kill(A), use(B)}, --if (R(B) <=> C) then R(A) := R(B) else pc++ - {"CALL", - kill(range(A, offset(top(C), constant(-2)))), - use(range(A, offset(top(B), constant(-1))))}, --R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) - {"TAILCALL", kill(), use(range(A, offset(top(B), constant(-1))))}, --return R(A)(R(A+1), ... ,R(A+B-1)) - {"RETURN", kill(), use(range(A, offset(top(B), constant(-2))))}, --return R(A), ... ,R(A+B-2)(see note) - {"FORLOOP", - kill(A, offset(A, constant(1)), offset(A, constant(2)), offset(A, constant(3))), - use()}, --R(A)+=R(A+2); - --if R(A) ', utils.to_list(solution:after(pc))) ---end - -liveness.solve = solve - --- function(self, pc, instr, current, graph, node) -local uses_semantics, defs_semantics, semantics = {}, {}, {} - -for bundle in utils.loop(actions) do - uses_semantics[bundle[1]] = bundle[3] - defs_semantics[bundle[1]] = bundle[2] - semantics[bundle[1]] = function(self, pc, instr, current, graph, node) - current = bundle[2](self, pc, instr, current, graph, node) - return bundle[3](self, pc, instr, current, graph, node) - end -end - -liveness.uses = uses_semantics -liveness.defs = defs_semantics -liveness.semantics = semantics - +-- Live variable analysis: computing whether a register is live at a program point + +local utils = require 'luainlua.common.utils' +local cfg = require 'luainlua.cfg.cfg' +local undump = require 'luainlua.bytecode.undump' +local worklist = require 'luainlua.common.worklist' + +local TOP = 'TOP' + +local liveness = {} + +local woot = function(n) n = unpack(n) return n > 255 and {} or {n} end + +local A = function(instr) return woot {instr.A.raw} end +local B = function(instr) return woot {instr.B.raw} end +local C = function(instr) return woot {instr.C.raw} end +local function top(number) + return function(instr) + local x = unpack(number(instr)) + if x == 0 then + return {TOP} + end + return {x} + end +end +local function range(from, number) + return function(instr) + local left = unpack(from(instr)) + local num = unpack(number(instr)) + local registers = {} + if num == TOP then return {left} end + for i = 0, num do + table.insert(registers, left + i) + end + return registers + end +end +local function offset(start, amount, invert) + return function(instr) + local left = unpack(start(instr)) + local off = unpack(amount(instr)) + if left == TOP then return {TOP} end + return {invert and (left - off) or (left + off)} + end +end +local function constant(n) + return function() return {n} end +end + +local function kill(...) + local actions = {...} + return function(self, pc, instr, current, graph, node) + local new = utils.copy(current) + for action in utils.loop(actions) do + for register in utils.loop(action(instr)) do + new[register] = nil + end + end + return new + end +end + +local function use(...) + local actions = {...} + return function(self, pc, instr, current, graph, node) + local new = utils.copy(current) + for action in utils.loop(actions) do + for register in utils.loop(action(instr)) do + new[register] = true + end + end + return new + end +end + +local actions = { + {"MOVE", kill(A), use(B)}, --R(A) := R(B) + {"LOADK", kill(A), use()}, --R(A) := Kst(Bx) + {"LOADKX", kill(A), use()}, --R(A) := Kst(extra arg) + {"LOADBOOL", kill(A), use()}, --R(A) := (Bool)B; if (C) pc++ + {"LOADNIL", kill(range(A, offset(B, A, true))), use()}, --R(A) := ... := R(B) := nil + {"GETUPVAL", kill(A), use()}, --R(A) := UpValue[B] + {"GETTABUP", kill(A), use(C)}, --R(A) := UpValue[B][RK(C)] + {"GETTABLE", kill(A), use(B, C)}, --R(A) := R(B)[RK(C)] + {"SETTABUP", kill(), use(B, C)}, --UpValue[A][RK(B)] := RK(C) + {"SETUPVAL", kill(), use(A)}, --UpValue[B] := R(A) + {"SETTABLE", kill(), use(A, B, C)}, --R(A)[RK(B)] := RK(C) + {"NEWTABLE", kill(A), use()}, --R(A) := {} (size = B,C) + {"SELF", kill(A, offset(A, constant(1))), use(B, C)}, --R(A+1) := R(B); R(A) := R(B)[RK(C)] + {"ADD", kill(A), use(B, C)}, --R(A) := RK(B) + RK(C) + {"SUB", kill(A), use(B, C)}, --R(A) := RK(B) - RK(C) + {"MUL", kill(A), use(B, C)}, --R(A) := RK(B) * RK(C) + {"DIV", kill(A), use(B, C)}, --R(A) := RK(B) / RK(C) + {"MOD", kill(A), use(B, C)}, --R(A) := RK(B) % RK(C) + {"POW", kill(A), use(B, C)}, --R(A) := RK(B) ^ RK(C) + {"UNM", kill(A), use(B)}, --R(A) := -R(B) + {"NOT", kill(A), use(B)}, --R(A) := not R(B) + {"LEN", kill(A), use(B)}, --R(A) := length of R(B) + {"CONCAT", kill(A), use(range(B, offset(C, B, true)))}, --R(A) := R(B).. ... ..R(C) + {"JMP", kill(), use()}, --pc+=sBx + {"EQ", kill(), use(B, C)}, --if ((RK(B) == RK(C)) ~= A) then pc++ + {"LT", kill(), use(B, C)}, --if ((RK(B) < RK(C)) ~= A) then pc++ + {"LE", kill(), use(B, C)}, --if ((RK(B) <= RK(C)) ~= A) then pc++ + {"TEST", kill(), use(A)}, --if not (R(A) <=> C) then pc++ + {"TESTSET", kill(A), use(B)}, --if (R(B) <=> C) then R(A) := R(B) else pc++ + {"CALL", + kill(range(A, offset(top(C), constant(-2)))), + use(range(A, offset(top(B), constant(-1))))}, --R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) + {"TAILCALL", kill(), use(range(A, offset(top(B), constant(-1))))}, --return R(A)(R(A+1), ... ,R(A+B-1)) + {"RETURN", kill(), use(range(A, offset(top(B), constant(-2))))}, --return R(A), ... ,R(A+B-2)(see note) + {"FORLOOP", + kill(A, offset(A, constant(1)), offset(A, constant(2)), offset(A, constant(3))), + use()}, --R(A)+=R(A+2); + --if R(A) ', utils.to_list(solution:after(pc))) +--end + +liveness.solve = solve + +-- function(self, pc, instr, current, graph, node) +local uses_semantics, defs_semantics, semantics = {}, {}, {} + +for bundle in utils.loop(actions) do + uses_semantics[bundle[1]] = bundle[3] + defs_semantics[bundle[1]] = bundle[2] + semantics[bundle[1]] = function(self, pc, instr, current, graph, node) + current = bundle[2](self, pc, instr, current, graph, node) + return bundle[3](self, pc, instr, current, graph, node) + end +end + +liveness.uses = uses_semantics +liveness.defs = defs_semantics +liveness.semantics = semantics + return liveness \ No newline at end of file diff --git a/cfg/local_origin.lua b/luainlua/cfg/local_origin.lua similarity index 95% rename from cfg/local_origin.lua rename to luainlua/cfg/local_origin.lua index 9304c18..3cde67a 100644 --- a/cfg/local_origin.lua +++ b/luainlua/cfg/local_origin.lua @@ -1,228 +1,228 @@ --- Computes the local origin of a variable definition - -local utils = require 'common.utils' -local cfg = require 'cfg.cfg' -local undump = require 'bytecode.undump' -local worklist = require 'common.worklist' - -local TOP = 'TOP' - -local origin = {} - -local woot = function(n) n = unpack(n) return n > 255 and {} or {n} end - -local A = function(instr) return woot {instr.A.raw} end -local B = function(instr) return woot {instr.B.raw} end -local C = function(instr) return woot {instr.C.raw} end -local function top(number) - return function(instr) - local x = unpack(number(instr)) - if x == 0 then - return {TOP} - end - return {x} - end -end -local function range(from, number) - return function(instr) - local left = unpack(from(instr)) - local num = unpack(number(instr)) - local registers = {} - if num == TOP then return {left} end - for i = 0, num do - table.insert(registers, left + i) - end - return registers - end -end -local function offset(start, amount, invert) - return function(instr) - local left = unpack(start(instr)) - local off = unpack(amount(instr)) - if left == TOP then return {TOP} end - return {invert and (left - off) or (left + off)} - end -end -local function constant(n) - return function() return {n} end -end - -local function kill(...) - local actions = {...} - return function(self, pc, instr, current, graph, node) - local new = utils.copy(current) - for action in utils.loop(actions) do - for register in utils.loop(action(instr)) do - new[register] = {[pc] = true} - end - end - return new - end -end - -local actions = { - {"MOVE", kill(A)}, --R(A) := R(B) - {"LOADK", kill(A)}, --R(A) := Kst(Bx) - {"LOADKX", kill(A)}, --R(A) := Kst(extra arg) - {"LOADBOOL", kill(A)}, --R(A) := (Bool)B; if (C) pc++ - {"LOADNIL", kill(range(A, offset(B, A, true)))}, --R(A) := ... := R(B) := nil - {"GETUPVAL", kill(A)}, --R(A) := UpValue[B] - {"GETTABUP", kill(A)}, --R(A) := UpValue[B][RK(C)] - {"GETTABLE", kill(A)}, --R(A) := R(B)[RK(C)] - {"SETTABUP", kill()}, --UpValue[A][RK(B)] := RK(C) - {"SETUPVAL", kill()}, --UpValue[B] := R(A) - {"SETTABLE", kill()}, --R(A)[RK(B)] := RK(C) - {"NEWTABLE", kill(A)}, --R(A) := {} (size = B,C) - {"SELF", kill(A, offset(A, constant(1)))}, --R(A+1) := R(B); R(A) := R(B)[RK(C)] - {"ADD", kill(A)}, --R(A) := RK(B) + RK(C) - {"SUB", kill(A)}, --R(A) := RK(B) - RK(C) - {"MUL", kill(A)}, --R(A) := RK(B) * RK(C) - {"DIV", kill(A)}, --R(A) := RK(B) / RK(C) - {"MOD", kill(A)}, --R(A) := RK(B) % RK(C) - {"POW", kill(A)}, --R(A) := RK(B) ^ RK(C) - {"UNM", kill(A)}, --R(A) := -R(B) - {"NOT", kill(A)}, --R(A) := not R(B) - {"LEN", kill(A)}, --R(A) := length of R(B) - {"CONCAT", kill(A)}, --R(A) := R(B).. ... ..R(C) - {"JMP", kill()}, --pc+=sBx - {"EQ", kill()}, --if ((RK(B) == RK(C)) ~= A) then pc++ - {"LT", kill()}, --if ((RK(B) < RK(C)) ~= A) then pc++ - {"LE", kill()}, --if ((RK(B) <= RK(C)) ~= A) then pc++ - {"TEST", kill()}, --if not (R(A) <=> C) then pc++ - {"TESTSET", kill(A)}, --if (R(B) <=> C) then R(A) := R(B) else pc++ - {"CALL", - kill(range(A, offset(top(C), constant(-2))))}, --R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) - {"TAILCALL", kill()}, --return R(A)(R(A+1), ... ,R(A+B-1)) - {"RETURN", kill()}, --return R(A), ... ,R(A+B-2)(see note) - {"FORLOOP", - kill(A, offset(A, constant(1)), offset(A, constant(2)), offset(A, constant(3)))}, --R(A)+=R(A+2); - --if R(A) ', origin_print(solution:after(pc))) ---end - -origin.solve = solve - +-- Computes the local origin of a variable definition + +local utils = require 'luainlua.common.utils' +local cfg = require 'luainlua.cfg.cfg' +local undump = require 'luainlua.bytecode.undump' +local worklist = require 'luainlua.common.worklist' + +local TOP = 'TOP' + +local origin = {} + +local woot = function(n) n = unpack(n) return n > 255 and {} or {n} end + +local A = function(instr) return woot {instr.A.raw} end +local B = function(instr) return woot {instr.B.raw} end +local C = function(instr) return woot {instr.C.raw} end +local function top(number) + return function(instr) + local x = unpack(number(instr)) + if x == 0 then + return {TOP} + end + return {x} + end +end +local function range(from, number) + return function(instr) + local left = unpack(from(instr)) + local num = unpack(number(instr)) + local registers = {} + if num == TOP then return {left} end + for i = 0, num do + table.insert(registers, left + i) + end + return registers + end +end +local function offset(start, amount, invert) + return function(instr) + local left = unpack(start(instr)) + local off = unpack(amount(instr)) + if left == TOP then return {TOP} end + return {invert and (left - off) or (left + off)} + end +end +local function constant(n) + return function() return {n} end +end + +local function kill(...) + local actions = {...} + return function(self, pc, instr, current, graph, node) + local new = utils.copy(current) + for action in utils.loop(actions) do + for register in utils.loop(action(instr)) do + new[register] = {[pc] = true} + end + end + return new + end +end + +local actions = { + {"MOVE", kill(A)}, --R(A) := R(B) + {"LOADK", kill(A)}, --R(A) := Kst(Bx) + {"LOADKX", kill(A)}, --R(A) := Kst(extra arg) + {"LOADBOOL", kill(A)}, --R(A) := (Bool)B; if (C) pc++ + {"LOADNIL", kill(range(A, offset(B, A, true)))}, --R(A) := ... := R(B) := nil + {"GETUPVAL", kill(A)}, --R(A) := UpValue[B] + {"GETTABUP", kill(A)}, --R(A) := UpValue[B][RK(C)] + {"GETTABLE", kill(A)}, --R(A) := R(B)[RK(C)] + {"SETTABUP", kill()}, --UpValue[A][RK(B)] := RK(C) + {"SETUPVAL", kill()}, --UpValue[B] := R(A) + {"SETTABLE", kill()}, --R(A)[RK(B)] := RK(C) + {"NEWTABLE", kill(A)}, --R(A) := {} (size = B,C) + {"SELF", kill(A, offset(A, constant(1)))}, --R(A+1) := R(B); R(A) := R(B)[RK(C)] + {"ADD", kill(A)}, --R(A) := RK(B) + RK(C) + {"SUB", kill(A)}, --R(A) := RK(B) - RK(C) + {"MUL", kill(A)}, --R(A) := RK(B) * RK(C) + {"DIV", kill(A)}, --R(A) := RK(B) / RK(C) + {"MOD", kill(A)}, --R(A) := RK(B) % RK(C) + {"POW", kill(A)}, --R(A) := RK(B) ^ RK(C) + {"UNM", kill(A)}, --R(A) := -R(B) + {"NOT", kill(A)}, --R(A) := not R(B) + {"LEN", kill(A)}, --R(A) := length of R(B) + {"CONCAT", kill(A)}, --R(A) := R(B).. ... ..R(C) + {"JMP", kill()}, --pc+=sBx + {"EQ", kill()}, --if ((RK(B) == RK(C)) ~= A) then pc++ + {"LT", kill()}, --if ((RK(B) < RK(C)) ~= A) then pc++ + {"LE", kill()}, --if ((RK(B) <= RK(C)) ~= A) then pc++ + {"TEST", kill()}, --if not (R(A) <=> C) then pc++ + {"TESTSET", kill(A)}, --if (R(B) <=> C) then R(A) := R(B) else pc++ + {"CALL", + kill(range(A, offset(top(C), constant(-2))))}, --R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) + {"TAILCALL", kill()}, --return R(A)(R(A+1), ... ,R(A+B-1)) + {"RETURN", kill()}, --return R(A), ... ,R(A+B-2)(see note) + {"FORLOOP", + kill(A, offset(A, constant(1)), offset(A, constant(2)), offset(A, constant(3)))}, --R(A)+=R(A+2); + --if R(A) ', origin_print(solution:after(pc))) +--end + +origin.solve = solve + return origin \ No newline at end of file diff --git a/common/graph.lua b/luainlua/common/graph.lua similarity index 95% rename from common/graph.lua rename to luainlua/common/graph.lua index bd06ccc..28aca4b 100644 --- a/common/graph.lua +++ b/luainlua/common/graph.lua @@ -1,281 +1,281 @@ --- graph datastructure --- For now, let's just go with tagged nodes and edges, with some helper functions for --- forward and reverse traversal - -local utils = require 'common.utils' - -local graph = {} -graph.__index = graph - -function graph.create() - local g = { - nodes = {}, - forward = {}, - reverse = {}, - accepted = {}, - forward_tags = {}, - reverse_tags = {}, - } - setmetatable(g, graph) - return g -end -setmetatable(graph, {__call = graph.create}) - -function graph.vertex(self, node, tag) - if not tag then tag = true end - if not self.nodes[node] then - self.nodes[node] = tag - end - return self -end - -function graph.edge(self, left, right, tag, use_list) - if type(left) ~= 'table' then left = {left, true} end - if type(right) ~= 'table' then right = {right, true} end - self:vertex(unpack(left)) - self:vertex(unpack(right)) - if not self.forward[left[1]] then self.forward[left[1]] = {} end - if not self.forward[right[1]] then self.forward[right[1]] = {} end - if not self.reverse[left[1]] then self.reverse[left[1]] = {} end - if not self.reverse[right[1]] then self.reverse[right[1]] = {} end - if not self.forward_tags[left[1]] then self.forward_tags[left[1]] = {} end - if not self.reverse_tags[right[1]] then self.reverse_tags[right[1]] = {} end - if tag == nil then tag = true end - if not self.forward[left[1]][right[1]] then - self.forward[left[1]][right[1]] = (use_list and {[tag] = true}) or tag - if not self.forward_tags[left[1]][tag] then self.forward_tags[left[1]][tag] = {} end - if not self.reverse_tags[right[1]][tag] then self.reverse_tags[right[1]][tag] = {} end - table.insert(self.forward_tags[left[1]][tag], right[1]) - table.insert(self.reverse_tags[right[1]][tag], left[1]) - self.reverse[right[1]][left[1]] = (use_list and {[tag] = true}) or tag - elseif type(self.forward[left[1]][right[1]]) == 'table' and use_list then - self.forward[left[1]][right[1]][tag] = true - if not self.forward_tags[left[1]][tag] then self.forward_tags[left[1]][tag] = {} end - if not self.reverse_tags[right[1]][tag] then self.reverse_tags[right[1]][tag] = {} end - table.insert(self.forward_tags[left[1]][tag], right[1]) - table.insert(self.reverse_tags[right[1]][tag], left[1]) - self.reverse[right[1]][left[1]][tag] = true - end - return self -end - -function graph.remove_vertex(self, node) - assert(self.nodes[node]) - self.nodes[node] = nil - local bad_edges = {} - for from, to in self:edges() do - if from == node or to == node then - table.insert(bad_edges, {from, to}) - end - end - for edge in utils.loop(bad_edges) do - self:remove_edge(unpack(edge)) - end - self.forward_tags[node] = nil - self.reverse_tags[node] = nil - self.forward[node] = nil - self.reverse[node] = nil -end - -function graph.remove_edge(self, from, to) - local tags = self.forward[from][to] - self.forward[from][to] = nil - self.reverse[to][from] = nil - for tag in pairs(tags) do - -- remove to from self.forward_tags[from][tag] - for i, val in ipairs(self.forward_tags[from][tag]) do - if val == to then - table.remove(self.forward_tags[from][tag], i) - break - end - end - -- remove to from self.reverse_tags[to][tag] - for i, val in ipairs(self.reverse_tags[to][tag]) do - if val == from then - table.remove(self.reverse_tags[to][tag], i) - break - end - end - end -end - --- returns an iterator for each node, its actions, and a map of forward and reverse transitions -function graph.vertices(self) - local node, tag = next(self.nodes, nil) - return function() - local forward = self.forward[node] - local reverse = self.reverse[node] - local value = {node, tag, forward, reverse} - node, tag = next(self.nodes, node) - return value[1], value[2], value[3], value[4] - end -end - -local function dfs(self, start, seen, solution) - if seen[start] then - return - end - table.insert(solution, start) - seen[start] = true - for child in pairs(self.forward[start] or {}) do - dfs(self, child, seen, solution) - end -end - -function graph.dfs(self, ...) - local starts = {...} - if next(starts, nil) == nil then - starts = self:entrances() - end - local solution = {} - local seen = {} - for _, start in ipairs(starts) do - dfs(self, start, seen, solution) - end - local i = 1 - return function() - local node = solution[i] - local tag = self.nodes[node] - local forward = self.forward[node] - local reverse = self.reverse[node] - local value = {node, tag, forward, reverse} - i = i + 1 - return table.unpack(value) - end -end - -local function reverse_dfs(self, start, seen, solution) - if seen[start] then - return - end - table.insert(solution, start) - seen[start] = true - for child in pairs((self.reverse or {})[start] or {}) do - reverse_dfs(self, child, seen, solution) - end -end - -function graph.reverse_dfs(self, ...) - local starts = {...} - if next(starts, nil) == nil then - starts = self:exits() - end - local solution = {} - local seen = {} - for _, start in ipairs(starts) do - reverse_dfs(self, start, seen, solution) - end - local i = 1 - return function() - local node = solution[i] - local tag = self.nodes[node] - local forward = self.forward[node] - local reverse = self.reverse[node] - local value = {node, tag, forward, reverse} - i = i + 1 - return table.unpack(value) - end -end - -function graph.exits(self) - local exits = {} - for node, _, forward in self:vertices() do - if next(forward or {}) == nil then - table.insert(exits, node) - end - end - return exits -end - -function graph.entrances(self) - if self.root then - return {self.root} - end - - local entrances = {} - for node, _, _, reverse in self:vertices() do - if next(reverse or {}) == nil then - table.insert(entrances, node) - end - end - return entrances -end - -function graph.set_root(self, root) - self.root = root -end - -function graph.edges(self) - local first = next(self.forward, nil) - local second = first and next(self.forward[first], nil) - local function continue() - if not first then - return - end - if second then - second = next(self.forward[first], second) - else - first = next(self.forward, first) - second = first and next(self.forward[first], nil) - end - end - return function() - -- left, right, tag - while (first or second) and not (first and second) do - continue() - end - if not first and not second then - return - end - local ret = {first, second, self.forward[first][second]} - continue() - return unpack(ret) - end -end - -function graph.dot(self, format, format_edge) - if not format then format = function() return '' end end - -- collect all of the vertices - --[[ - digraph { - rankdir=LR; - size="2,10" - node [shape=doublecircle]; 2; - node [shape=circle,label=""]; - 1 [label=""]; - 1 -> 2[label="1"]; - } - --]] - local str = [[digraph { - rankdir=LR; - size="8,5" -]] - if next(self.accepted, nil) ~= nil then - str = str .. ' node[shape=doublecircle,label=""];' - for node in pairs(self.accepted) do - str = str .. ' ' .. node - end - str = str .. ';\n' - end - str = str .. ' node[shape=circle,label=""];\n' - for node in pairs(self.nodes) do - str = str .. ' ' .. node .. format(node, self) .. ';\n' - end - for l, r, c in self:edges() do - local label = (format_edge and format_edge(c, l, r, graph)) or (c ~= true and tostring(c)) or '' - str = str .. ' ' .. l .. ' -> ' .. r .. '[label="' .. label .. '"];\n' - end - return str .. '}' -end - -function graph.trace(self, history, str) - for i = #history, 1, -1 do - local ptr = history[i] - if self.accepted[ptr] then - return str:sub(1, i - 1), history - end - end - return nil, history -end - +-- graph datastructure +-- For now, let's just go with tagged nodes and edges, with some helper functions for +-- forward and reverse traversal + +local utils = require 'luainlua.common.utils' + +local graph = {} +graph.__index = graph + +function graph.create() + local g = { + nodes = {}, + forward = {}, + reverse = {}, + accepted = {}, + forward_tags = {}, + reverse_tags = {}, + } + setmetatable(g, graph) + return g +end +setmetatable(graph, {__call = graph.create}) + +function graph.vertex(self, node, tag) + if not tag then tag = true end + if not self.nodes[node] then + self.nodes[node] = tag + end + return self +end + +function graph.edge(self, left, right, tag, use_list) + if type(left) ~= 'table' then left = {left, true} end + if type(right) ~= 'table' then right = {right, true} end + self:vertex(unpack(left)) + self:vertex(unpack(right)) + if not self.forward[left[1]] then self.forward[left[1]] = {} end + if not self.forward[right[1]] then self.forward[right[1]] = {} end + if not self.reverse[left[1]] then self.reverse[left[1]] = {} end + if not self.reverse[right[1]] then self.reverse[right[1]] = {} end + if not self.forward_tags[left[1]] then self.forward_tags[left[1]] = {} end + if not self.reverse_tags[right[1]] then self.reverse_tags[right[1]] = {} end + if tag == nil then tag = true end + if not self.forward[left[1]][right[1]] then + self.forward[left[1]][right[1]] = (use_list and {[tag] = true}) or tag + if not self.forward_tags[left[1]][tag] then self.forward_tags[left[1]][tag] = {} end + if not self.reverse_tags[right[1]][tag] then self.reverse_tags[right[1]][tag] = {} end + table.insert(self.forward_tags[left[1]][tag], right[1]) + table.insert(self.reverse_tags[right[1]][tag], left[1]) + self.reverse[right[1]][left[1]] = (use_list and {[tag] = true}) or tag + elseif type(self.forward[left[1]][right[1]]) == 'table' and use_list then + self.forward[left[1]][right[1]][tag] = true + if not self.forward_tags[left[1]][tag] then self.forward_tags[left[1]][tag] = {} end + if not self.reverse_tags[right[1]][tag] then self.reverse_tags[right[1]][tag] = {} end + table.insert(self.forward_tags[left[1]][tag], right[1]) + table.insert(self.reverse_tags[right[1]][tag], left[1]) + self.reverse[right[1]][left[1]][tag] = true + end + return self +end + +function graph.remove_vertex(self, node) + assert(self.nodes[node]) + self.nodes[node] = nil + local bad_edges = {} + for from, to in self:edges() do + if from == node or to == node then + table.insert(bad_edges, {from, to}) + end + end + for edge in utils.loop(bad_edges) do + self:remove_edge(unpack(edge)) + end + self.forward_tags[node] = nil + self.reverse_tags[node] = nil + self.forward[node] = nil + self.reverse[node] = nil +end + +function graph.remove_edge(self, from, to) + local tags = self.forward[from][to] + self.forward[from][to] = nil + self.reverse[to][from] = nil + for tag in pairs(tags) do + -- remove to from self.forward_tags[from][tag] + for i, val in ipairs(self.forward_tags[from][tag]) do + if val == to then + table.remove(self.forward_tags[from][tag], i) + break + end + end + -- remove to from self.reverse_tags[to][tag] + for i, val in ipairs(self.reverse_tags[to][tag]) do + if val == from then + table.remove(self.reverse_tags[to][tag], i) + break + end + end + end +end + +-- returns an iterator for each node, its actions, and a map of forward and reverse transitions +function graph.vertices(self) + local node, tag = next(self.nodes, nil) + return function() + local forward = self.forward[node] + local reverse = self.reverse[node] + local value = {node, tag, forward, reverse} + node, tag = next(self.nodes, node) + return value[1], value[2], value[3], value[4] + end +end + +local function dfs(self, start, seen, solution) + if seen[start] then + return + end + table.insert(solution, start) + seen[start] = true + for child in pairs(self.forward[start] or {}) do + dfs(self, child, seen, solution) + end +end + +function graph.dfs(self, ...) + local starts = {...} + if next(starts, nil) == nil then + starts = self:entrances() + end + local solution = {} + local seen = {} + for _, start in ipairs(starts) do + dfs(self, start, seen, solution) + end + local i = 1 + return function() + local node = solution[i] + local tag = self.nodes[node] + local forward = self.forward[node] + local reverse = self.reverse[node] + local value = {node, tag, forward, reverse} + i = i + 1 + return table.unpack(value) + end +end + +local function reverse_dfs(self, start, seen, solution) + if seen[start] then + return + end + table.insert(solution, start) + seen[start] = true + for child in pairs((self.reverse or {})[start] or {}) do + reverse_dfs(self, child, seen, solution) + end +end + +function graph.reverse_dfs(self, ...) + local starts = {...} + if next(starts, nil) == nil then + starts = self:exits() + end + local solution = {} + local seen = {} + for _, start in ipairs(starts) do + reverse_dfs(self, start, seen, solution) + end + local i = 1 + return function() + local node = solution[i] + local tag = self.nodes[node] + local forward = self.forward[node] + local reverse = self.reverse[node] + local value = {node, tag, forward, reverse} + i = i + 1 + return table.unpack(value) + end +end + +function graph.exits(self) + local exits = {} + for node, _, forward in self:vertices() do + if next(forward or {}) == nil then + table.insert(exits, node) + end + end + return exits +end + +function graph.entrances(self) + if self.root then + return {self.root} + end + + local entrances = {} + for node, _, _, reverse in self:vertices() do + if next(reverse or {}) == nil then + table.insert(entrances, node) + end + end + return entrances +end + +function graph.set_root(self, root) + self.root = root +end + +function graph.edges(self) + local first = next(self.forward, nil) + local second = first and next(self.forward[first], nil) + local function continue() + if not first then + return + end + if second then + second = next(self.forward[first], second) + else + first = next(self.forward, first) + second = first and next(self.forward[first], nil) + end + end + return function() + -- left, right, tag + while (first or second) and not (first and second) do + continue() + end + if not first and not second then + return + end + local ret = {first, second, self.forward[first][second]} + continue() + return unpack(ret) + end +end + +function graph.dot(self, format, format_edge) + if not format then format = function() return '' end end + -- collect all of the vertices + --[[ + digraph { + rankdir=LR; + size="2,10" + node [shape=doublecircle]; 2; + node [shape=circle,label=""]; + 1 [label=""]; + 1 -> 2[label="1"]; + } + --]] + local str = [[digraph { + rankdir=LR; + size="8,5" +]] + if next(self.accepted, nil) ~= nil then + str = str .. ' node[shape=doublecircle,label=""];' + for node in pairs(self.accepted) do + str = str .. ' ' .. node + end + str = str .. ';\n' + end + str = str .. ' node[shape=circle,label=""];\n' + for node in pairs(self.nodes) do + str = str .. ' ' .. node .. format(node, self) .. ';\n' + end + for l, r, c in self:edges() do + local label = (format_edge and format_edge(c, l, r, graph)) or (c ~= true and tostring(c)) or '' + str = str .. ' ' .. l .. ' -> ' .. r .. '[label="' .. label .. '"];\n' + end + return str .. '}' +end + +function graph.trace(self, history, str) + for i = #history, 1, -1 do + local ptr = history[i] + if self.accepted[ptr] then + return str:sub(1, i - 1), history + end + end + return nil, history +end + return graph \ No newline at end of file diff --git a/common/utils.lua b/luainlua/common/utils.lua similarity index 95% rename from common/utils.lua rename to luainlua/common/utils.lua index 12cf9ac..6ae30d9 100644 --- a/common/utils.lua +++ b/luainlua/common/utils.lua @@ -1,168 +1,168 @@ -local utils = {} - -function utils.copy(t) - if type(t) ~= "table" then return t end - local seen = {} -- for circular references - local function _copy(t, tab) - for k,v in pairs(t) do - if type(v) == "table" and not v.r and not v.k and not v.v then - if not seen[v] then - seen[v] = {} - _copy(v, seen[v]) - tab[k] = seen[v] - end - else - tab[k] = v - end - end - - setmetatable(tab, getmetatable(t) or {}) - end - local tab = {} - _copy(t, tab) - return tab -end - -function utils.to_list(set) - local tab = {} - for item in pairs(set) do table.insert(tab, item) end - return setmetatable(tab, {__tostring = function(self) return table.concat(self, ', ') end}) -end - -function utils.to_string(list) - return setmetatable(utils.copy(list), {__tostring = function(self) return table.concat(self, ', ') end}) -end - -function utils.shallow_copy(t) - return {table.unpack(t)} -end - -function utils.kfilter(predicate, list) - local solution = {} - for k, v in pairs(list) do - if predicate(k, v) then - solution[k] = v - end - end - return solution -end - -function utils.filter(predicate, list) - local solution = {} - for _, v in ipairs(list) do - if predicate(v) then - table.insert(solution, v) - end - end - return solution -end - -function utils.map(transform, list) - local solution = {} - for k, v in pairs(list) do - solution[k] = transform(v) - end - return solution -end - -function utils.kmap(transform, list) - local solution = {} - for k, v in pairs(list) do - solution[k] = transform(k, v) - end - return solution -end - -function utils.contains(super, sub) - local seen = {} - for _, v in ipairs(super) do - seen[v] = true - end - for _, v in ipairs(sub) do - if not seen[v] then return false end - end - return true -end - -function utils.sublist(tab, i, j) - if not j then j = 0 end - if j <= 0 then j = #tab + j end - if i <= 0 then i = #tab + i end - if i <= 0 then i = 1 end - if j <= 0 then j = 1 end - if i > #tab then i = #tab + 1 end - if j > #tab then j = #tab end - -- normalize - local list = {} - for k = i, j do - table.insert(list, tab[k]) - end - return list -end - -function utils.loop(tab) - local n = #tab - local state = 1 - return function() - local value = tab[state] - state = state + 1 - return value - end -end - -function utils.uloop(tab) - local next = ipairs({}) - local state = 0 - local iter = function() - local value - state, value = next(tab, state) - if value then - if unpack(value) then - return unpack(value) - else - return iter() - end - end - end - return iter -end - -function utils.rloop(tab) - local state = #tab - return function() - local value = tab[state] - state = state - 1 - return value - end -end - -local function normal_escape(object) - return ('\\%03d'):rep(#object):format(object:byte(1, #object)) -end - -function utils.dump(object, escape, ignore) - if ignore == nil then ignore = true end - if escape == nil then escape = normal_escape end - if type(object) == 'string' then - return '\'' .. escape(object) .. '\'' - elseif type(object) == 'number' then - return tostring(object) - elseif type(object) == 'function' then - if not ignore then - error 'Cannot serialize a function' - end - return 'nil' - elseif type(object) == 'boolean' then - return tostring(object) - elseif object == nil then - return 'nil' - end - assert(type(object) == 'table') - local strings = {} - for key, value in pairs(object) do - table.insert(strings, '[' .. utils.dump(key, escape, ignore) .. '] = ' .. utils.dump(value, escape, ignore)) - end - return '{' .. table.concat(strings, ', ') .. '}' -end - +local utils = {} + +function utils.copy(t) + if type(t) ~= "table" then return t end + local seen = {} -- for circular references + local function _copy(t, tab) + for k,v in pairs(t) do + if type(v) == "table" and not v.r and not v.k and not v.v then + if not seen[v] then + seen[v] = {} + _copy(v, seen[v]) + tab[k] = seen[v] + end + else + tab[k] = v + end + end + + setmetatable(tab, getmetatable(t) or {}) + end + local tab = {} + _copy(t, tab) + return tab +end + +function utils.to_list(set) + local tab = {} + for item in pairs(set) do table.insert(tab, item) end + return setmetatable(tab, {__tostring = function(self) return table.concat(self, ', ') end}) +end + +function utils.to_string(list) + return setmetatable(utils.copy(list), {__tostring = function(self) return table.concat(self, ', ') end}) +end + +function utils.shallow_copy(t) + return {table.unpack(t)} +end + +function utils.kfilter(predicate, list) + local solution = {} + for k, v in pairs(list) do + if predicate(k, v) then + solution[k] = v + end + end + return solution +end + +function utils.filter(predicate, list) + local solution = {} + for _, v in ipairs(list) do + if predicate(v) then + table.insert(solution, v) + end + end + return solution +end + +function utils.map(transform, list) + local solution = {} + for k, v in pairs(list) do + solution[k] = transform(v) + end + return solution +end + +function utils.kmap(transform, list) + local solution = {} + for k, v in pairs(list) do + solution[k] = transform(k, v) + end + return solution +end + +function utils.contains(super, sub) + local seen = {} + for _, v in ipairs(super) do + seen[v] = true + end + for _, v in ipairs(sub) do + if not seen[v] then return false end + end + return true +end + +function utils.sublist(tab, i, j) + if not j then j = 0 end + if j <= 0 then j = #tab + j end + if i <= 0 then i = #tab + i end + if i <= 0 then i = 1 end + if j <= 0 then j = 1 end + if i > #tab then i = #tab + 1 end + if j > #tab then j = #tab end + -- normalize + local list = {} + for k = i, j do + table.insert(list, tab[k]) + end + return list +end + +function utils.loop(tab) + local n = #tab + local state = 1 + return function() + local value = tab[state] + state = state + 1 + return value + end +end + +function utils.uloop(tab) + local next = ipairs({}) + local state = 0 + local iter = function() + local value + state, value = next(tab, state) + if value then + if unpack(value) then + return unpack(value) + else + return iter() + end + end + end + return iter +end + +function utils.rloop(tab) + local state = #tab + return function() + local value = tab[state] + state = state - 1 + return value + end +end + +local function normal_escape(object) + return ('\\%03d'):rep(#object):format(object:byte(1, #object)) +end + +function utils.dump(object, escape, ignore) + if ignore == nil then ignore = true end + if escape == nil then escape = normal_escape end + if type(object) == 'string' then + return '\'' .. escape(object) .. '\'' + elseif type(object) == 'number' then + return tostring(object) + elseif type(object) == 'function' then + if not ignore then + error 'Cannot serialize a function' + end + return 'nil' + elseif type(object) == 'boolean' then + return tostring(object) + elseif object == nil then + return 'nil' + end + assert(type(object) == 'table') + local strings = {} + for key, value in pairs(object) do + table.insert(strings, '[' .. utils.dump(key, escape, ignore) .. '] = ' .. utils.dump(value, escape, ignore)) + end + return '{' .. table.concat(strings, ', ') .. '}' +end + return utils \ No newline at end of file diff --git a/common/worklist.lua b/luainlua/common/worklist.lua similarity index 94% rename from common/worklist.lua rename to luainlua/common/worklist.lua index cda0038..4686282 100644 --- a/common/worklist.lua +++ b/luainlua/common/worklist.lua @@ -1,129 +1,129 @@ --- construct the least fixed point of a transfer on some graph -local graph = require "common.graph" -local utils = require "common.utils" -local worklist = {} - -function worklist.transfer(self, node, input, graph, pred) - error "transfer is unimplemented" -end - -function worklist.merge(self, left, right) - error "merge is unimplemented" -end - -function worklist.initialize(self, node, tag) - error "initialize is unimplemented" -end - -function worklist.changed(self, old, new) - error "changed is unimplemented" -end - -function worklist.create(self, instance) - setmetatable(instance, {__index = worklist}) - return instance -end -setmetatable(worklist, {__call = worklist.create}) - -local function new_solution(worklist, graph) - local solution = {} - local prefix = [[digraph { - rankdir=LR; - size="8,5" -]] - local mt = worklist.solution or {} - function mt.dot() - local str = prefix - if next(graph.accepted, nil) ~= nil then - str = str .. ' node[shape=doublecircle,label=""];' - for node in pairs(graph.accepted) do - str = str .. ' ' .. node - end - str = str .. ';\n' - end - str = str .. ' node[shape=circle,label=""];\n' - for node in graph:vertices() do - local label = (solution[node] and worklist:tostring(graph, node, solution[node])) or '' - str = str .. ' ' .. tostring(node) .. '[label="' .. label .. '"];\n' - end - for l, r, c in graph:edges() do - local label = (c ~= true and tostring(c)) or '' - str = str .. ' ' .. l .. ' -> ' .. r .. '[label="' .. label .. '"];\n' - end - return str .. '}' - end - setmetatable(solution, {__index = mt}) - return solution -end - -function worklist.forward(self, graph) - local solution = new_solution(self, graph) - self.partial_solution = solution - for node, tag in graph:vertices() do - solution[node] = self:initialize(node, tag) - end - local worklist = {} - for node in graph:dfs() do - table.insert(worklist, node) - end - - while #worklist ~= 0 do - local x = table.remove(worklist, 1) - local tag = graph.nodes[x] - local old = solution[x] - local new = nil - local has_pred = false - for pred in pairs(graph.reverse[x] or {}) do - has_pred = true - local this = self:transfer(x, solution[pred], graph, pred) - new = (new and self:merge(new, this)) or this - end - if not has_pred then - new = self:transfer(x, self:initialize(), graph) - end - if new and self:changed(old, new, x) then - for succ in pairs(graph.forward[x] or {}) do - table.insert(worklist, succ) - end - solution[x] = new - end - end - self.partial_solution = nil - return solution -end - -function worklist.reverse(self, graph) - local solution = new_solution(self, graph) - for node, tag in graph:vertices() do - solution[node] = self:initialize(node, tag) - end - local worklist = {} - for node in graph:reverse_dfs() do - table.insert(worklist, node) - end - - while #worklist ~= 0 do - local x = table.remove(worklist, 1) - local tag = graph.nodes[x] - local old = utils.copy(solution[x]) - local new = nil - local has_pred = false - for pred in pairs(graph.forward[x] or {}) do - has_pred = true - local this = self:transfer(x, solution[pred], graph, pred) - new = (new and self:merge(new, this)) or this - end - if not has_pred then - new = self:transfer(x, self:initialize(), graph) - end - if new and self:changed(old, new) then - for succ in pairs(graph.reverse[x] or {}) do - table.insert(worklist, succ) - end - solution[x] = new - end - end - return solution -end - +-- construct the least fixed point of a transfer on some graph +local graph = require "luainlua.common.graph" +local utils = require "luainlua.common.utils" +local worklist = {} + +function worklist.transfer(self, node, input, graph, pred) + error "transfer is unimplemented" +end + +function worklist.merge(self, left, right) + error "merge is unimplemented" +end + +function worklist.initialize(self, node, tag) + error "initialize is unimplemented" +end + +function worklist.changed(self, old, new) + error "changed is unimplemented" +end + +function worklist.create(self, instance) + setmetatable(instance, {__index = worklist}) + return instance +end +setmetatable(worklist, {__call = worklist.create}) + +local function new_solution(worklist, graph) + local solution = {} + local prefix = [[digraph { + rankdir=LR; + size="8,5" +]] + local mt = worklist.solution or {} + function mt.dot() + local str = prefix + if next(graph.accepted, nil) ~= nil then + str = str .. ' node[shape=doublecircle,label=""];' + for node in pairs(graph.accepted) do + str = str .. ' ' .. node + end + str = str .. ';\n' + end + str = str .. ' node[shape=circle,label=""];\n' + for node in graph:vertices() do + local label = (solution[node] and worklist:tostring(graph, node, solution[node])) or '' + str = str .. ' ' .. tostring(node) .. '[label="' .. label .. '"];\n' + end + for l, r, c in graph:edges() do + local label = (c ~= true and tostring(c)) or '' + str = str .. ' ' .. l .. ' -> ' .. r .. '[label="' .. label .. '"];\n' + end + return str .. '}' + end + setmetatable(solution, {__index = mt}) + return solution +end + +function worklist.forward(self, graph) + local solution = new_solution(self, graph) + self.partial_solution = solution + for node, tag in graph:vertices() do + solution[node] = self:initialize(node, tag) + end + local worklist = {} + for node in graph:dfs() do + table.insert(worklist, node) + end + + while #worklist ~= 0 do + local x = table.remove(worklist, 1) + local tag = graph.nodes[x] + local old = solution[x] + local new = nil + local has_pred = false + for pred in pairs(graph.reverse[x] or {}) do + has_pred = true + local this = self:transfer(x, solution[pred], graph, pred) + new = (new and self:merge(new, this)) or this + end + if not has_pred then + new = self:transfer(x, self:initialize(), graph) + end + if new and self:changed(old, new, x) then + for succ in pairs(graph.forward[x] or {}) do + table.insert(worklist, succ) + end + solution[x] = new + end + end + self.partial_solution = nil + return solution +end + +function worklist.reverse(self, graph) + local solution = new_solution(self, graph) + for node, tag in graph:vertices() do + solution[node] = self:initialize(node, tag) + end + local worklist = {} + for node in graph:reverse_dfs() do + table.insert(worklist, node) + end + + while #worklist ~= 0 do + local x = table.remove(worklist, 1) + local tag = graph.nodes[x] + local old = utils.copy(solution[x]) + local new = nil + local has_pred = false + for pred in pairs(graph.forward[x] or {}) do + has_pred = true + local this = self:transfer(x, solution[pred], graph, pred) + new = (new and self:merge(new, this)) or this + end + if not has_pred then + new = self:transfer(x, self:initialize(), graph) + end + if new and self:changed(old, new) then + for succ in pairs(graph.reverse[x] or {}) do + table.insert(worklist, succ) + end + solution[x] = new + end + end + return solution +end + return worklist \ No newline at end of file diff --git a/luainlua/generate_parser.lua b/luainlua/generate_parser.lua new file mode 100644 index 0000000..1afa598 --- /dev/null +++ b/luainlua/generate_parser.lua @@ -0,0 +1,13 @@ +local generator = require 'luainlua.parsing.ll1_grammar' +local argparse = require 'argparse' + +local function main(arg) + local parser = argparse("script", "An example.") + parser:argument("input", "Input file.", "luainlua/lua/grammar.ylua") + parser:option("-d --dump"):args "?" + local args = parser:parse() + + return generator(args.input) +end + +main(arg) \ No newline at end of file diff --git a/hll/hll.lua b/luainlua/hll/hll.lua similarity index 84% rename from hll/hll.lua rename to luainlua/hll/hll.lua index 314a23d..aa9c1b8 100644 --- a/hll/hll.lua +++ b/luainlua/hll/hll.lua @@ -1,80 +1,80 @@ --- A control flow graph with "lifted" expressions - --- HLL Nodes: --- node := assign({r, e[e]}, e) --- | jcond({== | e}, l_fallthrough, l_jump) --- | jmp(l) --- | return(e) --- | foreach(r*, e, l_fallthrough, l_jump) --- | fori (r, e, e, e, l_fallthrough, l_jump) - --- expr := r --- | const --- | up --- | e[e] --- | {e*} --- | e(e*) --- | e:string(e*) --- | e (+ | - | * | / | % | ^ | ..) e --- | (- | not | #) e --- | e (==, <=, <, ...) e --- | ... - --- concretization: --- {kind = "assign", type = "node", args...} - --- Translation is syntax directed, and then we can start merging based on liveness analysis - -local liveness = require 'cfg.liveness' -local inlineable = require 'hll.inlineable' -local undump = require 'bytecode.undump' -local cfg = require 'cfg.cfg' -local utils = require 'common.utils' - -local hll = {} - -local function used_variables(closure, pc) - local instr = closure.code[pc] - return liveness.uses[instr.op](nil, pc, instr, {}) -end - --- target language: hll -function hll.assign(left, right) end - -function hll.jcond() end - -function hll.jmp() end - -function hll.ret() end - -function hll.foreach() end - -function hll.fori() end - --- target language: expr - -local function translate(g, closure) - -- simple syntax directed translation into hll -end - -local closure = undump.undump(function(x, y) return {x, y} end) - -local g = cfg.make(closure) - -print(cfg.tostring(g)) - -local liveness_fixedpoint = liveness.solve(g, closure) -local solution = inlineable.solve(g, closure, liveness_fixedpoint) - -for pc, instr in ipairs(closure.code) do - local uses = used_variables(closure, pc) - local inlineables = {} - for variable in pairs(uses) do - if solution:is_inlineable_at(pc, variable) then - inlineables[variable] = true - end - end - print(pc, instr, utils.to_list(inlineables)) -end - +-- A control flow graph with "lifted" expressions + +-- HLL Nodes: +-- node := assign({r, e[e]}, e) +-- | jcond({== | e}, l_fallthrough, l_jump) +-- | jmp(l) +-- | return(e) +-- | foreach(r*, e, l_fallthrough, l_jump) +-- | fori (r, e, e, e, l_fallthrough, l_jump) + +-- expr := r +-- | const +-- | up +-- | e[e] +-- | {e*} +-- | e(e*) +-- | e:string(e*) +-- | e (+ | - | * | / | % | ^ | ..) e +-- | (- | not | #) e +-- | e (==, <=, <, ...) e +-- | ... + +-- concretization: +-- {kind = "assign", type = "node", args...} + +-- Translation is syntax directed, and then we can start merging based on liveness analysis + +local liveness = require 'luainlua.cfg.liveness' +local inlineable = require 'luainlua.hll.inlineable' +local undump = require 'luainlua.bytecode.undump' +local cfg = require 'luainlua.cfg.cfg' +local utils = require 'luainlua.common.utils' + +local hll = {} + +local function used_variables(closure, pc) + local instr = closure.code[pc] + return liveness.uses[instr.op](nil, pc, instr, {}) +end + +-- target language: hll +function hll.assign(left, right) end + +function hll.jcond() end + +function hll.jmp() end + +function hll.ret() end + +function hll.foreach() end + +function hll.fori() end + +-- target language: expr + +local function translate(g, closure) + -- simple syntax directed translation into hll +end + +local closure = undump.undump(function(x, y) return {x, y} end) + +local g = cfg.make(closure) + +print(cfg.tostring(g)) + +local liveness_fixedpoint = liveness.solve(g, closure) +local solution = inlineable.solve(g, closure, liveness_fixedpoint) + +for pc, instr in ipairs(closure.code) do + local uses = used_variables(closure, pc) + local inlineables = {} + for variable in pairs(uses) do + if solution:is_inlineable_at(pc, variable) then + inlineables[variable] = true + end + end + print(pc, instr, utils.to_list(inlineables)) +end + return hll \ No newline at end of file diff --git a/hll/inlineable.lua b/luainlua/hll/inlineable.lua similarity index 95% rename from hll/inlineable.lua rename to luainlua/hll/inlineable.lua index fe64a2c..895193a 100644 --- a/hll/inlineable.lua +++ b/luainlua/hll/inlineable.lua @@ -1,294 +1,294 @@ --- Inlineable analysis: --- `a` is inlineable at P if --- `a` is dead after P and --- `a` isn't used within the prior use-range - -local utils = require 'common.utils' -local cfg = require 'cfg.cfg' -local undump = require 'bytecode.undump' -local worklist = require 'common.worklist' -local liveness = require 'cfg.liveness' - -local TOP = 'TOP' - -local inlineable = {} - -local woot = function(n) n = unpack(n) return n > 255 and {} or {n} end - -local A = function(instr) return woot {instr.A.raw} end -local B = function(instr) return woot {instr.B.raw} end -local C = function(instr) return woot {instr.C.raw} end -local function top(number) - return function(instr) - local x = unpack(number(instr)) - if x == 0 then - return {TOP} - end - return {x} - end -end -local function range(from, number) - return function(instr) - local left = unpack(from(instr)) - local num = unpack(number(instr)) - local registers = {} - if num == TOP then return {left} end - for i = 0, num do - table.insert(registers, left + i) - end - return registers - end -end -local function offset(start, amount, invert) - return function(instr) - local left = unpack(start(instr)) - local off = unpack(amount(instr)) - if left == TOP then return {TOP} end - return {invert and (left - off) or (left + off)} - end -end -local function constant(n) - return function() return {n} end -end - -local function kill(...) - local actions = {...} - return function(self, pc, instr, current, graph, node) - local new = utils.copy(current) - for action in utils.loop(actions) do - for register in utils.loop(action(instr)) do - new[register] = {[pc] = "inlineable"} - end - end - return new - end -end - -local function use(...) - local actions = {...} - return function(self, pc, instr, current, graph, node) - local new = utils.copy(current) - for action in utils.loop(actions) do - for register in utils.loop(action(instr)) do - for pc in pairs(current[register] or {}) do - new[register][pc] = "clobbered" - end - end - end - return new - end -end - -local actions = { - {"MOVE", kill(A), use(B)}, --R(A) := R(B) - {"LOADK", kill(A), use()}, --R(A) := Kst(Bx) - {"LOADKX", kill(A), use()}, --R(A) := Kst(extra arg) - {"LOADBOOL", kill(A), use()}, --R(A) := (Bool)B; if (C) pc++ - {"LOADNIL", kill(range(A, offset(B, A, true))), use()}, --R(A) := ... := R(B) := nil - {"GETUPVAL", kill(A), use()}, --R(A) := UpValue[B] - {"GETTABUP", kill(A), use(C)}, --R(A) := UpValue[B][RK(C)] - {"GETTABLE", kill(A), use(B, C)}, --R(A) := R(B)[RK(C)] - {"SETTABUP", kill(), use(B, C)}, --UpValue[A][RK(B)] := RK(C) - {"SETUPVAL", kill(), use(A)}, --UpValue[B] := R(A) - {"SETTABLE", kill(), use(A, B, C)}, --R(A)[RK(B)] := RK(C) - {"NEWTABLE", kill(A), use()}, --R(A) := {} (size = B,C) - {"SELF", kill(A, offset(A, constant(1))), use(B, C)}, --R(A+1) := R(B); R(A) := R(B)[RK(C)] - {"ADD", kill(A), use(B, C)}, --R(A) := RK(B) + RK(C) - {"SUB", kill(A), use(B, C)}, --R(A) := RK(B) - RK(C) - {"MUL", kill(A), use(B, C)}, --R(A) := RK(B) * RK(C) - {"DIV", kill(A), use(B, C)}, --R(A) := RK(B) / RK(C) - {"MOD", kill(A), use(B, C)}, --R(A) := RK(B) % RK(C) - {"POW", kill(A), use(B, C)}, --R(A) := RK(B) ^ RK(C) - {"UNM", kill(A), use(B)}, --R(A) := -R(B) - {"NOT", kill(A), use(B)}, --R(A) := not R(B) - {"LEN", kill(A), use(B)}, --R(A) := length of R(B) - {"CONCAT", kill(A), use(range(B, offset(C, B, true)))}, --R(A) := R(B).. ... ..R(C) - {"JMP", kill(), use()}, --pc+=sBx - {"EQ", kill(), use(B, C)}, --if ((RK(B) == RK(C)) ~= A) then pc++ - {"LT", kill(), use(B, C)}, --if ((RK(B) < RK(C)) ~= A) then pc++ - {"LE", kill(), use(B, C)}, --if ((RK(B) <= RK(C)) ~= A) then pc++ - {"TEST", kill(), use(A)}, --if not (R(A) <=> C) then pc++ - {"TESTSET", kill(A), use(B)}, --if (R(B) <=> C) then R(A) := R(B) else pc++ - {"CALL", - kill(range(A, offset(top(C), constant(-2)))), - use(range(A, offset(top(B), constant(-1))))}, --R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) - {"TAILCALL", kill(), use(range(A, offset(top(B), constant(-1))))}, --return R(A)(R(A+1), ... ,R(A+B-1)) - {"RETURN", kill(), use(range(A, offset(top(B), constant(-2))))}, --return R(A), ... ,R(A+B-2)(see note) - {"FORLOOP", - kill(A, offset(A, constant(1)), offset(A, constant(2)), offset(A, constant(3))), - use()}, --R(A)+=R(A+2); - --if R(A) ', origin_print(solution:after(pc))) ---end - -inlineable.solve = solve - +-- Inlineable analysis: +-- `a` is inlineable at P if +-- `a` is dead after P and +-- `a` isn't used within the prior use-range + +local utils = require 'luainlua.common.utils' +local cfg = require 'luainlua.cfg.cfg' +local undump = require 'luainlua.bytecode.undump' +local worklist = require 'luainlua.common.worklist' +local liveness = require 'luainlua.cfg.liveness' + +local TOP = 'TOP' + +local inlineable = {} + +local woot = function(n) n = unpack(n) return n > 255 and {} or {n} end + +local A = function(instr) return woot {instr.A.raw} end +local B = function(instr) return woot {instr.B.raw} end +local C = function(instr) return woot {instr.C.raw} end +local function top(number) + return function(instr) + local x = unpack(number(instr)) + if x == 0 then + return {TOP} + end + return {x} + end +end +local function range(from, number) + return function(instr) + local left = unpack(from(instr)) + local num = unpack(number(instr)) + local registers = {} + if num == TOP then return {left} end + for i = 0, num do + table.insert(registers, left + i) + end + return registers + end +end +local function offset(start, amount, invert) + return function(instr) + local left = unpack(start(instr)) + local off = unpack(amount(instr)) + if left == TOP then return {TOP} end + return {invert and (left - off) or (left + off)} + end +end +local function constant(n) + return function() return {n} end +end + +local function kill(...) + local actions = {...} + return function(self, pc, instr, current, graph, node) + local new = utils.copy(current) + for action in utils.loop(actions) do + for register in utils.loop(action(instr)) do + new[register] = {[pc] = "inlineable"} + end + end + return new + end +end + +local function use(...) + local actions = {...} + return function(self, pc, instr, current, graph, node) + local new = utils.copy(current) + for action in utils.loop(actions) do + for register in utils.loop(action(instr)) do + for pc in pairs(current[register] or {}) do + new[register][pc] = "clobbered" + end + end + end + return new + end +end + +local actions = { + {"MOVE", kill(A), use(B)}, --R(A) := R(B) + {"LOADK", kill(A), use()}, --R(A) := Kst(Bx) + {"LOADKX", kill(A), use()}, --R(A) := Kst(extra arg) + {"LOADBOOL", kill(A), use()}, --R(A) := (Bool)B; if (C) pc++ + {"LOADNIL", kill(range(A, offset(B, A, true))), use()}, --R(A) := ... := R(B) := nil + {"GETUPVAL", kill(A), use()}, --R(A) := UpValue[B] + {"GETTABUP", kill(A), use(C)}, --R(A) := UpValue[B][RK(C)] + {"GETTABLE", kill(A), use(B, C)}, --R(A) := R(B)[RK(C)] + {"SETTABUP", kill(), use(B, C)}, --UpValue[A][RK(B)] := RK(C) + {"SETUPVAL", kill(), use(A)}, --UpValue[B] := R(A) + {"SETTABLE", kill(), use(A, B, C)}, --R(A)[RK(B)] := RK(C) + {"NEWTABLE", kill(A), use()}, --R(A) := {} (size = B,C) + {"SELF", kill(A, offset(A, constant(1))), use(B, C)}, --R(A+1) := R(B); R(A) := R(B)[RK(C)] + {"ADD", kill(A), use(B, C)}, --R(A) := RK(B) + RK(C) + {"SUB", kill(A), use(B, C)}, --R(A) := RK(B) - RK(C) + {"MUL", kill(A), use(B, C)}, --R(A) := RK(B) * RK(C) + {"DIV", kill(A), use(B, C)}, --R(A) := RK(B) / RK(C) + {"MOD", kill(A), use(B, C)}, --R(A) := RK(B) % RK(C) + {"POW", kill(A), use(B, C)}, --R(A) := RK(B) ^ RK(C) + {"UNM", kill(A), use(B)}, --R(A) := -R(B) + {"NOT", kill(A), use(B)}, --R(A) := not R(B) + {"LEN", kill(A), use(B)}, --R(A) := length of R(B) + {"CONCAT", kill(A), use(range(B, offset(C, B, true)))}, --R(A) := R(B).. ... ..R(C) + {"JMP", kill(), use()}, --pc+=sBx + {"EQ", kill(), use(B, C)}, --if ((RK(B) == RK(C)) ~= A) then pc++ + {"LT", kill(), use(B, C)}, --if ((RK(B) < RK(C)) ~= A) then pc++ + {"LE", kill(), use(B, C)}, --if ((RK(B) <= RK(C)) ~= A) then pc++ + {"TEST", kill(), use(A)}, --if not (R(A) <=> C) then pc++ + {"TESTSET", kill(A), use(B)}, --if (R(B) <=> C) then R(A) := R(B) else pc++ + {"CALL", + kill(range(A, offset(top(C), constant(-2)))), + use(range(A, offset(top(B), constant(-1))))}, --R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) + {"TAILCALL", kill(), use(range(A, offset(top(B), constant(-1))))}, --return R(A)(R(A+1), ... ,R(A+B-1)) + {"RETURN", kill(), use(range(A, offset(top(B), constant(-2))))}, --return R(A), ... ,R(A+B-2)(see note) + {"FORLOOP", + kill(A, offset(A, constant(1)), offset(A, constant(2)), offset(A, constant(3))), + use()}, --R(A)+=R(A+2); + --if R(A) ', origin_print(solution:after(pc))) +--end + +inlineable.solve = solve + return inlineable \ No newline at end of file diff --git a/ll1/elimination.lua b/luainlua/ll1/elimination.lua similarity index 95% rename from ll1/elimination.lua rename to luainlua/ll1/elimination.lua index 2d380da..65d98f6 100644 --- a/ll1/elimination.lua +++ b/luainlua/ll1/elimination.lua @@ -1,363 +1,363 @@ --- 3 steps: remove nullables, remove all cycles, and finally remove immediate left recursion - -local left_recursion_elimination = {} - -local ll1 = require 'll1.ll1' -local utils = require 'common.utils' -local graph = require 'common.graph' -local worklist = require 'common.worklist' - -local function hash(production) - return table.concat({unpack(production)}, '`') -end - -local function normalize(production) - local new = {} - for object in utils.loop(production) do - if object ~= '' then - table.insert(new, object) - end - end - return new -end - -local function null_out(production, i, nullable_indices) - local new = {unpack(production)} - local changed = {} - local index = 1 - while true do - local okay = i % 2 == 0 - - if okay then - new[nullable_indices[index]] = '' - table.insert(changed, nullable_indices[index]) - end - - i = math.floor(i / 2) - if i == 0 then break end - index = index + 1 - end - return normalize(new) -end - -local function insert_into(new_nonterminal, production, production_hashes) - local h = hash(production) - if not production_hashes[h] and #production ~= 0 then - table.insert(new_nonterminal, production) - production_hashes[h] = true - end -end - -local function eliminate_nullables(configuration) - local nullables = {} - for variable, nonterminal in pairs(configuration) do - local first_set = configuration:first(variable) - if first_set[''] then - nullables['$' .. variable] = true - end - end - - local new_actions = {} - for variable, nonterminal in pairs(configuration) do - -- let's construct a hashset of the original productions - local seen_productions = {} - for production in utils.loop(nonterminal) do - seen_productions[hash(production)] = true - end - - -- let's compute the null-eliminated expansion - local new_nonterminal = {} - local production_hashes = {} - for production in utils.loop(nonterminal) do - local action = production.action - local nullable_indices = {} - for i, object in ipairs(production) do - if nullables[object] then - table.insert(nullable_indices, i) - end - end - if #nullable_indices ~= 0 then - -- compute the combinatorial transfer to naturals - for i=0,2^#nullable_indices - 1 do - local new_production, changed = null_out(production, i, nullable_indices) - insert_into(new_nonterminal, new_production, production_hashes) - end - else - insert_into(new_nonterminal, normalize(production), production_hashes) - end - end - new_actions[variable] = new_nonterminal - assert(#new_nonterminal ~= 0) - end - return ll1.configure(new_actions) -end - -local function full_dependency_graph(configuration) - -- find all forms of X -> Y - local g = graph() - g.configuration = configuration - for variable, nonterminal in pairs(configuration) do - for production in utils.loop(nonterminal) do - for object in utils.loop(production) do - if object:sub(1,1) == '$' then - g:edge(object:sub(2), variable) - g:edge(variable, object:sub(2)) - end - end - end - end - g:set_root('root') - return g -end - --- computes the set of productions that A =*> goes to -local transitive_algorithm = worklist { - -- what is the domain? Sets of productions - initialize = function(self, _, _) - return {} - end, - transfer = function(self, node, _, graph, pred) - local transitive_set = self:initialize(node) - local nonterminal = graph.configuration[node] - local single_set = {} - for production in utils.loop(nonterminal) do - transitive_set[hash(production)] = production - if #production == 1 and production[1]:sub(1, 1) == '$' then - transitive_set = self:merge( - transitive_set, - self.partial_solution[production[1]:sub(2)]) - end - end - return transitive_set - end, - changed = function(self, old, new) - -- assuming monotone in the new direction - for key in pairs(new) do - if not old[key] then - return true - end - end - return false - end, - merge = function(self, left, right) - local merged = utils.copy(left) - for key in pairs(right) do - merged[key] = right[key] - end - return merged - end, - tostring = function(self, _, node, input) - local list = {} - for key in pairs(input) do table.insert(list, key) end - return node .. ' -> ' .. table.concat(list, ' | ') - end -} - -local function eliminate_cycles(configuration) - local use_graph = full_dependency_graph(configuration) - local transitive_set = transitive_algorithm:forward(use_graph) - local cycle_set = {} - for variable, transitionable in pairs(transitive_set) do - if transitionable['$' .. variable] then - cycle_set[variable] = true - end - end - local noncyclic_set = {} - for key, map in pairs(transitive_set) do - noncyclic_set[key] = utils.kfilter(function(k, v) return not cycle_set[k:sub(2)] end, map) - end - - local new_actions = {} - for variable, nonterminal in pairs(configuration) do - if variable ~= 'root' then - -- look for productions that are exactly $Cyclic - local productions_map = {} - for production in utils.loop(nonterminal) do - if #production == 1 and production[1]:sub(1, 1) == '$' then - local other = production[1]:sub(2) - if cycle_set[other] then - for h, other_production in pairs(noncyclic_set[other]) do - productions_map[h] = other_production - end - else - productions_map[hash(production)] = production - end - else - productions_map[hash(production)] = production - end - end - new_actions[variable] = {} - for _, production in pairs(productions_map) do - table.insert(new_actions[variable], production) - end - else - new_actions[variable] = nonterminal - end - end - return ll1.configure(new_actions) -end - -local function immediate_elimination(nonterminal) - local variable = nonterminal.variable - local new_variable = variable .. "'new" - local recursive = {{''}, variable = new_variable} - local other = {variable = variable} - for production in utils.loop(nonterminal) do - local local_production = utils.copy(production) - print('\t', variable, utils.to_string(production)) - if local_production[1] == variable then - assert(variable == table.remove(local_production, 1)) - table.insert(local_production, new_variable) - table.insert(recursive, local_production) - else - table.insert(local_production, new_variable) - table.insert(other, local_production) - end - end - if #recursive == 1 then - return nil - else - return other, recursive - end -end - -local function indirect_elimination(configuration) - local actions = utils.copy(configuration) - local variables = {} - for node in configuration:get_dependency_graph():dfs() do table.insert(variables, node) end - for i = 1,#variables do - local old_left = actions[variables[i]] - local new_left = utils.copy(old_left) - local to_remove = {} - for j = 1, #variables do - if i ~= j then - local old_right = actions[variables[j]] - -- find some production of the form A_i := A_j \gamma - for k, production in ipairs(old_left) do - if production[1] == '$' .. variables[j] then - -- expand A_j out - print(variables[i], variables[j], utils.to_string(production)) - for production_j in utils.loop(old_right) do - local new_i_k = utils.copy(production_j) - for l = 2, #production do - table.insert(new_i_k, production[l]) - end - table.insert(new_left, new_i_k) - to_remove[k] = true - end - end - end - end - end - local needs_removing = {} - for k in pairs(to_remove) do table.insert(needs_removing, k) end - table.sort(needs_removing, function(a,b) return b > a end) - for j in utils.loop(needs_removing) do - print(j) - table.remove(new_left, j) - end - -- rewrite A[i] - local normal, recursive = immediate_elimination(new_left) - if normal then - actions[variables[i]] = normal - actions[recursive.variable:sub(2)] = recursive - else - actions[variables[i]] = new_left - end - end - return ll1.configure(actions) -end - -local function direct_factor_elimination(nonterminal) - -- eliminate A -> a \gamma_1 | a \gamma_2 | ... a \gamma_n into - -- A -> a $A'factored | \gamma_{n+1} - -- A'factor#1 -> \gamma_1 | \gamma_2 | ... | \gamma_n - -- we need to keep doing this until we hit a fixed point - local action = {variable = nonterminal.variable} - local new_variables = {} - local variable = nonterminal.variable - -- step 1: compute frequency table of common prefixes - local prefix_freq = {} - for i, production in ipairs(nonterminal) do - if not prefix_freq[production[1]] then prefix_freq[production[1]] = {} end - table.insert(prefix_freq[production[1]], i) - end - -- step 2: compute replacement table - local replacement_id = 1 - for prefix, frequencies in pairs(prefix_freq) do - if #frequencies == 1 then - table.insert(action, nonterminal[frequencies[1]]) - else - -- create a new variable - local new_variable = variable .. '\'factor#' .. replacement_id - local new_nonterminal = {variable = new_variable} - replacement_id = replacement_id + 1 - for id in utils.loop(frequencies) do - local new_production = utils.sublist(nonterminal[id], 2) - if #new_production == 0 then new_production[1] = '' end - table.insert(new_nonterminal, new_production) - end - table.insert(new_variables, new_nonterminal) - table.insert(action, {prefix, new_variable}) - end - end - return action, new_variables -end - -local function left_factor_elimination(configuration) - local has_changes = false - local actions = utils.copy(configuration) - for variable, nonterminal in pairs(configuration) do - local action, new_variables = direct_factor_elimination(nonterminal) - if #new_variables ~= 0 then - has_changes = true - actions[action.variable:sub(2)] = action - for new in utils.loop(new_variables) do - actions[new.variable:sub(2)] = new - end - end - end - if has_changes then - return left_factor_elimination(actions) - end - return ll1.configure(actions) -end - ---[[-- --- testing -local configuration = ll1.configure { - root = { - {'$expr', action = id}, - }, - base = { - {'consts', action = id}, - {'(', '$expr', ')', action = id}, - }, - expr = { - {'$base'}, - {'$base', '+', '$expr'}, - {'$base', '$expr'}, - {'fun', 'identifier', '->', '$expr', action = id}, - }, -} - -local new_configuration = eliminate_nullables(configuration) -print(new_configuration:pretty()) -new_configuration = eliminate_cycles(new_configuration) -print(new_configuration:pretty()) -new_configuration = indirect_elimination(new_configuration) -print(new_configuration:pretty()) -new_configuration = left_factor_elimination(new_configuration) -print(new_configuration:pretty()) - -ll1(new_configuration) -print(new_configuration:firsts():dot()) -print(new_configuration:follows():dot()) ---]]-- - -left_recursion_elimination.eliminate_nullables = eliminate_nullables -left_recursion_elimination.eliminate_cycles = eliminate_cycles -left_recursion_elimination.immediate_elimination = immediate_elimination -left_recursion_elimination.indirect_elimination = indirect_elimination -left_recursion_elimination.left_factor_elimination = left_factor_elimination +-- 3 steps: remove nullables, remove all cycles, and finally remove immediate left recursion + +local left_recursion_elimination = {} + +local ll1 = require 'luainlua.ll1.ll1' +local utils = require 'luainlua.common.utils' +local graph = require 'luainlua.common.graph' +local worklist = require 'luainlua.common.worklist' + +local function hash(production) + return table.concat({unpack(production)}, '`') +end + +local function normalize(production) + local new = {} + for object in utils.loop(production) do + if object ~= '' then + table.insert(new, object) + end + end + return new +end + +local function null_out(production, i, nullable_indices) + local new = {unpack(production)} + local changed = {} + local index = 1 + while true do + local okay = i % 2 == 0 + + if okay then + new[nullable_indices[index]] = '' + table.insert(changed, nullable_indices[index]) + end + + i = math.floor(i / 2) + if i == 0 then break end + index = index + 1 + end + return normalize(new) +end + +local function insert_into(new_nonterminal, production, production_hashes) + local h = hash(production) + if not production_hashes[h] and #production ~= 0 then + table.insert(new_nonterminal, production) + production_hashes[h] = true + end +end + +local function eliminate_nullables(configuration) + local nullables = {} + for variable, nonterminal in pairs(configuration) do + local first_set = configuration:first(variable) + if first_set[''] then + nullables['$' .. variable] = true + end + end + + local new_actions = {} + for variable, nonterminal in pairs(configuration) do + -- let's construct a hashset of the original productions + local seen_productions = {} + for production in utils.loop(nonterminal) do + seen_productions[hash(production)] = true + end + + -- let's compute the null-eliminated expansion + local new_nonterminal = {} + local production_hashes = {} + for production in utils.loop(nonterminal) do + local action = production.action + local nullable_indices = {} + for i, object in ipairs(production) do + if nullables[object] then + table.insert(nullable_indices, i) + end + end + if #nullable_indices ~= 0 then + -- compute the combinatorial transfer to naturals + for i=0,2^#nullable_indices - 1 do + local new_production, changed = null_out(production, i, nullable_indices) + insert_into(new_nonterminal, new_production, production_hashes) + end + else + insert_into(new_nonterminal, normalize(production), production_hashes) + end + end + new_actions[variable] = new_nonterminal + assert(#new_nonterminal ~= 0) + end + return ll1.configure(new_actions) +end + +local function full_dependency_graph(configuration) + -- find all forms of X -> Y + local g = graph() + g.configuration = configuration + for variable, nonterminal in pairs(configuration) do + for production in utils.loop(nonterminal) do + for object in utils.loop(production) do + if object:sub(1,1) == '$' then + g:edge(object:sub(2), variable) + g:edge(variable, object:sub(2)) + end + end + end + end + g:set_root('root') + return g +end + +-- computes the set of productions that A =*> goes to +local transitive_algorithm = worklist { + -- what is the domain? Sets of productions + initialize = function(self, _, _) + return {} + end, + transfer = function(self, node, _, graph, pred) + local transitive_set = self:initialize(node) + local nonterminal = graph.configuration[node] + local single_set = {} + for production in utils.loop(nonterminal) do + transitive_set[hash(production)] = production + if #production == 1 and production[1]:sub(1, 1) == '$' then + transitive_set = self:merge( + transitive_set, + self.partial_solution[production[1]:sub(2)]) + end + end + return transitive_set + end, + changed = function(self, old, new) + -- assuming monotone in the new direction + for key in pairs(new) do + if not old[key] then + return true + end + end + return false + end, + merge = function(self, left, right) + local merged = utils.copy(left) + for key in pairs(right) do + merged[key] = right[key] + end + return merged + end, + tostring = function(self, _, node, input) + local list = {} + for key in pairs(input) do table.insert(list, key) end + return node .. ' -> ' .. table.concat(list, ' | ') + end +} + +local function eliminate_cycles(configuration) + local use_graph = full_dependency_graph(configuration) + local transitive_set = transitive_algorithm:forward(use_graph) + local cycle_set = {} + for variable, transitionable in pairs(transitive_set) do + if transitionable['$' .. variable] then + cycle_set[variable] = true + end + end + local noncyclic_set = {} + for key, map in pairs(transitive_set) do + noncyclic_set[key] = utils.kfilter(function(k, v) return not cycle_set[k:sub(2)] end, map) + end + + local new_actions = {} + for variable, nonterminal in pairs(configuration) do + if variable ~= 'root' then + -- look for productions that are exactly $Cyclic + local productions_map = {} + for production in utils.loop(nonterminal) do + if #production == 1 and production[1]:sub(1, 1) == '$' then + local other = production[1]:sub(2) + if cycle_set[other] then + for h, other_production in pairs(noncyclic_set[other]) do + productions_map[h] = other_production + end + else + productions_map[hash(production)] = production + end + else + productions_map[hash(production)] = production + end + end + new_actions[variable] = {} + for _, production in pairs(productions_map) do + table.insert(new_actions[variable], production) + end + else + new_actions[variable] = nonterminal + end + end + return ll1.configure(new_actions) +end + +local function immediate_elimination(nonterminal) + local variable = nonterminal.variable + local new_variable = variable .. "'new" + local recursive = {{''}, variable = new_variable} + local other = {variable = variable} + for production in utils.loop(nonterminal) do + local local_production = utils.copy(production) + print('\t', variable, utils.to_string(production)) + if local_production[1] == variable then + assert(variable == table.remove(local_production, 1)) + table.insert(local_production, new_variable) + table.insert(recursive, local_production) + else + table.insert(local_production, new_variable) + table.insert(other, local_production) + end + end + if #recursive == 1 then + return nil + else + return other, recursive + end +end + +local function indirect_elimination(configuration) + local actions = utils.copy(configuration) + local variables = {} + for node in configuration:get_dependency_graph():dfs() do table.insert(variables, node) end + for i = 1,#variables do + local old_left = actions[variables[i]] + local new_left = utils.copy(old_left) + local to_remove = {} + for j = 1, #variables do + if i ~= j then + local old_right = actions[variables[j]] + -- find some production of the form A_i := A_j \gamma + for k, production in ipairs(old_left) do + if production[1] == '$' .. variables[j] then + -- expand A_j out + print(variables[i], variables[j], utils.to_string(production)) + for production_j in utils.loop(old_right) do + local new_i_k = utils.copy(production_j) + for l = 2, #production do + table.insert(new_i_k, production[l]) + end + table.insert(new_left, new_i_k) + to_remove[k] = true + end + end + end + end + end + local needs_removing = {} + for k in pairs(to_remove) do table.insert(needs_removing, k) end + table.sort(needs_removing, function(a,b) return b > a end) + for j in utils.loop(needs_removing) do + print(j) + table.remove(new_left, j) + end + -- rewrite A[i] + local normal, recursive = immediate_elimination(new_left) + if normal then + actions[variables[i]] = normal + actions[recursive.variable:sub(2)] = recursive + else + actions[variables[i]] = new_left + end + end + return ll1.configure(actions) +end + +local function direct_factor_elimination(nonterminal) + -- eliminate A -> a \gamma_1 | a \gamma_2 | ... a \gamma_n into + -- A -> a $A'factored | \gamma_{n+1} + -- A'factor#1 -> \gamma_1 | \gamma_2 | ... | \gamma_n + -- we need to keep doing this until we hit a fixed point + local action = {variable = nonterminal.variable} + local new_variables = {} + local variable = nonterminal.variable + -- step 1: compute frequency table of common prefixes + local prefix_freq = {} + for i, production in ipairs(nonterminal) do + if not prefix_freq[production[1]] then prefix_freq[production[1]] = {} end + table.insert(prefix_freq[production[1]], i) + end + -- step 2: compute replacement table + local replacement_id = 1 + for prefix, frequencies in pairs(prefix_freq) do + if #frequencies == 1 then + table.insert(action, nonterminal[frequencies[1]]) + else + -- create a new variable + local new_variable = variable .. '\'factor#' .. replacement_id + local new_nonterminal = {variable = new_variable} + replacement_id = replacement_id + 1 + for id in utils.loop(frequencies) do + local new_production = utils.sublist(nonterminal[id], 2) + if #new_production == 0 then new_production[1] = '' end + table.insert(new_nonterminal, new_production) + end + table.insert(new_variables, new_nonterminal) + table.insert(action, {prefix, new_variable}) + end + end + return action, new_variables +end + +local function left_factor_elimination(configuration) + local has_changes = false + local actions = utils.copy(configuration) + for variable, nonterminal in pairs(configuration) do + local action, new_variables = direct_factor_elimination(nonterminal) + if #new_variables ~= 0 then + has_changes = true + actions[action.variable:sub(2)] = action + for new in utils.loop(new_variables) do + actions[new.variable:sub(2)] = new + end + end + end + if has_changes then + return left_factor_elimination(actions) + end + return ll1.configure(actions) +end + +--[[-- +-- testing +local configuration = ll1.configure { + root = { + {'$expr', action = id}, + }, + base = { + {'consts', action = id}, + {'(', '$expr', ')', action = id}, + }, + expr = { + {'$base'}, + {'$base', '+', '$expr'}, + {'$base', '$expr'}, + {'fun', 'identifier', '->', '$expr', action = id}, + }, +} + +local new_configuration = eliminate_nullables(configuration) +print(new_configuration:pretty()) +new_configuration = eliminate_cycles(new_configuration) +print(new_configuration:pretty()) +new_configuration = indirect_elimination(new_configuration) +print(new_configuration:pretty()) +new_configuration = left_factor_elimination(new_configuration) +print(new_configuration:pretty()) + +ll1(new_configuration) +print(new_configuration:firsts():dot()) +print(new_configuration:follows():dot()) +--]]-- + +left_recursion_elimination.eliminate_nullables = eliminate_nullables +left_recursion_elimination.eliminate_cycles = eliminate_cycles +left_recursion_elimination.immediate_elimination = immediate_elimination +left_recursion_elimination.indirect_elimination = indirect_elimination +left_recursion_elimination.left_factor_elimination = left_factor_elimination return left_recursion_elimination \ No newline at end of file diff --git a/ll1/ll1.lua b/luainlua/ll1/ll1.lua similarity index 94% rename from ll1/ll1.lua rename to luainlua/ll1/ll1.lua index 6648644..f8f8c3f 100644 --- a/ll1/ll1.lua +++ b/luainlua/ll1/ll1.lua @@ -1,543 +1,544 @@ --- LL1 parser, which is somewhat limited :'( - -local ll1 = {} - -local utils = require 'common.utils' -local graph = require 'common.graph' -local worklist = require 'common.worklist' - -local nonterminals = {} -local configurations = {} - -local EPS = '' -local EOF = '$$EOF$$' -local ERROR = -1 - --- computes the first sets of nonterminals -local first_algorithm = worklist { - -- what is the domain? Sets of tokens - initialize = function(self, _, _) - return {} - end, - transfer = function(self, node, _, graph, pred) - local first_set = self:initialize(node) - local configuration = graph.configuration - local nonterminals = configuration[node] - if not nonterminals then - error(("Variable $%s does not exist."):format(node)) - end - for production in utils.loop(nonterminals) do - local nullable = true - for object in utils.loop(production) do - if object:sub(1, 1) == '$' then - local partial_first_set = utils.copy(self.partial_solution[object:sub(2)]) - local eps = partial_first_set[EPS] - partial_first_set[EPS] = nil - first_set = self:merge(first_set, partial_first_set) - if not eps then - nullable = false - break - end - else - if object ~= EPS then - first_set[object] = true - nullable = false - break - end - end - end - if nullable then - first_set[EPS] = true - end - end - return first_set - end, - changed = function(self, old, new, x) - -- assuming monotone in the new direction - -- print(utils.to_list(old), utils.to_list(new)) - for key in pairs(new) do - if not old[key] then - return true - end - end - return false - end, - merge = function(self, left, right) - local merged = utils.copy(left) - for key in pairs(right) do - merged[key] = true - end - return merged - end, - tostring = function(self, _, node, input) - local list = {} - for key in pairs(input) do table.insert(list, key) end - return node .. ' ' .. table.concat(list, ',') - end -} - -local follow_algorithm = worklist { - -- what is the domain? Sets of tokens - initialize = function(self, node, _) - if node == 'root' then return {[EOF] = true} end - return {} - end, - transfer = function(self, node, follow_pred, graph, pred) - local follow_set = self:initialize(node) - local configuration = graph.configuration - for suffix in pairs(graph.forward[pred][node]) do - follow_set = self:merge(follow_set, ll1.first(configuration, suffix)) - end - -- TODO: first set may be null even when the production itself is not nullable - if follow_set[EPS] then - follow_set = self:merge(follow_set, follow_pred) - end - return follow_set - end, - changed = function(self, old, new) - -- assuming monotone in the new direction - for key in pairs(new) do - if not old[key] then - return true - end - end - return false - end, - merge = function(self, left, right) - local merged = utils.copy(left) - for key in pairs(right) do - merged[key] = true - end - return merged - end, - tostring = function(self, _, node, input) - local list = {} - for key in pairs(input) do table.insert(list, key) end - return node .. ' ' .. table.concat(list, ',') - end -} - -local function get_nonterminal(configuration, variable) - if variable:sub(1, 1) == '$' then - return configuration[variable:sub(2)] - end - return -end - -local function get_terminals_from(configuration) - local terminals = {} - for _, productions in pairs(configuration) do - for production in utils.loop(productions) do - for terminal in utils.loop(production) do - if terminal ~= EPS and terminal ~= EOF then - terminals[terminal] = true - end - end - end - end - terminals[EOF] = true - return terminals -end - -function configurations:get_dependency_graph() - if not self.graph then - local dependency_graph = graph.create() - dependency_graph.configuration = self - for _, nonterminal in pairs(self) do - nonterminal:dependency(dependency_graph, self) - end - dependency_graph:set_root('root') - getmetatable(self)['__index']['graph'] = dependency_graph - end - return self.graph -end - -local function full_dependency_graph(configuration) - -- find all forms of X -> Y - local g = graph() - g.configuration = configuration - for variable, nonterminal in pairs(configuration) do - for production in utils.loop(nonterminal) do - for object in utils.loop(production) do - if object:sub(1,1) == '$' then - g:edge(object:sub(2), variable) - g:edge(variable, object:sub(2)) - end - end - end - end - g:set_root('root') - return g -end - -function configurations:firsts() - if not self.cached_firsts then - getmetatable(self)['__index']['cached_firsts'] = first_algorithm:forward(full_dependency_graph(self)) - end - return utils.copy(self.cached_firsts) -end - -function configurations:follows() - if not self.cached_follows then - getmetatable(self)['__index']['cached_follows'] = follow_algorithm:forward(self:get_dependency_graph()) - end - return utils.copy(self.cached_follows) -end - -function configurations:first(variable) - return self:firsts()[variable] -end - -function configurations:follow(variable) - return self:follows()[variable] -end - -local function merge(left, right) - local merged = utils.copy(left) - for key in pairs(right) do - merged[key] = true - end - return merged -end - -function ll1.first(configuration, production) - local first_set = {} - for object in utils.loop(production) do - if object:sub(1, 1) == '$' then - local partial_first_set = utils.copy(configuration:first(object:sub(2))) - local eps = partial_first_set[EPS] - partial_first_set[EPS] = nil - first_set = merge(first_set, partial_first_set) - if not eps then return first_set end - else - if object ~= EPS then first_set[object] = true; return first_set end - end - end - first_set[EPS] = true - return first_set -end - -function nonterminals:first(configuration) - configuration:first(self.variable:sub(2)) -end - -local function prettify(production) - local result = {} - for object in utils.loop(production) do - local new - if object:sub(1,1) == '$' then - new = object - else - new = ("'%s'"):format(object) - end - table.insert(result, new) - end - return result -end - -function configurations:pretty() - local str = '' - for variable, nonterminals in pairs(self) do - local productions = {} - for production in utils.loop(nonterminals) do - table.insert(productions, table.concat(prettify(production), ' ')) - end - str = str .. variable .. '\t\t' .. ':= ' .. table.concat(productions, ' | ') .. ';\n' - end - return str -end - -function configurations:uses(x) - -- returns set of {variable, suffix_production} such that - -- y -> \alpha $x \beta, then return {$y, \beta} or {$y, ''} - local uses = {} - for y, nonterminal in pairs(self) do - for _, production in ipairs(nonterminal) do - for i, object in ipairs(production) do - if object == x then - local suffix = utils.sublist(production, i + 1) - table.insert(uses, {'$' .. y, suffix}) - end - end - end - end - return uses -end - -function nonterminals:dependency(graph, configuration) - if graph.nodes[self.variable:sub(2)] then - return graph - end - graph:vertex(self.variable:sub(2)) - local uses = configuration:uses(self.variable) - for variable, suffix in utils.uloop(uses) do - get_nonterminal(configuration, variable):dependency(graph, configuration) --- setmetatable( --- suffix, --- {__tostring = function(self) return table.concat(ll1.first(configuration, suffix), ', ') end}) - graph:edge(variable:sub(2), self.variable:sub(2), suffix, true) - end - return graph -end - - -local yacc = {} - -function ll1.configure(actions) - -- Associate the correct set of metatables to the nonterminals - local configuration = {} - for variable, productions in pairs(actions) do - if variable ~= 1 then - setmetatable(productions, {__index = nonterminals}) - productions.variable = '$' .. variable - configuration[variable] = productions - end - end - return setmetatable(configuration, {__index = utils.copy(configurations)}) -end - -function ll1.yacc(actions) - -- Associate the correct set of metatables to the nonterminals - local configuration = ll1.configure(actions) - - local first_sets = configuration:firsts() - local follow_sets = configuration:follows() - local terminals = get_terminals_from(configuration) - local transition_table = {} - - for variable in pairs(configuration) do - transition_table[variable] = {} - for terminal in pairs(terminals) do - transition_table[variable][terminal] = ERROR - end - end - - for variable, productions in pairs(configuration) do - for i, production in ipairs(productions) do - local firsts = ll1.first(configuration, production) - for terminal in pairs(firsts) do - if terminal ~= EPS then - if transition_table[variable][terminal] ~= ERROR and transition_table[variable][terminal] ~= i then - -- check to see if there's an oracle - if configuration[variable].conflict and type(configuration[variable].conflict[terminal]) == 'function' then - if type(transition_table[variable][terminal]) == 'number' then - transition_table[variable][terminal] = {transition_table[variable][terminal]} - end - table.insert(transition_table[variable][terminal], i) - else - print('ERROR', variable, terminal, table.concat(configuration[variable][transition_table[variable][terminal]], ', '), transition_table[variable][terminal]) - print('', '', '<>', table.concat(production, ', '), i) - end - else - transition_table[variable][terminal] = i - end - end - end - if firsts[EPS] then - local follows = follow_sets[variable] - for terminal in pairs(follows) do - if terminal ~= EPS then - if transition_table[variable][terminal] ~= ERROR and transition_table[variable][terminal] ~= i then - -- check to see if there's an oracle - if configuration[variable].conflict and type(configuration[variable].conflict[terminal]) == 'function' then - if type(transition_table[variable][terminal]) == 'number' then - transition_table[variable][terminal] = {transition_table[variable][terminal]} - end - table.insert(transition_table[variable][terminal], i) - else - print('ERROR', variable, terminal, table.concat(configuration[variable][transition_table[variable][terminal]], ', '), transition_table[variable][terminal]) - print('', '', '<>', table.concat(production, ', '), i) - end - else - transition_table[variable][terminal] = i - end - end - end - end - end - end - - local y = utils.copy(yacc) - y.configuration = configuration - setmetatable(transition_table, {__index = y}) - - return transition_table -end - -local function consume(tokens) - return table.remove(tokens, 1) -end -local function peek(tokens) - return tokens[1] -end -local function enqueue(tokens, item) - table.insert(tokens, 1, item) -end -local function id(...) - return ... -end -local function next100tokens(tokens) - print("The next 100 tokens are:") - print(unpack(utils.sublist(utils.map(function(x) return "'" .. x[2] .. "'" end, tokens), 1, 100))) -end - -function yacc:parse(tokens, state, trace) - if not state then state = 'root' end - if not trace then trace = {} end - local token = peek(tokens) - if not token then token = EOF end - local converted_token = tostring(token) - local production_index = self[state][converted_token] - if not production_index then - next100tokens(tokens) - print("Error", state, token, "Unknown token") - return ERROR, trace - end - -- check if we have an oracle - if type(production_index) ~= 'number' then - if type(production_index) ~= 'table' then - next100tokens(tokens) - print("Error", state, production_index, "Unknown oracle") - return ERROR, trace - end - local oracle = setmetatable( - utils.copy(production_index), - { - __index = { - go = function(conflicts, tag) - for to in utils.loop(conflicts) do - if self.configuration[state][to].tag == tag or (tag == EPS and self.configuration[state][to][1] == EPS) then - return to - end - end - print("Warning " .. tag .. " is not valid") - return ERROR - end - } - } - ) - production_index = self.configuration[state].conflict[tostring(token)](oracle, tokens) - if not production_index then - next100tokens(tokens) - print("Error", state, token, "Unknown token") - return ERROR, trace - end - end - local production = self.configuration[state][production_index] - -- local local_trace = {state, converted_token, utils.copy(tokens), production} - -- table.insert(trace, local_trace) - if production_index == ERROR then - next100tokens(tokens) - print("Error", state, tostring(token), "Candidates are:") - for production in utils.loop(self.configuration[state]) do - print('', '', table.concat(utils.map(function(x) return (x == '' and 'eps') or tostring(x) end, production), ' ')) - end - return ERROR, trace - end - local args = {} - for node in utils.loop(production) do - if node:sub(1, 1) == '$' then - local ret = self:parse(tokens, node:sub(2), trace) - if ret == ERROR then - print(" From", state, token, table.concat(utils.map(tostring, production), ' ')) - return ERROR, trace - end - table.insert(args, ret) - elseif converted_token ~= EOF and node ~= EPS then - local token = consume(tokens) - if not token then token = EOF end - if node ~= tostring(token) then - next100tokens(tokens) - print("ERROR", state, tostring(token), "Expected: " .. tostring(node)) - return ERROR, trace - end - table.insert(args, token) - elseif converted_token ~= EOF and node == EPS then - -- don't do anything - assert(production[1] == EPS) - else - local token = consume(tokens) - if token then - next100tokens(tokens) - print("ERROR", state, tostring(token), "Expected: " .. EOF) - return ERROR, trace - end - end - end - -- table.insert(local_trace, args) - local success, result = pcall(production.action, unpack(args)) - if not success then - next100tokens(tokens) - print("ERROR", "Cannot call action: " .. result) - print(" From", state, tostring(token), table.concat(utils.map(tostring, production), ' ')) - return ERROR, trace - end - if not result then - next100tokens(tokens) - local info = debug.getinfo(production.action, "Sl") - print("ERROR", "Cannot have an action that returns nil", string.format("%s:%d", info.short_src, info.linedefined)) - print(" From", state, tostring(token), table.concat(utils.map(tostring, production), ' ')) - return ERROR, trace - end - return result, trace -end - -function yacc:save(file) - -- dump out the table - -- if io.open(file, "r") then return end - local serialized_dump = utils.dump {self, self.configuration} - local stream = assert(io.open(file, "w")) - stream:write('return ' .. serialized_dump) - assert(stream:close()) - return self -end - -function ll1.create(actions) - actions = utils.copy(actions) - local file = table.remove(actions) - - if not file then - return ll1.yacc(actions) - end - - local deserialize = loadfile(file) - if not deserialize then - local transitions = ll1.yacc(actions) - return transitions:save(file) - end - - local status, bundle = pcall(deserialize) - if not status then - return ll1.yacc(actions):save(file) - end - - local transitions, configuration = unpack(bundle) - setmetatable(configuration, {__index = utils.copy(configurations)}) - local y = utils.copy(yacc) - y.configuration = actions - setmetatable(transitions, {__index = y}) - local sane = true - for variable, productions in pairs(configuration) do - for index, production in ipairs(productions) do - if not actions[variable] or not actions[variable][index] then - sane = false - break - end - local action = actions[variable][index] - production.action = action.action - for j, object in ipairs(production) do - if object ~= action[j] then - sane = false - break - end - end - end - end - if sane then - return transitions - else - return ll1.yacc(actions):save(file) - end -end - +-- LL1 parser, which is somewhat limited :'( + +local ll1 = {} + +local utils = require 'luainlua.common.utils' +local graph = require 'luainlua.common.graph' +local worklist = require 'luainlua.common.worklist' + +local nonterminals = {} +local configurations = {} + +local EPS = '' +local EOF = '$$EOF$$' +local ERROR = -1 + +-- computes the first sets of nonterminals +local first_algorithm = worklist { + -- what is the domain? Sets of tokens + initialize = function(self, _, _) + return {} + end, + transfer = function(self, node, _, graph, pred) + local first_set = self:initialize(node) + local configuration = graph.configuration + local nonterminals = configuration[node] + if not nonterminals then + error(("Variable $%s does not exist."):format(node)) + end + for production in utils.loop(nonterminals) do + local nullable = true + for object in utils.loop(production) do + if object:sub(1, 1) == '$' then + local partial_first_set = utils.copy(self.partial_solution[object:sub(2)]) + local eps = partial_first_set[EPS] + partial_first_set[EPS] = nil + first_set = self:merge(first_set, partial_first_set) + if not eps then + nullable = false + break + end + else + if object ~= EPS then + first_set[object] = true + nullable = false + break + end + end + end + if nullable then + first_set[EPS] = true + end + end + return first_set + end, + changed = function(self, old, new, x) + -- assuming monotone in the new direction + -- print(utils.to_list(old), utils.to_list(new)) + for key in pairs(new) do + if not old[key] then + return true + end + end + return false + end, + merge = function(self, left, right) + local merged = utils.copy(left) + for key in pairs(right) do + merged[key] = true + end + return merged + end, + tostring = function(self, _, node, input) + local list = {} + for key in pairs(input) do table.insert(list, key) end + return node .. ' ' .. table.concat(list, ',') + end +} + +local follow_algorithm = worklist { + -- what is the domain? Sets of tokens + initialize = function(self, node, _) + if node == 'root' then return {[EOF] = true} end + return {} + end, + transfer = function(self, node, follow_pred, graph, pred) + if node == 'root' then return {[EOF] = true} end + + local follow_set = self:initialize(node) + local configuration = graph.configuration + for suffix in pairs(graph.forward[pred][node]) do + follow_set = self:merge(follow_set, ll1.first(configuration, suffix)) + end + -- TODO: first set may be null even when the production itself is not nullable + if follow_set[EPS] then + follow_set = self:merge(follow_set, follow_pred) + end + return follow_set + end, + changed = function(self, old, new) + -- assuming monotone in the new direction + for key in pairs(new) do + if not old[key] then + return true + end + end + return false + end, + merge = function(self, left, right) + local merged = utils.copy(left) + for key in pairs(right) do + merged[key] = true + end + return merged + end, + tostring = function(self, _, node, input) + local list = {} + for key in pairs(input) do table.insert(list, key) end + return node .. ' ' .. table.concat(list, ',') + end +} + +local function get_nonterminal(configuration, variable) + if variable:sub(1, 1) == '$' then + return configuration[variable:sub(2)] + end + return +end + +local function get_terminals_from(configuration) + local terminals = {} + for _, productions in pairs(configuration) do + for production in utils.loop(productions) do + for terminal in utils.loop(production) do + if terminal ~= EPS and terminal ~= EOF then + terminals[terminal] = true + end + end + end + end + terminals[EOF] = true + return terminals +end + +function configurations:get_dependency_graph() + if not self.graph then + local dependency_graph = graph.create() + dependency_graph.configuration = self + for _, nonterminal in pairs(self) do + nonterminal:dependency(dependency_graph, self) + end + dependency_graph:set_root('root') + getmetatable(self)['__index']['graph'] = dependency_graph + end + return self.graph +end + +local function full_dependency_graph(configuration) + -- find all forms of X -> Y + local g = graph() + g.configuration = configuration + for variable, nonterminal in pairs(configuration) do + for production in utils.loop(nonterminal) do + for object in utils.loop(production) do + if object:sub(1,1) == '$' then + g:edge(object:sub(2), variable) + g:edge(variable, object:sub(2)) + end + end + end + end + g:set_root('root') + return g +end + +function configurations:firsts() + if not self.cached_firsts then + getmetatable(self)['__index']['cached_firsts'] = first_algorithm:forward(full_dependency_graph(self)) + end + return utils.copy(self.cached_firsts) +end + +function configurations:follows() + if not self.cached_follows then + getmetatable(self)['__index']['cached_follows'] = follow_algorithm:forward(self:get_dependency_graph()) + end + return utils.copy(self.cached_follows) +end + +function configurations:first(variable) + return self:firsts()[variable] +end + +function configurations:follow(variable) + return self:follows()[variable] +end + +local function merge(left, right) + local merged = utils.copy(left) + for key in pairs(right) do + merged[key] = true + end + return merged +end + +function ll1.first(configuration, production) + local first_set = {} + for object in utils.loop(production) do + if object:sub(1, 1) == '$' then + local partial_first_set = utils.copy(configuration:first(object:sub(2))) + local eps = partial_first_set[EPS] + partial_first_set[EPS] = nil + first_set = merge(first_set, partial_first_set) + if not eps then return first_set end + else + if object ~= EPS then first_set[object] = true; return first_set end + end + end + first_set[EPS] = true + return first_set +end + +function nonterminals:first(configuration) + configuration:first(self.variable:sub(2)) +end + +local function prettify(production) + local result = {} + for object in utils.loop(production) do + local new + if object:sub(1,1) == '$' then + new = object + else + new = ("'%s'"):format(object) + end + table.insert(result, new) + end + return result +end + +function configurations:pretty() + local str = '' + for variable, nonterminals in pairs(self) do + local productions = {} + for production in utils.loop(nonterminals) do + table.insert(productions, table.concat(prettify(production), ' ')) + end + str = str .. variable .. '\t\t' .. ':= ' .. table.concat(productions, ' | ') .. ';\n' + end + return str +end + +function configurations:uses(x) + -- returns set of {variable, suffix_production} such that + -- y -> \alpha $x \beta, then return {$y, \beta} or {$y, ''} + local uses = {} + for y, nonterminal in pairs(self) do + for _, production in ipairs(nonterminal) do + for i, object in ipairs(production) do + if object == x then + local suffix = utils.sublist(production, i + 1) + table.insert(uses, {'$' .. y, suffix}) + end + end + end + end + return uses +end + +function nonterminals:dependency(graph, configuration) + if graph.nodes[self.variable:sub(2)] then + return graph + end + graph:vertex(self.variable:sub(2)) + local uses = configuration:uses(self.variable) + for variable, suffix in utils.uloop(uses) do + get_nonterminal(configuration, variable):dependency(graph, configuration) +-- setmetatable( +-- suffix, +-- {__tostring = function(self) return table.concat(ll1.first(configuration, suffix), ', ') end}) + graph:edge(variable:sub(2), self.variable:sub(2), suffix, true) + end + return graph +end + + +local yacc = {} + +function ll1.configure(actions) + -- Associate the correct set of metatables to the nonterminals + local configuration = {} + for variable, productions in pairs(actions) do + if variable ~= 1 then + setmetatable(productions, {__index = nonterminals}) + productions.variable = '$' .. variable + configuration[variable] = productions + end + end + return setmetatable(configuration, {__index = utils.copy(configurations)}) +end + +function ll1.yacc(actions) + -- Associate the correct set of metatables to the nonterminals + local configuration = ll1.configure(actions) + local first_sets = configuration:firsts() + local follow_sets = configuration:follows() + local terminals = get_terminals_from(configuration) + local transition_table = {} + + for variable in pairs(configuration) do + transition_table[variable] = {} + for terminal in pairs(terminals) do + transition_table[variable][terminal] = ERROR + end + end + + for variable, productions in pairs(configuration) do + for i, production in ipairs(productions) do + local firsts = ll1.first(configuration, production) + for terminal in pairs(firsts) do + if terminal ~= EPS then + if transition_table[variable][terminal] ~= ERROR and transition_table[variable][terminal] ~= i then + -- check to see if there's an oracle + if configuration[variable].conflict and type(configuration[variable].conflict[terminal]) == 'function' then + if type(transition_table[variable][terminal]) == 'number' then + transition_table[variable][terminal] = {transition_table[variable][terminal]} + end + table.insert(transition_table[variable][terminal], i) + else + print('ERROR', variable, terminal, table.concat(configuration[variable][transition_table[variable][terminal]], ', '), transition_table[variable][terminal]) + print('', '', '<>', table.concat(production, ', '), i) + end + else + transition_table[variable][terminal] = i + end + end + end + if firsts[EPS] then + local follows = follow_sets[variable] + for terminal in pairs(follows) do + if terminal ~= EPS then + if transition_table[variable][terminal] ~= ERROR and transition_table[variable][terminal] ~= i then + -- check to see if there's an oracle + if configuration[variable].conflict and type(configuration[variable].conflict[terminal]) == 'function' then + if type(transition_table[variable][terminal]) == 'number' then + transition_table[variable][terminal] = {transition_table[variable][terminal]} + end + table.insert(transition_table[variable][terminal], i) + else + print('ERROR', variable, terminal, table.concat(configuration[variable][transition_table[variable][terminal]], ', '), transition_table[variable][terminal]) + print('', '', '<>', table.concat(production, ', '), i) + end + else + transition_table[variable][terminal] = i + end + end + end + end + end + end + + local y = utils.copy(yacc) + y.configuration = configuration + setmetatable(transition_table, {__index = y}) + + return transition_table +end + +local function consume(tokens) + return table.remove(tokens, 1) +end +local function peek(tokens) + return tokens[1] +end +local function enqueue(tokens, item) + table.insert(tokens, 1, item) +end +local function id(...) + return ... +end +local function next100tokens(tokens) + print("The next 100 tokens are:") + print(unpack(utils.sublist(utils.map(function(x) return "'" .. x[2] .. "'" end, tokens), 1, 100))) +end + +function yacc:parse(tokens, state, trace) + if not state then state = 'root' end + if not trace then trace = {} end + local token = peek(tokens) + if not token then token = EOF end + local converted_token = tostring(token) + local production_index = self[state][converted_token] + if not production_index then + next100tokens(tokens) + print("Error", state, token, "Unknown token") + return ERROR, trace + end + -- check if we have an oracle + if type(production_index) ~= 'number' then + if type(production_index) ~= 'table' then + next100tokens(tokens) + print("Error", state, production_index, "Unknown oracle") + return ERROR, trace + end + local oracle = setmetatable( + utils.copy(production_index), + { + __index = { + go = function(conflicts, tag) + for to in utils.loop(conflicts) do + if self.configuration[state][to].tag == tag or (tag == EPS and self.configuration[state][to][1] == EPS) then + return to + end + end + print("Warning " .. tag .. " is not valid") + return ERROR + end + } + } + ) + production_index = self.configuration[state].conflict[tostring(token)](oracle, tokens) + if not production_index then + next100tokens(tokens) + print("Error", state, token, "Unknown token") + return ERROR, trace + end + end + local production = self.configuration[state][production_index] + -- local local_trace = {state, converted_token, utils.copy(tokens), production} + -- table.insert(trace, local_trace) + if production_index == ERROR then + next100tokens(tokens) + print("Error", state, tostring(token), "Candidates are:") + for production in utils.loop(self.configuration[state]) do + print('', '', table.concat(utils.map(function(x) return (x == '' and 'eps') or tostring(x) end, production), ' ')) + end + return ERROR, trace + end + local args = {} + for node in utils.loop(production) do + if node:sub(1, 1) == '$' then + local ret = self:parse(tokens, node:sub(2), trace) + if ret == ERROR then + print(" From", state, token, table.concat(utils.map(tostring, production), ' ')) + return ERROR, trace + end + table.insert(args, ret) + elseif converted_token ~= EOF and node ~= EPS then + local token = consume(tokens) + if not token then token = EOF end + if node ~= tostring(token) then + next100tokens(tokens) + print("ERROR", state, tostring(token), "Expected: " .. tostring(node)) + return ERROR, trace + end + table.insert(args, token) + elseif converted_token ~= EOF and node == EPS then + -- don't do anything + assert(production[1] == EPS) + else + local token = consume(tokens) + if token then + next100tokens(tokens) + print("ERROR", state, tostring(token), "Expected: " .. EOF) + return ERROR, trace + end + end + end + -- table.insert(local_trace, args) + local success, result = pcall(production.action, unpack(args)) + if not success then + next100tokens(tokens) + print("ERROR", "Cannot call action: " .. result) + print(" From", state, tostring(token), table.concat(utils.map(tostring, production), ' ')) + return ERROR, trace + end + if not result then + next100tokens(tokens) + local info = debug.getinfo(production.action, "Sl") + print("ERROR", "Cannot have an action that returns nil", string.format("%s:%d", info.short_src, info.linedefined)) + print(" From", state, tostring(token), table.concat(utils.map(tostring, production), ' ')) + return ERROR, trace + end + return result, trace +end + +function yacc:save(file) + -- dump out the table + -- if io.open(file, "r") then return end + local serialized_dump = utils.dump {self, self.configuration} + local stream = assert(io.open(file, "w")) + stream:write('return ' .. serialized_dump) + assert(stream:close()) + return self +end + +function ll1.create(actions) + actions = utils.copy(actions) + local file = table.remove(actions) + + if not file then + return ll1.yacc(actions) + end + + local status, bundle = pcall(require, file:gsub('/', '.'):gsub('.lua$', '')) + if not status then + local transitions = ll1.yacc(actions) + return transitions:save(file) + end + +-- local status, bundle = pcall(deserialize) +-- if not status then +-- return ll1.yacc(actions):save(file) +-- end + + local transitions, configuration = unpack(bundle) + setmetatable(configuration, {__index = utils.copy(configurations)}) + local y = utils.copy(yacc) + y.configuration = actions + setmetatable(transitions, {__index = y}) + local sane = true + for variable, productions in pairs(configuration) do + for index, production in ipairs(productions) do + if not actions[variable] or not actions[variable][index] then + sane = false + break + end + local action = actions[variable][index] + production.action = action.action + for j, object in ipairs(production) do + if object ~= action[j] then + sane = false + break + end + end + end + end + if sane then + return transitions + else + return ll1.yacc(actions):save(file) + end +end + return setmetatable(ll1, {__call = function(self, ...) return self.create(...) end}) \ No newline at end of file diff --git a/luainlua/lua.lua b/luainlua/lua.lua new file mode 100644 index 0000000..5792261 --- /dev/null +++ b/luainlua/lua.lua @@ -0,0 +1,24 @@ +local luac = require 'luainlua.luac' +local argparse = require 'argparse' + +function main(arg) + local parser = argparse("script", "An example.") + parser:argument("input", "Input file.", "--") + parser:option("-d --dump"):args "?" + local args = parser:parse() + local code + if (args.input == '--') then + code = io.read("*all") + else + code = io.open(args.input, 'r'):read('*all') + end + local args = parser:parse() + local func, bytecode, prototype, dumper = luac.compile(code) + if args.dump then + dumper(prototype) + print("--- END OF DUMP ---") + end + return func() +end + +main(arg) \ No newline at end of file diff --git a/lua/ast.lua b/luainlua/lua/ast.lua similarity index 88% rename from lua/ast.lua rename to luainlua/lua/ast.lua index 9a5b684..d609c55 100644 --- a/lua/ast.lua +++ b/luainlua/lua/ast.lua @@ -1,37 +1,37 @@ -local utils = require 'common.utils' - -local ast = {} - -function ast:before(node) - -end - -function ast:after(node, result) - return result -end - -function ast:accept(node, ...) - if not node.kind then - return - end - self:before(node) - local action = self['on_' .. node.kind] - local result, continue - if action then - result, continue = action(self, node, ...) - end - if continue then - for child in utils.loop(node) do - self:accept(child) - end - end - return self:after(node, result) -end - -return setmetatable( - ast, - { - __call = function(self, visitor) - return setmetatable(visitor, {__index = ast}) - end +local utils = require 'luainlua.common.utils' + +local ast = {} + +function ast:before(node) + +end + +function ast:after(node, result) + return result +end + +function ast:accept(node, ...) + if not node.kind then + return + end + self:before(node) + local action = self['on_' .. node.kind] + local result, continue + if action then + result, continue = action(self, node, ...) + end + if continue then + for child in utils.loop(node) do + self:accept(child) + end + end + return self:after(node, result) +end + +return setmetatable( + ast, + { + __call = function(self, visitor) + return setmetatable(visitor, {__index = ast}) + end }) \ No newline at end of file diff --git a/lua/base_visitor.lua b/luainlua/lua/base_visitor.lua similarity index 95% rename from lua/base_visitor.lua rename to luainlua/lua/base_visitor.lua index af77ee0..d964116 100644 --- a/lua/base_visitor.lua +++ b/luainlua/lua/base_visitor.lua @@ -1,202 +1,202 @@ -local ast = require 'lua.ast' -local utils = require 'common.utils' - -local base_visitor = ast { - on_block = function(self, node) - -- ret - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_localassign = function(self, node) - -- left, right - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_names = function(self, node) - -- list of leaves of Names - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_name = function(self, node) - -- name - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_nil = function(self, node) - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_true = function(self, node) - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_false = function(self, node) - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_bop = function(self, node) - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_unop = function(self, node) - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_number = function(self, node) - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_string = function(self, node) - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_break = function(self, node) - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_leaf = function(self, node) - -- tokens - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_explist = function(self, node) - -- list of node 'exp's - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_table = function(self, node) - -- list of table node 'elements' - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_call = function(self, node) - -- target, args - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_args = function(self, node) - -- list of node 'exp's - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_unop = function(self, node) - -- operator, operand - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_element = function(self, node) - -- index, value - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_function = function(self, node) - -- parameters, body - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_parameters = function(self, node) - -- list of names, vararg - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_return = function(self, node) - -- explist - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_selfcall = function(self, node) - -- target, args - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_index = function(self, node) - -- left, right - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_if = function(self, node) - -- cond, block, elseifs, else - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_foreach = function(self, node) - -- names, iterator, block - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_binop = function(self, node) - -- left, right - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_assignments = function(self, node) - -- left, right - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_lvalue = function(self, node) - -- list of lvals (primaryexp suffix*) - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_else = function(self, node) - -- block - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_localfunctiondef = function(self, node) - -- name, function - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_functiondef = function(self, node) - -- funcname, function - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_funcnames = function(self, node) - -- list of funcname*, colon - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_empty = function(self, node) - -- nothing - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_elseif = function(self, node) - -- block cond - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_while = function(self, node) - -- while cond block - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_repeat = function(self, node) - -- repeat cond block - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_fori = function(self, node) - -- node('fori'):set('id', from(_1)):set('start', _3):set('finish', _5):set('step', _6[1]):set('block', _8) - print("on_" .. node.kind .. " is not implemented!") - return node, false - end, - on_localfunctiondef = function(self, node) - print("on_" .. node.kind .. " is not implemented!") - return node, false - end -} -base_visitor.super = base_visitor -function base_visitor:children() - return utils.loop(self) -end - -local mt = utils.copy(getmetatable(base_visitor)) -function mt.__call(self, visitor) - return setmetatable(visitor, {__index = base_visitor}) -end - +local ast = require 'luainlua.lua.ast' +local utils = require 'luainlua.common.utils' + +local base_visitor = ast { + on_block = function(self, node) + -- ret + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_localassign = function(self, node) + -- left, right + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_names = function(self, node) + -- list of leaves of Names + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_name = function(self, node) + -- name + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_nil = function(self, node) + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_true = function(self, node) + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_false = function(self, node) + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_bop = function(self, node) + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_unop = function(self, node) + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_number = function(self, node) + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_string = function(self, node) + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_break = function(self, node) + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_leaf = function(self, node) + -- tokens + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_explist = function(self, node) + -- list of node 'exp's + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_table = function(self, node) + -- list of table node 'elements' + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_call = function(self, node) + -- target, args + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_args = function(self, node) + -- list of node 'exp's + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_unop = function(self, node) + -- operator, operand + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_element = function(self, node) + -- index, value + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_function = function(self, node) + -- parameters, body + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_parameters = function(self, node) + -- list of names, vararg + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_return = function(self, node) + -- explist + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_selfcall = function(self, node) + -- target, args + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_index = function(self, node) + -- left, right + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_if = function(self, node) + -- cond, block, elseifs, else + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_foreach = function(self, node) + -- names, iterator, block + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_binop = function(self, node) + -- left, right + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_assignments = function(self, node) + -- left, right + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_lvalue = function(self, node) + -- list of lvals (primaryexp suffix*) + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_else = function(self, node) + -- block + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_localfunctiondef = function(self, node) + -- name, function + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_functiondef = function(self, node) + -- funcname, function + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_funcnames = function(self, node) + -- list of funcname*, colon + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_empty = function(self, node) + -- nothing + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_elseif = function(self, node) + -- block cond + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_while = function(self, node) + -- while cond block + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_repeat = function(self, node) + -- repeat cond block + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_fori = function(self, node) + -- node('fori'):set('id', from(_1)):set('start', _3):set('finish', _5):set('step', _6[1]):set('block', _8) + print("on_" .. node.kind .. " is not implemented!") + return node, false + end, + on_localfunctiondef = function(self, node) + print("on_" .. node.kind .. " is not implemented!") + return node, false + end +} +base_visitor.super = base_visitor +function base_visitor:children() + return utils.loop(self) +end + +local mt = utils.copy(getmetatable(base_visitor)) +function mt.__call(self, visitor) + return setmetatable(visitor, {__index = base_visitor}) +end + return setmetatable(base_visitor, mt) \ No newline at end of file diff --git a/lua/compiler.lua b/luainlua/lua/compiler.lua similarity index 96% rename from lua/compiler.lua rename to luainlua/lua/compiler.lua index 835afd5..385ea0f 100644 --- a/lua/compiler.lua +++ b/luainlua/lua/compiler.lua @@ -1,1142 +1,1142 @@ --- interprets a subset of Lua directly - -local visitor = require 'lua.base_visitor' -local parser = require 'lua.parser' -local ir = require 'bytecode.ir' -local utils = require 'common.utils' -local opcode = require "bytecode.opcode" - -local STATEMENT = {} -local MAX_REGISTERS = 255 --- TODO: fix me, TOP will only happen immediately before a call, table, or return, so they will never effect the --- computation of the actual register stack -local TOP = -MAX_REGISTERS - -local function peek(stack) return stack[#stack] end -local function pop(stack) return table.remove(stack) end -local function push(item, stack) table.insert(stack, item) end - -local closures = {} - -local function new_closure(nparams, is_vararg) - local closure = { - first_line = 1, - last_line = 1, - nparams = nparams, - is_vararg = is_vararg, - stack_size = 100, - code = {}, - constants = {}, - upvalues = {}, - debug = {lineinfo = {}, upvalues = {}}, - ir_context = ir(), - } - - return closure -end - -local function enter(nparams, is_vararg) - local scope = { - closure = new_closure(nparams or 0, is_vararg or false), - local_id = 0, - constant_id = 0, - locals = {}, - constants = {}, - upvalues = {}, - code = {}, - prototypes = {}, - - reserved_registers = {}, - } - - scope.id = peek(closures) and #peek(closures).prototypes or 0 - - function scope:level() - for i, scope in ipairs(closures) do - if scope == self then return i end - end - error "Illegal state" - end - - function scope:enter() - local id = self:next() - push({start = id}, self.locals) - self:free{id, 1} - return peek(self.locals) - end - - function scope:exit() - local block = pop(self.locals) - self:free_after(block.start) - if block.loop then - for hole in utils.loop(block.loop) do - self:patch_jmp(hole, self:pc()) - end - end - return block - end - - function scope:block() - return peek(self.locals) - end - - function scope:reserve(start, n) - for i = start, start + n - 1 do - assert(not self.reserved_registers[i], "Register " .. i .. " is already reserved") - self.reserved_registers[i] = true - end - return start - end - - function scope:free(alphas) - local start, n = unpack(alphas) - assert(self.reserved_registers[start], "Register " .. start .. " is already free") - for i = start, start + n - 1 do - self.reserved_registers[i] = nil - end - -- verify that there's no more reserved registers - for key in pairs(self.reserved_registers) do - assert(key < start) - end - end - - function scope:free_after(start) - local free_bank = {} - for key in pairs(self.reserved_registers) do - if key >= start then - free_bank[key] = true - end - end - - for key in pairs(free_bank) do - self.reserved_registers[key] = nil - end - end - - function scope:next(n) - if not n then n = 1 end - local max = -1 - for key in pairs(self.reserved_registers) do - if key > max then max = key end - end - return self:reserve(max + 1, n) - end - - function scope:own_or_propagate(alphas, n) - if not alphas and n then error "Must propagate alphas" end - n = n or 1 - if not alphas then - return self:next(), true - end - local alpha, num = unpack(alphas) - if num == n then - return alpha, false - elseif num < 0 then - return alpha, false - else - assert(num >= n) - return alpha, false, {alpha + n, num - n} - end - end - - function scope:bind(name, id) - assert(self.reserved_registers[id], "Cannot bind a new local to a non-reserved register") - table.insert(self:block(), {name, id}) - return id - end - - function scope:get_parent() - local last - for scope in utils.loop(closures) do - if scope == self then - return last - end - last = scope - end - error "Illegal state" - end - - function scope:searchup(id, level) - for i, upvalue in ipairs(self.upvalues) do - if id == upvalue[1] and level == upvalue[2] then - return i - end - end - end - - function scope:markupval(name, id, other) - if not id then return end - if not self:searchup(id, other) then - table.insert(self.upvalues, {id, other, name}) - end - - return id, other - end - - function scope:look_for(name) - for i = #self.locals, 1, -1 do - local block = self.locals[i] - for j = #block, 1, -1 do - local var, id = unpack(block[j]) - if var == name then - return id, self:level() - end - end - end - -- go to the previous closure to look for an upvalue - local parent = self:get_parent() - if not parent then - return - end - return self:markupval(name, parent:look_for(name)) - end - - function scope:const(value) - local constants = self.constants - if constants[value] then - return constants[value] - end - local id = self.constant_id - self.constant_id = id + 1 - constants[value] = id - return id - end - - function scope:null(rest, node) - if rest[2] < 0 then return end - assert(rest[2] > 0) - self:emit(node, "LOADNIL", rest[1], rest[2] - 1) - end - - function scope:emit(tree, ...) --- local levels = self:level() - 2 --- if levels < 0 then --- print(#self.code + 1, ...) --- else --- print((" "):rep(levels), #self.code + 1, ...) --- end - local instruction = {location = tree.location, ... } - instruction = utils.kfilter( - function(k, v) - if type(k) ~= 'number' then return false end - return type(v) == 'number' or #v ~= 0 and v:sub(1,1) ~= ';' - end, - instruction) - assert(opcode.make(ir(), #self.code + 1, unpack(instruction))) - table.insert(self.code, {location = tree.location, ...}) - end - - function scope:pc() - return #self.code - end - - function scope:patch_jmp(start, finish) - local instr = self.code[start] - assert(instr[1] == 'JMP' or instr[1] == 'FORPREP') - assert(instr[3] == '#') - instr[3] = finish - start - instr[5] = '; to ' .. (finish + 1) - end - - function scope:finalize() - local latest = peek(closures) - if latest then - table.insert(latest.prototypes, self) - end - - -- Let's compile this - --[[ - local func = { - first_line = first_line, - last_line = last_line, - nparams = nparams, - is_vararg = is_vararg, - stack_size = stack_size, - code = code, - - constants = constants, - - upvalues = upvalues, - - debug = debug, - ir_context = ir_context, - } - ]] - local prototype = self.closure - table.insert(prototype.upvalues, {instack = 0, index = 0}) -- global is always 0 - table.insert(prototype.debug.upvalues, "_ENV") - for upvalue in utils.loop(self.upvalues) do - local register, uplevel, name = unpack(upvalue) - if uplevel == #closures then - -- emit a move - table.insert(prototype.upvalues, {instack = 1, index = register}) - table.insert(prototype.debug.upvalues, name) - else - -- emit an upvalue - local up = latest:searchup(register, uplevel) - table.insert(prototype.upvalues, {instack = 0, index = up}) - table.insert(prototype.debug.upvalues, name) - end - end - - for constant, i in pairs(self.constants) do - prototype.constants[i + 1] = constant - end - -- make sure that everything is there - for i = 1, self.constant_id do - assert(prototype.constants[i], i .. ", " .. self.constant_id) - end - prototype.constants.functions = {} - for child_prototype in utils.loop(self.prototypes) do - table.insert(prototype.constants.functions, child_prototype.closure) - end - - local ctx = prototype.ir_context - for pc, instruction in ipairs(self.code) do - -- let's translate this - instruction = utils.kfilter( - function(k, v) - if type(k) ~= 'number' then return true end - return type(v) == 'number' or #v ~= 0 and v:sub(1,1) ~= ';' - end, - instruction) - table.insert(prototype.code, opcode.make(ctx, pc, unpack(instruction))) - if not instruction.location then - print("Cannot generate lineinfo", pc, prototype.code[#prototype.code]) - end - - table.insert(prototype.debug.lineinfo, instruction.location and instruction.location[1][2] or 0) - end - - return self, #closures + 1 - end - - push(scope, closures) - scope:enter() - return scope -end - -local function close() - peek(closures):exit() - return pop(closures):finalize() -end - -local function latest() - return peek(closures) -end - -local function L(number) - if number >= 0 then - return number - end -end - -local function combine(start, rest) - if not rest then return {start, 1} end - assert(rest[1] == start + 1) - return {start, rest[2] + 1} -end - -local function from(alpha) - if alpha < 0 then - return 0 - else - return alpha - end -end - -local function rk(k) - return k + 256 -end - -local BETA = math.max - --- emit ASTs of bytecodes --- closure is the current state, alpha is the register to assign into, beta is the "frontier", and gamma is the number --- of values to return --- @alphas - optional: either a location to move into or own the object in this field --- @gamma - number of expressions to return, 0 if not applicable --- @return alphas - the locations of the current expression if applicable -local interpreter = visitor { - on_any_constant = function(self, value, alphas, tree) - local closure = latest() - local alpha, mine, rest = closure:own_or_propagate(alphas) - local k = closure:const(value) - closure:emit(tree, "LOADK", alpha, k, '', "; " .. tostring(value)) - - if rest then closure:null(rest) end - if mine then closure:free(combine(alpha, rest)) end - return {alpha, 1} - end, - - on_number = function(self, node, alphas) - return self:on_any_constant(tonumber(node.value), alphas, node) - end, - - on_string = function(self, node, alphas) - return self:on_any_constant(tostring(node.value), alphas, node) - end, - - on_true = function(self, node, alphas) - local closure = latest() - local alpha, mine, rest = closure:own_or_propagate(alphas) - closure:emit(node, "LOADBOOL", alpha, 1, 0) - if rest then closure:null(rest, node) end - if mine then closure:free(combine(alpha, rest)) end - return {alpha, 1} - end, - - on_false = function(self, node, alphas) - local closure = latest() - local alpha, mine, rest = closure:own_or_propagate(alphas) - closure:emit(node, "LOADBOOL", alpha, 0, 0) - if rest then closure:null(rest, node) end - if mine then closure:free(combine(alpha, rest)) end - return {alpha, 1} - end, - - on_name = function(self, node, alphas) - local closure = latest() - local alpha, mine, rest = closure:own_or_propagate(alphas) - local r, scope = closure:look_for(node.value) - if scope == closure:level() then - closure:emit(node, "MOVE", alpha, r) - elseif scope then - local up = closure:searchup(r, scope) - assert(up, "Upvalue must have been populated") - closure:emit(node, "GETUPVAL", alpha, up) - else - -- global - local k = closure:const(node.value) - closure:emit(node, "GETTABUP", alpha, 0, rk(k), "; " .. node.value) - end - - if rest then closure:null(rest, node) end - if mine then closure:free(combine(alpha, rest)) end - return {alpha, 1} - end, - - on_nil = function(self, node, alphas) - local closure = latest() - closure:null(alphas, node) - return alphas - end, - - on_unop = function(self, node, alphas) - local closure = latest() - local alpha, mine, rest = closure:own_or_propagate(alphas) - local operator = node.operator.token[1] - local operand = self:accept(node.operand, {alpha, 1}) - local select = {MIN = "UNM", NOT = "NOT", HASH = "LEN"} - closure:emit(node, select[operator], alpha, operand[1]) - if rest then closure:null(rest, node) end - if mine then closure:free(combine(alpha, rest)) end - return {alpha, 1} - end, - - on_binop = function(self, node, alphas) - local closure = latest() - local alpha, mine, rest = closure:own_or_propagate(alphas) - local operator = node.operator.token[1] - local select = { - PLUS = "ADD", - MIN = "SUB", - MUL = "MUL", - DIV = "DIV", - POW = "POW", - MOD = "MOD", - CONCAT = "CONCAT", - } - local logical = { - LT = {"LT", 1}, - LE = {"LE", 1}, - GT = {"LE", 0}, - GE = {"LT", 0}, - EQEQ = {"EQ", 1}, - NOTEQ = {"EQ", 0}, - } - if select[operator] then - local id_left = closure:next() - local left = self:accept(node.left, {id_left, 1}) - local id_right = closure:next() - local right = self:accept(node.right, {id_right, 1}) - closure:emit(node, select[operator], alpha, id_left, id_right) - closure:free{id_left, 2} - elseif logical[operator] then - --[[ - 1 EQ(A=v(1), B=r(a:1), C=r(b:2)) - 2 JMP(A=v(0), sBx=v(1)) - 3 LOADBOOL(A=r(f:0), B=v(0), C=v(1)) - 4 LOADBOOL(A=r(f:0), B=v(1), C=v(0)) - ]] - local logical_operator = logical[operator] - - local id_left = closure:next() - local left = self:accept(node.left, {id_left, 1}) - local id_right = closure:next() - local right = self:accept(node.right, {id_right, 1}) - closure:emit(node, logical_operator[1], logical_operator[2], left[1], right[1], '; ' .. operator) - closure:emit(node, "JMP", 0, 1) - closure:emit(node, "LOADBOOL", alpha, 0, 1) - closure:emit(node, "LOADBOOL", alpha, 1, 0) - closure:free{id_left, 2} - else - --[[ - 1 TESTSET(A=r(f:0), B=r(a:1), C=v(0)) C = 0 for and, 1 for or - 2 JMP(A=v(0), sBx=v(1)) - 3 MOVE(A=r(f:0), B=r(b:2)) - ]] - local c = operator == 'AND' and 0 or 1 - self:accept(node.left, {alpha, 1}) - closure:emit(node, "TEST", alpha, c, '; ' .. operator) - closure:emit(node, "JMP", 0, '#', '', '; TODO: patch in later') - local hole = closure:pc() - self:accept(node.right, {alpha, 1}) - closure:patch_jmp(hole, closure:pc()) - end - if rest then closure:null(rest, node) end - if mine then closure:free(combine(alpha, rest)) end - return {alpha, 1} - end, - - on_table = function(self, node, alphas) - local closure = latest() - local alpha, mine, rest = closure:own_or_propagate(alphas) - closure:emit(node, "NEWTABLE", alpha, 0, 0) - -- get the elements - local last_index - for child in node:children() do if not child.index then last_index = child end end - local last = alpha - for child in node:children() do - if not child.index then - local id = closure:next() - assert(id == last + 1) - last = id - if child ~= last_index then - self:accept(child.value, {id, 1}) - else - local final = self:accept(child.value, {id, TOP}) - closure:emit(child, "SETLIST", alpha, from(last - alpha + final[2] - 1), 1) - closure:free({alpha + 1, last - alpha}) - break - end - end - end - - for child in node:children() do - if child.index then - local index_id = closure:next() - local index = self:accept(child.index, {index_id, 1}) - local value_id = closure:next() - local value = self:accept(child.value, {value_id, 1}) - closure:emit(child, "SETTABLE", alpha, index[1], value[1]) - assert(value_id == index_id + 1) - closure:free({index_id, 2}) - end - end - - if rest then closure:null(rest, node) end - if mine then closure:free(combine(alpha, rest)) end - return {alpha, 1} - end, - - call_imp = function(self, node, call, first, num_in, num_out) - local closure = latest() - if #node.args ~= 0 then - local previous_id = first - for arg in node.args:children() do - local id = closure:next() - assert(id == previous_id + 1, previous_id .. ' versus ' .. id .. ' at ' .. node.location[1][2]) - previous_id = id - if arg ~= node.args[#node.args] then - self:accept(arg, {id, 1}) - else - local _, pack_length = unpack(self:accept(arg, {id, TOP})) - closure:emit(node, "CALL", call, from(num_in + #node.args + pack_length), from(num_out + 1)) - -- time to destroy the previous ids - assert(id == first + #node.args) - closure:free {first + 1, #node.args} - break - end - end - else - closure:emit(node, "CALL", call, num_in + 1, from(num_out + 1)) - end - end, - - on_call = function(self, node, alphas) - local closure = latest() - local alpha, mine, rest = closure:own_or_propagate(alphas) - - -- first, let's free up rest so the subexpressions can use them - if rest then closure:free(rest) end - local num_out = alphas and alphas[2] or 0 - -- node = call -> target : expr, args : args -> [expr] - self:accept(node.target, {alpha, 1}) - self:call_imp(node, alpha, alpha, 0, num_out) - -- next, reserve the output registers again - if rest then assert(closure:next(rest[2]) == rest[1]) end - - if mine then closure:free(combine(alpha, rest)) end - return {alpha, num_out} - end, - - on_selfcall = function(self, node, alphas) - local closure = latest() - local alpha, mine, rest = closure:own_or_propagate(alphas) - - -- first, let's free up rest so the subexpressions can use them - if rest then closure:free(rest) end - local num_out = alphas and alphas[2] or 0 - -- node = selfcall = taget : (index = left : expr, right : name), args - self:accept(node.target.left, {alpha, 1}) - local base = closure:next() - assert(base == alpha + 1) - assert(node.target.right.kind == 'string') - local field = node.target.right.value - closure:emit(node, "SELF", alpha, alpha, rk(closure:const(field))) - self:call_imp(node, alpha, alpha + 1, 1, num_out) - closure:free{base, 1} - -- next, reserve the output registers again - if rest then assert(closure:next(rest[2]) == rest[1]) end - - if mine then closure:free(combine(alpha, rest)) end - return {alpha, num_out} - end, - - on_vararg = function(self, node, alphas) - local closure = latest() - local alpha, mine, rest = closure:own_or_propagate(alphas) - local num_out = alphas and alphas[2] or TOP - assert(closure.closure.is_vararg) - closure:emit(node, "VARARG", alpha, from(num_out + 1)) - - if mine then closure:free(combine(alpha, rest)) end - return {alpha, num_out} - end, - - on_index = function(self, node, alphas) - local closure = latest() - local alpha, mine, rest = closure:own_or_propagate(alphas) - - self:accept(node.left, {alpha, 1}) - local right = closure:next() - closure:free(self:accept(node.right, {right, 1})) - closure:emit(node, "GETTABLE", alpha, alpha, right) - - if rest then closure:null(rest, node) end - if mine then closure:free(combine(alpha, rest)) end - return {alpha, 1} - end, - - on_function = function(self, node, alphas) - local closure = latest() - local alpha, mine, rest = closure:own_or_propagate(alphas) - - local level = closure:level() - - -- node : functiondef = parameters : (parameters = [names], vararg), body : block - enter(#node.parameters, not not node.parameters.vararg) - do - local func = latest() - local parameters = node.parameters - for name in parameters:children() do - func:bind(name.value, func:next()) - end - self:accept(node.body) - func:emit(node.body, "RETURN", 0, 1) - end - local prototype, protolevel = close() - closure:emit(node.body, "CLOSURE", alpha, prototype.id) --- -- mark upvalues --- for upvalue in utils.loop(prototype.upvalues) do --- local register, uplevel = unpack(upvalue) --- if uplevel == level then --- -- emit a move --- closure:emit("MOVE", 0, register, '', "; upvalue") --- else --- -- emit an upvalue --- closure:emit("GETUPVAL", 0, closure:searchup(register, uplevel), '', "; upvalue") --- end --- end - - if rest then closure:null(rest, node) end - if mine then closure:free(combine(alpha, rest)) end - return {alpha, 1} - end, - - on_explist = function(self, node, alphas) - error "Illegal state: explist" - end, - - on_localassign = function(self, node) - local closure = latest() - local start_pc = closure:pc() - - local max = BETA(#node.left, node.right and #node.right or 0) - if not node.right or #node.right == 0 then - assert(#node.left ~= 0) - -- this is only possible if we have `local x, y, z` - local id = closure:next(max) - local rest = {id, max} - closure:null(rest, node) - for j = 1, max do - closure:bind(node.left[j].value, id + j - 1) - end - return STATEMENT - end - - for i = 1, max do - local name = node.left[i] - local exp = node.right[i] - if name and exp and exp ~= node.right[#node.right] then - local id = closure:next() - self:accept(exp, {id, 1}) - closure:bind(name.value, id) - elseif name and exp and exp == node.right[#node.right] then - local len = max - i + 1 - local id = closure:next(len) - local rest = {id, len} - self:accept(exp, rest) - for j = 0, len - 1 do - closure:bind(node.left[i + j].value, id + j) - end - break - else - self:accept(assert(not name and exp)) - end - end - return self:statement(start_pc) - end, - - assign = function(self, left, register) - local closure = latest() - if left.kind == 'name' then - local r, scope = closure:look_for(left.value) - if scope == closure:level() then - closure:emit(left, "MOVE", r, register) - elseif scope then - local up = closure:searchup(r, scope) --- print("Assignup", up) - assert(up, "Upvalue must have been populated") - closure:emit(left, "SETUPVAL", register, up) - else - -- global - closure:emit(left, "SETTABUP", 0, rk(closure:const(left.value)), register, "; " .. left.value) - end - else - assert(left.kind == 'index') - local alpha = closure:next() - self:accept(left.left, {alpha, 1}) - local right = closure:next() - assert(right == alpha + 1) - self:accept(left.right, {right, 1}) - closure:free({alpha, 2}) - closure:emit(left, "SETTABLE", alpha, right, register) - end - end, - - on_assignments = function(self, node) - local closure = latest() - local start_pc = closure:pc() - local max = BETA(#node.left, #node.right) - for i = 1, max do - local left = node.left[i] - local exp = node.right[i] - if left and exp and exp ~= node.right[#node.right] then - local id = closure:next() - self:accept(exp, {id, 1}) - self:assign(left, id) - closure:free{id, 1} - elseif left and exp and exp == node.right[#node.right] then - local len = max - i + 1 - local id = closure:next(len) - local rest = {id, len} - self:accept(exp, rest) - for j = 0, len - 1 do - self:assign(node.left[i + j], id + j) - end - closure:free(rest) - break - else - self:accept(exp) - end - end - return self:statement(start_pc) - end, - - on_block = function(self, node) - local closure = latest() - local start_pc = closure:pc() - closure:enter() - for child in node:children() do - self:accept(child) - end - closure:exit() - return self:statement(start_pc) - end, - - on_if = function(self, node) - local closure = latest() - local start_pc = closure:pc() - local reg = closure:next() - local finishers = {} - self:accept(node.cond, {reg, 1}) - closure:free{reg, 1} - closure:emit(node.cond, "TEST", reg, 0) - closure:emit(node.cond, "JMP", 0, "#", '', '; TODO: patch in') - local hole = closure:pc() - -- the block - self:accept(node.block) - closure:emit(node, "JMP", 0, "#", '', '; TODO: patch in end') - table.insert(finishers, closure:pc()) - -- see if there's an elseif - if node.elseifs then - for conditional in utils.loop(node.elseifs) do - closure:patch_jmp(hole, closure:pc()) -- goto closure:pc() + 1 - local reg = closure:next() - self:accept(conditional.cond, {reg, 1}) - closure:free{reg, 1} - closure:emit(conditional.cond, "TEST", reg, 0) - closure:emit(conditional.cond, "JMP", 0, "#", '', '; TODO: patch in') - hole = closure:pc() - self:accept(conditional.block) - closure:emit(conditional, "JMP", 0, "#", '', '; TODO: patch in end') - table.insert(finishers, closure:pc()) - end - end - closure:patch_jmp(hole, closure:pc()) - if node.else_ then - self:accept(node.else_.block) - end - for finisher in utils.loop(finishers) do - closure:patch_jmp(finisher, closure:pc()) - end - return self:statement(start_pc) - end, - - on_while = function(self, node) - local closure = latest() - local start_pc = closure:pc() - local block = closure:enter() - block.loop = {} - do - local reg = closure:next() - self:accept(node.cond, {reg, 1}) - closure:free{reg, 1} - closure:emit(node.cond, "TEST", reg, 0) - closure:emit(node.cond, "JMP", 0, "#", '', '; TODO: patch in end') - local hole = closure:pc() - self:accept(node.block) - closure:emit(node, "JMP", 0, start_pc - closure:pc() - 1, '', '; to ' .. (start_pc + 1)) - closure:patch_jmp(hole, closure:pc()) - end - closure:exit() - return self:statement(start_pc) - end, - - on_repeat = function(self, node) - local closure = latest() - local start_pc = closure:pc() - local block = closure:enter() - block.loop = {} - do - self:accept(node.block) - local reg = closure:next() - self:accept(node.cond, {reg, 1}) - closure:free{reg, 1} - closure:emit(node.cond, "TEST", reg, 0) - closure:emit(node.cond, "JMP", 0, start_pc - closure:pc() - 1, '', '; to ' .. (start_pc + 1)) - end - closure:exit() - return self:statement(start_pc) - end, - - on_fori = function(self, node) - -- node('fori'):set('id', from(_1)):set('start', _3):set('finish', _5):set('step', _6[1]):set('block', _8) - --1 LOADK(A=r(1), Bx=start) - --2 LOADK(A=r(2), Bx=finish) - --3 LOADK(A=r(3), Bx=step) - --4 FORPREP(A=r(1), sBx=goto FORLOOP (3)) - --5 BLOCK - --6 BLOCK - --7 BLOCK - --8 FORLOOP(A=r(1), sBx=goto FORPREP (-4)) - --9 RETURN(A=r(f), B=v(1)) - local closure = latest() - local start_pc = closure:pc() - local block = closure:enter() - block.loop = {} - do -- the for loop outer block - local base = closure:next() - -- ensure that the next 3 instructions are stored to consecutive ids - self:accept(node.start, {base, 1}) - assert(closure:next() == base + 1) - self:accept(node.finish, {base + 1, 1}) - assert(closure:next() == base + 2) - if node.step then - self:accept(node.step, {base + 2, 1}) - else - closure:emit(node, "LOADK", base + 2, closure:const(1)) - end - local var = closure:next() - assert(var == base + 3) - closure:bind(node.id.value, var) - closure:emit(node, "FORPREP", base, '#', '', '; TODO: patch with end') - local prep_pc = closure:pc() - self:accept(node.block) - closure:patch_jmp(prep_pc, closure:pc()) - closure:emit(node, "FORLOOP", base, prep_pc - closure:pc() - 1, '', '; to ' .. (prep_pc + 1)) - closure:free{base, 4} - end - closure:exit() - return self:statement(start_pc) - end, - - explist = function(self, nodes, alphas) - local closure = latest() - local start_pc = closure:pc() - local base, num = unpack(assert(alphas)) - local max = BETA(alphas[2], #nodes) - if #nodes == 0 then - assert(num ~= 0) - -- this is only possible if we have `local x, y, z` - local rest = {base, max} - closure:null(rest, node) - end - - for i = 1, max do - local exp = nodes[i] - local id = base + i - 1 - if i <= num and exp and exp ~= nodes[#nodes] then - self:accept(exp, {id, 1}) - elseif i <= num and exp and exp == nodes[#nodes] then - local len = max - i + 1 - local rest = {id, len} - self:accept(exp, rest) - break - else - self:accept(assert(i > num and exp)) - end - end - return self:statement(start_pc) - end, - - on_foreach = function(self, node) - --[[ - --node('foreach'):set('names', _1):set('iterator', _3):set('block', _5) - 1 MOVE(A=r(1), B=r(f:0)) - 2 CALL(A=r(1), B=v(1), C=v(4)) - 3 JMP(A=v(0), sBx=v(7)) - 4 GETTABUP(A=r(9), B=v(0), C=print) - 5 MOVE(A=r(10), B=r(i:4)) - 6 MOVE(A=r(11), B=r(j:5)) - 7 MOVE(A=r(12), B=r(k:6)) - 8 MOVE(A=r(13), B=r(e:7)) - 9 MOVE(A=r(14), B=r(g:8)) - 10 CALL(A=r(9), B=v(6), C=v(1)) - 11 TFORCALL(A=r(1), C=v(5)) - 12 TFORLOOP(A=r(3), sBx=v(-9)) - 13 RETURN(A=r(f:0), B=v(1)) - --]] - local closure = latest() - local start_pc = closure:pc() - local block = closure:enter() - block.loop = {} - do - local names = node.names - -- reserve the first n registers for the loop guards, and an additional n registers for the variables - local base = closure:next(3) - self:explist(node.iterator, {base, 3}) - closure:emit(node, "JMP", 0, '#', '', '; TODO: jump to forcall') - local hole = closure:pc() - local vars = closure:next(#names) - for i = 1, #names do closure:bind(names[i].value, vars + i - 1) end - self:accept(node.block) - closure:patch_jmp(hole, closure:pc()) - closure:emit(node, "TFORCALL", base, #names, '', '; reserve ' .. (base + 3) .. ' to ' .. (base + 2 + #names)) - closure:emit(node, "TFORLOOP", base + 2, hole - closure:pc() - 1, '', 'to '.. (hole + 1)) - closure:free{vars, #names} - closure:free{base, 3} - end - closure:exit() - return self:statement(start_pc) - end, - - on_break = function(self, node) - local closure = latest() - local start_pc = closure:pc() - -- find the closest loop block - local loop; - for block in utils.loop(closure.locals) do - if block.loop then - loop = block - break - end - end - assert(loop, "Cannot break outside of a loop") - closure:emit(node, "JMP", 0, "#", '', '; TODO: patch in after loop is closed') - table.insert(loop.loop, closure:pc()) - - return self:statement(start_pc) - end, - - on_localfunctiondef = function(self, node) - local closure = latest() - local start_pc = closure:pc() - -- node('localfunctiondef') - -- -- :set('name', from(_2)) - -- -- :set('function', node('function'):set('parameters', _3[1]):set('body', _3[2])) - local reg = closure:next() - self:accept(node['function'], {reg, 1}) - closure:bind(node.name.value, reg) - return self:statement(start_pc) - end, - - assign_to_funcname = function(self, names, reg) - local closure = latest() - if #names == 1 then - local left = names[1] - local r, scope = closure:look_for(left.value) - if scope == closure:level() then - closure:emit(left, "MOVE", r, reg) - elseif scope then - local up = closure:searchup(r, scope) - assert(up, "Upvalue must have been populated") - closure:emit(left, "SETUPVAL", reg, up) - else - -- global - closure:emit(left, "SETTABUP", 0, rk(closure:const(left.value)), reg, "; " .. left.value) - end - else - local base = closure:next() - for name in utils.loop(names) do - if name == names[1] then - self:accept(name, {base, 1}) - elseif name == names[#names] then - local k = closure:const(name.value) - closure:emit(name, "SETTABLE", base, rk(closure:const(name.value)), reg, '; ' .. name.value) - closure:free{base, 1} - break - else - local k = closure:const(name.value) - closure:emit(name, "GETTABLE", base, base, rk(closure:const(name.value)), '; ' .. name.value) - end - end - end - end, - - on_functiondef = function(self, node) - local closure = latest() - local start_pc = closure:pc() - -- node('functiondef') - -- -- :set('funcname', _2) - -- -- :set('function', node('function'):set('parameters', _3[1]):set('body', _3[2])) - local reg = closure:next() - self:accept(node['function'], {reg, 1}) - - self:assign_to_funcname(node.funcname, reg) - - closure:free{reg, 1} - return self:statement(start_pc) - end, - - on_return = function(self, node) - local closure = latest() - local start_pc = closure:pc() - - if node.explist then - local base = closure:next() - local id = base - for arg in node.explist:children() do - if arg ~= node.explist[#node.explist] then - self:accept(arg, {id, 1}) - id = closure:next() - else - local _, pack_length = unpack(self:accept(arg, {id, TOP})) - closure:emit(node, "RETURN", base, from(#node.explist + pack_length)) - -- time to destroy the previous ids - assert(id == base + #node.explist - 1) - closure:free {base, #node.explist} - break - end - end - else - closure:emit(node, "RETURN", 0, 1) - end - - return self:statement(start_pc) - end, - - on_callstmt = function(self, node) - local closure = latest() - local start_pc = closure:pc() - self:accept(node[1]) - return self:statement(start_pc) - end, - - on_empty = function(self, node) - local closure = latest() - local start_pc = closure:pc() - -- NOP - return self:statement(start_pc) - end, - - on_label = function() - error "Labels and gotos are not implemented" - end, - - on_goto = function() - error "Labels and gotos are not implemented" - end, - - statement = function(self, start_pc) - return {first = start_pc, last = latest():pc()} - end, - - expression = function(self, start_pc, bundle) - return {first = start_pc, last = latest():pc(), unpack(bundle)} - end, -} - ---local tree = parser([[ --- local a = 1; --- local b, c = "asdfasdf"; --- local c = 1, 2; --- local e = (not c) + 3; --- local f = {1, e, c, zzz = 5, [3] = 2} --- local x, y, z = a("zzz", a(), "xxx", a(3,c,5)) --- local b = z:lol(a) --- local c = {...} --- local z, x, y = ... --- local g = f[3].c --- local h = g.foo --- local foo = function() local zzz = a, function() local yyy, xxx = zzz, b, aaa end end --- foo:bar(1, 2, 3) --- a, b, c, gbl = 3 --- gbl = foo() --- gbl.x = 3 --- do --- local abcdefg = hi --- end --- a = abcdefg --- a = abcdefg --- a = a + a ---]]) - ---local tree = parser [[ ----- if foo() then bar() elseif dog() then else foobar() end ----- while bar(f()) do print("hello") end ----- repeat foo() until bar() ----- for i = 1, 3 do print("hello") end ----- local function f() end ----- for i, j, k, e, g in f() do break print(i, j, k, e, g) break end --- local lol; --- function lol.y:z() print(self) end ---]] - -return function(tree) - closures = {} - enter(0, true) - interpreter:accept(tree) - latest():emit(tree, "RETURN", 0, 1) - local closure = close() - return closure.closure, closure +-- interprets a subset of Lua directly + +local visitor = require 'luainlua.lua.base_visitor' +local parser = require 'luainlua.lua.parser' +local ir = require 'luainlua.bytecode.ir' +local utils = require 'luainlua.common.utils' +local opcode = require "luainlua.bytecode.opcode" + +local STATEMENT = {} +local MAX_REGISTERS = 255 +-- TODO: fix me, TOP will only happen immediately before a call, table, or return, so they will never effect the +-- computation of the actual register stack +local TOP = -MAX_REGISTERS + +local function peek(stack) return stack[#stack] end +local function pop(stack) return table.remove(stack) end +local function push(item, stack) table.insert(stack, item) end + +local closures = {} + +local function new_closure(nparams, is_vararg) + local closure = { + first_line = 1, + last_line = 1, + nparams = nparams, + is_vararg = is_vararg, + stack_size = 100, + code = {}, + constants = {}, + upvalues = {}, + debug = {lineinfo = {}, upvalues = {}}, + ir_context = ir(), + } + + return closure +end + +local function enter(nparams, is_vararg) + local scope = { + closure = new_closure(nparams or 0, is_vararg or false), + local_id = 0, + constant_id = 0, + locals = {}, + constants = {}, + upvalues = {}, + code = {}, + prototypes = {}, + + reserved_registers = {}, + } + + scope.id = peek(closures) and #peek(closures).prototypes or 0 + + function scope:level() + for i, scope in ipairs(closures) do + if scope == self then return i end + end + error "Illegal state" + end + + function scope:enter() + local id = self:next() + push({start = id}, self.locals) + self:free{id, 1} + return peek(self.locals) + end + + function scope:exit() + local block = pop(self.locals) + self:free_after(block.start) + if block.loop then + for hole in utils.loop(block.loop) do + self:patch_jmp(hole, self:pc()) + end + end + return block + end + + function scope:block() + return peek(self.locals) + end + + function scope:reserve(start, n) + for i = start, start + n - 1 do + assert(not self.reserved_registers[i], "Register " .. i .. " is already reserved") + self.reserved_registers[i] = true + end + return start + end + + function scope:free(alphas) + local start, n = unpack(alphas) + assert(self.reserved_registers[start], "Register " .. start .. " is already free") + for i = start, start + n - 1 do + self.reserved_registers[i] = nil + end + -- verify that there's no more reserved registers + for key in pairs(self.reserved_registers) do + assert(key < start) + end + end + + function scope:free_after(start) + local free_bank = {} + for key in pairs(self.reserved_registers) do + if key >= start then + free_bank[key] = true + end + end + + for key in pairs(free_bank) do + self.reserved_registers[key] = nil + end + end + + function scope:next(n) + if not n then n = 1 end + local max = -1 + for key in pairs(self.reserved_registers) do + if key > max then max = key end + end + return self:reserve(max + 1, n) + end + + function scope:own_or_propagate(alphas, n) + if not alphas and n then error "Must propagate alphas" end + n = n or 1 + if not alphas then + return self:next(), true + end + local alpha, num = unpack(alphas) + if num == n then + return alpha, false + elseif num < 0 then + return alpha, false + else + assert(num >= n) + return alpha, false, {alpha + n, num - n} + end + end + + function scope:bind(name, id) + assert(self.reserved_registers[id], "Cannot bind a new local to a non-reserved register") + table.insert(self:block(), {name, id}) + return id + end + + function scope:get_parent() + local last + for scope in utils.loop(closures) do + if scope == self then + return last + end + last = scope + end + error "Illegal state" + end + + function scope:searchup(id, level) + for i, upvalue in ipairs(self.upvalues) do + if id == upvalue[1] and level == upvalue[2] then + return i + end + end + end + + function scope:markupval(name, id, other) + if not id then return end + if not self:searchup(id, other) then + table.insert(self.upvalues, {id, other, name}) + end + + return id, other + end + + function scope:look_for(name) + for i = #self.locals, 1, -1 do + local block = self.locals[i] + for j = #block, 1, -1 do + local var, id = unpack(block[j]) + if var == name then + return id, self:level() + end + end + end + -- go to the previous closure to look for an upvalue + local parent = self:get_parent() + if not parent then + return + end + return self:markupval(name, parent:look_for(name)) + end + + function scope:const(value) + local constants = self.constants + if constants[value] then + return constants[value] + end + local id = self.constant_id + self.constant_id = id + 1 + constants[value] = id + return id + end + + function scope:null(rest, node) + if rest[2] < 0 then return end + assert(rest[2] > 0) + self:emit(node, "LOADNIL", rest[1], rest[2] - 1) + end + + function scope:emit(tree, ...) +-- local levels = self:level() - 2 +-- if levels < 0 then +-- print(#self.code + 1, ...) +-- else +-- print((" "):rep(levels), #self.code + 1, ...) +-- end + local instruction = {location = tree.location, ... } + instruction = utils.kfilter( + function(k, v) + if type(k) ~= 'number' then return false end + return type(v) == 'number' or #v ~= 0 and v:sub(1,1) ~= ';' + end, + instruction) + assert(opcode.make(ir(), #self.code + 1, unpack(instruction))) + table.insert(self.code, {location = tree.location, ...}) + end + + function scope:pc() + return #self.code + end + + function scope:patch_jmp(start, finish) + local instr = self.code[start] + assert(instr[1] == 'JMP' or instr[1] == 'FORPREP') + assert(instr[3] == '#') + instr[3] = finish - start + instr[5] = '; to ' .. (finish + 1) + end + + function scope:finalize() + local latest = peek(closures) + if latest then + table.insert(latest.prototypes, self) + end + + -- Let's compile this + --[[ + local func = { + first_line = first_line, + last_line = last_line, + nparams = nparams, + is_vararg = is_vararg, + stack_size = stack_size, + code = code, - + constants = constants, - + upvalues = upvalues, - + debug = debug, + ir_context = ir_context, + } + ]] + local prototype = self.closure + table.insert(prototype.upvalues, {instack = 0, index = 0}) -- global is always 0 + table.insert(prototype.debug.upvalues, "_ENV") + for upvalue in utils.loop(self.upvalues) do + local register, uplevel, name = unpack(upvalue) + if uplevel == #closures then + -- emit a move + table.insert(prototype.upvalues, {instack = 1, index = register}) + table.insert(prototype.debug.upvalues, name) + else + -- emit an upvalue + local up = latest:searchup(register, uplevel) + table.insert(prototype.upvalues, {instack = 0, index = up}) + table.insert(prototype.debug.upvalues, name) + end + end + + for constant, i in pairs(self.constants) do + prototype.constants[i + 1] = constant + end + -- make sure that everything is there + for i = 1, self.constant_id do + assert(prototype.constants[i], i .. ", " .. self.constant_id) + end + prototype.constants.functions = {} + for child_prototype in utils.loop(self.prototypes) do + table.insert(prototype.constants.functions, child_prototype.closure) + end + + local ctx = prototype.ir_context + for pc, instruction in ipairs(self.code) do + -- let's translate this + instruction = utils.kfilter( + function(k, v) + if type(k) ~= 'number' then return true end + return type(v) == 'number' or #v ~= 0 and v:sub(1,1) ~= ';' + end, + instruction) + table.insert(prototype.code, opcode.make(ctx, pc, unpack(instruction))) + if not instruction.location then + print("Cannot generate lineinfo", pc, prototype.code[#prototype.code]) + end + + table.insert(prototype.debug.lineinfo, instruction.location and instruction.location[1][2] or 0) + end + + return self, #closures + 1 + end + + push(scope, closures) + scope:enter() + return scope +end + +local function close() + peek(closures):exit() + return pop(closures):finalize() +end + +local function latest() + return peek(closures) +end + +local function L(number) + if number >= 0 then + return number + end +end + +local function combine(start, rest) + if not rest then return {start, 1} end + assert(rest[1] == start + 1) + return {start, rest[2] + 1} +end + +local function from(alpha) + if alpha < 0 then + return 0 + else + return alpha + end +end + +local function rk(k) + return k + 256 +end + +local BETA = math.max + +-- emit ASTs of bytecodes +-- closure is the current state, alpha is the register to assign into, beta is the "frontier", and gamma is the number +-- of values to return +-- @alphas - optional: either a location to move into or own the object in this field +-- @gamma - number of expressions to return, 0 if not applicable +-- @return alphas - the locations of the current expression if applicable +local interpreter = visitor { + on_any_constant = function(self, value, alphas, tree) + local closure = latest() + local alpha, mine, rest = closure:own_or_propagate(alphas) + local k = closure:const(value) + closure:emit(tree, "LOADK", alpha, k, '', "; " .. tostring(value)) + + if rest then closure:null(rest) end + if mine then closure:free(combine(alpha, rest)) end + return {alpha, 1} + end, + + on_number = function(self, node, alphas) + return self:on_any_constant(tonumber(node.value), alphas, node) + end, + + on_string = function(self, node, alphas) + return self:on_any_constant(tostring(node.value), alphas, node) + end, + + on_true = function(self, node, alphas) + local closure = latest() + local alpha, mine, rest = closure:own_or_propagate(alphas) + closure:emit(node, "LOADBOOL", alpha, 1, 0) + if rest then closure:null(rest, node) end + if mine then closure:free(combine(alpha, rest)) end + return {alpha, 1} + end, + + on_false = function(self, node, alphas) + local closure = latest() + local alpha, mine, rest = closure:own_or_propagate(alphas) + closure:emit(node, "LOADBOOL", alpha, 0, 0) + if rest then closure:null(rest, node) end + if mine then closure:free(combine(alpha, rest)) end + return {alpha, 1} + end, + + on_name = function(self, node, alphas) + local closure = latest() + local alpha, mine, rest = closure:own_or_propagate(alphas) + local r, scope = closure:look_for(node.value) + if scope == closure:level() then + closure:emit(node, "MOVE", alpha, r) + elseif scope then + local up = closure:searchup(r, scope) + assert(up, "Upvalue must have been populated") + closure:emit(node, "GETUPVAL", alpha, up) + else + -- global + local k = closure:const(node.value) + closure:emit(node, "GETTABUP", alpha, 0, rk(k), "; " .. node.value) + end + + if rest then closure:null(rest, node) end + if mine then closure:free(combine(alpha, rest)) end + return {alpha, 1} + end, + + on_nil = function(self, node, alphas) + local closure = latest() + closure:null(alphas, node) + return alphas + end, + + on_unop = function(self, node, alphas) + local closure = latest() + local alpha, mine, rest = closure:own_or_propagate(alphas) + local operator = node.operator.token[1] + local operand = self:accept(node.operand, {alpha, 1}) + local select = {MIN = "UNM", NOT = "NOT", HASH = "LEN"} + closure:emit(node, select[operator], alpha, operand[1]) + if rest then closure:null(rest, node) end + if mine then closure:free(combine(alpha, rest)) end + return {alpha, 1} + end, + + on_binop = function(self, node, alphas) + local closure = latest() + local alpha, mine, rest = closure:own_or_propagate(alphas) + local operator = node.operator.token[1] + local select = { + PLUS = "ADD", + MIN = "SUB", + MUL = "MUL", + DIV = "DIV", + POW = "POW", + MOD = "MOD", + CONCAT = "CONCAT", + } + local logical = { + LT = {"LT", 1}, + LE = {"LE", 1}, + GT = {"LE", 0}, + GE = {"LT", 0}, + EQEQ = {"EQ", 1}, + NOTEQ = {"EQ", 0}, + } + if select[operator] then + local id_left = closure:next() + local left = self:accept(node.left, {id_left, 1}) + local id_right = closure:next() + local right = self:accept(node.right, {id_right, 1}) + closure:emit(node, select[operator], alpha, id_left, id_right) + closure:free{id_left, 2} + elseif logical[operator] then + --[[ + 1 EQ(A=v(1), B=r(a:1), C=r(b:2)) + 2 JMP(A=v(0), sBx=v(1)) + 3 LOADBOOL(A=r(f:0), B=v(0), C=v(1)) + 4 LOADBOOL(A=r(f:0), B=v(1), C=v(0)) + ]] + local logical_operator = logical[operator] + + local id_left = closure:next() + local left = self:accept(node.left, {id_left, 1}) + local id_right = closure:next() + local right = self:accept(node.right, {id_right, 1}) + closure:emit(node, logical_operator[1], logical_operator[2], left[1], right[1], '; ' .. operator) + closure:emit(node, "JMP", 0, 1) + closure:emit(node, "LOADBOOL", alpha, 0, 1) + closure:emit(node, "LOADBOOL", alpha, 1, 0) + closure:free{id_left, 2} + else + --[[ + 1 TESTSET(A=r(f:0), B=r(a:1), C=v(0)) C = 0 for and, 1 for or + 2 JMP(A=v(0), sBx=v(1)) + 3 MOVE(A=r(f:0), B=r(b:2)) + ]] + local c = operator == 'AND' and 0 or 1 + self:accept(node.left, {alpha, 1}) + closure:emit(node, "TEST", alpha, c, '; ' .. operator) + closure:emit(node, "JMP", 0, '#', '', '; TODO: patch in later') + local hole = closure:pc() + self:accept(node.right, {alpha, 1}) + closure:patch_jmp(hole, closure:pc()) + end + if rest then closure:null(rest, node) end + if mine then closure:free(combine(alpha, rest)) end + return {alpha, 1} + end, + + on_table = function(self, node, alphas) + local closure = latest() + local alpha, mine, rest = closure:own_or_propagate(alphas) + closure:emit(node, "NEWTABLE", alpha, 0, 0) + -- get the elements + local last_index + for child in node:children() do if not child.index then last_index = child end end + local last = alpha + for child in node:children() do + if not child.index then + local id = closure:next() + assert(id == last + 1) + last = id + if child ~= last_index then + self:accept(child.value, {id, 1}) + else + local final = self:accept(child.value, {id, TOP}) + closure:emit(child, "SETLIST", alpha, from(last - alpha + final[2] - 1), 1) + closure:free({alpha + 1, last - alpha}) + break + end + end + end + + for child in node:children() do + if child.index then + local index_id = closure:next() + local index = self:accept(child.index, {index_id, 1}) + local value_id = closure:next() + local value = self:accept(child.value, {value_id, 1}) + closure:emit(child, "SETTABLE", alpha, index[1], value[1]) + assert(value_id == index_id + 1) + closure:free({index_id, 2}) + end + end + + if rest then closure:null(rest, node) end + if mine then closure:free(combine(alpha, rest)) end + return {alpha, 1} + end, + + call_imp = function(self, node, call, first, num_in, num_out) + local closure = latest() + if #node.args ~= 0 then + local previous_id = first + for arg in node.args:children() do + local id = closure:next() + assert(id == previous_id + 1, previous_id .. ' versus ' .. id .. ' at ' .. node.location[1][2]) + previous_id = id + if arg ~= node.args[#node.args] then + self:accept(arg, {id, 1}) + else + local _, pack_length = unpack(self:accept(arg, {id, TOP})) + closure:emit(node, "CALL", call, from(num_in + #node.args + pack_length), from(num_out + 1)) + -- time to destroy the previous ids + assert(id == first + #node.args) + closure:free {first + 1, #node.args} + break + end + end + else + closure:emit(node, "CALL", call, num_in + 1, from(num_out + 1)) + end + end, + + on_call = function(self, node, alphas) + local closure = latest() + local alpha, mine, rest = closure:own_or_propagate(alphas) + + -- first, let's free up rest so the subexpressions can use them + if rest then closure:free(rest) end + local num_out = alphas and alphas[2] or 0 + -- node = call -> target : expr, args : args -> [expr] + self:accept(node.target, {alpha, 1}) + self:call_imp(node, alpha, alpha, 0, num_out) + -- next, reserve the output registers again + if rest then assert(closure:next(rest[2]) == rest[1]) end + + if mine then closure:free(combine(alpha, rest)) end + return {alpha, num_out} + end, + + on_selfcall = function(self, node, alphas) + local closure = latest() + local alpha, mine, rest = closure:own_or_propagate(alphas) + + -- first, let's free up rest so the subexpressions can use them + if rest then closure:free(rest) end + local num_out = alphas and alphas[2] or 0 + -- node = selfcall = taget : (index = left : expr, right : name), args + self:accept(node.target.left, {alpha, 1}) + local base = closure:next() + assert(base == alpha + 1) + assert(node.target.right.kind == 'string') + local field = node.target.right.value + closure:emit(node, "SELF", alpha, alpha, rk(closure:const(field))) + self:call_imp(node, alpha, alpha + 1, 1, num_out) + closure:free{base, 1} + -- next, reserve the output registers again + if rest then assert(closure:next(rest[2]) == rest[1]) end + + if mine then closure:free(combine(alpha, rest)) end + return {alpha, num_out} + end, + + on_vararg = function(self, node, alphas) + local closure = latest() + local alpha, mine, rest = closure:own_or_propagate(alphas) + local num_out = alphas and alphas[2] or TOP + assert(closure.closure.is_vararg) + closure:emit(node, "VARARG", alpha, from(num_out + 1)) + + if mine then closure:free(combine(alpha, rest)) end + return {alpha, num_out} + end, + + on_index = function(self, node, alphas) + local closure = latest() + local alpha, mine, rest = closure:own_or_propagate(alphas) + + self:accept(node.left, {alpha, 1}) + local right = closure:next() + closure:free(self:accept(node.right, {right, 1})) + closure:emit(node, "GETTABLE", alpha, alpha, right) + + if rest then closure:null(rest, node) end + if mine then closure:free(combine(alpha, rest)) end + return {alpha, 1} + end, + + on_function = function(self, node, alphas) + local closure = latest() + local alpha, mine, rest = closure:own_or_propagate(alphas) + + local level = closure:level() + + -- node : functiondef = parameters : (parameters = [names], vararg), body : block + enter(#node.parameters, not not node.parameters.vararg) + do + local func = latest() + local parameters = node.parameters + for name in parameters:children() do + func:bind(name.value, func:next()) + end + self:accept(node.body) + func:emit(node.body, "RETURN", 0, 1) + end + local prototype, protolevel = close() + closure:emit(node.body, "CLOSURE", alpha, prototype.id) +-- -- mark upvalues +-- for upvalue in utils.loop(prototype.upvalues) do +-- local register, uplevel = unpack(upvalue) +-- if uplevel == level then +-- -- emit a move +-- closure:emit("MOVE", 0, register, '', "; upvalue") +-- else +-- -- emit an upvalue +-- closure:emit("GETUPVAL", 0, closure:searchup(register, uplevel), '', "; upvalue") +-- end +-- end + + if rest then closure:null(rest, node) end + if mine then closure:free(combine(alpha, rest)) end + return {alpha, 1} + end, + + on_explist = function(self, node, alphas) + error "Illegal state: explist" + end, + + on_localassign = function(self, node) + local closure = latest() + local start_pc = closure:pc() + + local max = BETA(#node.left, node.right and #node.right or 0) + if not node.right or #node.right == 0 then + assert(#node.left ~= 0) + -- this is only possible if we have `local x, y, z` + local id = closure:next(max) + local rest = {id, max} + closure:null(rest, node) + for j = 1, max do + closure:bind(node.left[j].value, id + j - 1) + end + return STATEMENT + end + + for i = 1, max do + local name = node.left[i] + local exp = node.right[i] + if name and exp and exp ~= node.right[#node.right] then + local id = closure:next() + self:accept(exp, {id, 1}) + closure:bind(name.value, id) + elseif name and exp and exp == node.right[#node.right] then + local len = max - i + 1 + local id = closure:next(len) + local rest = {id, len} + self:accept(exp, rest) + for j = 0, len - 1 do + closure:bind(node.left[i + j].value, id + j) + end + break + else + self:accept(assert(not name and exp)) + end + end + return self:statement(start_pc) + end, + + assign = function(self, left, register) + local closure = latest() + if left.kind == 'name' then + local r, scope = closure:look_for(left.value) + if scope == closure:level() then + closure:emit(left, "MOVE", r, register) + elseif scope then + local up = closure:searchup(r, scope) +-- print("Assignup", up) + assert(up, "Upvalue must have been populated") + closure:emit(left, "SETUPVAL", register, up) + else + -- global + closure:emit(left, "SETTABUP", 0, rk(closure:const(left.value)), register, "; " .. left.value) + end + else + assert(left.kind == 'index') + local alpha = closure:next() + self:accept(left.left, {alpha, 1}) + local right = closure:next() + assert(right == alpha + 1) + self:accept(left.right, {right, 1}) + closure:free({alpha, 2}) + closure:emit(left, "SETTABLE", alpha, right, register) + end + end, + + on_assignments = function(self, node) + local closure = latest() + local start_pc = closure:pc() + local max = BETA(#node.left, #node.right) + for i = 1, max do + local left = node.left[i] + local exp = node.right[i] + if left and exp and exp ~= node.right[#node.right] then + local id = closure:next() + self:accept(exp, {id, 1}) + self:assign(left, id) + closure:free{id, 1} + elseif left and exp and exp == node.right[#node.right] then + local len = max - i + 1 + local id = closure:next(len) + local rest = {id, len} + self:accept(exp, rest) + for j = 0, len - 1 do + self:assign(node.left[i + j], id + j) + end + closure:free(rest) + break + else + self:accept(exp) + end + end + return self:statement(start_pc) + end, + + on_block = function(self, node) + local closure = latest() + local start_pc = closure:pc() + closure:enter() + for child in node:children() do + self:accept(child) + end + closure:exit() + return self:statement(start_pc) + end, + + on_if = function(self, node) + local closure = latest() + local start_pc = closure:pc() + local reg = closure:next() + local finishers = {} + self:accept(node.cond, {reg, 1}) + closure:free{reg, 1} + closure:emit(node.cond, "TEST", reg, 0) + closure:emit(node.cond, "JMP", 0, "#", '', '; TODO: patch in') + local hole = closure:pc() + -- the block + self:accept(node.block) + closure:emit(node, "JMP", 0, "#", '', '; TODO: patch in end') + table.insert(finishers, closure:pc()) + -- see if there's an elseif + if node.elseifs then + for conditional in utils.loop(node.elseifs) do + closure:patch_jmp(hole, closure:pc()) -- goto closure:pc() + 1 + local reg = closure:next() + self:accept(conditional.cond, {reg, 1}) + closure:free{reg, 1} + closure:emit(conditional.cond, "TEST", reg, 0) + closure:emit(conditional.cond, "JMP", 0, "#", '', '; TODO: patch in') + hole = closure:pc() + self:accept(conditional.block) + closure:emit(conditional, "JMP", 0, "#", '', '; TODO: patch in end') + table.insert(finishers, closure:pc()) + end + end + closure:patch_jmp(hole, closure:pc()) + if node.else_ then + self:accept(node.else_.block) + end + for finisher in utils.loop(finishers) do + closure:patch_jmp(finisher, closure:pc()) + end + return self:statement(start_pc) + end, + + on_while = function(self, node) + local closure = latest() + local start_pc = closure:pc() + local block = closure:enter() + block.loop = {} + do + local reg = closure:next() + self:accept(node.cond, {reg, 1}) + closure:free{reg, 1} + closure:emit(node.cond, "TEST", reg, 0) + closure:emit(node.cond, "JMP", 0, "#", '', '; TODO: patch in end') + local hole = closure:pc() + self:accept(node.block) + closure:emit(node, "JMP", 0, start_pc - closure:pc() - 1, '', '; to ' .. (start_pc + 1)) + closure:patch_jmp(hole, closure:pc()) + end + closure:exit() + return self:statement(start_pc) + end, + + on_repeat = function(self, node) + local closure = latest() + local start_pc = closure:pc() + local block = closure:enter() + block.loop = {} + do + self:accept(node.block) + local reg = closure:next() + self:accept(node.cond, {reg, 1}) + closure:free{reg, 1} + closure:emit(node.cond, "TEST", reg, 0) + closure:emit(node.cond, "JMP", 0, start_pc - closure:pc() - 1, '', '; to ' .. (start_pc + 1)) + end + closure:exit() + return self:statement(start_pc) + end, + + on_fori = function(self, node) + -- node('fori'):set('id', from(_1)):set('start', _3):set('finish', _5):set('step', _6[1]):set('block', _8) + --1 LOADK(A=r(1), Bx=start) + --2 LOADK(A=r(2), Bx=finish) + --3 LOADK(A=r(3), Bx=step) + --4 FORPREP(A=r(1), sBx=goto FORLOOP (3)) + --5 BLOCK + --6 BLOCK + --7 BLOCK + --8 FORLOOP(A=r(1), sBx=goto FORPREP (-4)) + --9 RETURN(A=r(f), B=v(1)) + local closure = latest() + local start_pc = closure:pc() + local block = closure:enter() + block.loop = {} + do -- the for loop outer block + local base = closure:next() + -- ensure that the next 3 instructions are stored to consecutive ids + self:accept(node.start, {base, 1}) + assert(closure:next() == base + 1) + self:accept(node.finish, {base + 1, 1}) + assert(closure:next() == base + 2) + if node.step then + self:accept(node.step, {base + 2, 1}) + else + closure:emit(node, "LOADK", base + 2, closure:const(1)) + end + local var = closure:next() + assert(var == base + 3) + closure:bind(node.id.value, var) + closure:emit(node, "FORPREP", base, '#', '', '; TODO: patch with end') + local prep_pc = closure:pc() + self:accept(node.block) + closure:patch_jmp(prep_pc, closure:pc()) + closure:emit(node, "FORLOOP", base, prep_pc - closure:pc() - 1, '', '; to ' .. (prep_pc + 1)) + closure:free{base, 4} + end + closure:exit() + return self:statement(start_pc) + end, + + explist = function(self, nodes, alphas) + local closure = latest() + local start_pc = closure:pc() + local base, num = unpack(assert(alphas)) + local max = BETA(alphas[2], #nodes) + if #nodes == 0 then + assert(num ~= 0) + -- this is only possible if we have `local x, y, z` + local rest = {base, max} + closure:null(rest, node) + end + + for i = 1, max do + local exp = nodes[i] + local id = base + i - 1 + if i <= num and exp and exp ~= nodes[#nodes] then + self:accept(exp, {id, 1}) + elseif i <= num and exp and exp == nodes[#nodes] then + local len = max - i + 1 + local rest = {id, len} + self:accept(exp, rest) + break + else + self:accept(assert(i > num and exp)) + end + end + return self:statement(start_pc) + end, + + on_foreach = function(self, node) + --[[ + --node('foreach'):set('names', _1):set('iterator', _3):set('block', _5) + 1 MOVE(A=r(1), B=r(f:0)) + 2 CALL(A=r(1), B=v(1), C=v(4)) + 3 JMP(A=v(0), sBx=v(7)) + 4 GETTABUP(A=r(9), B=v(0), C=print) + 5 MOVE(A=r(10), B=r(i:4)) + 6 MOVE(A=r(11), B=r(j:5)) + 7 MOVE(A=r(12), B=r(k:6)) + 8 MOVE(A=r(13), B=r(e:7)) + 9 MOVE(A=r(14), B=r(g:8)) + 10 CALL(A=r(9), B=v(6), C=v(1)) + 11 TFORCALL(A=r(1), C=v(5)) + 12 TFORLOOP(A=r(3), sBx=v(-9)) + 13 RETURN(A=r(f:0), B=v(1)) + --]] + local closure = latest() + local start_pc = closure:pc() + local block = closure:enter() + block.loop = {} + do + local names = node.names + -- reserve the first n registers for the loop guards, and an additional n registers for the variables + local base = closure:next(3) + self:explist(node.iterator, {base, 3}) + closure:emit(node, "JMP", 0, '#', '', '; TODO: jump to forcall') + local hole = closure:pc() + local vars = closure:next(#names) + for i = 1, #names do closure:bind(names[i].value, vars + i - 1) end + self:accept(node.block) + closure:patch_jmp(hole, closure:pc()) + closure:emit(node, "TFORCALL", base, #names, '', '; reserve ' .. (base + 3) .. ' to ' .. (base + 2 + #names)) + closure:emit(node, "TFORLOOP", base + 2, hole - closure:pc() - 1, '', 'to '.. (hole + 1)) + closure:free{vars, #names} + closure:free{base, 3} + end + closure:exit() + return self:statement(start_pc) + end, + + on_break = function(self, node) + local closure = latest() + local start_pc = closure:pc() + -- find the closest loop block + local loop; + for block in utils.loop(closure.locals) do + if block.loop then + loop = block + break + end + end + assert(loop, "Cannot break outside of a loop") + closure:emit(node, "JMP", 0, "#", '', '; TODO: patch in after loop is closed') + table.insert(loop.loop, closure:pc()) + + return self:statement(start_pc) + end, + + on_localfunctiondef = function(self, node) + local closure = latest() + local start_pc = closure:pc() + -- node('localfunctiondef') + -- -- :set('name', from(_2)) + -- -- :set('function', node('function'):set('parameters', _3[1]):set('body', _3[2])) + local reg = closure:next() + self:accept(node['function'], {reg, 1}) + closure:bind(node.name.value, reg) + return self:statement(start_pc) + end, + + assign_to_funcname = function(self, names, reg) + local closure = latest() + if #names == 1 then + local left = names[1] + local r, scope = closure:look_for(left.value) + if scope == closure:level() then + closure:emit(left, "MOVE", r, reg) + elseif scope then + local up = closure:searchup(r, scope) + assert(up, "Upvalue must have been populated") + closure:emit(left, "SETUPVAL", reg, up) + else + -- global + closure:emit(left, "SETTABUP", 0, rk(closure:const(left.value)), reg, "; " .. left.value) + end + else + local base = closure:next() + for name in utils.loop(names) do + if name == names[1] then + self:accept(name, {base, 1}) + elseif name == names[#names] then + local k = closure:const(name.value) + closure:emit(name, "SETTABLE", base, rk(closure:const(name.value)), reg, '; ' .. name.value) + closure:free{base, 1} + break + else + local k = closure:const(name.value) + closure:emit(name, "GETTABLE", base, base, rk(closure:const(name.value)), '; ' .. name.value) + end + end + end + end, + + on_functiondef = function(self, node) + local closure = latest() + local start_pc = closure:pc() + -- node('functiondef') + -- -- :set('funcname', _2) + -- -- :set('function', node('function'):set('parameters', _3[1]):set('body', _3[2])) + local reg = closure:next() + self:accept(node['function'], {reg, 1}) + + self:assign_to_funcname(node.funcname, reg) + + closure:free{reg, 1} + return self:statement(start_pc) + end, + + on_return = function(self, node) + local closure = latest() + local start_pc = closure:pc() + + if node.explist then + local base = closure:next() + local id = base + for arg in node.explist:children() do + if arg ~= node.explist[#node.explist] then + self:accept(arg, {id, 1}) + id = closure:next() + else + local _, pack_length = unpack(self:accept(arg, {id, TOP})) + closure:emit(node, "RETURN", base, from(#node.explist + pack_length)) + -- time to destroy the previous ids + assert(id == base + #node.explist - 1) + closure:free {base, #node.explist} + break + end + end + else + closure:emit(node, "RETURN", 0, 1) + end + + return self:statement(start_pc) + end, + + on_callstmt = function(self, node) + local closure = latest() + local start_pc = closure:pc() + self:accept(node[1]) + return self:statement(start_pc) + end, + + on_empty = function(self, node) + local closure = latest() + local start_pc = closure:pc() + -- NOP + return self:statement(start_pc) + end, + + on_label = function() + error "Labels and gotos are not implemented" + end, + + on_goto = function() + error "Labels and gotos are not implemented" + end, + + statement = function(self, start_pc) + return {first = start_pc, last = latest():pc()} + end, + + expression = function(self, start_pc, bundle) + return {first = start_pc, last = latest():pc(), unpack(bundle)} + end, +} + +--local tree = parser([[ +-- local a = 1; +-- local b, c = "asdfasdf"; +-- local c = 1, 2; +-- local e = (not c) + 3; +-- local f = {1, e, c, zzz = 5, [3] = 2} +-- local x, y, z = a("zzz", a(), "xxx", a(3,c,5)) +-- local b = z:lol(a) +-- local c = {...} +-- local z, x, y = ... +-- local g = f[3].c +-- local h = g.foo +-- local foo = function() local zzz = a, function() local yyy, xxx = zzz, b, aaa end end +-- foo:bar(1, 2, 3) +-- a, b, c, gbl = 3 +-- gbl = foo() +-- gbl.x = 3 +-- do +-- local abcdefg = hi +-- end +-- a = abcdefg +-- a = abcdefg +-- a = a + a +--]]) + +--local tree = parser [[ +---- if foo() then bar() elseif dog() then else foobar() end +---- while bar(f()) do print("hello") end +---- repeat foo() until bar() +---- for i = 1, 3 do print("hello") end +---- local function f() end +---- for i, j, k, e, g in f() do break print(i, j, k, e, g) break end +-- local lol; +-- function lol.y:z() print(self) end +--]] + +return function(tree) + closures = {} + enter(0, true) + interpreter:accept(tree) + latest():emit(tree, "RETURN", 0, 1) + local closure = close() + return closure.closure, closure end \ No newline at end of file diff --git a/lua/decompiler.lua b/luainlua/lua/decompiler.lua similarity index 86% rename from lua/decompiler.lua rename to luainlua/lua/decompiler.lua index 3582119..d1af404 100644 --- a/lua/decompiler.lua +++ b/luainlua/lua/decompiler.lua @@ -1,79 +1,79 @@ --- Idea: look at the structure of the official luac compiler and construct a pattern grammar based on that - -local utils = require 'common.utils' -local undump = require 'bytecode.undump' -local cfg = require 'cfg.cfg' - -local decompiler = {} - -local ast = {} - -function ast:set(key, val) - if not key or not val then return self end - self[key] = val - return self -end - -function ast:list(...) - for child in utils.loop({...}) do - table.insert(self, child) - end - return self -end - -function ast:children() - return utils.loop(self) -end - -local function escape(id) - return table.concat( - utils.map( - function(char) - if char == ("'"):byte() then - return "\\'" - else - return string.char(char) - end - end, - {id:byte(1, #id)})) -end - -function ast:tostring() - utils.dump(self, escape) -end - -local function node(kind) - return setmetatable({kind = kind}, {__index = ast, __tostring = ast.tostring}) -end - -local function from(kind, value) - if not kind then - kind = 'leaf' - end - local leaf = node(kind) - leaf.value = value - return leaf -end - --------------------------------------------- ---- Puzzle Pieces --- --------------------------------------------- - -local puzzles = {} - --- OP_RETURN,/* A B return R(A), ... ,R(A+B-2) (see note) */ -function puzzles.RETURN(ctx, instruction) - -end - - -local context = {} - - -local closure = undump.undump(function(x, y) for i = 1,2,4 do foo() end end) - -local g = cfg.make(closure) - -print(cfg.tostring(g)) - +-- Idea: look at the structure of the official luac compiler and construct a pattern grammar based on that + +local utils = require 'luainlua.common.utils' +local undump = require 'luainlua.bytecode.undump' +local cfg = require 'luainlua.cfg.cfg' + +local decompiler = {} + +local ast = {} + +function ast:set(key, val) + if not key or not val then return self end + self[key] = val + return self +end + +function ast:list(...) + for child in utils.loop({...}) do + table.insert(self, child) + end + return self +end + +function ast:children() + return utils.loop(self) +end + +local function escape(id) + return table.concat( + utils.map( + function(char) + if char == ("'"):byte() then + return "\\'" + else + return string.char(char) + end + end, + {id:byte(1, #id)})) +end + +function ast:tostring() + utils.dump(self, escape) +end + +local function node(kind) + return setmetatable({kind = kind}, {__index = ast, __tostring = ast.tostring}) +end + +local function from(kind, value) + if not kind then + kind = 'leaf' + end + local leaf = node(kind) + leaf.value = value + return leaf +end + +-------------------------------------------- +--- Puzzle Pieces --- +-------------------------------------------- + +local puzzles = {} + +-- OP_RETURN,/* A B return R(A), ... ,R(A+B-2) (see note) */ +function puzzles.RETURN(ctx, instruction) + +end + + +local context = {} + + +local closure = undump.undump(function(x, y) for i = 1,2,4 do foo() end end) + +local g = cfg.make(closure) + +print(cfg.tostring(g)) + return decompiler \ No newline at end of file diff --git a/lua/grammar.ylua b/luainlua/lua/grammar.ylua similarity index 96% rename from lua/grammar.ylua rename to luainlua/lua/grammar.ylua index e959789..184bb27 100644 --- a/lua/grammar.ylua +++ b/luainlua/lua/grammar.ylua @@ -1,579 +1,579 @@ -%require "common.utils" -%require "lua.tokenizer" - -%file "lua/parser" - -%quote '(' LPAREN -%quote ',' COMMA -%quote ':' COLON -%quote '[' LBRACK -%quote ']' RBRACK -%quote '.' PERIOD -%quote '~=' NOTEQ -%quote '==' EQEQ -%quote '>=' GE -%quote '>' GT -%quote '<=' LE -%quote '<' LT -%quote '..' CONCAT -%quote '%' MOD -%quote '^' POW -%quote '/' DIV -%quote '*' MUL -%quote '-' MIN -%quote '+' PLUS -%quote '=' EQ -%quote '#' HASH -%quote ')' RPAREN -%quote ';' SEMICOLON -%quote '...' DOTS -%quote '{' LBRACE -%quote '}' RBRACE -%quote '::' QUAD -%quote 'function' FUNCTION -%quote 'true' TRUE -%quote 'false' FALSE -%quote 'nil' NIL -%quote 'or' OR -%quote 'and' AND -%quote 'return' RETURN -%quote 'local' LOCAL -%quote 'for' FOR -%quote 'in' IN -%quote 'do' DO -%quote 'end' END -%quote 'if' IF -%quote 'not' NOT -%quote 'then' THEN -%quote 'else' ELSE -%quote 'elseif' ELSEIF -%quote 'repeat' REPEAT -%quote 'until' UNTIL -%quote 'while' WHILE -%quote 'goto' GOTO -%quote 'break' BREAK - -// Character classes of tokens -%production Name "class of valid identifiers" -%production String "class of valid strings" -%production Number "class of valid numbers" - -%production FUNCTION -%production EQ -%production COMMA -%production QUAD -%production PERIOD -%production LPAREN -%production RPAREN -%production END -%production SEMICOLON -%production LBRACE -%production RBRACE -%production OR -%production AND -%production NOTEQ -%production EQEQ -%production GE -%production GT -%production LE -%production LT -%production CONCAT -%production MOD -%production POW -%production DIV -%production MUL -%production MIN -%production PLUS -%production LBRACK -%production RBRACK -%production LOCAL -%production FOR -%production IF -%production THEN -%production REPEAT -%production UNTIL -%production WHILE -%production DO -%production GOTO -%production BREAK -%production IN -%production RETURN -%production DOTS -%production TRUE -%production FALSE -%production NIL -%production ELSE -%production ELSEIF -%production HASH -%production NOT -%production COLON - -%prologue {: - function(stream) - local tokens = {} - for token in tokenizer(stream) do - table.insert(tokens, token) - end - return tokens - end -:} - -// Let's create a set of trees where the children are recorded as integer indices -// and also as named fields -%code {: - -local ast = {} -function ast:__newindex(key, val) - if type(key) ~= 'string' then - return rawset(self, key, val) - end - assert(not self[key], 'Fields passed to a node should be initialized only once.') - rawset(self, key, val) - -- other stuff - if val.kind then - table.insert(self, val) - assert(not val.parent, 'Fields passed to a node should be unowned.') - rawset(val, 'parent', self) - end -end - -function ast:set(key, val) - if not key or not val then return self end - if not val.kind then - print(debug.traceback()) - end - assert(val.kind, 'Set should only be called on child trees.') - self[key] = val - return self -end - -function ast:list(...) - local list = {...} - for child in utils.loop(list) do - if not child.kind then - print(debug.traceback()) - end - assert(child.kind, 'List should only be called on child trees.') - table.insert(self, child) - assert(not child.parent or child.parent.kind == 'explist', 'Children passed to list(...) should be unowned.') - rawset(child, 'parent', self) - end - return self -end - -function ast:children() - return utils.loop(self) -end - -local function node(location, kind) - return setmetatable({kind = kind, location = location}, {__index = ast, __newindex = ast.__newindex}) -end - -local function from(token, kind) - if not kind then - if tostring(token) == 'Name' then - kind = 'name' - else - kind = 'leaf' - end - end - local leaf = node(token.location, kind) - leaf.token = token - leaf.value = token[2] - return leaf -end -:} - - -// ======================================================================================= -// === GRAMMAR RULES === -// ======================================================================================= - - -// A lua file is just a block -root := $block [: _1 :] - -block := $stat* $retstat? {: function(stats, ret) - local tree = node((stats[1] and stats[1].location) or (ret[1] and ret[1].location), 'block') - tree:list(unpack(stats)) - return tree:set('ret', (#ret ~= 0 and ret[1]) or nil) -end -:} - -stat := - ';' [: node(_1.location, 'empty') :] - | $assignment_or_call [: _1 :] - | $label [: _1 :] - | 'break' [: node(_1.location, 'break') :] - | 'goto' Name [: node(_1.location, 'goto'):set('label', from(_2)) :] - | 'do' $block 'end' [: _2 :] - | 'while' $exp 'do' $block 'end' [: node(_1.location, 'while'):set('cond', _2):set('block', _4) :] - | 'repeat' $block 'until' $exp [: node(_1.location, 'repeat'):set('cond', _4):set('block', _2) :] - | 'if' $exp 'then' $block - ('elseif' $exp 'then' $block [: node(_1.location, 'elseif'):set('cond', _2):set('block', _4) :])* - ('else' $block [: node(_1.location, 'else'):set('block', _2) :])? 'end' - [: node(_1.location, 'if') - :set('cond', _2) - :set('block', _4) - :set('elseifs', #_5 > 0 and node(_5[1].location, 'elseif'):list(unpack(_5)) or nil) - :set('else_', _6[1]) :] - | 'for' ( - Name '=' $exp ',' $exp (',' $exp [: _2 :])? 'do' $block 'end' - [: node(_1.location, 'fori'):set('id', from(_1)):set('start', _3):set('finish', _5):set('step', _6[1]):set('block', _8) :] - | $namelist 'in' $explist 'do' $block 'end' - [: node(_1.location, 'foreach'):set('names', _1):set('iterator', _3):set('block', _5) :]) - /* Whole action */ {: function(_1, _2) return _2 end :} - | 'function' $funcname $funcbody {: function(_1, _2, _3) - if _2.colon then - local name = node(_3[1].location, 'name') - name.value = 'self' - table.insert(_3[1], 1, name) - end - return node(_1.location, 'functiondef'):set('funcname', _2):set('function', node(_3[1].location, 'function'):set('parameters', _3[1]):set('body', _3[2])) - end - :} - | 'local' ('function' Name $funcbody - [: node(_1.location, 'localfunctiondef'):set('name', from(_2)):set('function', node(_3[1].location, 'function'):set('parameters', _3[1]):set('body', _3[2])) :] - | $namelist ('=' $explist [: _2 :])? - [: node(_1.location, 'localassign'):set('left', _1):set('right', _2[1]) :] - ) [: _2 :] - -%resolve stat'group#2 Name {: function(self, tokens) - if tostring(tokens[2]) == 'EQ' then - return self:go 'forcounter' - else - return self:go 'foreach' - end -end :} - -// just return the explist -retstat := 'return' $explist? ';'? [: #_2 == 0 and node(_1.location, 'return') or node(_1.location, 'return'):set('explist', _2[1]) :] - -label := '::' Name '::' [: node(_1.location, 'label'):set('name', from(_2)) :] - -funcname := Name ('.' Name [: from(_2) :])* (':' Name [: from(_2) :])? {: - function(name, names, colon) - local tree = node(name.location, 'funcnames') - colon = colon[1] - tree:list(from(name)) - tree:list(unpack(names)) - if colon then - tree.colon = colon - end - return tree - end -:} - -namelist := Name (',' Name [: from(_2) :])* {: - function(name, names) - local tree = node(name.location, 'names') - tree:list(from(name)) - tree:list(unpack(names)) - return tree - end -:} - -explist := $exp (',' $exp [: _2 :])* {: - function(exp, explist) - local tree = node(exp.location, 'explist') - tree:list(exp) - tree:list(unpack(explist)) - return tree - end -:} - -%code {: --- this will either reduce to an index, a call, a name, or a grouped expression --- // Shape of a suffix: {index = shape(from(name)), args = shape(args)} --- suffix := '.' Name {\: suffix_dot :\} // field --- | '[' $exp ']' {\: suffix_bracket :\} // field --- | ':' Name $args {\: suffix_colon :\} // arg --- | $args {\: suffix_args :\} // arg --- primaryexp := Name [: from(_1) :] --- | '(' $exp ')' [: _2 :] --- primary_suffix := $primaryexp $suffix* --- Plan: recurse on the structural inductive properties of a list -local function handle_primary_suffix(left, suffixlist) - if #suffixlist == 0 then - return left - end - -- pop the first element out of suffixlist - local suffix = suffixlist[1] - local rest = utils.sublist(suffixlist, 2) - if suffix.index and not suffix.args then - return handle_primary_suffix( - node(left.location, 'index'):set('left', left):set('right', suffix.index), - rest) - elseif suffix.args and not suffix.index then - return handle_primary_suffix( - node(left.location, 'call'):set('target', left):set('args', suffix.args), - rest) - elseif suffix.args and suffix.index then - local index = node(left.location, 'index'):set('left', left):set('right', suffix.index) - return handle_primary_suffix( - node(index.location, 'selfcall'):set('target', index):set('args', suffix.args), - rest) - end - error 'unimplemented' -end -:} - -%code {: - local function suffix_dot(_, name) - return { - index = from(name, "string"), - args = nil, - } - end - local function suffix_bracket(_, exp) - return { - index = exp, - args = nil, - } - end - local function suffix_colon(_, name, args) - return { - index = from(name, "string"), - args = args, - } - end - local function suffix_args(args) - return { - index = nil, - args = args, - } - end -:} - -suffix := '.' Name {: suffix_dot :} | '[' $exp ']' {: suffix_bracket :} | ':' Name $args {: suffix_colon :} | $args {: suffix_args :} -primaryexp := Name [: from(_1) :] | '(' $exp ')' [: _2 :] - -// %eps is func, the other 2 are assignments -// let's rule out the possibility of f() = x - -assignment_or_call := - $primaryexp ( - '.' Name {: suffix_dot :} - | '[' $exp ']' {: suffix_bracket :} - | ':' Name $args {: suffix_colon :} - | $args {: suffix_args :})* $assignment? - {: - function(left, suffixes, assignment_opt) - local assignment = #assignment_opt == 0 and {} or assignment_opt[1] - -- let's reduce to call or assignment - if (#suffixes == 0 or not suffixes[#suffixes].args) and #assignment == 0 then - error('Parser error: you can only specify a call or an assignment here') - end - if #suffixes ~= 0 and #assignment ~= 0 and suffixes[#suffixes].args then - error 'Parser error: you cannot assign to a call' - end - - if #assignment ~= 0 then - -- assignment case - -- assignment is a list of subsequent assignments - local ps = handle_primary_suffix(left, suffixes) - assert(ps.kind == 'index' or ps.kind == 'name') - local lvals, rvals = unpack(assignment) - table.insert(lvals, 1, ps) - lvals = node(ps.location, 'lvalues'):list(unpack(lvals)) - local tree = node(ps.location, 'assignments') - tree.left = lvals - tree.right = rvals - return tree - else - -- call case - local ps = handle_primary_suffix(left, suffixes) - assert(ps.kind == 'call' or ps.kind == 'selfcall') - return node(ps.location, 'callstmt'):list(ps) - end - end - :} - -assignment := ',' $primaryexp $suffix* $assignment - {: - function(_, _1, _2, _3) - local left, right = unpack(_3) - table.insert(left, 1, handle_primary_suffix(_1, _2)); - return {left, right} - end :} - | '=' $explist [: {{}, _2} :] - -// Hack to get around the fact that one branch of this is always -// "dead" states that would get killed later on anyways -%resolve assignment_or_call'star#1 '(' {: function(self, tokens) - -- always reduce to call - return self:go '#list' -end :} - -// prefixexp := $var | $functioncall | '(' $exp ')' -// functioncall := $prefixexp ($args | ':' Name $args) -// varlist := $var (',' $var)* -// var := Name | $prefixexp ('[' $exp ']' | '.' Name) - -args := '(' $explist? ')' [: (#_2 == 0 and node(_1.location, 'args')) or node(_1.location, 'args'):list(unpack(_2[1])) :] - | $tableconstructor [: node(_1.location, 'args'):list(_1) :] - | String [: node(_1.location, 'args'):list(from(_1, 'string')) :] - -functiondef := 'function' $funcbody [: node(_1.location, 'function'):set('parameters', _2[1]):set('body', _2[2]) :] - -funcbody := '(' $parlist? ')' $block 'end' - {: - function(_1, parameters_opt, _, block) - local parameters = parameters_opt[1] or node(_1.location, 'parameters') - return {parameters, block} - end - :} - -// resolve conflict for parlist := (Name ',')+ Name; based on tokens[2] being , or not -%code {: - local function parlist_namelist(namelist, trail) - local parameters = node(namelist[1] and namelist[1].location or trail.location, 'parameters') - for name in utils.loop(namelist) do - parameters:list(from(name)) - end - if trail[1] == 'DOTS' then - rawset(parameters, 'vararg', from(trail)) - else - parameters:list(from(trail)) - end - return parameters - end -:} - -parlist := ( Name ',' [: _1 :])* (Name [: _1 :] | '...' [: _1 :]) - {: parlist_namelist :} - -%resolve parlist'star#1 Name {: function(self, tokens) - if tostring(tokens[2]) == 'COMMA' then - return self:go '#list' - else - return self:go '' - end -end :} - -// TODO: ensure that only the last $field has an optional $fieldsep -tableconstructor := '{' $field* '}' - [: node(_1.location, 'table'):list(unpack(_2)) :] - -// Conflict resolvers, since the approximation of Lua we're parsing is not LL(1) (but is LL(2)) -field := '[' $exp ']' '=' $exp $fieldsep? [: node(_1.location, 'element'):set('index', _2):set('value', _5) :] - | Name '=' $exp $fieldsep? [: node(_1.location, 'element'):set('index', from(_1, 'string')):set('value', _3) :] - | $exp $fieldsep? [: node(_1.location, 'element'):set('value', _1) :] -%resolve field Name {: function(self, tokens) - if tostring(tokens[2]) == 'EQ' then - return self:go 'assign' - else - return self:go 'exp' - end -end :} - -fieldsep [: {} :] := ',' | ';' - -level1 [: from(_1, 'op') :] := 'or' -level2 [: from(_1, 'op') :] := 'and' -level3 [: from(_1, 'op') :] := '<' | '>' | '<=' | '>=' | '~=' | '==' -level4 [: from(_1, 'op') :] := '..' -level5 [: from(_1, 'op') :] := '+' | '-' -level6 [: from(_1, 'op') :] := '*' | '/' | '%' -level7 [: from(_1, 'op') :] := 'not' | '#' | '-' // unary -level8 [: from(_1, 'op') :] := '^' - -exp_stop := - 'nil' [: node(_1.location, 'nil') :] - | 'false' [: node(_1.location, 'false') :] - | 'true' [: node(_1.location, 'true') :] - | Number [: from(_1, 'number') :] - | String [: from(_1, 'string') :] - | '...' [: node(_1.location, 'vararg') :] - | $functiondef [: _1 :] - | $primaryexp $suffix* {: handle_primary_suffix :} - | $tableconstructor [: _1 :] - -%code {: local function goto_list(self) return self:go '#list' end :} -%resolve exp_stop'star#1 '[' {: goto_list :} -%resolve exp_stop'star#1 String {: goto_list :} -%resolve exp_stop'star#1 '{' {: goto_list :} -%resolve exp_stop'star#1 '(' {: goto_list :} - -%code {: - local make_binop = function(left, rest) - if #rest == 0 then - return left - end - assert(#rest == 2 and rest[1].kind == 'binop' and not rest[1].left) - local hole, binop = unpack(rest) - hole.left = left - return binop - end - - local start_binop = function(bop, right, rest) - -- In ocaml style pseduocode - -- let start (+) e_r rest = - -- let o = hole() in - -- match rest with - -- | None -> o, (o (+) e_r) - -- | Some(., e_l' (*) e_r' as e') -> - -- let e'' = fill(e', ., (o (+) e_r) in - -- o, e'' - -- Invariant: expn' is always "holed" and expn is always whole - -- Invariant: immediately holed expn' is always holey on the left - local hole = node(bop.location, 'binop') - hole.operator = bop - hole.right = right - -- implicit: hole.left is the hole - if #rest == 0 then - return {hole, hole} - end - assert(#rest == 2 and rest[1].kind == 'binop' and not rest[1].left) - rest[1].left = hole - return {hole, rest[2]} - end - - local function start_right_binop(bop, right) - -- invariant: right is whole, return is immediately holed - local hole = node(bop.location, 'binop') - hole.operator = bop - hole.right = right - return hole - end - - local function make_right_binop(left, binop_opt) - local binop = binop_opt[1] - if not binop then return left end - assert(binop.kind == 'binop' and not binop.left) - binop.left = left - return binop - end -:} - - -exp := $exp2 $exp' {: make_binop :} // left -exp' := $level1 $exp2 $exp' {: start_binop :} | %eps [: {} :] - -exp2 := $exp3 $exp2' {: make_binop :} // left -exp2' := $level2 $exp3 $exp2' {: start_binop :} | %eps [: {} :] - -exp3 := $exp4 $exp3' {: make_binop :} // left -exp3' := $level3 $exp4 $exp3' {: start_binop :} | %eps [: {} :] - -exp4 := $exp5 ($level4 $exp4 {: start_right_binop :})? {: make_right_binop :} // right - -exp5 := $exp6 $exp5' {: make_binop :} // left -exp5' := $level5 $exp6 $exp5' {: start_binop :} | %eps [: {} :] - -exp6 := $exp7 $exp6' {: make_binop :} // left -exp6' := $level6 $exp7 $exp6' {: start_binop :} | %eps [: {} :] - -exp7 := $level7 $exp7 [: node(_1.location, 'unop'):set('operator', _1):set('operand', _2) :] | $exp8 [: _1 :] // unary - -exp8 := $exp_stop ($level8 $exp8 {: start_right_binop :})? {: make_right_binop :} // right - -%resolve exp5' '-' {: function(self, tokens) - return self:go 'minus' -end :} - -binop [: from(_1, 'op') :] := '+' | '-' | '*' | '/' | '^' | '%' | '..' | - '<' | '<=' | '>' | '>=' | '==' | '~=' | - 'and' | 'or' - +%require "luainlua.common.utils" +%require "luainlua.lua.tokenizer" + +%file "luainlua/lua/parser" + +%quote '(' LPAREN +%quote ',' COMMA +%quote ':' COLON +%quote '[' LBRACK +%quote ']' RBRACK +%quote '.' PERIOD +%quote '~=' NOTEQ +%quote '==' EQEQ +%quote '>=' GE +%quote '>' GT +%quote '<=' LE +%quote '<' LT +%quote '..' CONCAT +%quote '%' MOD +%quote '^' POW +%quote '/' DIV +%quote '*' MUL +%quote '-' MIN +%quote '+' PLUS +%quote '=' EQ +%quote '#' HASH +%quote ')' RPAREN +%quote ';' SEMICOLON +%quote '...' DOTS +%quote '{' LBRACE +%quote '}' RBRACE +%quote '::' QUAD +%quote 'function' FUNCTION +%quote 'true' TRUE +%quote 'false' FALSE +%quote 'nil' NIL +%quote 'or' OR +%quote 'and' AND +%quote 'return' RETURN +%quote 'local' LOCAL +%quote 'for' FOR +%quote 'in' IN +%quote 'do' DO +%quote 'end' END +%quote 'if' IF +%quote 'not' NOT +%quote 'then' THEN +%quote 'else' ELSE +%quote 'elseif' ELSEIF +%quote 'repeat' REPEAT +%quote 'until' UNTIL +%quote 'while' WHILE +%quote 'goto' GOTO +%quote 'break' BREAK + +// Character classes of tokens +%production Name "class of valid identifiers" +%production String "class of valid strings" +%production Number "class of valid numbers" + +%production FUNCTION +%production EQ +%production COMMA +%production QUAD +%production PERIOD +%production LPAREN +%production RPAREN +%production END +%production SEMICOLON +%production LBRACE +%production RBRACE +%production OR +%production AND +%production NOTEQ +%production EQEQ +%production GE +%production GT +%production LE +%production LT +%production CONCAT +%production MOD +%production POW +%production DIV +%production MUL +%production MIN +%production PLUS +%production LBRACK +%production RBRACK +%production LOCAL +%production FOR +%production IF +%production THEN +%production REPEAT +%production UNTIL +%production WHILE +%production DO +%production GOTO +%production BREAK +%production IN +%production RETURN +%production DOTS +%production TRUE +%production FALSE +%production NIL +%production ELSE +%production ELSEIF +%production HASH +%production NOT +%production COLON + +%prologue {: + function(stream) + local tokens = {} + for token in tokenizer(stream) do + table.insert(tokens, token) + end + return tokens + end +:} + +// Let's create a set of trees where the children are recorded as integer indices +// and also as named fields +%code {: + +local ast = {} +function ast:__newindex(key, val) + if type(key) ~= 'string' then + return rawset(self, key, val) + end + assert(not self[key], 'Fields passed to a node should be initialized only once.') + rawset(self, key, val) + -- other stuff + if val.kind then + table.insert(self, val) + assert(not val.parent, 'Fields passed to a node should be unowned.') + rawset(val, 'parent', self) + end +end + +function ast:set(key, val) + if not key or not val then return self end + if not val.kind then + print(debug.traceback()) + end + assert(val.kind, 'Set should only be called on child trees.') + self[key] = val + return self +end + +function ast:list(...) + local list = {...} + for child in utils.loop(list) do + if not child.kind then + print(debug.traceback()) + end + assert(child.kind, 'List should only be called on child trees.') + table.insert(self, child) + assert(not child.parent or child.parent.kind == 'explist', 'Children passed to list(...) should be unowned.') + rawset(child, 'parent', self) + end + return self +end + +function ast:children() + return utils.loop(self) +end + +local function node(location, kind) + return setmetatable({kind = kind, location = location}, {__index = ast, __newindex = ast.__newindex}) +end + +local function from(token, kind) + if not kind then + if tostring(token) == 'Name' then + kind = 'name' + else + kind = 'leaf' + end + end + local leaf = node(token.location, kind) + leaf.token = token + leaf.value = token[2] + return leaf +end +:} + + +// ======================================================================================= +// === GRAMMAR RULES === +// ======================================================================================= + + +// A lua file is just a block +root := $block [: _1 :] + +block := $stat* $retstat? {: function(stats, ret) + local tree = node((stats[1] and stats[1].location) or (ret[1] and ret[1].location), 'block') + tree:list(unpack(stats)) + return tree:set('ret', (#ret ~= 0 and ret[1]) or nil) +end +:} + +stat := + ';' [: node(_1.location, 'empty') :] + | $assignment_or_call [: _1 :] + | $label [: _1 :] + | 'break' [: node(_1.location, 'break') :] + | 'goto' Name [: node(_1.location, 'goto'):set('label', from(_2)) :] + | 'do' $block 'end' [: _2 :] + | 'while' $exp 'do' $block 'end' [: node(_1.location, 'while'):set('cond', _2):set('block', _4) :] + | 'repeat' $block 'until' $exp [: node(_1.location, 'repeat'):set('cond', _4):set('block', _2) :] + | 'if' $exp 'then' $block + ('elseif' $exp 'then' $block [: node(_1.location, 'elseif'):set('cond', _2):set('block', _4) :])* + ('else' $block [: node(_1.location, 'else'):set('block', _2) :])? 'end' + [: node(_1.location, 'if') + :set('cond', _2) + :set('block', _4) + :set('elseifs', #_5 > 0 and node(_5[1].location, 'elseif'):list(unpack(_5)) or nil) + :set('else_', _6[1]) :] + | 'for' ( + Name '=' $exp ',' $exp (',' $exp [: _2 :])? 'do' $block 'end' + [: node(_1.location, 'fori'):set('id', from(_1)):set('start', _3):set('finish', _5):set('step', _6[1]):set('block', _8) :] + | $namelist 'in' $explist 'do' $block 'end' + [: node(_1.location, 'foreach'):set('names', _1):set('iterator', _3):set('block', _5) :]) + /* Whole action */ {: function(_1, _2) return _2 end :} + | 'function' $funcname $funcbody {: function(_1, _2, _3) + if _2.colon then + local name = node(_3[1].location, 'name') + name.value = 'self' + table.insert(_3[1], 1, name) + end + return node(_1.location, 'functiondef'):set('funcname', _2):set('function', node(_3[1].location, 'function'):set('parameters', _3[1]):set('body', _3[2])) + end + :} + | 'local' ('function' Name $funcbody + [: node(_1.location, 'localfunctiondef'):set('name', from(_2)):set('function', node(_3[1].location, 'function'):set('parameters', _3[1]):set('body', _3[2])) :] + | $namelist ('=' $explist [: _2 :])? + [: node(_1.location, 'localassign'):set('left', _1):set('right', _2[1]) :] + ) [: _2 :] + +%resolve stat'group#2 Name {: function(self, tokens) + if tostring(tokens[2]) == 'EQ' then + return self:go 'forcounter' + else + return self:go 'foreach' + end +end :} + +// just return the explist +retstat := 'return' $explist? ';'? [: #_2 == 0 and node(_1.location, 'return') or node(_1.location, 'return'):set('explist', _2[1]) :] + +label := '::' Name '::' [: node(_1.location, 'label'):set('name', from(_2)) :] + +funcname := Name ('.' Name [: from(_2) :])* (':' Name [: from(_2) :])? {: + function(name, names, colon) + local tree = node(name.location, 'funcnames') + colon = colon[1] + tree:list(from(name)) + tree:list(unpack(names)) + if colon then + tree.colon = colon + end + return tree + end +:} + +namelist := Name (',' Name [: from(_2) :])* {: + function(name, names) + local tree = node(name.location, 'names') + tree:list(from(name)) + tree:list(unpack(names)) + return tree + end +:} + +explist := $exp (',' $exp [: _2 :])* {: + function(exp, explist) + local tree = node(exp.location, 'explist') + tree:list(exp) + tree:list(unpack(explist)) + return tree + end +:} + +%code {: +-- this will either reduce to an index, a call, a name, or a grouped expression +-- // Shape of a suffix: {index = shape(from(name)), args = shape(args)} +-- suffix := '.' Name {\: suffix_dot :\} // field +-- | '[' $exp ']' {\: suffix_bracket :\} // field +-- | ':' Name $args {\: suffix_colon :\} // arg +-- | $args {\: suffix_args :\} // arg +-- primaryexp := Name [: from(_1) :] +-- | '(' $exp ')' [: _2 :] +-- primary_suffix := $primaryexp $suffix* +-- Plan: recurse on the structural inductive properties of a list +local function handle_primary_suffix(left, suffixlist) + if #suffixlist == 0 then + return left + end + -- pop the first element out of suffixlist + local suffix = suffixlist[1] + local rest = utils.sublist(suffixlist, 2) + if suffix.index and not suffix.args then + return handle_primary_suffix( + node(left.location, 'index'):set('left', left):set('right', suffix.index), + rest) + elseif suffix.args and not suffix.index then + return handle_primary_suffix( + node(left.location, 'call'):set('target', left):set('args', suffix.args), + rest) + elseif suffix.args and suffix.index then + local index = node(left.location, 'index'):set('left', left):set('right', suffix.index) + return handle_primary_suffix( + node(index.location, 'selfcall'):set('target', index):set('args', suffix.args), + rest) + end + error 'unimplemented' +end +:} + +%code {: + local function suffix_dot(_, name) + return { + index = from(name, "string"), + args = nil, + } + end + local function suffix_bracket(_, exp) + return { + index = exp, + args = nil, + } + end + local function suffix_colon(_, name, args) + return { + index = from(name, "string"), + args = args, + } + end + local function suffix_args(args) + return { + index = nil, + args = args, + } + end +:} + +suffix := '.' Name {: suffix_dot :} | '[' $exp ']' {: suffix_bracket :} | ':' Name $args {: suffix_colon :} | $args {: suffix_args :} +primaryexp := Name [: from(_1) :] | '(' $exp ')' [: _2 :] + +// %eps is func, the other 2 are assignments +// let's rule out the possibility of f() = x + +assignment_or_call := + $primaryexp ( + '.' Name {: suffix_dot :} + | '[' $exp ']' {: suffix_bracket :} + | ':' Name $args {: suffix_colon :} + | $args {: suffix_args :})* $assignment? + {: + function(left, suffixes, assignment_opt) + local assignment = #assignment_opt == 0 and {} or assignment_opt[1] + -- let's reduce to call or assignment + if (#suffixes == 0 or not suffixes[#suffixes].args) and #assignment == 0 then + error('Parser error: you can only specify a call or an assignment here') + end + if #suffixes ~= 0 and #assignment ~= 0 and suffixes[#suffixes].args then + error 'Parser error: you cannot assign to a call' + end + + if #assignment ~= 0 then + -- assignment case + -- assignment is a list of subsequent assignments + local ps = handle_primary_suffix(left, suffixes) + assert(ps.kind == 'index' or ps.kind == 'name') + local lvals, rvals = unpack(assignment) + table.insert(lvals, 1, ps) + lvals = node(ps.location, 'lvalues'):list(unpack(lvals)) + local tree = node(ps.location, 'assignments') + tree.left = lvals + tree.right = rvals + return tree + else + -- call case + local ps = handle_primary_suffix(left, suffixes) + assert(ps.kind == 'call' or ps.kind == 'selfcall') + return node(ps.location, 'callstmt'):list(ps) + end + end + :} + +assignment := ',' $primaryexp $suffix* $assignment + {: + function(_, _1, _2, _3) + local left, right = unpack(_3) + table.insert(left, 1, handle_primary_suffix(_1, _2)); + return {left, right} + end :} + | '=' $explist [: {{}, _2} :] + +// Hack to get around the fact that one branch of this is always +// "dead" states that would get killed later on anyways +%resolve assignment_or_call'star#1 '(' {: function(self, tokens) + -- always reduce to call + return self:go '#list' +end :} + +// prefixexp := $var | $functioncall | '(' $exp ')' +// functioncall := $prefixexp ($args | ':' Name $args) +// varlist := $var (',' $var)* +// var := Name | $prefixexp ('[' $exp ']' | '.' Name) + +args := '(' $explist? ')' [: (#_2 == 0 and node(_1.location, 'args')) or node(_1.location, 'args'):list(unpack(_2[1])) :] + | $tableconstructor [: node(_1.location, 'args'):list(_1) :] + | String [: node(_1.location, 'args'):list(from(_1, 'string')) :] + +functiondef := 'function' $funcbody [: node(_1.location, 'function'):set('parameters', _2[1]):set('body', _2[2]) :] + +funcbody := '(' $parlist? ')' $block 'end' + {: + function(_1, parameters_opt, _, block) + local parameters = parameters_opt[1] or node(_1.location, 'parameters') + return {parameters, block} + end + :} + +// resolve conflict for parlist := (Name ',')+ Name; based on tokens[2] being , or not +%code {: + local function parlist_namelist(namelist, trail) + local parameters = node(namelist[1] and namelist[1].location or trail.location, 'parameters') + for name in utils.loop(namelist) do + parameters:list(from(name)) + end + if trail[1] == 'DOTS' then + rawset(parameters, 'vararg', from(trail)) + else + parameters:list(from(trail)) + end + return parameters + end +:} + +parlist := ( Name ',' [: _1 :])* (Name [: _1 :] | '...' [: _1 :]) + {: parlist_namelist :} + +%resolve parlist'star#1 Name {: function(self, tokens) + if tostring(tokens[2]) == 'COMMA' then + return self:go '#list' + else + return self:go '' + end +end :} + +// TODO: ensure that only the last $field has an optional $fieldsep +tableconstructor := '{' $field* '}' + [: node(_1.location, 'table'):list(unpack(_2)) :] + +// Conflict resolvers, since the approximation of Lua we're parsing is not LL(1) (but is LL(2)) +field := '[' $exp ']' '=' $exp $fieldsep? [: node(_1.location, 'element'):set('index', _2):set('value', _5) :] + | Name '=' $exp $fieldsep? [: node(_1.location, 'element'):set('index', from(_1, 'string')):set('value', _3) :] + | $exp $fieldsep? [: node(_1.location, 'element'):set('value', _1) :] +%resolve field Name {: function(self, tokens) + if tostring(tokens[2]) == 'EQ' then + return self:go 'assign' + else + return self:go 'exp' + end +end :} + +fieldsep [: {} :] := ',' | ';' + +level1 [: from(_1, 'op') :] := 'or' +level2 [: from(_1, 'op') :] := 'and' +level3 [: from(_1, 'op') :] := '<' | '>' | '<=' | '>=' | '~=' | '==' +level4 [: from(_1, 'op') :] := '..' +level5 [: from(_1, 'op') :] := '+' | '-' +level6 [: from(_1, 'op') :] := '*' | '/' | '%' +level7 [: from(_1, 'op') :] := 'not' | '#' | '-' // unary +level8 [: from(_1, 'op') :] := '^' + +exp_stop := + 'nil' [: node(_1.location, 'nil') :] + | 'false' [: node(_1.location, 'false') :] + | 'true' [: node(_1.location, 'true') :] + | Number [: from(_1, 'number') :] + | String [: from(_1, 'string') :] + | '...' [: node(_1.location, 'vararg') :] + | $functiondef [: _1 :] + | $primaryexp $suffix* {: handle_primary_suffix :} + | $tableconstructor [: _1 :] + +%code {: local function goto_list(self) return self:go '#list' end :} +%resolve exp_stop'star#1 '[' {: goto_list :} +%resolve exp_stop'star#1 String {: goto_list :} +%resolve exp_stop'star#1 '{' {: goto_list :} +%resolve exp_stop'star#1 '(' {: goto_list :} + +%code {: + local make_binop = function(left, rest) + if #rest == 0 then + return left + end + assert(#rest == 2 and rest[1].kind == 'binop' and not rest[1].left) + local hole, binop = unpack(rest) + hole.left = left + return binop + end + + local start_binop = function(bop, right, rest) + -- In ocaml style pseduocode + -- let start (+) e_r rest = + -- let o = hole() in + -- match rest with + -- | None -> o, (o (+) e_r) + -- | Some(., e_l' (*) e_r' as e') -> + -- let e'' = fill(e', ., (o (+) e_r) in + -- o, e'' + -- Invariant: expn' is always "holed" and expn is always whole + -- Invariant: immediately holed expn' is always holey on the left + local hole = node(bop.location, 'binop') + hole.operator = bop + hole.right = right + -- implicit: hole.left is the hole + if #rest == 0 then + return {hole, hole} + end + assert(#rest == 2 and rest[1].kind == 'binop' and not rest[1].left) + rest[1].left = hole + return {hole, rest[2]} + end + + local function start_right_binop(bop, right) + -- invariant: right is whole, return is immediately holed + local hole = node(bop.location, 'binop') + hole.operator = bop + hole.right = right + return hole + end + + local function make_right_binop(left, binop_opt) + local binop = binop_opt[1] + if not binop then return left end + assert(binop.kind == 'binop' and not binop.left) + binop.left = left + return binop + end +:} + + +exp := $exp2 $exp' {: make_binop :} // left +exp' := $level1 $exp2 $exp' {: start_binop :} | %eps [: {} :] + +exp2 := $exp3 $exp2' {: make_binop :} // left +exp2' := $level2 $exp3 $exp2' {: start_binop :} | %eps [: {} :] + +exp3 := $exp4 $exp3' {: make_binop :} // left +exp3' := $level3 $exp4 $exp3' {: start_binop :} | %eps [: {} :] + +exp4 := $exp5 ($level4 $exp4 {: start_right_binop :})? {: make_right_binop :} // right + +exp5 := $exp6 $exp5' {: make_binop :} // left +exp5' := $level5 $exp6 $exp5' {: start_binop :} | %eps [: {} :] + +exp6 := $exp7 $exp6' {: make_binop :} // left +exp6' := $level6 $exp7 $exp6' {: start_binop :} | %eps [: {} :] + +exp7 := $level7 $exp7 [: node(_1.location, 'unop'):set('operator', _1):set('operand', _2) :] | $exp8 [: _1 :] // unary + +exp8 := $exp_stop ($level8 $exp8 {: start_right_binop :})? {: make_right_binop :} // right + +%resolve exp5' '-' {: function(self, tokens) + return self:go 'minus' +end :} + +binop [: from(_1, 'op') :] := '+' | '-' | '*' | '/' | '^' | '%' | '..' | + '<' | '<=' | '>' | '>=' | '==' | '~=' | + 'and' | 'or' + unop [: from(_1, 'op') :] := '-' | 'not' | '#' \ No newline at end of file diff --git a/lua/parser.lua b/luainlua/lua/parser.lua similarity index 68% rename from lua/parser.lua rename to luainlua/lua/parser.lua index bccc649..37a99dc 100644 --- a/lua/parser.lua +++ b/luainlua/lua/parser.lua @@ -1,230 +1,327 @@ -local utils = require 'common.utils' -local tokenizer = require 'lua.tokenizer' -local ll1 = require 'll1.ll1' +local utils = require 'luainlua.common.utils' +local tokenizer = require 'luainlua.lua.tokenizer' +local ll1 = require 'luainlua.ll1.ll1' local __GRAMMAR__ = {} -__GRAMMAR__.grammar = {['exp6'] = {[1] = {[1] = '$exp7', [2] = '$exp6\''}, ['variable'] = '$exp6'}, ['stat\'group#1\'group#1'] = {[1] = {[1] = 'EQ', [2] = '$explist'}, ['variable'] = '$stat\'group#1\'group#1'}, ['args\'maybe#1'] = {[1] = {[1] = '$explist', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$args\'maybe#1'}, ['exp\''] = {[1] = {[1] = ''}, [2] = {[1] = '$level1', [2] = '$exp2', [3] = '$exp\''}, ['variable'] = '$exp\''}, ['level6'] = {[1] = {[1] = 'MOD'}, [2] = {[1] = 'DIV'}, [3] = {[1] = 'MUL'}, ['variable'] = '$level6'}, ['block\'maybe#1'] = {[1] = {[1] = '$retstat', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$block\'maybe#1'}, ['level1'] = {[1] = {[1] = 'OR'}, ['variable'] = '$level1'}, ['exp8\'group#1'] = {[1] = {[1] = '$level8', [2] = '$exp8'}, ['variable'] = '$exp8\'group#1'}, ['functiondef'] = {[1] = {[1] = 'FUNCTION', [2] = '$funcbody'}, ['variable'] = '$functiondef'}, ['tableconstructor\'star#1'] = {[1] = {[1] = '$field', [2] = '$tableconstructor\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$tableconstructor\'star#1'}, ['explist\'group#1'] = {[1] = {[1] = 'COMMA', [2] = '$exp'}, ['variable'] = '$explist\'group#1'}, ['binop'] = {[1] = {[1] = 'OR'}, [2] = {[1] = 'AND'}, [3] = {[1] = 'NOTEQ'}, [4] = {[1] = 'EQEQ'}, [5] = {[1] = 'GE'}, [6] = {[1] = 'GT'}, [7] = {[1] = 'LE'}, [8] = {[1] = 'LT'}, [9] = {[1] = 'CONCAT'}, [10] = {[1] = 'MOD'}, [11] = {[1] = 'POW'}, [12] = {[1] = 'DIV'}, [13] = {[1] = 'MUL'}, [14] = {[1] = 'MIN'}, [15] = {[1] = 'PLUS'}, ['variable'] = '$binop'}, ['stat\'maybe#1'] = {[1] = {[1] = '$stat\'group#4', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$stat\'maybe#1'}, ['unop'] = {[1] = {[1] = 'HASH'}, [2] = {[1] = 'NOT'}, [3] = {[1] = 'MIN'}, ['variable'] = '$unop'}, ['exp'] = {[1] = {[1] = '$exp2', [2] = '$exp\''}, ['variable'] = '$exp'}, ['stat\'star#1'] = {[1] = {[1] = '$stat\'group#3', [2] = '$stat\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$stat\'star#1'}, ['level8'] = {[1] = {[1] = 'POW'}, ['variable'] = '$level8'}, ['funcname\'maybe#1'] = {[1] = {[1] = '$funcname\'group#2', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$funcname\'maybe#1'}, ['funcname\'group#1'] = {[1] = {[1] = 'PERIOD', [2] = 'Name'}, ['variable'] = '$funcname\'group#1'}, ['exp8'] = {[1] = {[1] = '$exp_stop', [2] = '$exp8\'maybe#1'}, ['variable'] = '$exp8'}, ['funcname\'star#1'] = {[1] = {[1] = '$funcname\'group#1', [2] = '$funcname\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$funcname\'star#1'}, ['assignment'] = {[1] = {[1] = 'EQ', [2] = '$explist'}, [2] = {[1] = 'COMMA', [2] = '$primaryexp', [3] = '$assignment\'star#1', [4] = '$assignment'}, ['variable'] = '$assignment'}, ['assignment_or_call\'group#1'] = {[1] = {[1] = '$args', ['tag'] = 'call'}, [2] = {[1] = 'COLON', [2] = 'Name', [3] = '$args'}, [3] = {[1] = 'LBRACK', [2] = '$exp', [3] = 'RBRACK'}, [4] = {[1] = 'PERIOD', [2] = 'Name'}, ['variable'] = '$assignment_or_call\'group#1'}, ['fieldsep'] = {[1] = {[1] = 'SEMICOLON'}, [2] = {[1] = 'COMMA'}, ['variable'] = '$fieldsep'}, ['parlist\'group#1'] = {[1] = {[1] = 'Name', [2] = 'COMMA', ['tag'] = 'namelist'}, ['variable'] = '$parlist\'group#1'}, ['exp6\''] = {[1] = {[1] = ''}, [2] = {[1] = '$level6', [2] = '$exp7', [3] = '$exp6\''}, ['variable'] = '$exp6\''}, ['namelist\'star#1'] = {[1] = {[1] = '$namelist\'group#1', [2] = '$namelist\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$namelist\'star#1'}, ['assignment_or_call'] = {[1] = {[1] = '$primaryexp', [2] = '$assignment_or_call\'star#1', [3] = '$assignment_or_call\'maybe#1'}, ['variable'] = '$assignment_or_call'}, ['exp_stop'] = {[1] = {[1] = '$tableconstructor'}, [2] = {[1] = '$primaryexp', [2] = '$exp_stop\'star#1'}, [3] = {[1] = '$functiondef'}, [4] = {[1] = 'DOTS'}, [5] = {[1] = 'String'}, [6] = {[1] = 'Number'}, [7] = {[1] = 'TRUE'}, [8] = {[1] = 'FALSE'}, [9] = {[1] = 'NIL'}, ['variable'] = '$exp_stop'}, ['field\'maybe#3'] = {[1] = {[1] = '$fieldsep', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$field\'maybe#3'}, ['level5'] = {[1] = {[1] = 'MIN'}, [2] = {[1] = 'PLUS'}, ['variable'] = '$level5'}, ['root'] = {[1] = {[1] = '$block'}, ['variable'] = '$root'}, ['retstat'] = {[1] = {[1] = 'RETURN', [2] = '$retstat\'maybe#1', [3] = '$retstat\'maybe#2'}, ['variable'] = '$retstat'}, ['exp4'] = {[1] = {[1] = '$exp5', [2] = '$exp4\'maybe#1'}, ['variable'] = '$exp4'}, ['exp5'] = {[1] = {[1] = '$exp6', [2] = '$exp5\''}, ['variable'] = '$exp5'}, ['field\'maybe#1'] = {[1] = {[1] = '$fieldsep', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$field\'maybe#1'}, ['exp5\''] = {[1] = {[1] = ''}, [2] = {[1] = '$level5', [2] = '$exp6', [3] = '$exp5\'', ['tag'] = 'minus'}, ['variable'] = '$exp5\''}, ['parlist\'star#1'] = {[1] = {[1] = '$parlist\'group#1', [2] = '$parlist\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$parlist\'star#1'}, ['stat\'group#4'] = {[1] = {[1] = 'ELSE', [2] = '$block'}, ['variable'] = '$stat\'group#4'}, ['tableconstructor'] = {[1] = {[1] = 'LBRACE', [2] = '$tableconstructor\'star#1', [3] = 'RBRACE'}, ['variable'] = '$tableconstructor'}, ['stat\'group#2'] = {[1] = {[1] = '$namelist', [2] = 'IN', [3] = '$explist', [4] = 'DO', [5] = '$block', [6] = 'END', ['tag'] = 'foreach'}, [2] = {[1] = 'Name', [2] = 'EQ', [3] = '$exp', [4] = 'COMMA', [5] = '$exp', [6] = '$stat\'group#2\'maybe#1', [7] = 'DO', [8] = '$block', [9] = 'END', ['tag'] = 'forcounter'}, ['variable'] = '$stat\'group#2'}, ['level7'] = {[1] = {[1] = 'MIN'}, [2] = {[1] = 'HASH'}, [3] = {[1] = 'NOT'}, ['variable'] = '$level7'}, ['level4'] = {[1] = {[1] = 'CONCAT'}, ['variable'] = '$level4'}, ['funcname\'group#2'] = {[1] = {[1] = 'COLON', [2] = 'Name'}, ['variable'] = '$funcname\'group#2'}, ['stat\'group#3'] = {[1] = {[1] = 'ELSEIF', [2] = '$exp', [3] = 'THEN', [4] = '$block'}, ['variable'] = '$stat\'group#3'}, ['namelist\'group#1'] = {[1] = {[1] = 'COMMA', [2] = 'Name'}, ['variable'] = '$namelist\'group#1'}, ['args'] = {[1] = {[1] = 'String'}, [2] = {[1] = '$tableconstructor'}, [3] = {[1] = 'LPAREN', [2] = '$args\'maybe#1', [3] = 'RPAREN'}, ['variable'] = '$args'}, ['stat\'group#2\'group#1'] = {[1] = {[1] = 'COMMA', [2] = '$exp'}, ['variable'] = '$stat\'group#2\'group#1'}, ['retstat\'maybe#1'] = {[1] = {[1] = '$explist', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$retstat\'maybe#1'}, ['exp4\'maybe#1'] = {[1] = {[1] = '$exp4\'group#1', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$exp4\'maybe#1'}, ['exp4\'group#1'] = {[1] = {[1] = '$level4', [2] = '$exp4'}, ['variable'] = '$exp4\'group#1'}, ['funcbody'] = {[1] = {[1] = 'LPAREN', [2] = '$funcbody\'maybe#1', [3] = 'RPAREN', [4] = '$block', [5] = 'END'}, ['variable'] = '$funcbody'}, ['exp2\''] = {[1] = {[1] = ''}, [2] = {[1] = '$level2', [2] = '$exp3', [3] = '$exp2\''}, ['variable'] = '$exp2\''}, ['block'] = {[1] = {[1] = '$block\'star#1', [2] = '$block\'maybe#1'}, ['variable'] = '$block'}, ['exp3'] = {[1] = {[1] = '$exp4', [2] = '$exp3\''}, ['variable'] = '$exp3'}, ['stat\'group#1'] = {[1] = {[1] = '$namelist', [2] = '$stat\'group#1\'maybe#1'}, [2] = {[1] = 'FUNCTION', [2] = 'Name', [3] = '$funcbody'}, ['variable'] = '$stat\'group#1'}, ['level3'] = {[1] = {[1] = 'EQEQ'}, [2] = {[1] = 'NOTEQ'}, [3] = {[1] = 'GE'}, [4] = {[1] = 'LE'}, [5] = {[1] = 'GT'}, [6] = {[1] = 'LT'}, ['variable'] = '$level3'}, ['level2'] = {[1] = {[1] = 'AND'}, ['variable'] = '$level2'}, ['field'] = {[1] = {[1] = '$exp', [2] = '$field\'maybe#1', ['tag'] = 'exp'}, [2] = {[1] = 'Name', [2] = 'EQ', [3] = '$exp', [4] = '$field\'maybe#2', ['tag'] = 'assign'}, [3] = {[1] = 'LBRACK', [2] = '$exp', [3] = 'RBRACK', [4] = 'EQ', [5] = '$exp', [6] = '$field\'maybe#3'}, ['variable'] = '$field'}, ['parlist\'group#2'] = {[1] = {[1] = 'DOTS'}, [2] = {[1] = 'Name'}, ['variable'] = '$parlist\'group#2'}, ['primaryexp'] = {[1] = {[1] = 'LPAREN', [2] = '$exp', [3] = 'RPAREN'}, [2] = {[1] = 'Name'}, ['variable'] = '$primaryexp'}, ['suffix'] = {[1] = {[1] = '$args'}, [2] = {[1] = 'COLON', [2] = 'Name', [3] = '$args'}, [3] = {[1] = 'LBRACK', [2] = '$exp', [3] = 'RBRACK'}, [4] = {[1] = 'PERIOD', [2] = 'Name'}, ['variable'] = '$suffix'}, ['parlist'] = {[1] = {[1] = '$parlist\'star#1', [2] = '$parlist\'group#2'}, ['variable'] = '$parlist'}, ['funcbody\'maybe#1'] = {[1] = {[1] = '$parlist', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$funcbody\'maybe#1'}, ['explist'] = {[1] = {[1] = '$exp', [2] = '$explist\'star#1'}, ['variable'] = '$explist'}, ['exp_stop\'star#1'] = {[1] = {[1] = '$suffix', [2] = '$exp_stop\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$exp_stop\'star#1'}, ['assignment_or_call\'maybe#1'] = {[1] = {[1] = '$assignment', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$assignment_or_call\'maybe#1'}, ['funcname'] = {[1] = {[1] = 'Name', [2] = '$funcname\'star#1', [3] = '$funcname\'maybe#1'}, ['variable'] = '$funcname'}, ['field\'maybe#2'] = {[1] = {[1] = '$fieldsep', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$field\'maybe#2'}, ['exp2'] = {[1] = {[1] = '$exp3', [2] = '$exp2\''}, ['variable'] = '$exp2'}, ['stat\'group#1\'maybe#1'] = {[1] = {[1] = '$stat\'group#1\'group#1', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$stat\'group#1\'maybe#1'}, ['block\'star#1'] = {[1] = {[1] = '$stat', [2] = '$block\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$block\'star#1'}, ['namelist'] = {[1] = {[1] = 'Name', [2] = '$namelist\'star#1'}, ['variable'] = '$namelist'}, ['retstat\'maybe#2'] = {[1] = {[1] = 'SEMICOLON', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$retstat\'maybe#2'}, ['stat\'group#2\'maybe#1'] = {[1] = {[1] = '$stat\'group#2\'group#1', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$stat\'group#2\'maybe#1'}, ['exp3\''] = {[1] = {[1] = ''}, [2] = {[1] = '$level3', [2] = '$exp4', [3] = '$exp3\''}, ['variable'] = '$exp3\''}, ['exp8\'maybe#1'] = {[1] = {[1] = '$exp8\'group#1', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$exp8\'maybe#1'}, ['label'] = {[1] = {[1] = 'QUAD', [2] = 'Name', [3] = 'QUAD'}, ['variable'] = '$label'}, ['assignment_or_call\'star#1'] = {[1] = {[1] = '$assignment_or_call\'group#1', [2] = '$assignment_or_call\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$assignment_or_call\'star#1'}, ['explist\'star#1'] = {[1] = {[1] = '$explist\'group#1', [2] = '$explist\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$explist\'star#1'}, ['exp7'] = {[1] = {[1] = '$exp8'}, [2] = {[1] = '$level7', [2] = '$exp7'}, ['variable'] = '$exp7'}, ['stat'] = {[1] = {[1] = 'LOCAL', [2] = '$stat\'group#1'}, [2] = {[1] = 'FUNCTION', [2] = '$funcname', [3] = '$funcbody'}, [3] = {[1] = 'FOR', [2] = '$stat\'group#2'}, [4] = {[1] = 'IF', [2] = '$exp', [3] = 'THEN', [4] = '$block', [5] = '$stat\'star#1', [6] = '$stat\'maybe#1', [7] = 'END'}, [5] = {[1] = 'REPEAT', [2] = '$block', [3] = 'UNTIL', [4] = '$exp'}, [6] = {[1] = 'WHILE', [2] = '$exp', [3] = 'DO', [4] = '$block', [5] = 'END'}, [7] = {[1] = 'DO', [2] = '$block', [3] = 'END'}, [8] = {[1] = 'GOTO', [2] = 'Name'}, [9] = {[1] = 'BREAK'}, [10] = {[1] = '$label'}, [11] = {[1] = '$assignment_or_call'}, [12] = {[1] = 'SEMICOLON'}, ['variable'] = '$stat'}, ['assignment\'star#1'] = {[1] = {[1] = '$suffix', [2] = '$assignment\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$assignment\'star#1'}} -__GRAMMAR__.grammar[1] = 'lua/parser.table' -local ast = {} -function ast:__newindex(key, val) - if type(key) ~= 'string' then - return rawset(self, key, val) - end - assert(not self[key], 'Fields passed to a node should be initialized only once.') - rawset(self, key, val) - -- other stuff - if val.kind then - table.insert(self, val) - assert(not val.parent, 'Fields passed to a node should be unowned.') - rawset(val, 'parent', self) - end -end - -function ast:set(key, val) - if not key or not val then return self end - if not val.kind then - print(debug.traceback()) - end - assert(val.kind, 'Set should only be called on child trees.') - self[key] = val - return self -end - -function ast:list(...) - local list = {...} - for child in utils.loop(list) do - if not child.kind then - print(debug.traceback()) - end - assert(child.kind, 'List should only be called on child trees.') - table.insert(self, child) - assert(not child.parent or child.parent.kind == 'explist', 'Children passed to list(...) should be unowned.') - rawset(child, 'parent', self) - end - return self -end - -function ast:children() - return utils.loop(self) -end - -local function node(location, kind) - return setmetatable({kind = kind, location = location}, {__index = ast, __newindex = ast.__newindex}) -end - -local function from(token, kind) - if not kind then - if tostring(token) == 'Name' then - kind = 'name' - else - kind = 'leaf' - end - end - local leaf = node(token.location, kind) - leaf.token = token - leaf.value = token[2] - return leaf +__GRAMMAR__.grammar = {['funcbody'] = {[1] = {[1] = 'LPAREN', [2] = '$funcbody\'maybe#1', [3] = 'RPAREN', [4] = '$block', [5] = 'END'}, ['variable'] = '$funcbody'}, ['exp_stop'] = {[1] = {[1] = '$tableconstructor'}, [2] = {[1] = '$primaryexp', [2] = '$exp_stop\'star#1'}, [3] = {[1] = '$functiondef'}, [4] = {[1] = 'DOTS'}, [5] = {[1] = 'String'}, [6] = {[1] = 'Number'}, [7] = {[1] = 'TRUE'}, [8] = {[1] = 'FALSE'}, [9] = {[1] = 'NIL'}, ['variable'] = '$exp_stop'}, ['exp8\'maybe#1'] = {[1] = {[1] = '$exp8\'group#1', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$exp8\'maybe#1'}, ['exp5'] = {[1] = {[1] = '$exp6', [2] = '$exp5\''}, ['variable'] = '$exp5'}, ['block\'star#1'] = {[1] = {[1] = '$stat', [2] = '$block\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$block\'star#1'}, ['assignment'] = {[1] = {[1] = 'EQ', [2] = '$explist'}, [2] = {[1] = 'COMMA', [2] = '$primaryexp', [3] = '$assignment\'star#1', [4] = '$assignment'}, ['variable'] = '$assignment'}, ['assignment_or_call'] = {[1] = {[1] = '$primaryexp', [2] = '$assignment_or_call\'star#1', [3] = '$assignment_or_call\'maybe#1'}, ['variable'] = '$assignment_or_call'}, ['parlist'] = {[1] = {[1] = '$parlist\'star#1', [2] = '$parlist\'group#2'}, ['variable'] = '$parlist'}, ['tableconstructor'] = {[1] = {[1] = 'LBRACE', [2] = '$tableconstructor\'star#1', [3] = 'RBRACE'}, ['variable'] = '$tableconstructor'}, ['exp3'] = {[1] = {[1] = '$exp4', [2] = '$exp3\''}, ['variable'] = '$exp3'}, ['funcname\'group#1'] = {[1] = {[1] = 'PERIOD', [2] = 'Name'}, ['variable'] = '$funcname\'group#1'}, ['exp7'] = {[1] = {[1] = '$exp8'}, [2] = {[1] = '$level7', [2] = '$exp7'}, ['variable'] = '$exp7'}, ['funcname\'group#2'] = {[1] = {[1] = 'COLON', [2] = 'Name'}, ['variable'] = '$funcname\'group#2'}, ['level7'] = {[1] = {[1] = 'MIN'}, [2] = {[1] = 'HASH'}, [3] = {[1] = 'NOT'}, ['variable'] = '$level7'}, ['unop'] = {[1] = {[1] = 'HASH'}, [2] = {[1] = 'NOT'}, [3] = {[1] = 'MIN'}, ['variable'] = '$unop'}, ['funcbody\'maybe#1'] = {[1] = {[1] = '$parlist', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$funcbody\'maybe#1'}, ['assignment\'star#1'] = {[1] = {[1] = '$suffix', [2] = '$assignment\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$assignment\'star#1'}, ['retstat\'maybe#1'] = {[1] = {[1] = '$explist', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$retstat\'maybe#1'}, ['level3'] = {[1] = {[1] = 'EQEQ'}, [2] = {[1] = 'NOTEQ'}, [3] = {[1] = 'GE'}, [4] = {[1] = 'LE'}, [5] = {[1] = 'GT'}, [6] = {[1] = 'LT'}, ['variable'] = '$level3'}, ['binop'] = {[1] = {[1] = 'OR'}, [2] = {[1] = 'AND'}, [3] = {[1] = 'NOTEQ'}, [4] = {[1] = 'EQEQ'}, [5] = {[1] = 'GE'}, [6] = {[1] = 'GT'}, [7] = {[1] = 'LE'}, [8] = {[1] = 'LT'}, [9] = {[1] = 'CONCAT'}, [10] = {[1] = 'MOD'}, [11] = {[1] = 'POW'}, [12] = {[1] = 'DIV'}, [13] = {[1] = 'MUL'}, [14] = {[1] = 'MIN'}, [15] = {[1] = 'PLUS'}, ['variable'] = '$binop'}, ['block'] = {[1] = {[1] = '$block\'star#1', [2] = '$block\'maybe#1'}, ['variable'] = '$block'}, ['stat\'group#1\'maybe#1'] = {[1] = {[1] = '$stat\'group#1\'group#1', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$stat\'group#1\'maybe#1'}, ['tableconstructor\'star#1'] = {[1] = {[1] = '$field', [2] = '$tableconstructor\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$tableconstructor\'star#1'}, ['field'] = {[1] = {[1] = '$exp', [2] = '$field\'maybe#1', ['tag'] = 'exp'}, [2] = {[1] = 'Name', [2] = 'EQ', [3] = '$exp', [4] = '$field\'maybe#2', ['tag'] = 'assign'}, [3] = {[1] = 'LBRACK', [2] = '$exp', [3] = 'RBRACK', [4] = 'EQ', [5] = '$exp', [6] = '$field\'maybe#3'}, ['variable'] = '$field'}, ['functiondef'] = {[1] = {[1] = 'FUNCTION', [2] = '$funcbody'}, ['variable'] = '$functiondef'}, ['exp4\'maybe#1'] = {[1] = {[1] = '$exp4\'group#1', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$exp4\'maybe#1'}, ['funcname'] = {[1] = {[1] = 'Name', [2] = '$funcname\'star#1', [3] = '$funcname\'maybe#1'}, ['variable'] = '$funcname'}, ['exp2\''] = {[1] = {[1] = ''}, [2] = {[1] = '$level2', [2] = '$exp3', [3] = '$exp2\''}, ['variable'] = '$exp2\''}, ['funcname\'star#1'] = {[1] = {[1] = '$funcname\'group#1', [2] = '$funcname\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$funcname\'star#1'}, ['stat\'group#4'] = {[1] = {[1] = 'ELSE', [2] = '$block'}, ['variable'] = '$stat\'group#4'}, ['exp4\'group#1'] = {[1] = {[1] = '$level4', [2] = '$exp4'}, ['variable'] = '$exp4\'group#1'}, ['retstat'] = {[1] = {[1] = 'RETURN', [2] = '$retstat\'maybe#1', [3] = '$retstat\'maybe#2'}, ['variable'] = '$retstat'}, ['exp6\''] = {[1] = {[1] = ''}, [2] = {[1] = '$level6', [2] = '$exp7', [3] = '$exp6\''}, ['variable'] = '$exp6\''}, ['root'] = {[1] = {[1] = '$block'}, ['variable'] = '$root'}, ['block\'maybe#1'] = {[1] = {[1] = '$retstat', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$block\'maybe#1'}, ['level1'] = {[1] = {[1] = 'OR'}, ['variable'] = '$level1'}, ['exp'] = {[1] = {[1] = '$exp2', [2] = '$exp\''}, ['variable'] = '$exp'}, ['exp3\''] = {[1] = {[1] = ''}, [2] = {[1] = '$level3', [2] = '$exp4', [3] = '$exp3\''}, ['variable'] = '$exp3\''}, ['explist\'star#1'] = {[1] = {[1] = '$explist\'group#1', [2] = '$explist\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$explist\'star#1'}, ['label'] = {[1] = {[1] = 'QUAD', [2] = 'Name', [3] = 'QUAD'}, ['variable'] = '$label'}, ['funcname\'maybe#1'] = {[1] = {[1] = '$funcname\'group#2', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$funcname\'maybe#1'}, ['level8'] = {[1] = {[1] = 'POW'}, ['variable'] = '$level8'}, ['assignment_or_call\'maybe#1'] = {[1] = {[1] = '$assignment', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$assignment_or_call\'maybe#1'}, ['level6'] = {[1] = {[1] = 'MOD'}, [2] = {[1] = 'DIV'}, [3] = {[1] = 'MUL'}, ['variable'] = '$level6'}, ['level5'] = {[1] = {[1] = 'MIN'}, [2] = {[1] = 'PLUS'}, ['variable'] = '$level5'}, ['exp\''] = {[1] = {[1] = ''}, [2] = {[1] = '$level1', [2] = '$exp2', [3] = '$exp\''}, ['variable'] = '$exp\''}, ['stat\'group#2\'maybe#1'] = {[1] = {[1] = '$stat\'group#2\'group#1', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$stat\'group#2\'maybe#1'}, ['stat\'group#1'] = {[1] = {[1] = '$namelist', [2] = '$stat\'group#1\'maybe#1'}, [2] = {[1] = 'FUNCTION', [2] = 'Name', [3] = '$funcbody'}, ['variable'] = '$stat\'group#1'}, ['fieldsep'] = {[1] = {[1] = 'SEMICOLON'}, [2] = {[1] = 'COMMA'}, ['variable'] = '$fieldsep'}, ['stat\'maybe#1'] = {[1] = {[1] = '$stat\'group#4', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$stat\'maybe#1'}, ['namelist\'group#1'] = {[1] = {[1] = 'COMMA', [2] = 'Name'}, ['variable'] = '$namelist\'group#1'}, ['stat\'star#1'] = {[1] = {[1] = '$stat\'group#3', [2] = '$stat\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$stat\'star#1'}, ['exp5\''] = {[1] = {[1] = ''}, [2] = {[1] = '$level5', [2] = '$exp6', [3] = '$exp5\'', ['tag'] = 'minus'}, ['variable'] = '$exp5\''}, ['args\'maybe#1'] = {[1] = {[1] = '$explist', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$args\'maybe#1'}, ['stat\'group#3'] = {[1] = {[1] = 'ELSEIF', [2] = '$exp', [3] = 'THEN', [4] = '$block'}, ['variable'] = '$stat\'group#3'}, ['stat\'group#2\'group#1'] = {[1] = {[1] = 'COMMA', [2] = '$exp'}, ['variable'] = '$stat\'group#2\'group#1'}, ['parlist\'group#2'] = {[1] = {[1] = 'DOTS'}, [2] = {[1] = 'Name'}, ['variable'] = '$parlist\'group#2'}, ['stat\'group#2'] = {[1] = {[1] = '$namelist', [2] = 'IN', [3] = '$explist', [4] = 'DO', [5] = '$block', [6] = 'END', ['tag'] = 'foreach'}, [2] = {[1] = 'Name', [2] = 'EQ', [3] = '$exp', [4] = 'COMMA', [5] = '$exp', [6] = '$stat\'group#2\'maybe#1', [7] = 'DO', [8] = '$block', [9] = 'END', ['tag'] = 'forcounter'}, ['variable'] = '$stat\'group#2'}, ['stat\'group#1\'group#1'] = {[1] = {[1] = 'EQ', [2] = '$explist'}, ['variable'] = '$stat\'group#1\'group#1'}, ['retstat\'maybe#2'] = {[1] = {[1] = 'SEMICOLON', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$retstat\'maybe#2'}, ['exp4'] = {[1] = {[1] = '$exp5', [2] = '$exp4\'maybe#1'}, ['variable'] = '$exp4'}, ['field\'maybe#1'] = {[1] = {[1] = '$fieldsep', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$field\'maybe#1'}, ['exp6'] = {[1] = {[1] = '$exp7', [2] = '$exp6\''}, ['variable'] = '$exp6'}, ['exp_stop\'star#1'] = {[1] = {[1] = '$suffix', [2] = '$exp_stop\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$exp_stop\'star#1'}, ['parlist\'group#1'] = {[1] = {[1] = 'Name', [2] = 'COMMA', ['tag'] = 'namelist'}, ['variable'] = '$parlist\'group#1'}, ['field\'maybe#2'] = {[1] = {[1] = '$fieldsep', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$field\'maybe#2'}, ['field\'maybe#3'] = {[1] = {[1] = '$fieldsep', ['tag'] = '#present'}, [2] = {[1] = ''}, ['variable'] = '$field\'maybe#3'}, ['assignment_or_call\'star#1'] = {[1] = {[1] = '$assignment_or_call\'group#1', [2] = '$assignment_or_call\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$assignment_or_call\'star#1'}, ['explist'] = {[1] = {[1] = '$exp', [2] = '$explist\'star#1'}, ['variable'] = '$explist'}, ['namelist'] = {[1] = {[1] = 'Name', [2] = '$namelist\'star#1'}, ['variable'] = '$namelist'}, ['exp8\'group#1'] = {[1] = {[1] = '$level8', [2] = '$exp8'}, ['variable'] = '$exp8\'group#1'}, ['level4'] = {[1] = {[1] = 'CONCAT'}, ['variable'] = '$level4'}, ['primaryexp'] = {[1] = {[1] = 'LPAREN', [2] = '$exp', [3] = 'RPAREN'}, [2] = {[1] = 'Name'}, ['variable'] = '$primaryexp'}, ['level2'] = {[1] = {[1] = 'AND'}, ['variable'] = '$level2'}, ['stat'] = {[1] = {[1] = 'LOCAL', [2] = '$stat\'group#1'}, [2] = {[1] = 'FUNCTION', [2] = '$funcname', [3] = '$funcbody'}, [3] = {[1] = 'FOR', [2] = '$stat\'group#2'}, [4] = {[1] = 'IF', [2] = '$exp', [3] = 'THEN', [4] = '$block', [5] = '$stat\'star#1', [6] = '$stat\'maybe#1', [7] = 'END'}, [5] = {[1] = 'REPEAT', [2] = '$block', [3] = 'UNTIL', [4] = '$exp'}, [6] = {[1] = 'WHILE', [2] = '$exp', [3] = 'DO', [4] = '$block', [5] = 'END'}, [7] = {[1] = 'DO', [2] = '$block', [3] = 'END'}, [8] = {[1] = 'GOTO', [2] = 'Name'}, [9] = {[1] = 'BREAK'}, [10] = {[1] = '$label'}, [11] = {[1] = '$assignment_or_call'}, [12] = {[1] = 'SEMICOLON'}, ['variable'] = '$stat'}, ['assignment_or_call\'group#1'] = {[1] = {[1] = '$args', ['tag'] = 'call'}, [2] = {[1] = 'COLON', [2] = 'Name', [3] = '$args'}, [3] = {[1] = 'LBRACK', [2] = '$exp', [3] = 'RBRACK'}, [4] = {[1] = 'PERIOD', [2] = 'Name'}, ['variable'] = '$assignment_or_call\'group#1'}, ['namelist\'star#1'] = {[1] = {[1] = '$namelist\'group#1', [2] = '$namelist\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$namelist\'star#1'}, ['suffix'] = {[1] = {[1] = '$args'}, [2] = {[1] = 'COLON', [2] = 'Name', [3] = '$args'}, [3] = {[1] = 'LBRACK', [2] = '$exp', [3] = 'RBRACK'}, [4] = {[1] = 'PERIOD', [2] = 'Name'}, ['variable'] = '$suffix'}, ['exp8'] = {[1] = {[1] = '$exp_stop', [2] = '$exp8\'maybe#1'}, ['variable'] = '$exp8'}, ['explist\'group#1'] = {[1] = {[1] = 'COMMA', [2] = '$exp'}, ['variable'] = '$explist\'group#1'}, ['args'] = {[1] = {[1] = 'String'}, [2] = {[1] = '$tableconstructor'}, [3] = {[1] = 'LPAREN', [2] = '$args\'maybe#1', [3] = 'RPAREN'}, ['variable'] = '$args'}, ['parlist\'star#1'] = {[1] = {[1] = '$parlist\'group#1', [2] = '$parlist\'star#1', ['tag'] = '#list'}, [2] = {[1] = ''}, ['variable'] = '$parlist\'star#1'}, ['exp2'] = {[1] = {[1] = '$exp3', [2] = '$exp2\''}, ['variable'] = '$exp2'}} +__GRAMMAR__.grammar[1] = 'luainlua/lua/parser_table.lua' +local ast = {} +function ast:__newindex(key, val) + if type(key) ~= 'string' then + return rawset(self, key, val) + end + assert(not self[key], 'Fields passed to a node should be initialized only once.') + rawset(self, key, val) + -- other stuff + if val.kind then + table.insert(self, val) + assert(not val.parent, 'Fields passed to a node should be unowned.') + rawset(val, 'parent', self) + end +end + +function ast:set(key, val) + if not key or not val then return self end + if not val.kind then + print(debug.traceback()) + end + assert(val.kind, 'Set should only be called on child trees.') + self[key] = val + return self +end + +function ast:list(...) + local list = {...} + for child in utils.loop(list) do + if not child.kind then + print(debug.traceback()) + end + assert(child.kind, 'List should only be called on child trees.') + table.insert(self, child) + assert(not child.parent or child.parent.kind == 'explist', 'Children passed to list(...) should be unowned.') + rawset(child, 'parent', self) + end + return self +end + +function ast:children() + return utils.loop(self) +end + +local function node(location, kind) + return setmetatable({kind = kind, location = location}, {__index = ast, __newindex = ast.__newindex}) +end + +local function from(token, kind) + if not kind then + if tostring(token) == 'Name' then + kind = 'name' + else + kind = 'leaf' + end + end + local leaf = node(token.location, kind) + leaf.token = token + leaf.value = token[2] + return leaf end --- this will either reduce to an index, a call, a name, or a grouped expression --- // Shape of a suffix: {index = shape(from(name)), args = shape(args)} --- suffix := '.' Name {\: suffix_dot :\} // field --- | '[' $exp ']' {\: suffix_bracket :\} // field --- | ':' Name $args {\: suffix_colon :\} // arg --- | $args {\: suffix_args :\} // arg --- primaryexp := Name [: from(_1) :] --- | '(' $exp ')' [: _2 :] --- primary_suffix := $primaryexp $suffix* --- Plan: recurse on the structural inductive properties of a list -local function handle_primary_suffix(left, suffixlist) - if #suffixlist == 0 then - return left - end - -- pop the first element out of suffixlist - local suffix = suffixlist[1] - local rest = utils.sublist(suffixlist, 2) - if suffix.index and not suffix.args then - return handle_primary_suffix( - node(left.location, 'index'):set('left', left):set('right', suffix.index), - rest) - elseif suffix.args and not suffix.index then - return handle_primary_suffix( - node(left.location, 'call'):set('target', left):set('args', suffix.args), - rest) - elseif suffix.args and suffix.index then - local index = node(left.location, 'index'):set('left', left):set('right', suffix.index) - return handle_primary_suffix( - node(index.location, 'selfcall'):set('target', index):set('args', suffix.args), - rest) - end - error 'unimplemented' -end -local function suffix_dot(_, name) - return { - index = from(name, "string"), - args = nil, - } - end - local function suffix_bracket(_, exp) - return { - index = exp, - args = nil, - } +-- this will either reduce to an index, a call, a name, or a grouped expression +-- // Shape of a suffix: {index = shape(from(name)), args = shape(args)} +-- suffix := '.' Name {\: suffix_dot :\} // field +-- | '[' $exp ']' {\: suffix_bracket :\} // field +-- | ':' Name $args {\: suffix_colon :\} // arg +-- | $args {\: suffix_args :\} // arg +-- primaryexp := Name [: from(_1) :] +-- | '(' $exp ')' [: _2 :] +-- primary_suffix := $primaryexp $suffix* +-- Plan: recurse on the structural inductive properties of a list +local function handle_primary_suffix(left, suffixlist) + if #suffixlist == 0 then + return left + end + -- pop the first element out of suffixlist + local suffix = suffixlist[1] + local rest = utils.sublist(suffixlist, 2) + if suffix.index and not suffix.args then + return handle_primary_suffix( + node(left.location, 'index'):set('left', left):set('right', suffix.index), + rest) + elseif suffix.args and not suffix.index then + return handle_primary_suffix( + node(left.location, 'call'):set('target', left):set('args', suffix.args), + rest) + elseif suffix.args and suffix.index then + local index = node(left.location, 'index'):set('left', left):set('right', suffix.index) + return handle_primary_suffix( + node(index.location, 'selfcall'):set('target', index):set('args', suffix.args), + rest) + end + error 'unimplemented' +end +local function suffix_dot(_, name) + return { + index = from(name, "string"), + args = nil, + } + end + local function suffix_bracket(_, exp) + return { + index = exp, + args = nil, + } + end + local function suffix_colon(_, name, args) + return { + index = from(name, "string"), + args = args, + } + end + local function suffix_args(args) + return { + index = nil, + args = args, + } end - local function suffix_colon(_, name, args) - return { - index = from(name, "string"), - args = args, - } - end - local function suffix_args(args) - return { - index = nil, - args = args, - } - end -local function parlist_namelist(namelist, trail) - local parameters = node(namelist[1] and namelist[1].location or trail.location, 'parameters') - for name in utils.loop(namelist) do - parameters:list(from(name)) - end - if trail[1] == 'DOTS' then - rawset(parameters, 'vararg', from(trail)) - else - parameters:list(from(trail)) - end - return parameters +local function parlist_namelist(namelist, trail) + local parameters = node(namelist[1] and namelist[1].location or trail.location, 'parameters') + for name in utils.loop(namelist) do + parameters:list(from(name)) + end + if trail[1] == 'DOTS' then + rawset(parameters, 'vararg', from(trail)) + else + parameters:list(from(trail)) + end + return parameters end local function goto_list(self) return self:go '#list' end -local make_binop = function(left, rest) - if #rest == 0 then - return left - end - assert(#rest == 2 and rest[1].kind == 'binop' and not rest[1].left) - local hole, binop = unpack(rest) - hole.left = left - return binop - end - - local start_binop = function(bop, right, rest) - -- In ocaml style pseduocode - -- let start (+) e_r rest = - -- let o = hole() in - -- match rest with - -- | None -> o, (o (+) e_r) - -- | Some(., e_l' (*) e_r' as e') -> - -- let e'' = fill(e', ., (o (+) e_r) in - -- o, e'' - -- Invariant: expn' is always "holed" and expn is always whole - -- Invariant: immediately holed expn' is always holey on the left - local hole = node(bop.location, 'binop') - hole.operator = bop - hole.right = right - -- implicit: hole.left is the hole - if #rest == 0 then - return {hole, hole} - end - assert(#rest == 2 and rest[1].kind == 'binop' and not rest[1].left) - rest[1].left = hole - return {hole, rest[2]} - end - - local function start_right_binop(bop, right) - -- invariant: right is whole, return is immediately holed - local hole = node(bop.location, 'binop') - hole.operator = bop - hole.right = right - return hole - end - - local function make_right_binop(left, binop_opt) - local binop = binop_opt[1] - if not binop then return left end - assert(binop.kind == 'binop' and not binop.left) - binop.left = left - return binop +local make_binop = function(left, rest) + if #rest == 0 then + return left + end + assert(#rest == 2 and rest[1].kind == 'binop' and not rest[1].left) + local hole, binop = unpack(rest) + hole.left = left + return binop + end + + local start_binop = function(bop, right, rest) + -- In ocaml style pseduocode + -- let start (+) e_r rest = + -- let o = hole() in + -- match rest with + -- | None -> o, (o (+) e_r) + -- | Some(., e_l' (*) e_r' as e') -> + -- let e'' = fill(e', ., (o (+) e_r) in + -- o, e'' + -- Invariant: expn' is always "holed" and expn is always whole + -- Invariant: immediately holed expn' is always holey on the left + local hole = node(bop.location, 'binop') + hole.operator = bop + hole.right = right + -- implicit: hole.left is the hole + if #rest == 0 then + return {hole, hole} + end + assert(#rest == 2 and rest[1].kind == 'binop' and not rest[1].left) + rest[1].left = hole + return {hole, rest[2]} + end + + local function start_right_binop(bop, right) + -- invariant: right is whole, return is immediately holed + local hole = node(bop.location, 'binop') + hole.operator = bop + hole.right = right + return hole + end + + local function make_right_binop(left, binop_opt) + local binop = binop_opt[1] + if not binop then return left end + assert(binop.kind == 'binop' and not binop.left) + binop.left = left + return binop end __GRAMMAR__.convert = function(token) return token[1] end -__GRAMMAR__.prologue = function(stream) - local tokens = {} - for token in tokenizer(stream) do - table.insert(tokens, token) - end - return tokens +__GRAMMAR__.prologue = function(stream) + local tokens = {} + for token in tokenizer(stream) do + table.insert(tokens, token) + end + return tokens end __GRAMMAR__.epilogue = function(...) return ... end __GRAMMAR__.default_action = function(...) return {...} end -__GRAMMAR__.grammar["exp6"][1].action = make_binop -__GRAMMAR__.grammar["stat'group#1'group#1"][1].action = function(_1, _2) - return _2 +__GRAMMAR__.grammar["funcbody"][1].action = function(_1, parameters_opt, _, block) + local parameters = parameters_opt[1] or node(_1.location, 'parameters') + return {parameters, block} + end +__GRAMMAR__.grammar["exp_stop"][1].action = function(_1) + return _1 end -__GRAMMAR__.grammar["args'maybe#1"][1].action = function(item) return {item} end -__GRAMMAR__.grammar["args'maybe#1"][2].action = function() return {} end -__GRAMMAR__.grammar["exp'"][1].action = function(_1) - return {} +__GRAMMAR__.grammar["exp_stop"][2].action = handle_primary_suffix +__GRAMMAR__.grammar["exp_stop"][3].action = function(_1) + return _1 end -__GRAMMAR__.grammar["exp'"][2].action = start_binop -__GRAMMAR__.grammar["level6"][1].action = function(_1) +__GRAMMAR__.grammar["exp_stop"][4].action = function(_1) + return node(_1.location, 'vararg') +end +__GRAMMAR__.grammar["exp_stop"][5].action = function(_1) + return from(_1, 'string') +end +__GRAMMAR__.grammar["exp_stop"][6].action = function(_1) + return from(_1, 'number') +end +__GRAMMAR__.grammar["exp_stop"][7].action = function(_1) + return node(_1.location, 'true') +end +__GRAMMAR__.grammar["exp_stop"][8].action = function(_1) + return node(_1.location, 'false') +end +__GRAMMAR__.grammar["exp_stop"][9].action = function(_1) + return node(_1.location, 'nil') +end +__GRAMMAR__.grammar["exp8'maybe#1"][1].action = function(item) return {item} end +__GRAMMAR__.grammar["exp8'maybe#1"][2].action = function() return {} end +__GRAMMAR__.grammar["exp5"][1].action = make_binop +__GRAMMAR__.grammar["block'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end +__GRAMMAR__.grammar["block'star#1"][2].action = function() return {} end +__GRAMMAR__.grammar["assignment"][1].action = function(_1, _2) + return {{}, _2} +end +__GRAMMAR__.grammar["assignment"][2].action = function(_, _1, _2, _3) + local left, right = unpack(_3) + table.insert(left, 1, handle_primary_suffix(_1, _2)); + return {left, right} + end +__GRAMMAR__.grammar["assignment_or_call"][1].action = function(left, suffixes, assignment_opt) + local assignment = #assignment_opt == 0 and {} or assignment_opt[1] + -- let's reduce to call or assignment + if (#suffixes == 0 or not suffixes[#suffixes].args) and #assignment == 0 then + error('Parser error: you can only specify a call or an assignment here') + end + if #suffixes ~= 0 and #assignment ~= 0 and suffixes[#suffixes].args then + error 'Parser error: you cannot assign to a call' + end + + if #assignment ~= 0 then + -- assignment case + -- assignment is a list of subsequent assignments + local ps = handle_primary_suffix(left, suffixes) + assert(ps.kind == 'index' or ps.kind == 'name') + local lvals, rvals = unpack(assignment) + table.insert(lvals, 1, ps) + lvals = node(ps.location, 'lvalues'):list(unpack(lvals)) + local tree = node(ps.location, 'assignments') + tree.left = lvals + tree.right = rvals + return tree + else + -- call case + local ps = handle_primary_suffix(left, suffixes) + assert(ps.kind == 'call' or ps.kind == 'selfcall') + return node(ps.location, 'callstmt'):list(ps) + end + end +__GRAMMAR__.grammar["parlist"][1].action = parlist_namelist +__GRAMMAR__.grammar["tableconstructor"][1].action = function(_1, _2, _3) + return node(_1.location, 'table'):list(unpack(_2)) +end +__GRAMMAR__.grammar["exp3"][1].action = make_binop +__GRAMMAR__.grammar["funcname'group#1"][1].action = function(_1, _2) + return from(_2) +end +__GRAMMAR__.grammar["exp7"][1].action = function(_1) + return _1 +end +__GRAMMAR__.grammar["exp7"][2].action = function(_1, _2) + return node(_1.location, 'unop'):set('operator', _1):set('operand', _2) +end +__GRAMMAR__.grammar["funcname'group#2"][1].action = function(_1, _2) + return from(_2) +end +__GRAMMAR__.grammar["level7"][1].action = function(_1) return from(_1, 'op') end -__GRAMMAR__.grammar["level6"][2].action = function(_1) +__GRAMMAR__.grammar["level7"][2].action = function(_1) return from(_1, 'op') end -__GRAMMAR__.grammar["level6"][3].action = function(_1) +__GRAMMAR__.grammar["level7"][3].action = function(_1) return from(_1, 'op') end -__GRAMMAR__.grammar["block'maybe#1"][1].action = function(item) return {item} end -__GRAMMAR__.grammar["block'maybe#1"][2].action = function() return {} end -__GRAMMAR__.grammar["level1"][1].action = function(_1) +__GRAMMAR__.grammar["unop"][1].action = function(_1) return from(_1, 'op') end -__GRAMMAR__.grammar["exp8'group#1"][1].action = start_right_binop -__GRAMMAR__.grammar["functiondef"][1].action = function(_1, _2) - return node(_1.location, 'function'):set('parameters', _2[1]):set('body', _2[2]) +__GRAMMAR__.grammar["unop"][2].action = function(_1) + return from(_1, 'op') end -__GRAMMAR__.grammar["tableconstructor'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end -__GRAMMAR__.grammar["tableconstructor'star#1"][2].action = function() return {} end -__GRAMMAR__.grammar["explist'group#1"][1].action = function(_1, _2) - return _2 +__GRAMMAR__.grammar["unop"][3].action = function(_1) + return from(_1, 'op') +end +__GRAMMAR__.grammar["funcbody'maybe#1"][1].action = function(item) return {item} end +__GRAMMAR__.grammar["funcbody'maybe#1"][2].action = function() return {} end +__GRAMMAR__.grammar["assignment'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end +__GRAMMAR__.grammar["assignment'star#1"][2].action = function() return {} end +__GRAMMAR__.grammar["retstat'maybe#1"][1].action = function(item) return {item} end +__GRAMMAR__.grammar["retstat'maybe#1"][2].action = function() return {} end +__GRAMMAR__.grammar["level3"][1].action = function(_1) + return from(_1, 'op') +end +__GRAMMAR__.grammar["level3"][2].action = function(_1) + return from(_1, 'op') +end +__GRAMMAR__.grammar["level3"][3].action = function(_1) + return from(_1, 'op') +end +__GRAMMAR__.grammar["level3"][4].action = function(_1) + return from(_1, 'op') +end +__GRAMMAR__.grammar["level3"][5].action = function(_1) + return from(_1, 'op') +end +__GRAMMAR__.grammar["level3"][6].action = function(_1) + return from(_1, 'op') end __GRAMMAR__.grammar["binop"][1].action = function(_1) return from(_1, 'op') @@ -271,235 +368,132 @@ end __GRAMMAR__.grammar["binop"][15].action = function(_1) return from(_1, 'op') end -__GRAMMAR__.grammar["stat'maybe#1"][1].action = function(item) return {item} end -__GRAMMAR__.grammar["stat'maybe#1"][2].action = function() return {} end -__GRAMMAR__.grammar["unop"][1].action = function(_1) - return from(_1, 'op') +__GRAMMAR__.grammar["block"][1].action = function(stats, ret) + local tree = node((stats[1] and stats[1].location) or (ret[1] and ret[1].location), 'block') + tree:list(unpack(stats)) + return tree:set('ret', (#ret ~= 0 and ret[1]) or nil) end -__GRAMMAR__.grammar["unop"][2].action = function(_1) - return from(_1, 'op') -end -__GRAMMAR__.grammar["unop"][3].action = function(_1) - return from(_1, 'op') +__GRAMMAR__.grammar["stat'group#1'maybe#1"][1].action = function(item) return {item} end +__GRAMMAR__.grammar["stat'group#1'maybe#1"][2].action = function() return {} end +__GRAMMAR__.grammar["tableconstructor'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end +__GRAMMAR__.grammar["tableconstructor'star#1"][2].action = function() return {} end +__GRAMMAR__.grammar["field"][1].action = function(_1, _2) + return node(_1.location, 'element'):set('value', _1) end -__GRAMMAR__.grammar["exp"][1].action = make_binop -__GRAMMAR__.grammar["stat'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end -__GRAMMAR__.grammar["stat'star#1"][2].action = function() return {} end -__GRAMMAR__.grammar["level8"][1].action = function(_1) - return from(_1, 'op') +__GRAMMAR__.grammar["field"][2].action = function(_1, _2, _3, _4) + return node(_1.location, 'element'):set('index', from(_1, 'string')):set('value', _3) end -__GRAMMAR__.grammar["funcname'maybe#1"][1].action = function(item) return {item} end -__GRAMMAR__.grammar["funcname'maybe#1"][2].action = function() return {} end -__GRAMMAR__.grammar["funcname'group#1"][1].action = function(_1, _2) - return from(_2) +__GRAMMAR__.grammar["field"][3].action = function(_1, _2, _3, _4, _5, _6) + return node(_1.location, 'element'):set('index', _2):set('value', _5) end -__GRAMMAR__.grammar["exp8"][1].action = make_right_binop -__GRAMMAR__.grammar["funcname'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end -__GRAMMAR__.grammar["funcname'star#1"][2].action = function() return {} end -__GRAMMAR__.grammar["assignment"][1].action = function(_1, _2) - return {{}, _2} +__GRAMMAR__.grammar["functiondef"][1].action = function(_1, _2) + return node(_1.location, 'function'):set('parameters', _2[1]):set('body', _2[2]) end -__GRAMMAR__.grammar["assignment"][2].action = function(_, _1, _2, _3) - local left, right = unpack(_3) - table.insert(left, 1, handle_primary_suffix(_1, _2)); - return {left, right} - end -__GRAMMAR__.grammar["assignment_or_call'group#1"][1].action = suffix_args -__GRAMMAR__.grammar["assignment_or_call'group#1"][2].action = suffix_colon -__GRAMMAR__.grammar["assignment_or_call'group#1"][3].action = suffix_bracket -__GRAMMAR__.grammar["assignment_or_call'group#1"][4].action = suffix_dot -__GRAMMAR__.grammar["fieldsep"][1].action = function(_1) +__GRAMMAR__.grammar["exp4'maybe#1"][1].action = function(item) return {item} end +__GRAMMAR__.grammar["exp4'maybe#1"][2].action = function() return {} end +__GRAMMAR__.grammar["funcname"][1].action = function(name, names, colon) + local tree = node(name.location, 'funcnames') + colon = colon[1] + tree:list(from(name)) + tree:list(unpack(names)) + if colon then + tree.colon = colon + end + return tree + end +__GRAMMAR__.grammar["exp2'"][1].action = function(_1) return {} end -__GRAMMAR__.grammar["fieldsep"][2].action = function(_1) - return {} +__GRAMMAR__.grammar["exp2'"][2].action = start_binop +__GRAMMAR__.grammar["funcname'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end +__GRAMMAR__.grammar["funcname'star#1"][2].action = function() return {} end +__GRAMMAR__.grammar["stat'group#4"][1].action = function(_1, _2) + return node(_1.location, 'else'):set('block', _2) end -__GRAMMAR__.grammar["parlist'group#1"][1].action = function(_1, _2) - return _1 +__GRAMMAR__.grammar["exp4'group#1"][1].action = start_right_binop +__GRAMMAR__.grammar["retstat"][1].action = function(_1, _2, _3) + return #_2 == 0 and node(_1.location, 'return') or node(_1.location, 'return'):set('explist', _2[1]) end __GRAMMAR__.grammar["exp6'"][1].action = function(_1) return {} end __GRAMMAR__.grammar["exp6'"][2].action = start_binop -__GRAMMAR__.grammar["namelist'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end -__GRAMMAR__.grammar["namelist'star#1"][2].action = function() return {} end -__GRAMMAR__.grammar["assignment_or_call"][1].action = function(left, suffixes, assignment_opt) - local assignment = #assignment_opt == 0 and {} or assignment_opt[1] - -- let's reduce to call or assignment - if (#suffixes == 0 or not suffixes[#suffixes].args) and #assignment == 0 then - error('Parser error: you can only specify a call or an assignment here') - end - if #suffixes ~= 0 and #assignment ~= 0 and suffixes[#suffixes].args then - error 'Parser error: you cannot assign to a call' - end - - if #assignment ~= 0 then - -- assignment case - -- assignment is a list of subsequent assignments - local ps = handle_primary_suffix(left, suffixes) - assert(ps.kind == 'index' or ps.kind == 'name') - local lvals, rvals = unpack(assignment) - table.insert(lvals, 1, ps) - lvals = node(ps.location, 'lvalues'):list(unpack(lvals)) - local tree = node(ps.location, 'assignments') - tree.left = lvals - tree.right = rvals - return tree - else - -- call case - local ps = handle_primary_suffix(left, suffixes) - assert(ps.kind == 'call' or ps.kind == 'selfcall') - return node(ps.location, 'callstmt'):list(ps) - end - end -__GRAMMAR__.grammar["exp_stop"][1].action = function(_1) - return _1 -end -__GRAMMAR__.grammar["exp_stop"][2].action = handle_primary_suffix -__GRAMMAR__.grammar["exp_stop"][3].action = function(_1) - return _1 -end -__GRAMMAR__.grammar["exp_stop"][4].action = function(_1) - return node(_1.location, 'vararg') -end -__GRAMMAR__.grammar["exp_stop"][5].action = function(_1) - return from(_1, 'string') -end -__GRAMMAR__.grammar["exp_stop"][6].action = function(_1) - return from(_1, 'number') -end -__GRAMMAR__.grammar["exp_stop"][7].action = function(_1) - return node(_1.location, 'true') -end -__GRAMMAR__.grammar["exp_stop"][8].action = function(_1) - return node(_1.location, 'false') -end -__GRAMMAR__.grammar["exp_stop"][9].action = function(_1) - return node(_1.location, 'nil') -end -__GRAMMAR__.grammar["field'maybe#3"][1].action = function(item) return {item} end -__GRAMMAR__.grammar["field'maybe#3"][2].action = function() return {} end -__GRAMMAR__.grammar["level5"][1].action = function(_1) - return from(_1, 'op') -end -__GRAMMAR__.grammar["level5"][2].action = function(_1) - return from(_1, 'op') -end __GRAMMAR__.grammar["root"][1].action = function(_1) return _1 end -__GRAMMAR__.grammar["retstat"][1].action = function(_1, _2, _3) - return #_2 == 0 and node(_1.location, 'return') or node(_1.location, 'return'):set('explist', _2[1]) +__GRAMMAR__.grammar["block'maybe#1"][1].action = function(item) return {item} end +__GRAMMAR__.grammar["block'maybe#1"][2].action = function() return {} end +__GRAMMAR__.grammar["level1"][1].action = function(_1) + return from(_1, 'op') end -__GRAMMAR__.grammar["exp4"][1].action = make_right_binop -__GRAMMAR__.grammar["exp5"][1].action = make_binop -__GRAMMAR__.grammar["field'maybe#1"][1].action = function(item) return {item} end -__GRAMMAR__.grammar["field'maybe#1"][2].action = function() return {} end -__GRAMMAR__.grammar["exp5'"][1].action = function(_1) +__GRAMMAR__.grammar["exp"][1].action = make_binop +__GRAMMAR__.grammar["exp3'"][1].action = function(_1) return {} end -__GRAMMAR__.grammar["exp5'"][2].action = start_binop -__GRAMMAR__.grammar["parlist'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end -__GRAMMAR__.grammar["parlist'star#1"][2].action = function() return {} end -__GRAMMAR__.grammar["stat'group#4"][1].action = function(_1, _2) - return node(_1.location, 'else'):set('block', _2) -end -__GRAMMAR__.grammar["tableconstructor"][1].action = function(_1, _2, _3) - return node(_1.location, 'table'):list(unpack(_2)) -end -__GRAMMAR__.grammar["stat'group#2"][1].action = function(_1, _2, _3, _4, _5, _6) - return node(_1.location, 'foreach'):set('names', _1):set('iterator', _3):set('block', _5) -end -__GRAMMAR__.grammar["stat'group#2"][2].action = function(_1, _2, _3, _4, _5, _6, _7, _8, _9) - return node(_1.location, 'fori'):set('id', from(_1)):set('start', _3):set('finish', _5):set('step', _6[1]):set('block', _8) +__GRAMMAR__.grammar["exp3'"][2].action = start_binop +__GRAMMAR__.grammar["explist'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end +__GRAMMAR__.grammar["explist'star#1"][2].action = function() return {} end +__GRAMMAR__.grammar["label"][1].action = function(_1, _2, _3) + return node(_1.location, 'label'):set('name', from(_2)) end -__GRAMMAR__.grammar["level7"][1].action = function(_1) +__GRAMMAR__.grammar["funcname'maybe#1"][1].action = function(item) return {item} end +__GRAMMAR__.grammar["funcname'maybe#1"][2].action = function() return {} end +__GRAMMAR__.grammar["level8"][1].action = function(_1) return from(_1, 'op') end -__GRAMMAR__.grammar["level7"][2].action = function(_1) +__GRAMMAR__.grammar["assignment_or_call'maybe#1"][1].action = function(item) return {item} end +__GRAMMAR__.grammar["assignment_or_call'maybe#1"][2].action = function() return {} end +__GRAMMAR__.grammar["level6"][1].action = function(_1) return from(_1, 'op') end -__GRAMMAR__.grammar["level7"][3].action = function(_1) +__GRAMMAR__.grammar["level6"][2].action = function(_1) return from(_1, 'op') end -__GRAMMAR__.grammar["level4"][1].action = function(_1) +__GRAMMAR__.grammar["level6"][3].action = function(_1) return from(_1, 'op') end -__GRAMMAR__.grammar["funcname'group#2"][1].action = function(_1, _2) - return from(_2) -end -__GRAMMAR__.grammar["stat'group#3"][1].action = function(_1, _2, _3, _4) - return node(_1.location, 'elseif'):set('cond', _2):set('block', _4) -end -__GRAMMAR__.grammar["namelist'group#1"][1].action = function(_1, _2) - return from(_2) -end -__GRAMMAR__.grammar["args"][1].action = function(_1) - return node(_1.location, 'args'):list(from(_1, 'string')) -end -__GRAMMAR__.grammar["args"][2].action = function(_1) - return node(_1.location, 'args'):list(_1) -end -__GRAMMAR__.grammar["args"][3].action = function(_1, _2, _3) - return (#_2 == 0 and node(_1.location, 'args')) or node(_1.location, 'args'):list(unpack(_2[1])) +__GRAMMAR__.grammar["level5"][1].action = function(_1) + return from(_1, 'op') end -__GRAMMAR__.grammar["stat'group#2'group#1"][1].action = function(_1, _2) - return _2 +__GRAMMAR__.grammar["level5"][2].action = function(_1) + return from(_1, 'op') end -__GRAMMAR__.grammar["retstat'maybe#1"][1].action = function(item) return {item} end -__GRAMMAR__.grammar["retstat'maybe#1"][2].action = function() return {} end -__GRAMMAR__.grammar["exp4'maybe#1"][1].action = function(item) return {item} end -__GRAMMAR__.grammar["exp4'maybe#1"][2].action = function() return {} end -__GRAMMAR__.grammar["exp4'group#1"][1].action = start_right_binop -__GRAMMAR__.grammar["funcbody"][1].action = function(_1, parameters_opt, _, block) - local parameters = parameters_opt[1] or node(_1.location, 'parameters') - return {parameters, block} - end -__GRAMMAR__.grammar["exp2'"][1].action = function(_1) +__GRAMMAR__.grammar["exp'"][1].action = function(_1) return {} end -__GRAMMAR__.grammar["exp2'"][2].action = start_binop -__GRAMMAR__.grammar["block"][1].action = function(stats, ret) - local tree = node((stats[1] and stats[1].location) or (ret[1] and ret[1].location), 'block') - tree:list(unpack(stats)) - return tree:set('ret', (#ret ~= 0 and ret[1]) or nil) -end -__GRAMMAR__.grammar["exp3"][1].action = make_binop +__GRAMMAR__.grammar["exp'"][2].action = start_binop +__GRAMMAR__.grammar["stat'group#2'maybe#1"][1].action = function(item) return {item} end +__GRAMMAR__.grammar["stat'group#2'maybe#1"][2].action = function() return {} end __GRAMMAR__.grammar["stat'group#1"][1].action = function(_1, _2) return node(_1.location, 'localassign'):set('left', _1):set('right', _2[1]) end __GRAMMAR__.grammar["stat'group#1"][2].action = function(_1, _2, _3) return node(_1.location, 'localfunctiondef'):set('name', from(_2)):set('function', node(_3[1].location, 'function'):set('parameters', _3[1]):set('body', _3[2])) end -__GRAMMAR__.grammar["level3"][1].action = function(_1) - return from(_1, 'op') -end -__GRAMMAR__.grammar["level3"][2].action = function(_1) - return from(_1, 'op') -end -__GRAMMAR__.grammar["level3"][3].action = function(_1) - return from(_1, 'op') -end -__GRAMMAR__.grammar["level3"][4].action = function(_1) - return from(_1, 'op') -end -__GRAMMAR__.grammar["level3"][5].action = function(_1) - return from(_1, 'op') +__GRAMMAR__.grammar["fieldsep"][1].action = function(_1) + return {} end -__GRAMMAR__.grammar["level3"][6].action = function(_1) - return from(_1, 'op') +__GRAMMAR__.grammar["fieldsep"][2].action = function(_1) + return {} end -__GRAMMAR__.grammar["level2"][1].action = function(_1) - return from(_1, 'op') +__GRAMMAR__.grammar["stat'maybe#1"][1].action = function(item) return {item} end +__GRAMMAR__.grammar["stat'maybe#1"][2].action = function() return {} end +__GRAMMAR__.grammar["namelist'group#1"][1].action = function(_1, _2) + return from(_2) end -__GRAMMAR__.grammar["field"][1].action = function(_1, _2) - return node(_1.location, 'element'):set('value', _1) +__GRAMMAR__.grammar["stat'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end +__GRAMMAR__.grammar["stat'star#1"][2].action = function() return {} end +__GRAMMAR__.grammar["exp5'"][1].action = function(_1) + return {} end -__GRAMMAR__.grammar["field"][2].action = function(_1, _2, _3, _4) - return node(_1.location, 'element'):set('index', from(_1, 'string')):set('value', _3) +__GRAMMAR__.grammar["exp5'"][2].action = start_binop +__GRAMMAR__.grammar["args'maybe#1"][1].action = function(item) return {item} end +__GRAMMAR__.grammar["args'maybe#1"][2].action = function() return {} end +__GRAMMAR__.grammar["stat'group#3"][1].action = function(_1, _2, _3, _4) + return node(_1.location, 'elseif'):set('cond', _2):set('block', _4) end -__GRAMMAR__.grammar["field"][3].action = function(_1, _2, _3, _4, _5, _6) - return node(_1.location, 'element'):set('index', _2):set('value', _5) +__GRAMMAR__.grammar["stat'group#2'group#1"][1].action = function(_1, _2) + return _2 end __GRAMMAR__.grammar["parlist'group#2"][1].action = function(_1) return _1 @@ -507,92 +501,74 @@ end __GRAMMAR__.grammar["parlist'group#2"][2].action = function(_1) return _1 end -__GRAMMAR__.grammar["primaryexp"][1].action = function(_1, _2, _3) - return _2 +__GRAMMAR__.grammar["stat'group#2"][1].action = function(_1, _2, _3, _4, _5, _6) + return node(_1.location, 'foreach'):set('names', _1):set('iterator', _3):set('block', _5) end -__GRAMMAR__.grammar["primaryexp"][2].action = function(_1) - return from(_1) +__GRAMMAR__.grammar["stat'group#2"][2].action = function(_1, _2, _3, _4, _5, _6, _7, _8, _9) + return node(_1.location, 'fori'):set('id', from(_1)):set('start', _3):set('finish', _5):set('step', _6[1]):set('block', _8) end -__GRAMMAR__.grammar["suffix"][1].action = suffix_args -__GRAMMAR__.grammar["suffix"][2].action = suffix_colon -__GRAMMAR__.grammar["suffix"][3].action = suffix_bracket -__GRAMMAR__.grammar["suffix"][4].action = suffix_dot -__GRAMMAR__.grammar["parlist"][1].action = parlist_namelist -__GRAMMAR__.grammar["funcbody'maybe#1"][1].action = function(item) return {item} end -__GRAMMAR__.grammar["funcbody'maybe#1"][2].action = function() return {} end -__GRAMMAR__.grammar["explist"][1].action = function(exp, explist) - local tree = node(exp.location, 'explist') - tree:list(exp) - tree:list(unpack(explist)) - return tree - end +__GRAMMAR__.grammar["stat'group#1'group#1"][1].action = function(_1, _2) + return _2 +end +__GRAMMAR__.grammar["retstat'maybe#2"][1].action = function(item) return {item} end +__GRAMMAR__.grammar["retstat'maybe#2"][2].action = function() return {} end +__GRAMMAR__.grammar["exp4"][1].action = make_right_binop +__GRAMMAR__.grammar["field'maybe#1"][1].action = function(item) return {item} end +__GRAMMAR__.grammar["field'maybe#1"][2].action = function() return {} end +__GRAMMAR__.grammar["exp6"][1].action = make_binop __GRAMMAR__.grammar["exp_stop'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end __GRAMMAR__.grammar["exp_stop'star#1"][2].action = function() return {} end -__GRAMMAR__.grammar["assignment_or_call'maybe#1"][1].action = function(item) return {item} end -__GRAMMAR__.grammar["assignment_or_call'maybe#1"][2].action = function() return {} end -__GRAMMAR__.grammar["funcname"][1].action = function(name, names, colon) - local tree = node(name.location, 'funcnames') - colon = colon[1] - tree:list(from(name)) - tree:list(unpack(names)) - if colon then - tree.colon = colon - end - return tree - end +__GRAMMAR__.grammar["parlist'group#1"][1].action = function(_1, _2) + return _1 +end __GRAMMAR__.grammar["field'maybe#2"][1].action = function(item) return {item} end __GRAMMAR__.grammar["field'maybe#2"][2].action = function() return {} end -__GRAMMAR__.grammar["exp2"][1].action = make_binop -__GRAMMAR__.grammar["stat'group#1'maybe#1"][1].action = function(item) return {item} end -__GRAMMAR__.grammar["stat'group#1'maybe#1"][2].action = function() return {} end -__GRAMMAR__.grammar["block'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end -__GRAMMAR__.grammar["block'star#1"][2].action = function() return {} end -__GRAMMAR__.grammar["namelist"][1].action = function(name, names) - local tree = node(name.location, 'names') - tree:list(from(name)) - tree:list(unpack(names)) - return tree +__GRAMMAR__.grammar["field'maybe#3"][1].action = function(item) return {item} end +__GRAMMAR__.grammar["field'maybe#3"][2].action = function() return {} end +__GRAMMAR__.grammar["assignment_or_call'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end +__GRAMMAR__.grammar["assignment_or_call'star#1"][2].action = function() return {} end +__GRAMMAR__.grammar["explist"][1].action = function(exp, explist) + local tree = node(exp.location, 'explist') + tree:list(exp) + tree:list(unpack(explist)) + return tree end -__GRAMMAR__.grammar["retstat'maybe#2"][1].action = function(item) return {item} end -__GRAMMAR__.grammar["retstat'maybe#2"][2].action = function() return {} end -__GRAMMAR__.grammar["stat'group#2'maybe#1"][1].action = function(item) return {item} end -__GRAMMAR__.grammar["stat'group#2'maybe#1"][2].action = function() return {} end -__GRAMMAR__.grammar["exp3'"][1].action = function(_1) - return {} +__GRAMMAR__.grammar["namelist"][1].action = function(name, names) + local tree = node(name.location, 'names') + tree:list(from(name)) + tree:list(unpack(names)) + return tree + end +__GRAMMAR__.grammar["exp8'group#1"][1].action = start_right_binop +__GRAMMAR__.grammar["level4"][1].action = function(_1) + return from(_1, 'op') end -__GRAMMAR__.grammar["exp3'"][2].action = start_binop -__GRAMMAR__.grammar["exp8'maybe#1"][1].action = function(item) return {item} end -__GRAMMAR__.grammar["exp8'maybe#1"][2].action = function() return {} end -__GRAMMAR__.grammar["label"][1].action = function(_1, _2, _3) - return node(_1.location, 'label'):set('name', from(_2)) +__GRAMMAR__.grammar["primaryexp"][1].action = function(_1, _2, _3) + return _2 end -__GRAMMAR__.grammar["assignment_or_call'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end -__GRAMMAR__.grammar["assignment_or_call'star#1"][2].action = function() return {} end -__GRAMMAR__.grammar["explist'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end -__GRAMMAR__.grammar["explist'star#1"][2].action = function() return {} end -__GRAMMAR__.grammar["exp7"][1].action = function(_1) - return _1 +__GRAMMAR__.grammar["primaryexp"][2].action = function(_1) + return from(_1) end -__GRAMMAR__.grammar["exp7"][2].action = function(_1, _2) - return node(_1.location, 'unop'):set('operator', _1):set('operand', _2) +__GRAMMAR__.grammar["level2"][1].action = function(_1) + return from(_1, 'op') end __GRAMMAR__.grammar["stat"][1].action = function(_1, _2) return _2 end -__GRAMMAR__.grammar["stat"][2].action = function(_1, _2, _3) - if _2.colon then - local name = node(_3[1].location, 'name') - name.value = 'self' - table.insert(_3[1], 1, name) - end - return node(_1.location, 'functiondef'):set('funcname', _2):set('function', node(_3[1].location, 'function'):set('parameters', _3[1]):set('body', _3[2])) +__GRAMMAR__.grammar["stat"][2].action = function(_1, _2, _3) + if _2.colon then + local name = node(_3[1].location, 'name') + name.value = 'self' + table.insert(_3[1], 1, name) + end + return node(_1.location, 'functiondef'):set('funcname', _2):set('function', node(_3[1].location, 'function'):set('parameters', _3[1]):set('body', _3[2])) end __GRAMMAR__.grammar["stat"][3].action = function(_1, _2) return _2 end __GRAMMAR__.grammar["stat"][4].action = function(_1, _2, _3, _4, _5, _6, _7) - return node(_1.location, 'if') - :set('cond', _2) - :set('block', _4) - :set('elseifs', #_5 > 0 and node(_5[1].location, 'elseif'):list(unpack(_5)) or nil) + return node(_1.location, 'if') + :set('cond', _2) + :set('block', _4) + :set('elseifs', #_5 > 0 and node(_5[1].location, 'elseif'):list(unpack(_5)) or nil) :set('else_', _6[1]) end __GRAMMAR__.grammar["stat"][5].action = function(_1, _2, _3, _4) @@ -619,46 +595,70 @@ end __GRAMMAR__.grammar["stat"][12].action = function(_1) return node(_1.location, 'empty') end -__GRAMMAR__.grammar["assignment'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end -__GRAMMAR__.grammar["assignment'star#1"][2].action = function() return {} end -__GRAMMAR__.grammar["exp5'"].conflict = {} -__GRAMMAR__.grammar["exp5'"].conflict["MIN"] = function(self, tokens) - return self:go 'minus' +__GRAMMAR__.grammar["assignment_or_call'group#1"][1].action = suffix_args +__GRAMMAR__.grammar["assignment_or_call'group#1"][2].action = suffix_colon +__GRAMMAR__.grammar["assignment_or_call'group#1"][3].action = suffix_bracket +__GRAMMAR__.grammar["assignment_or_call'group#1"][4].action = suffix_dot +__GRAMMAR__.grammar["namelist'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end +__GRAMMAR__.grammar["namelist'star#1"][2].action = function() return {} end +__GRAMMAR__.grammar["suffix"][1].action = suffix_args +__GRAMMAR__.grammar["suffix"][2].action = suffix_colon +__GRAMMAR__.grammar["suffix"][3].action = suffix_bracket +__GRAMMAR__.grammar["suffix"][4].action = suffix_dot +__GRAMMAR__.grammar["exp8"][1].action = make_right_binop +__GRAMMAR__.grammar["explist'group#1"][1].action = function(_1, _2) + return _2 +end +__GRAMMAR__.grammar["args"][1].action = function(_1) + return node(_1.location, 'args'):list(from(_1, 'string')) +end +__GRAMMAR__.grammar["args"][2].action = function(_1) + return node(_1.location, 'args'):list(_1) +end +__GRAMMAR__.grammar["args"][3].action = function(_1, _2, _3) + return (#_2 == 0 and node(_1.location, 'args')) or node(_1.location, 'args'):list(unpack(_2[1])) +end +__GRAMMAR__.grammar["parlist'star#1"][1].action = function(item, list) table.insert(list, 1, item); return list end +__GRAMMAR__.grammar["parlist'star#1"][2].action = function() return {} end +__GRAMMAR__.grammar["exp2"][1].action = make_binop +__GRAMMAR__.grammar["assignment_or_call'star#1"].conflict = {} +__GRAMMAR__.grammar["assignment_or_call'star#1"].conflict["LPAREN"] = function(self, tokens) + -- always reduce to call + return self:go '#list' end __GRAMMAR__.grammar["parlist'star#1"].conflict = {} -__GRAMMAR__.grammar["parlist'star#1"].conflict["Name"] = function(self, tokens) - if tostring(tokens[2]) == 'COMMA' then - return self:go '#list' - else - return self:go '' - end +__GRAMMAR__.grammar["parlist'star#1"].conflict["Name"] = function(self, tokens) + if tostring(tokens[2]) == 'COMMA' then + return self:go '#list' + else + return self:go '' + end end __GRAMMAR__.grammar["field"].conflict = {} -__GRAMMAR__.grammar["field"].conflict["Name"] = function(self, tokens) - if tostring(tokens[2]) == 'EQ' then - return self:go 'assign' - else - return self:go 'exp' - end +__GRAMMAR__.grammar["field"].conflict["Name"] = function(self, tokens) + if tostring(tokens[2]) == 'EQ' then + return self:go 'assign' + else + return self:go 'exp' + end end -__GRAMMAR__.grammar["assignment_or_call'star#1"].conflict = {} -__GRAMMAR__.grammar["assignment_or_call'star#1"].conflict["LPAREN"] = function(self, tokens) - -- always reduce to call - return self:go '#list' -end -__GRAMMAR__.grammar["stat'group#2"].conflict = {} -__GRAMMAR__.grammar["stat'group#2"].conflict["Name"] = function(self, tokens) - if tostring(tokens[2]) == 'EQ' then - return self:go 'forcounter' - else - return self:go 'foreach' - end +__GRAMMAR__.grammar["exp5'"].conflict = {} +__GRAMMAR__.grammar["exp5'"].conflict["MIN"] = function(self, tokens) + return self:go 'minus' end __GRAMMAR__.grammar["exp_stop'star#1"].conflict = {} -__GRAMMAR__.grammar["exp_stop'star#1"].conflict["LBRACE"] = goto_list -__GRAMMAR__.grammar["exp_stop'star#1"].conflict["LBRACK"] = goto_list __GRAMMAR__.grammar["exp_stop'star#1"].conflict["LPAREN"] = goto_list +__GRAMMAR__.grammar["exp_stop'star#1"].conflict["LBRACK"] = goto_list __GRAMMAR__.grammar["exp_stop'star#1"].conflict["String"] = goto_list +__GRAMMAR__.grammar["exp_stop'star#1"].conflict["LBRACE"] = goto_list +__GRAMMAR__.grammar["stat'group#2"].conflict = {} +__GRAMMAR__.grammar["stat'group#2"].conflict["Name"] = function(self, tokens) + if tostring(tokens[2]) == 'EQ' then + return self:go 'forcounter' + else + return self:go 'foreach' + end +end __GRAMMAR__.ll1 = ll1(__GRAMMAR__.grammar) return setmetatable( __GRAMMAR__, diff --git a/luainlua/lua/parser_table.lua b/luainlua/lua/parser_table.lua new file mode 100644 index 0000000..a6f2df3 --- /dev/null +++ b/luainlua/lua/parser_table.lua @@ -0,0 +1 @@ +return {[1] = {['\102\117\110\099\098\111\100\121'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\095\115\116\111\112'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 2, ['\083\116\114\105\110\103'] = 5, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 7, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 3, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = 9, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 6, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 8, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 4, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 2, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\056\039\109\097\121\098\101\035\049'] = {['\077\085\076'] = 2, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 2, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = 2, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 2, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 2, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 2, ['\083\116\114\105\110\103'] = 2, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = 2, ['\073\078'] = -1, ['\084\082\085\069'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 2, ['\077\073\078'] = 2, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 2, ['\070\085\078\067\084\073\079\078'] = 2, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = 2, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = 2, ['\078\073\076'] = 2, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = 2, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = 2, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = 2, ['\084\072\069\078'] = 2, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\036\036\069\079\070\036\036'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = 2, ['\080\076\085\083'] = 2, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = 2, ['\082\069\080\069\065\084'] = 2, ['\067\079\078\067\065\084'] = 2, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = 1, ['\066\082\069\065\075'] = 2, ['\078\079\084'] = 2, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 2, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 2, ['\078\079\084\069\081'] = 2, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = 2, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = 2, ['\070\065\076\083\069'] = 2, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 2, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 2, ['\082\066\082\065\067\069'] = 2, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = 2, ['\065\078\068'] = 2, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = 2, ['\069\076\083\069\073\070'] = 2, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 2, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\053'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = 1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\098\108\111\099\107\039\115\116\097\114\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = 1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 2, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 2, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = 1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = 1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = 1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\036\036\069\079\070\036\036'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = 1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = 1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = 2, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\097\115\115\105\103\110\109\101\110\116'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 2, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = 1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\115\116\097\116\039\115\116\097\114\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 2, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = 1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\112\097\114\108\105\115\116'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\051'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = 1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = 1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\108\101\118\101\108\055'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 2, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = 3, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\117\110\111\112'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 3, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = 2, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = 2, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 2, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = 1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = 2, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\108\101\118\101\108\054'] = {['\077\085\076'] = 3, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = 1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\108\101\118\101\108\051'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = 4, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = 6, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = 5, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = 1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = 2, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = 3, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\098\105\110\111\112'] = {['\077\085\076'] = 13, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = 12, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = 7, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 14, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = 8, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = 6, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = 15, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = 4, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = 9, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = 11, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = 3, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = 1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = 10, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = 5, ['\065\078\068'] = 2, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\098\108\111\099\107'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = 1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = 1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = 1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = 1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\036\036\069\079\070\036\036'] = 1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = 1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = 1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = 1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 2, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = 2, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 2, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 2, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 2, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 2, ['\070\085\078\067\084\073\079\078'] = 2, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = 2, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = 2, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = 2, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\036\036\069\079\070\036\036'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = 2, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = 2, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = 1, ['\076\080\065\082\069\078'] = 2, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = 2, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = 1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = 2, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\102\105\101\108\100'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = 3, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = {[1] = 1, [2] = 2}, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = 1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\102\117\110\099\116\105\111\110\100\101\102'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\052\039\109\097\121\098\101\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 2, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = 2, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 2, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 2, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 2, ['\083\116\114\105\110\103'] = 2, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = 2, ['\073\078'] = -1, ['\084\082\085\069'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 2, ['\077\073\078'] = 2, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 2, ['\070\085\078\067\084\073\079\078'] = 2, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = 2, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = 2, ['\078\073\076'] = 2, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = 2, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = 2, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = 2, ['\084\072\069\078'] = 2, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\036\036\069\079\070\036\036'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = 2, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = 2, ['\082\069\080\069\065\084'] = 2, ['\067\079\078\067\065\084'] = 1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = 2, ['\078\079\084'] = 2, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 2, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 2, ['\078\079\084\069\081'] = 2, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = 2, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 2, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 2, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 2, ['\082\066\082\065\067\069'] = 2, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = 2, ['\065\078\068'] = 2, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = 2, ['\069\076\083\069\073\070'] = 2, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 2, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\102\117\110\099\110\097\109\101'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\050\039'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = 1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 1, ['\077\073\078'] = 1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = 1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = 1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = 1, ['\084\072\069\078'] = 1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\036\036\069\079\070\036\036'] = 1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = 1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = 1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = 1, ['\078\079\084'] = 1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = 1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = 1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = 2, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = 1, ['\069\076\083\069\073\070'] = 1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = 2, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = 1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 2, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\115\116\097\116\039\103\114\111\117\112\035\052'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\054'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = 1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\114\101\116\115\116\097\116'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\054\039'] = {['\077\085\076'] = 2, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = 1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = 1, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 1, ['\077\073\078'] = 1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = 1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = 1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = 1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = 1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = 1, ['\084\072\069\078'] = 1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\036\036\069\079\070\036\036'] = 1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = 1, ['\080\076\085\083'] = 1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = 1, ['\082\069\080\069\065\084'] = 1, ['\067\079\078\067\065\084'] = 1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = 1, ['\078\079\084'] = 1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = 1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = 1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = 2, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = 1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = 1, ['\065\078\068'] = 1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = 1, ['\069\076\083\069\073\070'] = 1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\114\111\111\116'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = 1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = 1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = 1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = 1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\036\036\069\079\070\036\036'] = 1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = 1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = 1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\098\108\111\099\107\039\109\097\121\098\101\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 2, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 2, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = 2, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\108\101\118\101\108\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = 1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = 1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\051\039'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = 1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = 2, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 1, ['\077\073\078'] = 1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = 1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = 1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = 2, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = 2, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = 1, ['\084\072\069\078'] = 1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\036\036\069\079\070\036\036'] = 1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = 1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = 2, ['\082\069\080\069\065\084'] = 1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = 1, ['\078\079\084'] = 1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = 2, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = 1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = 1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = 2, ['\065\078\068'] = 1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = 1, ['\069\076\083\069\073\070'] = 1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 2, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = 2, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 2, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 2, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 2, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 2, ['\070\085\078\067\084\073\079\078'] = 2, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = 2, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = 2, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = 2, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\036\036\069\079\070\036\036'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = 2, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = 2, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = 2, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 2, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = 2, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\108\097\098\101\108'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\108\101\118\101\108\053'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = 2, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\108\101\118\101\108\056'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = 1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\115\116\097\116\039\103\114\111\117\112\035\050'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = {[1] = 1, [2] = 2}, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\108\101\118\101\108\052'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = 1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 2, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 2, ['\077\073\078'] = 1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\036\036\069\079\070\036\036'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = 1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = 2, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = 3, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = 2, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = 4, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 2, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\115\116\097\116\039\103\114\111\117\112\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 2, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = {[1] = 1, [2] = 2}, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 2, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 2, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 2, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\036\036\069\079\070\036\036'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = 2, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\115\116\097\116\039\109\097\121\098\101\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 2, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\053\039'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = 1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = 1, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 1, ['\077\073\078'] = {[1] = 1, [2] = 2}, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = 1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = 1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = 1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = 1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = 1, ['\084\072\069\078'] = 1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\036\036\069\079\070\036\036'] = 1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = 1, ['\080\076\085\083'] = 2, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = 1, ['\082\069\080\069\065\084'] = 1, ['\067\079\078\067\065\084'] = 1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = 1, ['\078\079\084'] = 1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = 1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = 1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = 1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = 1, ['\065\078\068'] = 1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = 1, ['\069\076\083\069\073\070'] = 1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\097\114\103\115\039\109\097\121\098\101\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = 2, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = 1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\052'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = 1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\112\114\105\109\097\114\121\101\120\112'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 2, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 2, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 2, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = 2, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 2, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 2, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 2, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 2, ['\070\085\078\067\084\073\079\078'] = 2, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = 2, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = 2, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = 2, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\036\036\069\079\070\036\036'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = 2, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = 2, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = 1, ['\076\080\065\082\069\078'] = 2, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = 2, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\052\039\103\114\111\117\112\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = 1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\102\105\101\108\100\115\101\112'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 2, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\102\105\101\108\100\039\109\097\121\098\101\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 2, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 2, ['\083\116\114\105\110\103'] = 2, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 2, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 2, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = 2, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = 2, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 2, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 2, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 2, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 2, ['\082\066\082\065\067\069'] = 2, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 2, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = 1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = {['\077\085\076'] = 2, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 2, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = 2, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 2, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 2, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = {[1] = 1, [2] = 2}, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 2, ['\083\116\114\105\110\103'] = {[1] = 1, [2] = 2}, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = 2, ['\073\078'] = -1, ['\084\082\085\069'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 2, ['\077\073\078'] = 2, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 2, ['\070\085\078\067\084\073\079\078'] = 2, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = 2, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = 2, ['\078\073\076'] = 2, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = 2, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = 2, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = 2, ['\084\072\069\078'] = 2, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\036\036\069\079\070\036\036'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = 2, ['\080\076\085\083'] = 2, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = 2, ['\082\069\080\069\065\084'] = 2, ['\067\079\078\067\065\084'] = 2, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = 2, ['\066\082\069\065\075'] = 2, ['\078\079\084'] = 2, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 2, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = 1, ['\078\117\109\098\101\114'] = 2, ['\078\079\084\069\081'] = 2, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = 2, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = 2, ['\070\065\076\083\069'] = 2, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 2, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = {[1] = 1, [2] = 2}, ['\082\066\082\065\067\069'] = 2, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = 2, ['\065\078\068'] = 2, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = 2, ['\069\076\083\069\073\070'] = 2, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = {[1] = 1, [2] = 2}, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\102\105\101\108\100\039\109\097\121\098\101\035\050'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 2, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 2, ['\083\116\114\105\110\103'] = 2, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 2, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 2, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = 2, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = 2, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 2, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 2, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 2, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 2, ['\082\066\082\065\067\069'] = 2, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 2, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\102\105\101\108\100\039\109\097\121\098\101\035\051'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 2, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 2, ['\083\116\114\105\110\103'] = 2, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 2, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 2, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 2, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = 2, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = 2, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 2, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 2, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 2, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 2, ['\082\066\082\065\067\069'] = 2, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 2, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 2, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = 2, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 2, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 2, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 2, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 2, ['\070\085\078\067\084\073\079\078'] = 2, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = 2, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = 2, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = 2, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\036\036\069\079\070\036\036'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = 2, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = 2, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 2, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = 1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = 2, ['\076\080\065\082\069\078'] = {[1] = 1, [2] = 2}, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = 2, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\108\105\115\116'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = 1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\110\097\109\101\108\105\115\116'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\056\039\103\114\111\117\112\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = 1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\056'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\055'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 2, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 2, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = 2, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\108\101\118\101\108\050'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = 1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\115\116\097\116'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 10, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = 1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 11, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = 4, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 7, ['\070\085\078\067\084\073\079\078'] = 2, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = 8, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = 6, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = 3, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 12, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = 5, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = 9, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 11, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\115\116\097\116\039\103\114\111\117\112\035\051'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = 1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 2, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = 2, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 2, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 2, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = 2, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = 2, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 2, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 2, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 2, ['\070\085\078\067\084\073\079\078'] = 2, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = 2, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = 2, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = 2, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 2, ['\036\036\069\079\070\036\036'] = 2, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = 2, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = 2, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = 2, ['\076\080\065\082\069\078'] = 2, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 2, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = 2, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\115\117\102\102\105\120'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = 3, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = 2, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = 4, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\039'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = 1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = 1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = 1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = 1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = 1, ['\077\073\078'] = 1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = 1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = 1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = 1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = 1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = 1, ['\084\072\069\078'] = 1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = 1, ['\036\036\069\079\070\036\036'] = 1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = 1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = 1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = 1, ['\078\079\084'] = 1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = 2, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = 1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = 1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = 1, ['\069\076\083\069\073\070'] = 1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = 1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 2, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\097\114\103\115'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 3, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 2, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = -1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = -1, ['\083\116\114\105\110\103'] = -1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = -1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = -1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = -1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = -1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = 1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = -1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = -1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = -1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = -1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}, ['\101\120\112\050'] = {['\077\085\076'] = -1, ['\036\101\120\112\108\105\115\116'] = -1, ['\036\101\120\112\053\039'] = -1, ['\081\085\065\068'] = -1, ['\036\108\097\098\101\108'] = -1, ['\076\079\067\065\076'] = -1, ['\036\097\114\103\115'] = -1, ['\085\078\084\073\076'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\050\039'] = -1, ['\068\073\086'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\052'] = -1, ['\072\065\083\072'] = 1, ['\036\102\117\110\099\110\097\109\101'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\051'] = -1, ['\036\108\101\118\101\108\052'] = -1, ['\036\115\116\097\116'] = -1, ['\036\101\120\112\051\039'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049'] = -1, ['\036\110\097\109\101\108\105\115\116'] = -1, ['\076\066\082\065\067\075'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\056\039\109\097\121\098\101\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = -1, ['\036\101\120\112\052'] = -1, ['\036\112\114\105\109\097\114\121\101\120\112'] = -1, ['\078\097\109\101'] = 1, ['\083\116\114\105\110\103'] = 1, ['\036\101\120\112\095\115\116\111\112'] = -1, ['\036\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\073\070'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = -1, ['\076\069'] = -1, ['\073\078'] = -1, ['\084\082\085\069'] = 1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = -1, ['\036\102\117\110\099\098\111\100\121'] = -1, ['\067\079\076\079\078'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\115\116\097\114\035\049'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116'] = -1, ['\069\078\068'] = -1, ['\077\073\078'] = 1, ['\036\101\120\112\056\039\103\114\111\117\112\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\050'] = -1, ['\036\101\120\112\052\039\109\097\121\098\101\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\069\084\085\082\078'] = -1, ['\036\115\117\102\102\105\120'] = -1, ['\036\101\120\112'] = -1, ['\068\079'] = -1, ['\070\085\078\067\084\073\079\078'] = 1, ['\036\112\097\114\108\105\115\116'] = -1, ['\071\079\084\079'] = -1, ['\036\108\101\118\101\108\056'] = -1, ['\036\115\116\097\116\039\115\116\097\114\035\049'] = -1, ['\087\072\073\076\069'] = -1, ['\078\073\076'] = 1, ['\036\101\120\112\054\039'] = -1, ['\076\084'] = -1, ['\036\108\101\118\101\108\054'] = -1, ['\071\084'] = -1, ['\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\050'] = -1, ['\070\079\082'] = -1, ['\084\072\069\078'] = -1, ['\036\102\105\101\108\100'] = -1, ['\083\069\077\073\067\079\076\079\078'] = -1, ['\036\036\069\079\070\036\036'] = -1, ['\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\082\080\065\082\069\078'] = -1, ['\080\076\085\083'] = -1, ['\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = -1, ['\069\081\069\081'] = -1, ['\082\069\080\069\065\084'] = -1, ['\067\079\078\067\065\084'] = -1, ['\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = -1, ['\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\039'] = -1, ['\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\101\120\112\054'] = -1, ['\036\101\120\112\052\039\103\114\111\117\112\035\049'] = -1, ['\036\101\120\112\053'] = -1, ['\036\102\117\110\099\116\105\111\110\100\101\102'] = -1, ['\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = -1, ['\036\098\108\111\099\107\039\109\097\121\098\101\035\049'] = -1, ['\080\079\087'] = -1, ['\066\082\069\065\075'] = -1, ['\078\079\084'] = 1, ['\036\101\120\112\050'] = -1, ['\036\102\105\101\108\100\115\101\112'] = -1, ['\036\101\120\112\051'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = -1, ['\036\108\101\118\101\108\051'] = -1, ['\067\079\077\077\065'] = -1, ['\036\108\101\118\101\108\049'] = -1, ['\080\069\082\073\079\068'] = -1, ['\078\117\109\098\101\114'] = 1, ['\078\079\084\069\081'] = -1, ['\036\108\101\118\101\108\050'] = -1, ['\036\114\101\116\115\116\097\116'] = -1, ['\036\102\105\101\108\100\039\109\097\121\098\101\035\051'] = -1, ['\079\082'] = -1, ['\036\101\120\112\056'] = -1, ['\036\101\120\112\055'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = -1, ['\077\079\068'] = -1, ['\070\065\076\083\069'] = 1, ['\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\068\079\084\083'] = 1, ['\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = -1, ['\036\108\101\118\101\108\055'] = -1, ['\069\081'] = -1, ['\076\080\065\082\069\078'] = 1, ['\082\066\082\065\067\069'] = -1, ['\036\108\101\118\101\108\053'] = -1, ['\071\069'] = -1, ['\065\078\068'] = -1, ['\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = -1, ['\069\076\083\069'] = -1, ['\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = -1, ['\082\066\082\065\067\075'] = -1, ['\069\076\083\069\073\070'] = -1, ['\036\097\114\103\115\039\109\097\121\098\101\035\049'] = -1, ['\076\066\082\065\067\069'] = 1, ['\036\098\108\111\099\107'] = -1, ['\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = -1, ['\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = -1, ['\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = -1}}, [2] = {['\102\117\110\099\098\111\100\121'] = {[1] = {[1] = '\076\080\065\082\069\078', [2] = '\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049', [3] = '\082\080\065\082\069\078', [4] = '\036\098\108\111\099\107', [5] = '\069\078\068', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\117\110\099\098\111\100\121'}, ['\101\120\112\095\115\116\111\112'] = {[1] = {[1] = '\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\036\112\114\105\109\097\114\121\101\120\112', [2] = '\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\036\102\117\110\099\116\105\111\110\100\101\102', ['\097\099\116\105\111\110'] = nil}, [4] = {[1] = '\068\079\084\083', ['\097\099\116\105\111\110'] = nil}, [5] = {[1] = '\083\116\114\105\110\103', ['\097\099\116\105\111\110'] = nil}, [6] = {[1] = '\078\117\109\098\101\114', ['\097\099\116\105\111\110'] = nil}, [7] = {[1] = '\084\082\085\069', ['\097\099\116\105\111\110'] = nil}, [8] = {[1] = '\070\065\076\083\069', ['\097\099\116\105\111\110'] = nil}, [9] = {[1] = '\078\073\076', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\095\115\116\111\112'}, ['\101\120\112\056\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\101\120\112\056\039\103\114\111\117\112\035\049', ['\116\097\103'] = '\035\112\114\101\115\101\110\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\056\039\109\097\121\098\101\035\049'}, ['\101\120\112\053'] = {[1] = {[1] = '\036\101\120\112\054', [2] = '\036\101\120\112\053\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\053'}, ['\098\108\111\099\107\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\115\116\097\116', [2] = '\036\098\108\111\099\107\039\115\116\097\114\035\049', ['\116\097\103'] = '\035\108\105\115\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\098\108\111\099\107\039\115\116\097\114\035\049'}, ['\097\115\115\105\103\110\109\101\110\116'] = {[1] = {[1] = '\069\081', [2] = '\036\101\120\112\108\105\115\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\067\079\077\077\065', [2] = '\036\112\114\105\109\097\114\121\101\120\112', [3] = '\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049', [4] = '\036\097\115\115\105\103\110\109\101\110\116', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\097\115\115\105\103\110\109\101\110\116'}, ['\115\116\097\116\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\115\116\097\116\039\103\114\111\117\112\035\051', [2] = '\036\115\116\097\116\039\115\116\097\114\035\049', ['\116\097\103'] = '\035\108\105\115\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\115\116\097\114\035\049'}, ['\112\097\114\108\105\115\116'] = {[1] = {[1] = '\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049', [2] = '\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\112\097\114\108\105\115\116'}, ['\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'] = {[1] = {[1] = '\076\066\082\065\067\069', [2] = '\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049', [3] = '\082\066\082\065\067\069', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114'}, ['\101\120\112\051'] = {[1] = {[1] = '\036\101\120\112\052', [2] = '\036\101\120\112\051\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\051'}, ['\112\114\105\109\097\114\121\101\120\112'] = {[1] = {[1] = '\076\080\065\082\069\078', [2] = '\036\101\120\112', [3] = '\082\080\065\082\069\078', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\078\097\109\101', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\112\114\105\109\097\114\121\101\120\112'}, ['\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\067\079\077\077\065', [2] = '\036\101\120\112', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049'}, ['\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'] = {[1] = {[1] = '\067\079\076\079\078', [2] = '\078\097\109\101', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050'}, ['\108\101\118\101\108\055'] = {[1] = {[1] = '\077\073\078', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\072\065\083\072', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\078\079\084', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\101\118\101\108\055'}, ['\117\110\111\112'] = {[1] = {[1] = '\072\065\083\072', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\078\079\084', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\077\073\078', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\117\110\111\112'}, ['\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\112\097\114\108\105\115\116', ['\116\097\103'] = '\035\112\114\101\115\101\110\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\117\110\099\098\111\100\121\039\109\097\121\098\101\035\049'}, ['\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\115\117\102\102\105\120', [2] = '\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049', ['\116\097\103'] = '\035\108\105\115\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\097\115\115\105\103\110\109\101\110\116\039\115\116\097\114\035\049'}, ['\108\101\118\101\108\054'] = {[1] = {[1] = '\077\079\068', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\068\073\086', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\077\085\076', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\101\118\101\108\054'}, ['\108\101\118\101\108\051'] = {[1] = {[1] = '\069\081\069\081', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\078\079\084\069\081', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\071\069', ['\097\099\116\105\111\110'] = nil}, [4] = {[1] = '\076\069', ['\097\099\116\105\111\110'] = nil}, [5] = {[1] = '\071\084', ['\097\099\116\105\111\110'] = nil}, [6] = {[1] = '\076\084', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\101\118\101\108\051'}, ['\098\105\110\111\112'] = {[1] = {[1] = '\079\082', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\065\078\068', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\078\079\084\069\081', ['\097\099\116\105\111\110'] = nil}, [4] = {[1] = '\069\081\069\081', ['\097\099\116\105\111\110'] = nil}, [5] = {[1] = '\071\069', ['\097\099\116\105\111\110'] = nil}, [6] = {[1] = '\071\084', ['\097\099\116\105\111\110'] = nil}, [7] = {[1] = '\076\069', ['\097\099\116\105\111\110'] = nil}, [8] = {[1] = '\076\084', ['\097\099\116\105\111\110'] = nil}, [9] = {[1] = '\067\079\078\067\065\084', ['\097\099\116\105\111\110'] = nil}, [10] = {[1] = '\077\079\068', ['\097\099\116\105\111\110'] = nil}, [11] = {[1] = '\080\079\087', ['\097\099\116\105\111\110'] = nil}, [12] = {[1] = '\068\073\086', ['\097\099\116\105\111\110'] = nil}, [13] = {[1] = '\077\085\076', ['\097\099\116\105\111\110'] = nil}, [14] = {[1] = '\077\073\078', ['\097\099\116\105\111\110'] = nil}, [15] = {[1] = '\080\076\085\083', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\098\105\110\111\112'}, ['\098\108\111\099\107'] = {[1] = {[1] = '\036\098\108\111\099\107\039\115\116\097\114\035\049', [2] = '\036\098\108\111\099\107\039\109\097\121\098\101\035\049', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\098\108\111\099\107'}, ['\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049', ['\116\097\103'] = '\035\112\114\101\115\101\110\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049'}, ['\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\102\105\101\108\100', [2] = '\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049', ['\116\097\103'] = '\035\108\105\115\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114\039\115\116\097\114\035\049'}, ['\102\105\101\108\100'] = {[1] = {[1] = '\036\101\120\112', [2] = '\036\102\105\101\108\100\039\109\097\121\098\101\035\049', ['\116\097\103'] = '\101\120\112', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\078\097\109\101', [2] = '\069\081', [3] = '\036\101\120\112', [4] = '\036\102\105\101\108\100\039\109\097\121\098\101\035\050', ['\116\097\103'] = '\097\115\115\105\103\110', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\076\066\082\065\067\075', [2] = '\036\101\120\112', [3] = '\082\066\082\065\067\075', [4] = '\069\081', [5] = '\036\101\120\112', [6] = '\036\102\105\101\108\100\039\109\097\121\098\101\035\051', ['\097\099\116\105\111\110'] = nil}, ['\099\111\110\102\108\105\099\116'] = {['\078\097\109\101'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\105\101\108\100'}, ['\102\117\110\099\116\105\111\110\100\101\102'] = {[1] = {[1] = '\070\085\078\067\084\073\079\078', [2] = '\036\102\117\110\099\098\111\100\121', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\117\110\099\116\105\111\110\100\101\102'}, ['\101\120\112\052\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\101\120\112\052\039\103\114\111\117\112\035\049', ['\116\097\103'] = '\035\112\114\101\115\101\110\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\052\039\109\097\121\098\101\035\049'}, ['\102\117\110\099\110\097\109\101'] = {[1] = {[1] = '\078\097\109\101', [2] = '\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049', [3] = '\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\117\110\099\110\097\109\101'}, ['\101\120\112\050\039'] = {[1] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\036\108\101\118\101\108\050', [2] = '\036\101\120\112\051', [3] = '\036\101\120\112\050\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\050\039'}, ['\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049', [2] = '\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049', ['\116\097\103'] = '\035\108\105\115\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\117\110\099\110\097\109\101\039\115\116\097\114\035\049'}, ['\115\116\097\116\039\103\114\111\117\112\035\052'] = {[1] = {[1] = '\069\076\083\069', [2] = '\036\098\108\111\099\107', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\103\114\111\117\112\035\052'}, ['\101\120\112\054'] = {[1] = {[1] = '\036\101\120\112\055', [2] = '\036\101\120\112\054\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\054'}, ['\114\101\116\115\116\097\116'] = {[1] = {[1] = '\082\069\084\085\082\078', [2] = '\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049', [3] = '\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\114\101\116\115\116\097\116'}, ['\101\120\112\054\039'] = {[1] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\036\108\101\118\101\108\054', [2] = '\036\101\120\112\055', [3] = '\036\101\120\112\054\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\054\039'}, ['\114\111\111\116'] = {[1] = {[1] = '\036\098\108\111\099\107', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\114\111\111\116'}, ['\098\108\111\099\107\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\114\101\116\115\116\097\116', ['\116\097\103'] = '\035\112\114\101\115\101\110\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\098\108\111\099\107\039\109\097\121\098\101\035\049'}, ['\108\101\118\101\108\049'] = {[1] = {[1] = '\079\082', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\101\118\101\108\049'}, ['\101\120\112'] = {[1] = {[1] = '\036\101\120\112\050', [2] = '\036\101\120\112\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112'}, ['\101\120\112\051\039'] = {[1] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\036\108\101\118\101\108\051', [2] = '\036\101\120\112\052', [3] = '\036\101\120\112\051\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\051\039'}, ['\101\120\112\108\105\115\116\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049', [2] = '\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049', ['\116\097\103'] = '\035\108\105\115\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049'}, ['\108\097\098\101\108'] = {[1] = {[1] = '\081\085\065\068', [2] = '\078\097\109\101', [3] = '\081\085\065\068', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\097\098\101\108'}, ['\101\120\112\039'] = {[1] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\036\108\101\118\101\108\049', [2] = '\036\101\120\112\050', [3] = '\036\101\120\112\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\039'}, ['\108\101\118\101\108\056'] = {[1] = {[1] = '\080\079\087', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\101\118\101\108\056'}, ['\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\097\115\115\105\103\110\109\101\110\116', ['\116\097\103'] = '\035\112\114\101\115\101\110\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049'}, ['\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\036\097\114\103\115', ['\116\097\103'] = '\099\097\108\108', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\067\079\076\079\078', [2] = '\078\097\109\101', [3] = '\036\097\114\103\115', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\076\066\082\065\067\075', [2] = '\036\101\120\112', [3] = '\082\066\082\065\067\075', ['\097\099\116\105\111\110'] = nil}, [4] = {[1] = '\080\069\082\073\079\068', [2] = '\078\097\109\101', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049'}, ['\115\116\097\116\039\103\114\111\117\112\035\050'] = {[1] = {[1] = '\036\110\097\109\101\108\105\115\116', [2] = '\073\078', [3] = '\036\101\120\112\108\105\115\116', [4] = '\068\079', [5] = '\036\098\108\111\099\107', [6] = '\069\078\068', ['\116\097\103'] = '\102\111\114\101\097\099\104', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\078\097\109\101', [2] = '\069\081', [3] = '\036\101\120\112', [4] = '\067\079\077\077\065', [5] = '\036\101\120\112', [6] = '\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049', [7] = '\068\079', [8] = '\036\098\108\111\099\107', [9] = '\069\078\068', ['\116\097\103'] = '\102\111\114\099\111\117\110\116\101\114', ['\097\099\116\105\111\110'] = nil}, ['\099\111\110\102\108\105\099\116'] = {['\078\097\109\101'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\103\114\111\117\112\035\050'}, ['\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\067\079\077\077\065', [2] = '\036\101\120\112', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\108\105\115\116\039\103\114\111\117\112\035\049'}, ['\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\115\116\097\116\039\103\114\111\117\112\035\050\039\103\114\111\117\112\035\049', ['\116\097\103'] = '\035\112\114\101\115\101\110\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\103\114\111\117\112\035\050\039\109\097\121\098\101\035\049'}, ['\115\116\097\116\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\036\110\097\109\101\108\105\115\116', [2] = '\036\115\116\097\116\039\103\114\111\117\112\035\049\039\109\097\121\098\101\035\049', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\070\085\078\067\084\073\079\078', [2] = '\078\097\109\101', [3] = '\036\102\117\110\099\098\111\100\121', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\103\114\111\117\112\035\049'}, ['\097\114\103\115'] = {[1] = {[1] = '\083\116\114\105\110\103', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\036\116\097\098\108\101\099\111\110\115\116\114\117\099\116\111\114', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\076\080\065\082\069\078', [2] = '\036\097\114\103\115\039\109\097\121\098\101\035\049', [3] = '\082\080\065\082\069\078', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\097\114\103\115'}, ['\101\120\112\055'] = {[1] = {[1] = '\036\101\120\112\056', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\036\108\101\118\101\108\055', [2] = '\036\101\120\112\055', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\055'}, ['\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\067\079\077\077\065', [2] = '\078\097\109\101', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049'}, ['\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\110\097\109\101\108\105\115\116\039\103\114\111\117\112\035\049', [2] = '\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049', ['\116\097\103'] = '\035\108\105\115\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049'}, ['\101\120\112\053\039'] = {[1] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\036\108\101\118\101\108\053', [2] = '\036\101\120\112\054', [3] = '\036\101\120\112\053\039', ['\116\097\103'] = '\109\105\110\117\115', ['\097\099\116\105\111\110'] = nil}, ['\099\111\110\102\108\105\099\116'] = {['\077\073\078'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\053\039'}, ['\097\114\103\115\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\101\120\112\108\105\115\116', ['\116\097\103'] = '\035\112\114\101\115\101\110\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\097\114\103\115\039\109\097\121\098\101\035\049'}, ['\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\080\069\082\073\079\068', [2] = '\078\097\109\101', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\049'}, ['\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\102\117\110\099\110\097\109\101\039\103\114\111\117\112\035\050', ['\116\097\103'] = '\035\112\114\101\115\101\110\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\117\110\099\110\097\109\101\039\109\097\121\098\101\035\049'}, ['\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'] = {[1] = {[1] = '\068\079\084\083', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\078\097\109\101', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\050'}, ['\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'] = {[1] = {[1] = '\083\069\077\073\067\079\076\079\078', ['\116\097\103'] = '\035\112\114\101\115\101\110\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\050'}, ['\115\116\097\116\039\103\114\111\117\112\035\051'] = {[1] = {[1] = '\069\076\083\069\073\070', [2] = '\036\101\120\112', [3] = '\084\072\069\078', [4] = '\036\098\108\111\099\107', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\103\114\111\117\112\035\051'}, ['\110\097\109\101\108\105\115\116'] = {[1] = {[1] = '\078\097\109\101', [2] = '\036\110\097\109\101\108\105\115\116\039\115\116\097\114\035\049', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\110\097\109\101\108\105\115\116'}, ['\101\120\112\056\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\036\108\101\118\101\108\056', [2] = '\036\101\120\112\056', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\056\039\103\114\111\117\112\035\049'}, ['\102\105\101\108\100\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\102\105\101\108\100\115\101\112', ['\116\097\103'] = '\035\112\114\101\115\101\110\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\105\101\108\100\039\109\097\121\098\101\035\049'}, ['\101\120\112\056'] = {[1] = {[1] = '\036\101\120\112\095\115\116\111\112', [2] = '\036\101\120\112\056\039\109\097\121\098\101\035\049', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\056'}, ['\101\120\112\108\105\115\116'] = {[1] = {[1] = '\036\101\120\112', [2] = '\036\101\120\112\108\105\115\116\039\115\116\097\114\035\049', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\108\105\115\116'}, ['\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\115\117\102\102\105\120', [2] = '\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049', ['\116\097\103'] = '\035\108\105\115\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\099\111\110\102\108\105\099\116'] = {['\076\080\065\082\069\078'] = nil, ['\076\066\082\065\067\075'] = nil, ['\083\116\114\105\110\103'] = nil, ['\076\066\082\065\067\069'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\095\115\116\111\112\039\115\116\097\114\035\049'}, ['\102\105\101\108\100\039\109\097\121\098\101\035\050'] = {[1] = {[1] = '\036\102\105\101\108\100\115\101\112', ['\116\097\103'] = '\035\112\114\101\115\101\110\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\105\101\108\100\039\109\097\121\098\101\035\050'}, ['\102\105\101\108\100\039\109\097\121\098\101\035\051'] = {[1] = {[1] = '\036\102\105\101\108\100\115\101\112', ['\116\097\103'] = '\035\112\114\101\115\101\110\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\105\101\108\100\039\109\097\121\098\101\035\051'}, ['\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\103\114\111\117\112\035\049', [2] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049', ['\116\097\103'] = '\035\108\105\115\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\099\111\110\102\108\105\099\116'] = {['\076\080\065\082\069\078'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049'}, ['\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\069\081', [2] = '\036\101\120\112\108\105\115\116', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\103\114\111\117\112\035\049\039\103\114\111\117\112\035\049'}, ['\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\078\097\109\101', [2] = '\067\079\077\077\065', ['\116\097\103'] = '\110\097\109\101\108\105\115\116', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049'}, ['\102\105\101\108\100\115\101\112'] = {[1] = {[1] = '\083\069\077\073\067\079\076\079\078', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\067\079\077\077\065', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\102\105\101\108\100\115\101\112'}, ['\101\120\112\052\039\103\114\111\117\112\035\049'] = {[1] = {[1] = '\036\108\101\118\101\108\052', [2] = '\036\101\120\112\052', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\052\039\103\114\111\117\112\035\049'}, ['\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'] = {[1] = {[1] = '\036\112\114\105\109\097\114\121\101\120\112', [2] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\115\116\097\114\035\049', [3] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108\039\109\097\121\098\101\035\049', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108'}, ['\108\101\118\101\108\050'] = {[1] = {[1] = '\065\078\068', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\101\118\101\108\050'}, ['\115\116\097\116'] = {[1] = {[1] = '\076\079\067\065\076', [2] = '\036\115\116\097\116\039\103\114\111\117\112\035\049', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\070\085\078\067\084\073\079\078', [2] = '\036\102\117\110\099\110\097\109\101', [3] = '\036\102\117\110\099\098\111\100\121', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\070\079\082', [2] = '\036\115\116\097\116\039\103\114\111\117\112\035\050', ['\097\099\116\105\111\110'] = nil}, [4] = {[1] = '\073\070', [2] = '\036\101\120\112', [3] = '\084\072\069\078', [4] = '\036\098\108\111\099\107', [5] = '\036\115\116\097\116\039\115\116\097\114\035\049', [6] = '\036\115\116\097\116\039\109\097\121\098\101\035\049', [7] = '\069\078\068', ['\097\099\116\105\111\110'] = nil}, [5] = {[1] = '\082\069\080\069\065\084', [2] = '\036\098\108\111\099\107', [3] = '\085\078\084\073\076', [4] = '\036\101\120\112', ['\097\099\116\105\111\110'] = nil}, [6] = {[1] = '\087\072\073\076\069', [2] = '\036\101\120\112', [3] = '\068\079', [4] = '\036\098\108\111\099\107', [5] = '\069\078\068', ['\097\099\116\105\111\110'] = nil}, [7] = {[1] = '\068\079', [2] = '\036\098\108\111\099\107', [3] = '\069\078\068', ['\097\099\116\105\111\110'] = nil}, [8] = {[1] = '\071\079\084\079', [2] = '\078\097\109\101', ['\097\099\116\105\111\110'] = nil}, [9] = {[1] = '\066\082\069\065\075', ['\097\099\116\105\111\110'] = nil}, [10] = {[1] = '\036\108\097\098\101\108', ['\097\099\116\105\111\110'] = nil}, [11] = {[1] = '\036\097\115\115\105\103\110\109\101\110\116\095\111\114\095\099\097\108\108', ['\097\099\116\105\111\110'] = nil}, [12] = {[1] = '\083\069\077\073\067\079\076\079\078', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116'}, ['\101\120\112\052'] = {[1] = {[1] = '\036\101\120\112\053', [2] = '\036\101\120\112\052\039\109\097\121\098\101\035\049', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\052'}, ['\115\116\097\116\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\115\116\097\116\039\103\114\111\117\112\035\052', ['\116\097\103'] = '\035\112\114\101\115\101\110\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\116\097\116\039\109\097\121\098\101\035\049'}, ['\115\117\102\102\105\120'] = {[1] = {[1] = '\036\097\114\103\115', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\067\079\076\079\078', [2] = '\078\097\109\101', [3] = '\036\097\114\103\115', ['\097\099\116\105\111\110'] = nil}, [3] = {[1] = '\076\066\082\065\067\075', [2] = '\036\101\120\112', [3] = '\082\066\082\065\067\075', ['\097\099\116\105\111\110'] = nil}, [4] = {[1] = '\080\069\082\073\079\068', [2] = '\078\097\109\101', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\115\117\102\102\105\120'}, ['\112\097\114\108\105\115\116\039\115\116\097\114\035\049'] = {[1] = {[1] = '\036\112\097\114\108\105\115\116\039\103\114\111\117\112\035\049', [2] = '\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049', ['\116\097\103'] = '\035\108\105\115\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\099\111\110\102\108\105\099\116'] = {['\078\097\109\101'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\112\097\114\108\105\115\116\039\115\116\097\114\035\049'}, ['\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'] = {[1] = {[1] = '\036\101\120\112\108\105\115\116', ['\116\097\103'] = '\035\112\114\101\115\101\110\116', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\114\101\116\115\116\097\116\039\109\097\121\098\101\035\049'}, ['\108\101\118\101\108\052'] = {[1] = {[1] = '\067\079\078\067\065\084', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\101\118\101\108\052'}, ['\108\101\118\101\108\053'] = {[1] = {[1] = '\077\073\078', ['\097\099\116\105\111\110'] = nil}, [2] = {[1] = '\080\076\085\083', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\108\101\118\101\108\053'}, ['\101\120\112\050'] = {[1] = {[1] = '\036\101\120\112\051', [2] = '\036\101\120\112\050\039', ['\097\099\116\105\111\110'] = nil}, ['\118\097\114\105\097\098\108\101'] = '\036\101\120\112\050'}}} \ No newline at end of file diff --git a/lua/tokenizer.lua b/luainlua/lua/tokenizer.lua similarity index 95% rename from lua/tokenizer.lua rename to luainlua/lua/tokenizer.lua index 3cc679a..d14f9e0 100644 --- a/lua/tokenizer.lua +++ b/luainlua/lua/tokenizer.lua @@ -1,210 +1,210 @@ -local lex = require 'parsing.lex' -local re = require 'parsing.re' - ---[[-- -// Character classes of tokens -%production Name "class of valid identifiers" -%production String "class of valid strings" -%production Number "class of valid numbers" - -%production FUNCTION -%production EQ -%production COMMA -%production QUAD -%production PERIOD -%production LPAREN -%production RPAREN -%production END -%production SEMICOLON -%production LBRACE -%production RBRACE -%production OR -%production AND -%production NOTEQ -%production EQEQ -%production GE -%production GT -%production LE -%production LT -%production CONCAT -%production MOD -%production POW -%production DIV -%production MUL -%production MIN -%production PLUS -%production LBRACK -%production RBRACK -%production LOCAL -%production FOR -%production IF -%production THEN -%production REPEAT -%production UNTIL -%production WHILE -%production DO -%production GOTO -%production BREAK -%production IN -%production RETURN -%production DOTS -%production TRUE -%production FALSE -%production NIL -%production ELSE -%production ELSEIF -%production HASH -%production NOT -%production COLON ---]]-- - -local longcomment -local longstringprefix -local longstring -local str_prefix -local str -local start_position - ---[[ -| < NUMBER: | > -| < #FLOAT: ()? > -| < #FNUM: ()+ "." ()* | "." ()+ | ()+ > -| < #DIGIT: ["0"-"9"] > -| < #EXP: ["e","E"] (["+","-"])? ()+ > -| < #HEX: "0" ["x","X"] ()? > -| < #HEXNUM: ()+ "." ()* | "." ()+ | ()+ > -| < #HEXDIGIT: ["0"-"9","a"-"f","A"-"F"] > -| < #HEXEXP: ["e","E","p","P"] (["+","-"])? ()+ > ---]] - -local DIGIT = '%d' -local HEXEXP = ('[eEpP][+-]?%s+'):format(DIGIT) -local HEXDIGIT = '[0-9a-fA-F]' -local HEXNUM = ('(%s)+%s(%s)*|%s(%s)+|(%s)+'):format(HEXDIGIT, '%.', HEXDIGIT, '%.', HEXDIGIT, HEXDIGIT) -local HEX = ('0[xX](%s)(%s)?'):format(HEXNUM, HEXEXP) -local EXP = ('[eE][+-]?%s+'):format(DIGIT) -local FNUM = ('%s+%s%s*|%s%s+|%s+'):format(DIGIT, '[.]', DIGIT, '[.]', DIGIT, DIGIT) -local FLOAT = ('(%s)(%s)?'):format(FNUM, EXP) - -local function id(token) return function(x, lexer) return {token, x, location = lexer:get_location()} end end -local function ignore(...) return end -local function pop(stack) return table.remove(stack) end -local function push(item, stack) table.insert(stack, item) end - -return lex.lex { - root = { - {'(', id 'LPAREN'}, - {',', id 'COMMA'}, - {':', id 'COLON'}, - {']', id 'RBRACK'}, - {'.', id 'PERIOD'}, - {'~=', id 'NOTEQ'}, - {'==', id 'EQEQ'}, - {'>=', id 'GE'}, - {'>', id 'GT'}, - {'<=', id 'LE'}, - {'<', id 'LT'}, - {'..', id 'CONCAT'}, - {'%', id 'MOD'}, - {'^', id 'POW'}, - {'/', id 'DIV'}, - {'*', id 'MUL'}, - {'+', id 'PLUS'}, - {'=', id 'EQ'}, - {'#', id 'HASH'}, - {')', id 'RPAREN'}, - {';', id 'SEMICOLON'}, - {'...', id 'DOTS'}, - {'{', id 'LBRACE'}, - {'}', id 'RBRACE'}, - {'::', id 'QUAD'}, - {'function', id 'FUNCTION'}, - {'true', id 'TRUE'}, - {'false', id 'FALSE'}, - {'nil', id 'NIL'}, - {'or', id 'OR'}, - {'and', id 'AND'}, - {'return', id 'RETURN'}, - {'local', id 'LOCAL'}, - {'for', id 'FOR'}, - {'in', id 'IN'}, - {'do', id 'DO'}, - {'end', id 'END'}, - {'if', id 'IF'}, - {'not', id 'NOT'}, - {'then', id 'THEN'}, - {'else', id 'ELSE'}, - {'elseif', id 'ELSEIF'}, - {'repeat', id 'REPEAT'}, - {'until', id 'UNTIL'}, - {'while', id 'WHILE'}, - {'goto', id 'GOTO'}, - {'break', id 'BREAK'}, - - {re '(%a|_)(%a|%d|_)*', id 'Name'}, - {re '%s+', ignore}, - - {re '--[[', function(_, lexer) lexer:go 'longcomment' end}, - {re '--[=[', function(_, lexer) lexer:go 'longcomment1' end}, - {re '--[==+[', function(piece, lexer) start_position = lexer:get_location()[1]; longcomment = piece; lexer:go 'longcommentn' end}, - {re '--[^\n]*', ignore}, - {re '[[', function(_, lexer) start_position = lexer:get_location()[1]; longstring = ''; lexer:go 'longstring' end}, - {re '[=[', function(_, lexer) start_position = lexer:get_location()[1]; longstring = ''; lexer:go 'longstring1' end}, - {re '[==+[', function(piece, lexer) start_position = lexer:get_location()[1]; longstring = ''; longstringprefix = piece; lexer:go 'longstringn' end}, - {re '-', id 'MIN'}, - {re '[', id 'LBRACK'}, - - {re '"|\'', function(piece, lexer) start_position = lexer:get_location()[1]; str_prefix = piece; str = ''; lexer:go 'string' end}, - - {re(('(%s)|(%s)'):format(HEX, FLOAT)), id 'Number'}, - }, - string = { - {re '[^\'"\\]+', function(piece) str = str .. piece end}, - {re '\\"|\\\'', function(piece) str = str .. piece:sub(2, 2) end}, - {re '"|\'', - function(piece, lexer) - if piece == str_prefix then - lexer:go 'root' - return {'String', str, location = {start_position, lexer:get_location()[2]}} - else - str = str .. piece - end - end}, - {re '.', function(piece) str = str .. piece end}, - }, - longcomment = { - {re '.', ignore}, - {']]', function(_, lexer) lexer:go 'root' end}, - }, - longcomment1 = { - {re '.', ignore}, - {']=]', function(_, lexer) lexer:go 'root' end}, - }, - longcommentn = { - {re ']==+]', - function(piece, lexer) - if (2 + #piece) == #longcomment then - lexer:go 'root' - end - end}, - {re '.', ignore}, - }, - longstring = { - {re '.', function(c) longstring = longstring .. c end}, - {']]', function(_, lexer) lexer:go 'root'; return {'String', longstring, location = {start_position, lexer:get_location()[2]}} end}, - }, - longstring1 = { - {re '.', function(c) longstring = longstring .. c end}, - {']=]', function(_, lexer) lexer:go 'root'; return {'String', longstring, location = {start_position, lexer:get_location()[2]}} end}, - }, - longstringn = { - {re ']==+]', - function(piece, lexer) - if #piece == #longstringprefix then - lexer:go 'root' - return {'String', longstring, location = {start_position, lexer:get_location()[2]}} - end - end}, - {re '.', function(c) longstring = longstring .. c end}, - }, +local lex = require 'luainlua.parsing.lex' +local re = require 'luainlua.parsing.re' + +--[[-- +// Character classes of tokens +%production Name "class of valid identifiers" +%production String "class of valid strings" +%production Number "class of valid numbers" + +%production FUNCTION +%production EQ +%production COMMA +%production QUAD +%production PERIOD +%production LPAREN +%production RPAREN +%production END +%production SEMICOLON +%production LBRACE +%production RBRACE +%production OR +%production AND +%production NOTEQ +%production EQEQ +%production GE +%production GT +%production LE +%production LT +%production CONCAT +%production MOD +%production POW +%production DIV +%production MUL +%production MIN +%production PLUS +%production LBRACK +%production RBRACK +%production LOCAL +%production FOR +%production IF +%production THEN +%production REPEAT +%production UNTIL +%production WHILE +%production DO +%production GOTO +%production BREAK +%production IN +%production RETURN +%production DOTS +%production TRUE +%production FALSE +%production NIL +%production ELSE +%production ELSEIF +%production HASH +%production NOT +%production COLON +--]]-- + +local longcomment +local longstringprefix +local longstring +local str_prefix +local str +local start_position + +--[[ +| < NUMBER: | > +| < #FLOAT: ()? > +| < #FNUM: ()+ "." ()* | "." ()+ | ()+ > +| < #DIGIT: ["0"-"9"] > +| < #EXP: ["e","E"] (["+","-"])? ()+ > +| < #HEX: "0" ["x","X"] ()? > +| < #HEXNUM: ()+ "." ()* | "." ()+ | ()+ > +| < #HEXDIGIT: ["0"-"9","a"-"f","A"-"F"] > +| < #HEXEXP: ["e","E","p","P"] (["+","-"])? ()+ > +--]] + +local DIGIT = '%d' +local HEXEXP = ('[eEpP][+-]?%s+'):format(DIGIT) +local HEXDIGIT = '[0-9a-fA-F]' +local HEXNUM = ('(%s)+%s(%s)*|%s(%s)+|(%s)+'):format(HEXDIGIT, '%.', HEXDIGIT, '%.', HEXDIGIT, HEXDIGIT) +local HEX = ('0[xX](%s)(%s)?'):format(HEXNUM, HEXEXP) +local EXP = ('[eE][+-]?%s+'):format(DIGIT) +local FNUM = ('%s+%s%s*|%s%s+|%s+'):format(DIGIT, '[.]', DIGIT, '[.]', DIGIT, DIGIT) +local FLOAT = ('(%s)(%s)?'):format(FNUM, EXP) + +local function id(token) return function(x, lexer) return {token, x, location = lexer:get_location()} end end +local function ignore(...) return end +local function pop(stack) return table.remove(stack) end +local function push(item, stack) table.insert(stack, item) end + +return lex.lex { + root = { + {'(', id 'LPAREN'}, + {',', id 'COMMA'}, + {':', id 'COLON'}, + {']', id 'RBRACK'}, + {'.', id 'PERIOD'}, + {'~=', id 'NOTEQ'}, + {'==', id 'EQEQ'}, + {'>=', id 'GE'}, + {'>', id 'GT'}, + {'<=', id 'LE'}, + {'<', id 'LT'}, + {'..', id 'CONCAT'}, + {'%', id 'MOD'}, + {'^', id 'POW'}, + {'/', id 'DIV'}, + {'*', id 'MUL'}, + {'+', id 'PLUS'}, + {'=', id 'EQ'}, + {'#', id 'HASH'}, + {')', id 'RPAREN'}, + {';', id 'SEMICOLON'}, + {'...', id 'DOTS'}, + {'{', id 'LBRACE'}, + {'}', id 'RBRACE'}, + {'::', id 'QUAD'}, + {'function', id 'FUNCTION'}, + {'true', id 'TRUE'}, + {'false', id 'FALSE'}, + {'nil', id 'NIL'}, + {'or', id 'OR'}, + {'and', id 'AND'}, + {'return', id 'RETURN'}, + {'local', id 'LOCAL'}, + {'for', id 'FOR'}, + {'in', id 'IN'}, + {'do', id 'DO'}, + {'end', id 'END'}, + {'if', id 'IF'}, + {'not', id 'NOT'}, + {'then', id 'THEN'}, + {'else', id 'ELSE'}, + {'elseif', id 'ELSEIF'}, + {'repeat', id 'REPEAT'}, + {'until', id 'UNTIL'}, + {'while', id 'WHILE'}, + {'goto', id 'GOTO'}, + {'break', id 'BREAK'}, + + {re '(%a|_)(%a|%d|_)*', id 'Name'}, + {re '%s+', ignore}, + + {re '--[[', function(_, lexer) lexer:go 'longcomment' end}, + {re '--[=[', function(_, lexer) lexer:go 'longcomment1' end}, + {re '--[==+[', function(piece, lexer) start_position = lexer:get_location()[1]; longcomment = piece; lexer:go 'longcommentn' end}, + {re '--[^\n]*', ignore}, + {re '[[', function(_, lexer) start_position = lexer:get_location()[1]; longstring = ''; lexer:go 'longstring' end}, + {re '[=[', function(_, lexer) start_position = lexer:get_location()[1]; longstring = ''; lexer:go 'longstring1' end}, + {re '[==+[', function(piece, lexer) start_position = lexer:get_location()[1]; longstring = ''; longstringprefix = piece; lexer:go 'longstringn' end}, + {re '-', id 'MIN'}, + {re '[', id 'LBRACK'}, + + {re '"|\'', function(piece, lexer) start_position = lexer:get_location()[1]; str_prefix = piece; str = ''; lexer:go 'string' end}, + + {re(('(%s)|(%s)'):format(HEX, FLOAT)), id 'Number'}, + }, + string = { + {re '[^\'"\\]+', function(piece) str = str .. piece end}, + {re '\\"|\\\'', function(piece) str = str .. piece:sub(2, 2) end}, + {re '"|\'', + function(piece, lexer) + if piece == str_prefix then + lexer:go 'root' + return {'String', str, location = {start_position, lexer:get_location()[2]}} + else + str = str .. piece + end + end}, + {re '.', function(piece) str = str .. piece end}, + }, + longcomment = { + {re '.', ignore}, + {']]', function(_, lexer) lexer:go 'root' end}, + }, + longcomment1 = { + {re '.', ignore}, + {']=]', function(_, lexer) lexer:go 'root' end}, + }, + longcommentn = { + {re ']==+]', + function(piece, lexer) + if (2 + #piece) == #longcomment then + lexer:go 'root' + end + end}, + {re '.', ignore}, + }, + longstring = { + {re '.', function(c) longstring = longstring .. c end}, + {']]', function(_, lexer) lexer:go 'root'; return {'String', longstring, location = {start_position, lexer:get_location()[2]}} end}, + }, + longstring1 = { + {re '.', function(c) longstring = longstring .. c end}, + {']=]', function(_, lexer) lexer:go 'root'; return {'String', longstring, location = {start_position, lexer:get_location()[2]}} end}, + }, + longstringn = { + {re ']==+]', + function(piece, lexer) + if #piece == #longstringprefix then + lexer:go 'root' + return {'String', longstring, location = {start_position, lexer:get_location()[2]}} + end + end}, + {re '.', function(c) longstring = longstring .. c end}, + }, } \ No newline at end of file diff --git a/luac.lua b/luainlua/luac.lua similarity index 72% rename from luac.lua rename to luainlua/luac.lua index 3a2a568..55d4641 100644 --- a/luac.lua +++ b/luainlua/luac.lua @@ -1,44 +1,52 @@ --- Compiles and loads a piece of lua code -local parser = require 'lua.parser' -local compiler = require 'lua.compiler' -local dump = require 'bytecode.dump' -local utils = require 'common.utils' - -local function main(file) - local tree = parser(io.open(file, 'r'):read('*all')) - local prototype = compiler(tree) - local bytecode = dump.dump(prototype) - local func, err = loadstring(tostring(bytecode)) - - local function dumper_(proto, level) - local indent = (' '):rep(level) - print(indent .. 'Level ' .. level) - print(indent .. "Code") - for pc, op in ipairs(proto.code) do - print(indent .. pc, '(line ' .. proto.debug.lineinfo[pc] .. ')', op) - end - print(indent .. "Constants") - for id, const in ipairs(proto.constants) do - print(indent .. id, const) - end - print(indent .. "Upvalues") - for id, up in ipairs(proto.upvalues) do - print(indent .. id - 1, proto.debug.upvalues[id], up.instack == 1 and 'local' or 'upval', up.index) - end - for func in utils.loop(proto.constants.functions) do - dumper_(func, level + 1) - end - end - local function dumper() - dumper_(prototype, 0) - end - - if err then - print("Error during bytecode loading, dumping state...") - dumper() - error(err) - end - return func, bytecode, prototype, dumper -end - -return main \ No newline at end of file +-- Compiles and loads a piece of lua code +local parser = require 'luainlua.lua.parser' +local compiler = require 'luainlua.lua.compiler' +local dump = require 'luainlua.bytecode.dump' +local utils = require 'luainlua.common.utils' + +local function compile(code) + local tree = parser(code) + local prototype = compiler(tree) + local bytecode = dump.dump(prototype) + local func, err = loadstring(tostring(bytecode)) + + local function dumper_(proto, level) + local indent = (' '):rep(level) + print(indent .. 'Level ' .. level) + print(indent .. "Code") + for pc, op in ipairs(proto.code) do + print(indent .. pc, '(line ' .. proto.debug.lineinfo[pc] .. ')', op) + end + print(indent .. "Constants") + for id, const in ipairs(proto.constants) do + print(indent .. id, const) + end + print(indent .. "Upvalues") + for id, up in ipairs(proto.upvalues) do + print(indent .. id - 1, proto.debug.upvalues[id], up.instack == 1 and 'local' or 'upval', up.index) + end + for func in utils.loop(proto.constants.functions) do + dumper_(func, level + 1) + end + end + local function dumper() + dumper_(prototype, 0) + end + + if err then + print("Error during bytecode loading, dumping state...") + dumper() + error(err) + end + return func, bytecode, prototype, dumper +end + +local function main(file) + return compile(io.open(file, 'r'):read('*all')) +end + + +local luac = {} +luac.compile = compile +luac.luac = main +return luac \ No newline at end of file diff --git a/parsing/lex.lua b/luainlua/parsing/lex.lua similarity index 95% rename from parsing/lex.lua rename to luainlua/parsing/lex.lua index 4d9526b..e34ea42 100644 --- a/parsing/lex.lua +++ b/luainlua/parsing/lex.lua @@ -1,154 +1,154 @@ --- Use regular expressions to compile and construct a tokenizer --- A tokenizer is an iterator over strings - -local lex = {} -local re = require "parsing.re" -local alphabetical = re.compile("[a-zA-Z0-9_]") - -local function lexicographical(a, b) - assert(type(a) == 'string' and type(b) == 'string') - return a > b -end - -local function boundary(last, first) - -- make sure that alpha(last) xor alpha(first) - if not last then return false end - if not first then return true end - local alpha_last = alphabetical:match(last) - local alpha_first = alphabetical:match(first) - return (alpha_last and not alpha_first) or (not alpha_last) -end - -local function peek(word, n) - if n > #word then - return nil - end - return word:sub(n, n) -end - -local context = {} -function context:next() - -- consume off of the current using the current configuration state - local action_node = self.configuration[self.state] - local current = self.current - local first = self:position() - if #current == 0 then return end - - -- go through the set of words and see if any of them matches - for _, word in ipairs(action_node.words) do - if current:sub(1, #word) == word and boundary(word:sub(-1), peek(current, #word + 1)) then - -- matched a word, so consume and go on - self.current = current:sub(#word + 1) - local last = self:position() - self:set_location(first, last) --- print(word, first, last, self:get_location()[1][2], self:get_location()[2][2]) - return action_node.word_map[word](word, self) - end - end - - -- go through the automatons next - for _, automaton in ipairs(action_node.local_automatons) do - local word, history = automaton:match(current) - if word then - self.current = current:sub(#word + 1) - local last = self:position() - self:set_location(first, last) --- print(word, first, last, self:get_location()[1][2], self:get_location()[2][2]) - return action_node.automaton_map[automaton.pattern](word, self) - end - end - - error('Not tokenizable in ' .. self.state .. ': ' .. self.current) -end - -function context:go(state) - assert(self.configuration[state], ("State %s does not exist."):format(state)) - assert(self.configuration.state ~= state, ("You are already in state %s."):format(state)) - self.state = state -end - -function context:position() - return #self.string - #self.current + 1 -end - -function context:set_location(first, last) - local first_line = self:get_line_of(first) - local last_line = self:get_line_of(last) - self.location = {{first, first_line}, {last, last_line}} -end - -function context:get_location() - return self.location -end - -function context:get_line_of(position) - -- TODO: binary search instead - for line, stopper in ipairs(self.newlines) do - if stopper >= position then return line end - end - return 1 -end - -local function new_context(configuration, str) - local ctx = { - configuration = configuration, - state = 'root', - string = str, - current = str, - location = {0, 0}, - newlines = {} - } - -- compute the locations of all of the newlines - for i = 1, #str do - if str:byte(i) == 10 then - table.insert(ctx.newlines, i) - end - end - table.insert(ctx.newlines, #str) - setmetatable(ctx, {__index = context}) - return ctx -end - -function lex.lex(actions) - -- action maps a name -> regex -> action function - -- think of it as a giant alternation that takes ordering into consideration - local configuration = {} - for name, action in pairs(actions) do - local word_map = {} - local automaton_map = {} - local words = {} - local local_automatons = {} - for _, bundle in ipairs(action) do - local sigil, act = unpack(bundle) - if type(sigil) == 'string' then - table.insert(words, sigil) - word_map[sigil] = act - else - table.insert(local_automatons, sigil) - automaton_map[sigil.pattern] = act - end - end - table.sort(words, lexicographical) - local action_node = { - word_map = word_map, - automaton_map = automaton_map, - words = words, - local_automatons = local_automatons} - configuration[name] = action_node - end - return function(str) - local context = new_context(configuration, str) - return function() - local token = context:next() - while not token and #context.current ~= 0 do - token = context:next() - end - if not token and #context.current == 0 and context.state ~= 'root' then - error('Unexpectedly terminated in state ' .. context.state) - end - return token - end - end -end - +-- Use regular expressions to compile and construct a tokenizer +-- A tokenizer is an iterator over strings + +local lex = {} +local re = require "luainlua.parsing.re" +local alphabetical = re.compile("[a-zA-Z0-9_]") + +local function lexicographical(a, b) + assert(type(a) == 'string' and type(b) == 'string') + return a > b +end + +local function boundary(last, first) + -- make sure that alpha(last) xor alpha(first) + if not last then return false end + if not first then return true end + local alpha_last = alphabetical:match(last) + local alpha_first = alphabetical:match(first) + return (alpha_last and not alpha_first) or (not alpha_last) +end + +local function peek(word, n) + if n > #word then + return nil + end + return word:sub(n, n) +end + +local context = {} +function context:next() + -- consume off of the current using the current configuration state + local action_node = self.configuration[self.state] + local current = self.current + local first = self:position() + if #current == 0 then return end + + -- go through the set of words and see if any of them matches + for _, word in ipairs(action_node.words) do + if current:sub(1, #word) == word and boundary(word:sub(-1), peek(current, #word + 1)) then + -- matched a word, so consume and go on + self.current = current:sub(#word + 1) + local last = self:position() + self:set_location(first, last) +-- print(word, first, last, self:get_location()[1][2], self:get_location()[2][2]) + return action_node.word_map[word](word, self) + end + end + + -- go through the automatons next + for _, automaton in ipairs(action_node.local_automatons) do + local word, history = automaton:match(current) + if word then + self.current = current:sub(#word + 1) + local last = self:position() + self:set_location(first, last) +-- print(word, first, last, self:get_location()[1][2], self:get_location()[2][2]) + return action_node.automaton_map[automaton.pattern](word, self) + end + end + + error('Not tokenizable in ' .. self.state .. ': ' .. self.current) +end + +function context:go(state) + assert(self.configuration[state], ("State %s does not exist."):format(state)) + assert(self.configuration.state ~= state, ("You are already in state %s."):format(state)) + self.state = state +end + +function context:position() + return #self.string - #self.current + 1 +end + +function context:set_location(first, last) + local first_line = self:get_line_of(first) + local last_line = self:get_line_of(last) + self.location = {{first, first_line}, {last, last_line}} +end + +function context:get_location() + return self.location +end + +function context:get_line_of(position) + -- TODO: binary search instead + for line, stopper in ipairs(self.newlines) do + if stopper >= position then return line end + end + return 1 +end + +local function new_context(configuration, str) + local ctx = { + configuration = configuration, + state = 'root', + string = str, + current = str, + location = {0, 0}, + newlines = {} + } + -- compute the locations of all of the newlines + for i = 1, #str do + if str:byte(i) == 10 then + table.insert(ctx.newlines, i) + end + end + table.insert(ctx.newlines, #str) + setmetatable(ctx, {__index = context}) + return ctx +end + +function lex.lex(actions) + -- action maps a name -> regex -> action function + -- think of it as a giant alternation that takes ordering into consideration + local configuration = {} + for name, action in pairs(actions) do + local word_map = {} + local automaton_map = {} + local words = {} + local local_automatons = {} + for _, bundle in ipairs(action) do + local sigil, act = unpack(bundle) + if type(sigil) == 'string' then + table.insert(words, sigil) + word_map[sigil] = act + else + table.insert(local_automatons, sigil) + automaton_map[sigil.pattern] = act + end + end + table.sort(words, lexicographical) + local action_node = { + word_map = word_map, + automaton_map = automaton_map, + words = words, + local_automatons = local_automatons} + configuration[name] = action_node + end + return function(str) + local context = new_context(configuration, str) + return function() + local token = context:next() + while not token and #context.current ~= 0 do + token = context:next() + end + if not token and #context.current == 0 and context.state ~= 'root' then + error('Unexpectedly terminated in state ' .. context.state) + end + return token + end + end +end + return lex \ No newline at end of file diff --git a/parsing/ll1_grammar.lua b/luainlua/parsing/ll1_grammar.lua similarity index 92% rename from parsing/ll1_grammar.lua rename to luainlua/parsing/ll1_grammar.lua index 77be711..5816dc9 100644 --- a/parsing/ll1_grammar.lua +++ b/luainlua/parsing/ll1_grammar.lua @@ -1,665 +1,670 @@ --- Frontend parser for the parser ---[[-- -Here's the grammar we're looking for - -root := $top - -top_opts := CONVERT CODE top_opt' | DEFAULT CODE top_opt' | PROLOGUE CODE top_opt' | EPILOGUE CODE top_opt' | TOP_LEVEL CODE top_opt' | QUOTE QUOTED $valid_rhs | RESOLVE IDENTIFIER (IDENTIFIER | QUOTED;) CODE? -top_opts' := $top_opts | eps -production := PRODUCTION IDENTIFIER $production' -production' := STRING | eps -production_list := $production $production_list' -production_list' := eps | $production_list -single_rhs := IDENTIFIER | VARIABLE | EPS | QUOTED | '(' $rhs_list ') -valid_rhs := $single_rhs valid_postfix -valid_postfix := %eps | '+' | '*' | '?' -rhs_list := $valid_rhs $rhs_list_ -rhs_list_ := %eps | $rhs_list -top := $top_opts $top_no_convert | $top_no_convert -top_no_convert := $production_list $rules | $rules -nonterminal := TAG? $rhs_list $nonterminal' -nonterminal' := CODE nonterminal'' | REFERENCE nonterminal'' | SEMICOLON | OR $nonterminal -nonterminal'' := eps | OR $nonterminal -single_rule := IDENTIFIER GETS $nonterminal -rules_or_code := $single_rule $rules_or_code | CODE $rules_or_code -rules := $single_rule $rules_or_code | %eps ---]]-- - -local ll1 = require 'll1.ll1' -local utils = require 'common.utils' -local tokenizer = require 'parsing.ll1_tokenizer' - -local EPS = '' - -local id = function(...) return ... end -local ignore = function() return {} end - -local function flatten(configuration, object) - if object[1] == 'QUOTED' and configuration.quotes[object[2]] then - return configuration.quotes[object[2]] - else - if object[1] == 'QUOTED' then - print(("WARNING: '%s' does not have an associated identifier."):format(object[2])) - end - return object[2] - end -end - -local conf = {} -function conf:finalize() - if not self.convert then - self.convert = "function(token) return token[1] end" - end - if not self.default then - self.default = "__GRAMMAR__" - end - if not self.prologue then - print("WARNING", "You really should specify a prologue, which will convert a string into a list of tokens.") - self.prologue = [[ -function(str) - local tokens = {} - for token in str:gmatch("%S+") do - table.insert(tokens, {token}) - end - return tokens -end -]] - end - if not self.epilogue then - self.epilogue = 'function(...) return ... end' - end - if not self.top_level then - self.top_level = '' - end - if not self.file then - print("Warning", "Are you sure you want to disable caching of this grammar? Specify %FILE otherwise.") - end - if not self.requires then - self.requires = {'ll1.ll1'} - end - if not self.default_action then - self.default_action = 'function(...) return {...} end' - end - if not self.quotes then - self.quotes = {} - end - if not self.productions then - self.productions = {} - end - local conflict_resolvers = self.resolvers or {} - self.resolvers = {} - for variable, resolvers in pairs(conflict_resolvers) do - self.resolvers[variable] = {} - for conflict_resolver in utils.loop(resolvers) do - local conflict, action = unpack(conflict_resolver) - -- look up conflict in quotes - local conflict_id = flatten(self, conflict) - if action[1] == 'CODE' then - self.resolvers[variable][conflict_id] = action[2] - else - self.resolvers[variable][conflict_id] = 'error' - end - end - end - return self -end - -local function trim(s) - return s:match "^%s*(.-)%s*$" -end - -local function new_context(variable) - return { - name = function(self, name) - local index = '$'..name - if not self[index] then self[index] = 1 end - local result = ("%s'%s#%s"):format(variable, name, self[index]) - self[index] = self[index] + 1 - return result - end, - variable = function(self) - return variable - end - } -end - -local function star(object, variable) - return { - variable = '$' .. variable, - {object[2], '$' .. variable, tag = '#list', action = trim "function(item, list) table.insert(list, 1, item); return list end"}, - {'', action = trim "function() return {} end"}, - }, variable -end - -local synthesis = {} - -function synthesis.local_synthesis(configuration, raw_production, context) - -- depth first search - local raw_action = raw_production.action - local production = {} - local new_synthesis = {} - -- compute the action - if raw_action and raw_action[1] == 'CODE' then - production.action = raw_action[2] - elseif raw_action and raw_action[1] == 'REFERENCE' then - -- function(_1, _2, ...) - -- local all = {_1, _2, ...} - local n = #raw_production - local all = {} - for i = 1,n do table.insert(all, '_' .. i) end - all = table.concat(all, ', ') - production.action = trim([[ -function(%s) - return %s -end -]]):format(all, raw_action[2]:gsub("*all", all)) - end - production.tag = raw_production.tag - -- Each object in the raw production is either a token, a nonterminal, or a postfix, the last 2 induces new nonterminals - for raw_object in utils.loop(raw_production) do - if raw_object.kind == 'token' then - local object = (flatten(configuration, raw_object)) - table.insert(production, object) - elseif raw_object.kind == 'productions' then - -- second is a set of nonterminals, let's construct that - local variable = context:name('group') - table.insert(production, '$' .. variable) - local new_productions, new = synthesis.synthesize_nonterminals(configuration, variable, raw_object[2]) - table.insert(new_synthesis, new_productions) - for more in utils.loop(new) do - table.insert(new_synthesis, more) - end - elseif raw_object.kind == 'postfix' then - local variable = context:name(raw_object[1]) - local inner = raw_object[2] - table.insert(production, '$' .. variable) - -- The inner tree can be either a token or another list of productions. - if inner.kind == 'productions' then - -- take care of the inner group first - local inner_variable = context:name('group') - local new_productions, new = synthesis.synthesize_nonterminals(configuration, inner_variable, inner[2]) - inner = {'VARIABLE', '$' .. inner_variable, kind = 'token'} - table.insert(new_synthesis, new_productions) - for more in utils.loop(new) do - table.insert(new_synthesis, more) - end - else - inner[2] = flatten(configuration, inner) - end - assert(inner.kind == 'token') - -- Something* := %eps | Something Something* - -- Something+ := Something Something* - -- Something? := %eps | Something - if raw_object[1] == 'star' then - local new = star(inner, variable) - table.insert(new_synthesis, new) - elseif raw_object[1] == 'plus' then - local new_star, star_var = star(inner, context:name('star')) - local new_plus = { - variable = '$' .. variable, - {inner[2], '$' .. star_var, - tag = '#list', - action = trim [[ - function(item, list) - table.insert(list, 1, item) - return list - end -]]}} - table.insert(new_synthesis, new_star) - table.insert(new_synthesis, new_plus) - else - local new_maybe = { - variable = '$' .. variable, - {inner[2], tag = '#present', action = trim "function(item) return {item} end"}, - {'', action = trim "function() return {} end"}, - } - table.insert(new_synthesis, new_maybe) - end - else - error "Unknown kind" - end - end - return production, new_synthesis -end - -function synthesis.synthesize_nonterminals(configuration, variable, raw_productions) - local productions = {} - local new_synthesis = {} - local context = new_context(variable) - for raw_production in utils.loop(raw_productions) do - local production, more = synthesis.local_synthesis(configuration, raw_production, context) - table.insert(productions, production) - for new in utils.loop(more) do - table.insert(new_synthesis, new) - end - end - productions.variable = '$' .. variable - -- productions.synthesized_from = raw_productions - return productions, new_synthesis -end - -local function synthesize(configuration, raw) - local actions = {} - for variable, raw_productions in pairs(raw) do - local nonterminal, more = synthesis.synthesize_nonterminals(configuration, variable, raw_productions) - actions[variable] = nonterminal - for new in utils.loop(more) do - actions[new.variable:sub(2)] = new - end - end - return actions -end - -local grammar = ll1 { - 'parsing/ll1_parsing.table', - root = {{'$top', action = id}}, - conf = { - {'CONVERT', 'CODE', '$configuration_', - action = function(_, code, last) - assert(not last.convert, 'You\'ve already specified another converter.') - last.convert = code[2] - return last - end}, - {'DEFAULT', 'STRING', '$configuration_', - action = function(_, name, last) - assert(not last.default, 'You\'ve already specified another default name.') - last.default = name[2] - return last - end}, - {'PROLOGUE', 'CODE', '$configuration_', - action = function(_, code, last) - assert(not last.prologue, 'You\'ve already specified another prologue.') - last.prologue = code[2] - return last - end}, - {'EPILOGUE', 'CODE', '$configuration_', - action = function(_, code, last) - assert(not last.epilogue, 'You\'ve already specified another epilogue.') - last.epilogue = code[2] - return last - end}, - {'TOP_LEVEL', 'CODE', '$configuration_', - action = function(_, code, last) - if not last.top_level then last.top_level = '' end - last.top_level = trim(code[2]) .. '\n' .. last.top_level - return last - end}, - {'DEFAULT_ACTION', 'CODE', '$configuration_', - action = function(_, code, last) - assert(not last.default_action, 'You\'ve already specified another default action.') - last.default_action = code[2] - return last - end}, - {'FILE', 'STRING', '$configuration_', - action = function(_, file, last) - assert(not last.file, 'You\'ve already specified another file root.') - last.file = file[2] - return last - end}, - {'REQUIRE', 'STRING', '$configuration_', - action = function(_, namespace, last) - if not last.requires then last.requires = {'ll1.ll1'} end - if namespace[2] ~= 'll1.ll1' then - table.insert(last.requires, 1, namespace[2]) - end - return last - end}, - {'QUOTE', 'QUOTED', 'IDENTIFIER', '$configuration_', - action = function(_, quote, id, last) - if not last.quotes then last.quotes = {} end - last.quotes[quote[2]] = id[2] - return last - end}, - -- RESOLVE IDENTIFIER (IDENTIFIER | QUOTED;) CODE? - {'RESOLVE', 'IDENTIFIER', '$id_or_quote', '$code_opt', '$configuration_', - action = function(_, id, conflict, action, last) - if not last.resolvers then last.resolvers = {} end - if not last.resolvers[id[2]] then last.resolvers[id[2]] = {} end - table.insert(last.resolvers[id[2]], {conflict, action}) - return last - end}, - {'PRODUCTION', 'IDENTIFIER', '$production_', '$configuration_', - action = function(_, id, _, last) - if not last.productions then last.productions = {} end - last.productions[id[2]] = true - return last - end}, - }, - production_ = { - {'STRING', action = ignore}, - {'', action = ignore}, - }, - id_or_quote = { - {'IDENTIFIER', action = id}, - {'QUOTED', action = id}, - }, - code_opt = { - {'', action = function() return {} end}, - {'CODE', action = id}, - }, - configuration_ = { - {'', - action = function() - return setmetatable({}, {__index = conf}) - end}, - {'$conf', - action = function(code) - return code - end}, - }, --- single_rhs := IDENTIFIER | VARIABLE | EPS | QUOTED | '(' $nonterminal ') --- valid_rhs := $single_rhs valid_postfix --- valid_postfix := %eps | '+' | '*' | '?' - single_rhs = { - {'IDENTIFIER', action = function(id) id.kind = 'token'; return id end}, - {'VARIABLE', action = function(id) id.kind = 'token'; return id end}, - {'EPS', action = function() return {'EPS', '', kind = 'token'} end}, - {'QUOTED', action = function(quoted) quoted.kind = 'token'; return quoted end}, - {'LPAREN', '$nonterminal', 'RPAREN', action = function(_, nonterminal, _) return {'PRODUCTIONS', nonterminal, kind = 'productions'} end} - }, - valid_postfix = { - {'', action = function() return 'nothing' end}, - {'PLUS', action = function() return 'plus' end}, - {'STAR', action = function() return 'star' end}, - {'MAYBE', action = function() return 'maybe' end}, - }, - valid_rhs = { - {'$single_rhs', '$valid_postfix', - action = function(object, postfix) - if object[1] == 'EPS' and postfix ~= 'nothing' then - error("Cannot use extended operation on nothing.") - end - if postfix == 'nothing' then - return object - end - return {postfix, object, kind = 'postfix'} - end}, - }, - rhs_list = { - {'$valid_rhs', "$rhs_list_", - action = function(object, production) - table.insert(production, 1, object) - return production - end}, - }, - rhs_list_ = { - {'', action = function() return {} end}, - {'$rhs_list', action = id, tag = 'rhs'}, - conflict = { - IDENTIFIER = function(self, tokens) - -- print("oracle", unpack(utils.sublist(utils.map(function(x) return x[2] end, tokens), 1, 4))) - if tokens[2][1] == 'GETS' or tokens[3][1] == 'GETS' then - return self:go '' - end - return self:go 'rhs' - end - } - }, - top = { - {'$conf', '$rules', - action = function(configuration, rules_) - local rules, code, resolvers = unpack(rules_) - if not configuration.resolvers then configuration.resolvers = {} end - for key, resolver in pairs(resolvers) do - if not configuration.resolvers[key] then configuration.resolvers[key] = {} end - for conflict in utils.loop(resolver) do - table.insert(configuration.resolvers[key], conflict) - end - end - configuration:finalize() - if #code ~= 0 then - configuration.top_level = configuration.top_level .. '\n' .. code - end - -- convert productions over - return {configuration, rules} - end}, - {'$rules', - action = function(rules_) - local rules, code, resolvers = unpack(rules_) - local configuration = setmetatable({}, {__index = conf}) - if not configuration.resolvers then configuration.resolvers = {} end - for key, resolver in pairs(resolvers) do - if not configuration.resolvers[key] then configuration.resolvers[key] = {} end - for conflict in utils.loop(resolver) do - table.insert(configuration.resolvers[key], conflict) - end - end - configuration:finalize() - if #code ~= 0 then - configuration.top_level = configuration.top_level .. '\n' .. code - end - return {configuration, rules} - end}, - }, - nonterminal = { - -- 'tag?' - {'$rhs_list', "$nonterminal'", - action = function(production, pair) - local action, nonterminal = unpack(pair) - production.action = action - table.insert(nonterminal, production) - return nonterminal - end}, - {'TAG', '$rhs_list', "$nonterminal'", - action = function(tag, production, pair) - local action, nonterminal = unpack(pair) - production.action = action - production.tag = tag[2] - table.insert(nonterminal, production) - return nonterminal - end}, - }, - ["nonterminal'"] = { - {'CODE', "$nonterminal''", - action = function(code, nonterminal) - return {code, nonterminal} - end}, - {'REFERENCE', "$nonterminal''", - action = function(ref, nonterminal) - return {ref, nonterminal} - end}, - {'OR', '$nonterminal', - action = function(_, nonterminal) - return {nil, nonterminal} - end}, - {'SEMICOLON', - action = function() - return {nil, {}} - end}, - {'', - action = function() - return {nil, {}} - end}, - }, - ["nonterminal''"] = { - {'', action = function() return {} end}, - {'OR', '$nonterminal', - action = function(_, nonterminal) - return nonterminal - end}, - }, - single_rule = { - {'IDENTIFIER', '$code_or_ref_opt', 'GETS', '$nonterminal', - action = function(id, default, _, nonterminals) - if #default ~= 0 then - for production in utils.loop(nonterminals) do - if not production.action then - production.action = default - end - end - end - return {id[2], nonterminals} - end} - }, - code_or_ref_opt = { - {'', action = function() return {} end}, - {'CODE', action = id}, - {'REFERENCE', action = id} - }, - -- rules_or_code := $single_rule $rules_or_code | CODE $rules_or_code - rules_or_code = { - {'$single_rule', '$rules_or_code', - action = function(rule, list) - local id, nonterminal = unpack(rule) - local rules, code, resolvers = unpack(list) - rules[id] = nonterminal - return {rules, code, resolvers} - end}, - {'TOP_LEVEL', 'CODE', '$rules_or_code', - action = function(_, code, list) - local rules, codes, resolvers = unpack(list) - codes = trim(code[2]) .. '\n' .. codes - return {rules, codes, resolvers} - end}, - {'RESOLVE', 'IDENTIFIER', '$id_or_quote', '$code_opt', '$rules_or_code', - action = function(_, id, conflict, action, list) - local rules, codes, resolvers = unpack(list) - if not resolvers[id[2]] then resolvers[id[2]] = {} end - table.insert(resolvers[id[2]], {conflict, action}) - return {rules, codes, resolvers} - end}, - {'', action = function() return {{}, '', {}} end}, - }, - rules = { - {'$single_rule', '$rules_or_code', - action = function(rule, rules_or_code) - local id, nonterminal = unpack(rule) - local rules, codes, resolvers = unpack(rules_or_code) - rules[id] = nonterminal - return {rules, codes, resolvers} - end}, - {'', action = function() return {{}, '', {}} end} - }, -} - -local function prologue(str, grammar) - local tokens = {} - for token in tokenizer(str) do - table.insert(tokens, token) - end - return tokens -end - -local function convert(token) - return token[1] -end - -local function epilogue(result) - local configuration, raw = unpack(result) - -- all nonterminals are unpacked, which means some productions may have postfixes or nonterminals - local actions = synthesize(configuration, raw) - for variable, nonterminal in pairs(actions) do - for production in utils.loop(nonterminal) do - for object in utils.loop(production) do - if object ~= EPS and object:sub(1, 1) ~= '$' and not configuration.productions[object] then - print(("WARNING: The token identifier %s is not defined."):format(object)) - end - end - end - end - local name = configuration.default - local functions = {} - local code = '' - for namespace in utils.loop(configuration.requires) do - local final = namespace - for name in namespace:gmatch("[a-zA-Z0-9_]+") do - final = name - end - code = code .. ('local %s = require \'%s\'\n'):format(namespace:match(final), namespace) - end - code = code .. ('local %s = {}\n'):format(configuration.default) - - for variable, nonterminal in pairs(actions) do - functions[variable] = {} - for production in utils.loop(nonterminal) do - table.insert(functions[variable], trim(production.action or ('%s.default_action'):format(configuration.default))) - production.action = nil - end - end - local function escape(id) - return table.concat( - utils.map( - function(char) - if char == ("'"):byte() then - return "\\'" - else - return string.char(char) - end - end, - {id:byte(1, #id)})) - end - - code = code .. configuration.default .. '.grammar = ' .. utils.dump(actions, escape) .. '\n' - if configuration.file then - code = code .. ('%s.grammar[1] = \'%s.table\'\n'):format(configuration.default, configuration.file) - end - if configuration.top_level ~= '' then - code = code .. trim(configuration.top_level) .. '\n' - end - - for key in utils.loop {'convert', 'prologue', 'epilogue', 'default_action'} do - code = code .. ('%s.%s = %s\n'):format(configuration.default, key, trim(configuration[key])) - end - - for variable, nonterminal in pairs(actions) do - for i in ipairs(nonterminal) do - code = code .. ('%s.grammar["%s"][%s].action = %s\n'):format(configuration.default, variable, i, functions[variable][i]) - end - end - - -- let's add conflict table - for variable, resolvers in pairs(configuration.resolvers) do - code = code .. ('%s.grammar["%s"].conflict = {}\n'):format(name, variable) - for conflict, action in pairs(resolvers) do - code = code .. ('%s.grammar["%s"].conflict["%s"] = %s\n'):format(name, variable, conflict, action) - end - end - - code = code .. ('%s.ll1 = ll1(%s.grammar)\n'):format(name, name) - code = code .. trim([[ -return setmetatable( - %s, - {__call = function(this, str) - local tokens = {} - for _, token in ipairs(this.prologue(str)) do - table.insert( - tokens, - setmetatable( - token, - {__tostring = function(self) return this.convert(self) end})) - end - local result = this.ll1:parse(tokens) - return this.epilogue(result) - end}) -]]):format(name) - return code, configuration -end - -local function parse(str) - local tokens = {} - for token in utils.loop(prologue(str, grammar)) do - table.insert( - tokens, - setmetatable( - token, - {__tostring = function(self) return convert(self) end})) - end - local result = grammar:parse(tokens) - return epilogue(result) -end - -local code, configuration = parse(io.open('lua/grammar.ylua'):read("*all")) -os.remove(configuration.file .. '.table') -local func, status = loadstring(code) -if not func then - print("ERROR: " .. status) -end -local succ, other_parser = pcall(func) -- lets just try it out and "warm the cache" -if not succ then - print("ERROR: " .. other_parser) -end -if configuration.file then - local file = io.open(configuration.file .. '.lua', 'w') - file:write(code) - file:close() -end \ No newline at end of file +-- Frontend parser for the parser +--[[-- +Here's the grammar we're looking for + +root := $top + +top_opts := CONVERT CODE top_opt' | DEFAULT CODE top_opt' | PROLOGUE CODE top_opt' | EPILOGUE CODE top_opt' | TOP_LEVEL CODE top_opt' | QUOTE QUOTED $valid_rhs | RESOLVE IDENTIFIER (IDENTIFIER | QUOTED;) CODE? +top_opts' := $top_opts | eps +production := PRODUCTION IDENTIFIER $production' +production' := STRING | eps +production_list := $production $production_list' +production_list' := eps | $production_list +single_rhs := IDENTIFIER | VARIABLE | EPS | QUOTED | '(' $rhs_list ') +valid_rhs := $single_rhs valid_postfix +valid_postfix := %eps | '+' | '*' | '?' +rhs_list := $valid_rhs $rhs_list_ +rhs_list_ := %eps | $rhs_list +top := $top_opts $top_no_convert | $top_no_convert +top_no_convert := $production_list $rules | $rules +nonterminal := TAG? $rhs_list $nonterminal' +nonterminal' := CODE nonterminal'' | REFERENCE nonterminal'' | SEMICOLON | OR $nonterminal +nonterminal'' := eps | OR $nonterminal +single_rule := IDENTIFIER GETS $nonterminal +rules_or_code := $single_rule $rules_or_code | CODE $rules_or_code +rules := $single_rule $rules_or_code | %eps +--]]-- + +local ll1 = require 'luainlua.ll1.ll1' +local utils = require 'luainlua.common.utils' +local tokenizer = require 'luainlua.parsing.ll1_tokenizer' + +local EPS = '' + +local id = function(...) return ... end +local ignore = function() return {} end + +local function flatten(configuration, object) + if object[1] == 'QUOTED' and configuration.quotes[object[2]] then + return configuration.quotes[object[2]] + else + if object[1] == 'QUOTED' then + print(("WARNING: '%s' does not have an associated identifier."):format(object[2])) + end + return object[2] + end +end + +local conf = {} +function conf:finalize() + if not self.convert then + self.convert = "function(token) return token[1] end" + end + if not self.default then + self.default = "__GRAMMAR__" + end + if not self.prologue then + print("WARNING", "You really should specify a prologue, which will convert a string into a list of tokens.") + self.prologue = [[ +function(str) + local tokens = {} + for token in str:gmatch("%S+") do + table.insert(tokens, {token}) + end + return tokens +end +]] + end + if not self.epilogue then + self.epilogue = 'function(...) return ... end' + end + if not self.top_level then + self.top_level = '' + end + if not self.file then + print("Warning", "Are you sure you want to disable caching of this grammar? Specify %FILE otherwise.") + end + if not self.requires then + self.requires = {'luainlua.ll1.ll1'} + end + if not self.default_action then + self.default_action = 'function(...) return {...} end' + end + if not self.quotes then + self.quotes = {} + end + if not self.productions then + self.productions = {} + end + local conflict_resolvers = self.resolvers or {} + self.resolvers = {} + for variable, resolvers in pairs(conflict_resolvers) do + self.resolvers[variable] = {} + for conflict_resolver in utils.loop(resolvers) do + local conflict, action = unpack(conflict_resolver) + -- look up conflict in quotes + local conflict_id = flatten(self, conflict) + if action[1] == 'CODE' then + self.resolvers[variable][conflict_id] = action[2] + else + self.resolvers[variable][conflict_id] = 'error' + end + end + end + return self +end + +local function trim(s) + return s:match "^%s*(.-)%s*$" +end + +local function new_context(variable) + return { + name = function(self, name) + local index = '$'..name + if not self[index] then self[index] = 1 end + local result = ("%s'%s#%s"):format(variable, name, self[index]) + self[index] = self[index] + 1 + return result + end, + variable = function(self) + return variable + end + } +end + +local function star(object, variable) + return { + variable = '$' .. variable, + {object[2], '$' .. variable, tag = '#list', action = trim "function(item, list) table.insert(list, 1, item); return list end"}, + {'', action = trim "function() return {} end"}, + }, variable +end + +local synthesis = {} + +function synthesis.local_synthesis(configuration, raw_production, context) + -- depth first search + local raw_action = raw_production.action + local production = {} + local new_synthesis = {} + -- compute the action + if raw_action and raw_action[1] == 'CODE' then + production.action = raw_action[2] + elseif raw_action and raw_action[1] == 'REFERENCE' then + -- function(_1, _2, ...) + -- local all = {_1, _2, ...} + local n = #raw_production + local all = {} + for i = 1,n do table.insert(all, '_' .. i) end + all = table.concat(all, ', ') + production.action = trim([[ +function(%s) + return %s +end +]]):format(all, raw_action[2]:gsub("*all", all)) + end + production.tag = raw_production.tag + -- Each object in the raw production is either a token, a nonterminal, or a postfix, the last 2 induces new nonterminals + for raw_object in utils.loop(raw_production) do + if raw_object.kind == 'token' then + local object = (flatten(configuration, raw_object)) + table.insert(production, object) + elseif raw_object.kind == 'productions' then + -- second is a set of nonterminals, let's construct that + local variable = context:name('group') + table.insert(production, '$' .. variable) + local new_productions, new = synthesis.synthesize_nonterminals(configuration, variable, raw_object[2]) + table.insert(new_synthesis, new_productions) + for more in utils.loop(new) do + table.insert(new_synthesis, more) + end + elseif raw_object.kind == 'postfix' then + local variable = context:name(raw_object[1]) + local inner = raw_object[2] + table.insert(production, '$' .. variable) + -- The inner tree can be either a token or another list of productions. + if inner.kind == 'productions' then + -- take care of the inner group first + local inner_variable = context:name('group') + local new_productions, new = synthesis.synthesize_nonterminals(configuration, inner_variable, inner[2]) + inner = {'VARIABLE', '$' .. inner_variable, kind = 'token'} + table.insert(new_synthesis, new_productions) + for more in utils.loop(new) do + table.insert(new_synthesis, more) + end + else + inner[2] = flatten(configuration, inner) + end + assert(inner.kind == 'token') + -- Something* := %eps | Something Something* + -- Something+ := Something Something* + -- Something? := %eps | Something + if raw_object[1] == 'star' then + local new = star(inner, variable) + table.insert(new_synthesis, new) + elseif raw_object[1] == 'plus' then + local new_star, star_var = star(inner, context:name('star')) + local new_plus = { + variable = '$' .. variable, + {inner[2], '$' .. star_var, + tag = '#list', + action = trim [[ + function(item, list) + table.insert(list, 1, item) + return list + end +]]}} + table.insert(new_synthesis, new_star) + table.insert(new_synthesis, new_plus) + else + local new_maybe = { + variable = '$' .. variable, + {inner[2], tag = '#present', action = trim "function(item) return {item} end"}, + {'', action = trim "function() return {} end"}, + } + table.insert(new_synthesis, new_maybe) + end + else + error "Unknown kind" + end + end + return production, new_synthesis +end + +function synthesis.synthesize_nonterminals(configuration, variable, raw_productions) + local productions = {} + local new_synthesis = {} + local context = new_context(variable) + for raw_production in utils.loop(raw_productions) do + local production, more = synthesis.local_synthesis(configuration, raw_production, context) + table.insert(productions, production) + for new in utils.loop(more) do + table.insert(new_synthesis, new) + end + end + productions.variable = '$' .. variable + -- productions.synthesized_from = raw_productions + return productions, new_synthesis +end + +local function synthesize(configuration, raw) + local actions = {} + for variable, raw_productions in pairs(raw) do + local nonterminal, more = synthesis.synthesize_nonterminals(configuration, variable, raw_productions) + actions[variable] = nonterminal + for new in utils.loop(more) do + actions[new.variable:sub(2)] = new + end + end + return actions +end + +local grammar = ll1 { + 'luainlua/parsing/ll1_parsing_table.lua', + root = {{'$top', action = id}}, + conf = { + {'CONVERT', 'CODE', '$configuration_', + action = function(_, code, last) + assert(not last.convert, 'You\'ve already specified another converter.') + last.convert = code[2] + return last + end}, + {'DEFAULT', 'STRING', '$configuration_', + action = function(_, name, last) + assert(not last.default, 'You\'ve already specified another default name.') + last.default = name[2] + return last + end}, + {'PROLOGUE', 'CODE', '$configuration_', + action = function(_, code, last) + assert(not last.prologue, 'You\'ve already specified another prologue.') + last.prologue = code[2] + return last + end}, + {'EPILOGUE', 'CODE', '$configuration_', + action = function(_, code, last) + assert(not last.epilogue, 'You\'ve already specified another epilogue.') + last.epilogue = code[2] + return last + end}, + {'TOP_LEVEL', 'CODE', '$configuration_', + action = function(_, code, last) + if not last.top_level then last.top_level = '' end + last.top_level = trim(code[2]) .. '\n' .. last.top_level + return last + end}, + {'DEFAULT_ACTION', 'CODE', '$configuration_', + action = function(_, code, last) + assert(not last.default_action, 'You\'ve already specified another default action.') + last.default_action = code[2] + return last + end}, + {'FILE', 'STRING', '$configuration_', + action = function(_, file, last) + assert(not last.file, 'You\'ve already specified another file root.') + last.file = file[2] + return last + end}, + {'REQUIRE', 'STRING', '$configuration_', + action = function(_, namespace, last) + if not last.requires then last.requires = {'luainlua.ll1.ll1'} end + if namespace[2] ~= 'luainlua.ll1.ll1' then + table.insert(last.requires, 1, namespace[2]) + end + return last + end}, + {'QUOTE', 'QUOTED', 'IDENTIFIER', '$configuration_', + action = function(_, quote, id, last) + if not last.quotes then last.quotes = {} end + last.quotes[quote[2]] = id[2] + return last + end}, + -- RESOLVE IDENTIFIER (IDENTIFIER | QUOTED;) CODE? + {'RESOLVE', 'IDENTIFIER', '$id_or_quote', '$code_opt', '$configuration_', + action = function(_, id, conflict, action, last) + if not last.resolvers then last.resolvers = {} end + if not last.resolvers[id[2]] then last.resolvers[id[2]] = {} end + table.insert(last.resolvers[id[2]], {conflict, action}) + return last + end}, + {'PRODUCTION', 'IDENTIFIER', '$production_', '$configuration_', + action = function(_, id, _, last) + if not last.productions then last.productions = {} end + last.productions[id[2]] = true + return last + end}, + }, + production_ = { + {'STRING', action = ignore}, + {'', action = ignore}, + }, + id_or_quote = { + {'IDENTIFIER', action = id}, + {'QUOTED', action = id}, + }, + code_opt = { + {'', action = function() return {} end}, + {'CODE', action = id}, + }, + configuration_ = { + {'', + action = function() + return setmetatable({}, {__index = conf}) + end}, + {'$conf', + action = function(code) + return code + end}, + }, +-- single_rhs := IDENTIFIER | VARIABLE | EPS | QUOTED | '(' $nonterminal ') +-- valid_rhs := $single_rhs valid_postfix +-- valid_postfix := %eps | '+' | '*' | '?' + single_rhs = { + {'IDENTIFIER', action = function(id) id.kind = 'token'; return id end}, + {'VARIABLE', action = function(id) id.kind = 'token'; return id end}, + {'EPS', action = function() return {'EPS', '', kind = 'token'} end}, + {'QUOTED', action = function(quoted) quoted.kind = 'token'; return quoted end}, + {'LPAREN', '$nonterminal', 'RPAREN', action = function(_, nonterminal, _) return {'PRODUCTIONS', nonterminal, kind = 'productions'} end} + }, + valid_postfix = { + {'', action = function() return 'nothing' end}, + {'PLUS', action = function() return 'plus' end}, + {'STAR', action = function() return 'star' end}, + {'MAYBE', action = function() return 'maybe' end}, + }, + valid_rhs = { + {'$single_rhs', '$valid_postfix', + action = function(object, postfix) + if object[1] == 'EPS' and postfix ~= 'nothing' then + error("Cannot use extended operation on nothing.") + end + if postfix == 'nothing' then + return object + end + return {postfix, object, kind = 'postfix'} + end}, + }, + rhs_list = { + {'$valid_rhs', "$rhs_list_", + action = function(object, production) + table.insert(production, 1, object) + return production + end}, + }, + rhs_list_ = { + {'', action = function() return {} end}, + {'$rhs_list', action = id, tag = 'rhs'}, + conflict = { + IDENTIFIER = function(self, tokens) + -- print("oracle", unpack(utils.sublist(utils.map(function(x) return x[2] end, tokens), 1, 4))) + if tokens[2][1] == 'GETS' or tokens[3][1] == 'GETS' then + return self:go '' + end + return self:go 'rhs' + end + } + }, + top = { + {'$conf', '$rules', + action = function(configuration, rules_) + local rules, code, resolvers = unpack(rules_) + if not configuration.resolvers then configuration.resolvers = {} end + for key, resolver in pairs(resolvers) do + if not configuration.resolvers[key] then configuration.resolvers[key] = {} end + for conflict in utils.loop(resolver) do + table.insert(configuration.resolvers[key], conflict) + end + end + configuration:finalize() + if #code ~= 0 then + configuration.top_level = configuration.top_level .. '\n' .. code + end + -- convert productions over + return {configuration, rules} + end}, + {'$rules', + action = function(rules_) + local rules, code, resolvers = unpack(rules_) + local configuration = setmetatable({}, {__index = conf}) + if not configuration.resolvers then configuration.resolvers = {} end + for key, resolver in pairs(resolvers) do + if not configuration.resolvers[key] then configuration.resolvers[key] = {} end + for conflict in utils.loop(resolver) do + table.insert(configuration.resolvers[key], conflict) + end + end + configuration:finalize() + if #code ~= 0 then + configuration.top_level = configuration.top_level .. '\n' .. code + end + return {configuration, rules} + end}, + }, + nonterminal = { + -- 'tag?' + {'$rhs_list', "$nonterminal'", + action = function(production, pair) + local action, nonterminal = unpack(pair) + production.action = action + table.insert(nonterminal, production) + return nonterminal + end}, + {'TAG', '$rhs_list', "$nonterminal'", + action = function(tag, production, pair) + local action, nonterminal = unpack(pair) + production.action = action + production.tag = tag[2] + table.insert(nonterminal, production) + return nonterminal + end}, + }, + ["nonterminal'"] = { + {'CODE', "$nonterminal''", + action = function(code, nonterminal) + return {code, nonterminal} + end}, + {'REFERENCE', "$nonterminal''", + action = function(ref, nonterminal) + return {ref, nonterminal} + end}, + {'OR', '$nonterminal', + action = function(_, nonterminal) + return {nil, nonterminal} + end}, + {'SEMICOLON', + action = function() + return {nil, {}} + end}, + {'', + action = function() + return {nil, {}} + end}, + }, + ["nonterminal''"] = { + {'', action = function() return {} end}, + {'OR', '$nonterminal', + action = function(_, nonterminal) + return nonterminal + end}, + }, + single_rule = { + {'IDENTIFIER', '$code_or_ref_opt', 'GETS', '$nonterminal', + action = function(id, default, _, nonterminals) + if #default ~= 0 then + for production in utils.loop(nonterminals) do + if not production.action then + production.action = default + end + end + end + return {id[2], nonterminals} + end} + }, + code_or_ref_opt = { + {'', action = function() return {} end}, + {'CODE', action = id}, + {'REFERENCE', action = id} + }, + -- rules_or_code := $single_rule $rules_or_code | CODE $rules_or_code + rules_or_code = { + {'$single_rule', '$rules_or_code', + action = function(rule, list) + local id, nonterminal = unpack(rule) + local rules, code, resolvers = unpack(list) + rules[id] = nonterminal + return {rules, code, resolvers} + end}, + {'TOP_LEVEL', 'CODE', '$rules_or_code', + action = function(_, code, list) + local rules, codes, resolvers = unpack(list) + codes = trim(code[2]) .. '\n' .. codes + return {rules, codes, resolvers} + end}, + {'RESOLVE', 'IDENTIFIER', '$id_or_quote', '$code_opt', '$rules_or_code', + action = function(_, id, conflict, action, list) + local rules, codes, resolvers = unpack(list) + if not resolvers[id[2]] then resolvers[id[2]] = {} end + table.insert(resolvers[id[2]], {conflict, action}) + return {rules, codes, resolvers} + end}, + {'', action = function() return {{}, '', {}} end}, + }, + rules = { + {'$single_rule', '$rules_or_code', + action = function(rule, rules_or_code) + local id, nonterminal = unpack(rule) + local rules, codes, resolvers = unpack(rules_or_code) + rules[id] = nonterminal + return {rules, codes, resolvers} + end}, + {'', action = function() return {{}, '', {}} end} + }, +} + +local function prologue(str, grammar) + local tokens = {} + for token in tokenizer(str) do + table.insert(tokens, token) + end + return tokens +end + +local function convert(token) + return token[1] +end + +local function epilogue(result) + local configuration, raw = unpack(result) + -- all nonterminals are unpacked, which means some productions may have postfixes or nonterminals + local actions = synthesize(configuration, raw) + for variable, nonterminal in pairs(actions) do + for production in utils.loop(nonterminal) do + for object in utils.loop(production) do + if object ~= EPS and object:sub(1, 1) ~= '$' and not configuration.productions[object] then + print(("WARNING: The token identifier %s is not defined."):format(object)) + end + end + end + end + local name = configuration.default + local functions = {} + local code = '' + for namespace in utils.loop(configuration.requires) do + local final = namespace + for name in namespace:gmatch("[a-zA-Z0-9_]+") do + final = name + end + code = code .. ('local %s = require \'%s\'\n'):format(namespace:match(final), namespace) + end + code = code .. ('local %s = {}\n'):format(configuration.default) + + for variable, nonterminal in pairs(actions) do + functions[variable] = {} + for production in utils.loop(nonterminal) do + table.insert(functions[variable], trim(production.action or ('%s.default_action'):format(configuration.default))) + production.action = nil + end + end + local function escape(id) + return table.concat( + utils.map( + function(char) + if char == ("'"):byte() then + return "\\'" + else + return string.char(char) + end + end, + {id:byte(1, #id)})) + end + + code = code .. configuration.default .. '.grammar = ' .. utils.dump(actions, escape) .. '\n' + if configuration.file then + code = code .. ('%s.grammar[1] = \'%s_table.lua\'\n'):format(configuration.default, configuration.file) + end + if configuration.top_level ~= '' then + code = code .. trim(configuration.top_level) .. '\n' + end + + for key in utils.loop {'convert', 'prologue', 'epilogue', 'default_action'} do + code = code .. ('%s.%s = %s\n'):format(configuration.default, key, trim(configuration[key])) + end + + for variable, nonterminal in pairs(actions) do + for i in ipairs(nonterminal) do + code = code .. ('%s.grammar["%s"][%s].action = %s\n'):format(configuration.default, variable, i, functions[variable][i]) + end + end + + -- let's add conflict table + for variable, resolvers in pairs(configuration.resolvers) do + code = code .. ('%s.grammar["%s"].conflict = {}\n'):format(name, variable) + for conflict, action in pairs(resolvers) do + code = code .. ('%s.grammar["%s"].conflict["%s"] = %s\n'):format(name, variable, conflict, action) + end + end + + code = code .. ('%s.ll1 = ll1(%s.grammar)\n'):format(name, name) + code = code .. trim([[ +return setmetatable( + %s, + {__call = function(this, str) + local tokens = {} + for _, token in ipairs(this.prologue(str)) do + table.insert( + tokens, + setmetatable( + token, + {__tostring = function(self) return this.convert(self) end})) + end + local result = this.ll1:parse(tokens) + return this.epilogue(result) + end}) +]]):format(name) + return code, configuration +end + +local function parse(str) + local tokens = {} + for token in utils.loop(prologue(str, grammar)) do + table.insert( + tokens, + setmetatable( + token, + {__tostring = function(self) return convert(self) end})) + end + local result = grammar:parse(tokens) + return epilogue(result) +end + +local function generate(file) + local code, configuration = parse(io.open(file):read("*all")) + + os.remove(configuration.file .. '_table.lua') + local func, status = loadstring(code) + if not func then + print("ERROR: " .. status) + end + local succ, other_parser = pcall(func) -- lets just try it out and "warm the cache" + if not succ then + print("ERROR: " .. other_parser) + end + if configuration.file then + local file = io.open(configuration.file .. '.lua', 'w') + file:write(code) + file:close() + end +end + +return generate \ No newline at end of file diff --git a/parsing/ll1_parsing.table b/luainlua/parsing/ll1_parsing_table.lua similarity index 100% rename from parsing/ll1_parsing.table rename to luainlua/parsing/ll1_parsing_table.lua diff --git a/parsing/ll1_tokenizer.lua b/luainlua/parsing/ll1_tokenizer.lua similarity index 93% rename from parsing/ll1_tokenizer.lua rename to luainlua/parsing/ll1_tokenizer.lua index 63c5a89..18bd9b4 100644 --- a/parsing/ll1_tokenizer.lua +++ b/luainlua/parsing/ll1_tokenizer.lua @@ -1,103 +1,103 @@ --- Frontend lexer for the parser - -local lex = require 'parsing.lex' -local re = require 'parsing.re' - -local code_stack = {} -local string_stack = {} -local reference_stack = {} -local quote_stack = {} -local tag_stack = {} - -local function id(token) return function(...) return {token, ...} end end -local function ignore(...) return end -local function pop(stack) return table.remove(stack) end -local function push(item, stack) table.insert(stack, item) end - -return lex.lex { - root = { - {'%eps', id 'EPS'}, - {'\'\'', id 'EPS'}, - {'%code', id 'TOP_LEVEL'}, - {'%convert', id 'CONVERT'}, - {'%prologue', id 'PROLOGUE'}, - {'%epilogue', id 'EPILOGUE'}, - {'%default', id 'DEFAULT'}, - {'%production', id 'PRODUCTION'}, - {'%file', id 'FILE'}, - {'%require', id 'REQUIRE'}, - {'%default.action', id 'DEFAULT_ACTION'}, - {'%quote', id 'QUOTE'}, - {'%resolve', id 'RESOLVE'}, - {';', id 'SEMICOLON'}, - {':=', id 'GETS'}, - {'|', id 'OR'}, - {'(', id 'LPAREN'}, - {')', id 'RPAREN'}, - {'*', id 'STAR'}, - {'+', id 'PLUS'}, - {'?', id 'MAYBE'}, - {re '$(%a|_)(%a|%d|_|#|\')*', id 'VARIABLE'}, - {re '(%a|_)(%a|%d|_|#|\')*', id 'IDENTIFIER'}, - - {'{:', function(piece, lexer) lexer:go 'code'; push('', code_stack) end}, - {'"', function(piece, lexer) lexer:go 'string'; push('', string_stack) end}, - {'\'', function(piece, lexer) lexer:go 'quote'; push('', quote_stack) end}, - {'[:', function(piece, lexer) lexer:go 'reference'; push('', reference_stack) end}, - {'<', function(piece, lexer) lexer:go 'tag'; push('', tag_stack) end}, - - {re '%s+', ignore}, - {re '/%*', function(piece, lexer) lexer:go 'comment' end}, - {re '//[^\n]+', ignore}, - - }, - code = { - {':}', function(piece, lexer) - lexer:go 'root' - return {'CODE', pop(code_stack)} - end}, - {re '.', function(piece, lexer) - push(pop(code_stack) .. piece, code_stack) - end} - }, - string = { - {'"', function(piece, lexer) - lexer:go 'root' - return {'STRING', pop(string_stack)} - end}, - {re '.', function(piece, lexer) - push(pop(string_stack) .. piece, string_stack) - end} - }, - tag = { - {'>', function(piece, lexer) - lexer:go 'root' - return {'TAG', pop(tag_stack)} - end}, - {re '.', function(piece, lexer) - push(pop(tag_stack) .. piece, tag_stack) - end} - }, - quote = { - {'\'', function(piece, lexer) - lexer:go 'root' - return {'QUOTED', pop(quote_stack)} - end}, - {re '.', function(piece, lexer) - push(pop(quote_stack) .. piece, quote_stack) - end} - }, - reference = { - {':]', function(piece, lexer) - lexer:go 'root' - return {'REFERENCE', pop(reference_stack)} - end}, - {re '.', function(piece, lexer) - push(pop(reference_stack) .. piece, reference_stack) - end} - }, - comment = { - {re '%*/', function(piece, lexer) lexer:go 'root' end}, - {re '.', ignore}, - } +-- Frontend lexer for the parser + +local lex = require 'luainlua.parsing.lex' +local re = require 'luainlua.parsing.re' + +local code_stack = {} +local string_stack = {} +local reference_stack = {} +local quote_stack = {} +local tag_stack = {} + +local function id(token) return function(...) return {token, ...} end end +local function ignore(...) return end +local function pop(stack) return table.remove(stack) end +local function push(item, stack) table.insert(stack, item) end + +return lex.lex { + root = { + {'%eps', id 'EPS'}, + {'\'\'', id 'EPS'}, + {'%code', id 'TOP_LEVEL'}, + {'%convert', id 'CONVERT'}, + {'%prologue', id 'PROLOGUE'}, + {'%epilogue', id 'EPILOGUE'}, + {'%default', id 'DEFAULT'}, + {'%production', id 'PRODUCTION'}, + {'%file', id 'FILE'}, + {'%require', id 'REQUIRE'}, + {'%default.action', id 'DEFAULT_ACTION'}, + {'%quote', id 'QUOTE'}, + {'%resolve', id 'RESOLVE'}, + {';', id 'SEMICOLON'}, + {':=', id 'GETS'}, + {'|', id 'OR'}, + {'(', id 'LPAREN'}, + {')', id 'RPAREN'}, + {'*', id 'STAR'}, + {'+', id 'PLUS'}, + {'?', id 'MAYBE'}, + {re '$(%a|_)(%a|%d|_|#|\')*', id 'VARIABLE'}, + {re '(%a|_)(%a|%d|_|#|\')*', id 'IDENTIFIER'}, + + {'{:', function(piece, lexer) lexer:go 'code'; push('', code_stack) end}, + {'"', function(piece, lexer) lexer:go 'string'; push('', string_stack) end}, + {'\'', function(piece, lexer) lexer:go 'quote'; push('', quote_stack) end}, + {'[:', function(piece, lexer) lexer:go 'reference'; push('', reference_stack) end}, + {'<', function(piece, lexer) lexer:go 'tag'; push('', tag_stack) end}, + + {re '%s+', ignore}, + {re '/%*', function(piece, lexer) lexer:go 'comment' end}, + {re '//[^\n]+', ignore}, + + }, + code = { + {':}', function(piece, lexer) + lexer:go 'root' + return {'CODE', pop(code_stack)} + end}, + {re '.', function(piece, lexer) + push(pop(code_stack) .. piece, code_stack) + end} + }, + string = { + {'"', function(piece, lexer) + lexer:go 'root' + return {'STRING', pop(string_stack)} + end}, + {re '.', function(piece, lexer) + push(pop(string_stack) .. piece, string_stack) + end} + }, + tag = { + {'>', function(piece, lexer) + lexer:go 'root' + return {'TAG', pop(tag_stack)} + end}, + {re '.', function(piece, lexer) + push(pop(tag_stack) .. piece, tag_stack) + end} + }, + quote = { + {'\'', function(piece, lexer) + lexer:go 'root' + return {'QUOTED', pop(quote_stack)} + end}, + {re '.', function(piece, lexer) + push(pop(quote_stack) .. piece, quote_stack) + end} + }, + reference = { + {':]', function(piece, lexer) + lexer:go 'root' + return {'REFERENCE', pop(reference_stack)} + end}, + {re '.', function(piece, lexer) + push(pop(reference_stack) .. piece, reference_stack) + end} + }, + comment = { + {re '%*/', function(piece, lexer) lexer:go 'root' end}, + {re '.', ignore}, + } } \ No newline at end of file diff --git a/parsing/re.lua b/luainlua/parsing/re.lua similarity index 95% rename from parsing/re.lua rename to luainlua/parsing/re.lua index 7cce599..1d78fe2 100644 --- a/parsing/re.lua +++ b/luainlua/parsing/re.lua @@ -1,500 +1,500 @@ --- Dumb regular expressions - --- Step 1: Parse regular expressions --- they are of the form --- e = x | e e | (e | e) | e* | e+ | e? | ctrl - -local graph = require "common.graph" -local utils = require "common.utils" -local worklist = require "common.worklist" - -local re = {} - -local function pop(stack) - return table.remove(stack) -end - -local function push(item, stack) - table.insert(stack, item) -end - -local function concat(left, right) - if left == '' then return right end - if left[1] == 'or' then - local l = left[2] - local r = left[3] - return {'or', l, concat(r, right)} - else - return {'concat', left, right} - end -end - -local function introduce_or(left) - return {'or', left, ''} -end - -local function group(item, open) - return {'group', item, open} -end - -local function star(item) - if item[1] == 'or' then - local left = item[2] - local right = item[3] - return {'or', left, star(right)} - elseif item[1] == 'concat' then - local left = item[2] - local right = item[3] - return {'concat', left, star(right)} - else - return {'star', item} - end -end - -local function maybe(item) - if item[1] == 'or' then - local left = item[2] - local right = item[3] - return {'or', left, maybe(right)} - elseif item[1] == 'concat' then - local left = item[2] - local right = item[3] - return {'concat', left, maybe(right)} - else - return {'maybe', item} - end -end - -local function plus(item) - if item[1] == 'or' then - local left = item[2] - local right = item[3] - return {'or', left, plus(right)} - elseif item[1] == 'concat' then - local left = item[2] - local right = item[3] - return {'concat', left, plus(right)} - else - return concat(item, star(item)) - end -end - -local function reduce_groups(tree) - if type(tree) == "string" then - return tree - elseif tree[1] == "group" then - if tree[3] == "(?" then - return reduce_groups(tree[2]) - else - return{tree[1], reduce_groups(tree[2]), tree[3]} - end - elseif tree[1] == "star" then - return {"star", reduce_groups(tree[2])} - elseif tree[1] == "maybe" then - return {"maybe", reduce_groups(tree[2])} - else - return {tree[1], reduce_groups(tree[2]), reduce_groups(tree[3])} - end -end - -local function parse_re(str, character_classes) - local stack = {''} - local parenthesis = {} - local group_id = 1 - local classes = utils.copy(character_classes) - for c in character_classes:tokenize(str) do - if type(c) == 'table' then - table.insert(classes, c) - c = c[1] - end - local item = pop(stack) - if c == "|" then - item = introduce_or(item) - elseif c == "*" then - item = star(item) - elseif c == "+" then - item = plus(item) - elseif c == '?' then - item = maybe(item) - elseif c == "(" or c == "(?" then - push(item, stack) - local open = c - if open == '(' then - open = group_id - group_id = group_id + 1 - end - push(open, parenthesis) - item = '' - elseif c == ")" then - local open = pop(parenthesis) - item = group(item, open) - item = concat(pop(stack), item) - else - item = concat(item, c) - end - push(item, stack) - end - local cst = stack[1] - local ast = reduce_groups(cst) - return ast, classes -end - -local function new_context() - return { - id = 0, - graph = graph(), - get = function(self, tag) - self.id = self.id + 1 - self.graph:vertex(tostring(self.id), tag) - return tostring(self.id) - end, - accept = function(self, ...) - for _, accepted in ipairs({...}) do - self.graph.accepted[accepted] = true - end - end - } -end - -local function translate_to_nfa(context, tree) - if type(tree) == 'string' then - local l, r = context:get(), context:get() - context.graph:edge(l, r, tree) - return {l, r} - elseif tree[1] == 'maybe' then - local l, r = context:get(), context:get() - local l_, r_ = unpack(translate_to_nfa(context, tree[2])) - context.graph - :edge(l, l_, '') - :edge(r_, r, '') - :edge(l, r, '') - return {l, r} - elseif tree[1] == 'star' then - local l, r = context:get(), context:get() - local l_, r_ = unpack(translate_to_nfa(context, tree[2])) - context.graph - :edge(l, l_, '') - :edge(r_, l_, '') - :edge(r_, r, '') - :edge(l, r, '') - return {l, r} - elseif tree[1] == 'concat' then - local l_1, r_1 = unpack(translate_to_nfa(context, tree[2])) - local l_2, r_2 = unpack(translate_to_nfa(context, tree[3])) - context.graph:edge(r_1, l_2, '') - return {l_1, r_2} - elseif tree[1] == 'or' then - local l, r = context:get(), context:get() - local l_1, r_1 = unpack(translate_to_nfa(context, tree[2])) - local l_2, r_2 = unpack(translate_to_nfa(context, tree[3])) - context.graph - :edge(l, l_1, '') - :edge(l, l_2, '') - :edge(r_1, r, '') - :edge(r_2, r, '') - return {l, r} - elseif tree[1] == 'group' then - local l, r = unpack(translate_to_nfa(context, tree[2])) - context.graph.nodes[l] = {'open', tree[3]} - context.graph.nodes[r] = {'close', tree[3]} - return {l, r} - end -end - -local epsilon_closure = worklist { - -- what is the domain? Sets of nodes - initialize = function(self, node, _) - return node and {[node] = true} or {} - end, - transfer = function(self, node, input, graph, pred) - if not pred then return {[node] = true} end - -- if the incoming is epsilon, then add, otherwise pass - local tag = graph.reverse[pred][node] - if tag == '' then - local new = utils.copy(input) - new[node] = true - return new - end - return {[node] = true} - end, - changed = function(self, old, new) - -- assuming monotone in the new direction - for key in pairs(new) do - if not old[key] then - return true - end - end - return false - end, - merge = function(self, left, right) - local merged = utils.copy(left) - for key in pairs(right) do - merged[key] = true - end - return merged - end, - tostring = function(self, _, node, state) - local keys = {} - for key in pairs(state) do - table.insert(keys, key) - end - return tostring(node) .. ' {' .. table.concat(keys, ', ') .. '}' - end, - - solution = { - transitions = function(self, context, nodes, character_classes) - local transitions = {} - for node in pairs(nodes) do - for succ, symbol in pairs(context.graph.forward[node]) do - if symbol ~= '' then - if not transitions[symbol] then transitions[symbol] = {} end - transitions[symbol][succ] = true - end - end - end - for symbol, _ in pairs(transitions) do - local classes = re.character_class(symbol, character_classes) - for _, class in ipairs(classes) do - if transitions[class] then - for key in pairs(transitions[class]) do transitions[symbol][key] = true end - end - end - end - for symbol, nodes in pairs(transitions) do - transitions[symbol] = self:closure(context, nodes) - end - return transitions - end, - closure = function(self, _, nodes) - local closure = {} - for node in pairs(nodes) do - closure[node] = true - for succ in pairs(self[node]) do - closure[succ] = true - end - end - return closure - end - } -} - -local function hash(state) - local keys = {} - for key in pairs(state) do - table.insert(keys, key) - end - table.sort(keys) - return table.concat(keys, ',') -end - -local function subset_construction(first, last, nfa_context, character_classes, dfa_context) - local closure = epsilon_closure:reverse(nfa_context.graph) - if not dfa_context then dfa_context = new_context() end - local hash_to_dfa_node = {} - - local function new_vertex(closure) - local h = hash(closure) - if hash_to_dfa_node[h] then - return hash_to_dfa_node[h], true - end - local open = {} - for node in pairs(closure) do - if type(nfa_context.graph.nodes[node]) == 'table' then - table.insert(open, nfa_context.graph.nodes[node]) - end - end - local id = dfa_context:get({closure, open}) - for k in pairs(closure) do - if k == last then - dfa_context:accept(id) - break - end - end - hash_to_dfa_node[h] = id - return id, false - end - - local function dfa_construction(node) - local states, open = unpack(dfa_context.graph.nodes[node]) - local transitions = closure:transitions(nfa_context, states, character_classes) - for symbol, nodes in pairs(transitions) do - local succ, seen = new_vertex(nodes) - dfa_context.graph:edge(node, succ, symbol, true) - if not seen then - dfa_construction(succ) - end - end - end - local start = new_vertex(closure[first]) - dfa_construction(start) - return dfa_context -end - -local function re_match(graph, str, character_classes) - if not character_classes then character_classes = re.default_classes end - local ptr = '1' - local history = {ptr} - for i = 1, #str do - local char = string.char(str:byte(i)) - local classes = re.character_class(char, character_classes) - local local_match = false - for _, class in ipairs(classes) do - if graph.forward_tags[ptr] and graph.forward_tags[ptr][class] then - local_match = true - assert(#graph.forward_tags[ptr][class] == 1) - ptr = unpack(graph.forward_tags[ptr][class]) - table.insert(history, ptr) - break; - end - end - if not local_match then - return graph:trace(history, str) - end - end - return graph:trace(history, str) -end - -function re.compile(pattern, character_classes) - local regex_tree - if not character_classes then character_classes = re.default_classes end - regex_tree, character_classes = parse_re(pattern, character_classes) - local nfa_context = new_context() - local start, finish = unpack(translate_to_nfa(nfa_context, regex_tree)) - nfa_context:accept(finish) - local dfa_context = subset_construction(start, finish, nfa_context, character_classes) - dfa_context.graph.pattern = pattern - function dfa_context.graph:match(str) return re_match(self, str, character_classes) end - return dfa_context.graph -end - -function re.character_class(character, character_classes) - -- return the trace of its inheritance tree - -- char < ... < . - local trace = {} - table.insert(trace, character) - for _, class in ipairs(character_classes) do - local sigil, equivalence_class = unpack(class) - if type(equivalence_class) == 'table' and equivalence_class[character] then - table.insert(trace, sigil) - elseif type(equivalence_class) == 'function' and equivalence_class(character) then - table.insert(trace, sigil) - end - end - table.insert(trace, '.') - return trace -end - -local function classify(list) - local set = {} - for _, key in ipairs(list) do - set[tostring(key)] = true - end - return set -end - -function re.create_character_class(classes) - local mt = {} - function mt.tokenize(self, str) - return function() - if #str == 0 then - return - end - for _, class in ipairs(classes) do - local sigil = unpack(class) - -- try to do a full match - if str:sub(1, #sigil) == sigil then - str = str:sub(#sigil + 1) - return sigil - end - end - for _, class in pairs(classes) do - if type(class) == "function" then - local match, action = class(str) - if match then - str = str:sub(#match + 1) - return {match, action} - end - end - end - local c = str:sub(1,1) - str = str:sub(2) - if c == '(' and str:sub(1, 1) == '?' then - c = '(?' - str = str:sub(2) - end - return c - end - end - setmetatable(classes, {__index = mt}) - return classes -end - -local function peep(word, n) - if n > #word then - return nil - end - return word:sub(n, n) -end - -re.default_classes = re.create_character_class { - {'%d', classify {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, - {'%a', classify {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', - 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', - 't', 'u', 'v', 'w', 'x', 'y', 'z', - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", - "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", - "W", "X", "Y", "Z"}}, - {'%l', classify {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', - 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', - 't', 'u', 'v', 'w', 'x', 'y', 'z'}}, - {'%u', classify { - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", - "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", - "W", "X", "Y", "Z"}}, - {'%s', classify {' ', '\t', '\n', '\r'}}, - {'%%', classify {'%'}}, - {'%(', classify {'('}}, - {'%)', classify {')'}}, - {'%.', classify {'.'}}, - {'%+', classify {'+'}}, - {'%|', classify {'|'}}, - {'%*', classify {'*'}}, - -- Generate character classes using string keyed functions - bracket_set_notation = function(pattern) - -- [abc-x] or [^z] - if pattern:sub(1,1) ~= '[' or #pattern <= 2 then return end - local complement, start = false, 2 - if pattern:sub(2,2) == '^' then complement, start = true, 3 end - -- find the matching ] - local characters = {} - local in_range = false - for i = start, #pattern do - local char = string.char(pattern:byte(i)) - if char == ']' then - return pattern:sub(1, i), function(s) - if not complement then - return characters[s] - else - return not characters[s] - end - end - elseif peep(pattern, i + 1) == '-' then - in_range = char - else - if not in_range then - characters[char] = true - elseif char ~= '-' then - -- get all of the characters between in_range and char - assert(char >= in_range) - for b = in_range:byte(), char:byte() do - characters[string.char(b)] = true - end - in_range = false - end - end - end - return - end, -} - +-- Dumb regular expressions + +-- Step 1: Parse regular expressions +-- they are of the form +-- e = x | e e | (e | e) | e* | e+ | e? | ctrl + +local graph = require "luainlua.common.graph" +local utils = require "luainlua.common.utils" +local worklist = require "luainlua.common.worklist" + +local re = {} + +local function pop(stack) + return table.remove(stack) +end + +local function push(item, stack) + table.insert(stack, item) +end + +local function concat(left, right) + if left == '' then return right end + if left[1] == 'or' then + local l = left[2] + local r = left[3] + return {'or', l, concat(r, right)} + else + return {'concat', left, right} + end +end + +local function introduce_or(left) + return {'or', left, ''} +end + +local function group(item, open) + return {'group', item, open} +end + +local function star(item) + if item[1] == 'or' then + local left = item[2] + local right = item[3] + return {'or', left, star(right)} + elseif item[1] == 'concat' then + local left = item[2] + local right = item[3] + return {'concat', left, star(right)} + else + return {'star', item} + end +end + +local function maybe(item) + if item[1] == 'or' then + local left = item[2] + local right = item[3] + return {'or', left, maybe(right)} + elseif item[1] == 'concat' then + local left = item[2] + local right = item[3] + return {'concat', left, maybe(right)} + else + return {'maybe', item} + end +end + +local function plus(item) + if item[1] == 'or' then + local left = item[2] + local right = item[3] + return {'or', left, plus(right)} + elseif item[1] == 'concat' then + local left = item[2] + local right = item[3] + return {'concat', left, plus(right)} + else + return concat(item, star(item)) + end +end + +local function reduce_groups(tree) + if type(tree) == "string" then + return tree + elseif tree[1] == "group" then + if tree[3] == "(?" then + return reduce_groups(tree[2]) + else + return{tree[1], reduce_groups(tree[2]), tree[3]} + end + elseif tree[1] == "star" then + return {"star", reduce_groups(tree[2])} + elseif tree[1] == "maybe" then + return {"maybe", reduce_groups(tree[2])} + else + return {tree[1], reduce_groups(tree[2]), reduce_groups(tree[3])} + end +end + +local function parse_re(str, character_classes) + local stack = {''} + local parenthesis = {} + local group_id = 1 + local classes = utils.copy(character_classes) + for c in character_classes:tokenize(str) do + if type(c) == 'table' then + table.insert(classes, c) + c = c[1] + end + local item = pop(stack) + if c == "|" then + item = introduce_or(item) + elseif c == "*" then + item = star(item) + elseif c == "+" then + item = plus(item) + elseif c == '?' then + item = maybe(item) + elseif c == "(" or c == "(?" then + push(item, stack) + local open = c + if open == '(' then + open = group_id + group_id = group_id + 1 + end + push(open, parenthesis) + item = '' + elseif c == ")" then + local open = pop(parenthesis) + item = group(item, open) + item = concat(pop(stack), item) + else + item = concat(item, c) + end + push(item, stack) + end + local cst = stack[1] + local ast = reduce_groups(cst) + return ast, classes +end + +local function new_context() + return { + id = 0, + graph = graph(), + get = function(self, tag) + self.id = self.id + 1 + self.graph:vertex(tostring(self.id), tag) + return tostring(self.id) + end, + accept = function(self, ...) + for _, accepted in ipairs({...}) do + self.graph.accepted[accepted] = true + end + end + } +end + +local function translate_to_nfa(context, tree) + if type(tree) == 'string' then + local l, r = context:get(), context:get() + context.graph:edge(l, r, tree) + return {l, r} + elseif tree[1] == 'maybe' then + local l, r = context:get(), context:get() + local l_, r_ = unpack(translate_to_nfa(context, tree[2])) + context.graph + :edge(l, l_, '') + :edge(r_, r, '') + :edge(l, r, '') + return {l, r} + elseif tree[1] == 'star' then + local l, r = context:get(), context:get() + local l_, r_ = unpack(translate_to_nfa(context, tree[2])) + context.graph + :edge(l, l_, '') + :edge(r_, l_, '') + :edge(r_, r, '') + :edge(l, r, '') + return {l, r} + elseif tree[1] == 'concat' then + local l_1, r_1 = unpack(translate_to_nfa(context, tree[2])) + local l_2, r_2 = unpack(translate_to_nfa(context, tree[3])) + context.graph:edge(r_1, l_2, '') + return {l_1, r_2} + elseif tree[1] == 'or' then + local l, r = context:get(), context:get() + local l_1, r_1 = unpack(translate_to_nfa(context, tree[2])) + local l_2, r_2 = unpack(translate_to_nfa(context, tree[3])) + context.graph + :edge(l, l_1, '') + :edge(l, l_2, '') + :edge(r_1, r, '') + :edge(r_2, r, '') + return {l, r} + elseif tree[1] == 'group' then + local l, r = unpack(translate_to_nfa(context, tree[2])) + context.graph.nodes[l] = {'open', tree[3]} + context.graph.nodes[r] = {'close', tree[3]} + return {l, r} + end +end + +local epsilon_closure = worklist { + -- what is the domain? Sets of nodes + initialize = function(self, node, _) + return node and {[node] = true} or {} + end, + transfer = function(self, node, input, graph, pred) + if not pred then return {[node] = true} end + -- if the incoming is epsilon, then add, otherwise pass + local tag = graph.reverse[pred][node] + if tag == '' then + local new = utils.copy(input) + new[node] = true + return new + end + return {[node] = true} + end, + changed = function(self, old, new) + -- assuming monotone in the new direction + for key in pairs(new) do + if not old[key] then + return true + end + end + return false + end, + merge = function(self, left, right) + local merged = utils.copy(left) + for key in pairs(right) do + merged[key] = true + end + return merged + end, + tostring = function(self, _, node, state) + local keys = {} + for key in pairs(state) do + table.insert(keys, key) + end + return tostring(node) .. ' {' .. table.concat(keys, ', ') .. '}' + end, + + solution = { + transitions = function(self, context, nodes, character_classes) + local transitions = {} + for node in pairs(nodes) do + for succ, symbol in pairs(context.graph.forward[node]) do + if symbol ~= '' then + if not transitions[symbol] then transitions[symbol] = {} end + transitions[symbol][succ] = true + end + end + end + for symbol, _ in pairs(transitions) do + local classes = re.character_class(symbol, character_classes) + for _, class in ipairs(classes) do + if transitions[class] then + for key in pairs(transitions[class]) do transitions[symbol][key] = true end + end + end + end + for symbol, nodes in pairs(transitions) do + transitions[symbol] = self:closure(context, nodes) + end + return transitions + end, + closure = function(self, _, nodes) + local closure = {} + for node in pairs(nodes) do + closure[node] = true + for succ in pairs(self[node]) do + closure[succ] = true + end + end + return closure + end + } +} + +local function hash(state) + local keys = {} + for key in pairs(state) do + table.insert(keys, key) + end + table.sort(keys) + return table.concat(keys, ',') +end + +local function subset_construction(first, last, nfa_context, character_classes, dfa_context) + local closure = epsilon_closure:reverse(nfa_context.graph) + if not dfa_context then dfa_context = new_context() end + local hash_to_dfa_node = {} + + local function new_vertex(closure) + local h = hash(closure) + if hash_to_dfa_node[h] then + return hash_to_dfa_node[h], true + end + local open = {} + for node in pairs(closure) do + if type(nfa_context.graph.nodes[node]) == 'table' then + table.insert(open, nfa_context.graph.nodes[node]) + end + end + local id = dfa_context:get({closure, open}) + for k in pairs(closure) do + if k == last then + dfa_context:accept(id) + break + end + end + hash_to_dfa_node[h] = id + return id, false + end + + local function dfa_construction(node) + local states, open = unpack(dfa_context.graph.nodes[node]) + local transitions = closure:transitions(nfa_context, states, character_classes) + for symbol, nodes in pairs(transitions) do + local succ, seen = new_vertex(nodes) + dfa_context.graph:edge(node, succ, symbol, true) + if not seen then + dfa_construction(succ) + end + end + end + local start = new_vertex(closure[first]) + dfa_construction(start) + return dfa_context +end + +local function re_match(graph, str, character_classes) + if not character_classes then character_classes = re.default_classes end + local ptr = '1' + local history = {ptr} + for i = 1, #str do + local char = string.char(str:byte(i)) + local classes = re.character_class(char, character_classes) + local local_match = false + for _, class in ipairs(classes) do + if graph.forward_tags[ptr] and graph.forward_tags[ptr][class] then + local_match = true + assert(#graph.forward_tags[ptr][class] == 1) + ptr = unpack(graph.forward_tags[ptr][class]) + table.insert(history, ptr) + break; + end + end + if not local_match then + return graph:trace(history, str) + end + end + return graph:trace(history, str) +end + +function re.compile(pattern, character_classes) + local regex_tree + if not character_classes then character_classes = re.default_classes end + regex_tree, character_classes = parse_re(pattern, character_classes) + local nfa_context = new_context() + local start, finish = unpack(translate_to_nfa(nfa_context, regex_tree)) + nfa_context:accept(finish) + local dfa_context = subset_construction(start, finish, nfa_context, character_classes) + dfa_context.graph.pattern = pattern + function dfa_context.graph:match(str) return re_match(self, str, character_classes) end + return dfa_context.graph +end + +function re.character_class(character, character_classes) + -- return the trace of its inheritance tree + -- char < ... < . + local trace = {} + table.insert(trace, character) + for _, class in ipairs(character_classes) do + local sigil, equivalence_class = unpack(class) + if type(equivalence_class) == 'table' and equivalence_class[character] then + table.insert(trace, sigil) + elseif type(equivalence_class) == 'function' and equivalence_class(character) then + table.insert(trace, sigil) + end + end + table.insert(trace, '.') + return trace +end + +local function classify(list) + local set = {} + for _, key in ipairs(list) do + set[tostring(key)] = true + end + return set +end + +function re.create_character_class(classes) + local mt = {} + function mt.tokenize(self, str) + return function() + if #str == 0 then + return + end + for _, class in ipairs(classes) do + local sigil = unpack(class) + -- try to do a full match + if str:sub(1, #sigil) == sigil then + str = str:sub(#sigil + 1) + return sigil + end + end + for _, class in pairs(classes) do + if type(class) == "function" then + local match, action = class(str) + if match then + str = str:sub(#match + 1) + return {match, action} + end + end + end + local c = str:sub(1,1) + str = str:sub(2) + if c == '(' and str:sub(1, 1) == '?' then + c = '(?' + str = str:sub(2) + end + return c + end + end + setmetatable(classes, {__index = mt}) + return classes +end + +local function peep(word, n) + if n > #word then + return nil + end + return word:sub(n, n) +end + +re.default_classes = re.create_character_class { + {'%d', classify {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + {'%a', classify {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', + 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', + 't', 'u', 'v', 'w', 'x', 'y', 'z', + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", + "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", + "W", "X", "Y", "Z"}}, + {'%l', classify {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', + 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', + 't', 'u', 'v', 'w', 'x', 'y', 'z'}}, + {'%u', classify { + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", + "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", + "W", "X", "Y", "Z"}}, + {'%s', classify {' ', '\t', '\n', '\r'}}, + {'%%', classify {'%'}}, + {'%(', classify {'('}}, + {'%)', classify {')'}}, + {'%.', classify {'.'}}, + {'%+', classify {'+'}}, + {'%|', classify {'|'}}, + {'%*', classify {'*'}}, + -- Generate character classes using string keyed functions + bracket_set_notation = function(pattern) + -- [abc-x] or [^z] + if pattern:sub(1,1) ~= '[' or #pattern <= 2 then return end + local complement, start = false, 2 + if pattern:sub(2,2) == '^' then complement, start = true, 3 end + -- find the matching ] + local characters = {} + local in_range = false + for i = start, #pattern do + local char = string.char(pattern:byte(i)) + if char == ']' then + return pattern:sub(1, i), function(s) + if not complement then + return characters[s] + else + return not characters[s] + end + end + elseif peep(pattern, i + 1) == '-' then + in_range = char + else + if not in_range then + characters[char] = true + elseif char ~= '-' then + -- get all of the characters between in_range and char + assert(char >= in_range) + for b = in_range:byte(), char:byte() do + characters[string.char(b)] = true + end + in_range = false + end + end + end + return + end, +} + return setmetatable(re, {__call = function(self, pattern, class) return self.compile(pattern, class) end}) \ No newline at end of file diff --git a/testing/elimination.ylua b/testing/elimination.ylua index 2961dca..caefdf0 100644 --- a/testing/elimination.ylua +++ b/testing/elimination.ylua @@ -1,10 +1,10 @@ -%file "testing/elimination_parser" - -prefixexp := $var | $functioncall | '(' $exp ')'; -functioncall := $prefixexp $args; -var := name | $prefixexp '[' $exp ']'; -exp := nil | $prefixexp; -args := '(' ')'; - - -root := $prefixexp; +%file "testing/elimination_parser" + +prefixexp := $var | $functioncall | '(' $exp ')'; +functioncall := $prefixexp $args; +var := name | $prefixexp '[' $exp ']'; +exp := nil | $prefixexp; +args := '(' ')'; + + +root := $prefixexp; diff --git a/testing/elimination_parser.lua b/testing/elimination_parser.lua index 582472a..7c47786 100644 --- a/testing/elimination_parser.lua +++ b/testing/elimination_parser.lua @@ -1,39 +1,39 @@ -local ll1 = require 'll1.ll1' -local __GRAMMAR__ = {} -__GRAMMAR__.grammar = {['var'] = {[1] = {[1] = '$prefixexp', [2] = '[', [3] = '$exp', [4] = ']'}, [2] = {[1] = 'name'}, ['variable'] = '$var'}, ['root'] = {[1] = {[1] = '$prefixexp'}, ['variable'] = '$root'}, ['exp'] = {[1] = {[1] = '$prefixexp'}, [2] = {[1] = 'nil'}, ['variable'] = '$exp'}, ['args'] = {[1] = {[1] = '(', [2] = ')'}, ['variable'] = '$args'}, ['functioncall'] = {[1] = {[1] = '$prefixexp', [2] = '$args'}, ['variable'] = '$functioncall'}, ['prefixexp'] = {[1] = {[1] = '(', [2] = '$exp', [3] = ')'}, [2] = {[1] = '$functioncall'}, [3] = {[1] = '$var'}, ['variable'] = '$prefixexp'}} -__GRAMMAR__.grammar[1] = 'testing/elimination_parser.table' -__GRAMMAR__.convert = function(token) return token[1] end -__GRAMMAR__.prologue = function(str) - local tokens = {} - for token in str:gmatch("%S+") do - table.insert(tokens, {token}) - end - return tokens -end -__GRAMMAR__.epilogue = function(...) return ... end -__GRAMMAR__.default_action = function(...) return {...} end -__GRAMMAR__.grammar["var"][1].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["var"][2].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["root"][1].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["exp"][1].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["exp"][2].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["args"][1].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["functioncall"][1].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["prefixexp"][1].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["prefixexp"][2].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["prefixexp"][3].action = __GRAMMAR__.default_action -__GRAMMAR__.ll1 = ll1(__GRAMMAR__.grammar) -return setmetatable( - __GRAMMAR__, - {__call = function(this, str) - local tokens = {} - for _, token in ipairs(this.prologue(str)) do - table.insert( - tokens, - setmetatable( - token, - {__tostring = function(self) return this.convert(self) end})) - end - local result = this.ll1:parse(tokens) - return this.epilogue(result) +local ll1 = require 'll1.ll1' +local __GRAMMAR__ = {} +__GRAMMAR__.grammar = {['var'] = {[1] = {[1] = '$prefixexp', [2] = '[', [3] = '$exp', [4] = ']'}, [2] = {[1] = 'name'}, ['variable'] = '$var'}, ['root'] = {[1] = {[1] = '$prefixexp'}, ['variable'] = '$root'}, ['exp'] = {[1] = {[1] = '$prefixexp'}, [2] = {[1] = 'nil'}, ['variable'] = '$exp'}, ['args'] = {[1] = {[1] = '(', [2] = ')'}, ['variable'] = '$args'}, ['functioncall'] = {[1] = {[1] = '$prefixexp', [2] = '$args'}, ['variable'] = '$functioncall'}, ['prefixexp'] = {[1] = {[1] = '(', [2] = '$exp', [3] = ')'}, [2] = {[1] = '$functioncall'}, [3] = {[1] = '$var'}, ['variable'] = '$prefixexp'}} +__GRAMMAR__.grammar[1] = 'testing/elimination_parser.table' +__GRAMMAR__.convert = function(token) return token[1] end +__GRAMMAR__.prologue = function(str) + local tokens = {} + for token in str:gmatch("%S+") do + table.insert(tokens, {token}) + end + return tokens +end +__GRAMMAR__.epilogue = function(...) return ... end +__GRAMMAR__.default_action = function(...) return {...} end +__GRAMMAR__.grammar["var"][1].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["var"][2].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["root"][1].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["exp"][1].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["exp"][2].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["args"][1].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["functioncall"][1].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["prefixexp"][1].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["prefixexp"][2].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["prefixexp"][3].action = __GRAMMAR__.default_action +__GRAMMAR__.ll1 = ll1(__GRAMMAR__.grammar) +return setmetatable( + __GRAMMAR__, + {__call = function(this, str) + local tokens = {} + for _, token in ipairs(this.prologue(str)) do + table.insert( + tokens, + setmetatable( + token, + {__tostring = function(self) return this.convert(self) end})) + end + local result = this.ll1:parse(tokens) + return this.epilogue(result) end}) \ No newline at end of file diff --git a/testing/elimination_test.lua b/testing/elimination_test.lua index 1cdc62f..652798f 100644 --- a/testing/elimination_test.lua +++ b/testing/elimination_test.lua @@ -1,12 +1,12 @@ -local parser = require "testing.elimination_parser" -local ll1 = require 'll1.ll1' -local elimination = require 'll1.elimination' - -local config = ll1.configure(parser.grammar) -print(config:pretty()) -local new_config = elimination.eliminate_cycles(config) ---print(new_config:pretty()) -local no_rec = elimination.indirect_elimination(new_config) -print() -print(no_rec:pretty()) +local parser = require "testing.elimination_parser" +local ll1 = require 'll1.ll1' +local elimination = require 'll1.elimination' + +local config = ll1.configure(parser.grammar) +print(config:pretty()) +local new_config = elimination.eliminate_cycles(config) +--print(new_config:pretty()) +local no_rec = elimination.indirect_elimination(new_config) +print() +print(no_rec:pretty()) ll1(no_rec) \ No newline at end of file diff --git a/testing/ew.dot b/testing/ew.dot new file mode 100644 index 0000000..14ca5a6 --- /dev/null +++ b/testing/ew.dot @@ -0,0 +1,220 @@ +digraph { + rankdir=LR; + size="8,5" + node[shape=circle,label=""]; + funcbody; + root; + exp5'; + retstat'maybe#1; + parlist'group#2; + stat'star#1; + exp_stop'star#1; + level7; + stat'maybe#1; + explist'group#1; + stat'group#4; + level3; + field'maybe#2; + args'maybe#1; + assignment'star#1; + tableconstructor'star#1; + funcname'star#1; + exp4'group#1; + funcname; + fieldsep; + level6; + exp6; + stat'group#2'maybe#1; + funcname'group#2; + level8; + field'maybe#3; + stat'group#1'maybe#1; + assignment; + functiondef; + stat'group#3; + exp3; + assignment_or_call; + assignment_or_call'star#1; + namelist; + assignment_or_call'group#1; + label; + exp8'maybe#1; + exp4; + exp2'; + level2; + level1; + unop; + suffix; + stat'group#1; + binop; + exp'; + explist'star#1; + exp4'maybe#1; + funcname'maybe#1; + namelist'group#1; + exp8'group#1; + stat; + parlist'star#1; + exp8; + parlist'group#1; + field'maybe#1; + primaryexp; + retstat; + args; + explist; + exp; + stat'group#2; + parlist; + stat'group#1'group#1; + level5; + block'maybe#1; + exp5; + namelist'star#1; + stat'group#2'group#1; + block; + retstat'maybe#2; + exp3'; + level4; + tableconstructor; + assignment_or_call'maybe#1; + exp_stop; + funcbody'maybe#1; + field; + funcname'group#1; + exp7; + exp6'; + exp2; + block'star#1; + funcbody -> block[label="table: 0x106ce00"]; + funcbody -> funcbody'maybe#1[label="table: 0x1057710"]; + root -> block[label="table: 0x106df30"]; + exp5' -> exp6[label="table: 0x10853d0"]; + exp5' -> exp5'[label="table: 0x1057dd0"]; + exp5' -> level5[label="table: 0x1056c80"]; + exp5 -> exp5'[label="table: 0xfa0f50"]; + exp5 -> exp6[label="table: 0x10a6f60"]; + stat'star#1 -> stat'group#3[label="table: 0xfaf9f0"]; + stat'star#1 -> stat'star#1[label="table: 0x10234a0"]; + exp_stop'star#1 -> exp_stop'star#1[label="table: 0x108b280"]; + exp_stop'star#1 -> suffix[label="table: 0xfe3e40"]; + exp4'maybe#1 -> exp4'group#1[label="table: 0xf85c90"]; + explist'group#1 -> exp[label="table: 0x10cb020"]; + stat'group#4 -> block[label="table: 0xffb900"]; + field'maybe#2 -> fieldsep[label="table: 0x107b480"]; + args'maybe#1 -> explist[label="table: 0xf91450"]; + assignment'star#1 -> suffix[label="table: 0x10d00a0"]; + assignment'star#1 -> assignment'star#1[label="table: 0x10f19f0"]; + tableconstructor'star#1 -> tableconstructor'star#1[label="table: 0x1021c00"]; + tableconstructor'star#1 -> field[label="table: 0x10f3650"]; + funcname'star#1 -> funcname'group#1[label="table: 0x10d8600"]; + funcname'star#1 -> funcname'star#1[label="table: 0x10f97a0"]; + exp4'group#1 -> exp4[label="table: 0xf860d0"]; + exp4'group#1 -> level4[label="table: 0x1007aa0"]; + funcname -> funcname'maybe#1[label="table: 0x10d3d30"]; + funcname -> funcname'star#1[label="table: 0x1013030"]; + exp6 -> exp6'[label="table: 0x1091c30"]; + exp6 -> exp7[label="table: 0xfb9030"]; + stat'group#2'maybe#1 -> stat'group#2'group#1[label="table: 0x1026300"]; + field'maybe#3 -> fieldsep[label="table: 0x10016f0"]; + stat'group#1'maybe#1 -> stat'group#1'group#1[label="table: 0x101c970"]; + assignment -> primaryexp[label="table: 0xf9d0e0"]; + assignment -> explist[label="table: 0x10af940"]; + assignment -> assignment[label="table: 0xfb4db0"]; + assignment -> assignment'star#1[label="table: 0xffd5b0"]; + functiondef -> funcbody[label="table: 0x103ee30"]; + stat'group#3 -> block[label="table: 0x10406b0"]; + stat'group#3 -> exp[label="table: 0x1042660"]; + exp3 -> exp4[label="table: 0x1008bd0"]; + exp3 -> exp3'[label="table: 0xfcb8a0"]; + assignment_or_call -> primaryexp[label="table: 0xfb1fb0"]; + assignment_or_call -> assignment_or_call'star#1[label="table: 0x1045eb0"]; + assignment_or_call -> assignment_or_call'maybe#1[label="table: 0xfcbfe0"]; + assignment_or_call'star#1 -> assignment_or_call'star#1[label="table: 0x10408a0"]; + assignment_or_call'star#1 -> assignment_or_call'group#1[label="table: 0x10c9c40"]; + namelist -> namelist'star#1[label="table: 0x1039a30"]; + assignment_or_call'group#1 -> exp[label="table: 0x107fa00"]; + assignment_or_call'group#1 -> args[label="table: 0xf9ae00"]; + exp4 -> exp4'maybe#1[label="table: 0x1008c30"]; + exp4 -> exp5[label="table: 0xf95fa0"]; + exp2' -> level2[label="table: 0x1053430"]; + exp2' -> exp3[label="table: 0x10916d0"]; + exp2' -> exp2'[label="table: 0x1100c30"]; + exp8'maybe#1 -> exp8'group#1[label="table: 0x1110960"]; + suffix -> exp[label="table: 0x1083070"]; + suffix -> args[label="table: 0x10a2aa0"]; + stat'group#1 -> funcbody[label="table: 0xff56e0"]; + stat'group#1 -> namelist[label="table: 0x10722f0"]; + stat'group#1 -> stat'group#1'maybe#1[label="table: 0x10fd070"]; + exp' -> exp2[label="table: 0xfcef90"]; + exp' -> exp'[label="table: 0x1110710"]; + exp' -> level1[label="table: 0xfceb60"]; + explist'star#1 -> explist'group#1[label="table: 0x100a150"]; + explist'star#1 -> explist'star#1[label="table: 0x1098060"]; + funcname'maybe#1 -> funcname'group#2[label="table: 0x104a660"]; + stat'maybe#1 -> stat'group#4[label="table: 0x103d9b0"]; + exp8'group#1 -> exp8[label="table: 0x10667d0"]; + exp8'group#1 -> level8[label="table: 0xfed660"]; + stat -> funcbody[label="table: 0xffe280"]; + stat -> block[label="table: 0x101b7e0"]; + stat -> stat'maybe#1[label="table: 0x103d020"]; + stat -> assignment_or_call[label="table: 0xf7b4b0"]; + stat -> exp[label="table: 0x10f94c0"]; + stat -> stat'group#2[label="table: 0x101d370"]; + stat -> stat'group#1[label="table: 0xfd39e0"]; + stat -> label[label="table: 0xffba20"]; + stat -> funcname[label="table: 0x10d0740"]; + stat -> stat'star#1[label="table: 0xf898a0"]; + exp8 -> exp_stop[label="table: 0x1065f60"]; + exp8 -> exp8'maybe#1[label="table: 0x1095370"]; + parlist'star#1 -> parlist'group#1[label="table: 0x1109c50"]; + parlist'star#1 -> parlist'star#1[label="table: 0x102a180"]; + field'maybe#1 -> fieldsep[label="table: 0x10aab00"]; + primaryexp -> exp[label="table: 0xf94430"]; + stat'group#2'group#1 -> exp[label="table: 0xff0920"]; + args -> args'maybe#1[label="table: 0xfb4450"]; + args -> tableconstructor[label="table: 0x10d2000"]; + explist -> explist'star#1[label="table: 0x1018d70"]; + explist -> exp[label="table: 0x1047430"]; + exp -> exp'[label="table: 0xfa1f40"]; + exp -> exp2[label="table: 0xf84fc0"]; + stat'group#2 -> exp[label="table: 0x10456b0"]; + stat'group#2 -> block[label="table: 0xf89440"]; + stat'group#2 -> explist[label="table: 0x10bac50"]; + stat'group#2 -> namelist[label="table: 0x108bbd0"]; + stat'group#2 -> stat'group#2'maybe#1[label="table: 0x10ff0d0"]; + parlist -> parlist'group#2[label="table: 0x1067440"]; + parlist -> parlist'star#1[label="table: 0x10b0fc0"]; + stat'group#1'group#1 -> explist[label="table: 0x106d0c0"]; + exp2 -> exp3[label="table: 0x103a840"]; + exp2 -> exp2'[label="table: 0x1076760"]; + retstat'maybe#1 -> explist[label="table: 0x102a9a0"]; + namelist'star#1 -> namelist'star#1[label="table: 0x10f06b0"]; + namelist'star#1 -> namelist'group#1[label="table: 0x1083240"]; + block -> block'maybe#1[label="table: 0x1095bd0"]; + block -> block'star#1[label="table: 0x104a160"]; + block'maybe#1 -> retstat[label="table: 0x1097230"]; + retstat -> retstat'maybe#2[label="table: 0x107f3b0"]; + retstat -> retstat'maybe#1[label="table: 0x1111200"]; + tableconstructor -> tableconstructor'star#1[label="table: 0x103b7d0"]; + assignment_or_call'maybe#1 -> assignment[label="table: 0xffea10"]; + exp_stop -> exp_stop'star#1[label="table: 0xffacc0"]; + exp_stop -> functiondef[label="table: 0xfe18d0"]; + exp_stop -> tableconstructor[label="table: 0xfdaa50"]; + exp_stop -> primaryexp[label="table: 0xfd6c00"]; + funcbody'maybe#1 -> parlist[label="table: 0xffa900"]; + field -> field'maybe#2[label="table: 0x10550d0"]; + field -> exp[label="table: 0x10d0b80"]; + field -> field'maybe#3[label="table: 0xf81c50"]; + field -> field'maybe#1[label="table: 0x1093860"]; + exp3' -> exp3'[label="table: 0xff5f30"]; + exp3' -> level3[label="table: 0x110cb20"]; + exp3' -> exp4[label="table: 0xfe3700"]; + exp6' -> exp6'[label="table: 0x10ab7e0"]; + exp6' -> level6[label="table: 0x10bb210"]; + exp6' -> exp7[label="table: 0x10f0630"]; + exp7 -> level7[label="table: 0x1085180"]; + exp7 -> exp8[label="table: 0xfd6ee0"]; + exp7 -> exp7[label="table: 0x1063aa0"]; + block'star#1 -> stat[label="table: 0x1054900"]; + block'star#1 -> block'star#1[label="table: 0x10947f0"]; +} diff --git a/testing/experimental.ylua b/testing/experimental.ylua index 3e0b3c9..94ae1f5 100644 --- a/testing/experimental.ylua +++ b/testing/experimental.ylua @@ -1,120 +1,120 @@ -// Parser frontend grammar (written in the parser for the same parser) -%file "testing/experimental_parser" -%require "parsing.lex" -%require "parsing.re" - -/* -root = expr -rexpr = %eps | $expr | PLUS $expr -expr = $consts $rexpr | ID $rexpr | FUN ID -> $expr | LPAREN $expr RPAREN $rexpr -consts = NUMBER | STRING | TRUE | FALSE -*/ - -%code {: -local string_stack = {} -local function id(token) return function(...) return {token, ...} end end -local function ignore(...) return end -local function pop(stack) return table.remove(stack) end -local function push(item, stack) table.insert(stack, item) end -local tokenizer = lex.lex { - root = { - {'+', id 'PLUS'}, - {'fun', id 'FUN'}, - {'->', id 'ARROW'}, - {'(', id 'LPAREN'}, - {')', id 'RPAREN'}, - {'true', id 'TRUE'}, - {'false', id 'FALSE'}, - {re '%s+', ignore}, - {re '%d+', id 'NUMBER'}, - {re '%d+%.%d+', id 'NUMBER'}, - {re '(%a|_)(%a|%d|_|\')*', id 'ID'}, - {'"', function(piece, lexer) lexer:go 'string'; push('', string_stack) end}, - }, - string = { - {'"', function(piece, lexer) - lexer:go 'root' - return {'STRING', pop(string_stack)} - end}, - {re '.', function(piece, lexer) - push(pop(string_stack) .. piece, string_stack) - end} - }, -} -:} - -%default.action {: - function(item) - return item - end -:} - -%prologue {: - function(stream) - local tokens = {} - for token in tokenizer(stream) do - table.insert(tokens, token) - end - return tokens - end -:} - -%convert {: - function(token) - return token[1] - end -:} - -%epilogue {: - function(result) - return result - end -:} - -%code {: - local take2 = function(token) return {kind = 'tok', unpack(token, 1, 2)} end - local last = function(...) return select(select('#', ...), ...) end - local function rexpr(left, pair) - local kind, right = unpack(pair) - if not kind then return left end - return {kind = kind, left, right} - end -:} -/* -root := $expr [:_1:] -expr := $consts $rexpr [: rexpr(_1, _2) :] - | ID $rexpr [: rexpr(take2(_1), _2) :] - | FUN ID ARROW $expr [: {kind = 'fun', take2(_2), _4} :] - | LPAREN $expr RPAREN $rexpr [: rexpr(_2, _4) :] -rexpr := %eps [: {} :] - | $expr [: {'app', _1} :] - | '+' $expr [: {'plus', _2} :] -consts := NUMBER [: take2(_1) :] - | STRING [: take2(_1) :] - | TRUE [: take2(_1) :] - | FALSE [: take2(_1) :]*/ - -%quote '(' LPAREN -%quote ')' RPAREN -%quote 'fun' FUN -%quote '->' ARROW -%quote '+' PLUS -%quote 'true' TRUE -%quote 'false' FALSE - -%resolve consts 'true' {:function(self, tokens) - if tostring(tokens[2]) == 'FALSE' then - return self:go 'tf' - else - return self:go 't' - end -end:} - -consts := NUMBER - | STRING - | 'true' - | 'false' - | 'true' 'false' {: function() return 'true and false' end:} - -expr := ('(' $expr ')' | $consts | ID ;) ( '+' $expr | $expr;)? | 'fun' ID+ '->' $expr; +// Parser frontend grammar (written in the parser for the same parser) +%file "testing/experimental_parser" +%require "parsing.lex" +%require "parsing.re" + +/* +root = expr +rexpr = %eps | $expr | PLUS $expr +expr = $consts $rexpr | ID $rexpr | FUN ID -> $expr | LPAREN $expr RPAREN $rexpr +consts = NUMBER | STRING | TRUE | FALSE +*/ + +%code {: +local string_stack = {} +local function id(token) return function(...) return {token, ...} end end +local function ignore(...) return end +local function pop(stack) return table.remove(stack) end +local function push(item, stack) table.insert(stack, item) end +local tokenizer = lex.lex { + root = { + {'+', id 'PLUS'}, + {'fun', id 'FUN'}, + {'->', id 'ARROW'}, + {'(', id 'LPAREN'}, + {')', id 'RPAREN'}, + {'true', id 'TRUE'}, + {'false', id 'FALSE'}, + {re '%s+', ignore}, + {re '%d+', id 'NUMBER'}, + {re '%d+%.%d+', id 'NUMBER'}, + {re '(%a|_)(%a|%d|_|\')*', id 'ID'}, + {'"', function(piece, lexer) lexer:go 'string'; push('', string_stack) end}, + }, + string = { + {'"', function(piece, lexer) + lexer:go 'root' + return {'STRING', pop(string_stack)} + end}, + {re '.', function(piece, lexer) + push(pop(string_stack) .. piece, string_stack) + end} + }, +} +:} + +%default.action {: + function(item) + return item + end +:} + +%prologue {: + function(stream) + local tokens = {} + for token in tokenizer(stream) do + table.insert(tokens, token) + end + return tokens + end +:} + +%convert {: + function(token) + return token[1] + end +:} + +%epilogue {: + function(result) + return result + end +:} + +%code {: + local take2 = function(token) return {kind = 'tok', unpack(token, 1, 2)} end + local last = function(...) return select(select('#', ...), ...) end + local function rexpr(left, pair) + local kind, right = unpack(pair) + if not kind then return left end + return {kind = kind, left, right} + end +:} +/* +root := $expr [:_1:] +expr := $consts $rexpr [: rexpr(_1, _2) :] + | ID $rexpr [: rexpr(take2(_1), _2) :] + | FUN ID ARROW $expr [: {kind = 'fun', take2(_2), _4} :] + | LPAREN $expr RPAREN $rexpr [: rexpr(_2, _4) :] +rexpr := %eps [: {} :] + | $expr [: {'app', _1} :] + | '+' $expr [: {'plus', _2} :] +consts := NUMBER [: take2(_1) :] + | STRING [: take2(_1) :] + | TRUE [: take2(_1) :] + | FALSE [: take2(_1) :]*/ + +%quote '(' LPAREN +%quote ')' RPAREN +%quote 'fun' FUN +%quote '->' ARROW +%quote '+' PLUS +%quote 'true' TRUE +%quote 'false' FALSE + +%resolve consts 'true' {:function(self, tokens) + if tostring(tokens[2]) == 'FALSE' then + return self:go 'tf' + else + return self:go 't' + end +end:} + +consts := NUMBER + | STRING + | 'true' + | 'false' + | 'true' 'false' {: function() return 'true and false' end:} + +expr := ('(' $expr ')' | $consts | ID ;) ( '+' $expr | $expr;)? | 'fun' ID+ '->' $expr; root := $expr; \ No newline at end of file diff --git a/testing/experimental_parser.lua b/testing/experimental_parser.lua index b59fc89..8d04218 100644 --- a/testing/experimental_parser.lua +++ b/testing/experimental_parser.lua @@ -1,103 +1,103 @@ -local lex = require 'parsing.lex' -local re = require 'parsing.re' -local ll1 = require 'll1.ll1' -local __GRAMMAR__ = {} -__GRAMMAR__.grammar = {['consts'] = {[1] = {[1] = 'TRUE', [2] = 'FALSE', ['tag'] = 'tf'}, [2] = {[1] = 'FALSE'}, [3] = {[1] = 'TRUE', ['tag'] = 't'}, [4] = {[1] = 'STRING'}, [5] = {[1] = 'NUMBER'}, ['variable'] = '$consts'}, ['root'] = {[1] = {[1] = '$expr'}, ['variable'] = '$root'}, ['expr\'group#1'] = {[1] = {[1] = 'ID'}, [2] = {[1] = '$consts'}, [3] = {[1] = 'LPAREN', [2] = '$expr', [3] = 'RPAREN'}, ['variable'] = '$expr\'group#1'}, ['expr\'maybe#1'] = {[1] = {[1] = '$expr\'group#2'}, [2] = {[1] = ''}, ['variable'] = '$expr\'maybe#1'}, ['expr'] = {[1] = {[1] = 'FUN', [2] = '$expr\'plus#1', [3] = 'ARROW', [4] = '$expr'}, [2] = {[1] = '$expr\'group#1', [2] = '$expr\'maybe#1'}, ['variable'] = '$expr'}, ['expr\'plus#1'] = {[1] = {[1] = 'ID', [2] = '$expr\'star#1'}, ['variable'] = '$expr\'plus#1'}, ['expr\'group#2'] = {[1] = {[1] = '$expr'}, [2] = {[1] = 'PLUS', [2] = '$expr'}, ['variable'] = '$expr\'group#2'}, ['expr\'star#1'] = {[1] = {[1] = 'ID', [2] = '$expr\'star#1'}, [2] = {[1] = ''}, ['variable'] = '$expr\'star#1'}} -__GRAMMAR__.grammar[1] = 'testing/experimental_parser.table' -local string_stack = {} -local function id(token) return function(...) return {token, ...} end end -local function ignore(...) return end -local function pop(stack) return table.remove(stack) end -local function push(item, stack) table.insert(stack, item) end -local tokenizer = lex.lex { - root = { - {'+', id 'PLUS'}, - {'fun', id 'FUN'}, - {'->', id 'ARROW'}, - {'(', id 'LPAREN'}, - {')', id 'RPAREN'}, - {'true', id 'TRUE'}, - {'false', id 'FALSE'}, - {re '%s+', ignore}, - {re '%d+', id 'NUMBER'}, - {re '%d+%.%d+', id 'NUMBER'}, - {re '(%a|_)(%a|%d|_|\')*', id 'ID'}, - {'"', function(piece, lexer) lexer:go 'string'; push('', string_stack) end}, - }, - string = { - {'"', function(piece, lexer) - lexer:go 'root' - return {'STRING', pop(string_stack)} - end}, - {re '.', function(piece, lexer) - push(pop(string_stack) .. piece, string_stack) - end} - }, -} -local take2 = function(token) return {kind = 'tok', unpack(token, 1, 2)} end - local last = function(...) return select(select('#', ...), ...) end - local function rexpr(left, pair) - local kind, right = unpack(pair) - if not kind then return left end - return {kind = kind, left, right} - end -__GRAMMAR__.convert = function(token) - return token[1] - end -__GRAMMAR__.prologue = function(stream) - local tokens = {} - for token in tokenizer(stream) do - table.insert(tokens, token) - end - return tokens - end -__GRAMMAR__.epilogue = function(result) - return result - end -__GRAMMAR__.default_action = function(item) - return item - end -__GRAMMAR__.grammar["consts"][1].action = function() return 'true and false' end -__GRAMMAR__.grammar["consts"][2].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["consts"][3].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["consts"][4].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["consts"][5].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["root"][1].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["expr'group#1"][1].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["expr'group#1"][2].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["expr'group#1"][3].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["expr'maybe#1"][1].action = function(item) return {item} end -__GRAMMAR__.grammar["expr'maybe#1"][2].action = function() return {} end -__GRAMMAR__.grammar["expr"][1].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["expr"][2].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["expr'plus#1"][1].action = function(item, list) - table.insert(list, item) - return list - end -__GRAMMAR__.grammar["expr'group#2"][1].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["expr'group#2"][2].action = __GRAMMAR__.default_action -__GRAMMAR__.grammar["expr'star#1"][1].action = function(item, list) table.insert(list, item); return list end -__GRAMMAR__.grammar["expr'star#1"][2].action = function() return {} end -__GRAMMAR__.grammar["consts"].conflict = {} -__GRAMMAR__.grammar["consts"].conflict["TRUE"] = function(self, tokens) - if tostring(tokens[2]) == 'FALSE' then - return self:go 'tf' - else - return self:go 't' - end -end -__GRAMMAR__.ll1 = ll1(__GRAMMAR__.grammar) -return setmetatable( - __GRAMMAR__, - {__call = function(this, str) - local tokens = {} - for _, token in ipairs(this.prologue(str)) do - table.insert( - tokens, - setmetatable( - token, - {__tostring = function(self) return this.convert(self) end})) - end - local result = this.ll1:parse(tokens) - return this.epilogue(result) +local lex = require 'parsing.lex' +local re = require 'parsing.re' +local ll1 = require 'll1.ll1' +local __GRAMMAR__ = {} +__GRAMMAR__.grammar = {['consts'] = {[1] = {[1] = 'TRUE', [2] = 'FALSE', ['tag'] = 'tf'}, [2] = {[1] = 'FALSE'}, [3] = {[1] = 'TRUE', ['tag'] = 't'}, [4] = {[1] = 'STRING'}, [5] = {[1] = 'NUMBER'}, ['variable'] = '$consts'}, ['root'] = {[1] = {[1] = '$expr'}, ['variable'] = '$root'}, ['expr\'group#1'] = {[1] = {[1] = 'ID'}, [2] = {[1] = '$consts'}, [3] = {[1] = 'LPAREN', [2] = '$expr', [3] = 'RPAREN'}, ['variable'] = '$expr\'group#1'}, ['expr\'maybe#1'] = {[1] = {[1] = '$expr\'group#2'}, [2] = {[1] = ''}, ['variable'] = '$expr\'maybe#1'}, ['expr'] = {[1] = {[1] = 'FUN', [2] = '$expr\'plus#1', [3] = 'ARROW', [4] = '$expr'}, [2] = {[1] = '$expr\'group#1', [2] = '$expr\'maybe#1'}, ['variable'] = '$expr'}, ['expr\'plus#1'] = {[1] = {[1] = 'ID', [2] = '$expr\'star#1'}, ['variable'] = '$expr\'plus#1'}, ['expr\'group#2'] = {[1] = {[1] = '$expr'}, [2] = {[1] = 'PLUS', [2] = '$expr'}, ['variable'] = '$expr\'group#2'}, ['expr\'star#1'] = {[1] = {[1] = 'ID', [2] = '$expr\'star#1'}, [2] = {[1] = ''}, ['variable'] = '$expr\'star#1'}} +__GRAMMAR__.grammar[1] = 'testing/experimental_parser.table' +local string_stack = {} +local function id(token) return function(...) return {token, ...} end end +local function ignore(...) return end +local function pop(stack) return table.remove(stack) end +local function push(item, stack) table.insert(stack, item) end +local tokenizer = lex.lex { + root = { + {'+', id 'PLUS'}, + {'fun', id 'FUN'}, + {'->', id 'ARROW'}, + {'(', id 'LPAREN'}, + {')', id 'RPAREN'}, + {'true', id 'TRUE'}, + {'false', id 'FALSE'}, + {re '%s+', ignore}, + {re '%d+', id 'NUMBER'}, + {re '%d+%.%d+', id 'NUMBER'}, + {re '(%a|_)(%a|%d|_|\')*', id 'ID'}, + {'"', function(piece, lexer) lexer:go 'string'; push('', string_stack) end}, + }, + string = { + {'"', function(piece, lexer) + lexer:go 'root' + return {'STRING', pop(string_stack)} + end}, + {re '.', function(piece, lexer) + push(pop(string_stack) .. piece, string_stack) + end} + }, +} +local take2 = function(token) return {kind = 'tok', unpack(token, 1, 2)} end + local last = function(...) return select(select('#', ...), ...) end + local function rexpr(left, pair) + local kind, right = unpack(pair) + if not kind then return left end + return {kind = kind, left, right} + end +__GRAMMAR__.convert = function(token) + return token[1] + end +__GRAMMAR__.prologue = function(stream) + local tokens = {} + for token in tokenizer(stream) do + table.insert(tokens, token) + end + return tokens + end +__GRAMMAR__.epilogue = function(result) + return result + end +__GRAMMAR__.default_action = function(item) + return item + end +__GRAMMAR__.grammar["consts"][1].action = function() return 'true and false' end +__GRAMMAR__.grammar["consts"][2].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["consts"][3].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["consts"][4].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["consts"][5].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["root"][1].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["expr'group#1"][1].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["expr'group#1"][2].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["expr'group#1"][3].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["expr'maybe#1"][1].action = function(item) return {item} end +__GRAMMAR__.grammar["expr'maybe#1"][2].action = function() return {} end +__GRAMMAR__.grammar["expr"][1].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["expr"][2].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["expr'plus#1"][1].action = function(item, list) + table.insert(list, item) + return list + end +__GRAMMAR__.grammar["expr'group#2"][1].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["expr'group#2"][2].action = __GRAMMAR__.default_action +__GRAMMAR__.grammar["expr'star#1"][1].action = function(item, list) table.insert(list, item); return list end +__GRAMMAR__.grammar["expr'star#1"][2].action = function() return {} end +__GRAMMAR__.grammar["consts"].conflict = {} +__GRAMMAR__.grammar["consts"].conflict["TRUE"] = function(self, tokens) + if tostring(tokens[2]) == 'FALSE' then + return self:go 'tf' + else + return self:go 't' + end +end +__GRAMMAR__.ll1 = ll1(__GRAMMAR__.grammar) +return setmetatable( + __GRAMMAR__, + {__call = function(this, str) + local tokens = {} + for _, token in ipairs(this.prologue(str)) do + table.insert( + tokens, + setmetatable( + token, + {__tostring = function(self) return this.convert(self) end})) + end + local result = this.ll1:parse(tokens) + return this.epilogue(result) end}) \ No newline at end of file diff --git a/testing/experimental_test.lua b/testing/experimental_test.lua index c68c3da..1262a13 100644 --- a/testing/experimental_test.lua +++ b/testing/experimental_test.lua @@ -1,3 +1,3 @@ -local parser = require 'testing.experimental_parser' - +local parser = require 'testing.experimental_parser' + print(parser("true false")) \ No newline at end of file diff --git a/testing/hello_world.lua b/testing/hello_world.lua index 7c1f9b2..ad21d88 100644 --- a/testing/hello_world.lua +++ b/testing/hello_world.lua @@ -1,13 +1,13 @@ ---local j = 0 ---print(j); ---for i in function() if j == 100 then return end j = j + 1; return j end do print(i, j) end --- ---print(1 + 2 * -3 / 4) --- ---error("Hello") - -local function emit(...) - print(...) -end - +--local j = 0 +--print(j); +--for i in function() if j == 100 then return end j = j + 1; return j end do print(i, j) end +-- +--print(1 + 2 * -3 / 4) +-- +--error("Hello") + +local function emit(...) + print(...) +end + emit(1, 2, 3) \ No newline at end of file diff --git a/testing/lex_test.lua b/testing/lex_test.lua index 2557854..487f64d 100644 --- a/testing/lex_test.lua +++ b/testing/lex_test.lua @@ -1,43 +1,43 @@ -local lex = require "parsing.lex" -local re = require "parsing.re" -local r = re.compile - -local string_stack = {} -local function id(...) return ... end -local function ignore(...) return end -local function pop(stack) return table.remove(stack) end -local function push(item, stack) table.insert(stack, item) end -local tokenizer = lex.lex { - root = { - {'if', id}, - {'else', id}, - {'then', id}, - {'(', id}, - {')', id}, - {r '%s+', ignore}, - {r '%a(%a|%d)*', id}, - {r '%d+', id}, - {'"', function(piece, lexer) - lexer:go 'string' - push(piece, string_stack) - end}, - {r '/%*', function(piece, lexer) lexer:go 'comment' end}, - }, - string = { - {'"', function(piece, lexer) - lexer:go 'root' - return pop(string_stack) .. piece - end}, - {r '.', function(piece, lexer) - push(pop(string_stack) .. piece, string_stack) - end} - }, - comment = { - {r '%*/', function(piece, lexer) lexer:go 'root' end}, - {r '.', ignore}, - } -} - -for token in tokenizer('if lol32 then func(1) else /* omg */ "abcd"') do - print(token) -end +local lex = require "parsing.lex" +local re = require "parsing.re" +local r = re.compile + +local string_stack = {} +local function id(...) return ... end +local function ignore(...) return end +local function pop(stack) return table.remove(stack) end +local function push(item, stack) table.insert(stack, item) end +local tokenizer = lex.lex { + root = { + {'if', id}, + {'else', id}, + {'then', id}, + {'(', id}, + {')', id}, + {r '%s+', ignore}, + {r '%a(%a|%d)*', id}, + {r '%d+', id}, + {'"', function(piece, lexer) + lexer:go 'string' + push(piece, string_stack) + end}, + {r '/%*', function(piece, lexer) lexer:go 'comment' end}, + }, + string = { + {'"', function(piece, lexer) + lexer:go 'root' + return pop(string_stack) .. piece + end}, + {r '.', function(piece, lexer) + push(pop(string_stack) .. piece, string_stack) + end} + }, + comment = { + {r '%*/', function(piece, lexer) lexer:go 'root' end}, + {r '.', ignore}, + } +} + +for token in tokenizer('if lol32 then func(1) else /* omg */ "abcd"') do + print(token) +end diff --git a/testing/ll1_test.lua b/testing/ll1_test.lua index 941c632..f550b3e 100644 --- a/testing/ll1_test.lua +++ b/testing/ll1_test.lua @@ -1,55 +1,55 @@ -local ll1 = require 'll1.ll1' -local utils = require 'common.utils' - -local ignore = function(...) return end -local id = function(...) - return setmetatable({...}, {__tostring = function(self) - return '{' .. table.concat(utils.map(tostring, self), ', ') .. '}' - end}) -end - --- expr = $consts rexpr' | identifier rexpr' | fun $x -> $expr | ($expr) $rexpr --- rexpr' = EPS | $expr | + $expr --- consts = number | string | true | false -local parser = ll1 { --- '/Users/leegao/sideproject/ParserSiProMo/testing/test_parser.lua', - root = { - {'$expr', action = id}, - }, - rexpr = { - {'', action = id}, - {'$expr', action = id}, - {'+', '$expr', action = id}, - }, - expr = { - {'$consts', '$rexpr', action = id}, - {'identifier', '$rexpr', action = id}, - {'fun', 'identifier', '->', '$expr', action = id}, - {'(', '$expr', ')', '$rexpr', action = id}, - }, - consts = { - {'number', action = id}, - {'string', action = id}, - {'true', action = id}, - {'false', action = id}, - {'a', '1', action = id, tag = 'a1'}, - {'a', '2', action = id, tag = 'a2'}, - conflict = { - a = function(state, tokens) - if tostring(tokens[2]) == '1' then - return state:go 'a1' - else - return state:go 'a2' - end - end - } - } -} -local tree, trace = parser:parse{"fun", "identifier", "->", "fun", "identifier", "->", "identifier", "+", "a", "1"} - -for state, token, tokens, production, args in utils.uloop(trace) do - local args_str = args and table.concat(utils.map(tostring, args), ', ') or 'ERROR' - local prod = (production ~= ERROR and table.concat(production, ' ')) or 'ERROR' - print(state, table.concat(tokens, ' ')) - print(' Prod', prod, '{'..args_str..'}') +local ll1 = require 'll1.ll1' +local utils = require 'common.utils' + +local ignore = function(...) return end +local id = function(...) + return setmetatable({...}, {__tostring = function(self) + return '{' .. table.concat(utils.map(tostring, self), ', ') .. '}' + end}) +end + +-- expr = $consts rexpr' | identifier rexpr' | fun $x -> $expr | ($expr) $rexpr +-- rexpr' = EPS | $expr | + $expr +-- consts = number | string | true | false +local parser = ll1 { +-- '/Users/leegao/sideproject/ParserSiProMo/testing/test_parser.lua', + root = { + {'$expr', action = id}, + }, + rexpr = { + {'', action = id}, + {'$expr', action = id}, + {'+', '$expr', action = id}, + }, + expr = { + {'$consts', '$rexpr', action = id}, + {'identifier', '$rexpr', action = id}, + {'fun', 'identifier', '->', '$expr', action = id}, + {'(', '$expr', ')', '$rexpr', action = id}, + }, + consts = { + {'number', action = id}, + {'string', action = id}, + {'true', action = id}, + {'false', action = id}, + {'a', '1', action = id, tag = 'a1'}, + {'a', '2', action = id, tag = 'a2'}, + conflict = { + a = function(state, tokens) + if tostring(tokens[2]) == '1' then + return state:go 'a1' + else + return state:go 'a2' + end + end + } + } +} +local tree, trace = parser:parse{"fun", "identifier", "->", "fun", "identifier", "->", "identifier", "+", "a", "1"} + +for state, token, tokens, production, args in utils.uloop(trace) do + local args_str = args and table.concat(utils.map(tostring, args), ', ') or 'ERROR' + local prod = (production ~= ERROR and table.concat(production, ' ')) or 'ERROR' + print(state, table.concat(tokens, ' ')) + print(' Prod', prod, '{'..args_str..'}') end \ No newline at end of file diff --git a/testing/lua_tokenizer_test.lua b/testing/lua_tokenizer_test.lua index ea719ba..38f55f9 100644 --- a/testing/lua_tokenizer_test.lua +++ b/testing/lua_tokenizer_test.lua @@ -1,17 +1,17 @@ -local tokenizer = require 'lua.tokenizer' -local utils = require 'common.utils' - -for token in tokenizer('forward') do - print(unpack(token)) -end - - -for token in tokenizer('= a --[==[]==] b [[ab "c"]] "abc\'\\"" \'123\' 3.1415926e32') do - print(unpack(token)) -end - -local tokens = {} -for token in tokenizer(io.open('common/graph.lua'):read('*all')) do - table.insert(tokens, token) -end +local tokenizer = require 'lua.tokenizer' +local utils = require 'common.utils' + +for token in tokenizer('forward') do + print(unpack(token)) +end + + +for token in tokenizer('= a --[==[]==] b [[ab "c"]] "abc\'\\"" \'123\' 3.1415926e32') do + print(unpack(token)) +end + +local tokens = {} +for token in tokenizer(io.open('common/graph.lua'):read('*all')) do + table.insert(tokens, token) +end print(utils.to_string(utils.map(function(x) return x[2] end, tokens))) \ No newline at end of file diff --git a/testing/re_test.lua b/testing/re_test.lua index 29b8693..b0c2fd2 100644 --- a/testing/re_test.lua +++ b/testing/re_test.lua @@ -1,33 +1,33 @@ -local re = require "parsing.re" -local utils = require "common.utils" - -local function format_open(open) - return open[1] .. '(' .. open[2] .. ')' -end - -local function visualize(pattern, str) - local graph = re.compile(pattern) - local matched, history = graph:match(str) - return graph:dot( - function(node, graph) - local tab = {} - for i, state in ipairs(history) do - if state == node then - table.insert(tab, str:sub(1, i - 1)) - end - end - local closure = {} - if (graph.nodes[node][1]) then - for k in pairs(graph.nodes[node][1]) do table.insert(closure, k) end - end - local groups = table.concat(utils.map(format_open, graph.nodes[node][2]), ', ') - return '[label="' .. node .. ' {' .. table.concat(tab, ', ') .. '} ' .. groups .. ' [' .. table.concat(closure, ', ') .. ']' .. '"]' - end, - function(c, l, r, graph) - local tab = {} - for key in pairs(c) do table.insert(tab, key) end - return table.concat(tab, ', ') - end) -end --- Let's get the tokens to a regex parser +local re = require "parsing.re" +local utils = require "common.utils" + +local function format_open(open) + return open[1] .. '(' .. open[2] .. ')' +end + +local function visualize(pattern, str) + local graph = re.compile(pattern) + local matched, history = graph:match(str) + return graph:dot( + function(node, graph) + local tab = {} + for i, state in ipairs(history) do + if state == node then + table.insert(tab, str:sub(1, i - 1)) + end + end + local closure = {} + if (graph.nodes[node][1]) then + for k in pairs(graph.nodes[node][1]) do table.insert(closure, k) end + end + local groups = table.concat(utils.map(format_open, graph.nodes[node][2]), ', ') + return '[label="' .. node .. ' {' .. table.concat(tab, ', ') .. '} ' .. groups .. ' [' .. table.concat(closure, ', ') .. ']' .. '"]' + end, + function(c, l, r, graph) + local tab = {} + for key in pairs(c) do table.insert(tab, key) end + return table.concat(tab, ', ') + end) +end +-- Let's get the tokens to a regex parser print(visualize("//ab?d", "//adasdfsdf\n")) \ No newline at end of file diff --git a/testing/test.dot b/testing/test.dot index d2d21b1..80f9aa4 100644 --- a/testing/test.dot +++ b/testing/test.dot @@ -1,24 +1,24 @@ -digraph { - rankdir=LR; - size="8,5" - node[shape=circle,label=""]; - 0 [label="0 -START -LOADK(A=r(2), Bx=1:0) -LOADK(A=r(3), Bx=2:1) -LOADK(A=r(4), Bx=4:2) -FORPREP(A=r(2), sBx=v(3))"]; - 5 [label="5 -CLOSURE(A=r(6), Bx=v(0)) -MOVE(A=r(x:0), B=r(6)) -JMP(A=v(6), sBx=v(0))"]; - 8 [label="8 -FORLOOP(A=r(2), sBx=v(-4))"]; - 9 [label="9 -RETURN(A=r(x:0), B=v(1))"]; - 0 -> 5[label="fallthrough"]; - 0 -> 8[label="jump"]; - 5 -> 8[label="jump"]; - 8 -> 5[label="jump"]; - 8 -> 9[label="fallthrough"]; +digraph { + rankdir=LR; + size="8,5" + node[shape=circle,label=""]; + 0 [label="0 +START +LOADK(A=r(2), Bx=1:0) +LOADK(A=r(3), Bx=2:1) +LOADK(A=r(4), Bx=4:2) +FORPREP(A=r(2), sBx=v(3))"]; + 5 [label="5 +CLOSURE(A=r(6), Bx=v(0)) +MOVE(A=r(x:0), B=r(6)) +JMP(A=v(6), sBx=v(0))"]; + 8 [label="8 +FORLOOP(A=r(2), sBx=v(-4))"]; + 9 [label="9 +RETURN(A=r(x:0), B=v(1))"]; + 0 -> 5[label="fallthrough"]; + 0 -> 8[label="jump"]; + 5 -> 8[label="jump"]; + 8 -> 5[label="jump"]; + 8 -> 9[label="fallthrough"]; } \ No newline at end of file