diff --git a/documentation/coffee/block_comment.coffee b/documentation/coffee/block_comment.coffee index 1b5af50c..3a313ade 100644 --- a/documentation/coffee/block_comment.coffee +++ b/documentation/coffee/block_comment.coffee @@ -1,5 +1,5 @@ ### -CoffeeScript Compiler v1.5.0 +CoffeeScript Compiler v1.6.0 Released under the MIT License ### diff --git a/documentation/docs/browser.html b/documentation/docs/browser.html index a108b482..d5e9bbbf 100644 --- a/documentation/docs/browser.html +++ b/documentation/docs/browser.html @@ -1,9 +1,9 @@ - browser.coffee
Jump To …

browser.coffee

Override exported methods for non-Node.js engines.

CoffeeScript = require './coffee-script'
+      browser.coffee           

browser.coffee

Override exported methods for non-Node.js engines.

CoffeeScript = require './coffee-script'
 CoffeeScript.require = require

Use standard JavaScript eval to eval code.

CoffeeScript.eval = (code, options = {}) ->
   options.bare ?= on
   eval CoffeeScript.compile code, options

Running code does not provide access to this scope.

CoffeeScript.run = (code, options = {}) ->
   options.bare = on
-  Function(CoffeeScript.compile code, options)()

If we're not in a browser environment, we're finished with the public API.

return unless window?

Load a remote script from the current domain via XHR.

CoffeeScript.load = (url, callback) ->
+  Function(CoffeeScript.compile code, options)()

If we're not in a browser environment, we're finished with the public API.

return unless window?

Load a remote script from the current domain via XHR.

CoffeeScript.load = (url, callback, options = {}) ->
   xhr = if window.ActiveXObject
     new window.ActiveXObject('Microsoft.XMLHTTP')
   else
@@ -13,7 +13,7 @@
   xhr.onreadystatechange = ->
     if xhr.readyState is 4
       if xhr.status in [0, 200]
-        CoffeeScript.run xhr.responseText
+        CoffeeScript.run xhr.responseText, options
       else
         throw new Error "Could not load #{url}"
       callback() if callback
@@ -21,16 +21,19 @@
 all script tags with a content-type of text/coffeescript.
 This happens on page load.

runScripts = ->
   scripts = document.getElementsByTagName 'script'
-  coffees = (s for s in scripts when s.type is 'text/coffeescript')
+  coffeetypes = ['text/coffeescript', 'text/literate-coffeescript']
+  coffees = (s for s in scripts when s.type in coffeetypes)
   index = 0
   length = coffees.length
   do execute = ->
     script = coffees[index++]
-    if script?.type is 'text/coffeescript'
+    mediatype = script?.type
+    if mediatype in coffeetypes
+      options = {literate: mediatype is 'text/literate-coffeescript'}
       if script.src
-        CoffeeScript.load script.src, execute
+        CoffeeScript.load script.src, execute, options
       else
-        CoffeeScript.run script.innerHTML
+        CoffeeScript.run script.innerHTML, options
         execute()
   null

Listen for window load, both in browsers and in IE.

if window.addEventListener
   addEventListener 'DOMContentLoaded', runScripts, no
diff --git a/documentation/docs/cake.html b/documentation/docs/cake.html
index b4520062..02769e95 100644
--- a/documentation/docs/cake.html
+++ b/documentation/docs/cake.html
@@ -1,4 +1,4 @@
-      cake.coffee           

cake.coffee

cake is a simplified version of Make + cake.coffee

cake.coffee

cake is a simplified version of Make (Rake, Jake) for CoffeeScript. You define tasks with names and descriptions in a Cakefile, and can call them from the command line, or invoke them from other tasks.

diff --git a/documentation/docs/coffee-script.html b/documentation/docs/coffee-script.html index 3228e429..5723c8e7 100644 --- a/documentation/docs/coffee-script.html +++ b/documentation/docs/coffee-script.html @@ -1,4 +1,4 @@ - coffee-script.coffee

coffee-script.coffee

CoffeeScript can be used both on the server, as a command-line compiler based + coffee-script.coffee

elsesandbox = globalsandbox.__filename = options.filename||'eval' - sandbox.__dirname = path.dirnamesandbox.__filenameifsandboxisglobalvm.runInThisContextjselse - vm.runInContextjs,sandbox

coffee-script.coffee

CoffeeScript can be used both on the server, as a command-line compiler based on Node.js/V8, or to run CoffeeScripts directly in the browser. This module contains the main entry functions for tokenizing, parsing, and compiling source CoffeeScript into JavaScript.

@@ -8,37 +8,79 @@ execute all scripts present in text/coffeescript tags.

path = require 'path' {Lexer} = require './lexer' {parser} = require './parser' -vm = require 'vm'

The file extensions that are considered to be CoffeeScript.

extensions = ['.coffee', '.litcoffee']

Load and run a CoffeeScript file for Node, stripping any BOMs.

loadFile = (module, filename) ->
+helpers   = require './helpers'
+vm        = require 'vm'
+sourcemap   = require './sourcemap'

Load and run a CoffeeScript file for Node, stripping any BOMs.

loadFile = (module, filename) ->
   raw = fs.readFileSync filename, 'utf8'
   stripped = if raw.charCodeAt(0) is 0xFEFF then raw.substring 1 else raw
-  module._compile compile(stripped, {filename}), filename
+  module._compile compile(stripped, {filename, literate: helpers.isLiterate filename}), filename
 
 if require.extensions
-  for ext in extensions
-    require.extensions[ext] = loadFile

The current CoffeeScript version number.

exports.VERSION = '1.5.0'

Expose helpers for testing.

exports.helpers = require './helpers'

Compile a string of CoffeeScript code to JavaScript, using the Coffee/Jison -compiler.

exports.compile = compile = (code, options = {}) ->
+  for ext in ['.coffee', '.litcoffee', '.md', '.coffee.md']
+    require.extensions[ext] = loadFile

The current CoffeeScript version number.

exports.VERSION = '1.6.0'

Expose helpers for testing.

exports.helpers = require './helpers'
+
+baseFileName = (fileName) ->
+  extension = path.extname(fileName)
+  return path.basename fileName, extension

Compile CoffeeScript code to JavaScript, using the Coffee/Jison compiler.

+ +

If options.sourceMap is specified, then options.filename must also be specified.

+ +

This returns a javascript string, unless options.sourceMap or options.returnObject are true, +in which case this returns a `{js, v3SourceMap, sourceMap} +object, where sourceMap is a sourcemap.coffee#SourceMap object, handy for doing programatic +lookups.

exports.compile = compile = (code, options = {}) ->
   {merge} = exports.helpers
   try
-    js = (parser.parse lexer.tokenize(code, options)).compile options
-    return js unless options.header
+
+    if options.sourceMap
+      coffeeFile = path.basename options.filename
+      jsFile = baseFileName(options.filename) + ".js"
+      sourceMap = new sourcemap.SourceMap()
+
+    fragments = (parser.parse lexer.tokenize(code, options)).compileToFragments options
+
+    currentLine = 0
+    currentColumn = 0
+    js = ""
+    for fragment in fragments

Update the sourcemap with data from each fragment

      if sourceMap
+        if fragment.locationData
+          sourceMap.addMapping(
+            [fragment.locationData.first_line, fragment.locationData.first_column],
+            [currentLine, currentColumn],
+            {noReplace: true})
+        newLines = helpers.count fragment.code, "\n"
+        currentLine += newLines
+        currentColumn = fragment.code.length - (if newLines then fragment.code.lastIndexOf "\n" else 0)

Copy the code from each fragment into the final JavaScript.

      js += fragment.code
+
   catch err
     err.message = "In #{options.filename}, #{err.message}" if options.filename
     throw err
-  header = "Generated by CoffeeScript #{@VERSION}"
-  "// #{header}\n#{js}"

Tokenize a string of CoffeeScript code, and return the array of tokens.

exports.tokens = (code, options) ->
-  lexer.tokenize code, options

Parse a string of CoffeeScript code or an array of lexed tokens, and + + if options.header + header = "Generated by CoffeeScript #{@VERSION}" + js = "// #{header}\n#{js}" + + if options.sourceMap or options.returnObject + answer = {js} + if sourceMap + answer.sourceMap = sourceMap + answer.v3SourceMap = sourcemap.generateV3SourceMap sourceMap, coffeeFile, jsFile + answer + else + js

Tokenize a string of CoffeeScript code, and return the array of tokens.

exports.tokens = (code, options) ->
+  lexer.tokenize code, options

Parse a string of CoffeeScript code or an array of lexed tokens, and return the AST. You can then compile it by calling .compile() on the root, or traverse it by using .traverseChildren() with a callback.

exports.nodes = (source, options) ->
   if typeof source is 'string'
     parser.parse lexer.tokenize source, options
   else
-    parser.parse source

Compile and execute a string of CoffeeScript (on the server), correctly + parser.parse source

Compile and execute a string of CoffeeScript (on the server), correctly setting __filename, __dirname, and relative require().

exports.run = (code, options = {}) ->
-  mainModule = require.main

Set the filename.

  mainModule.filename = process.argv[1] =
-      if options.filename then fs.realpathSync(options.filename) else '.'

Clear the module cache.

  mainModule.moduleCache and= {}

Assign paths for node_modules loading

  mainModule.paths = require('module')._nodeModulePaths path.dirname fs.realpathSync options.filename

Compile.

  if (path.extname(mainModule.filename) not in extensions) or require.extensions
+  mainModule = require.main

Set the filename.

  mainModule.filename = process.argv[1] =
+      if options.filename then fs.realpathSync(options.filename) else '.'

Clear the module cache.

  mainModule.moduleCache and= {}

Assign paths for node_modules loading

  mainModule.paths = require('module')._nodeModulePaths path.dirname fs.realpathSync options.filename

Compile.

  if not helpers.isCoffee(mainModule.filename) or require.extensions
     mainModule._compile compile(code, options), mainModule.filename
   else
-    mainModule._compile code, mainModule.filename

Compile and evaluate a string of CoffeeScript (in a Node.js-like environment). + mainModule._compile code, mainModule.filename

Compile and evaluate a string of CoffeeScript (in a Node.js-like environment). The CoffeeScript REPL uses this to run the input.

exports.eval = (code, options = {}) ->
   return unless code = code.trim()
   Script = vm.Script
@@ -53,12 +95,12 @@ The CoffeeScript REPL uses this to run the input.

define module/require only if they chose not to specify their own

    unless sandbox isnt global or sandbox.module or sandbox.require
+    sandbox.__dirname  = path.dirname sandbox.__filename

define module/require only if they chose not to specify their own

    unless sandbox isnt global or sandbox.module or sandbox.require
       Module = require 'module'
       sandbox.module  = _module  = new Module(options.modulename || 'eval')
       sandbox.require = _require = (path) ->  Module._load path, _module, true
       _module.filename = sandbox.__filename
-      _require[r] = require[r] for r in Object.getOwnPropertyNames require when r isnt 'paths'

use the same hack node currently uses for their own REPL

      _require.paths = _module.paths = Module._nodeModulePaths process.cwd()
+      _require[r] = require[r] for r in Object.getOwnPropertyNames require when r isnt 'paths'

use the same hack node currently uses for their own REPL

      _require.paths = _module.paths = Module._nodeModulePaths process.cwd()
       _require.resolve = (request) -> Module._resolveFilename request, _module
   o = {}
   o[k] = v for own k, v of options
@@ -67,7 +109,7 @@ The CoffeeScript REPL uses this to run the input.

Instantiate a Lexer for our use here.

lexer = new Lexer

The real Lexer produces a generic stream of tokens. This object provides a + vm.runInContext js, sandbox

Instantiate a Lexer for our use here.

lexer = new Lexer

The real Lexer produces a generic stream of tokens. This object provides a thin wrapper around it, compatible with the Jison API. We can then pass it directly as a "Jison lexer".

parser.lexer =
   lex: ->
diff --git a/documentation/docs/command.html b/documentation/docs/command.html
index d2686bdd..71233bd1 100644
--- a/documentation/docs/command.html
+++ b/documentation/docs/command.html
@@ -1,4 +1,4 @@
-      command.coffee           

command.coffee

The coffee utility. Handles command-line compilation of CoffeeScript + command.coffee

command.coffee

The coffee utility. Handles command-line compilation of CoffeeScript into various forms: saved into .js files or printed to stdout, piped to JavaScript Lint or recompiled every time the source is saved, printed as a token stream or as the syntax tree, or launch an @@ -27,6 +27,7 @@ interactive REPL.

['-i', '--interactive', 'run an interactive CoffeeScript REPL'] ['-j', '--join [FILE]', 'concatenate the source CoffeeScript before compiling'] ['-l', '--lint', 'pipe the compiled JavaScript through JavaScript Lint'] + ['-m', '--map', 'generate source map and save as .map files'] ['-n', '--nodes', 'print out the parse tree that the parser produces'] [ '--nodejs [ARGS]', 'pass options directly to the "node" binary'] ['-o', '--output [DIR]', 'set the output directory for compiled JavaScript'] @@ -40,8 +41,7 @@ interactive REPL.

sourceCode = [] notSources = {} watchers = {} -optionParser = null -coffee_exts = ['.coffee', '.litcoffee']

Run coffee by parsing passed options and determining what action to take. +optionParser = null

Run coffee by parsing passed options and determining what action to take. Many flags cause us to divert before compiling anything. Flags passed after -- will be passed verbatim to your script as arguments in process.argv

exports.run = ->
   parseOptions()
@@ -59,18 +59,13 @@ Many flags cause us to divert before compiling anything. Flags passed after
   process.argv[0] = 'coffee'
   for source in sources
     compilePath source, yes, path.normalize source

Compile a path, which could be a script or a directory. If a directory -is passed, recursively compile all '.coffee' and '.litcoffee' extension source -files in it and all subdirectories.

compilePath = (source, topLevel, base) ->
+is passed, recursively compile all '.coffee', '.litcoffee', and '.coffee.md'
+extension source files in it and all subdirectories.

compilePath = (source, topLevel, base) ->
   fs.stat source, (err, stats) ->
     throw err if err and err.code isnt 'ENOENT'
     if err?.code is 'ENOENT'
-      if topLevel and source and path.extname(source) not in coffee_exts
-        source = sources[sources.indexOf(source)] = "#{source}.coffee"
-        return compilePath source, topLevel, base
-      if topLevel
-        console.error "File not found: #{source}"
-        process.exit 1
-      return
+      console.error "File not found: #{source}"
+      process.exit 1
     if stats.isDirectory() and path.dirname(source) isnt 'node_modules'
       watchDir source, base if opts.watch
       fs.readdir source, (err, files) ->
@@ -82,7 +77,7 @@ files in it and all subdirectories.

sourceCode[index..index] = files.map -> null files.forEach (file) -> compilePath (path.join source, file), no, base - else if topLevel or path.extname(source) in coffee_exts + else if topLevel or helpers.isCoffee source watch source, base if opts.watch fs.readFile source, (err, code) -> throw err if err and err.code isnt 'ENOENT' @@ -105,10 +100,14 @@ requested options. If evaluating the script directly sets __filenamesourceCode[sources.indexOf(t.file)] = t.input compileJoin() else - t.output = CoffeeScript.compile t.input, t.options + compiled = CoffeeScript.compile t.input, t.options + t.output = compiled.js + t.sourceMap = compiled.v3SourceMap + CoffeeScript.emit 'success', task if o.print then printLine t.output.trim() - else if o.compile then writeJs t.file, t.output, base + else if o.compile || o.maps + writeJs base, t.file, t.output, t.sourceMap else if o.lint then lint t.file, t.output catch err CoffeeScript.emit 'failure', err, task @@ -203,23 +202,33 @@ the compiled JS version as well.

if itExists fs.unlink jsPath, (err) -> throw err if err and err.code isnt 'ENOENT' - timeLog "removed #{source}"

Get the corresponding output JavaScript path for a source file.

outputPath = (source, base) ->
-  filename  = path.basename(source, path.extname(source)) + '.js'
+          timeLog "removed #{source}"

Get the corresponding output JavaScript path for a source file.

outputPath = (source, base, extension=".js") ->
+  basename  = path.basename source, source.match(/\.((lit)?coffee|coffee\.md)$/)?[0] or path.extname(source)
   srcDir    = path.dirname source
   baseDir   = if base is '.' then srcDir else srcDir.substring base.length
   dir       = if opts.output then path.join opts.output, baseDir else srcDir
-  path.join dir, filename

Write out a JavaScript source file with the compiled code. By default, files + path.join dir, basename + extension

Write out a JavaScript source file with the compiled code. By default, files are written out in cwd as .js files with the same name, but the output -directory can be customized with --output.

writeJs = (source, js, base) ->
-  jsPath = outputPath source, base
+directory can be customized with --output.

+ +

If generatedSourceMap is provided, this will write a .map file into the +same directory as the .js file.

writeJs = (base, sourcePath, js, generatedSourceMap = null) ->
+  jsPath = outputPath sourcePath, base
+  sourceMapPath = outputPath sourcePath, base, ".map"
   jsDir  = path.dirname jsPath
   compile = ->
-    js = ' ' if js.length <= 0
-    fs.writeFile jsPath, js, (err) ->
-      if err
-        printLine err.message
-      else if opts.compile and opts.watch
-        timeLog "compiled #{source}"
+    if opts.compile
+      js = ' ' if js.length <= 0
+      if generatedSourceMap then js = "//@ sourceMappingURL=#{path.basename sourceMapPath}\n#{js}"
+      fs.writeFile jsPath, js, (err) ->
+        if err
+          printLine err.message
+        else if opts.compile and opts.watch
+          timeLog "compiled #{sourcePath}"
+    if generatedSourceMap
+      fs.writeFile sourceMapPath, generatedSourceMap, (err) ->
+        if err
+          printLine "Could not write source map: #{err.message}"
   exists jsDir, (itExists) ->
     if itExists then compile() else exec "mkdir -p #{jsDir}", compile

Convenience for cleaner setTimeouts.

wait = (milliseconds, func) -> setTimeout func, milliseconds

When watching scripts, it's useful to log changes with the timestamp.

timeLog = (message) ->
   console.log "#{(new Date).toLocaleTimeString()} - #{message}"

Pipe compiled JS through JSLint (requires a working jsl command), printing @@ -230,24 +239,29 @@ any errors or warnings that arise.

jsl.stdout.on 'data', printIt jsl.stderr.on 'data', printIt jsl.stdin.write js - jsl.stdin.end()

Pretty-print a stream of tokens.

printTokens = (tokens) ->
+  jsl.stdin.end()

Pretty-print a stream of tokens, sans location data.

printTokens = (tokens) ->
   strings = for token in tokens
     tag = token[0]
     value = token[1].toString().replace(/\n/, '\\n')
-    locationData = helpers.locationDataToString token[2]
-    "[#{tag} #{value} #{locationData}]"
+    "[#{tag} #{value}]"
   printLine strings.join(' ')

Use the OptionParser module to extract all options from process.argv that are specified in SWITCHES.

parseOptions = ->
   optionParser  = new optparse.OptionParser SWITCHES, BANNER
   o = opts      = optionParser.parse process.argv[2..]
   o.compile     or=  !!o.output
-  o.run         = not (o.compile or o.print or o.lint)
+  o.run         = not (o.compile or o.print or o.lint or o.maps)
   o.print       = !!  (o.print or (o.eval or o.stdio and o.compile))
   sources       = o.arguments
   sourceCode[i] = null for source, i in sources
   return

The compile-time options to pass to the CoffeeScript compiler.

compileOptions = (filename) ->
-  literate = path.extname(filename) is '.litcoffee'
-  {filename, literate, bare: opts.bare, header: opts.compile}

Start up a new Node.js instance with the arguments in --nodejs passed to + { + filename + literate: helpers.isLiterate(filename) + bare: opts.bare + header: opts.compile + sourceMap: opts.maps + returnObject: yes + }

Start up a new Node.js instance with the arguments in --nodejs passed to the node binary, preserving the other options.

forkNode = ->
   nodeArgs = opts.nodejs.split /\s+/
   args     = process.argv[1..]
diff --git a/documentation/docs/grammar.html b/documentation/docs/grammar.html
index 47fb56d1..8e795ca0 100644
--- a/documentation/docs/grammar.html
+++ b/documentation/docs/grammar.html
@@ -1,4 +1,4 @@
-      grammar.coffee           

grammar.coffee

The CoffeeScript parser is generated by Jison + grammar.coffee

grammar.coffee

The CoffeeScript parser is generated by Jison from this grammar file. Jison is a bottom-up parser generator, similar in style to Bison, implemented in JavaScript. It can recognize LALR(1), LR(0), SLR(1), and LR(1) @@ -23,8 +23,7 @@ previous nonterminal.

patternCount = patternString.split(' ').length return [patternString, '$$ = $1;', options] unless action action = if match = unwrap.exec action then match[1] else "(#{action}())"

All runtime functions we need are defined on "yy"

  action = action.replace /\bnew /g, '$&yy.'
-  action = action.replace /\b(?:Block\.wrap|extend)\b/g, 'yy.$&'
-  action = action.replace /\b(Op|Value\.(create|wrap))\b/g, 'yy.$&'

Returns a function which adds location data to the first parameter passed + action = action.replace /\b(?:Block\.wrap|extend)\b/g, 'yy.$&'

Returns a function which adds location data to the first parameter passed in, and returns the parameter. If the parameter is not a node, it will just be passed through unaffected.

  addLocationDataFn = (first, last) ->
     if not last
@@ -103,10 +102,10 @@ through and printed to JavaScript.

o 'Assignable = INDENT Expression OUTDENT', -> new Assign $1, $4 ]

Assignment when it happens within an object literal. The difference from the ordinary Assign is that these allow numbers and strings as keys.

  AssignObj: [
-    o 'ObjAssignable',                          -> Value.wrap $1
-    o 'ObjAssignable : Expression',             -> new Assign LOC(1)(Value.wrap($1)), $3, 'object'
+    o 'ObjAssignable',                          -> new Value $1
+    o 'ObjAssignable : Expression',             -> new Assign LOC(1)(new Value($1)), $3, 'object'
     o 'ObjAssignable :
-       INDENT Expression OUTDENT',              -> new Assign LOC(1)(Value.wrap($1)), $4, 'object'
+       INDENT Expression OUTDENT',              -> new Assign LOC(1)(new Value($1)), $4, 'object'
     o 'Comment'
   ]
 
@@ -150,26 +149,27 @@ that hoovers up the remaining arguments.

]

A splat that occurs outside of a parameter list.

  Splat: [
     o 'Expression ...',                         -> new Splat $1
   ]

Variables and properties that can be assigned to.

  SimpleAssignable: [
-    o 'Identifier',                             -> Value.wrap $1
+    o 'Identifier',                             -> new Value $1
     o 'Value Accessor',                         -> $1.add $2
-    o 'Invocation Accessor',                    -> Value.wrap $1, [].concat $2
+    o 'Invocation Accessor',                    -> new Value $1, [].concat $2
     o 'ThisProperty'
   ]

Everything that can be assigned to.

  Assignable: [
     o 'SimpleAssignable'
-    o 'Array',                                  -> Value.wrap $1
-    o 'Object',                                 -> Value.wrap $1
+    o 'Array',                                  -> new Value $1
+    o 'Object',                                 -> new Value $1
   ]

The types of things that can be treated as values -- assigned to, invoked as functions, indexed into, named as a class, etc.

  Value: [
     o 'Assignable'
-    o 'Literal',                                -> Value.wrap $1
-    o 'Parenthetical',                          -> Value.wrap $1
-    o 'Range',                                  -> Value.wrap $1
+    o 'Literal',                                -> new Value $1
+    o 'Parenthetical',                          -> new Value $1
+    o 'Range',                                  -> new Value $1
     o 'This'
   ]

The general group of accessors into an object, by property, by prototype or by array index or slice.

  Accessor: [
     o '.  Identifier',                          -> new Access $2
     o '?. Identifier',                          -> new Access $2, 'soak'
-    o ':: Identifier',                          -> [LOC(1)(new Access new Literal 'prototype'), LOC(2)(new Access $2)]
+    o ':: Identifier',                          -> [LOC(1)(new Access new Literal('prototype')), LOC(2)(new Access $2)]
+    o '?:: Identifier',                         -> [LOC(1)(new Access new Literal('prototype'), 'soak'), LOC(2)(new Access $2)]
     o '::',                                     -> new Access new Literal 'prototype'
     o 'Index'
   ]

Indexing into an object or array using bracket notation.

  Index: [
@@ -211,10 +211,10 @@ and optional references to the superclass.

o 'CALL_START CALL_END', -> [] o 'CALL_START ArgList OptComma CALL_END', -> $2 ]

A reference to the this current object.

  This: [
-    o 'THIS',                                   -> Value.wrap new Literal 'this'
-    o '@',                                      -> Value.wrap new Literal 'this'
+    o 'THIS',                                   -> new Value new Literal 'this'
+    o '@',                                      -> new Value new Literal 'this'
   ]

A reference to a property on this.

  ThisProperty: [
-    o '@ Identifier',                           -> Value.wrap LOC(1)(new Literal('this')), [LOC(2)(new Access($2))], 'this'
+    o '@ Identifier',                           -> new Value LOC(1)(new Literal('this')), [LOC(2)(new Access($2))], 'this'
   ]

The array literal.

  Array: [
     o '[ ]',                                    -> new Arr []
     o '[ ArgList OptComma ]',                   -> new Arr $2
@@ -251,7 +251,7 @@ having the newlines wouldn't make sense.

o 'TRY Block Catch FINALLY Block', -> new Try $2, $3[0], $3[1], $5 ]

A catch clause names its error and runs a block of code.

  Catch: [
     o 'CATCH Identifier Block',                 -> [$2, $3]
-    o 'CATCH Object Block',                     -> [LOC(2)(Value.wrap($2)), $3]
+    o 'CATCH Object Block',                     -> [LOC(2)(new Value($2)), $3]
   ]

Throw an exception object.

  Throw: [
     o 'THROW Expression',                       -> new Throw $2
   ]

Parenthetical expressions. Note that the Parenthetical is a Value, @@ -285,7 +285,7 @@ or postfix, with a single expression.

] ForBody: [ - o 'FOR Range', -> source: LOC(2) Value.wrap($2) + o 'FOR Range', -> source: LOC(2) new Value($2) o 'ForStart ForSource', -> $2.own = $1.own; $2.name = $1[0]; $2.index = $1[1]; $2 ] @@ -296,8 +296,8 @@ or postfix, with a single expression.

  ForValue: [
     o 'Identifier'
     o 'ThisProperty'
-    o 'Array',                                  -> Value.wrap $1
-    o 'Object',                                 -> Value.wrap $1
+    o 'Array',                                  -> new Value $1
+    o 'Object',                                 -> new Value $1
   ]

An array or range comprehension has variables for the current element and (optional) reference to the current index. Or, key, value, in the case of object comprehensions.

  ForVariables: [
@@ -345,27 +345,27 @@ are defined at the bottom of the page. It would be shorter if we could
 combine most of these rules into a single generic Operand OpSymbol Operand
 -type rule, but in order to make the precedence binding possible, separate
 rules are necessary.

  Operation: [
-    o 'UNARY Expression',                       -> Op.create $1 , $2
-    o '-     Expression',                      (-> Op.create '-', $2), prec: 'UNARY'
-    o '+     Expression',                      (-> Op.create '+', $2), prec: 'UNARY'
+    o 'UNARY Expression',                       -> new Op $1 , $2
+    o '-     Expression',                      (-> new Op '-', $2), prec: 'UNARY'
+    o '+     Expression',                      (-> new Op '+', $2), prec: 'UNARY'
 
-    o '-- SimpleAssignable',                    -> Op.create '--', $2
-    o '++ SimpleAssignable',                    -> Op.create '++', $2
-    o 'SimpleAssignable --',                    -> Op.create '--', $1, null, true
-    o 'SimpleAssignable ++',                    -> Op.create '++', $1, null, true

The existential operator.

    o 'Expression ?',                           -> new Existence $1
+    o '-- SimpleAssignable',                    -> new Op '--', $2
+    o '++ SimpleAssignable',                    -> new Op '++', $2
+    o 'SimpleAssignable --',                    -> new Op '--', $1, null, true
+    o 'SimpleAssignable ++',                    -> new Op '++', $1, null, true

The existential operator.

    o 'Expression ?',                           -> new Existence $1
 
-    o 'Expression +  Expression',               -> Op.create '+' , $1, $3
-    o 'Expression -  Expression',               -> Op.create '-' , $1, $3
+    o 'Expression +  Expression',               -> new Op '+' , $1, $3
+    o 'Expression -  Expression',               -> new Op '-' , $1, $3
 
-    o 'Expression MATH     Expression',         -> Op.create $2, $1, $3
-    o 'Expression SHIFT    Expression',         -> Op.create $2, $1, $3
-    o 'Expression COMPARE  Expression',         -> Op.create $2, $1, $3
-    o 'Expression LOGIC    Expression',         -> Op.create $2, $1, $3
+    o 'Expression MATH     Expression',         -> new Op $2, $1, $3
+    o 'Expression SHIFT    Expression',         -> new Op $2, $1, $3
+    o 'Expression COMPARE  Expression',         -> new Op $2, $1, $3
+    o 'Expression LOGIC    Expression',         -> new Op $2, $1, $3
     o 'Expression RELATION Expression',         ->
       if $2.charAt(0) is '!'
-        Op.create($2[1..], $1, $3).invert()
+        new Op($2[1..], $1, $3).invert()
       else
-        Op.create $2, $1, $3
+        new Op $2, $1, $3
 
     o 'SimpleAssignable COMPOUND_ASSIGN
        Expression',                             -> new Assign $1, $3, $2
@@ -384,7 +384,7 @@ down. Following these rules is what makes 2 + 3 * 4 parse as:

(2 + 3) * 4
 
operators = [
-  ['left',      '.', '?.', '::']
+  ['left',      '.', '?.', '::', '?::']
   ['left',      'CALL_START', 'CALL_END']
   ['nonassoc',  '++', '--']
   ['left',      '?']
diff --git a/documentation/docs/helpers.html b/documentation/docs/helpers.html
index b3ac7d03..9337135c 100644
--- a/documentation/docs/helpers.html
+++ b/documentation/docs/helpers.html
@@ -1,4 +1,4 @@
-      helpers.coffee           

helpers.coffee

This file contains the common helper functions that we'd like to share among + helpers.coffee

helpers.coffee

This file contains the common helper functions that we'd like to share among the Lexer, Rewriter, and the Nodes. Merge objects, flatten arrays, count characters, that sort of thing.

Peek at the beginning of a given string to see if it matches a sequence.

exports.starts = (string, literal, start) ->
   literal is string.substr start, literal.length

Peek at the end of a given string to see if it matches a sequence.

exports.ends = (string, literal, back) ->
@@ -51,6 +51,6 @@ updates that object's locationData.  The object is returned either way.

"#{locationData.first_line + 1}:#{locationData.first_column + 1}-" + "#{locationData.last_line + 1}:#{locationData.last_column + 1}" else - "No location data" + "No location data"

Determine if a filename represents a CoffeeScript file.

exports.isCoffee = (file) -> /\.((lit)?coffee|coffee\.md)$/.test file

Determine if a filename represents a Literate CoffeeScript file.

exports.isLiterate = (file) -> /\.(litcoffee|coffee\.md)$/.test file
 
 
\ No newline at end of file diff --git a/documentation/docs/index.html b/documentation/docs/index.html index 3d18f629..e01224cc 100644 --- a/documentation/docs/index.html +++ b/documentation/docs/index.html @@ -1,3 +1,3 @@ - index.coffee

index.coffee

Loader for CoffeeScript as a Node.js library.

exports[key] = val for key, val of require './coffee-script'
+      index.coffee              
\ No newline at end of file
diff --git a/documentation/docs/lexer.html b/documentation/docs/lexer.html
index 557e68b1..aeccd12c 100644
--- a/documentation/docs/lexer.html
+++ b/documentation/docs/lexer.html
@@ -1,4 +1,4 @@
-      lexer.coffee           

lexer.coffee

The CoffeeScript Lexer. Uses a series of token-matching regexes to attempt + lexer.coffee

@token'OWN',idreturnid.lengthforcedIdentifier = colonor - (prev = last@tokens)and(prev[0]in['.','?.','::']or + (prev = last@tokens)and(prev[0]in['.','?.','::','?::']ornotprev.spacedandprev[0]is'@')tag = 'IDENTIFIER' @@ -359,6 +361,7 @@ erasing all external indentation on the left-hand side.

attempt = match[1]indent = attemptifindentisnullor0<attempt.length<indent.lengthdoc = doc.replace/// \n #{indent} ///g,'\n'ifindent + doc = doc.replace/\n# \n/g,'\n\n'if@literatedoc = doc.replace/^\n/,''unlessherecommentdoc

lexer.coffee

The CoffeeScript Lexer. Uses a series of token-matching regexes to attempt matches against the beginning of the source code. When a match is found, a token is produced, we consume the match, and start again. Tokens are in the form:

@@ -22,7 +22,6 @@ it has consumed.

Before returning the token stream, run it through the Rewriter unless explicitly asked not to.

  tokenize: (code, opts = {}) ->
     @literate = opts.literate  # Are we lexing literate CoffeeScript?
-    code      = @clean code    # The stripped, cleaned original source code.
     @indent   = 0              # The current indentation level.
     @indebt   = 0              # The over-indentation at the current level.
     @outdebt  = 0              # The under-outdentation at the current level.
@@ -33,7 +32,8 @@ unless explicitly asked not to.

@chunkLine = opts.line or 0 # The start line for the current @chunk. @chunkColumn = - opts.column or 0 # The start column of the current @chunk.

At every position, run through this list of attempted matches, + opts.column or 0 # The start column of the current @chunk. + code = @clean code # The stripped, cleaned original source code.

At every position, run through this list of attempted matches, short-circuiting if any of them succeed. Their order determines precedence: @literalToken is the fallback catch-all.

    i = 0
     while @chunk = code[i..]
@@ -58,8 +58,10 @@ short-circuiting if any of them succeed. Their order determines precedence:
 returns, etc. If we're lexing literate CoffeeScript, strip external Markdown
 by removing all lines that aren't indented by at least four spaces or a tab.

  clean: (code) ->
     code = code.slice(1) if code.charCodeAt(0) is BOM
-    code = "\n#{code}" if WHITESPACE.test code
     code = code.replace(/\r/g, '').replace TRAILING_SPACES, ''
+    if WHITESPACE.test code
+        code = "\n#{code}"
+        @chunkLine--
     if @literate
       lines = for line in code.split('\n')
         if match = LITERATE.exec line
@@ -81,7 +83,7 @@ though is means === otherwise.

A source of ambiguity in our grammar used to be parameter lists in function definitions versus argument lists in function calls. Walk backwards, tagging @@ -505,21 +508,18 @@ correctly balanced throughout the course of the token stream.

else column += string.length - return [@chunkLine + lineCount, column]

Same as "token", exception this just returns the token without adding it -to the results.

  makeToken: (tag, value, offsetInChunk, length) ->
-    offsetInChunk = offsetInChunk || 0
-    if length is undefined then length = value.length
-
+    [@chunkLine + lineCount, column]

Same as "token", exception this just returns the token without adding it +to the results.

  makeToken: (tag, value, offsetInChunk = 0, length = value.length) ->
     locationData = {}
     [locationData.first_line, locationData.first_column] =
       @getLineAndColumnFromChunk offsetInChunk

Use length - 1 for the final offset - we're supplying the lastline and the lastcolumn, -so if lastcolumn == firstcolumn, then we're looking at a character of length 1.

    lastCharacter = if length > 0 then (length - 1) else 0
+so if lastcolumn == firstcolumn, then we're looking at a character of length 1.

    lastCharacter = Math.max 0, length - 1
     [locationData.last_line, locationData.last_column] =
       @getLineAndColumnFromChunk offsetInChunk + (length - 1)
 
     token = [tag, value, locationData]
 
-    return token

Add a token to the results. + token

Add a token to the results. offset is the offset into the current @chunk where the token starts. length is the length of the token in the @chunk, after the offset. If not specified, the length of value will be used.

@@ -527,11 +527,11 @@ not specified, the length of value will be used.

Returns the new token.

  token: (tag, value, offsetInChunk, length) ->
     token = @makeToken tag, value, offsetInChunk, length
     @tokens.push token
-    return token

Peek at a tag in the current token stream.

  tag: (index, tag) ->
+    token

Peek at a tag in the current token stream.

  tag: (index, tag) ->
     (tok = last @tokens, index) and if tag then tok[0] = tag else tok[0]

Peek at a value in the current token stream.

  value: (index, val) ->
     (tok = last @tokens, index) and if val then tok[1] = val else tok[1]

Are we in the midst of an unfinished expression?

  unfinished: ->
     LINE_CONTINUER.test(@chunk) or
-    @tag() in ['\\', '.', '?.', 'UNARY', 'MATH', '+', '-', 'SHIFT', 'RELATION'
+    @tag() in ['\\', '.', '?.', '?::', 'UNARY', 'MATH', '+', '-', 'SHIFT', 'RELATION'
                'COMPARE', 'LOGIC', 'THROW', 'EXTENDS']

Converts newlines for string literals.

  escapeLines: (str, heredoc) ->
     str.replace MULTILINER, if heredoc then '\\n' else ''

Constructs a string token by escaping quotes and newlines.

  makeString: (body, quote, heredoc) ->
     return quote + quote unless body
@@ -592,7 +592,7 @@ be used as identifiers or properties.

| >>>=? # zero-fill right shift | ([-+:])\1 # doubles | ([&|<>])\2=? # logic / shift - | \?\. # soak access + | \?(\.|::) # soak access | \.{2,3} # range or splat ) /// diff --git a/documentation/docs/nodes.html b/documentation/docs/nodes.html index d00b0f23..d2ce4538 100644 --- a/documentation/docs/nodes.html +++ b/documentation/docs/nodes.html @@ -1,12 +1,25 @@ - nodes.coffee

nodes.coffee

nodes.coffee contains all of the node classes for the syntax tree. Most + nodes.coffee

child.traverseChildrencrossScope,funcinvert: -> - Op.create'!',this + newOp'!',thisunwrapAll: ->node = thiscontinueuntilnodeisnode = node.unwrap() - nodeisAssignable : NOunwrap : THIS - unfoldSoak : NO@expressions[len]=expr.makeReturnres@expressions.splice(len,1)ifexprinstanceofReturnandnotexpr.expressionbreak - thisdeclars = o.scope.hasDeclarations()assigns = scope.hasAssignmentsifdeclarsorassigns - code+='\n'ifi - code+="#{@tab}var " + fragments.push@makeCode'\n'ifi + fragments.push@makeCode"#{@tab}var "ifdeclars - code+=scope.declaredVariables().join', ' + fragments.push@makeCode(scope.declaredVariables().join', ')ifassigns - code+=",\n#{@tab+TAB}"ifdeclars - code+=scope.assignedVariables().join",\n#{@tab+TAB}" - code+=';\n' - code+postconstructor: (@from, @to, tag) -> @exclusive = tag is 'exclusive' - @equals = if @exclusive then '' else '=' @[if@contextis'object'then'value'else'variable'].assignsnameunfoldSoak: (o) -> - unfoldSoako,this,'variable'return@compilePatternMatchoif@variable.isArray()or@variable.isObject()return@compileSpliceoif@variable.isSplice()return@compileConditionaloif@contextin['||=','&&=','?='] - name = @variable.compileo,LEVEL_LIST + compiledName = @variable.compileToFragmentso,LEVEL_LIST + name = fragmentsToTextcompiledNameunless@contextunless(varBase = @variable.unwrapAll()).isAssignable()throwSyntaxError"\"#{@variable.compileo}\" cannot be assigned." @@ -787,10 +874,10 @@ has not been seen yet within the current scope, declare it.

if@valueinstanceofCodeandmatch = METHOD_DEF.execname@value.klass = match[1]ifmatch[1]@value.name = match[2]?match[3]?match[4]?match[5] - val = @value.compileo,LEVEL_LIST - return"#{name}: #{val}"if@contextis'object' - val = name+" #{@contextor'='} "+val - ifo.level<=LEVEL_LISTthenvalelse"(#{val})"isStatement: ->!!@ctor - jumps: NOreturnnounlessexpressions.lengthfornodeinexpressionsreturnnodeifnode.jumpsloop:yes - nonot@secondisComplex: -> - not(@isUnary()and(@operatorin['+','-']))or@first.isComplex()fst.operatorin['!','in','instanceof']fstelse - Op.create'!',this + newOp'!',thisunfoldSoak: (o) ->@operatorin['++','--','delete']andunfoldSoako,this,'first' - @generateDo: (exp) -> + generateDo: (exp) ->passedParams = []func = ifexpinstanceofAssignand(ref = exp.value.unwrap())instanceofCoderef @@ -1169,7 +1274,7 @@ CoffeeScript operations into their JavaScript equivalents.

callcompileNode: (o) -> - isChain = @isChainable()and@first.isChainable()

nodes.coffee

nodes.coffee contains all of the node classes for the syntax tree. Most nodes are created as the result of actions in the grammar, but some are created by other nodes as a method of code generation. To convert -the syntax tree into a string of JavaScript code, call compile() on the root.

{Scope} = require './scope'
+the syntax tree into a string of JavaScript code, call compile() on the root.

Error.stackTraceLimit = Infinity
+
+{Scope} = require './scope'
 {RESERVED, STRICT_PROSCRIBED} = require './lexer'

Import the helpers we plan to use.

{compact, flatten, extend, merge, del, starts, ends, last, some, addLocationDataFn, locationDataToString} = require './helpers'

Functions required by parser

exports.extend = extend
 exports.addLocationDataFn = addLocationDataFn

Constant functions for nodes that don't need customization.

YES     = -> yes
 NO      = -> no
 THIS    = -> this
-NEGATE  = -> @negated = not @negated; this

Base

The Base is the abstract base class for all nodes in the syntax tree. +NEGATE = -> @negated = not @negated; this

CodeFragment

The various nodes defined below all compile to a collection of CodeFragment objects. +A CodeFragments is a block of generated code, and the location in the source file where the code +came from. CodeFragments can be assembled together into working code just by catting together +all the CodeFragments' code snippets, in order.

exports.CodeFragment = class CodeFragment
+  constructor: (parent, code) ->
+    @code = "#{code}"
+    @locationData = parent?.locationData
+    @type = parent?.constructor?.name or 'unknown'
+
+  toString: () ->
+    "#{@code}#{[if @locationData then ": " + locationDataToString(@locationData)]}"

Convert an array of CodeFragments into a string.

fragmentsToText = (fragments) ->
+  (fragment.code for fragment in fragments).join('')

Base

The Base is the abstract base class for all nodes in the syntax tree. Each subclass implements the compileNode method, which performs the code generation for that node. To compile a node to JavaScript, call compile on it, which wraps compileNode in some generic extra smarts, @@ -14,12 +27,15 @@ to know when the generated code needs to be wrapped up in a closure. An options hash is passed and cloned throughout, containing information about the environment from higher in the tree (such as if a returned value is being requested by the surrounding function), information about the current -scope, and indentation level.

exports.Base = class Base

Common logic for determining whether to wrap this node in a closure before +scope, and indentation level.

exports.Base = class Base
+
+  compile: (o, lvl) ->
+    fragmentsToText @compileToFragments o, lvl

Common logic for determining whether to wrap this node in a closure before compiling it, or to compile directly. We need to wrap if this node is a statement, and it's not a pureStatement, and we're not at the top level of a block (which would be unnecessary), and we haven't already been asked to return the result (because statements know how to -return results).

  compile: (o, lvl) ->
+return results).

  compileToFragments: (o, lvl) ->
     o        = extend {}, o
     o.level  = lvl if lvl
     node     = @unfoldSoak(o) or this
@@ -27,28 +43,35 @@ return results).

if o.level is LEVEL_TOP or not node.isStatement(o) node.compileNode o else - node.compileClosure o

Statements converted into expressions via closure-wrapping share a scope + node.compileClosure o

Statements converted into expressions via closure-wrapping share a scope object with their parent closure, to preserve the expected lexical scope.

  compileClosure: (o) ->
     if @jumps()
       throw SyntaxError 'cannot use a pure statement in an expression.'
     o.sharedScope = yes
-    Closure.wrap(this).compileNode o

If the code generation wishes to use the result of a complex expression + Closure.wrap(this).compileNode o

If the code generation wishes to use the result of a complex expression in multiple places, ensure that the expression is only ever evaluated once, -by assigning it to a temporary variable. Pass a level to precompile.

  cache: (o, level, reused) ->
+by assigning it to a temporary variable. Pass a level to precompile.

+ +

If level is passed, then returns [val, ref], where val is the compiled value, and ref +is the compiled reference. If level is not passed, this returns [val, ref] where +the two values are raw nodes which have not been compiled.

  cache: (o, level, reused) ->
     unless @isComplex()
-      ref = if level then @compile o, level else this
+      ref = if level then @compileToFragments o, level else this
       [ref, ref]
     else
       ref = new Literal reused or o.scope.freeVariable 'ref'
       sub = new Assign ref, this
-      if level then [sub.compile(o, level), ref.value] else [sub, ref]

Construct a node that returns the current node's result. + if level then [sub.compileToFragments(o, level), [@makeCode(ref.value)]] else [sub, ref] + + cacheToCodeFragments: (cacheValues) -> + [fragmentsToText(cacheValues[0]), fragmentsToText(cacheValues[1])]

Construct a node that returns the current node's result. Note that this is overridden for smarter behavior for many statement nodes (e.g. If, For)...

  makeReturn: (res) ->
     me = @unwrapAll()
     if res
       new Call new Literal("#{res}.push"), [me]
     else
-      new Return me

Does this node, or any of its children, contain a node of a certain kind? + new Return me

Does this node, or any of its children, contain a node of a certain kind? Recursively traverses down the children of the nodes, yielding to a block and returning true when the block finds a match. contains does not cross scope boundaries.

  contains: (pred) ->
@@ -57,17 +80,17 @@ scope boundaries.

if pred node contains = yes return no - contains

Is this node of a certain type, or does it contain the type?

  containsType: (type) ->
-    this instanceof type or @contains (node) -> node instanceof type

Pull out the last non-comment node of a node list.

  lastNonComment: (list) ->
+    contains

Is this node of a certain type, or does it contain the type?

  containsType: (type) ->
+    this instanceof type or @contains (node) -> node instanceof type

Pull out the last non-comment node of a node list.

  lastNonComment: (list) ->
     i = list.length
     return list[i] while i-- when list[i] not instanceof Comment
-    null

toString representation of the node, for inspecting the parse tree. + null

toString representation of the node, for inspecting the parse tree. This is what coffee --nodes prints out.

  toString: (idt = '', name = @constructor.name) ->
     location = if @locationData then locationDataToString @locationData else "??"
     tree = '\n' + idt + location + ": " + name
     tree += '?' if @soak
     @eachChild (node) -> tree += node.toString idt + TAB
-    tree

Passes each child to a function, breaking when the function returns false.

  eachChild: (func) ->
+    tree

Passes each child to a function, breaking when the function returns false.

  eachChild: (func) ->
     return this unless @children
     for attr in @children when @[attr]
       for child in flatten [@[attr]]
@@ -80,12 +103,12 @@ This is what coffee --nodes prints out.

Default implementations of the common node properties and methods. Nodes + node

Default implementations of the common node properties and methods. Nodes will override these with custom logic, if needed.

  children: []
 
   isStatement     : NO
@@ -95,27 +118,40 @@ will override these with custom logic, if needed.

Is this node used to assign a certain variable?

  assigns: NO

For this node and all descendents, set the location data to locationData if the location + unfoldSoak : NO

Is this node used to assign a certain variable?

  assigns: NO

For this node and all descendents, set the location data to locationData if the location data is not already set.

  updateLocationDataIfMissing: (locationData) ->
     if not @locationData
       @locationData = {}
       extend @locationData, locationData
 
     @eachChild (child) ->
-      child.updateLocationDataIfMissing locationData

Block

The block is the list of expressions that forms the body of an + child.updateLocationDataIfMissing locationData + + makeCode: (code) -> + new CodeFragment this, code + + wrapInBraces: (fragments) -> + [].concat @makeCode('('), fragments, @makeCode(')')

fragmentsList is an array of arrays of fragments. Each array in fragmentsList will be +concatonated together, with joinStr added in between each, to produce a final flat array +of fragments.

  joinFragmentArrays: (fragmentsList, joinStr) ->
+    answer = []
+    for fragments,i in fragmentsList
+      if i then answer.push @makeCode joinStr
+      answer = answer.concat fragments
+    answer

Block

The block is the list of expressions that forms the body of an indented block of code -- the implementation of a function, a clause in an if, switch, or try, and so on...

exports.Block = class Block extends Base
   constructor: (nodes) ->
     @expressions = compact flatten nodes or []
 
-  children: ['expressions']

Tack an expression on to the end of this expression list.

  push: (node) ->
+  children: ['expressions']

Tack an expression on to the end of this expression list.

  push: (node) ->
     @expressions.push node
-    this

Remove and return the last expression of this expression list.

  pop: ->
-    @expressions.pop()

Add an expression at the beginning of this expression list.

  unshift: (node) ->
+    this

Remove and return the last expression of this expression list.

  pop: ->
+    @expressions.pop()

Add an expression at the beginning of this expression list.

  unshift: (node) ->
     @expressions.unshift node
-    this

If this Block consists of just a single node, unwrap it by pulling + this

If this Block consists of just a single node, unwrap it by pulling it back out.

  unwrap: ->
-    if @expressions.length is 1 then @expressions[0] else this

Is this an empty block of code?

  isEmpty: ->
+    if @expressions.length is 1 then @expressions[0] else this

Is this an empty block of code?

  isEmpty: ->
     not @expressions.length
 
   isStatement: (o) ->
@@ -125,7 +161,7 @@ it back out.

< jumps: (o) -> for exp in @expressions - return exp if exp.jumps o

A Block node does not return its entire body, rather it + return exp if exp.jumps o

A Block node does not return its entire body, rather it ensures that the final expression is returned.

  makeReturn: (res) ->
     len = @expressions.length
     while len--
@@ -134,34 +170,40 @@ ensures that the final expression is returned.

A Block is the only node that can serve as the root.

  compile: (o = {}, level) ->
-    if o.scope then super o, level else @compileRoot o

Compile all expressions within the Block body. If we need to + this

A Block is the only node that can serve as the root.

  compileToFragments: (o = {}, level) ->
+    if o.scope then super o, level else @compileRoot o

Compile all expressions within the Block body. If we need to return the result, and it's an expression, simply return it. If it's a statement, ask the statement to do so.

  compileNode: (o) ->
     @tab  = o.indent
     top   = o.level is LEVEL_TOP
-    codes = []
-    for node in @expressions
+    compiledNodes = []
+
+    for node, index in @expressions
+
       node = node.unwrapAll()
       node = (node.unfoldSoak(o) or node)
-      if node instanceof Block

This is a nested block. We don't do anything special here like enclose + if node instanceof Block

This is a nested block. We don't do anything special here like enclose it in a new scope; we just compile the statements in this block along with -our own

        codes.push node.compileNode o
+our own

        compiledNodes.push node.compileNode o
       else if top
         node.front = true
-        code = node.compile o
+        fragments = node.compileToFragments o
         unless node.isStatement o
-          code = "#{@tab}#{code};"
-        codes.push code
+          fragments.unshift @makeCode "#{@tab}"
+          fragments.push @makeCode ";"
+        compiledNodes.push fragments
       else
-        codes.push node.compile o, LEVEL_LIST
+        compiledNodes.push node.compileToFragments o, LEVEL_LIST
     if top
       if @spaced
-        return "\n#{codes.join '\n\n'}\n"
+        return [].concat @makeCode("\n"), @joinFragmentArrays(compiledNodes, '\n\n'), @makeCode("\n")
       else
-        return codes.join '\n'
-    code = codes.join(', ') or 'void 0'
-    if codes.length > 1 and o.level >= LEVEL_LIST then "(#{code})" else code

If we happen to be the top-level Block, wrap everything in + return @joinFragmentArrays(compiledNodes, '\n') + if compiledNodes.length + answer = @joinFragmentArrays(compiledNodes, ', ') + else + answer = [@makeCode "void 0"] + if compiledNodes.length > 1 and o.level >= LEVEL_LIST then @wrapInBraces answer else answer

If we happen to be the top-level Block, wrap everything in a safety closure, unless requested not to. It would be better not to generate them in the first place, but for now, clean up obvious double-parentheses.

  compileRoot: (o) ->
@@ -169,28 +211,31 @@ clean up obvious double-parentheses.

o.scope = new Scope null, this, null o.level = LEVEL_TOP @spaced = yes - prelude = "" + prelude = [] unless o.bare preludeExps = for exp, i in @expressions break unless exp.unwrap() instanceof Comment exp rest = @expressions[preludeExps.length...] @expressions = preludeExps - prelude = "#{@compileNode merge(o, indent: '')}\n" if preludeExps.length + if preludeExps.length + prelude = @compileNode merge(o, indent: '') + prelude.push @makeCode "\n" @expressions = rest - code = @compileWithDeclarations o - return code if o.bare - "#{prelude}(function() {\n#{code}\n}).call(this);\n"

Compile the expressions body for the contents of a function, with + fragments = @compileWithDeclarations o + return fragments if o.bare + [].concat prelude, @makeCode("(function() {\n"), fragments, @makeCode("\n}).call(this);\n")

Compile the expressions body for the contents of a function, with declarations of all inner variables pushed up to the top.

  compileWithDeclarations: (o) ->
-    code = post = ''
+    fragments = []
+    post = []
     for exp, i in @expressions
       exp = exp.unwrap()
       break unless exp instanceof Comment or exp instanceof Literal
     o = merge(o, level: LEVEL_TOP)
     if i
       rest = @expressions.splice i, 9e9
-      [spaced, @spaced] = [@spaced, no]
-      [code  , @spaced] = [(@compileNode o), spaced]
+      [spaced,    @spaced] = [@spaced, no]
+      [fragments, @spaced] = [(@compileNode o), spaced]
       @expressions = rest
     post = @compileNode o
     {scope} = o
@@ -198,18 +243,18 @@ declarations of all inner variables pushed up to the top.

Wrap up the given nodes as a Block, unless it already happens + fragments.push @makeCode ",\n#{@tab + TAB}" if declars + fragments.push @makeCode (scope.assignedVariables().join ",\n#{@tab + TAB}") + fragments.push @makeCode ';\n' + fragments.concat post

Wrap up the given nodes as a Block, unless it already happens to be one.

  @wrap: (nodes) ->
     return nodes[0] if nodes.length is 1 and nodes[0] instanceof Block
-    new Block nodes

Literal

Literals are static values that can be passed through directly into + new Block nodes

Literal

Literals are static values that can be passed through directly into JavaScript without translation, such as: strings, numbers, true, false, null...

exports.Literal = class Literal extends Base
   constructor: (@value) ->
@@ -239,7 +284,8 @@ JavaScript without translation, such as: strings, numbers,
       "\"#{@value}\""
     else
       @value
-    if @isStatement() then "#{@tab}#{code};" else code
+    answer = if @isStatement() then "#{@tab}#{code};" else code
+    [@makeCode answer]
 
   toString: ->
     ' "' + @value + '"'
@@ -248,18 +294,18 @@ JavaScript without translation, such as: strings, numbers,
   isAssignable: NO
   isComplex: NO
   compileNode: (o) ->
-    if o.level >= LEVEL_ACCESS then '(void 0)' else 'void 0'
+    [@makeCode if o.level >= LEVEL_ACCESS then '(void 0)' else 'void 0']
 
 class exports.Null extends Base
   isAssignable: NO
   isComplex: NO
-  compileNode: -> "null"
+  compileNode: -> [@makeCode "null"]
 
 class exports.Bool extends Base
   isAssignable: NO
   isComplex: NO
-  compileNode: -> @val
-  constructor: (@val) ->

Return

A return is a pureStatement -- wrapping it in a closure wouldn't + compileNode: -> [@makeCode @val] + constructor: (@val) ->

Return

A return is a pureStatement -- wrapping it in a closure wouldn't make sense.

exports.Return = class Return extends Base
   constructor: (expr) ->
     @expression = expr if expr and not expr.unwrap().isUndefined
@@ -270,29 +316,30 @@ make sense.

makeReturn: THIS jumps: THIS - compile: (o, level) -> + compileToFragments: (o, level) -> expr = @expression?.makeReturn() - if expr and expr not instanceof Return then expr.compile o, level else super o, level + if expr and expr not instanceof Return then expr.compileToFragments o, level else super o, level compileNode: (o) -> - @tab + "return#{[" #{@expression.compile o, LEVEL_PAREN}" if @expression]};"

Value

A value, variable or literal or parenthesized, indexed or dotted into, + answer = []

TODO: If we call expression.compile() here twice, we'll sometimes get back different results!

    answer.push @makeCode(@tab + "return#{[" " if @expression]}")
+    if @expression
+      answer = answer.concat @expression.compileToFragments(o, LEVEL_PAREN)
+    answer.push @makeCode ";"
+    return answer

Value

A value, variable or literal or parenthesized, indexed or dotted into, or vanilla.

exports.Value = class Value extends Base
-  @wrap: (base, props, tag) ->
-    if not props and base instanceof Value
-      base
-    else
-      new Value base, props, tag
+  constructor: (base, props, tag) ->
+    return base if not props and base instanceof Value
+    @base       = base
+    @properties = props or []
+    @[tag]      = true if tag
+    return this
 
-  constructor: (@base, @properties, tag) ->
-    @properties or= []
-    @this = true if tag is 'this'
-
-  children: ['base', 'properties']

Add a property (or properties ) Access to the list.

  add: (props) ->
+  children: ['base', 'properties']

Add a property (or properties ) Access to the list.

  add: (props) ->
     @properties = @properties.concat props
     this
 
   hasProperties: ->
-    !!@properties.length

Some boolean checks for the benefit of other nodes.

  isArray        : -> not @properties.length and @base instanceof Arr
+    !!@properties.length

Some boolean checks for the benefit of other nodes.

  isArray        : -> not @properties.length and @base instanceof Arr
   isComplex      : -> @hasProperties() or @base.isComplex()
   isAssignable   : -> @hasProperties() or @base.isAssignable()
   isSimpleNumber : -> @base instanceof Literal and SIMPLENUM.test @base.value
@@ -311,47 +358,49 @@ or vanilla.

(@base instanceof Obj) and (not onlyGenerated or @base.generated) isSplice: -> - last(@properties) instanceof Slice

The value can be unwrapped as its inner node, if there are no attached + last(@properties) instanceof Slice

The value can be unwrapped as its inner node, if there are no attached properties.

  unwrap: ->
-    if @properties.length then this else @base

A reference has base part (this value) and name part. + if @properties.length then this else @base

A reference has base part (this value) and name part. We cache them separately for compiling complex expressions. a()[b()] ?= c -> (_base = a())[_name = b()] ? _base[_name] = c

  cacheReference: (o) ->
     name = last @properties
     if @properties.length < 2 and not @base.isComplex() and not name?.isComplex()
       return [this, this]  # `a` `a.b`
-    base = Value.wrap @base, @properties[...-1]
+    base = new Value @base, @properties[...-1]
     if base.isComplex()  # `a().b`
       bref = new Literal o.scope.freeVariable 'base'
-      base = Value.wrap new Parens new Assign bref, base
+      base = new Value new Parens new Assign bref, base
     return [base, bref] unless name  # `a()`
     if name.isComplex()  # `a[b()]`
       nref = new Literal o.scope.freeVariable 'name'
       name = new Index new Assign nref, name.index
       nref = new Index nref
-    [base.add(name), Value.wrap(bref or base.base, [nref or name])]

We compile a value to JavaScript by compiling and joining each property. + [base.add(name), new Value(bref or base.base, [nref or name])]

We compile a value to JavaScript by compiling and joining each property. Things get much more interesting if the chain of properties has soak operators ?. interspersed. Then we have to take care not to accidentally evaluate anything twice when building the soak chain.

  compileNode: (o) ->
     @base.front = @front
     props = @properties
-    code  = @base.compile o, if props.length then LEVEL_ACCESS else null
-    code  = "#{code}." if (@base instanceof Parens or props.length) and SIMPLENUM.test code
-    code += prop.compile o for prop in props
-    code

Unfold a soak into an If: a?.b -> a.b if a?

  unfoldSoak: (o) ->
+    fragments = @base.compileToFragments o, (if props.length then LEVEL_ACCESS else null)
+    if (@base instanceof Parens or props.length) and SIMPLENUM.test fragmentsToText fragments
+      fragments.push @makeCode '.'
+    for prop in props
+      fragments.push (prop.compileToFragments o)...
+    fragments

Unfold a soak into an If: a?.b -> a.b if a?

  unfoldSoak: (o) ->
     @unfoldedSoak ?= do =>
       if ifn = @base.unfoldSoak o
         ifn.body.properties.push @properties...
         return ifn
       for prop, i in @properties when prop.soak
         prop.soak = off
-        fst = Value.wrap @base, @properties[...i]
-        snd = Value.wrap @base, @properties[i..]
+        fst = new Value @base, @properties[...i]
+        snd = new Value @base, @properties[i..]
         if fst.isComplex()
           ref = new Literal o.scope.freeVariable 'ref'
           fst = new Parens new Assign ref, fst
           snd.base = ref
         return new If new Existence(fst), snd, soak: on
-      no

Comment

CoffeeScript passes through block comments as JavaScript block comments + no

Comment

CoffeeScript passes through block comments as JavaScript block comments at the same position.

exports.Comment = class Comment extends Base
   constructor: (@comment) ->
 
@@ -361,45 +410,44 @@ at the same position.

compileNode: (o, level) -> code = '/*' + multident(@comment, @tab) + "\n#{@tab}*/\n" code = o.indent + code if (level or o.level) is LEVEL_TOP - code

Call

Node for a function invocation. Takes care of converting super() calls into + [@makeCode code]

Call

Node for a function invocation. Takes care of converting super() calls into calls against the prototype's function of the same name.

exports.Call = class Call extends Base
   constructor: (variable, @args = [], @soak) ->
     @isNew    = false
     @isSuper  = variable is 'super'
     @variable = if @isSuper then null else variable
 
-  children: ['variable', 'args']

Tag this invocation as creating a new instance.

  newInstance: ->
+  children: ['variable', 'args']

Tag this invocation as creating a new instance.

  newInstance: ->
     base = @variable?.base or @variable
     if base instanceof Call and not base.isNew
       base.newInstance()
     else
       @isNew = true
-    this

Grab the reference to the superclass's implementation of the current + this

Grab the reference to the superclass's implementation of the current method.

  superReference: (o) ->
     method = o.scope.namedMethod()
-    throw SyntaxError 'cannot call super outside of a function.' unless method
-    {name} = method
-    throw SyntaxError 'cannot call super on an anonymous function.' unless name?
-    if method.klass
+    if method?.klass
       accesses = [new Access(new Literal '__super__')]
       accesses.push new Access new Literal 'constructor' if method.static
-      accesses.push new Access new Literal name
-      (Value.wrap (new Literal method.klass), accesses).compile o
+      accesses.push new Access new Literal method.name
+      (new Value (new Literal method.klass), accesses).compile o
+    else if method?.ctor
+      "#{method.name}.__super__.constructor"
     else
-      "#{name}.__super__.constructor"

The appropriate this value for a super call.

  superThis : (o) ->
+      throw SyntaxError 'cannot call super outside of an instance method.'

The appropriate this value for a super call.

  superThis : (o) ->
     method = o.scope.method
-    (method and not method.klass and method.context) or "this"

Soaked chained invocations unfold into if/else ternary structures.

  unfoldSoak: (o) ->
+    (method and not method.klass and method.context) or "this"

Soaked chained invocations unfold into if/else ternary structures.

  unfoldSoak: (o) ->
     if @soak
       if @variable
         return ifn if ifn = unfoldSoak o, this, 'variable'
-        [left, rite] = Value.wrap(@variable).cacheReference o
+        [left, rite] = new Value(@variable).cacheReference o
       else
         left = new Literal @superReference o
-        rite = Value.wrap left
+        rite = new Value left
       rite = new Call rite, @args
       rite.isNew = @isNew
       left = new Literal "typeof #{ left.compile o } === \"function\""
-      return new If left, Value.wrap(rite), soak: yes
+      return new If left, new Value(rite), soak: yes
     call = this
     list = []
     loop
@@ -417,63 +465,72 @@ method.

else call.variable.base = ifn ifn = unfoldSoak o, call, 'variable' - ifn

Walk through the objects in the arguments, moving over simple values. -This allows syntax like call a: b, c into call({a: b}, c);

  filterImplicitObjects: (list) ->
-    nodes = []
-    for node in list
-      unless node.isObject?() and node.base.generated
-        nodes.push node
-        continue
-      obj = null
-      for prop in node.base.properties
-        if prop instanceof Assign or prop instanceof Comment
-          nodes.push obj = new Obj properties = [], true if not obj
-          properties.push prop
-        else
-          nodes.push prop
-          obj = null
-    nodes

Compile a vanilla function call.

  compileNode: (o) ->
+    ifn

Compile a vanilla function call.

  compileNode: (o) ->
     @variable?.front = @front
-    if code = Splat.compileSplattedArray o, @args, true
-      return @compileSplat o, code
-    args = @filterImplicitObjects @args
-    args = (arg.compile o, LEVEL_LIST for arg in args).join ', '
+    compiledArray = Splat.compileSplattedArray o, @args, true
+    if compiledArray.length
+      return @compileSplat o, compiledArray
+    compiledArgs = []
+    for arg, argIndex in @args
+      if argIndex then compiledArgs.push @makeCode ", "
+      compiledArgs.push (arg.compileToFragments o, LEVEL_LIST)...
+
+    fragments = []
     if @isSuper
-      @superReference(o) + ".call(#{@superThis(o)}#{ args and ', ' + args })"
+      preface = @superReference(o) + ".call(#{@superThis(o)}"
+      if compiledArgs.length then preface += ", "
+      fragments.push @makeCode preface
     else
-      (if @isNew then 'new ' else '') + @variable.compile(o, LEVEL_ACCESS) + "(#{args})"

If you call a function with a splat, it's converted into a JavaScript + if @isNew then fragments.push @makeCode 'new ' + fragments.push (@variable.compileToFragments(o, LEVEL_ACCESS))... + fragments.push @makeCode "(" + fragments.push compiledArgs... + fragments.push @makeCode ")" + fragments

If you call a function with a splat, it's converted into a JavaScript .apply() call to allow an array of arguments to be passed. If it's a constructor, then things get real tricky. We have to inject an -inner constructor in order to be able to pass the varargs.

  compileSplat: (o, splatArgs) ->
-    return "#{ @superReference o }.apply(#{@superThis(o)}, #{splatArgs})" if @isSuper
+inner constructor in order to be able to pass the varargs.

+ +

splatArgs is an array of CodeFragments to put into the 'apply'.

  compileSplat: (o, splatArgs) ->
+    if @isSuper
+      return [].concat @makeCode("#{ @superReference o }.apply(#{@superThis(o)}, "),
+        splatArgs, @makeCode(")")
+
     if @isNew
       idt = @tab + TAB
-      return """
+      return [].concat @makeCode("""
         (function(func, args, ctor) {
         #{idt}ctor.prototype = func.prototype;
         #{idt}var child = new ctor, result = func.apply(child, args);
         #{idt}return Object(result) === result ? result : child;
-        #{@tab}})(#{ @variable.compile o, LEVEL_LIST }, #{splatArgs}, function(){})
-      """
-    base = Value.wrap @variable
+        #{@tab}})("""),
+        (@variable.compileToFragments o, LEVEL_LIST),
+        @makeCode(", "), splatArgs, @makeCode(", function(){})")
+
+    answer = []
+    base = new Value @variable
     if (name = base.properties.pop()) and base.isComplex()
       ref = o.scope.freeVariable 'ref'
-      fun = "(#{ref} = #{ base.compile o, LEVEL_LIST })#{ name.compile o }"
+      answer = answer.concat @makeCode("(#{ref} = "),
+        (base.compileToFragments o, LEVEL_LIST),
+        @makeCode(")"),
+        name.compileToFragments(o)
     else
-      fun = base.compile o, LEVEL_ACCESS
-      fun = "(#{fun})" if SIMPLENUM.test fun
+      fun = base.compileToFragments o, LEVEL_ACCESS
+      fun = @wrapInBraces fun if SIMPLENUM.test fragmentsToText fun
       if name
-        ref = fun
-        fun += name.compile o
+        ref = fragmentsToText fun
+        fun.push (name.compileToFragments o)...
       else
         ref = 'null'
-    "#{fun}.apply(#{ref}, #{splatArgs})"

Extends

Node to extend an object's prototype with an ancestor object. + answer = answer.concat fun + answer = answer.concat @makeCode(".apply(#{ref}, "), splatArgs, @makeCode(")")

Extends

Node to extend an object's prototype with an ancestor object. After goog.inherits from the Closure Library.

exports.Extends = class Extends extends Base
   constructor: (@child, @parent) ->
 
-  children: ['child', 'parent']

Hooks one constructor into another's prototype chain.

  compile: (o) ->
-    new Call(Value.wrap(new Literal utility 'extends'), [@child, @parent]).compile o

Access

A . access into a property of a value, or the :: shorthand for + children: ['child', 'parent']

Hooks one constructor into another's prototype chain.

  compileToFragments: (o) ->
+    new Call(new Value(new Literal utility 'extends'), [@child, @parent]).compileToFragments o

Access

A . access into a property of a value, or the :: shorthand for an access into the object's prototype.

exports.Access = class Access extends Base
   constructor: (@name, tag) ->
     @name.asKey = yes
@@ -481,20 +538,25 @@ an access into the object's prototype.

children: ['name'] - compile: (o) -> - name = @name.compile o - if IDENTIFIER.test name then ".#{name}" else "[#{name}]" + compileToFragments: (o) -> + name = @name.compileToFragments o + if IDENTIFIER.test fragmentsToText name + name.unshift @makeCode "." + else + name.unshift @makeCode "[" + name.push @makeCode "]" + name - isComplex: NO

Index

A [ ... ] indexed access into an array or object.

exports.Index = class Index extends Base
+  isComplex: NO

Index

A [ ... ] indexed access into an array or object.

exports.Index = class Index extends Base
   constructor: (@index) ->
 
   children: ['index']
 
-  compile: (o) ->
-    "[#{ @index.compile o, LEVEL_PAREN }]"
+  compileToFragments: (o) ->
+    [].concat @makeCode("["), (@index.compileToFragments o, LEVEL_PAREN), @makeCode("]")
 
   isComplex: ->
-    @index.isComplex()

Range

A range literal. Ranges can be used to extract portions (slices) of arrays, + @index.isComplex()

Range

A range literal. Ranges can be used to extract portions (slices) of arrays, to specify a range for comprehensions, or as a value, to be expanded into the corresponding array of integers at runtime.

exports.Range = class Range extends Base
 
@@ -502,31 +564,31 @@ corresponding array of integers at runtime.

Compiles the range's source variables -- where it starts and where it ends. + @equals = if @exclusive then '' else '='

Compiles the range's source variables -- where it starts and where it ends. But only if they need to be cached to avoid double evaluation.

  compileVariables: (o) ->
     o = merge o, top: true
-    [@fromC, @fromVar]  =  @from.cache o, LEVEL_LIST
-    [@toC, @toVar]      =  @to.cache o, LEVEL_LIST
-    [@step, @stepVar]   =  step.cache o, LEVEL_LIST if step = del o, 'step'
+    [@fromC, @fromVar]  =  @cacheToCodeFragments @from.cache o, LEVEL_LIST
+    [@toC, @toVar]      =  @cacheToCodeFragments @to.cache o, LEVEL_LIST
+    [@step, @stepVar]   =  @cacheToCodeFragments step.cache o, LEVEL_LIST if step = del o, 'step'
     [@fromNum, @toNum]  = [@fromVar.match(SIMPLENUM), @toVar.match(SIMPLENUM)]
-    @stepNum            = @stepVar.match(SIMPLENUM) if @stepVar

When compiled normally, the range returns the contents of the for loop + @stepNum = @stepVar.match(SIMPLENUM) if @stepVar

When compiled normally, the range returns the contents of the for loop needed to iterate over the values in the range. Used by comprehensions.

  compileNode: (o) ->
     @compileVariables o unless @fromVar
-    return @compileArray(o) unless o.index

Set up endpoints.

    known    = @fromNum and @toNum
+    return @compileArray(o) unless o.index

Set up endpoints.

    known    = @fromNum and @toNum
     idx      = del o, 'index'
     idxName  = del o, 'name'
     namedIndex = idxName and idxName isnt idx
     varPart  = "#{idx} = #{@fromC}"
     varPart += ", #{@toC}" if @toC isnt @toVar
     varPart += ", #{@step}" if @step isnt @stepVar
-    [lt, gt] = ["#{idx} <#{@equals}", "#{idx} >#{@equals}"]

Generate the condition.

    condPart = if @stepNum
+    [lt, gt] = ["#{idx} <#{@equals}", "#{idx} >#{@equals}"]

Generate the condition.

    condPart = if @stepNum
       if +@stepNum > 0 then "#{lt} #{@toVar}" else "#{gt} #{@toVar}"
     else if known
       [from, to] = [+@fromNum, +@toNum]
       if from <= to then "#{lt} #{to}" else "#{gt} #{to}"
     else
       cond = if @stepVar then "#{@stepVar} > 0" else "#{@fromVar} <= #{@toVar}"
-      "#{cond} ? #{lt} #{@toVar} : #{gt} #{@toVar}"

Generate the step.

    stepPart = if @stepVar
+      "#{cond} ? #{lt} #{@toVar} : #{gt} #{@toVar}"

Generate the step.

    stepPart = if @stepVar
       "#{idx} += #{@stepVar}"
     else if known
       if namedIndex
@@ -540,18 +602,18 @@ needed to iterate over the values in the range. Used by comprehensions.

"#{cond} ? #{idx}++ : #{idx}--" varPart = "#{idxName} = #{varPart}" if namedIndex - stepPart = "#{idxName} = #{stepPart}" if namedIndex

The final loop body.

    "#{varPart}; #{condPart}; #{stepPart}"

When used as a value, expand the range into the equivalent array.

  compileArray: (o) ->
+    stepPart = "#{idxName} = #{stepPart}" if namedIndex

The final loop body.

    [@makeCode "#{varPart}; #{condPart}; #{stepPart}"]

When used as a value, expand the range into the equivalent array.

  compileArray: (o) ->
     if @fromNum and @toNum and Math.abs(@fromNum - @toNum) <= 20
       range = [+@fromNum..+@toNum]
       range.pop() if @exclusive
-      return "[#{ range.join(', ') }]"
+      return [@makeCode "[#{ range.join(', ') }]"]
     idt    = @tab + TAB
     i      = o.scope.freeVariable 'i'
     result = o.scope.freeVariable 'results'
     pre    = "\n#{idt}#{result} = [];"
     if @fromNum and @toNum
       o.index = i
-      body    = @compileNode o
+      body    = fragmentsToText @compileNode o
     else
       vars    = "#{i} = #{@fromC}" + if @toC isnt @toVar then ", #{@toC}" else ''
       cond    = "#{@fromVar} <= #{@toVar}"
@@ -559,28 +621,29 @@ needed to iterate over the values in the range. Used by comprehensions.

post = "{ #{result}.push(#{i}); }\n#{idt}return #{result};\n#{o.indent}" hasArgs = (node) -> node?.contains (n) -> n instanceof Literal and n.value is 'arguments' and not n.asKey args = ', arguments' if hasArgs(@from) or hasArgs(@to) - "(function() {#{pre}\n#{idt}for (#{body})#{post}}).apply(this#{args ? ''})"

Slice

An array slice literal. Unlike JavaScript's Array#slice, the second parameter + [@makeCode "(function() {#{pre}\n#{idt}for (#{body})#{post}}).apply(this#{args ? ''})"]

Slice

An array slice literal. Unlike JavaScript's Array#slice, the second parameter specifies the index of the end of the slice, just as the first parameter is the index of the beginning.

exports.Slice = class Slice extends Base
 
   children: ['range']
 
   constructor: (@range) ->
-    super()

We have to be careful when trying to slice through the end of the array, + super()

We have to be careful when trying to slice through the end of the array, 9e9 is used because not all implementations respect undefined or 1/0. 9e9 should be safe because 9e9 > 2**32, the max array length.

  compileNode: (o) ->
     {to, from} = @range
-    fromStr    = from and from.compile(o, LEVEL_PAREN) or '0'
-    compiled   = to and to.compile o, LEVEL_PAREN
-    if to and not (not @range.exclusive and +compiled is -1)
-      toStr = ', ' + if @range.exclusive
-        compiled
-      else if SIMPLENUM.test compiled
-        "#{+compiled + 1}"
-      else
-        compiled = to.compile o, LEVEL_ACCESS
-        "+#{compiled} + 1 || 9e9"
-    ".slice(#{ fromStr }#{ toStr or '' })"

Obj

An object literal, nothing fancy.

exports.Obj = class Obj extends Base
+    fromCompiled = from and from.compileToFragments(o, LEVEL_PAREN) or [@makeCode '0']

TODO: jwalton - move this into the 'if'?

    if to
+      compiled     = to.compileToFragments o, LEVEL_PAREN
+      compiledText = fragmentsToText compiled
+      if not (not @range.exclusive and +compiledText is -1)
+        toStr = ', ' + if @range.exclusive
+          compiledText
+        else if SIMPLENUM.test compiledText
+          "#{+compiledText + 1}"
+        else
+          compiled = to.compileToFragments o, LEVEL_ACCESS
+          "+#{fragmentsToText compiled} + 1 || 9e9"
+    [@makeCode ".slice(#{ fragmentsToText fromCompiled }#{ toStr or '' })"]

Obj

An object literal, nothing fancy.

exports.Obj = class Obj extends Base
   constructor: (props, @generated = false) ->
     @objects = @properties = props or []
 
@@ -588,13 +651,14 @@ is the index of the beginning.

compileNode: (o) -> props = @properties - return (if @front then '({})' else '{}') unless props.length + return [@makeCode(if @front then '({})' else '{}')] unless props.length if @generated for node in props when node instanceof Value throw new Error 'cannot have an implicit value in an implicit object' idt = o.indent += TAB lastNoncom = @lastNonComment @properties - props = for prop, i in props + answer = [] + for prop, i in props join = if i is props.length - 1 '' else if prop is lastNoncom or prop instanceof Comment @@ -608,42 +672,51 @@ is the index of the beginning.

if prop not instanceof Assign prop = new Assign prop, prop, 'object' (prop.variable.base or prop.variable).asKey = yes - indent + prop.compile(o, LEVEL_TOP) + join - props = props.join '' - obj = "{#{ props and '\n' + props + '\n' + @tab }}" - if @front then "(#{obj})" else obj + if indent then answer.push @makeCode indent + answer.push prop.compileToFragments(o, LEVEL_TOP)... + if join then answer.push @makeCode join + answer.unshift @makeCode "{#{ props.length and '\n' }" + answer.push @makeCode "#{ props.length and '\n' + @tab }}" + if @front then @wrapInBraces answer else answer assigns: (name) -> for prop in @properties when prop.assigns name then return yes - no

Arr

An array literal.

exports.Arr = class Arr extends Base
+    no

Arr

An array literal.

exports.Arr = class Arr extends Base
   constructor: (objs) ->
     @objects = objs or []
 
   children: ['objects']
 
-  filterImplicitObjects: Call::filterImplicitObjects
-
   compileNode: (o) ->
-    return '[]' unless @objects.length
+    return [@makeCode '[]'] unless @objects.length
     o.indent += TAB
-    objs = @filterImplicitObjects @objects
-    return code if code = Splat.compileSplattedArray o, objs
-    code = (obj.compile o, LEVEL_LIST for obj in objs).join ', '
-    if code.indexOf('\n') >= 0
-      "[\n#{o.indent}#{code}\n#{@tab}]"
+    answer = Splat.compileSplattedArray o, @objects
+    return answer if answer.length
+
+    answer = []
+    compiledObjs = (obj.compileToFragments o, LEVEL_LIST for obj in @objects)
+    for fragments, index in compiledObjs
+      if index
+        answer.push @makeCode ", "
+      answer.push fragments...
+    if (fragmentsToText answer).indexOf('\n') >= 0
+      answer.unshift @makeCode "[\n#{o.indent}"
+      answer.push @makeCode "\n#{@tab}]"
     else
-      "[#{code}]"
+      answer.unshift @makeCode "["
+      answer.push @makeCode "]"
+    answer
 
   assigns: (name) ->
     for obj in @objects when obj.assigns name then return yes
-    no

Class

The CoffeeScript class definition. + no

Class

The CoffeeScript class definition. Initialize a Class with its name, an optional superclass, and a list of prototype property assignments.

exports.Class = class Class extends Base
   constructor: (@variable, @parent, @body = new Block) ->
     @boundFuncs = []
     @body.classBody = yes
 
-  children: ['variable', 'parent', 'body']

Figure out the appropriate name for the constructor function of this class.

  determineName: ->
+  children: ['variable', 'parent', 'body']

Figure out the appropriate name for the constructor function of this class.

  determineName: ->
     return null unless @variable
     decl = if tail = last @variable.properties
       tail instanceof Access and tail.name.value
@@ -651,7 +724,7 @@ list of prototype property assignments.

@variable.base.value if decl in STRICT_PROSCRIBED throw SyntaxError "variable name may not be #{decl}" - decl and= IDENTIFIER.test(decl) and decl

For all this-references and bound functions in the class definition, + decl and= IDENTIFIER.test(decl) and decl

For all this-references and bound functions in the class definition, this is the Class being constructed.

  setContext: (name) ->
     @body.traverseChildren false, (node) ->
       return false if node.classBody
@@ -659,12 +732,25 @@ list of prototype property assignments.

node.value = name else if node instanceof Code node.klass = name - node.context = name if node.bound

Ensure that all functions bound to the instance are proxied in the + node.context = name if node.bound

Ensure that all functions bound to the instance are proxied in the constructor.

  addBoundFunctions: (o) ->
-    for bvar in @boundFuncs
-      lhs = (Value.wrap (new Literal "this"), [new Access bvar]).compile o
-      @ctor.body.unshift new Literal "#{lhs} = #{utility 'bind'}(#{lhs}, this)"
-    return

Merge the properties from a top-level object as prototypal properties + if @boundFuncs.length + o.scope.assign '_this', 'this' + for [name, func] in @boundFuncs + lhs = new Value (new Literal "this"), [new Access name] + body = new Block [new Return new Literal "#{@ctor.name}.prototype.#{name.value}.apply(_this, arguments)"] + rhs = new Code func.params, body, 'boundfunc' + bound = new Assign lhs, rhs + + @ctor.body.unshift bound

{base} = assign.variable +lhs = (new Value (new Literal "this"), [new Access base]).compile o +@ctor.body.unshift new Literal """#{lhs} = function() {

+ +

{o.indent} return #{@ctor.name}.prototype.#{base.value}.apply(_this, arguments);

+ +

{o.indent}}\n

+ +

"""

    return

Merge the properties from a top-level object as prototypal properties on the class.

  addProperties: (node, name, o) ->
     props = node.base.properties[..]
     exprs = while assign = props.shift()
@@ -688,39 +774,39 @@ on the class.

if func.bound func.context = name else - assign.variable = Value.wrap(new Literal(name), [(new Access new Literal 'prototype'), new Access base ]) + assign.variable = new Value(new Literal(name), [(new Access new Literal 'prototype'), new Access base ]) if func instanceof Code and func.bound - @boundFuncs.push base + @boundFuncs.push [base, func] func.bound = no assign - compact exprs

Walk the body of the class, looking for prototype properties to be converted.

  walkBody: (name, o) ->
+    compact exprs

Walk the body of the class, looking for prototype properties to be converted.

  walkBody: (name, o) ->
     @traverseChildren false, (child) =>
+      cont = true
       return false if child instanceof Class
       if child instanceof Block
         for node, i in exps = child.expressions
           if node instanceof Value and node.isObject(true)
+            cont = false
             exps[i] = @addProperties node, name, o
-        child.expressions = exps = flatten exps

use strict (and other directives) must be the first expression statement(s) + child.expressions = exps = flatten exps + cont and child not instanceof Class

use strict (and other directives) must be the first expression statement(s) of a function body. This method ensures the prologue is correctly positioned above the constructor.

  hoistDirectivePrologue: ->
     index = 0
     {expressions} = @body
     ++index while (node = expressions[index]) and node instanceof Comment or
       node instanceof Value and node.isString()
-    @directives = expressions.splice 0, index

Make sure that a constructor is defined for the class, and properly -configured.

  ensureConstructor: (name, o) ->
+    @directives = expressions.splice 0, index

Make sure that a constructor is defined for the class, and properly +configured.

  ensureConstructor: (name) ->
     if not @ctor
       @ctor = new Code
       @ctor.body.push new Literal "#{name}.__super__.constructor.apply(this, arguments)" if @parent
       @ctor.body.push new Literal "#{@externalCtor}.apply(this, arguments)" if @externalCtor
+      @ctor.body.makeReturn()
       @body.expressions.unshift @ctor
     @ctor.ctor     = @ctor.name = name
     @ctor.klass    = null
-    @ctor.noReturn = yes

Prevent constructor from returning a value.

    returnExpr = null
-    @ctor.body.traverseChildren no, (node) ->
-      return no if node instanceof Return and (returnExpr = node.expression)
-    if returnExpr
-      throw SyntaxError "cannot return a value from a constructor: \"#{returnExpr.compileNode o}\" in class #{name}"

Instead of generating the JavaScript string directly, we build up the + @ctor.noReturn = yes

Instead of generating the JavaScript string directly, we build up the equivalent syntax tree and compile that, in pieces. You can see the constructor, property assignments, and inheritance getting built out below.

  compileNode: (o) ->
     decl  = @determineName()
@@ -731,7 +817,7 @@ constructor, property assignments, and inheritance getting built out below.

@hoistDirectivePrologue() @setContext name @walkBody name, o - @ensureConstructor name, o + @ensureConstructor name @body.spaced = yes @body.expressions.unshift @ctor unless @ctor instanceof Code @body.expressions.push lname @@ -749,7 +835,7 @@ constructor, property assignments, and inheritance getting built out below.

klass = new Parens call, yes klass = new Assign @variable, klass if @variable - klass.compile o

Assign

The Assign is used to assign a local variable to value, or to set the + klass.compileToFragments o

Assign

The Assign is used to assign a local variable to value, or to set the property of an object -- including within object literals.

exports.Assign = class Assign extends Base
   constructor: (@variable, @value, @context, options) ->
     @param = options and options.param
@@ -767,7 +853,7 @@ property of an object -- including within object literals.

Compile an assignment, delegating to compilePatternMatch or + unfoldSoak o, this, 'variable'

Compile an assignment, delegating to compilePatternMatch or compileSplice if appropriate. Keep track of the name of the base object we've been assigned to, for correct internal references. If the variable has not been seen yet within the current scope, declare it.

  compileNode: (o) ->
@@ -775,7 +861,8 @@ has not been seen yet within the current scope, declare it.

Brief implementation of recursive pattern matching, when assigning array or + val = @value.compileToFragments o, LEVEL_LIST + return (compiledName.concat @makeCode(": "), val) if @context is 'object' + answer = compiledName.concat @makeCode(" #{ @context or '=' } "), val + if o.level <= LEVEL_LIST then answer else @wrapInBraces answer

Brief implementation of recursive pattern matching, when assigning array or object literals to a value. Peeks at their properties to assign inner names. See the ECMAScript Harmony Wiki for details.

  compilePatternMatch: (o) ->
@@ -798,10 +885,10 @@ for details.

< {value} = this {objects} = @variable.base unless olen = objects.length - code = value.compile o - return if o.level >= LEVEL_OP then "(#{code})" else code + code = value.compileToFragments o + return if o.level >= LEVEL_OP then @wrapInBraces code else code isObject = @variable.isObject() - if top and olen is 1 and (obj = objects[0]) not instanceof Splat

Unroll simplest cases: {v} = x -> v = x.v

      if obj instanceof Assign
+    if top and olen is 1 and (obj = objects[0]) not instanceof Splat

Unroll simplest cases: {v} = x -> v = x.v

      if obj instanceof Assign
         {variable: {base: idx}, value: obj} = obj
       else
         idx = if isObject
@@ -809,31 +896,32 @@ for details.

< else new Literal 0 acc = IDENTIFIER.test idx.unwrap().value or 0 - value = Value.wrap value + value = new Value value value.properties.push new (if acc then Access else Index) idx if obj.unwrap().value in RESERVED throw new SyntaxError "assignment to a reserved word: #{obj.compile o} = #{value.compile o}" - return new Assign(obj, value, null, param: @param).compile o, LEVEL_TOP - vvar = value.compile o, LEVEL_LIST + return new Assign(obj, value, null, param: @param).compileToFragments o, LEVEL_TOP + vvar = value.compileToFragments o, LEVEL_LIST + vvarText = fragmentsToText vvar assigns = [] - splat = false - if not IDENTIFIER.test(vvar) or @variable.assigns(vvar) - assigns.push "#{ ref = o.scope.freeVariable 'ref' } = #{vvar}" - vvar = ref - for obj, i in objects

A regular array pattern-match.

      idx = i
+    splat   = false

Make vvar into a simple variable if it isn't already.

    if not IDENTIFIER.test(vvarText) or @variable.assigns(vvarText)
+      assigns.push [@makeCode("#{ ref = o.scope.freeVariable 'ref' } = "), vvar...]
+      vvar = [@makeCode ref]
+      vvarText = ref
+    for obj, i in objects

A regular array pattern-match.

      idx = i
       if isObject
-        if obj instanceof Assign

A regular object pattern-match.

          {variable: {base: idx}, value: obj} = obj
-        else

A shorthand {a, b, @c} = val pattern-match.

          if obj.base instanceof Parens
-            [obj, idx] = Value.wrap(obj.unwrapAll()).cacheReference o
+        if obj instanceof Assign

A regular object pattern-match.

          {variable: {base: idx}, value: obj} = obj
+        else

A shorthand {a, b, @c} = val pattern-match.

          if obj.base instanceof Parens
+            [obj, idx] = new Value(obj.unwrapAll()).cacheReference o
           else
             idx = if obj.this then obj.properties[0].name else obj
       if not splat and obj instanceof Splat
         name = obj.name.unwrap().value
         obj = obj.unwrap()
-        val = "#{olen} <= #{vvar}.length ? #{ utility 'slice' }.call(#{vvar}, #{i}"
+        val = "#{olen} <= #{vvarText}.length ? #{ utility 'slice' }.call(#{vvarText}, #{i}"
         if rest = olen - i - 1
           ivar = o.scope.freeVariable 'i'
-          val += ", #{ivar} = #{vvar}.length - #{rest}) : (#{ivar} = #{i}, [])"
+          val += ", #{ivar} = #{vvarText}.length - #{rest}) : (#{ivar} = #{i}, [])"
         else
           val += ") : []"
         val   = new Literal val
@@ -841,7 +929,7 @@ for details.

< else name = obj.unwrap().value if obj instanceof Splat - obj = obj.name.compile o + obj = obj.name.compileToFragments o throw new SyntaxError \ "multiple splats are disallowed in an assignment: #{obj}..." if typeof idx is 'number' @@ -849,24 +937,27 @@ for details.

< acc = no else acc = isObject and IDENTIFIER.test idx.unwrap().value or 0 - val = Value.wrap new Literal(vvar), [new (if acc then Access else Index) idx] + val = new Value new Literal(vvarText), [new (if acc then Access else Index) idx] if name? and name in RESERVED throw new SyntaxError "assignment to a reserved word: #{obj.compile o} = #{val.compile o}" - assigns.push new Assign(obj, val, null, param: @param, subpattern: yes).compile o, LEVEL_LIST + assigns.push new Assign(obj, val, null, param: @param, subpattern: yes).compileToFragments o, LEVEL_LIST assigns.push vvar unless top or @subpattern - code = assigns.join ', ' - if o.level < LEVEL_LIST then code else "(#{code})"

When compiling a conditional assignment, take care to ensure that the + fragments = @joinFragmentArrays assigns, ', ' + if o.level < LEVEL_LIST then fragments else @wrapInBraces fragments

When compiling a conditional assignment, take care to ensure that the operands are only evaluated once, even though we have to reference them more than once.

  compileConditional: (o) ->
-    [left, right] = @variable.cacheReference o

Disallow conditional assignment of undefined variables.

    if not left.properties.length and left.base instanceof Literal and
+    [left, right] = @variable.cacheReference o

Disallow conditional assignment of undefined variables.

    if not left.properties.length and left.base instanceof Literal and
            left.base.value != "this" and not o.scope.check left.base.value
       throw new Error "the variable \"#{left.base.value}\" can't be assigned with #{@context} because it has not been defined."
     if "?" in @context then o.isExistentialEquals = true
-    Op.create(@context[...-1], left, new Assign(right, @value, '=') ).compile o

Compile the assignment from an array splice literal, using JavaScript's + new Op(@context[...-1], left, new Assign(right, @value, '=') ).compileToFragments o

Compile the assignment from an array splice literal, using JavaScript's Array#splice method.

  compileSplice: (o) ->
     {range: {from, to, exclusive}} = @variable.properties.pop()
     name = @variable.compile o
-    [fromDecl, fromRef] = from?.cache(o, LEVEL_OP) or ['0', '0']
+    if from
+      [fromDecl, fromRef] = @cacheToCodeFragments from.cache o, LEVEL_OP
+    else
+      fromDecl = fromRef = '0'
     if to
       if from?.isSimpleNumber() and to.isSimpleNumber()
         to = +to.compile(o) - +fromRef
@@ -877,8 +968,8 @@ more than once.

else to = "9e9" [valDef, valRef] = @value.cache o, LEVEL_LIST - code = "[].splice.apply(#{name}, [#{fromDecl}, #{to}].concat(#{valDef})), #{valRef}" - if o.level > LEVEL_TOP then "(#{code})" else code

Code

A function definition. This is the only node that creates a new Scope. + answer = [].concat @makeCode("[].splice.apply(#{name}, [#{fromDecl}, #{to}].concat("), valDef, @makeCode(")), "), valRef + if o.level > LEVEL_TOP then @wrapInBraces answer else answer

Code

A function definition. This is the only node that creates a new Scope. When for the purposes of walking the contents of a function body, the Code has no children -- they're within the inner scope.

exports.Code = class Code extends Base
   constructor: (params, body, tag) ->
@@ -891,7 +982,7 @@ has no children -- they're within the inner scope.

Compilation creates a new scope unless explicitly asked to share with the + jumps: NO

Compilation creates a new scope unless explicitly asked to share with the outer scope. Handles splat parameters in the parameter list by peeking at the JavaScript arguments object. If the function is bound with the => arrow, generates a wrapper that saves the current value of this through @@ -909,25 +1000,27 @@ a closure.

for {name: p} in @params if p.this then p = p.properties[0].name if p.value then o.scope.add p.value, 'var', yes - splats = new Assign Value.wrap(new Arr(p.asReference o for p in @params)), - Value.wrap new Literal 'arguments' + splats = new Assign new Value(new Arr(p.asReference o for p in @params)), + new Value new Literal 'arguments' break for param in @params if param.isComplex() val = ref = param.asReference o - val = Op.create '?', ref, param.value if param.value - exprs.push new Assign Value.wrap(param.name), val, '=', param: yes + val = new Op '?', ref, param.value if param.value + exprs.push new Assign new Value(param.name), val, '=', param: yes else ref = param if param.value lit = new Literal ref.name.value + ' == null' - val = new Assign Value.wrap(param.name), param.value, '=' + val = new Assign new Value(param.name), param.value, '=' exprs.push new If lit, val params.push ref unless splats wasEmpty = @body.isEmpty() exprs.unshift splats if splats @body.expressions.unshift exprs... if exprs.length - o.scope.parameter params[i] = p.compile o for p, i in params + for p, i in params + params[i] = p.compileToFragments o + o.scope.parameter fragmentsToText params[i] uniqs = [] for name in @paramNames() throw SyntaxError "multiple parameters named '#{name}'" if name in uniqs @@ -941,16 +1034,22 @@ a closure.

idt = o.indent code = 'function' code += ' ' + @name if @ctor - code += '(' + params.join(', ') + ') {' - code += "\n#{ @body.compileWithDeclarations o }\n#{@tab}" unless @body.isEmpty() - code += '}' - return @tab + code if @ctor - if @front or (o.level >= LEVEL_ACCESS) then "(#{code})" else code

A list of parameter names, excluding those generated by the compiler.

  paramNames: ->
+    code  += '('
+    answer = [@makeCode(code)]
+    for p, i in params
+      if i then answer.push @makeCode ", "
+      answer.push p...
+    answer.push @makeCode ') {'
+    answer = answer.concat(@makeCode("\n"), @body.compileWithDeclarations(o), @makeCode("\n#{@tab}")) unless @body.isEmpty()
+    answer.push @makeCode '}'
+
+    return [@makeCode(@tab), answer...] if @ctor
+    if @front or (o.level >= LEVEL_ACCESS) then @wrapInBraces answer else answer

A list of parameter names, excluding those generated by the compiler.

  paramNames: ->
     names = []
     names.push param.names()... for param in @params
-    names

Short-circuit traverseChildren method to prevent it from crossing scope boundaries + names

Short-circuit traverseChildren method to prevent it from crossing scope boundaries unless crossScope is true.

  traverseChildren: (crossScope, func) ->
-    super(crossScope, func) if crossScope

Param

A parameter in a function definition. Beyond a typical Javascript parameter, + super(crossScope, func) if crossScope

Param

A parameter in a function definition. Beyond a typical Javascript parameter, these parameters can also attach themselves to the context of the function, as well as be a splat, gathering up a group of parameters into an array.

exports.Param = class Param extends Base
   constructor: (@name, @value, @splat) ->
@@ -959,8 +1058,8 @@ as well as be a splat, gathering up a group of parameters into an array.

children: ['name', 'value'] - compile: (o) -> - @name.compile o, LEVEL_LIST + compileToFragments: (o) -> + @name.compileToFragments o, LEVEL_LIST asReference: (o) -> return @reference if @reference @@ -971,12 +1070,12 @@ as well as be a splat, gathering up a group of parameters into an array.

node = new Literal o.scope.freeVariable node.value else if node.isComplex() node = new Literal o.scope.freeVariable 'arg' - node = Value.wrap node + node = new Value node node = new Splat node if @splat @reference = node isComplex: -> - @name.isComplex()

Finds the name or names of a Param; useful for detecting duplicates. + @name.isComplex()

Finds the name or names of a Param; useful for detecting duplicates. In a sense, a destructured parameter represents multiple JS parameters, thus this method returns an Array of names. Reserved words used as param names, as well as the Object and Array @@ -985,31 +1084,31 @@ during the Code compilation step, so this is necessarily an incompl list of a parameter's names.

  names: (name = @name)->
     atParam = (obj) ->
       {value} = obj.properties[0].name
-      return if value.reserved then [] else [value]
    + return if value.reserved then [] else [value]
  • simple literals foo
  • -
    return [name.value] if name instanceof Literal
    +
    return [name.value] if name instanceof Literal
  • at-params @foo
    return atParam(name) if name instanceof Value
     names = []
-    for obj in name.objects
    + for obj in name.objects
  • assignments within destructured parameters {foo:bar}
      if obj instanceof Assign
-        names.push @names(obj.value.unwrap())...
    + names.push @names(obj.value.unwrap())...
  • splats within destructured parameters [xs...]
      else if obj instanceof Splat
         names.push obj.name.unwrap().value
-      else if obj instanceof Value
    + else if obj instanceof Value
  • destructured parameters within destructured parameters [{a}]
        if obj.isArray() or obj.isObject()
-          names.push @names(obj.base)...
    + names.push @names(obj.base)...
  • at-params within destructured parameters {@foo}
        else if obj.this
-          names.push atParam(obj)...
    + names.push atParam(obj)...
  • simple destructured parameters {foo}
        else names.push obj.base.value
       else
         throw SyntaxError "illegal parameter #{obj.compile()}"
-    names

Splat

A splat, either as a parameter to a function, an argument to a call, + names

Splat

A splat, either as a parameter to a function, an argument to a call, or as part of a destructuring assignment.

exports.Splat = class Splat extends Base
 
   children: ['name']
@@ -1022,27 +1121,33 @@ or as part of a destructuring assignment.

assigns: (name) -> @name.assigns name - compile: (o) -> - @name.compile o + compileToFragments: (o) -> + @name.compileToFragments o - unwrap: -> @name

Utility function that converts an arbitrary number of elements, mixed with + unwrap: -> @name

Utility function that converts an arbitrary number of elements, mixed with splats, to a proper array.

  @compileSplattedArray: (o, list, apply) ->
     index = -1
     continue while (node = list[++index]) and node not instanceof Splat
-    return '' if index >= list.length
+    return [] if index >= list.length
     if list.length is 1
-      code = list[0].compile o, LEVEL_LIST
-      return code if apply
-      return "#{ utility 'slice' }.call(#{code})"
+      node = list[0]
+      fragments = node.compileToFragments o, LEVEL_LIST
+      return fragments if apply
+      return [].concat node.makeCode("#{ utility 'slice' }.call("), fragments, node.makeCode(")")
     args = list[index..]
     for node, i in args
-      code = node.compile o, LEVEL_LIST
+      compiledNode = node.compileToFragments o, LEVEL_LIST
       args[i] = if node instanceof Splat
-      then "#{ utility 'slice' }.call(#{code})"
-      else "[#{code}]"
-    return args[0] + ".concat(#{ args[1..].join ', ' })" if index is 0
-    base = (node.compile o, LEVEL_LIST for node in list[...index])
-    "[#{ base.join ', ' }].concat(#{ args.join ', ' })"

While

A while loop, the only sort of low-level loop exposed by CoffeeScript. From + then [].concat node.makeCode("#{ utility 'slice' }.call("), compiledNode, node.makeCode(")") + else [].concat node.makeCode("["), compiledNode, node.makeCode("]") + if index is 0 + node = list[0] + concatPart = (node.joinFragmentArrays args[1..], ', ') + return args[0].concat node.makeCode(".concat("), concatPart, node.makeCode(")") + base = (node.compileToFragments o, LEVEL_LIST for node in list[...index]) + base = list[0].joinFragmentArrays base, ', ' + concatPart = list[index].joinFragmentArrays args, ', ' + [].concat list[0].makeCode("["), base, list[index].makeCode("].concat("), concatPart, (last list).makeCode(")")

While

A while loop, the only sort of low-level loop exposed by CoffeeScript. From it, all other loops can be manufactured. Useful in cases where you need more flexibility or more speed than a comprehension can provide.

exports.While = class While extends Base
   constructor: (condition, options) ->
@@ -1068,7 +1173,7 @@ flexibility or more speed than a comprehension can provide.

The main difference from a JavaScript while is that the CoffeeScript + no

The main difference from a JavaScript while is that the CoffeeScript while can be used as a part of a larger expression -- while loops may return an array containing the computed result of each iteration.

  compileNode: (o) ->
     o.indent += TAB
@@ -1085,28 +1190,28 @@ return an array containing the computed result of each iteration.

body.expressions.unshift new If (new Parens @guard).invert(), new Literal "continue" else body = Block.wrap [new If @guard, body] if @guard - body = "\n#{ body.compile o, LEVEL_TOP }\n#{@tab}" - code = set + @tab + "while (#{ @condition.compile o, LEVEL_PAREN }) {#{body}}" + body = [].concat @makeCode("\n"), (body.compileToFragments o, LEVEL_TOP), @makeCode("\n#{@tab}") + answer = [].concat @makeCode(set + @tab + "while ("), @condition.compileToFragments(o, LEVEL_PAREN), + @makeCode(") {"), body, @makeCode("}") if @returns - code += "\n#{@tab}return #{rvar};" - code

Op

Simple Arithmetic and logical operations. Performs some conversion from + answer.push @makeCode "\n#{@tab}return #{rvar};" + answer

Op

Simple Arithmetic and logical operations. Performs some conversion from CoffeeScript operations into their JavaScript equivalents.

exports.Op = class Op extends Base
-  @create: (op, first, second, flip) ->
-    if op is 'in'
-      return new In first, second
+  constructor: (op, first, second, flip ) ->
+    return new In first, second if op is 'in'
     if op is 'do'
       return @generateDo first
     if op is 'new'
       return first.newInstance() if first instanceof Call and not first.do and not first.isNew
       first = new Parens first   if first instanceof Code and first.bound or first.do
-    return new Op op, first, second, flip
-
-  constructor: (op, @first, @second, flip ) ->
     @operator = CONVERSIONS[op] or op
-    @flip     = !!flip

The map of conversions from CoffeeScript to JavaScript symbols.

  CONVERSIONS =
+    @first    = first
+    @second   = second
+    @flip     = !!flip
+    return this

The map of conversions from CoffeeScript to JavaScript symbols.

  CONVERSIONS =
     '==': '==='
     '!=': '!=='
-    'of': 'in'

The map of invertible operators.

  INVERSIONS =
+    'of': 'in'

The map of invertible operators.

  INVERSIONS =
     '!==': '==='
     '===': '!=='
 
@@ -1118,7 +1223,7 @@ CoffeeScript operations into their JavaScript equivalents.

Am I capable of + not (@isUnary() and (@operator in ['+', '-'])) or @first.isComplex()

Am I capable of Python-style comparison chaining?

  isChainable: ->
     @operator in ['<', '>', '>=', '<=', '===', '!==']
 
@@ -1147,12 +1252,12 @@ CoffeeScript operations into their JavaScript equivalents.

In chains, there's no need to wrap bare obj literals in parens, + isChain = @isChainable() and @first.isChainable()

In chains, there's no need to wrap bare obj literals in parens, as the chained expression is wrapped.

    @first.front = @front unless isChain
     if @operator is 'delete' and o.scope.check(@first.unwrapAll().value)
       throw SyntaxError 'delete operand may not be argument or var'
@@ -1178,18 +1283,19 @@ as the chained expression is wrapped.

return @compileUnary o if @isUnary() return @compileChain o if isChain return @compileExistence o if @operator is '?' - code = @first.compile(o, LEVEL_OP) + ' ' + @operator + ' ' + - @second.compile(o, LEVEL_OP) - if o.level <= LEVEL_OP then code else "(#{code})"

Mimic Python's chained comparisons when multiple comparison operators are + answer = [].concat @first.compileToFragments(o, LEVEL_OP), @makeCode(' ' + @operator + ' '), + @second.compileToFragments(o, LEVEL_OP) + if o.level <= LEVEL_OP then answer else @wrapInBraces answer

Mimic Python's chained comparisons when multiple comparison operators are used sequentially. For example:

bin/coffee -e 'console.log 50 < 65 > 10'
 true
 
  compileChain: (o) ->
     [@first.second, shared] = @first.second.cache o
-    fst = @first.compile o, LEVEL_OP
-    code = "#{fst} #{if @invert then '&&' else '||'} #{ shared.compile o } #{@operator} #{ @second.compile o, LEVEL_OP }"
-    "(#{code})"
+    fst = @first.compileToFragments o, LEVEL_OP
+    fragments = fst.concat @makeCode(" #{if @invert then '&&' else '||'} "),
+      (shared.compileToFragments o), @makeCode(" #{@operator} "), (@second.compileToFragments o, LEVEL_OP)
+    @wrapInBraces fragments
 
   compileExistence: (o) ->
     if @first.isComplex()
@@ -1198,24 +1304,26 @@ true
     else
       fst = @first
       ref = fst
-    new If(new Existence(fst), ref, type: 'if').addElse(@second).compile o

Compile a unary Op.

  compileUnary: (o) ->
-    parts = [op = @operator]
+    new If(new Existence(fst), ref, type: 'if').addElse(@second).compileToFragments o

Compile a unary Op.

  compileUnary: (o) ->
+    parts = []
+    op = @operator
+    parts.push [@makeCode op]
     if op is '!' and @first instanceof Existence
       @first.negated = not @first.negated
-      return @first.compile o
+      return @first.compileToFragments o
     if o.level >= LEVEL_ACCESS
-      return (new Parens this).compile o
+      return (new Parens this).compileToFragments o
     plusMinus = op in ['+', '-']
-    parts.push ' ' if op in ['new', 'typeof', 'delete'] or
+    parts.push [@makeCode(' ')] if op in ['new', 'typeof', 'delete'] or
                       plusMinus and @first instanceof Op and @first.operator is op
     if (plusMinus && @first instanceof Op) or (op is 'new' and @first.isStatement o)
       @first = new Parens @first
-    parts.push @first.compile o, LEVEL_OP
+    parts.push @first.compileToFragments o, LEVEL_OP
     parts.reverse() if @flip
-    parts.join ''
+    @joinFragmentArrays parts, ''
 
   toString: (idt) ->
-    super idt, @constructor.name + ' ' + @operator

In

exports.In = class In extends Base
+    super idt, @constructor.name + ' ' + @operator

In

exports.In = class In extends Base
   constructor: (@object, @array) ->
 
   children: ['object', 'array']
@@ -1226,28 +1334,29 @@ true
     if @array instanceof Value and @array.isArray()
       for obj in @array.base.objects when obj instanceof Splat
         hasSplat = yes
-        break

compileOrTest only if we have an array literal with no splats

      return @compileOrTest o unless hasSplat
+        break

compileOrTest only if we have an array literal with no splats

      return @compileOrTest o unless hasSplat
     @compileLoopTest o
 
   compileOrTest: (o) ->
-    return "#{!!@negated}" if @array.base.objects.length is 0
+    return [@makeCode("#{!!@negated}")] if @array.base.objects.length is 0
     [sub, ref] = @object.cache o, LEVEL_OP
     [cmp, cnj] = if @negated then [' !== ', ' && '] else [' === ', ' || ']
-    tests = for item, i in @array.base.objects
-      (if i then ref else sub) + cmp + item.compile o, LEVEL_ACCESS
-    tests = tests.join cnj
-    if o.level < LEVEL_OP then tests else "(#{tests})"
+    tests = []
+    for item, i in @array.base.objects
+      if i then tests.push @makeCode cnj
+      tests = tests.concat (if i then ref else sub), @makeCode(cmp), item.compileToFragments(o, LEVEL_ACCESS)
+    if o.level < LEVEL_OP then tests else @wrapInBraces tests
 
   compileLoopTest: (o) ->
     [sub, ref] = @object.cache o, LEVEL_LIST
-    code = utility('indexOf') + ".call(#{ @array.compile o, LEVEL_LIST }, #{ref}) " +
-           if @negated then '< 0' else '>= 0'
-    return code if sub is ref
-    code = sub + ', ' + code
-    if o.level < LEVEL_LIST then code else "(#{code})"
+    fragments = [].concat @makeCode(utility('indexOf') + ".call("), @array.compileToFragments(o, LEVEL_LIST),
+      @makeCode(", "), ref, @makeCode(") " + if @negated then '< 0' else '>= 0')
+    return fragments if (fragmentsToText sub) is (fragmentsToText ref)
+    fragments = sub.concat @makeCode(', '), fragments
+    if o.level < LEVEL_LIST then fragments else @wrapInBraces fragments
 
   toString: (idt) ->
-    super idt, @constructor.name + if @negated then '!' else ''

Try

A classic try/catch/finally block.

exports.Try = class Try extends Base
+    super idt, @constructor.name + if @negated then '!' else ''

Try

A classic try/catch/finally block.

exports.Try = class Try extends Base
   constructor: (@attempt, @error, @recovery, @ensure) ->
 
   children: ['attempt', 'recovery', 'ensure']
@@ -1259,10 +1368,10 @@ true
   makeReturn: (res) ->
     @attempt  = @attempt .makeReturn res if @attempt
     @recovery = @recovery.makeReturn res if @recovery
-    this

Compilation is more or less as you would expect -- the finally clause + this

Compilation is more or less as you would expect -- the finally clause is optional, the catch is not.

  compileNode: (o) ->
     o.indent  += TAB
-    tryPart   = @attempt.compile o, LEVEL_TOP
+    tryPart   = @attempt.compileToFragments o, LEVEL_TOP
 
     catchPart = if @recovery
       if @error.isObject?()
@@ -1272,24 +1381,27 @@ is optional, the catch is not.

if @error.value in STRICT_PROSCRIBED throw SyntaxError "catch variable may not be \"#{@error.value}\"" o.scope.add @error.value, 'param' unless o.scope.check @error.value - " catch (#{ @error.compile o }) {\n#{ @recovery.compile o, LEVEL_TOP }\n#{@tab}}" + [].concat @makeCode(" catch ("), @error.compileToFragments(o), @makeCode(") {\n"), + @recovery.compileToFragments(o, LEVEL_TOP), @makeCode("\n#{@tab}}") else unless @ensure or @recovery - ' catch (_error) {}' + [@makeCode(' catch (_error) {}')] + else + [] - ensurePart = if @ensure then " finally {\n#{ @ensure.compile o, LEVEL_TOP }\n#{@tab}}" else '' + ensurePart = if @ensure then ([].concat @makeCode(" finally {\n"), (@ensure.compileToFragments o, LEVEL_TOP), @makeCode("\n#{@tab}}")) else [] - """#{@tab}try { - #{tryPart} - #{@tab}}#{ catchPart or '' }#{ensurePart}"""

Throw

Simple node to throw an exception.

exports.Throw = class Throw extends Base
+    [].concat @makeCode("#{@tab}try {\n"),
+      tryPart,
+      @makeCode("\n#{@tab}}"), catchPart, ensurePart

Throw

Simple node to throw an exception.

exports.Throw = class Throw extends Base
   constructor: (@expression) ->
 
   children: ['expression']
 
   isStatement: YES
-  jumps:       NO

A Throw is already a return, of sorts...

  makeReturn: THIS
+  jumps:       NO

A Throw is already a return, of sorts...

  makeReturn: THIS
 
   compileNode: (o) ->
-    @tab + "throw #{ @expression.compile o };"

Existence

Checks a variable for existence -- not null and not undefined. This is + [].concat @makeCode(@tab + "throw "), (@expression.compileToFragments o), @makeCode(";")

Existence

Checks a variable for existence -- not null and not undefined. This is similar to .nil? in Ruby, and avoids having to consult a JavaScript truth table.

exports.Existence = class Existence extends Base
   constructor: (@expression) ->
@@ -1304,8 +1416,8 @@ table.

if IDENTIFIER.test(code) and not o.scope.check code [cmp, cnj] = if @negated then ['===', '||'] else ['!==', '&&'] code = "typeof #{code} #{cmp} \"undefined\" #{cnj} #{code} #{cmp} null" - else

do not use strict equality here; it will break existing code

      code = "#{code} #{if @negated then '==' else '!='} null"
-    if o.level <= LEVEL_COND then code else "(#{code})"

Parens

An extra set of parentheses, specified explicitly in the source. At one time + else

do not use strict equality here; it will break existing code

      code = "#{code} #{if @negated then '==' else '!='} null"
+    [@makeCode(if o.level <= LEVEL_COND then code else "(#{code})")]

Parens

An extra set of parentheses, specified explicitly in the source. At one time we tried to clean up the results by detecting and removing redundant parentheses, but no longer -- you can put in as many as you please.

@@ -1321,11 +1433,11 @@ parentheses, but no longer -- you can put in as many as you please.

expr = @body.unwrap() if expr instanceof Value and expr.isAtomic() expr.front = @front - return expr.compile o - code = expr.compile o, LEVEL_PAREN + return expr.compileToFragments o + fragments = expr.compileToFragments o, LEVEL_PAREN bare = o.level < LEVEL_OP and (expr instanceof Op or expr instanceof Call or (expr instanceof For and expr.returns)) - if bare then code else "(#{code})"

For

CoffeeScript's replacement for the for loop is our array and object + if bare then fragments else @wrapInBraces fragments

For

CoffeeScript's replacement for the for loop is our array and object comprehensions, that compile into for loops here. They also act as an expression, able to return the result of each filtered iteration.

@@ -1345,7 +1457,7 @@ you can map and filter in a single pass.

throw SyntaxError 'cannot pattern match over range loops' if @range and @pattern @returns = false - children: ['body', 'source', 'guard', 'step']

Welcome to the hairiest method in all of CoffeeScript. Handles the inner + children: ['body', 'source', 'guard', 'step']

Welcome to the hairiest method in all of CoffeeScript. Handles the inner loop, filtering, stepping, and result saving for array, object, and range comprehensions. Some of the generated code can be shared in common, and some cannot.

  compileNode: (o) ->
@@ -1354,8 +1466,8 @@ some cannot.

< @returns = no if lastJumps and lastJumps instanceof Return source = if @range then @source.base else @source scope = o.scope - name = @name and @name.compile o, LEVEL_LIST - index = @index and @index.compile o, LEVEL_LIST + name = @name and (@name.compile o, LEVEL_LIST) + index = @index and (@index.compile o, LEVEL_LIST) scope.find(name) if name and not @pattern scope.find(index) if index rvar = scope.freeVariable 'results' if @returns @@ -1363,7 +1475,7 @@ some cannot.

< kvar = (@range and name) or index or ivar kvarAssign = if kvar isnt ivar then "#{kvar} = " else "" if @step and not @range - [step, stepVar] = @step.cache o, LEVEL_LIST + [step, stepVar] = @cacheToCodeFragments @step.cache o, LEVEL_LIST stepNum = stepVar.match SIMPLENUM name = ivar if @pattern varPart = '' @@ -1371,7 +1483,7 @@ some cannot.

< defPart = '' idt1 = @tab + TAB if @range - forPart = source.compile merge(o, {index: ivar, name, @step}) + forPartFragments = source.compileToFragments merge(o, {index: ivar, name, @step}) else svar = @source.compile o, LEVEL_LIST if (name or @own) and not IDENTIFIER.test svar @@ -1397,7 +1509,7 @@ some cannot.

< increment = "#{ivar} += #{stepVar}" else increment = "#{if kvar isnt ivar then "++#{ivar}" else "#{ivar}++"}" - forPart = "#{declare}; #{compare}; #{kvarAssign}#{increment}" + forPartFragments = [@makeCode("#{declare}; #{compare}; #{kvarAssign}#{increment}")] if @returns resultPart = "#{@tab}#{rvar} = [];\n" returnResult = "\n#{@tab}return #{rvar};" @@ -1409,19 +1521,20 @@ some cannot.

< body = Block.wrap [new If @guard, body] if @guard if @pattern body.expressions.unshift new Assign @name, new Literal "#{svar}[#{kvar}]" - defPart += @pluckDirectCall o, body - varPart = "\n#{idt1}#{namePart};" if namePart + defPartFragments = [].concat @makeCode(defPart), @pluckDirectCall(o, body) + varPart = "\n#{idt1}#{namePart};" if namePart if @object - forPart = "#{kvar} in #{svar}" + forPartFragments = [@makeCode("#{kvar} in #{svar}")] guardPart = "\n#{idt1}if (!#{utility 'hasProp'}.call(#{svar}, #{kvar})) continue;" if @own - body = body.compile merge(o, indent: idt1), LEVEL_TOP - body = '\n' + body + '\n' if body - """ - #{defPart}#{resultPart or ''}#{@tab}for (#{forPart}) {#{guardPart}#{varPart}#{body}#{@tab}}#{returnResult or ''} - """ + bodyFragments = body.compileToFragments merge(o, indent: idt1), LEVEL_TOP + if bodyFragments and (bodyFragments.length > 0) + bodyFragments = [].concat @makeCode("\n"), bodyFragments, @makeCode("\n") + [].concat defPartFragments, @makeCode("#{resultPart or ''}#{@tab}for ("), + forPartFragments, @makeCode(") {#{guardPart}#{varPart}"), bodyFragments, + @makeCode("#{@tab}}#{returnResult or ''}") pluckDirectCall: (o, body) -> - defs = '' + defs = [] for expr, idx in body.expressions expr = expr.unwrapAll() continue unless expr instanceof Call @@ -1433,12 +1546,12 @@ some cannot.

< val.properties[0].name?.value in ['call', 'apply']) fn = val.base?.unwrapAll() or val ref = new Literal o.scope.freeVariable 'fn' - base = Value.wrap ref + base = new Value ref if val.base [val.base, base] = [base, val] body.expressions[idx] = new Call base, expr.args - defs += @tab + new Assign(ref, fn).compile(o, LEVEL_TOP) + ';\n' - defs

Switch

A JavaScript switch statement. Converts into a returnable expression on-demand.

exports.Switch = class Switch extends Base
+      defs = defs.concat @makeCode(@tab), (new Assign(ref, fn).compileToFragments(o, LEVEL_TOP)), @makeCode(';\n')
+    defs

Switch

A JavaScript switch statement. Converts into a returnable expression on-demand.

exports.Switch = class Switch extends Base
   constructor: (@subject, @cases, @otherwise) ->
 
   children: ['subject', 'cases', 'otherwise']
@@ -1459,18 +1572,22 @@ some cannot.

< compileNode: (o) -> idt1 = o.indent + TAB idt2 = o.indent = idt1 + TAB - code = @tab + "switch (#{ @subject?.compile(o, LEVEL_PAREN) or false }) {\n" + fragments = [].concat @makeCode(@tab + "switch ("), + (if @subject then @subject.compileToFragments(o, LEVEL_PAREN) else @makeCode("false")), + @makeCode(") {\n") for [conditions, block], i in @cases for cond in flatten [conditions] cond = cond.invert() unless @subject - code += idt1 + "case #{ cond.compile o, LEVEL_PAREN }:\n" - code += body + '\n' if body = block.compile o, LEVEL_TOP + fragments = fragments.concat @makeCode(idt1 + "case "), cond.compileToFragments(o, LEVEL_PAREN), @makeCode(":\n") + fragments = fragments.concat body, @makeCode('\n') if (body = block.compileToFragments o, LEVEL_TOP).length > 0 break if i is @cases.length - 1 and not @otherwise expr = @lastNonComment block.expressions continue if expr instanceof Return or (expr instanceof Literal and expr.jumps() and expr.value isnt 'debugger') - code += idt2 + 'break;\n' - code += idt1 + "default:\n#{ @otherwise.compile o, LEVEL_TOP }\n" if @otherwise and @otherwise.expressions.length - code + @tab + '}'

If

If/else statements. Acts as an expression by pushing down requested returns + fragments.push cond.makeCode(idt2 + 'break;\n') + if @otherwise and @otherwise.expressions.length + fragments.push @makeCode(idt1 + "default:\n"), (@otherwise.compileToFragments o, LEVEL_TOP)..., @makeCode("\n") + fragments.push @makeCode @tab + '}' + fragments

If

If/else statements. Acts as an expression by pushing down requested returns to the last line of each clause.

Single-expression Ifs are compiled into conditional operators if possible, @@ -1484,13 +1601,13 @@ because ternaries are already proper expressions, and don't need conversion.

children: ['condition', 'body', 'elseBody'] bodyNode: -> @body?.unwrap() - elseBodyNode: -> @elseBody?.unwrap()

Rewrite a chain of Ifs to add a default case as the final else.

  addElse: (elseBody) ->
+  elseBodyNode: -> @elseBody?.unwrap()

Rewrite a chain of Ifs to add a default case as the final else.

  addElse: (elseBody) ->
     if @isChain
       @elseBodyNode().addElse elseBody
     else
       @isChain  = elseBody instanceof If
       @elseBody = @ensureBlock elseBody
-    this

The If only compiles into a statement if either of its bodies needs + this

The If only compiles into a statement if either of its bodies needs to be a statement. Otherwise a conditional operator is safe.

  isStatement: (o) ->
     o?.level is LEVEL_TOP or
       @bodyNode().isStatement(o) or @elseBodyNode()?.isStatement(o)
@@ -1507,37 +1624,38 @@ to be a statement. Otherwise a conditional operator is safe.

this ensureBlock: (node) -> - if node instanceof Block then node else new Block [node]

Compile the If as a regular if-else statement. Flattened chains + if node instanceof Block then node else new Block [node]

Compile the If as a regular if-else statement. Flattened chains force inner else bodies into statement form.

  compileStatement: (o) ->
     child    = del o, 'chainChild'
     exeq     = del o, 'isExistentialEquals'
 
     if exeq
-      return new If(@condition.invert(), @elseBodyNode(), type: 'if').compile o
+      return new If(@condition.invert(), @elseBodyNode(), type: 'if').compileToFragments o
 
-    cond     = @condition.compile o, LEVEL_PAREN
-    o.indent += TAB
-    body     = @ensureBlock(@body)
-    ifPart   = "if (#{cond}) {\n#{body.compile(o)}\n#{@tab}}"
-    ifPart   = @tab + ifPart unless child
+    indent   = o.indent + TAB
+    cond     = @condition.compileToFragments o, LEVEL_PAREN
+    body     = @ensureBlock(@body).compileToFragments merge o, {indent}
+    ifPart   = [].concat @makeCode("if ("), cond, @makeCode(") {\n"), body, @makeCode("\n#{@tab}}")
+    ifPart.unshift @makeCode @tab unless child
     return ifPart unless @elseBody
-    ifPart + ' else ' + if @isChain
-      o.indent = @tab
+    answer = ifPart.concat @makeCode(' else ')
+    if @isChain
       o.chainChild = yes
-      @elseBody.unwrap().compile o, LEVEL_TOP
+      answer = answer.concat @elseBody.unwrap().compileToFragments o, LEVEL_TOP
     else
-      "{\n#{ @elseBody.compile o, LEVEL_TOP }\n#{@tab}}"

Compile the If as a conditional operator.

  compileExpression: (o) ->
-    cond = @condition.compile o, LEVEL_COND
-    body = @bodyNode().compile o, LEVEL_LIST
-    alt  = if @elseBodyNode() then @elseBodyNode().compile(o, LEVEL_LIST) else 'void 0'
-    code = "#{cond} ? #{body} : #{alt}"
-    if o.level >= LEVEL_COND then "(#{code})" else code
+      answer = answer.concat @makeCode("{\n"), @elseBody.compileToFragments(merge(o, {indent}), LEVEL_TOP), @makeCode("\n#{@tab}}")
+    answer

Compile the If as a conditional operator.

  compileExpression: (o) ->
+    cond = @condition.compileToFragments o, LEVEL_COND
+    body = @bodyNode().compileToFragments o, LEVEL_LIST
+    alt  = if @elseBodyNode() then @elseBodyNode().compileToFragments(o, LEVEL_LIST) else [@makeCode('void 0')]
+    fragments = cond.concat @makeCode(" ? "), body, @makeCode(" : "), alt
+    if o.level >= LEVEL_COND then @wrapInBraces fragments else fragments
 
   unfoldSoak: ->
-    @soak and this

Faux-Nodes

+ @soak and this

Faux-Nodes

Faux-nodes are never created by the grammar, but are used during code -generation to generate other combinations of nodes.

Closure

A faux-node used to wrap an expressions body in a closure.

Closure =

Wrap the expressions body, unless it contains a pure statement, +generation to generate other combinations of nodes.

Closure

A faux-node used to wrap an expressions body in a closure.

Closure =

Wrap the expressions body, unless it contains a pure statement, in which case, no dice. If the body mentions this or arguments, then make sure that the closure wrapper preserves the original values.

  wrap: (expressions, statement, noReturn) ->
     return expressions if expressions.jumps()
@@ -1549,7 +1667,7 @@ then make sure that the closure wrapper preserves the original values.

meth = new Literal if mentionsArgs then 'apply' else 'call' args = [new Literal 'this'] args.push new Literal 'arguments' if mentionsArgs - func = Value.wrap func, [new Access meth] + func = new Value func, [new Access meth] func.noReturn = noReturn call = new Call func, args if statement then Block.wrap [call] else call @@ -1560,25 +1678,23 @@ then make sure that the closure wrapper preserves the original values.

literalThis: (node) -> (node instanceof Literal and node.value is 'this' and not node.asKey) or (node instanceof Code and node.bound) or - (node instanceof Call and node.isSuper)

Unfold a node's child if soak, then tuck the node under created If

unfoldSoak = (o, parent, name) ->
+      (node instanceof Call and node.isSuper)

Unfold a node's child if soak, then tuck the node under created If

unfoldSoak = (o, parent, name) ->
   return unless ifn = parent[name].unfoldSoak o
   parent[name] = ifn.body
-  ifn.body = Value.wrap parent
-  ifn

Constants

UTILITIES =

Correctly set up a prototype chain for inheritance, including a reference + ifn.body = new Value parent + ifn

Constants

UTILITIES =

Correctly set up a prototype chain for inheritance, including a reference to the superclass for super() calls, and copies of any static properties.

  extends: -> """
     function(child, parent) { for (var key in parent) { if (#{utility 'hasProp'}.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }
-  """

Create a function bound to the current value of "this".

  bind: -> '''
-    function(fn, me){ return function(){ return fn.apply(me, arguments); }; }
-  '''

Discover if an item is in an array.

  indexOf: -> """
+  """

Discover if an item is in an array.

  indexOf: -> """
     [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }
-  """

Shortcuts to speed up the lookup time for native functions.

  hasProp: -> '{}.hasOwnProperty'
-  slice  : -> '[].slice'

Levels indicate a node's position in the AST. Useful for knowing if + """

Shortcuts to speed up the lookup time for native functions.

  hasProp: -> '{}.hasOwnProperty'
+  slice  : -> '[].slice'

Levels indicate a node's position in the AST. Useful for knowing if parens are necessary or superfluous.

LEVEL_TOP    = 1  # ...;
 LEVEL_PAREN  = 2  # (...)
 LEVEL_LIST   = 3  # [...]
 LEVEL_COND   = 4  # ... ? x : y
 LEVEL_OP     = 5  # !...
-LEVEL_ACCESS = 6  # ...[0]

Tabs are two spaces for pretty printing.

TAB = '  '
+LEVEL_ACCESS = 6  # ...[0]

Tabs are two spaces for pretty printing.

TAB = '  '
 
 IDENTIFIER_STR = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*"
 IDENTIFIER = /// ^ #{IDENTIFIER_STR} $ ///
@@ -1597,7 +1713,7 @@ parens are necessary or superfluous.

| (#{IDENTIFIER_STR}) $ -///

Is a literal value a string?

IS_STRING = /^['"]/

Utility Functions

Helper for ensuring that utility functions are assigned at the top level.

utility = (name) ->
+///

Is a literal value a string?

IS_STRING = /^['"]/

Utility Functions

Helper for ensuring that utility functions are assigned at the top level.

utility = (name) ->
   ref = "__#{name}"
   Scope.root.assign ref, UTILITIES[name]()
   ref
diff --git a/documentation/docs/optparse.html b/documentation/docs/optparse.html
index 8fa84b43..d7158f6a 100644
--- a/documentation/docs/optparse.html
+++ b/documentation/docs/optparse.html
@@ -1,4 +1,4 @@
-      optparse.coffee           

optparse.coffee

A simple OptionParser class to parse option flags from the command-line. + optparse.coffee

optparse.coffee

A simple OptionParser class to parse option flags from the command-line. Use it like so:

parser  = new OptionParser switches, helpBanner
diff --git a/documentation/docs/repl.html b/documentation/docs/repl.html
index 9e545a9d..ddc70716 100644
--- a/documentation/docs/repl.html
+++ b/documentation/docs/repl.html
@@ -1,15 +1,15 @@
-      repl.coffee           

repl.coffee

vm = require 'vm'
+      repl.coffee           

repl.coffee

vm = require 'vm'
 nodeREPL = require 'repl'
 CoffeeScript = require './coffee-script'
 {merge} = require './helpers'
 
 replDefaults =
   prompt: 'coffee> ',
-  eval: (input, context, filename, cb) ->

XXX: multiline hack

    input = input.replace /\uFF00/g, '\n'

strip single-line comments

    input = input.replace /(^|[\r\n]+)(\s*)##?(?:[^#\r\n][^\r\n]*|)($|[\r\n])/, '$1$2$3'

empty command

    return cb null if /^\s*$/.test input

TODO: fix #1829: pass in-scope vars and avoid accidentally shadowing them by omitting those declarations

    try
+  eval: (input, context, filename, cb) ->

XXX: multiline hack

    input = input.replace /\uFF00/g, '\n'

strip single-line comments

    input = input.replace /(^|[\r\n]+)(\s*)##?(?:[^#\r\n][^\r\n]*|)($|[\r\n])/, '$1$2$3'

empty command

    return cb null if /^(\s*|\(\s*\))$/.test input

TODO: fix #1829: pass in-scope vars and avoid accidentally shadowing them by omitting those declarations

    try
       js = CoffeeScript.compile "_=(#{input}\n)", {filename, bare: yes}
+      cb null, vm.runInContext(js, context, filename)
     catch err
       cb err
-    cb null, vm.runInContext(js, context, filename)
 
 addMultilineHandler = (repl) ->
   {rli, inputStream, outputStream} = repl
diff --git a/documentation/docs/rewriter.html b/documentation/docs/rewriter.html
index 8dc8fdd2..e35e63e9 100644
--- a/documentation/docs/rewriter.html
+++ b/documentation/docs/rewriter.html
@@ -1,11 +1,14 @@
-      rewriter.coffee           
+ + + + @@ -383,8 +395,9 @@ Expressions

I'm fairly excited about this direction for the language, and am looking forward to writing (and more importantly, reading) more programs in this style. - As 1.5.0 is the first version of CoffeeScript that supports it, let us know - if you have any ideas for improving the feature. + More information about Literate CoffeeScript, including an + example program, + are available in this blog post.

@@ -458,7 +471,7 @@ Expressions <%= code_for('objects_reserved') %>

- + Lexical Scoping and Variable Safety The CoffeeScript compiler takes care to make sure that all of your variables are properly declared within lexical scope — you never need to write @@ -801,7 +814,7 @@ Expressions <%= code_for('patterns_and_splats', 'contents.join("")') %>

- + Function binding In JavaScript, the this keyword is dynamically scoped to mean the object that the current function is attached to. If you pass a function as @@ -950,6 +963,26 @@ Expressions code itself — not the cake task.

+

+ + Source Maps +

+ +

+ CoffeeScript 1.6.0 and above include support for generating source maps, + a way to tell your JavaScript engine what part of your CoffeeScript + program matches up with the code being evaluated. Browsers that support it + can automatically use source maps to show your original source code + in the debugger. To generate source maps alongside your JavaScript files, + pass the --map or -m flag to the compiler. +

+ +

+ For a full introduction to source maps, how they work, and how to hook + them up in your browser, read the + HTML5 Tutorial. +

+

"text/coffeescript" Script Tags @@ -1159,6 +1192,35 @@ Expressions Change Log

+

+ + 1.6.0 + March 5, 2013 + +

    +
  • + First release of source maps. Pass the + --map flag to the compiler, and off you go. Direct all your + thanks over to Jason Walton. +
  • +
  • + Fixed a 1.5.0 regression with multiple implicit calls against an + indented implicit object. Combinations of implicit function calls + and implicit objects should generally be parsed better now — + but it still isn't good style to nest them too heavily. +
  • +
  • + .coffee.md is now also supported as a Literate CoffeeScript + file extension, for existing tooling. + .litcoffee remains the canonical one. +
  • +
  • + Several minor fixes surrounding member properties, bound methods and + super in class declarations. +
  • +
+

+

1.5.0 diff --git a/documentation/js/aliases.js b/documentation/js/aliases.js index 05ac2e2a..b451f214 100644 --- a/documentation/js/aliases.js +++ b/documentation/js/aliases.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var volume, winner; if (ignition === true) { diff --git a/documentation/js/array_comprehensions.js b/documentation/js/array_comprehensions.js index 584d1569..bda50917 100644 --- a/documentation/js/array_comprehensions.js +++ b/documentation/js/array_comprehensions.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var courses, dish, food, foods, i, _i, _j, _k, _len, _len1, _len2, _ref; _ref = ['toast', 'cheese', 'wine']; diff --git a/documentation/js/block_comment.js b/documentation/js/block_comment.js index 305d882e..effcc774 100644 --- a/documentation/js/block_comment.js +++ b/documentation/js/block_comment.js @@ -1,6 +1,6 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 /* -CoffeeScript Compiler v1.5.0 +CoffeeScript Compiler v1.6.0 Released under the MIT License */ diff --git a/documentation/js/cake_tasks.js b/documentation/js/cake_tasks.js index d35908e1..50992351 100644 --- a/documentation/js/cake_tasks.js +++ b/documentation/js/cake_tasks.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var fs; fs = require('fs'); diff --git a/documentation/js/classes.js b/documentation/js/classes.js index 0052f189..65bdd6aa 100644 --- a/documentation/js/classes.js +++ b/documentation/js/classes.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var Animal, Horse, Snake, sam, tom, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; @@ -22,7 +22,7 @@ Snake = (function(_super) { __extends(Snake, _super); function Snake() { - Snake.__super__.constructor.apply(this, arguments); + return Snake.__super__.constructor.apply(this, arguments); } Snake.prototype.move = function() { @@ -39,7 +39,7 @@ Horse = (function(_super) { __extends(Horse, _super); function Horse() { - Horse.__super__.constructor.apply(this, arguments); + return Horse.__super__.constructor.apply(this, arguments); } Horse.prototype.move = function() { diff --git a/documentation/js/comparisons.js b/documentation/js/comparisons.js index d36f062b..e71f69dd 100644 --- a/documentation/js/comparisons.js +++ b/documentation/js/comparisons.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var cholesterol, healthy; cholesterol = 127; diff --git a/documentation/js/conditionals.js b/documentation/js/conditionals.js index a1e923c1..8c7e51a7 100644 --- a/documentation/js/conditionals.js +++ b/documentation/js/conditionals.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var date, mood; if (singing) { diff --git a/documentation/js/default_args.js b/documentation/js/default_args.js index da637040..15c5dd38 100644 --- a/documentation/js/default_args.js +++ b/documentation/js/default_args.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var fill; fill = function(container, liquid) { diff --git a/documentation/js/do.js b/documentation/js/do.js index af8facea..111fb000 100644 --- a/documentation/js/do.js +++ b/documentation/js/do.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var filename, _fn, _i, _len; _fn = function(filename) { diff --git a/documentation/js/embedded.js b/documentation/js/embedded.js index da4e54d4..16b50535 100644 --- a/documentation/js/embedded.js +++ b/documentation/js/embedded.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var hi; hi = function() { diff --git a/documentation/js/existence.js b/documentation/js/existence.js index dc9a20fa..0f1fcbba 100644 --- a/documentation/js/existence.js +++ b/documentation/js/existence.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var footprints, solipsism, speed; if ((typeof mind !== "undefined" && mind !== null) && (typeof world === "undefined" || world === null)) { diff --git a/documentation/js/expressions.js b/documentation/js/expressions.js index c307a390..7eb51ddf 100644 --- a/documentation/js/expressions.js +++ b/documentation/js/expressions.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var eldest, grade; grade = function(student) { diff --git a/documentation/js/expressions_assignment.js b/documentation/js/expressions_assignment.js index 679a9374..95898eb8 100644 --- a/documentation/js/expressions_assignment.js +++ b/documentation/js/expressions_assignment.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var one, six, three, two; six = (one = 1) + (two = 2) + (three = 3); diff --git a/documentation/js/expressions_comprehension.js b/documentation/js/expressions_comprehension.js index 5ea472c0..ddb2b782 100644 --- a/documentation/js/expressions_comprehension.js +++ b/documentation/js/expressions_comprehension.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var globals, name; globals = ((function() { diff --git a/documentation/js/expressions_try.js b/documentation/js/expressions_try.js index 5a2288f5..18b15892 100644 --- a/documentation/js/expressions_try.js +++ b/documentation/js/expressions_try.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 alert((function() { try { diff --git a/documentation/js/fat_arrow.js b/documentation/js/fat_arrow.js index deec4d34..48b30b1a 100644 --- a/documentation/js/fat_arrow.js +++ b/documentation/js/fat_arrow.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var Account; Account = function(customer, cart) { diff --git a/documentation/js/functions.js b/documentation/js/functions.js index 0a7e2761..c059331c 100644 --- a/documentation/js/functions.js +++ b/documentation/js/functions.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var cube, square; square = function(x) { diff --git a/documentation/js/heredocs.js b/documentation/js/heredocs.js index 36bed819..b17e2bc6 100644 --- a/documentation/js/heredocs.js +++ b/documentation/js/heredocs.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var html; html = "\n cup of coffeescript\n"; diff --git a/documentation/js/heregexes.js b/documentation/js/heregexes.js index f4cb22cb..a7c89913 100644 --- a/documentation/js/heregexes.js +++ b/documentation/js/heregexes.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var OPERATOR; OPERATOR = /^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>])\2=?|\?\.|\.{2,3})/; diff --git a/documentation/js/interpolation.js b/documentation/js/interpolation.js index 4464c3a2..972593bd 100644 --- a/documentation/js/interpolation.js +++ b/documentation/js/interpolation.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var author, quote, sentence; author = "Wittgenstein"; diff --git a/documentation/js/multiple_return_values.js b/documentation/js/multiple_return_values.js index 74cb61f0..e493efa2 100644 --- a/documentation/js/multiple_return_values.js +++ b/documentation/js/multiple_return_values.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var city, forecast, temp, weatherReport, _ref; weatherReport = function(location) { diff --git a/documentation/js/object_comprehensions.js b/documentation/js/object_comprehensions.js index 47f9d108..929a6e4f 100644 --- a/documentation/js/object_comprehensions.js +++ b/documentation/js/object_comprehensions.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var age, ages, child, yearsOld; yearsOld = { diff --git a/documentation/js/object_extraction.js b/documentation/js/object_extraction.js index 627c469f..1a13d98e 100644 --- a/documentation/js/object_extraction.js +++ b/documentation/js/object_extraction.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var city, futurists, name, street, _ref, _ref1; futurists = { diff --git a/documentation/js/objects_and_arrays.js b/documentation/js/objects_and_arrays.js index 4aff9bf2..d9f9b90e 100644 --- a/documentation/js/objects_and_arrays.js +++ b/documentation/js/objects_and_arrays.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var bitlist, kids, singers, song; song = ["do", "re", "mi", "fa", "so"]; diff --git a/documentation/js/objects_reserved.js b/documentation/js/objects_reserved.js index 9f285fac..4d95b2cf 100644 --- a/documentation/js/objects_reserved.js +++ b/documentation/js/objects_reserved.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 $('.account').attr({ "class": 'active' diff --git a/documentation/js/overview.js b/documentation/js/overview.js index 95e59623..1503db3d 100644 --- a/documentation/js/overview.js +++ b/documentation/js/overview.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var cubes, list, math, num, number, opposite, race, square, __slice = [].slice; diff --git a/documentation/js/parallel_assignment.js b/documentation/js/parallel_assignment.js index 24cc1a1d..414fb9cd 100644 --- a/documentation/js/parallel_assignment.js +++ b/documentation/js/parallel_assignment.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var theBait, theSwitch, _ref; theBait = 1000; diff --git a/documentation/js/patterns_and_splats.js b/documentation/js/patterns_and_splats.js index 85c90fa6..e18f9c6f 100644 --- a/documentation/js/patterns_and_splats.js +++ b/documentation/js/patterns_and_splats.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var close, contents, open, tag, _i, _ref, __slice = [].slice; diff --git a/documentation/js/prototypes.js b/documentation/js/prototypes.js index d77b9bde..6ce53e9a 100644 --- a/documentation/js/prototypes.js +++ b/documentation/js/prototypes.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 String.prototype.dasherize = function() { return this.replace(/_/g, "-"); diff --git a/documentation/js/range_comprehensions.js b/documentation/js/range_comprehensions.js index c23b1748..a3786ff0 100644 --- a/documentation/js/range_comprehensions.js +++ b/documentation/js/range_comprehensions.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var countdown, num; countdown = (function() { diff --git a/documentation/js/scope.js b/documentation/js/scope.js index 62b634fa..07583ea5 100644 --- a/documentation/js/scope.js +++ b/documentation/js/scope.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var changeNumbers, inner, outer; outer = 1; diff --git a/documentation/js/slices.js b/documentation/js/slices.js index 7b79b347..80a2a874 100644 --- a/documentation/js/slices.js +++ b/documentation/js/slices.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var copy, end, middle, numbers, start; numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]; diff --git a/documentation/js/soaks.js b/documentation/js/soaks.js index c363b600..2296e8f9 100644 --- a/documentation/js/soaks.js +++ b/documentation/js/soaks.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var zip, _ref; zip = typeof lottery.drawWinner === "function" ? (_ref = lottery.drawWinner().address) != null ? _ref.zipcode : void 0 : void 0; diff --git a/documentation/js/splats.js b/documentation/js/splats.js index f5cb2c70..24ecba65 100644 --- a/documentation/js/splats.js +++ b/documentation/js/splats.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var awardMedals, contenders, gold, rest, silver, __slice = [].slice; diff --git a/documentation/js/splices.js b/documentation/js/splices.js index f38e6858..cc283fc2 100644 --- a/documentation/js/splices.js +++ b/documentation/js/splices.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var numbers, _ref; numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; diff --git a/documentation/js/strings.js b/documentation/js/strings.js index 3b33ead2..e09658e7 100644 --- a/documentation/js/strings.js +++ b/documentation/js/strings.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var mobyDick; mobyDick = "Call me Ishmael. Some years ago -- never mind how long precisely -- having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world..."; diff --git a/documentation/js/switch.js b/documentation/js/switch.js index 99c7a39c..aa7eb368 100644 --- a/documentation/js/switch.js +++ b/documentation/js/switch.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 switch (day) { case "Mon": diff --git a/documentation/js/try.js b/documentation/js/try.js index 1a1878e2..5e98c129 100644 --- a/documentation/js/try.js +++ b/documentation/js/try.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 try { allHellBreaksLoose(); diff --git a/documentation/js/while.js b/documentation/js/while.js index a94f730f..703e7f98 100644 --- a/documentation/js/while.js +++ b/documentation/js/while.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 var lyrics, num; if (this.studyingEconomics) { diff --git a/extras/coffee-script.js b/extras/coffee-script.js index d8ab2627..57a6f8aa 100644 --- a/extras/coffee-script.js +++ b/extras/coffee-script.js @@ -1,11 +1,11 @@ /** - * CoffeeScript Compiler v1.5.0 + * CoffeeScript Compiler v1.6.0 * http://coffeescript.org * * Copyright 2011, Jeremy Ashkenas * Released under the MIT License */ -(function(root){var CoffeeScript=function(){function require(t){return require[t]}return require["./helpers"]=new function(){var t=this;(function(){var e,n,i,r;t.starts=function(t,e,n){return e===t.substr(n,e.length)},t.ends=function(t,e,n){var i;return i=e.length,e===t.substr(t.length-i-(n||0),i)},t.compact=function(t){var e,n,i,r;for(r=[],n=0,i=t.length;i>n;n++)e=t[n],e&&r.push(e);return r},t.count=function(t,e){var n,i;if(n=i=0,!e.length)return 1/0;for(;i=1+t.indexOf(e,i);)n++;return n},t.merge=function(t,e){return n(n({},t),e)},n=t.extend=function(t,e){var n,i;for(n in e)i=e[n],t[n]=i;return t},t.flatten=i=function(t){var e,n,r,s;for(n=[],r=0,s=t.length;s>r;r++)e=t[r],e instanceof Array?n=n.concat(i(e)):n.push(e);return n},t.del=function(t,e){var n;return n=t[e],delete t[e],n},t.last=function(t,e){return t[t.length-(e||0)-1]},t.some=null!=(r=Array.prototype.some)?r:function(t){var e,n,i;for(n=0,i=this.length;i>n;n++)if(e=this[n],t(e))return!0;return!1},e=function(t,e){return e?{first_line:t.first_line,first_column:t.first_column,last_line:e.last_line,last_column:e.last_column}:t},t.addLocationDataFn=function(t,n){return function(i){return"object"==typeof i&&i.updateLocationDataIfMissing&&i.updateLocationDataIfMissing(e(t,n)),i}},t.locationDataToString=function(t){var e;return"2"in t&&"first_line"in t[2]?e=t[2]:"first_line"in t&&(e=t),e?""+(e.first_line+1)+":"+(e.first_column+1)+"-"+(""+(e.last_line+1)+":"+(e.last_column+1)):"No location data"}}).call(this)},require["./rewriter"]=new function(){var t=this;(function(){var e,n,i,r,s,a,o,c,h,l,p,u,d,f,m,b,y,v,g=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1},w=[].slice;for(t.Rewriter=function(){function t(){}return t.prototype.rewrite=function(t){return this.tokens=t,this.removeLeadingNewlines(),this.removeMidExpressionNewlines(),this.closeOpenCalls(),this.closeOpenIndexes(),this.addImplicitIndentation(),this.tagPostfixConditionals(),this.addImplicitBraces(),this.addImplicitParentheses(),this.addLocationDataToGeneratedTokens(),this.tokens},t.prototype.scanTokens=function(t){var e,n,i;for(i=this.tokens,e=0;n=i[e];)e+=t.call(this,n,e,i);return!0},t.prototype.detectEnd=function(t,e,n){var s,a,o,c,h;for(o=this.tokens,s=0;a=o[t];){if(0===s&&e.call(this,a,t))return n.call(this,a,t);if(!a||0>s)return n.call(this,a,t-1);c=a[0],g.call(r,c)>=0?s+=1:(h=a[0],g.call(i,h)>=0&&(s-=1)),t+=1}return t-1},t.prototype.removeLeadingNewlines=function(){var t,e,n,i,r;for(r=this.tokens,t=n=0,i=r.length;i>n&&(e=r[t][0],"TERMINATOR"===e);t=++n);return t?this.tokens.splice(0,t):void 0},t.prototype.removeMidExpressionNewlines=function(){return this.scanTokens(function(t,e,i){var r;return"TERMINATOR"===t[0]&&(r=this.tag(e+1),g.call(n,r)>=0)?(i.splice(e,1),0):1})},t.prototype.closeOpenCalls=function(){var t,e;return e=function(t,e){var n;return")"===(n=t[0])||"CALL_END"===n||"OUTDENT"===t[0]&&")"===this.tag(e-1)},t=function(t,e){return this.tokens["OUTDENT"===t[0]?e-1:e][0]="CALL_END"},this.scanTokens(function(n,i){return"CALL_START"===n[0]&&this.detectEnd(i+1,e,t),1})},t.prototype.closeOpenIndexes=function(){var t,e;return e=function(t){var e;return"]"===(e=t[0])||"INDEX_END"===e},t=function(t){return t[0]="INDEX_END"},this.scanTokens(function(n,i){return"INDEX_START"===n[0]&&this.detectEnd(i+1,e,t),1})},t.prototype.addImplicitBraces=function(){var t,e,n,s,a,c,h,l;return s=[],a=null,l=null,n=!0,c=0,h=0,e=function(t,e){var i,r,s,a,c,u;return c=this.tokens.slice(e+1,+(e+3)+1||9e9),i=c[0],a=c[1],s=c[2],"HERECOMMENT"===(null!=i?i[0]:void 0)?!1:(r=t[0],g.call(p,r)>=0&&(n=!1),("TERMINATOR"===r||"OUTDENT"===r||g.call(o,r)>=0&&n&&!(1===e-h))&&(!l&&","!==this.tag(e-1)||!(":"===(null!=a?a[0]:void 0)||"@"===(null!=i?i[0]:void 0)&&":"===(null!=s?s[0]:void 0)))||","===r&&i&&"IDENTIFIER"!==(u=i[0])&&"NUMBER"!==u&&"STRING"!==u&&"@"!==u&&"TERMINATOR"!==u&&"OUTDENT"!==u)},t=function(t,e){var n;return n=this.generate("}","}"),this.tokens.splice(e,0,n)},this.scanTokens(function(o,c,u){var d,f,m,b,y,v,w,k;if(w=b=o[0],g.call(r,w)>=0)return s.push(["INDENT"===b&&"{"===this.tag(c-1)?"{":b,c]),1;if(g.call(i,b)>=0)return a=s.pop(),1;if(":"!==b||":"!==(d=this.tag(c-2))&&"{"===(null!=(k=s[s.length-1])?k[0]:void 0))return 1;for(n=!0,h=c+1,s.push(["{"]),f="@"===d?c-2:c-1;"HERECOMMENT"===this.tag(f-2);)f-=2;return m=this.tag(f-1),l=!m||g.call(p,m)>=0,v=new String("{"),v.generated=!0,y=this.generate("{",v),u.splice(f,0,y),this.detectEnd(c+2,e,t),2})},t.prototype.addImplicitParentheses=function(){var t,e,n,i,r,l;return i=l=r=!1,e=null,n=function(t,n){var i,a,c,h;return a=t[0],!l&&t.fromThen?!0:(("IF"===a||"ELSE"===a||"CATCH"===a||"->"===a||"=>"===a||"CLASS"===a)&&(l=!0),("IF"===a||"ELSE"===a||"SWITCH"===a||"TRY"===a||"="===a)&&(r=!0),"."!==a&&"?."!==a&&"::"!==a||"OUTDENT"!==this.tag(n-1)?!t.generated&&","!==this.tag(n-1)&&(g.call(o,a)>=0||"INDENT"===a&&!r)&&("INDENT"!==a||"CLASS"!==(c=this.tag(n-2))&&"EXTENDS"!==c&&(h=this.tag(n-1),0>g.call(s,h))&&!(e===n-1&&(i=this.tokens[n+1])&&i.generated&&"{"===i[0])):!0)},t=function(t,e){return this.tokens.splice(e,0,this.generate("CALL_END",")"))},this.scanTokens(function(s,o,u){var d,f,m,b,y,v,w,k;return y=s[0],("CLASS"===y||"IF"===y||"FOR"===y||"WHILE"===y)&&(i=!0),v=u.slice(o-1,+(o+1)+1||9e9),b=v[0],f=v[1],m=v[2],d=!i&&"INDENT"===y&&m&&m.generated&&"{"===m[0]&&b&&(w=b[0],g.call(c,w)>=0),l=!1,r=!1,g.call(p,y)>=0&&(i=!1),b&&!b.spaced&&"?"===y&&(s.call=!0),s.fromThen?1:d||(null!=b?b.spaced:void 0)&&(b.call||(k=b[0],g.call(c,k)>=0))&&(g.call(a,y)>=0||!s.spaced&&!s.newLine&&g.call(h,y)>=0)?(e=o,u.splice(o,0,this.generate("CALL_START","(",s[2])),this.detectEnd(o+1,n,t),"?"===b[0]&&(b[0]="FUNC_EXIST"),2):1})},t.prototype.addLocationDataToGeneratedTokens=function(){return this.scanTokens(function(t,e,n){var i,r;return r=t[0],!t.generated&&!t.explicit||t[2]||(e>0?(i=n[e-1],t[2]={first_line:i[2].last_line,first_column:i[2].last_column,last_line:i[2].last_line,last_column:i[2].last_column}):t[2]={first_line:0,first_column:0,last_line:0,last_column:0}),1})},t.prototype.addImplicitIndentation=function(){var t,e,n,i,r;return r=n=i=null,e=function(t){var e;return";"!==t[1]&&(e=t[0],g.call(u,e)>=0)&&!("ELSE"===t[0]&&"IF"!==r&&"THEN"!==r)},t=function(t,e){return this.tokens.splice(","===this.tag(e-1)?e-1:e,0,i)},this.scanTokens(function(s,a,o){var c,h,l;return c=s[0],"TERMINATOR"===c&&"THEN"===this.tag(a+1)?(o.splice(a,1),0):"ELSE"===c&&"OUTDENT"!==this.tag(a-1)?(o.splice.apply(o,[a,0].concat(w.call(this.indentation(s)))),2):"CATCH"!==c||"OUTDENT"!==(h=this.tag(a+2))&&"TERMINATOR"!==h&&"FINALLY"!==h?g.call(d,c)>=0&&"INDENT"!==this.tag(a+1)&&("ELSE"!==c||"IF"!==this.tag(a+1))?(r=c,l=this.indentation(s,!0),n=l[0],i=l[1],"THEN"===r&&(n.fromThen=!0),o.splice(a+1,0,n),this.detectEnd(a+2,e,t),"THEN"===c&&o.splice(a,1),1):1:(o.splice.apply(o,[a+2,0].concat(w.call(this.indentation(s)))),4)})},t.prototype.tagPostfixConditionals=function(){var t,e,n;return n=null,e=function(t){var e;return"TERMINATOR"===(e=t[0])||"INDENT"===e},t=function(t){return"INDENT"!==t[0]||t.generated&&!t.fromThen?n[0]="POST_"+n[0]:void 0},this.scanTokens(function(i,r){return"IF"!==i[0]?1:(n=i,this.detectEnd(r+1,e,t),1)})},t.prototype.indentation=function(t,e){var n,i;return null==e&&(e=!1),n=["INDENT",2],i=["OUTDENT",2],e&&(n.generated=i.generated=!0),e||(n.explicit=i.explicit=!0),[n,i]},t.prototype.generate=function(t,e){var n;return n=[t,e],n.generated=!0,n},t.prototype.tag=function(t){var e;return null!=(e=this.tokens[t])?e[0]:void 0},t}(),e=[["(",")"],["[","]"],["{","}"],["INDENT","OUTDENT"],["CALL_START","CALL_END"],["PARAM_START","PARAM_END"],["INDEX_START","INDEX_END"]],t.INVERSES=l={},r=[],i=[],b=0,y=e.length;y>b;b++)v=e[b],f=v[0],m=v[1],r.push(l[m]=f),i.push(l[f]=m);n=["CATCH","WHEN","ELSE","FINALLY"].concat(i),c=["IDENTIFIER","SUPER",")","CALL_END","]","INDEX_END","@","THIS"],a=["IDENTIFIER","NUMBER","STRING","JS","REGEX","NEW","PARAM_START","CLASS","IF","TRY","SWITCH","THIS","BOOL","NULL","UNDEFINED","UNARY","SUPER","@","->","=>","[","(","{","--","++"],h=["+","-"],s=["->","=>","{","[",","],o=["POST_IF","FOR","WHILE","UNTIL","WHEN","BY","LOOP","TERMINATOR"],d=["ELSE","->","=>","TRY","FINALLY","THEN"],u=["TERMINATOR","CATCH","FINALLY","ELSE","OUTDENT","LEADING_WHEN"],p=["TERMINATOR","INDENT","OUTDENT"]}).call(this)},require["./lexer"]=new function(){var t=this;(function(){var e,n,i,r,s,a,o,c,h,l,p,u,d,f,m,b,y,v,g,w,k,E,L,N,T,x,D,S,F,R,I,A,$,_,C,O,j,M,P,V,U,B,H,q,G,W,X,Y,K,z,J,Z=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};z=require("./rewriter"),j=z.Rewriter,v=z.INVERSES,J=require("./helpers"),G=J.count,K=J.starts,q=J.compact,X=J.last,Y=J.locationDataToString,t.Lexer=x=function(){function t(){}return t.prototype.tokenize=function(t,e){var n,i,r,s;for(null==e&&(e={}),this.literate=e.literate,t=this.clean(t),this.indent=0,this.indebt=0,this.outdebt=0,this.indents=[],this.ends=[],this.tokens=[],this.chunkLine=e.line||0,this.chunkColumn=e.column||0,i=0;this.chunk=t.slice(i);)n=this.identifierToken()||this.commentToken()||this.whitespaceToken()||this.lineToken()||this.heredocToken()||this.stringToken()||this.numberToken()||this.regexToken()||this.jsToken()||this.literalToken(),s=this.getLineAndColumnFromChunk(n),this.chunkLine=s[0],this.chunkColumn=s[1],i+=n;return this.closeIndentation(),(r=this.ends.pop())&&this.error("missing "+r),e.rewrite===!1?this.tokens:(new j).rewrite(this.tokens)},t.prototype.clean=function(t){var n,i,r;return t.charCodeAt(0)===e&&(t=t.slice(1)),H.test(t)&&(t="\n"+t),t=t.replace(/\r/g,"").replace(U,""),this.literate&&(i=function(){var e,i,s,a;for(s=t.split("\n"),a=[],e=0,i=s.length;i>e;e++)n=s[e],(r=N.exec(n))?a.push(n.slice(r[0].length)):a.push("# "+n);return a}(),t=i.join("\n")),t},t.prototype.identifierToken=function(){var t,e,n,i,r,c,h,l,p,u,d,f,m,y;return(h=b.exec(this.chunk))?(c=h[0],i=h[1],t=h[2],r=i.length,l=void 0,"own"===i&&"FOR"===this.tag()?(this.token("OWN",i),i.length):(n=t||(p=X(this.tokens))&&("."===(f=p[0])||"?."===f||"::"===f||!p.spaced&&"@"===p[0]),u="IDENTIFIER",!n&&(Z.call(k,i)>=0||Z.call(o,i)>=0)&&(u=i.toUpperCase(),"WHEN"===u&&(m=this.tag(),Z.call(E,m)>=0)?u="LEADING_WHEN":"FOR"===u?this.seenFor=!0:"UNLESS"===u?u="IF":Z.call(B,u)>=0?u="UNARY":Z.call(C,u)>=0&&("INSTANCEOF"!==u&&this.seenFor?(u="FOR"+u,this.seenFor=!1):(u="RELATION","!"===this.value()&&(l=this.tokens.pop(),i="!"+i)))),Z.call(w,i)>=0&&(n?(u="IDENTIFIER",i=new String(i),i.reserved=!0):Z.call(O,i)>=0&&this.error('reserved word "'+i+'"')),n||(Z.call(s,i)>=0&&(i=a[i]),u=function(){switch(i){case"!":return"UNARY";case"==":case"!=":return"COMPARE";case"&&":case"||":return"LOGIC";case"true":case"false":return"BOOL";case"break":case"continue":return"STATEMENT";default:return u}}()),d=this.token(u,i,0,r),l&&(y=[l[2].first_line,l[2].first_column],d[2].first_line=y[0],d[2].first_column=y[1]),t&&(e=c.lastIndexOf(":"),this.token(":",":",e,t.length)),c.length)):0},t.prototype.numberToken=function(){var t,e,n,i,r;return(n=A.exec(this.chunk))?(i=n[0],/^0[BOX]/.test(i)?this.error("radix prefix '"+i+"' must be lowercase"):/E/.test(i)&&!/^0x/.test(i)?this.error("exponential notation '"+i+"' must be indicated with a lowercase 'e'"):/^0\d*[89]/.test(i)?this.error("decimal literal '"+i+"' must not be prefixed with '0'"):/^0\d+/.test(i)&&this.error("octal literal '"+i+"' must be prefixed with '0o'"),e=i.length,(r=/^0o([0-7]+)/.exec(i))&&(i="0x"+parseInt(r[1],8).toString(16)),(t=/^0b([01]+)/.exec(i))&&(i="0x"+parseInt(t[1],2).toString(16)),this.token("NUMBER",i,0,e),e):0},t.prototype.stringToken=function(){var t,e,n;switch(this.chunk.charAt(0)){case"'":if(!(t=P.exec(this.chunk)))return 0;n=t[0],this.token("STRING",n.replace(S,"\\\n"),0,n.length);break;case'"':if(!(n=this.balancedString(this.chunk,'"')))return 0;n.indexOf("#{",1)>0?this.interpolateString(n.slice(1,-1),{strOffset:1,lexedLength:n.length}):this.token("STRING",this.escapeLines(n,0,n.length));break;default:return 0}return(e=/^(?:\\.|[^\\])*\\(?:0[0-7]|[1-7])/.test(n))&&this.error("octal escape sequences "+n+" are not allowed"),n.length},t.prototype.heredocToken=function(){var t,e,n,i;return(n=p.exec(this.chunk))?(e=n[0],i=e.charAt(0),t=this.sanitizeHeredoc(n[2],{quote:i,indent:null}),'"'===i&&t.indexOf("#{")>=0?this.interpolateString(t,{heredoc:!0,strOffset:3,lexedLength:e.length}):this.token("STRING",this.makeString(t,i,!0),0,e.length),e.length):0},t.prototype.commentToken=function(){var t,e,n;return(n=this.chunk.match(c))?(t=n[0],e=n[1],e&&this.token("HERECOMMENT",this.sanitizeHeredoc(e,{herecomment:!0,indent:Array(this.indent+1).join(" ")}),0,t.length),t.length):0},t.prototype.jsToken=function(){var t,e;return"`"===this.chunk.charAt(0)&&(t=g.exec(this.chunk))?(this.token("JS",(e=t[0]).slice(1,-1),0,e.length),e.length):0},t.prototype.regexToken=function(){var t,e,n,i,r,s,a;return"/"!==this.chunk.charAt(0)?0:(n=f.exec(this.chunk))?e=this.heregexToken(n):(i=X(this.tokens),i&&(s=i[0],Z.call(i.spaced?R:I,s)>=0)?0:(n=_.exec(this.chunk))?(a=n,n=a[0],r=a[1],t=a[2],"/*"===r.slice(0,2)&&this.error("regular expressions cannot begin with `*`"),"//"===r&&(r="/(?:)/"),this.token("REGEX",""+r+t,0,n.length),n.length):0)},t.prototype.heregexToken=function(t){var e,n,i,r,s,a,o,c,h,l,p,u,d,f,b,y;if(r=t[0],e=t[1],n=t[2],0>e.indexOf("#{"))return o=e.replace(m,"").replace(/\//g,"\\/"),o.match(/^\*/)&&this.error("regular expressions cannot begin with `*`"),this.token("REGEX","/"+(o||"(?:)")+"/"+n,0,r.length),r.length;for(this.token("IDENTIFIER","RegExp",0,0),this.token("CALL_START","(",0,0),l=[],f=this.interpolateString(e,{regex:!0}),u=0,d=f.length;d>u;u++){if(h=f[u],c=h[0],p=h[1],"TOKENS"===c)l.push.apply(l,p);else if("NEOSTRING"===c){if(!(p=p.replace(m,"")))continue;p=p.replace(/\\/g,"\\\\"),h[0]="STRING",h[1]=this.makeString(p,'"',!0),l.push(h)}else this.error("Unexpected "+c);a=X(this.tokens),s=["+","+"],s[2]=a[2],l.push(s)}return l.pop(),"STRING"!==(null!=(b=l[0])?b[0]:void 0)&&(this.token("STRING",'""',0,0),this.token("+","+",0,0)),(y=this.tokens).push.apply(y,l),n&&(i=r.lastIndexOf(n),this.token(",",",",i,0),this.token("STRING",'"'+n+'"',i,n.length)),this.token(")",")",r.length-1,0),r.length},t.prototype.lineToken=function(){var t,e,n,i,r;if(!(n=F.exec(this.chunk)))return 0;if(e=n[0],this.seenFor=!1,r=e.length-1-e.lastIndexOf("\n"),i=this.unfinished(),r-this.indebt===this.indent)return i?this.suppressNewlines():this.newlineToken(0),e.length;if(r>this.indent){if(i)return this.indebt=r-this.indent,this.suppressNewlines(),e.length;t=r-this.indent+this.outdebt,this.token("INDENT",t,0,e.length),this.indents.push(t),this.ends.push("OUTDENT"),this.outdebt=this.indebt=0}else this.indebt=0,this.outdentToken(this.indent-r,i,e.length);return this.indent=r,e.length},t.prototype.outdentToken=function(t,e,n){for(var i,r;t>0;)r=this.indents.length-1,void 0===this.indents[r]?t=0:this.indents[r]===this.outdebt?(t-=this.outdebt,this.outdebt=0):this.indents[r]=0)&&this.error('reserved word "'+this.value()+"\" can't be assigned"),"||"===(o=e[1])||"&&"===o))return e[0]="COMPOUND_ASSIGN",e[1]+="=",s.length;if(";"===s)this.seenFor=!1,n="TERMINATOR";else if(Z.call(D,s)>=0)n="MATH";else if(Z.call(h,s)>=0)n="COMPARE";else if(Z.call(l,s)>=0)n="COMPOUND_ASSIGN";else if(Z.call(B,s)>=0)n="UNARY";else if(Z.call(M,s)>=0)n="SHIFT";else if(Z.call(T,s)>=0||"?"===s&&(null!=e?e.spaced:void 0))n="LOGIC";else if(e&&!e.spaced)if("("===s&&(c=e[0],Z.call(i,c)>=0))"?"===e[0]&&(e[0]="FUNC_EXIST"),n="CALL_START";else if("["===s&&(p=e[0],Z.call(y,p)>=0))switch(n="INDEX_START",e[0]){case"?":e[0]="INDEX_SOAK"}switch(s){case"(":case"{":case"[":this.ends.push(v[s]);break;case")":case"}":case"]":this.pair(s)}return this.token(n,s),s.length},t.prototype.sanitizeHeredoc=function(t,e){var n,i,r,s,a;if(r=e.indent,i=e.herecomment){if(u.test(t)&&this.error('block comment cannot contain "*/", starting'),0>t.indexOf("\n"))return t}else for(;s=d.exec(t);)n=s[1],(null===r||(a=n.length)>0&&r.length>a)&&(r=n);return r&&(t=t.replace(RegExp("\\n"+r,"g"),"\n")),i||(t=t.replace(/^\n/,"")),t},t.prototype.tagParameters=function(){var t,e,n,i;if(")"!==this.tag())return this;for(e=[],i=this.tokens,t=i.length,i[--t][0]="PARAM_END";n=i[--t];)switch(n[0]){case")":e.push(n);break;case"(":case"CALL_START":if(!e.length)return"("===n[0]?(n[0]="PARAM_START",this):this;e.pop()}return this},t.prototype.closeIndentation=function(){return this.outdentToken(this.indent)},t.prototype.balancedString=function(t,e){var n,i,r,s,a,o,c,h;for(n=0,o=[e],i=c=1,h=t.length;h>=1?h>c:c>h;i=h>=1?++c:--c)if(n)--n;else{switch(r=t.charAt(i)){case"\\":++n;continue;case e:if(o.pop(),!o.length)return t.slice(0,+i+1||9e9);e=o[o.length-1];continue}"}"!==e||'"'!==r&&"'"!==r?"}"===e&&"/"===r&&(s=f.exec(t.slice(i))||_.exec(t.slice(i)))?n+=s[0].length-1:"}"===e&&"{"===r?o.push(e="}"):'"'===e&&"#"===a&&"{"===r&&o.push(e="}"):o.push(e=r),a=r}return this.error("missing "+o.pop()+", starting")},t.prototype.interpolateString=function(e,n){var i,r,s,a,o,c,h,l,p,u,d,f,m,b,y,v,g,w,k,E,L,N,T,x,D,S,F;for(null==n&&(n={}),s=n.heredoc,g=n.regex,m=n.offsetInChunk,w=n.strOffset,p=n.lexedLength,m=m||0,w=w||0,p=p||e.length,s&&e.length>0&&"\n"===e[0]&&(e=e.slice(1),w++),L=[],b=0,a=-1;l=e.charAt(a+=1);)"\\"!==l?"#"===l&&"{"===e.charAt(a+1)&&(r=this.balancedString(e.slice(a+1),"}"))&&(a>b&&L.push(this.makeToken("NEOSTRING",e.slice(b,a),w+b)),o=r.slice(1,-1),o.length&&(D=this.getLineAndColumnFromChunk(w+a+1),u=D[0],i=D[1],f=(new t).tokenize(o,{line:u,column:i,rewrite:!1}),v=f.pop(),"TERMINATOR"===(null!=(S=f[0])?S[0]:void 0)&&(v=f.shift()),(h=f.length)&&(h>1&&(f.unshift(this.makeToken("(","(",w+a+1,0)),f.push(this.makeToken(")",")",w+a+1+o.length,0))),L.push(["TOKENS",f]))),a+=r.length,b=a+1):a+=1;if(a>b&&e.length>b&&L.push(this.makeToken("NEOSTRING",e.slice(b),w+b)),g)return L;if(!L.length)return this.token("STRING",'""',m,p);for("NEOSTRING"!==L[0][0]&&L.unshift(this.makeToken("NEOSTRING","",m)),(c=L.length>1)&&this.token("(","(",m,0),a=T=0,x=L.length;x>T;a=++T)E=L[a],k=E[0],N=E[1],a&&(a&&(y=this.token("+","+")),d="TOKENS"===k?N[0]:E,y[2]={first_line:d[2].first_line,first_column:d[2].first_column,last_line:d[2].first_line,last_column:d[2].first_column}),"TOKENS"===k?(F=this.tokens).push.apply(F,N):"NEOSTRING"===k?(E[0]="STRING",E[1]=this.makeString(N,'"',s),this.tokens.push(E)):this.error("Unexpected "+k);return c&&this.token(")",")",m+p,0),L},t.prototype.pair=function(t){var e,n;return t!==(n=X(this.ends))?("OUTDENT"!==n&&this.error("unmatched "+t),this.indent-=e=X(this.indents),this.outdentToken(e,!0),this.pair(t)):this.ends.pop()},t.prototype.getLineAndColumnFromChunk=function(t){var e,n,i,r;return 0===t?[this.chunkLine,this.chunkColumn]:(r=t>=this.chunk.length?this.chunk:this.chunk.slice(0,+(t-1)+1||9e9),n=G(r,"\n"),e=this.chunkColumn,n>0?(i=r.split("\n"),e=X(i).length):e+=r.length,[this.chunkLine+n,e])},t.prototype.makeToken=function(t,e,n,i){var r,s,a,o,c;return n=n||0,void 0===i&&(i=e.length),s={},o=this.getLineAndColumnFromChunk(n),s.first_line=o[0],s.first_column=o[1],r=i>0?i-1:0,c=this.getLineAndColumnFromChunk(n+(i-1)),s.last_line=c[0],s.last_column=c[1],a=[t,e,s]},t.prototype.token=function(t,e,n,i){var r;return r=this.makeToken(t,e,n,i),this.tokens.push(r),r},t.prototype.tag=function(t,e){var n;return(n=X(this.tokens,t))&&(e?n[0]=e:n[0])},t.prototype.value=function(t,e){var n;return(n=X(this.tokens,t))&&(e?n[1]=e:n[1])},t.prototype.unfinished=function(){var t;return L.test(this.chunk)||"\\"===(t=this.tag())||"."===t||"?."===t||"UNARY"===t||"MATH"===t||"+"===t||"-"===t||"SHIFT"===t||"RELATION"===t||"COMPARE"===t||"LOGIC"===t||"THROW"===t||"EXTENDS"===t},t.prototype.escapeLines=function(t,e){return t.replace(S,e?"\\n":"")},t.prototype.makeString=function(t,e,n){return t?(t=t.replace(/\\([\s\S])/g,function(t,n){return"\n"===n||n===e?n:t}),t=t.replace(RegExp(""+e,"g"),"\\$&"),e+this.escapeLines(t,n)+e):e+e},t.prototype.error=function(t){throw SyntaxError(""+t+" on line "+(this.chunkLine+1))},t}(),k=["true","false","null","this","new","delete","typeof","in","instanceof","return","throw","break","continue","debugger","if","else","switch","for","while","do","try","catch","finally","class","extends","super"],o=["undefined","then","unless","until","loop","of","by","when"],a={and:"&&",or:"||",is:"==",isnt:"!=",not:"!",yes:"true",no:"false",on:"true",off:"false"},s=function(){var t;t=[];for(W in a)t.push(W);return t}(),o=o.concat(s),O=["case","default","function","var","void","with","const","let","enum","export","import","native","__hasProp","__extends","__slice","__bind","__indexOf","implements","interface","package","private","protected","public","static","yield"],V=["arguments","eval"],w=k.concat(O).concat(V),t.RESERVED=O.concat(k).concat(o).concat(V),t.STRICT_PROSCRIBED=V,e=65279,b=/^([$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)([^\n\S]*:(?!:))?/,A=/^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i,p=/^("""|''')([\s\S]*?)(?:\n[^\n\S]*)?\1/,$=/^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>])\2=?|\?\.|\.{2,3})/,H=/^[^\n\S]+/,c=/^###([^#][\s\S]*?)(?:###[^\n\S]*|(?:###)$)|^(?:\s*#(?!##[^#]).*)+/,N=/^([ ]{4}|\t)/,r=/^[-=]>/,F=/^(?:\n[^\n\S]*)+/,P=/^'[^\\']*(?:\\.[^\\']*)*'/,g=/^`[^\\`]*(?:\\.[^\\`]*)*`/,_=/^(\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)([imgy]{0,4})(?!\w)/,f=/^\/{3}([\s\S]+?)\/{3}([imgy]{0,4})(?!\w)/,m=/\s+(?:#.*)?/g,S=/\n/g,d=/\n+([^\n\S]*)/g,u=/\*\//,L=/^\s*(?:,|\??\.(?![.\d])|::)/,U=/\s+$/,l=["-=","+=","/=","*=","%=","||=","&&=","?=","<<=",">>=",">>>=","&=","^=","|="],B=["!","~","NEW","TYPEOF","DELETE","DO"],T=["&&","||","&","|","^"],M=["<<",">>",">>>"],h=["==","!=","<",">","<=",">="],D=["*","/","%"],C=["IN","OF","INSTANCEOF"],n=["TRUE","FALSE"],R=["NUMBER","REGEX","BOOL","NULL","UNDEFINED","++","--","]"],I=R.concat(")","}","THIS","IDENTIFIER","STRING"),i=["IDENTIFIER","STRING","REGEX",")","]","}","?","::","@","THIS","SUPER"],y=i.concat("NUMBER","BOOL","NULL","UNDEFINED"),E=["INDENT","OUTDENT","TERMINATOR"]}).call(this)},require["./parser"]=new function(){var t=this,e=function(){function t(){this.yy={}}var e={trace:function(){},yy:{},symbols_:{error:2,Root:3,Body:4,Block:5,TERMINATOR:6,Line:7,Expression:8,Statement:9,Return:10,Comment:11,STATEMENT:12,Value:13,Invocation:14,Code:15,Operation:16,Assign:17,If:18,Try:19,While:20,For:21,Switch:22,Class:23,Throw:24,INDENT:25,OUTDENT:26,Identifier:27,IDENTIFIER:28,AlphaNumeric:29,NUMBER:30,STRING:31,Literal:32,JS:33,REGEX:34,DEBUGGER:35,UNDEFINED:36,NULL:37,BOOL:38,Assignable:39,"=":40,AssignObj:41,ObjAssignable:42,":":43,ThisProperty:44,RETURN:45,HERECOMMENT:46,PARAM_START:47,ParamList:48,PARAM_END:49,FuncGlyph:50,"->":51,"=>":52,OptComma:53,",":54,Param:55,ParamVar:56,"...":57,Array:58,Object:59,Splat:60,SimpleAssignable:61,Accessor:62,Parenthetical:63,Range:64,This:65,".":66,"?.":67,"::":68,Index:69,INDEX_START:70,IndexValue:71,INDEX_END:72,INDEX_SOAK:73,Slice:74,"{":75,AssignList:76,"}":77,CLASS:78,EXTENDS:79,OptFuncExist:80,Arguments:81,SUPER:82,FUNC_EXIST:83,CALL_START:84,CALL_END:85,ArgList:86,THIS:87,"@":88,"[":89,"]":90,RangeDots:91,"..":92,Arg:93,SimpleArgs:94,TRY:95,Catch:96,FINALLY:97,CATCH:98,THROW:99,"(":100,")":101,WhileSource:102,WHILE:103,WHEN:104,UNTIL:105,Loop:106,LOOP:107,ForBody:108,FOR:109,ForStart:110,ForSource:111,ForVariables:112,OWN:113,ForValue:114,FORIN:115,FOROF:116,BY:117,SWITCH:118,Whens:119,ELSE:120,When:121,LEADING_WHEN:122,IfBlock:123,IF:124,POST_IF:125,UNARY:126,"-":127,"+":128,"--":129,"++":130,"?":131,MATH:132,SHIFT:133,COMPARE:134,LOGIC:135,RELATION:136,COMPOUND_ASSIGN:137,$accept:0,$end:1},terminals_:{2:"error",6:"TERMINATOR",12:"STATEMENT",25:"INDENT",26:"OUTDENT",28:"IDENTIFIER",30:"NUMBER",31:"STRING",33:"JS",34:"REGEX",35:"DEBUGGER",36:"UNDEFINED",37:"NULL",38:"BOOL",40:"=",43:":",45:"RETURN",46:"HERECOMMENT",47:"PARAM_START",49:"PARAM_END",51:"->",52:"=>",54:",",57:"...",66:".",67:"?.",68:"::",70:"INDEX_START",72:"INDEX_END",73:"INDEX_SOAK",75:"{",77:"}",78:"CLASS",79:"EXTENDS",82:"SUPER",83:"FUNC_EXIST",84:"CALL_START",85:"CALL_END",87:"THIS",88:"@",89:"[",90:"]",92:"..",95:"TRY",97:"FINALLY",98:"CATCH",99:"THROW",100:"(",101:")",103:"WHILE",104:"WHEN",105:"UNTIL",107:"LOOP",109:"FOR",113:"OWN",115:"FORIN",116:"FOROF",117:"BY",118:"SWITCH",120:"ELSE",122:"LEADING_WHEN",124:"IF",125:"POST_IF",126:"UNARY",127:"-",128:"+",129:"--",130:"++",131:"?",132:"MATH",133:"SHIFT",134:"COMPARE",135:"LOGIC",136:"RELATION",137:"COMPOUND_ASSIGN"},productions_:[0,[3,0],[3,1],[3,2],[4,1],[4,3],[4,2],[7,1],[7,1],[9,1],[9,1],[9,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[5,2],[5,3],[27,1],[29,1],[29,1],[32,1],[32,1],[32,1],[32,1],[32,1],[32,1],[32,1],[17,3],[17,4],[17,5],[41,1],[41,3],[41,5],[41,1],[42,1],[42,1],[42,1],[10,2],[10,1],[11,1],[15,5],[15,2],[50,1],[50,1],[53,0],[53,1],[48,0],[48,1],[48,3],[48,4],[48,6],[55,1],[55,2],[55,3],[56,1],[56,1],[56,1],[56,1],[60,2],[61,1],[61,2],[61,2],[61,1],[39,1],[39,1],[39,1],[13,1],[13,1],[13,1],[13,1],[13,1],[62,2],[62,2],[62,2],[62,1],[62,1],[69,3],[69,2],[71,1],[71,1],[59,4],[76,0],[76,1],[76,3],[76,4],[76,6],[23,1],[23,2],[23,3],[23,4],[23,2],[23,3],[23,4],[23,5],[14,3],[14,3],[14,1],[14,2],[80,0],[80,1],[81,2],[81,4],[65,1],[65,1],[44,2],[58,2],[58,4],[91,1],[91,1],[64,5],[74,3],[74,2],[74,2],[74,1],[86,1],[86,3],[86,4],[86,4],[86,6],[93,1],[93,1],[94,1],[94,3],[19,2],[19,3],[19,4],[19,5],[96,3],[96,3],[24,2],[63,3],[63,5],[102,2],[102,4],[102,2],[102,4],[20,2],[20,2],[20,2],[20,1],[106,2],[106,2],[21,2],[21,2],[21,2],[108,2],[108,2],[110,2],[110,3],[114,1],[114,1],[114,1],[114,1],[112,1],[112,3],[111,2],[111,2],[111,4],[111,4],[111,4],[111,6],[111,6],[22,5],[22,7],[22,4],[22,6],[119,1],[119,2],[121,3],[121,4],[123,3],[123,5],[18,1],[18,3],[18,3],[18,3],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,5],[16,4],[16,3]],performAction:function(t,e,n,i,r,s,a){var o=s.length-1;switch(r){case 1:return this.$=i.addLocationDataFn(a[o],a[o])(new i.Block);case 2:return this.$=s[o];case 3:return this.$=s[o-1];case 4:this.$=i.addLocationDataFn(a[o],a[o])(i.Block.wrap([s[o]]));break;case 5:this.$=i.addLocationDataFn(a[o-2],a[o])(s[o-2].push(s[o]));break;case 6:this.$=s[o-1];break;case 7:this.$=s[o];break;case 8:this.$=s[o];break;case 9:this.$=s[o];break;case 10:this.$=s[o];break;case 11:this.$=i.addLocationDataFn(a[o],a[o])(new i.Literal(s[o]));break;case 12:this.$=s[o];break;case 13:this.$=s[o];break;case 14:this.$=s[o];break;case 15:this.$=s[o];break;case 16:this.$=s[o];break;case 17:this.$=s[o];break;case 18:this.$=s[o];break;case 19:this.$=s[o];break;case 20:this.$=s[o];break;case 21:this.$=s[o];break;case 22:this.$=s[o];break;case 23:this.$=s[o];break;case 24:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Block);break;case 25:this.$=i.addLocationDataFn(a[o-2],a[o])(s[o-1]);break;case 26:this.$=i.addLocationDataFn(a[o],a[o])(new i.Literal(s[o]));break;case 27:this.$=i.addLocationDataFn(a[o],a[o])(new i.Literal(s[o]));break;case 28:this.$=i.addLocationDataFn(a[o],a[o])(new i.Literal(s[o]));break;case 29:this.$=s[o];break;case 30:this.$=i.addLocationDataFn(a[o],a[o])(new i.Literal(s[o]));break;case 31:this.$=i.addLocationDataFn(a[o],a[o])(new i.Literal(s[o]));break;case 32:this.$=i.addLocationDataFn(a[o],a[o])(new i.Literal(s[o]));break;case 33:this.$=i.addLocationDataFn(a[o],a[o])(new i.Undefined);break;case 34:this.$=i.addLocationDataFn(a[o],a[o])(new i.Null);break;case 35:this.$=i.addLocationDataFn(a[o],a[o])(new i.Bool(s[o]));break;case 36:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Assign(s[o-2],s[o]));break;case 37:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.Assign(s[o-3],s[o]));break;case 38:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Assign(s[o-4],s[o-1]));break;case 39:this.$=i.addLocationDataFn(a[o],a[o])(i.Value.wrap(s[o]));break;case 40:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Assign(i.addLocationDataFn(a[o-2])(i.Value.wrap(s[o-2])),s[o],"object"));break;case 41:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Assign(i.addLocationDataFn(a[o-4])(i.Value.wrap(s[o-4])),s[o-1],"object"));break;case 42:this.$=s[o];break;case 43:this.$=s[o];break;case 44:this.$=s[o];break;case 45:this.$=s[o];break;case 46:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Return(s[o]));break;case 47:this.$=i.addLocationDataFn(a[o],a[o])(new i.Return);break;case 48:this.$=i.addLocationDataFn(a[o],a[o])(new i.Comment(s[o]));break;case 49:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Code(s[o-3],s[o],s[o-1]));break;case 50:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Code([],s[o],s[o-1]));break;case 51:this.$=i.addLocationDataFn(a[o],a[o])("func");break;case 52:this.$=i.addLocationDataFn(a[o],a[o])("boundfunc");break;case 53:this.$=s[o];break;case 54:this.$=s[o];break;case 55:this.$=i.addLocationDataFn(a[o],a[o])([]);break;case 56:this.$=i.addLocationDataFn(a[o],a[o])([s[o]]);break;case 57:this.$=i.addLocationDataFn(a[o-2],a[o])(s[o-2].concat(s[o]));break;case 58:this.$=i.addLocationDataFn(a[o-3],a[o])(s[o-3].concat(s[o]));break;case 59:this.$=i.addLocationDataFn(a[o-5],a[o])(s[o-5].concat(s[o-2]));break;case 60:this.$=i.addLocationDataFn(a[o],a[o])(new i.Param(s[o]));break;case 61:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Param(s[o-1],null,!0));break;case 62:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Param(s[o-2],s[o]));break;case 63:this.$=s[o];break;case 64:this.$=s[o];break;case 65:this.$=s[o];break;case 66:this.$=s[o];break;case 67:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Splat(s[o-1]));break;case 68:this.$=i.addLocationDataFn(a[o],a[o])(i.Value.wrap(s[o]));break;case 69:this.$=i.addLocationDataFn(a[o-1],a[o])(s[o-1].add(s[o]));break;case 70:this.$=i.addLocationDataFn(a[o-1],a[o])(i.Value.wrap(s[o-1],[].concat(s[o])));break;case 71:this.$=s[o];break;case 72:this.$=s[o];break;case 73:this.$=i.addLocationDataFn(a[o],a[o])(i.Value.wrap(s[o]));break;case 74:this.$=i.addLocationDataFn(a[o],a[o])(i.Value.wrap(s[o]));break;case 75:this.$=s[o];break;case 76:this.$=i.addLocationDataFn(a[o],a[o])(i.Value.wrap(s[o]));break;case 77:this.$=i.addLocationDataFn(a[o],a[o])(i.Value.wrap(s[o]));break;case 78:this.$=i.addLocationDataFn(a[o],a[o])(i.Value.wrap(s[o]));break;case 79:this.$=s[o];break;case 80:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Access(s[o]));break;case 81:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Access(s[o],"soak"));break;case 82:this.$=i.addLocationDataFn(a[o-1],a[o])([i.addLocationDataFn(a[o-1])(new i.Access(new i.Literal("prototype"))),i.addLocationDataFn(a[o])(new i.Access(s[o]))]);break;case 83:this.$=i.addLocationDataFn(a[o],a[o])(new i.Access(new i.Literal("prototype")));break;case 84:this.$=s[o];break;case 85:this.$=i.addLocationDataFn(a[o-2],a[o])(s[o-1]);break;case 86:this.$=i.addLocationDataFn(a[o-1],a[o])(i.extend(s[o],{soak:!0}));break;case 87:this.$=i.addLocationDataFn(a[o],a[o])(new i.Index(s[o]));break;case 88:this.$=i.addLocationDataFn(a[o],a[o])(new i.Slice(s[o]));break;case 89:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.Obj(s[o-2],s[o-3].generated)); -break;case 90:this.$=i.addLocationDataFn(a[o],a[o])([]);break;case 91:this.$=i.addLocationDataFn(a[o],a[o])([s[o]]);break;case 92:this.$=i.addLocationDataFn(a[o-2],a[o])(s[o-2].concat(s[o]));break;case 93:this.$=i.addLocationDataFn(a[o-3],a[o])(s[o-3].concat(s[o]));break;case 94:this.$=i.addLocationDataFn(a[o-5],a[o])(s[o-5].concat(s[o-2]));break;case 95:this.$=i.addLocationDataFn(a[o],a[o])(new i.Class);break;case 96:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Class(null,null,s[o]));break;case 97:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Class(null,s[o]));break;case 98:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.Class(null,s[o-1],s[o]));break;case 99:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Class(s[o]));break;case 100:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Class(s[o-1],null,s[o]));break;case 101:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.Class(s[o-2],s[o]));break;case 102:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Class(s[o-3],s[o-1],s[o]));break;case 103:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Call(s[o-2],s[o],s[o-1]));break;case 104:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Call(s[o-2],s[o],s[o-1]));break;case 105:this.$=i.addLocationDataFn(a[o],a[o])(new i.Call("super",[new i.Splat(new i.Literal("arguments"))]));break;case 106:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Call("super",s[o]));break;case 107:this.$=i.addLocationDataFn(a[o],a[o])(!1);break;case 108:this.$=i.addLocationDataFn(a[o],a[o])(!0);break;case 109:this.$=i.addLocationDataFn(a[o-1],a[o])([]);break;case 110:this.$=i.addLocationDataFn(a[o-3],a[o])(s[o-2]);break;case 111:this.$=i.addLocationDataFn(a[o],a[o])(i.Value.wrap(new i.Literal("this")));break;case 112:this.$=i.addLocationDataFn(a[o],a[o])(i.Value.wrap(new i.Literal("this")));break;case 113:this.$=i.addLocationDataFn(a[o-1],a[o])(i.Value.wrap(i.addLocationDataFn(a[o-1])(new i.Literal("this")),[i.addLocationDataFn(a[o])(new i.Access(s[o]))],"this"));break;case 114:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Arr([]));break;case 115:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.Arr(s[o-2]));break;case 116:this.$=i.addLocationDataFn(a[o],a[o])("inclusive");break;case 117:this.$=i.addLocationDataFn(a[o],a[o])("exclusive");break;case 118:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Range(s[o-3],s[o-1],s[o-2]));break;case 119:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Range(s[o-2],s[o],s[o-1]));break;case 120:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Range(s[o-1],null,s[o]));break;case 121:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Range(null,s[o],s[o-1]));break;case 122:this.$=i.addLocationDataFn(a[o],a[o])(new i.Range(null,null,s[o]));break;case 123:this.$=i.addLocationDataFn(a[o],a[o])([s[o]]);break;case 124:this.$=i.addLocationDataFn(a[o-2],a[o])(s[o-2].concat(s[o]));break;case 125:this.$=i.addLocationDataFn(a[o-3],a[o])(s[o-3].concat(s[o]));break;case 126:this.$=i.addLocationDataFn(a[o-3],a[o])(s[o-2]);break;case 127:this.$=i.addLocationDataFn(a[o-5],a[o])(s[o-5].concat(s[o-2]));break;case 128:this.$=s[o];break;case 129:this.$=s[o];break;case 130:this.$=s[o];break;case 131:this.$=i.addLocationDataFn(a[o-2],a[o])([].concat(s[o-2],s[o]));break;case 132:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Try(s[o]));break;case 133:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Try(s[o-1],s[o][0],s[o][1]));break;case 134:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.Try(s[o-2],null,null,s[o]));break;case 135:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Try(s[o-3],s[o-2][0],s[o-2][1],s[o]));break;case 136:this.$=i.addLocationDataFn(a[o-2],a[o])([s[o-1],s[o]]);break;case 137:this.$=i.addLocationDataFn(a[o-2],a[o])([i.addLocationDataFn(a[o-1])(i.Value.wrap(s[o-1])),s[o]]);break;case 138:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Throw(s[o]));break;case 139:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Parens(s[o-1]));break;case 140:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Parens(s[o-2]));break;case 141:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.While(s[o]));break;case 142:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.While(s[o-2],{guard:s[o]}));break;case 143:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.While(s[o],{invert:!0}));break;case 144:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.While(s[o-2],{invert:!0,guard:s[o]}));break;case 145:this.$=i.addLocationDataFn(a[o-1],a[o])(s[o-1].addBody(s[o]));break;case 146:this.$=i.addLocationDataFn(a[o-1],a[o])(s[o].addBody(i.addLocationDataFn(a[o-1])(i.Block.wrap([s[o-1]]))));break;case 147:this.$=i.addLocationDataFn(a[o-1],a[o])(s[o].addBody(i.addLocationDataFn(a[o-1])(i.Block.wrap([s[o-1]]))));break;case 148:this.$=i.addLocationDataFn(a[o],a[o])(s[o]);break;case 149:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.While(i.addLocationDataFn(a[o-1])(new i.Literal("true"))).addBody(s[o]));break;case 150:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.While(i.addLocationDataFn(a[o-1])(new i.Literal("true"))).addBody(i.addLocationDataFn(a[o])(i.Block.wrap([s[o]]))));break;case 151:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.For(s[o-1],s[o]));break;case 152:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.For(s[o-1],s[o]));break;case 153:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.For(s[o],s[o-1]));break;case 154:this.$=i.addLocationDataFn(a[o-1],a[o])({source:i.addLocationDataFn(a[o])(i.Value.wrap(s[o]))});break;case 155:this.$=i.addLocationDataFn(a[o-1],a[o])(function(){return s[o].own=s[o-1].own,s[o].name=s[o-1][0],s[o].index=s[o-1][1],s[o]}());break;case 156:this.$=i.addLocationDataFn(a[o-1],a[o])(s[o]);break;case 157:this.$=i.addLocationDataFn(a[o-2],a[o])(function(){return s[o].own=!0,s[o]}());break;case 158:this.$=s[o];break;case 159:this.$=s[o];break;case 160:this.$=i.addLocationDataFn(a[o],a[o])(i.Value.wrap(s[o]));break;case 161:this.$=i.addLocationDataFn(a[o],a[o])(i.Value.wrap(s[o]));break;case 162:this.$=i.addLocationDataFn(a[o],a[o])([s[o]]);break;case 163:this.$=i.addLocationDataFn(a[o-2],a[o])([s[o-2],s[o]]);break;case 164:this.$=i.addLocationDataFn(a[o-1],a[o])({source:s[o]});break;case 165:this.$=i.addLocationDataFn(a[o-1],a[o])({source:s[o],object:!0});break;case 166:this.$=i.addLocationDataFn(a[o-3],a[o])({source:s[o-2],guard:s[o]});break;case 167:this.$=i.addLocationDataFn(a[o-3],a[o])({source:s[o-2],guard:s[o],object:!0});break;case 168:this.$=i.addLocationDataFn(a[o-3],a[o])({source:s[o-2],step:s[o]});break;case 169:this.$=i.addLocationDataFn(a[o-5],a[o])({source:s[o-4],guard:s[o-2],step:s[o]});break;case 170:this.$=i.addLocationDataFn(a[o-5],a[o])({source:s[o-4],step:s[o-2],guard:s[o]});break;case 171:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Switch(s[o-3],s[o-1]));break;case 172:this.$=i.addLocationDataFn(a[o-6],a[o])(new i.Switch(s[o-5],s[o-3],s[o-1]));break;case 173:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.Switch(null,s[o-1]));break;case 174:this.$=i.addLocationDataFn(a[o-5],a[o])(new i.Switch(null,s[o-3],s[o-1]));break;case 175:this.$=s[o];break;case 176:this.$=i.addLocationDataFn(a[o-1],a[o])(s[o-1].concat(s[o]));break;case 177:this.$=i.addLocationDataFn(a[o-2],a[o])([[s[o-1],s[o]]]);break;case 178:this.$=i.addLocationDataFn(a[o-3],a[o])([[s[o-2],s[o-1]]]);break;case 179:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.If(s[o-1],s[o],{type:s[o-2]}));break;case 180:this.$=i.addLocationDataFn(a[o-4],a[o])(s[o-4].addElse(new i.If(s[o-1],s[o],{type:s[o-2]})));break;case 181:this.$=s[o];break;case 182:this.$=i.addLocationDataFn(a[o-2],a[o])(s[o-2].addElse(s[o]));break;case 183:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.If(s[o],i.addLocationDataFn(a[o-2])(i.Block.wrap([s[o-2]])),{type:s[o-1],statement:!0}));break;case 184:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.If(s[o],i.addLocationDataFn(a[o-2])(i.Block.wrap([s[o-2]])),{type:s[o-1],statement:!0}));break;case 185:this.$=i.addLocationDataFn(a[o-1],a[o])(i.Op.create(s[o-1],s[o]));break;case 186:this.$=i.addLocationDataFn(a[o-1],a[o])(i.Op.create("-",s[o]));break;case 187:this.$=i.addLocationDataFn(a[o-1],a[o])(i.Op.create("+",s[o]));break;case 188:this.$=i.addLocationDataFn(a[o-1],a[o])(i.Op.create("--",s[o]));break;case 189:this.$=i.addLocationDataFn(a[o-1],a[o])(i.Op.create("++",s[o]));break;case 190:this.$=i.addLocationDataFn(a[o-1],a[o])(i.Op.create("--",s[o-1],null,!0));break;case 191:this.$=i.addLocationDataFn(a[o-1],a[o])(i.Op.create("++",s[o-1],null,!0));break;case 192:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Existence(s[o-1]));break;case 193:this.$=i.addLocationDataFn(a[o-2],a[o])(i.Op.create("+",s[o-2],s[o]));break;case 194:this.$=i.addLocationDataFn(a[o-2],a[o])(i.Op.create("-",s[o-2],s[o]));break;case 195:this.$=i.addLocationDataFn(a[o-2],a[o])(i.Op.create(s[o-1],s[o-2],s[o]));break;case 196:this.$=i.addLocationDataFn(a[o-2],a[o])(i.Op.create(s[o-1],s[o-2],s[o]));break;case 197:this.$=i.addLocationDataFn(a[o-2],a[o])(i.Op.create(s[o-1],s[o-2],s[o]));break;case 198:this.$=i.addLocationDataFn(a[o-2],a[o])(i.Op.create(s[o-1],s[o-2],s[o]));break;case 199:this.$=i.addLocationDataFn(a[o-2],a[o])(function(){return"!"===s[o-1].charAt(0)?i.Op.create(s[o-1].slice(1),s[o-2],s[o]).invert():i.Op.create(s[o-1],s[o-2],s[o])}());break;case 200:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Assign(s[o-2],s[o],s[o-1]));break;case 201:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Assign(s[o-4],s[o-1],s[o-3]));break;case 202:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.Assign(s[o-3],s[o],s[o-2]));break;case 203:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Extends(s[o-2],s[o]))}},table:[{1:[2,1],3:1,4:2,5:3,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,5],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[3]},{1:[2,2],6:[1,74]},{6:[1,75]},{1:[2,4],6:[2,4],26:[2,4],101:[2,4]},{4:77,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[1,76],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,7],6:[2,7],26:[2,7],101:[2,7],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,8],6:[2,8],26:[2,8],101:[2,8],102:90,103:[1,65],105:[1,66],108:91,109:[1,68],110:69,125:[1,89]},{1:[2,12],6:[2,12],25:[2,12],26:[2,12],49:[2,12],54:[2,12],57:[2,12],62:93,66:[1,95],67:[1,96],68:[1,97],69:98,70:[1,99],72:[2,12],73:[1,100],77:[2,12],80:92,83:[1,94],84:[2,107],85:[2,12],90:[2,12],92:[2,12],101:[2,12],103:[2,12],104:[2,12],105:[2,12],109:[2,12],117:[2,12],125:[2,12],127:[2,12],128:[2,12],131:[2,12],132:[2,12],133:[2,12],134:[2,12],135:[2,12],136:[2,12]},{1:[2,13],6:[2,13],25:[2,13],26:[2,13],49:[2,13],54:[2,13],57:[2,13],62:102,66:[1,95],67:[1,96],68:[1,97],69:98,70:[1,99],72:[2,13],73:[1,100],77:[2,13],80:101,83:[1,94],84:[2,107],85:[2,13],90:[2,13],92:[2,13],101:[2,13],103:[2,13],104:[2,13],105:[2,13],109:[2,13],117:[2,13],125:[2,13],127:[2,13],128:[2,13],131:[2,13],132:[2,13],133:[2,13],134:[2,13],135:[2,13],136:[2,13]},{1:[2,14],6:[2,14],25:[2,14],26:[2,14],49:[2,14],54:[2,14],57:[2,14],72:[2,14],77:[2,14],85:[2,14],90:[2,14],92:[2,14],101:[2,14],103:[2,14],104:[2,14],105:[2,14],109:[2,14],117:[2,14],125:[2,14],127:[2,14],128:[2,14],131:[2,14],132:[2,14],133:[2,14],134:[2,14],135:[2,14],136:[2,14]},{1:[2,15],6:[2,15],25:[2,15],26:[2,15],49:[2,15],54:[2,15],57:[2,15],72:[2,15],77:[2,15],85:[2,15],90:[2,15],92:[2,15],101:[2,15],103:[2,15],104:[2,15],105:[2,15],109:[2,15],117:[2,15],125:[2,15],127:[2,15],128:[2,15],131:[2,15],132:[2,15],133:[2,15],134:[2,15],135:[2,15],136:[2,15]},{1:[2,16],6:[2,16],25:[2,16],26:[2,16],49:[2,16],54:[2,16],57:[2,16],72:[2,16],77:[2,16],85:[2,16],90:[2,16],92:[2,16],101:[2,16],103:[2,16],104:[2,16],105:[2,16],109:[2,16],117:[2,16],125:[2,16],127:[2,16],128:[2,16],131:[2,16],132:[2,16],133:[2,16],134:[2,16],135:[2,16],136:[2,16]},{1:[2,17],6:[2,17],25:[2,17],26:[2,17],49:[2,17],54:[2,17],57:[2,17],72:[2,17],77:[2,17],85:[2,17],90:[2,17],92:[2,17],101:[2,17],103:[2,17],104:[2,17],105:[2,17],109:[2,17],117:[2,17],125:[2,17],127:[2,17],128:[2,17],131:[2,17],132:[2,17],133:[2,17],134:[2,17],135:[2,17],136:[2,17]},{1:[2,18],6:[2,18],25:[2,18],26:[2,18],49:[2,18],54:[2,18],57:[2,18],72:[2,18],77:[2,18],85:[2,18],90:[2,18],92:[2,18],101:[2,18],103:[2,18],104:[2,18],105:[2,18],109:[2,18],117:[2,18],125:[2,18],127:[2,18],128:[2,18],131:[2,18],132:[2,18],133:[2,18],134:[2,18],135:[2,18],136:[2,18]},{1:[2,19],6:[2,19],25:[2,19],26:[2,19],49:[2,19],54:[2,19],57:[2,19],72:[2,19],77:[2,19],85:[2,19],90:[2,19],92:[2,19],101:[2,19],103:[2,19],104:[2,19],105:[2,19],109:[2,19],117:[2,19],125:[2,19],127:[2,19],128:[2,19],131:[2,19],132:[2,19],133:[2,19],134:[2,19],135:[2,19],136:[2,19]},{1:[2,20],6:[2,20],25:[2,20],26:[2,20],49:[2,20],54:[2,20],57:[2,20],72:[2,20],77:[2,20],85:[2,20],90:[2,20],92:[2,20],101:[2,20],103:[2,20],104:[2,20],105:[2,20],109:[2,20],117:[2,20],125:[2,20],127:[2,20],128:[2,20],131:[2,20],132:[2,20],133:[2,20],134:[2,20],135:[2,20],136:[2,20]},{1:[2,21],6:[2,21],25:[2,21],26:[2,21],49:[2,21],54:[2,21],57:[2,21],72:[2,21],77:[2,21],85:[2,21],90:[2,21],92:[2,21],101:[2,21],103:[2,21],104:[2,21],105:[2,21],109:[2,21],117:[2,21],125:[2,21],127:[2,21],128:[2,21],131:[2,21],132:[2,21],133:[2,21],134:[2,21],135:[2,21],136:[2,21]},{1:[2,22],6:[2,22],25:[2,22],26:[2,22],49:[2,22],54:[2,22],57:[2,22],72:[2,22],77:[2,22],85:[2,22],90:[2,22],92:[2,22],101:[2,22],103:[2,22],104:[2,22],105:[2,22],109:[2,22],117:[2,22],125:[2,22],127:[2,22],128:[2,22],131:[2,22],132:[2,22],133:[2,22],134:[2,22],135:[2,22],136:[2,22]},{1:[2,23],6:[2,23],25:[2,23],26:[2,23],49:[2,23],54:[2,23],57:[2,23],72:[2,23],77:[2,23],85:[2,23],90:[2,23],92:[2,23],101:[2,23],103:[2,23],104:[2,23],105:[2,23],109:[2,23],117:[2,23],125:[2,23],127:[2,23],128:[2,23],131:[2,23],132:[2,23],133:[2,23],134:[2,23],135:[2,23],136:[2,23]},{1:[2,9],6:[2,9],26:[2,9],101:[2,9],103:[2,9],105:[2,9],109:[2,9],125:[2,9]},{1:[2,10],6:[2,10],26:[2,10],101:[2,10],103:[2,10],105:[2,10],109:[2,10],125:[2,10]},{1:[2,11],6:[2,11],26:[2,11],101:[2,11],103:[2,11],105:[2,11],109:[2,11],125:[2,11]},{1:[2,75],6:[2,75],25:[2,75],26:[2,75],40:[1,103],49:[2,75],54:[2,75],57:[2,75],66:[2,75],67:[2,75],68:[2,75],70:[2,75],72:[2,75],73:[2,75],77:[2,75],83:[2,75],84:[2,75],85:[2,75],90:[2,75],92:[2,75],101:[2,75],103:[2,75],104:[2,75],105:[2,75],109:[2,75],117:[2,75],125:[2,75],127:[2,75],128:[2,75],131:[2,75],132:[2,75],133:[2,75],134:[2,75],135:[2,75],136:[2,75]},{1:[2,76],6:[2,76],25:[2,76],26:[2,76],49:[2,76],54:[2,76],57:[2,76],66:[2,76],67:[2,76],68:[2,76],70:[2,76],72:[2,76],73:[2,76],77:[2,76],83:[2,76],84:[2,76],85:[2,76],90:[2,76],92:[2,76],101:[2,76],103:[2,76],104:[2,76],105:[2,76],109:[2,76],117:[2,76],125:[2,76],127:[2,76],128:[2,76],131:[2,76],132:[2,76],133:[2,76],134:[2,76],135:[2,76],136:[2,76]},{1:[2,77],6:[2,77],25:[2,77],26:[2,77],49:[2,77],54:[2,77],57:[2,77],66:[2,77],67:[2,77],68:[2,77],70:[2,77],72:[2,77],73:[2,77],77:[2,77],83:[2,77],84:[2,77],85:[2,77],90:[2,77],92:[2,77],101:[2,77],103:[2,77],104:[2,77],105:[2,77],109:[2,77],117:[2,77],125:[2,77],127:[2,77],128:[2,77],131:[2,77],132:[2,77],133:[2,77],134:[2,77],135:[2,77],136:[2,77]},{1:[2,78],6:[2,78],25:[2,78],26:[2,78],49:[2,78],54:[2,78],57:[2,78],66:[2,78],67:[2,78],68:[2,78],70:[2,78],72:[2,78],73:[2,78],77:[2,78],83:[2,78],84:[2,78],85:[2,78],90:[2,78],92:[2,78],101:[2,78],103:[2,78],104:[2,78],105:[2,78],109:[2,78],117:[2,78],125:[2,78],127:[2,78],128:[2,78],131:[2,78],132:[2,78],133:[2,78],134:[2,78],135:[2,78],136:[2,78]},{1:[2,79],6:[2,79],25:[2,79],26:[2,79],49:[2,79],54:[2,79],57:[2,79],66:[2,79],67:[2,79],68:[2,79],70:[2,79],72:[2,79],73:[2,79],77:[2,79],83:[2,79],84:[2,79],85:[2,79],90:[2,79],92:[2,79],101:[2,79],103:[2,79],104:[2,79],105:[2,79],109:[2,79],117:[2,79],125:[2,79],127:[2,79],128:[2,79],131:[2,79],132:[2,79],133:[2,79],134:[2,79],135:[2,79],136:[2,79]},{1:[2,105],6:[2,105],25:[2,105],26:[2,105],49:[2,105],54:[2,105],57:[2,105],66:[2,105],67:[2,105],68:[2,105],70:[2,105],72:[2,105],73:[2,105],77:[2,105],81:104,83:[2,105],84:[1,105],85:[2,105],90:[2,105],92:[2,105],101:[2,105],103:[2,105],104:[2,105],105:[2,105],109:[2,105],117:[2,105],125:[2,105],127:[2,105],128:[2,105],131:[2,105],132:[2,105],133:[2,105],134:[2,105],135:[2,105],136:[2,105]},{6:[2,55],25:[2,55],27:109,28:[1,73],44:110,48:106,49:[2,55],54:[2,55],55:107,56:108,58:111,59:112,75:[1,70],88:[1,113],89:[1,114]},{5:115,25:[1,5]},{8:116,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:118,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:119,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{13:121,14:122,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:123,44:63,58:47,59:48,61:120,63:25,64:26,65:27,75:[1,70],82:[1,28],87:[1,58],88:[1,59],89:[1,57],100:[1,56]},{13:121,14:122,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:123,44:63,58:47,59:48,61:124,63:25,64:26,65:27,75:[1,70],82:[1,28],87:[1,58],88:[1,59],89:[1,57],100:[1,56]},{1:[2,72],6:[2,72],25:[2,72],26:[2,72],40:[2,72],49:[2,72],54:[2,72],57:[2,72],66:[2,72],67:[2,72],68:[2,72],70:[2,72],72:[2,72],73:[2,72],77:[2,72],79:[1,128],83:[2,72],84:[2,72],85:[2,72],90:[2,72],92:[2,72],101:[2,72],103:[2,72],104:[2,72],105:[2,72],109:[2,72],117:[2,72],125:[2,72],127:[2,72],128:[2,72],129:[1,125],130:[1,126],131:[2,72],132:[2,72],133:[2,72],134:[2,72],135:[2,72],136:[2,72],137:[1,127]},{1:[2,181],6:[2,181],25:[2,181],26:[2,181],49:[2,181],54:[2,181],57:[2,181],72:[2,181],77:[2,181],85:[2,181],90:[2,181],92:[2,181],101:[2,181],103:[2,181],104:[2,181],105:[2,181],109:[2,181],117:[2,181],120:[1,129],125:[2,181],127:[2,181],128:[2,181],131:[2,181],132:[2,181],133:[2,181],134:[2,181],135:[2,181],136:[2,181]},{5:130,25:[1,5]},{5:131,25:[1,5]},{1:[2,148],6:[2,148],25:[2,148],26:[2,148],49:[2,148],54:[2,148],57:[2,148],72:[2,148],77:[2,148],85:[2,148],90:[2,148],92:[2,148],101:[2,148],103:[2,148],104:[2,148],105:[2,148],109:[2,148],117:[2,148],125:[2,148],127:[2,148],128:[2,148],131:[2,148],132:[2,148],133:[2,148],134:[2,148],135:[2,148],136:[2,148]},{5:132,25:[1,5]},{8:133,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,134],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,95],5:135,6:[2,95],13:121,14:122,25:[1,5],26:[2,95],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:123,44:63,49:[2,95],54:[2,95],57:[2,95],58:47,59:48,61:137,63:25,64:26,65:27,72:[2,95],75:[1,70],77:[2,95],79:[1,136],82:[1,28],85:[2,95],87:[1,58],88:[1,59],89:[1,57],90:[2,95],92:[2,95],100:[1,56],101:[2,95],103:[2,95],104:[2,95],105:[2,95],109:[2,95],117:[2,95],125:[2,95],127:[2,95],128:[2,95],131:[2,95],132:[2,95],133:[2,95],134:[2,95],135:[2,95],136:[2,95]},{8:138,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,47],6:[2,47],8:139,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[2,47],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],101:[2,47],102:39,103:[2,47],105:[2,47],106:40,107:[1,67],108:41,109:[2,47],110:69,118:[1,42],123:37,124:[1,64],125:[2,47],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,48],6:[2,48],25:[2,48],26:[2,48],54:[2,48],77:[2,48],101:[2,48],103:[2,48],105:[2,48],109:[2,48],125:[2,48]},{1:[2,73],6:[2,73],25:[2,73],26:[2,73],40:[2,73],49:[2,73],54:[2,73],57:[2,73],66:[2,73],67:[2,73],68:[2,73],70:[2,73],72:[2,73],73:[2,73],77:[2,73],83:[2,73],84:[2,73],85:[2,73],90:[2,73],92:[2,73],101:[2,73],103:[2,73],104:[2,73],105:[2,73],109:[2,73],117:[2,73],125:[2,73],127:[2,73],128:[2,73],131:[2,73],132:[2,73],133:[2,73],134:[2,73],135:[2,73],136:[2,73]},{1:[2,74],6:[2,74],25:[2,74],26:[2,74],40:[2,74],49:[2,74],54:[2,74],57:[2,74],66:[2,74],67:[2,74],68:[2,74],70:[2,74],72:[2,74],73:[2,74],77:[2,74],83:[2,74],84:[2,74],85:[2,74],90:[2,74],92:[2,74],101:[2,74],103:[2,74],104:[2,74],105:[2,74],109:[2,74],117:[2,74],125:[2,74],127:[2,74],128:[2,74],131:[2,74],132:[2,74],133:[2,74],134:[2,74],135:[2,74],136:[2,74]},{1:[2,29],6:[2,29],25:[2,29],26:[2,29],49:[2,29],54:[2,29],57:[2,29],66:[2,29],67:[2,29],68:[2,29],70:[2,29],72:[2,29],73:[2,29],77:[2,29],83:[2,29],84:[2,29],85:[2,29],90:[2,29],92:[2,29],101:[2,29],103:[2,29],104:[2,29],105:[2,29],109:[2,29],117:[2,29],125:[2,29],127:[2,29],128:[2,29],131:[2,29],132:[2,29],133:[2,29],134:[2,29],135:[2,29],136:[2,29]},{1:[2,30],6:[2,30],25:[2,30],26:[2,30],49:[2,30],54:[2,30],57:[2,30],66:[2,30],67:[2,30],68:[2,30],70:[2,30],72:[2,30],73:[2,30],77:[2,30],83:[2,30],84:[2,30],85:[2,30],90:[2,30],92:[2,30],101:[2,30],103:[2,30],104:[2,30],105:[2,30],109:[2,30],117:[2,30],125:[2,30],127:[2,30],128:[2,30],131:[2,30],132:[2,30],133:[2,30],134:[2,30],135:[2,30],136:[2,30]},{1:[2,31],6:[2,31],25:[2,31],26:[2,31],49:[2,31],54:[2,31],57:[2,31],66:[2,31],67:[2,31],68:[2,31],70:[2,31],72:[2,31],73:[2,31],77:[2,31],83:[2,31],84:[2,31],85:[2,31],90:[2,31],92:[2,31],101:[2,31],103:[2,31],104:[2,31],105:[2,31],109:[2,31],117:[2,31],125:[2,31],127:[2,31],128:[2,31],131:[2,31],132:[2,31],133:[2,31],134:[2,31],135:[2,31],136:[2,31]},{1:[2,32],6:[2,32],25:[2,32],26:[2,32],49:[2,32],54:[2,32],57:[2,32],66:[2,32],67:[2,32],68:[2,32],70:[2,32],72:[2,32],73:[2,32],77:[2,32],83:[2,32],84:[2,32],85:[2,32],90:[2,32],92:[2,32],101:[2,32],103:[2,32],104:[2,32],105:[2,32],109:[2,32],117:[2,32],125:[2,32],127:[2,32],128:[2,32],131:[2,32],132:[2,32],133:[2,32],134:[2,32],135:[2,32],136:[2,32]},{1:[2,33],6:[2,33],25:[2,33],26:[2,33],49:[2,33],54:[2,33],57:[2,33],66:[2,33],67:[2,33],68:[2,33],70:[2,33],72:[2,33],73:[2,33],77:[2,33],83:[2,33],84:[2,33],85:[2,33],90:[2,33],92:[2,33],101:[2,33],103:[2,33],104:[2,33],105:[2,33],109:[2,33],117:[2,33],125:[2,33],127:[2,33],128:[2,33],131:[2,33],132:[2,33],133:[2,33],134:[2,33],135:[2,33],136:[2,33]},{1:[2,34],6:[2,34],25:[2,34],26:[2,34],49:[2,34],54:[2,34],57:[2,34],66:[2,34],67:[2,34],68:[2,34],70:[2,34],72:[2,34],73:[2,34],77:[2,34],83:[2,34],84:[2,34],85:[2,34],90:[2,34],92:[2,34],101:[2,34],103:[2,34],104:[2,34],105:[2,34],109:[2,34],117:[2,34],125:[2,34],127:[2,34],128:[2,34],131:[2,34],132:[2,34],133:[2,34],134:[2,34],135:[2,34],136:[2,34]},{1:[2,35],6:[2,35],25:[2,35],26:[2,35],49:[2,35],54:[2,35],57:[2,35],66:[2,35],67:[2,35],68:[2,35],70:[2,35],72:[2,35],73:[2,35],77:[2,35],83:[2,35],84:[2,35],85:[2,35],90:[2,35],92:[2,35],101:[2,35],103:[2,35],104:[2,35],105:[2,35],109:[2,35],117:[2,35],125:[2,35],127:[2,35],128:[2,35],131:[2,35],132:[2,35],133:[2,35],134:[2,35],135:[2,35],136:[2,35]},{4:140,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,141],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:142,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,146],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],86:144,87:[1,58],88:[1,59],89:[1,57],90:[1,143],93:145,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,111],6:[2,111],25:[2,111],26:[2,111],49:[2,111],54:[2,111],57:[2,111],66:[2,111],67:[2,111],68:[2,111],70:[2,111],72:[2,111],73:[2,111],77:[2,111],83:[2,111],84:[2,111],85:[2,111],90:[2,111],92:[2,111],101:[2,111],103:[2,111],104:[2,111],105:[2,111],109:[2,111],117:[2,111],125:[2,111],127:[2,111],128:[2,111],131:[2,111],132:[2,111],133:[2,111],134:[2,111],135:[2,111],136:[2,111]},{1:[2,112],6:[2,112],25:[2,112],26:[2,112],27:148,28:[1,73],49:[2,112],54:[2,112],57:[2,112],66:[2,112],67:[2,112],68:[2,112],70:[2,112],72:[2,112],73:[2,112],77:[2,112],83:[2,112],84:[2,112],85:[2,112],90:[2,112],92:[2,112],101:[2,112],103:[2,112],104:[2,112],105:[2,112],109:[2,112],117:[2,112],125:[2,112],127:[2,112],128:[2,112],131:[2,112],132:[2,112],133:[2,112],134:[2,112],135:[2,112],136:[2,112]},{25:[2,51]},{25:[2,52]},{1:[2,68],6:[2,68],25:[2,68],26:[2,68],40:[2,68],49:[2,68],54:[2,68],57:[2,68],66:[2,68],67:[2,68],68:[2,68],70:[2,68],72:[2,68],73:[2,68],77:[2,68],79:[2,68],83:[2,68],84:[2,68],85:[2,68],90:[2,68],92:[2,68],101:[2,68],103:[2,68],104:[2,68],105:[2,68],109:[2,68],117:[2,68],125:[2,68],127:[2,68],128:[2,68],129:[2,68],130:[2,68],131:[2,68],132:[2,68],133:[2,68],134:[2,68],135:[2,68],136:[2,68],137:[2,68]},{1:[2,71],6:[2,71],25:[2,71],26:[2,71],40:[2,71],49:[2,71],54:[2,71],57:[2,71],66:[2,71],67:[2,71],68:[2,71],70:[2,71],72:[2,71],73:[2,71],77:[2,71],79:[2,71],83:[2,71],84:[2,71],85:[2,71],90:[2,71],92:[2,71],101:[2,71],103:[2,71],104:[2,71],105:[2,71],109:[2,71],117:[2,71],125:[2,71],127:[2,71],128:[2,71],129:[2,71],130:[2,71],131:[2,71],132:[2,71],133:[2,71],134:[2,71],135:[2,71],136:[2,71],137:[2,71]},{8:149,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:150,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:151,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{5:152,8:153,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,5],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{27:158,28:[1,73],44:159,58:160,59:161,64:154,75:[1,70],88:[1,113],89:[1,57],112:155,113:[1,156],114:157},{111:162,115:[1,163],116:[1,164]},{6:[2,90],11:168,25:[2,90],27:169,28:[1,73],29:170,30:[1,71],31:[1,72],41:166,42:167,44:171,46:[1,46],54:[2,90],76:165,77:[2,90],88:[1,113]},{1:[2,27],6:[2,27],25:[2,27],26:[2,27],43:[2,27],49:[2,27],54:[2,27],57:[2,27],66:[2,27],67:[2,27],68:[2,27],70:[2,27],72:[2,27],73:[2,27],77:[2,27],83:[2,27],84:[2,27],85:[2,27],90:[2,27],92:[2,27],101:[2,27],103:[2,27],104:[2,27],105:[2,27],109:[2,27],117:[2,27],125:[2,27],127:[2,27],128:[2,27],131:[2,27],132:[2,27],133:[2,27],134:[2,27],135:[2,27],136:[2,27]},{1:[2,28],6:[2,28],25:[2,28],26:[2,28],43:[2,28],49:[2,28],54:[2,28],57:[2,28],66:[2,28],67:[2,28],68:[2,28],70:[2,28],72:[2,28],73:[2,28],77:[2,28],83:[2,28],84:[2,28],85:[2,28],90:[2,28],92:[2,28],101:[2,28],103:[2,28],104:[2,28],105:[2,28],109:[2,28],117:[2,28],125:[2,28],127:[2,28],128:[2,28],131:[2,28],132:[2,28],133:[2,28],134:[2,28],135:[2,28],136:[2,28]},{1:[2,26],6:[2,26],25:[2,26],26:[2,26],40:[2,26],43:[2,26],49:[2,26],54:[2,26],57:[2,26],66:[2,26],67:[2,26],68:[2,26],70:[2,26],72:[2,26],73:[2,26],77:[2,26],79:[2,26],83:[2,26],84:[2,26],85:[2,26],90:[2,26],92:[2,26],101:[2,26],103:[2,26],104:[2,26],105:[2,26],109:[2,26],115:[2,26],116:[2,26],117:[2,26],125:[2,26],127:[2,26],128:[2,26],129:[2,26],130:[2,26],131:[2,26],132:[2,26],133:[2,26],134:[2,26],135:[2,26],136:[2,26],137:[2,26]},{1:[2,6],6:[2,6],7:172,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[2,6],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],101:[2,6],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,3]},{1:[2,24],6:[2,24],25:[2,24],26:[2,24],49:[2,24],54:[2,24],57:[2,24],72:[2,24],77:[2,24],85:[2,24],90:[2,24],92:[2,24],97:[2,24],98:[2,24],101:[2,24],103:[2,24],104:[2,24],105:[2,24],109:[2,24],117:[2,24],120:[2,24],122:[2,24],125:[2,24],127:[2,24],128:[2,24],131:[2,24],132:[2,24],133:[2,24],134:[2,24],135:[2,24],136:[2,24]},{6:[1,74],26:[1,173]},{1:[2,192],6:[2,192],25:[2,192],26:[2,192],49:[2,192],54:[2,192],57:[2,192],72:[2,192],77:[2,192],85:[2,192],90:[2,192],92:[2,192],101:[2,192],103:[2,192],104:[2,192],105:[2,192],109:[2,192],117:[2,192],125:[2,192],127:[2,192],128:[2,192],131:[2,192],132:[2,192],133:[2,192],134:[2,192],135:[2,192],136:[2,192]},{8:174,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:175,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:176,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:177,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:178,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:179,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:180,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:181,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,147],6:[2,147],25:[2,147],26:[2,147],49:[2,147],54:[2,147],57:[2,147],72:[2,147],77:[2,147],85:[2,147],90:[2,147],92:[2,147],101:[2,147],103:[2,147],104:[2,147],105:[2,147],109:[2,147],117:[2,147],125:[2,147],127:[2,147],128:[2,147],131:[2,147],132:[2,147],133:[2,147],134:[2,147],135:[2,147],136:[2,147]},{1:[2,152],6:[2,152],25:[2,152],26:[2,152],49:[2,152],54:[2,152],57:[2,152],72:[2,152],77:[2,152],85:[2,152],90:[2,152],92:[2,152],101:[2,152],103:[2,152],104:[2,152],105:[2,152],109:[2,152],117:[2,152],125:[2,152],127:[2,152],128:[2,152],131:[2,152],132:[2,152],133:[2,152],134:[2,152],135:[2,152],136:[2,152]},{8:182,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,146],6:[2,146],25:[2,146],26:[2,146],49:[2,146],54:[2,146],57:[2,146],72:[2,146],77:[2,146],85:[2,146],90:[2,146],92:[2,146],101:[2,146],103:[2,146],104:[2,146],105:[2,146],109:[2,146],117:[2,146],125:[2,146],127:[2,146],128:[2,146],131:[2,146],132:[2,146],133:[2,146],134:[2,146],135:[2,146],136:[2,146]},{1:[2,151],6:[2,151],25:[2,151],26:[2,151],49:[2,151],54:[2,151],57:[2,151],72:[2,151],77:[2,151],85:[2,151],90:[2,151],92:[2,151],101:[2,151],103:[2,151],104:[2,151],105:[2,151],109:[2,151],117:[2,151],125:[2,151],127:[2,151],128:[2,151],131:[2,151],132:[2,151],133:[2,151],134:[2,151],135:[2,151],136:[2,151]},{81:183,84:[1,105]},{1:[2,69],6:[2,69],25:[2,69],26:[2,69],40:[2,69],49:[2,69],54:[2,69],57:[2,69],66:[2,69],67:[2,69],68:[2,69],70:[2,69],72:[2,69],73:[2,69],77:[2,69],79:[2,69],83:[2,69],84:[2,69],85:[2,69],90:[2,69],92:[2,69],101:[2,69],103:[2,69],104:[2,69],105:[2,69],109:[2,69],117:[2,69],125:[2,69],127:[2,69],128:[2,69],129:[2,69],130:[2,69],131:[2,69],132:[2,69],133:[2,69],134:[2,69],135:[2,69],136:[2,69],137:[2,69]},{84:[2,108]},{27:184,28:[1,73]},{27:185,28:[1,73]},{1:[2,83],6:[2,83],25:[2,83],26:[2,83],27:186,28:[1,73],40:[2,83],49:[2,83],54:[2,83],57:[2,83],66:[2,83],67:[2,83],68:[2,83],70:[2,83],72:[2,83],73:[2,83],77:[2,83],79:[2,83],83:[2,83],84:[2,83],85:[2,83],90:[2,83],92:[2,83],101:[2,83],103:[2,83],104:[2,83],105:[2,83],109:[2,83],117:[2,83],125:[2,83],127:[2,83],128:[2,83],129:[2,83],130:[2,83],131:[2,83],132:[2,83],133:[2,83],134:[2,83],135:[2,83],136:[2,83],137:[2,83]},{1:[2,84],6:[2,84],25:[2,84],26:[2,84],40:[2,84],49:[2,84],54:[2,84],57:[2,84],66:[2,84],67:[2,84],68:[2,84],70:[2,84],72:[2,84],73:[2,84],77:[2,84],79:[2,84],83:[2,84],84:[2,84],85:[2,84],90:[2,84],92:[2,84],101:[2,84],103:[2,84],104:[2,84],105:[2,84],109:[2,84],117:[2,84],125:[2,84],127:[2,84],128:[2,84],129:[2,84],130:[2,84],131:[2,84],132:[2,84],133:[2,84],134:[2,84],135:[2,84],136:[2,84],137:[2,84]},{8:188,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],57:[1,192],58:47,59:48,61:36,63:25,64:26,65:27,71:187,74:189,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],91:190,92:[1,191],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{69:193,70:[1,99],73:[1,100]},{81:194,84:[1,105]},{1:[2,70],6:[2,70],25:[2,70],26:[2,70],40:[2,70],49:[2,70],54:[2,70],57:[2,70],66:[2,70],67:[2,70],68:[2,70],70:[2,70],72:[2,70],73:[2,70],77:[2,70],79:[2,70],83:[2,70],84:[2,70],85:[2,70],90:[2,70],92:[2,70],101:[2,70],103:[2,70],104:[2,70],105:[2,70],109:[2,70],117:[2,70],125:[2,70],127:[2,70],128:[2,70],129:[2,70],130:[2,70],131:[2,70],132:[2,70],133:[2,70],134:[2,70],135:[2,70],136:[2,70],137:[2,70]},{6:[1,196],8:195,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,197],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,106],6:[2,106],25:[2,106],26:[2,106],49:[2,106],54:[2,106],57:[2,106],66:[2,106],67:[2,106],68:[2,106],70:[2,106],72:[2,106],73:[2,106],77:[2,106],83:[2,106],84:[2,106],85:[2,106],90:[2,106],92:[2,106],101:[2,106],103:[2,106],104:[2,106],105:[2,106],109:[2,106],117:[2,106],125:[2,106],127:[2,106],128:[2,106],131:[2,106],132:[2,106],133:[2,106],134:[2,106],135:[2,106],136:[2,106]},{8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,146],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],85:[1,198],86:199,87:[1,58],88:[1,59],89:[1,57],93:145,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,53],25:[2,53],49:[1,201],53:203,54:[1,202]},{6:[2,56],25:[2,56],26:[2,56],49:[2,56],54:[2,56]},{6:[2,60],25:[2,60],26:[2,60],40:[1,205],49:[2,60],54:[2,60],57:[1,204]},{6:[2,63],25:[2,63],26:[2,63],40:[2,63],49:[2,63],54:[2,63],57:[2,63]},{6:[2,64],25:[2,64],26:[2,64],40:[2,64],49:[2,64],54:[2,64],57:[2,64]},{6:[2,65],25:[2,65],26:[2,65],40:[2,65],49:[2,65],54:[2,65],57:[2,65]},{6:[2,66],25:[2,66],26:[2,66],40:[2,66],49:[2,66],54:[2,66],57:[2,66]},{27:148,28:[1,73]},{8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,146],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],86:144,87:[1,58],88:[1,59],89:[1,57],90:[1,143],93:145,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,50],6:[2,50],25:[2,50],26:[2,50],49:[2,50],54:[2,50],57:[2,50],72:[2,50],77:[2,50],85:[2,50],90:[2,50],92:[2,50],101:[2,50],103:[2,50],104:[2,50],105:[2,50],109:[2,50],117:[2,50],125:[2,50],127:[2,50],128:[2,50],131:[2,50],132:[2,50],133:[2,50],134:[2,50],135:[2,50],136:[2,50]},{1:[2,185],6:[2,185],25:[2,185],26:[2,185],49:[2,185],54:[2,185],57:[2,185],72:[2,185],77:[2,185],85:[2,185],90:[2,185],92:[2,185],101:[2,185],102:87,103:[2,185],104:[2,185],105:[2,185],108:88,109:[2,185],110:69,117:[2,185],125:[2,185],127:[2,185],128:[2,185],131:[1,78],132:[2,185],133:[2,185],134:[2,185],135:[2,185],136:[2,185]},{102:90,103:[1,65],105:[1,66],108:91,109:[1,68],110:69,125:[1,89]},{1:[2,186],6:[2,186],25:[2,186],26:[2,186],49:[2,186],54:[2,186],57:[2,186],72:[2,186],77:[2,186],85:[2,186],90:[2,186],92:[2,186],101:[2,186],102:87,103:[2,186],104:[2,186],105:[2,186],108:88,109:[2,186],110:69,117:[2,186],125:[2,186],127:[2,186],128:[2,186],131:[1,78],132:[2,186],133:[2,186],134:[2,186],135:[2,186],136:[2,186]},{1:[2,187],6:[2,187],25:[2,187],26:[2,187],49:[2,187],54:[2,187],57:[2,187],72:[2,187],77:[2,187],85:[2,187],90:[2,187],92:[2,187],101:[2,187],102:87,103:[2,187],104:[2,187],105:[2,187],108:88,109:[2,187],110:69,117:[2,187],125:[2,187],127:[2,187],128:[2,187],131:[1,78],132:[2,187],133:[2,187],134:[2,187],135:[2,187],136:[2,187]},{1:[2,188],6:[2,188],25:[2,188],26:[2,188],49:[2,188],54:[2,188],57:[2,188],66:[2,72],67:[2,72],68:[2,72],70:[2,72],72:[2,188],73:[2,72],77:[2,188],83:[2,72],84:[2,72],85:[2,188],90:[2,188],92:[2,188],101:[2,188],103:[2,188],104:[2,188],105:[2,188],109:[2,188],117:[2,188],125:[2,188],127:[2,188],128:[2,188],131:[2,188],132:[2,188],133:[2,188],134:[2,188],135:[2,188],136:[2,188]},{62:93,66:[1,95],67:[1,96],68:[1,97],69:98,70:[1,99],73:[1,100],80:92,83:[1,94],84:[2,107]},{62:102,66:[1,95],67:[1,96],68:[1,97],69:98,70:[1,99],73:[1,100],80:101,83:[1,94],84:[2,107]},{66:[2,75],67:[2,75],68:[2,75],70:[2,75],73:[2,75],83:[2,75],84:[2,75]},{1:[2,189],6:[2,189],25:[2,189],26:[2,189],49:[2,189],54:[2,189],57:[2,189],66:[2,72],67:[2,72],68:[2,72],70:[2,72],72:[2,189],73:[2,72],77:[2,189],83:[2,72],84:[2,72],85:[2,189],90:[2,189],92:[2,189],101:[2,189],103:[2,189],104:[2,189],105:[2,189],109:[2,189],117:[2,189],125:[2,189],127:[2,189],128:[2,189],131:[2,189],132:[2,189],133:[2,189],134:[2,189],135:[2,189],136:[2,189]},{1:[2,190],6:[2,190],25:[2,190],26:[2,190],49:[2,190],54:[2,190],57:[2,190],72:[2,190],77:[2,190],85:[2,190],90:[2,190],92:[2,190],101:[2,190],103:[2,190],104:[2,190],105:[2,190],109:[2,190],117:[2,190],125:[2,190],127:[2,190],128:[2,190],131:[2,190],132:[2,190],133:[2,190],134:[2,190],135:[2,190],136:[2,190]},{1:[2,191],6:[2,191],25:[2,191],26:[2,191],49:[2,191],54:[2,191],57:[2,191],72:[2,191],77:[2,191],85:[2,191],90:[2,191],92:[2,191],101:[2,191],103:[2,191],104:[2,191],105:[2,191],109:[2,191],117:[2,191],125:[2,191],127:[2,191],128:[2,191],131:[2,191],132:[2,191],133:[2,191],134:[2,191],135:[2,191],136:[2,191]},{6:[1,208],8:206,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,207],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:209,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{5:210,25:[1,5],124:[1,211]},{1:[2,132],6:[2,132],25:[2,132],26:[2,132],49:[2,132],54:[2,132],57:[2,132],72:[2,132],77:[2,132],85:[2,132],90:[2,132],92:[2,132],96:212,97:[1,213],98:[1,214],101:[2,132],103:[2,132],104:[2,132],105:[2,132],109:[2,132],117:[2,132],125:[2,132],127:[2,132],128:[2,132],131:[2,132],132:[2,132],133:[2,132],134:[2,132],135:[2,132],136:[2,132]},{1:[2,145],6:[2,145],25:[2,145],26:[2,145],49:[2,145],54:[2,145],57:[2,145],72:[2,145],77:[2,145],85:[2,145],90:[2,145],92:[2,145],101:[2,145],103:[2,145],104:[2,145],105:[2,145],109:[2,145],117:[2,145],125:[2,145],127:[2,145],128:[2,145],131:[2,145],132:[2,145],133:[2,145],134:[2,145],135:[2,145],136:[2,145]},{1:[2,153],6:[2,153],25:[2,153],26:[2,153],49:[2,153],54:[2,153],57:[2,153],72:[2,153],77:[2,153],85:[2,153],90:[2,153],92:[2,153],101:[2,153],103:[2,153],104:[2,153],105:[2,153],109:[2,153],117:[2,153],125:[2,153],127:[2,153],128:[2,153],131:[2,153],132:[2,153],133:[2,153],134:[2,153],135:[2,153],136:[2,153]},{25:[1,215],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{119:216,121:217,122:[1,218]},{1:[2,96],6:[2,96],25:[2,96],26:[2,96],49:[2,96],54:[2,96],57:[2,96],72:[2,96],77:[2,96],85:[2,96],90:[2,96],92:[2,96],101:[2,96],103:[2,96],104:[2,96],105:[2,96],109:[2,96],117:[2,96],125:[2,96],127:[2,96],128:[2,96],131:[2,96],132:[2,96],133:[2,96],134:[2,96],135:[2,96],136:[2,96]},{8:219,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,99],5:220,6:[2,99],25:[1,5],26:[2,99],49:[2,99],54:[2,99],57:[2,99],66:[2,72],67:[2,72],68:[2,72],70:[2,72],72:[2,99],73:[2,72],77:[2,99],79:[1,221],83:[2,72],84:[2,72],85:[2,99],90:[2,99],92:[2,99],101:[2,99],103:[2,99],104:[2,99],105:[2,99],109:[2,99],117:[2,99],125:[2,99],127:[2,99],128:[2,99],131:[2,99],132:[2,99],133:[2,99],134:[2,99],135:[2,99],136:[2,99]},{1:[2,138],6:[2,138],25:[2,138],26:[2,138],49:[2,138],54:[2,138],57:[2,138],72:[2,138],77:[2,138],85:[2,138],90:[2,138],92:[2,138],101:[2,138],102:87,103:[2,138],104:[2,138],105:[2,138],108:88,109:[2,138],110:69,117:[2,138],125:[2,138],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,46],6:[2,46],26:[2,46],101:[2,46],102:87,103:[2,46],105:[2,46],108:88,109:[2,46],110:69,125:[2,46],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[1,74],101:[1,222]},{4:223,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,128],25:[2,128],54:[2,128],57:[1,225],90:[2,128],91:224,92:[1,191],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,114],6:[2,114],25:[2,114],26:[2,114],40:[2,114],49:[2,114],54:[2,114],57:[2,114],66:[2,114],67:[2,114],68:[2,114],70:[2,114],72:[2,114],73:[2,114],77:[2,114],83:[2,114],84:[2,114],85:[2,114],90:[2,114],92:[2,114],101:[2,114],103:[2,114],104:[2,114],105:[2,114],109:[2,114],115:[2,114],116:[2,114],117:[2,114],125:[2,114],127:[2,114],128:[2,114],131:[2,114],132:[2,114],133:[2,114],134:[2,114],135:[2,114],136:[2,114]},{6:[2,53],25:[2,53],53:226,54:[1,227],90:[2,53]},{6:[2,123],25:[2,123],26:[2,123],54:[2,123],85:[2,123],90:[2,123]},{8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,146],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],86:228,87:[1,58],88:[1,59],89:[1,57],93:145,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,129],25:[2,129],26:[2,129],54:[2,129],85:[2,129],90:[2,129]},{1:[2,113],6:[2,113],25:[2,113],26:[2,113],40:[2,113],43:[2,113],49:[2,113],54:[2,113],57:[2,113],66:[2,113],67:[2,113],68:[2,113],70:[2,113],72:[2,113],73:[2,113],77:[2,113],79:[2,113],83:[2,113],84:[2,113],85:[2,113],90:[2,113],92:[2,113],101:[2,113],103:[2,113],104:[2,113],105:[2,113],109:[2,113],115:[2,113],116:[2,113],117:[2,113],125:[2,113],127:[2,113],128:[2,113],129:[2,113],130:[2,113],131:[2,113],132:[2,113],133:[2,113],134:[2,113],135:[2,113],136:[2,113],137:[2,113]},{5:229,25:[1,5],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,141],6:[2,141],25:[2,141],26:[2,141],49:[2,141],54:[2,141],57:[2,141],72:[2,141],77:[2,141],85:[2,141],90:[2,141],92:[2,141],101:[2,141],102:87,103:[1,65],104:[1,230],105:[1,66],108:88,109:[1,68],110:69,117:[2,141],125:[2,141],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,143],6:[2,143],25:[2,143],26:[2,143],49:[2,143],54:[2,143],57:[2,143],72:[2,143],77:[2,143],85:[2,143],90:[2,143],92:[2,143],101:[2,143],102:87,103:[1,65],104:[1,231],105:[1,66],108:88,109:[1,68],110:69,117:[2,143],125:[2,143],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,149],6:[2,149],25:[2,149],26:[2,149],49:[2,149],54:[2,149],57:[2,149],72:[2,149],77:[2,149],85:[2,149],90:[2,149],92:[2,149],101:[2,149],103:[2,149],104:[2,149],105:[2,149],109:[2,149],117:[2,149],125:[2,149],127:[2,149],128:[2,149],131:[2,149],132:[2,149],133:[2,149],134:[2,149],135:[2,149],136:[2,149]},{1:[2,150],6:[2,150],25:[2,150],26:[2,150],49:[2,150],54:[2,150],57:[2,150],72:[2,150],77:[2,150],85:[2,150],90:[2,150],92:[2,150],101:[2,150],102:87,103:[1,65],104:[2,150],105:[1,66],108:88,109:[1,68],110:69,117:[2,150],125:[2,150],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,154],6:[2,154],25:[2,154],26:[2,154],49:[2,154],54:[2,154],57:[2,154],72:[2,154],77:[2,154],85:[2,154],90:[2,154],92:[2,154],101:[2,154],103:[2,154],104:[2,154],105:[2,154],109:[2,154],117:[2,154],125:[2,154],127:[2,154],128:[2,154],131:[2,154],132:[2,154],133:[2,154],134:[2,154],135:[2,154],136:[2,154]},{115:[2,156],116:[2,156]},{27:158,28:[1,73],44:159,58:160,59:161,75:[1,70],88:[1,113],89:[1,114],112:232,114:157},{54:[1,233],115:[2,162],116:[2,162]},{54:[2,158],115:[2,158],116:[2,158]},{54:[2,159],115:[2,159],116:[2,159]},{54:[2,160],115:[2,160],116:[2,160]},{54:[2,161],115:[2,161],116:[2,161]},{1:[2,155],6:[2,155],25:[2,155],26:[2,155],49:[2,155],54:[2,155],57:[2,155],72:[2,155],77:[2,155],85:[2,155],90:[2,155],92:[2,155],101:[2,155],103:[2,155],104:[2,155],105:[2,155],109:[2,155],117:[2,155],125:[2,155],127:[2,155],128:[2,155],131:[2,155],132:[2,155],133:[2,155],134:[2,155],135:[2,155],136:[2,155]},{8:234,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:235,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,53],25:[2,53],53:236,54:[1,237],77:[2,53]},{6:[2,91],25:[2,91],26:[2,91],54:[2,91],77:[2,91]},{6:[2,39],25:[2,39],26:[2,39],43:[1,238],54:[2,39],77:[2,39]},{6:[2,42],25:[2,42],26:[2,42],54:[2,42],77:[2,42]},{6:[2,43],25:[2,43],26:[2,43],43:[2,43],54:[2,43],77:[2,43]},{6:[2,44],25:[2,44],26:[2,44],43:[2,44],54:[2,44],77:[2,44]},{6:[2,45],25:[2,45],26:[2,45],43:[2,45],54:[2,45],77:[2,45]},{1:[2,5],6:[2,5],26:[2,5],101:[2,5]},{1:[2,25],6:[2,25],25:[2,25],26:[2,25],49:[2,25],54:[2,25],57:[2,25],72:[2,25],77:[2,25],85:[2,25],90:[2,25],92:[2,25],97:[2,25],98:[2,25],101:[2,25],103:[2,25],104:[2,25],105:[2,25],109:[2,25],117:[2,25],120:[2,25],122:[2,25],125:[2,25],127:[2,25],128:[2,25],131:[2,25],132:[2,25],133:[2,25],134:[2,25],135:[2,25],136:[2,25]},{1:[2,193],6:[2,193],25:[2,193],26:[2,193],49:[2,193],54:[2,193],57:[2,193],72:[2,193],77:[2,193],85:[2,193],90:[2,193],92:[2,193],101:[2,193],102:87,103:[2,193],104:[2,193],105:[2,193],108:88,109:[2,193],110:69,117:[2,193],125:[2,193],127:[2,193],128:[2,193],131:[1,78],132:[1,81],133:[2,193],134:[2,193],135:[2,193],136:[2,193]},{1:[2,194],6:[2,194],25:[2,194],26:[2,194],49:[2,194],54:[2,194],57:[2,194],72:[2,194],77:[2,194],85:[2,194],90:[2,194],92:[2,194],101:[2,194],102:87,103:[2,194],104:[2,194],105:[2,194],108:88,109:[2,194],110:69,117:[2,194],125:[2,194],127:[2,194],128:[2,194],131:[1,78],132:[1,81],133:[2,194],134:[2,194],135:[2,194],136:[2,194]},{1:[2,195],6:[2,195],25:[2,195],26:[2,195],49:[2,195],54:[2,195],57:[2,195],72:[2,195],77:[2,195],85:[2,195],90:[2,195],92:[2,195],101:[2,195],102:87,103:[2,195],104:[2,195],105:[2,195],108:88,109:[2,195],110:69,117:[2,195],125:[2,195],127:[2,195],128:[2,195],131:[1,78],132:[2,195],133:[2,195],134:[2,195],135:[2,195],136:[2,195]},{1:[2,196],6:[2,196],25:[2,196],26:[2,196],49:[2,196],54:[2,196],57:[2,196],72:[2,196],77:[2,196],85:[2,196],90:[2,196],92:[2,196],101:[2,196],102:87,103:[2,196],104:[2,196],105:[2,196],108:88,109:[2,196],110:69,117:[2,196],125:[2,196],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[2,196],134:[2,196],135:[2,196],136:[2,196]},{1:[2,197],6:[2,197],25:[2,197],26:[2,197],49:[2,197],54:[2,197],57:[2,197],72:[2,197],77:[2,197],85:[2,197],90:[2,197],92:[2,197],101:[2,197],102:87,103:[2,197],104:[2,197],105:[2,197],108:88,109:[2,197],110:69,117:[2,197],125:[2,197],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[2,197],135:[2,197],136:[1,85]},{1:[2,198],6:[2,198],25:[2,198],26:[2,198],49:[2,198],54:[2,198],57:[2,198],72:[2,198],77:[2,198],85:[2,198],90:[2,198],92:[2,198],101:[2,198],102:87,103:[2,198],104:[2,198],105:[2,198],108:88,109:[2,198],110:69,117:[2,198],125:[2,198],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[2,198],136:[1,85]},{1:[2,199],6:[2,199],25:[2,199],26:[2,199],49:[2,199],54:[2,199],57:[2,199],72:[2,199],77:[2,199],85:[2,199],90:[2,199],92:[2,199],101:[2,199],102:87,103:[2,199],104:[2,199],105:[2,199],108:88,109:[2,199],110:69,117:[2,199],125:[2,199],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[2,199],135:[2,199],136:[2,199]},{1:[2,184],6:[2,184],25:[2,184],26:[2,184],49:[2,184],54:[2,184],57:[2,184],72:[2,184],77:[2,184],85:[2,184],90:[2,184],92:[2,184],101:[2,184],102:87,103:[1,65],104:[2,184],105:[1,66],108:88,109:[1,68],110:69,117:[2,184],125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,183],6:[2,183],25:[2,183],26:[2,183],49:[2,183],54:[2,183],57:[2,183],72:[2,183],77:[2,183],85:[2,183],90:[2,183],92:[2,183],101:[2,183],102:87,103:[1,65],104:[2,183],105:[1,66],108:88,109:[1,68],110:69,117:[2,183],125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,103],6:[2,103],25:[2,103],26:[2,103],49:[2,103],54:[2,103],57:[2,103],66:[2,103],67:[2,103],68:[2,103],70:[2,103],72:[2,103],73:[2,103],77:[2,103],83:[2,103],84:[2,103],85:[2,103],90:[2,103],92:[2,103],101:[2,103],103:[2,103],104:[2,103],105:[2,103],109:[2,103],117:[2,103],125:[2,103],127:[2,103],128:[2,103],131:[2,103],132:[2,103],133:[2,103],134:[2,103],135:[2,103],136:[2,103]},{1:[2,80],6:[2,80],25:[2,80],26:[2,80],40:[2,80],49:[2,80],54:[2,80],57:[2,80],66:[2,80],67:[2,80],68:[2,80],70:[2,80],72:[2,80],73:[2,80],77:[2,80],79:[2,80],83:[2,80],84:[2,80],85:[2,80],90:[2,80],92:[2,80],101:[2,80],103:[2,80],104:[2,80],105:[2,80],109:[2,80],117:[2,80],125:[2,80],127:[2,80],128:[2,80],129:[2,80],130:[2,80],131:[2,80],132:[2,80],133:[2,80],134:[2,80],135:[2,80],136:[2,80],137:[2,80]},{1:[2,81],6:[2,81],25:[2,81],26:[2,81],40:[2,81],49:[2,81],54:[2,81],57:[2,81],66:[2,81],67:[2,81],68:[2,81],70:[2,81],72:[2,81],73:[2,81],77:[2,81],79:[2,81],83:[2,81],84:[2,81],85:[2,81],90:[2,81],92:[2,81],101:[2,81],103:[2,81],104:[2,81],105:[2,81],109:[2,81],117:[2,81],125:[2,81],127:[2,81],128:[2,81],129:[2,81],130:[2,81],131:[2,81],132:[2,81],133:[2,81],134:[2,81],135:[2,81],136:[2,81],137:[2,81]},{1:[2,82],6:[2,82],25:[2,82],26:[2,82],40:[2,82],49:[2,82],54:[2,82],57:[2,82],66:[2,82],67:[2,82],68:[2,82],70:[2,82],72:[2,82],73:[2,82],77:[2,82],79:[2,82],83:[2,82],84:[2,82],85:[2,82],90:[2,82],92:[2,82],101:[2,82],103:[2,82],104:[2,82],105:[2,82],109:[2,82],117:[2,82],125:[2,82],127:[2,82],128:[2,82],129:[2,82],130:[2,82],131:[2,82],132:[2,82],133:[2,82],134:[2,82],135:[2,82],136:[2,82],137:[2,82]},{72:[1,239]},{57:[1,192],72:[2,87],91:240,92:[1,191],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{72:[2,88]},{8:241,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,72:[2,122],75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{12:[2,116],28:[2,116],30:[2,116],31:[2,116],33:[2,116],34:[2,116],35:[2,116],36:[2,116],37:[2,116],38:[2,116],45:[2,116],46:[2,116],47:[2,116],51:[2,116],52:[2,116],72:[2,116],75:[2,116],78:[2,116],82:[2,116],87:[2,116],88:[2,116],89:[2,116],95:[2,116],99:[2,116],100:[2,116],103:[2,116],105:[2,116],107:[2,116],109:[2,116],118:[2,116],124:[2,116],126:[2,116],127:[2,116],128:[2,116],129:[2,116],130:[2,116]},{12:[2,117],28:[2,117],30:[2,117],31:[2,117],33:[2,117],34:[2,117],35:[2,117],36:[2,117],37:[2,117],38:[2,117],45:[2,117],46:[2,117],47:[2,117],51:[2,117],52:[2,117],72:[2,117],75:[2,117],78:[2,117],82:[2,117],87:[2,117],88:[2,117],89:[2,117],95:[2,117],99:[2,117],100:[2,117],103:[2,117],105:[2,117],107:[2,117],109:[2,117],118:[2,117],124:[2,117],126:[2,117],127:[2,117],128:[2,117],129:[2,117],130:[2,117]},{1:[2,86],6:[2,86],25:[2,86],26:[2,86],40:[2,86],49:[2,86],54:[2,86],57:[2,86],66:[2,86],67:[2,86],68:[2,86],70:[2,86],72:[2,86],73:[2,86],77:[2,86],79:[2,86],83:[2,86],84:[2,86],85:[2,86],90:[2,86],92:[2,86],101:[2,86],103:[2,86],104:[2,86],105:[2,86],109:[2,86],117:[2,86],125:[2,86],127:[2,86],128:[2,86],129:[2,86],130:[2,86],131:[2,86],132:[2,86],133:[2,86],134:[2,86],135:[2,86],136:[2,86],137:[2,86]},{1:[2,104],6:[2,104],25:[2,104],26:[2,104],49:[2,104],54:[2,104],57:[2,104],66:[2,104],67:[2,104],68:[2,104],70:[2,104],72:[2,104],73:[2,104],77:[2,104],83:[2,104],84:[2,104],85:[2,104],90:[2,104],92:[2,104],101:[2,104],103:[2,104],104:[2,104],105:[2,104],109:[2,104],117:[2,104],125:[2,104],127:[2,104],128:[2,104],131:[2,104],132:[2,104],133:[2,104],134:[2,104],135:[2,104],136:[2,104]},{1:[2,36],6:[2,36],25:[2,36],26:[2,36],49:[2,36],54:[2,36],57:[2,36],72:[2,36],77:[2,36],85:[2,36],90:[2,36],92:[2,36],101:[2,36],102:87,103:[2,36],104:[2,36],105:[2,36],108:88,109:[2,36],110:69,117:[2,36],125:[2,36],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{8:242,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:243,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,109],6:[2,109],25:[2,109],26:[2,109],49:[2,109],54:[2,109],57:[2,109],66:[2,109],67:[2,109],68:[2,109],70:[2,109],72:[2,109],73:[2,109],77:[2,109],83:[2,109],84:[2,109],85:[2,109],90:[2,109],92:[2,109],101:[2,109],103:[2,109],104:[2,109],105:[2,109],109:[2,109],117:[2,109],125:[2,109],127:[2,109],128:[2,109],131:[2,109],132:[2,109],133:[2,109],134:[2,109],135:[2,109],136:[2,109]},{6:[2,53],25:[2,53],53:244,54:[1,227],85:[2,53]},{6:[2,128],25:[2,128],26:[2,128],54:[2,128],57:[1,245],85:[2,128],90:[2,128],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{50:246,51:[1,60],52:[1,61]},{6:[2,54],25:[2,54],26:[2,54],27:109,28:[1,73],44:110,55:247,56:108,58:111,59:112,75:[1,70],88:[1,113],89:[1,114]},{6:[1,248],25:[1,249]},{6:[2,61],25:[2,61],26:[2,61],49:[2,61],54:[2,61]},{8:250,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,200],6:[2,200],25:[2,200],26:[2,200],49:[2,200],54:[2,200],57:[2,200],72:[2,200],77:[2,200],85:[2,200],90:[2,200],92:[2,200],101:[2,200],102:87,103:[2,200],104:[2,200],105:[2,200],108:88,109:[2,200],110:69,117:[2,200],125:[2,200],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{8:251,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:252,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,203],6:[2,203],25:[2,203],26:[2,203],49:[2,203],54:[2,203],57:[2,203],72:[2,203],77:[2,203],85:[2,203],90:[2,203],92:[2,203],101:[2,203],102:87,103:[2,203],104:[2,203],105:[2,203],108:88,109:[2,203],110:69,117:[2,203],125:[2,203],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,182],6:[2,182],25:[2,182],26:[2,182],49:[2,182],54:[2,182],57:[2,182],72:[2,182],77:[2,182],85:[2,182],90:[2,182],92:[2,182],101:[2,182],103:[2,182],104:[2,182],105:[2,182],109:[2,182],117:[2,182],125:[2,182],127:[2,182],128:[2,182],131:[2,182],132:[2,182],133:[2,182],134:[2,182],135:[2,182],136:[2,182]},{8:253,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,133],6:[2,133],25:[2,133],26:[2,133],49:[2,133],54:[2,133],57:[2,133],72:[2,133],77:[2,133],85:[2,133],90:[2,133],92:[2,133],97:[1,254],101:[2,133],103:[2,133],104:[2,133],105:[2,133],109:[2,133],117:[2,133],125:[2,133],127:[2,133],128:[2,133],131:[2,133],132:[2,133],133:[2,133],134:[2,133],135:[2,133],136:[2,133]},{5:255,25:[1,5]},{27:256,28:[1,73],59:257,75:[1,70]},{119:258,121:217,122:[1,218]},{26:[1,259],120:[1,260],121:261,122:[1,218]},{26:[2,175],120:[2,175],122:[2,175]},{8:263,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],94:262,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,97],5:264,6:[2,97],25:[1,5],26:[2,97],49:[2,97],54:[2,97],57:[2,97],72:[2,97],77:[2,97],85:[2,97],90:[2,97],92:[2,97],101:[2,97],102:87,103:[1,65],104:[2,97],105:[1,66],108:88,109:[1,68],110:69,117:[2,97],125:[2,97],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,100],6:[2,100],25:[2,100],26:[2,100],49:[2,100],54:[2,100],57:[2,100],72:[2,100],77:[2,100],85:[2,100],90:[2,100],92:[2,100],101:[2,100],103:[2,100],104:[2,100],105:[2,100],109:[2,100],117:[2,100],125:[2,100],127:[2,100],128:[2,100],131:[2,100],132:[2,100],133:[2,100],134:[2,100],135:[2,100],136:[2,100]},{8:265,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,139],6:[2,139],25:[2,139],26:[2,139],49:[2,139],54:[2,139],57:[2,139],66:[2,139],67:[2,139],68:[2,139],70:[2,139],72:[2,139],73:[2,139],77:[2,139],83:[2,139],84:[2,139],85:[2,139],90:[2,139],92:[2,139],101:[2,139],103:[2,139],104:[2,139],105:[2,139],109:[2,139],117:[2,139],125:[2,139],127:[2,139],128:[2,139],131:[2,139],132:[2,139],133:[2,139],134:[2,139],135:[2,139],136:[2,139]},{6:[1,74],26:[1,266]},{8:267,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,67],12:[2,117],25:[2,67],28:[2,117],30:[2,117],31:[2,117],33:[2,117],34:[2,117],35:[2,117],36:[2,117],37:[2,117],38:[2,117],45:[2,117],46:[2,117],47:[2,117],51:[2,117],52:[2,117],54:[2,67],75:[2,117],78:[2,117],82:[2,117],87:[2,117],88:[2,117],89:[2,117],90:[2,67],95:[2,117],99:[2,117],100:[2,117],103:[2,117],105:[2,117],107:[2,117],109:[2,117],118:[2,117],124:[2,117],126:[2,117],127:[2,117],128:[2,117],129:[2,117],130:[2,117]},{6:[1,269],25:[1,270],90:[1,268]},{6:[2,54],8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[2,54],26:[2,54],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],85:[2,54],87:[1,58],88:[1,59],89:[1,57],90:[2,54],93:271,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,53],25:[2,53],26:[2,53],53:272,54:[1,227]},{1:[2,179],6:[2,179],25:[2,179],26:[2,179],49:[2,179],54:[2,179],57:[2,179],72:[2,179],77:[2,179],85:[2,179],90:[2,179],92:[2,179],101:[2,179],103:[2,179],104:[2,179],105:[2,179],109:[2,179],117:[2,179],120:[2,179],125:[2,179],127:[2,179],128:[2,179],131:[2,179],132:[2,179],133:[2,179],134:[2,179],135:[2,179],136:[2,179]},{8:273,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:274,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{115:[2,157],116:[2,157]},{27:158,28:[1,73],44:159,58:160,59:161,75:[1,70],88:[1,113],89:[1,114],114:275},{1:[2,164],6:[2,164],25:[2,164],26:[2,164],49:[2,164],54:[2,164],57:[2,164],72:[2,164],77:[2,164],85:[2,164],90:[2,164],92:[2,164],101:[2,164],102:87,103:[2,164],104:[1,276],105:[2,164],108:88,109:[2,164],110:69,117:[1,277],125:[2,164],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,165],6:[2,165],25:[2,165],26:[2,165],49:[2,165],54:[2,165],57:[2,165],72:[2,165],77:[2,165],85:[2,165],90:[2,165],92:[2,165],101:[2,165],102:87,103:[2,165],104:[1,278],105:[2,165],108:88,109:[2,165],110:69,117:[2,165],125:[2,165],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[1,280],25:[1,281],77:[1,279]},{6:[2,54],11:168,25:[2,54],26:[2,54],27:169,28:[1,73],29:170,30:[1,71],31:[1,72],41:282,42:167,44:171,46:[1,46],77:[2,54],88:[1,113]},{8:283,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,284],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,85],6:[2,85],25:[2,85],26:[2,85],40:[2,85],49:[2,85],54:[2,85],57:[2,85],66:[2,85],67:[2,85],68:[2,85],70:[2,85],72:[2,85],73:[2,85],77:[2,85],79:[2,85],83:[2,85],84:[2,85],85:[2,85],90:[2,85],92:[2,85],101:[2,85],103:[2,85],104:[2,85],105:[2,85],109:[2,85],117:[2,85],125:[2,85],127:[2,85],128:[2,85],129:[2,85],130:[2,85],131:[2,85],132:[2,85],133:[2,85],134:[2,85],135:[2,85],136:[2,85],137:[2,85]},{8:285,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,72:[2,120],75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{72:[2,121],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,37],6:[2,37],25:[2,37],26:[2,37],49:[2,37],54:[2,37],57:[2,37],72:[2,37],77:[2,37],85:[2,37],90:[2,37],92:[2,37],101:[2,37],102:87,103:[2,37],104:[2,37],105:[2,37],108:88,109:[2,37],110:69,117:[2,37],125:[2,37],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{26:[1,286],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[1,269],25:[1,270],85:[1,287]},{6:[2,67],25:[2,67],26:[2,67],54:[2,67],85:[2,67],90:[2,67]},{5:288,25:[1,5]},{6:[2,57],25:[2,57],26:[2,57],49:[2,57],54:[2,57]},{27:109,28:[1,73],44:110,55:289,56:108,58:111,59:112,75:[1,70],88:[1,113],89:[1,114]},{6:[2,55],25:[2,55],26:[2,55],27:109,28:[1,73],44:110,48:290,54:[2,55],55:107,56:108,58:111,59:112,75:[1,70],88:[1,113],89:[1,114]},{6:[2,62],25:[2,62],26:[2,62],49:[2,62],54:[2,62],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{26:[1,291],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,202],6:[2,202],25:[2,202],26:[2,202],49:[2,202],54:[2,202],57:[2,202],72:[2,202],77:[2,202],85:[2,202],90:[2,202],92:[2,202],101:[2,202],102:87,103:[2,202],104:[2,202],105:[2,202],108:88,109:[2,202],110:69,117:[2,202],125:[2,202],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{5:292,25:[1,5],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{5:293,25:[1,5]},{1:[2,134],6:[2,134],25:[2,134],26:[2,134],49:[2,134],54:[2,134],57:[2,134],72:[2,134],77:[2,134],85:[2,134],90:[2,134],92:[2,134],101:[2,134],103:[2,134],104:[2,134],105:[2,134],109:[2,134],117:[2,134],125:[2,134],127:[2,134],128:[2,134],131:[2,134],132:[2,134],133:[2,134],134:[2,134],135:[2,134],136:[2,134]},{5:294,25:[1,5]},{5:295,25:[1,5]},{26:[1,296],120:[1,297],121:261,122:[1,218]},{1:[2,173],6:[2,173],25:[2,173],26:[2,173],49:[2,173],54:[2,173],57:[2,173],72:[2,173],77:[2,173],85:[2,173],90:[2,173],92:[2,173],101:[2,173],103:[2,173],104:[2,173],105:[2,173],109:[2,173],117:[2,173],125:[2,173],127:[2,173],128:[2,173],131:[2,173],132:[2,173],133:[2,173],134:[2,173],135:[2,173],136:[2,173]},{5:298,25:[1,5]},{26:[2,176],120:[2,176],122:[2,176]},{5:299,25:[1,5],54:[1,300]},{25:[2,130],54:[2,130],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,98],6:[2,98],25:[2,98],26:[2,98],49:[2,98],54:[2,98],57:[2,98],72:[2,98],77:[2,98],85:[2,98],90:[2,98],92:[2,98],101:[2,98],103:[2,98],104:[2,98],105:[2,98],109:[2,98],117:[2,98],125:[2,98],127:[2,98],128:[2,98],131:[2,98],132:[2,98],133:[2,98],134:[2,98],135:[2,98],136:[2,98]},{1:[2,101],5:301,6:[2,101],25:[1,5],26:[2,101],49:[2,101],54:[2,101],57:[2,101],72:[2,101],77:[2,101],85:[2,101],90:[2,101],92:[2,101],101:[2,101],102:87,103:[1,65],104:[2,101],105:[1,66],108:88,109:[1,68],110:69,117:[2,101],125:[2,101],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{101:[1,302]},{90:[1,303],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,115],6:[2,115],25:[2,115],26:[2,115],40:[2,115],49:[2,115],54:[2,115],57:[2,115],66:[2,115],67:[2,115],68:[2,115],70:[2,115],72:[2,115],73:[2,115],77:[2,115],83:[2,115],84:[2,115],85:[2,115],90:[2,115],92:[2,115],101:[2,115],103:[2,115],104:[2,115],105:[2,115],109:[2,115],115:[2,115],116:[2,115],117:[2,115],125:[2,115],127:[2,115],128:[2,115],131:[2,115],132:[2,115],133:[2,115],134:[2,115],135:[2,115],136:[2,115]},{8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],93:304,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,146],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],86:305,87:[1,58],88:[1,59],89:[1,57],93:145,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,124],25:[2,124],26:[2,124],54:[2,124],85:[2,124],90:[2,124]},{6:[1,269],25:[1,270],26:[1,306]},{1:[2,142],6:[2,142],25:[2,142],26:[2,142],49:[2,142],54:[2,142],57:[2,142],72:[2,142],77:[2,142],85:[2,142],90:[2,142],92:[2,142],101:[2,142],102:87,103:[1,65],104:[2,142],105:[1,66],108:88,109:[1,68],110:69,117:[2,142],125:[2,142],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,144],6:[2,144],25:[2,144],26:[2,144],49:[2,144],54:[2,144],57:[2,144],72:[2,144],77:[2,144],85:[2,144],90:[2,144],92:[2,144],101:[2,144],102:87,103:[1,65],104:[2,144],105:[1,66],108:88,109:[1,68],110:69,117:[2,144],125:[2,144],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{115:[2,163],116:[2,163]},{8:307,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:308,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:309,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,89],6:[2,89],25:[2,89],26:[2,89],40:[2,89],49:[2,89],54:[2,89],57:[2,89],66:[2,89],67:[2,89],68:[2,89],70:[2,89],72:[2,89],73:[2,89],77:[2,89],83:[2,89],84:[2,89],85:[2,89],90:[2,89],92:[2,89],101:[2,89],103:[2,89],104:[2,89],105:[2,89],109:[2,89],115:[2,89],116:[2,89],117:[2,89],125:[2,89],127:[2,89],128:[2,89],131:[2,89],132:[2,89],133:[2,89],134:[2,89],135:[2,89],136:[2,89]},{11:168,27:169,28:[1,73],29:170,30:[1,71],31:[1,72],41:310,42:167,44:171,46:[1,46],88:[1,113]},{6:[2,90],11:168,25:[2,90],26:[2,90],27:169,28:[1,73],29:170,30:[1,71],31:[1,72],41:166,42:167,44:171,46:[1,46],54:[2,90],76:311,88:[1,113]},{6:[2,92],25:[2,92],26:[2,92],54:[2,92],77:[2,92]},{6:[2,40],25:[2,40],26:[2,40],54:[2,40],77:[2,40],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{8:312,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{72:[2,119],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,38],6:[2,38],25:[2,38],26:[2,38],49:[2,38],54:[2,38],57:[2,38],72:[2,38],77:[2,38],85:[2,38],90:[2,38],92:[2,38],101:[2,38],103:[2,38],104:[2,38],105:[2,38],109:[2,38],117:[2,38],125:[2,38],127:[2,38],128:[2,38],131:[2,38],132:[2,38],133:[2,38],134:[2,38],135:[2,38],136:[2,38]},{1:[2,110],6:[2,110],25:[2,110],26:[2,110],49:[2,110],54:[2,110],57:[2,110],66:[2,110],67:[2,110],68:[2,110],70:[2,110],72:[2,110],73:[2,110],77:[2,110],83:[2,110],84:[2,110],85:[2,110],90:[2,110],92:[2,110],101:[2,110],103:[2,110],104:[2,110],105:[2,110],109:[2,110],117:[2,110],125:[2,110],127:[2,110],128:[2,110],131:[2,110],132:[2,110],133:[2,110],134:[2,110],135:[2,110],136:[2,110]},{1:[2,49],6:[2,49],25:[2,49],26:[2,49],49:[2,49],54:[2,49],57:[2,49],72:[2,49],77:[2,49],85:[2,49],90:[2,49],92:[2,49],101:[2,49],103:[2,49],104:[2,49],105:[2,49],109:[2,49],117:[2,49],125:[2,49],127:[2,49],128:[2,49],131:[2,49],132:[2,49],133:[2,49],134:[2,49],135:[2,49],136:[2,49]},{6:[2,58],25:[2,58],26:[2,58],49:[2,58],54:[2,58]},{6:[2,53],25:[2,53],26:[2,53],53:313,54:[1,202]},{1:[2,201],6:[2,201],25:[2,201],26:[2,201],49:[2,201],54:[2,201],57:[2,201],72:[2,201],77:[2,201],85:[2,201],90:[2,201],92:[2,201],101:[2,201],103:[2,201],104:[2,201],105:[2,201],109:[2,201],117:[2,201],125:[2,201],127:[2,201],128:[2,201],131:[2,201],132:[2,201],133:[2,201],134:[2,201],135:[2,201],136:[2,201]},{1:[2,180],6:[2,180],25:[2,180],26:[2,180],49:[2,180],54:[2,180],57:[2,180],72:[2,180],77:[2,180],85:[2,180],90:[2,180],92:[2,180],101:[2,180],103:[2,180],104:[2,180],105:[2,180],109:[2,180],117:[2,180],120:[2,180],125:[2,180],127:[2,180],128:[2,180],131:[2,180],132:[2,180],133:[2,180],134:[2,180],135:[2,180],136:[2,180]},{1:[2,135],6:[2,135],25:[2,135],26:[2,135],49:[2,135],54:[2,135],57:[2,135],72:[2,135],77:[2,135],85:[2,135],90:[2,135],92:[2,135],101:[2,135],103:[2,135],104:[2,135],105:[2,135],109:[2,135],117:[2,135],125:[2,135],127:[2,135],128:[2,135],131:[2,135],132:[2,135],133:[2,135],134:[2,135],135:[2,135],136:[2,135]},{1:[2,136],6:[2,136],25:[2,136],26:[2,136],49:[2,136],54:[2,136],57:[2,136],72:[2,136],77:[2,136],85:[2,136],90:[2,136],92:[2,136],97:[2,136],101:[2,136],103:[2,136],104:[2,136],105:[2,136],109:[2,136],117:[2,136],125:[2,136],127:[2,136],128:[2,136],131:[2,136],132:[2,136],133:[2,136],134:[2,136],135:[2,136],136:[2,136]},{1:[2,137],6:[2,137],25:[2,137],26:[2,137],49:[2,137],54:[2,137],57:[2,137],72:[2,137],77:[2,137],85:[2,137],90:[2,137],92:[2,137],97:[2,137],101:[2,137],103:[2,137],104:[2,137],105:[2,137],109:[2,137],117:[2,137],125:[2,137],127:[2,137],128:[2,137],131:[2,137],132:[2,137],133:[2,137],134:[2,137],135:[2,137],136:[2,137]},{1:[2,171],6:[2,171],25:[2,171],26:[2,171],49:[2,171],54:[2,171],57:[2,171],72:[2,171],77:[2,171],85:[2,171],90:[2,171],92:[2,171],101:[2,171],103:[2,171],104:[2,171],105:[2,171],109:[2,171],117:[2,171],125:[2,171],127:[2,171],128:[2,171],131:[2,171],132:[2,171],133:[2,171],134:[2,171],135:[2,171],136:[2,171]},{5:314,25:[1,5]},{26:[1,315]},{6:[1,316],26:[2,177],120:[2,177],122:[2,177]},{8:317,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,102],6:[2,102],25:[2,102],26:[2,102],49:[2,102],54:[2,102],57:[2,102],72:[2,102],77:[2,102],85:[2,102],90:[2,102],92:[2,102],101:[2,102],103:[2,102],104:[2,102],105:[2,102],109:[2,102],117:[2,102],125:[2,102],127:[2,102],128:[2,102],131:[2,102],132:[2,102],133:[2,102],134:[2,102],135:[2,102],136:[2,102]},{1:[2,140],6:[2,140],25:[2,140],26:[2,140],49:[2,140],54:[2,140],57:[2,140],66:[2,140],67:[2,140],68:[2,140],70:[2,140],72:[2,140],73:[2,140],77:[2,140],83:[2,140],84:[2,140],85:[2,140],90:[2,140],92:[2,140],101:[2,140],103:[2,140],104:[2,140],105:[2,140],109:[2,140],117:[2,140],125:[2,140],127:[2,140],128:[2,140],131:[2,140],132:[2,140],133:[2,140],134:[2,140],135:[2,140],136:[2,140]},{1:[2,118],6:[2,118],25:[2,118],26:[2,118],49:[2,118],54:[2,118],57:[2,118],66:[2,118],67:[2,118],68:[2,118],70:[2,118],72:[2,118],73:[2,118],77:[2,118],83:[2,118],84:[2,118],85:[2,118],90:[2,118],92:[2,118],101:[2,118],103:[2,118],104:[2,118],105:[2,118],109:[2,118],117:[2,118],125:[2,118],127:[2,118],128:[2,118],131:[2,118],132:[2,118],133:[2,118],134:[2,118],135:[2,118],136:[2,118]},{6:[2,125],25:[2,125],26:[2,125],54:[2,125],85:[2,125],90:[2,125]},{6:[2,53],25:[2,53],26:[2,53],53:318,54:[1,227]},{6:[2,126],25:[2,126],26:[2,126],54:[2,126],85:[2,126],90:[2,126]},{1:[2,166],6:[2,166],25:[2,166],26:[2,166],49:[2,166],54:[2,166],57:[2,166],72:[2,166],77:[2,166],85:[2,166],90:[2,166],92:[2,166],101:[2,166],102:87,103:[2,166],104:[2,166],105:[2,166],108:88,109:[2,166],110:69,117:[1,319],125:[2,166],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,168],6:[2,168],25:[2,168],26:[2,168],49:[2,168],54:[2,168],57:[2,168],72:[2,168],77:[2,168],85:[2,168],90:[2,168],92:[2,168],101:[2,168],102:87,103:[2,168],104:[1,320],105:[2,168],108:88,109:[2,168],110:69,117:[2,168],125:[2,168],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,167],6:[2,167],25:[2,167],26:[2,167],49:[2,167],54:[2,167],57:[2,167],72:[2,167],77:[2,167],85:[2,167],90:[2,167],92:[2,167],101:[2,167],102:87,103:[2,167],104:[2,167],105:[2,167],108:88,109:[2,167],110:69,117:[2,167],125:[2,167],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[2,93],25:[2,93],26:[2,93],54:[2,93],77:[2,93]},{6:[2,53],25:[2,53],26:[2,53],53:321,54:[1,237]},{26:[1,322],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[1,248],25:[1,249],26:[1,323]},{26:[1,324]},{1:[2,174],6:[2,174],25:[2,174],26:[2,174],49:[2,174],54:[2,174],57:[2,174],72:[2,174],77:[2,174],85:[2,174],90:[2,174],92:[2,174],101:[2,174],103:[2,174],104:[2,174],105:[2,174],109:[2,174],117:[2,174],125:[2,174],127:[2,174],128:[2,174],131:[2,174],132:[2,174],133:[2,174],134:[2,174],135:[2,174],136:[2,174]},{26:[2,178],120:[2,178],122:[2,178]},{25:[2,131],54:[2,131],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[1,269],25:[1,270],26:[1,325]},{8:326,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:327,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[1,280],25:[1,281],26:[1,328]},{6:[2,41],25:[2,41],26:[2,41],54:[2,41],77:[2,41]},{6:[2,59],25:[2,59],26:[2,59],49:[2,59],54:[2,59]},{1:[2,172],6:[2,172],25:[2,172],26:[2,172],49:[2,172],54:[2,172],57:[2,172],72:[2,172],77:[2,172],85:[2,172],90:[2,172],92:[2,172],101:[2,172],103:[2,172],104:[2,172],105:[2,172],109:[2,172],117:[2,172],125:[2,172],127:[2,172],128:[2,172],131:[2,172],132:[2,172],133:[2,172],134:[2,172],135:[2,172],136:[2,172]},{6:[2,127],25:[2,127],26:[2,127],54:[2,127],85:[2,127],90:[2,127]},{1:[2,169],6:[2,169],25:[2,169],26:[2,169],49:[2,169],54:[2,169],57:[2,169],72:[2,169],77:[2,169],85:[2,169],90:[2,169],92:[2,169],101:[2,169],102:87,103:[2,169],104:[2,169],105:[2,169],108:88,109:[2,169],110:69,117:[2,169],125:[2,169],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,170],6:[2,170],25:[2,170],26:[2,170],49:[2,170],54:[2,170],57:[2,170],72:[2,170],77:[2,170],85:[2,170],90:[2,170],92:[2,170],101:[2,170],102:87,103:[2,170],104:[2,170],105:[2,170],108:88,109:[2,170],110:69,117:[2,170],125:[2,170],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[2,94],25:[2,94],26:[2,94],54:[2,94],77:[2,94]}],defaultActions:{60:[2,51],61:[2,52],75:[2,3],94:[2,108],189:[2,88]},parseError:function(t){throw Error(t) -},parse:function(t){function e(){var t;return t=n.lexer.lex()||1,"number"!=typeof t&&(t=n.symbols_[t]||t),t}var n=this,i=[0],r=[null],s=[],a=this.table,o="",c=0,h=0,l=0;this.lexer.setInput(t),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,this.lexer.yylloc===void 0&&(this.lexer.yylloc={});var p=this.lexer.yylloc;s.push(p);var u=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var d,f,m,b,y,v,g,w,k,E={};;){if(m=i[i.length-1],this.defaultActions[m]?b=this.defaultActions[m]:((null===d||d===void 0)&&(d=e()),b=a[m]&&a[m][d]),b===void 0||!b.length||!b[0]){var L="";if(!l){k=[];for(v in a[m])this.terminals_[v]&&v>2&&k.push("'"+this.terminals_[v]+"'");L=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[d]||d)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==d?"end of input":"'"+(this.terminals_[d]||d)+"'"),this.parseError(L,{text:this.lexer.match,token:this.terminals_[d]||d,line:this.lexer.yylineno,loc:p,expected:k})}}if(b[0]instanceof Array&&b.length>1)throw Error("Parse Error: multiple actions possible at state: "+m+", token: "+d);switch(b[0]){case 1:i.push(d),r.push(this.lexer.yytext),s.push(this.lexer.yylloc),i.push(b[1]),d=null,f?(d=f,f=null):(h=this.lexer.yyleng,o=this.lexer.yytext,c=this.lexer.yylineno,p=this.lexer.yylloc,l>0&&l--);break;case 2:if(g=this.productions_[b[1]][1],E.$=r[r.length-g],E._$={first_line:s[s.length-(g||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(g||1)].first_column,last_column:s[s.length-1].last_column},u&&(E._$.range=[s[s.length-(g||1)].range[0],s[s.length-1].range[1]]),y=this.performAction.call(E,o,h,c,this.yy,b[1],r,s),y!==void 0)return y;g&&(i=i.slice(0,2*-1*g),r=r.slice(0,-1*g),s=s.slice(0,-1*g)),i.push(this.productions_[b[1]][0]),r.push(E.$),s.push(E._$),w=a[i[i.length-2]][i[i.length-1]],i.push(w);break;case 3:return!0}}return!0}};return t.prototype=e,e.Parser=t,new t}();require!==void 0&&t!==void 0&&(t.parser=e,t.Parser=e.Parser,t.parse=function(){return e.parse.apply(e,arguments)},t.main=function(e){if(!e[1])throw Error("Usage: "+e[0]+" FILE");var n;return n="undefined"!=typeof process?require("fs").readFileSync(require("path").resolve(e[1]),"utf8"):require("file").path(require("file").cwd()).join(e[1]).read({charset:"utf-8"}),t.parser.parse(n)},"undefined"!=typeof module&&require.main===module&&t.main("undefined"!=typeof process?process.argv.slice(1):require("system").args))},require["./scope"]=new function(){var t=this;(function(){var e,n,i,r;r=require("./helpers"),n=r.extend,i=r.last,t.Scope=e=function(){function t(e,n,i){this.parent=e,this.expressions=n,this.method=i,this.variables=[{name:"arguments",type:"arguments"}],this.positions={},this.parent||(t.root=this)}return t.root=null,t.prototype.add=function(t,e,n){return this.shared&&!n?this.parent.add(t,e,n):Object.prototype.hasOwnProperty.call(this.positions,t)?this.variables[this.positions[t]].type=e:this.positions[t]=this.variables.push({name:t,type:e})-1},t.prototype.namedMethod=function(){return this.method.name||!this.parent?this.method:this.parent.namedMethod()},t.prototype.find=function(t){return this.check(t)?!0:(this.add(t,"var"),!1)},t.prototype.parameter=function(t){return this.shared&&this.parent.check(t,!0)?void 0:this.add(t,"param")},t.prototype.check=function(t){var e;return!!(this.type(t)||(null!=(e=this.parent)?e.check(t):void 0))},t.prototype.temporary=function(t,e){return t.length>1?"_"+t+(e>1?e-1:""):"_"+(e+parseInt(t,36)).toString(36).replace(/\d/g,"a")},t.prototype.type=function(t){var e,n,i,r;for(r=this.variables,n=0,i=r.length;i>n;n++)if(e=r[n],e.name===t)return e.type;return null},t.prototype.freeVariable=function(t,e){var n,i;for(null==e&&(e=!0),n=0;this.check(i=this.temporary(t,n));)n++;return e&&this.add(i,"var",!0),i},t.prototype.assign=function(t,e){return this.add(t,{value:e,assigned:!0},!0),this.hasAssignments=!0},t.prototype.hasDeclarations=function(){return!!this.declaredVariables().length},t.prototype.declaredVariables=function(){var t,e,n,i,r,s;for(t=[],e=[],s=this.variables,i=0,r=s.length;r>i;i++)n=s[i],"var"===n.type&&("_"===n.name.charAt(0)?e:t).push(n.name);return t.sort().concat(e.sort())},t.prototype.assignedVariables=function(){var t,e,n,i,r;for(i=this.variables,r=[],e=0,n=i.length;n>e;e++)t=i[e],t.type.assigned&&r.push(""+t.name+" = "+t.type.value);return r},t}()}).call(this)},require["./nodes"]=new function(){var t=this;(function(){var e,n,i,r,s,a,o,c,h,l,p,u,d,f,m,b,y,v,g,w,k,E,L,N,T,x,D,S,F,R,I,A,$,_,C,O,j,M,P,V,U,B,H,q,G,W,X,Y,K,z,J,Z,Q,te,ee,ne,ie,re,se,ae,oe,ce,he,le,pe,ue,de={}.hasOwnProperty,fe=function(t,e){function n(){this.constructor=t}for(var i in e)de.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},me=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};P=require("./scope").Scope,pe=require("./lexer"),_=pe.RESERVED,M=pe.STRICT_PROSCRIBED,ue=require("./helpers"),Z=ue.compact,ne=ue.flatten,ee=ue.extend,se=ue.merge,Q=ue.del,ce=ue.starts,te=ue.ends,ie=ue.last,oe=ue.some,J=ue.addLocationDataFn,re=ue.locationDataToString,t.extend=ee,t.addLocationDataFn=J,z=function(){return!0},F=function(){return!1},q=function(){return this},S=function(){return this.negated=!this.negated,this},t.Base=r=function(){function t(){}return t.prototype.compile=function(t,e){var n;return t=ee({},t),e&&(t.level=e),n=this.unfoldSoak(t)||this,n.tab=t.indent,t.level!==T&&n.isStatement(t)?n.compileClosure(t):n.compileNode(t)},t.prototype.compileClosure=function(t){if(this.jumps())throw SyntaxError("cannot use a pure statement in an expression.");return t.sharedScope=!0,c.wrap(this).compileNode(t)},t.prototype.cache=function(t,e,n){var r,s;return this.isComplex()?(r=new x(n||t.scope.freeVariable("ref")),s=new i(r,this),e?[s.compile(t,e),r.value]:[s,r]):(r=e?this.compile(t,e):this,[r,r])},t.prototype.makeReturn=function(t){var e;return e=this.unwrapAll(),t?new a(new x(""+t+".push"),[e]):new O(e)},t.prototype.contains=function(t){var e;return e=!1,this.traverseChildren(!1,function(n){return t(n)?(e=!0,!1):void 0}),e},t.prototype.containsType=function(t){return this instanceof t||this.contains(function(e){return e instanceof t})},t.prototype.lastNonComment=function(t){var e;for(e=t.length;e--;)if(!(t[e]instanceof l))return t[e];return null},t.prototype.toString=function(t,e){var n,i;return null==t&&(t=""),null==e&&(e=this.constructor.name),n=this.locationData?re(this.locationData):"??",i="\n"+t+n+": "+e,this.soak&&(i+="?"),this.eachChild(function(e){return i+=e.toString(t+H)}),i},t.prototype.eachChild=function(t){var e,n,i,r,s,a,o,c;if(!this.children)return this;for(o=this.children,i=0,s=o.length;s>i;i++)if(e=o[i],this[e])for(c=ne([this[e]]),r=0,a=c.length;a>r;r++)if(n=c[r],t(n)===!1)return this;return this},t.prototype.traverseChildren=function(t,e){return this.eachChild(function(n){return e(n)===!1?!1:n.traverseChildren(t,e)})},t.prototype.invert=function(){return I.create("!",this)},t.prototype.unwrapAll=function(){var t;for(t=this;t!==(t=t.unwrap()););return t},t.prototype.children=[],t.prototype.isStatement=F,t.prototype.jumps=F,t.prototype.isComplex=z,t.prototype.isChainable=F,t.prototype.isAssignable=F,t.prototype.unwrap=q,t.prototype.unfoldSoak=F,t.prototype.assigns=F,t.prototype.updateLocationDataIfMissing=function(t){return this.locationData||(this.locationData={},ee(this.locationData,t)),this.eachChild(function(e){return e.updateLocationDataIfMissing(t)})},t}(),t.Block=s=function(t){function e(t){this.expressions=Z(ne(t||[]))}return fe(e,t),e.prototype.children=["expressions"],e.prototype.push=function(t){return this.expressions.push(t),this},e.prototype.pop=function(){return this.expressions.pop()},e.prototype.unshift=function(t){return this.expressions.unshift(t),this},e.prototype.unwrap=function(){return 1===this.expressions.length?this.expressions[0]:this},e.prototype.isEmpty=function(){return!this.expressions.length},e.prototype.isStatement=function(t){var e,n,i,r;for(r=this.expressions,n=0,i=r.length;i>n;n++)if(e=r[n],e.isStatement(t))return!0;return!1},e.prototype.jumps=function(t){var e,n,i,r;for(r=this.expressions,n=0,i=r.length;i>n;n++)if(e=r[n],e.jumps(t))return e},e.prototype.makeReturn=function(t){var e,n;for(n=this.expressions.length;n--;)if(e=this.expressions[n],!(e instanceof l)){this.expressions[n]=e.makeReturn(t),e instanceof O&&!e.expression&&this.expressions.splice(n,1);break}return this},e.prototype.compile=function(t,n){return null==t&&(t={}),t.scope?e.__super__.compile.call(this,t,n):this.compileRoot(t)},e.prototype.compileNode=function(t){var n,i,r,s,a,o,c;for(this.tab=t.indent,s=t.level===T,i=[],c=this.expressions,a=0,o=c.length;o>a;a++)r=c[a],r=r.unwrapAll(),r=r.unfoldSoak(t)||r,r instanceof e?i.push(r.compileNode(t)):s?(r.front=!0,n=r.compile(t),r.isStatement(t)||(n=""+this.tab+n+";"),i.push(n)):i.push(r.compile(t,E));return s?this.spaced?"\n"+i.join("\n\n")+"\n":i.join("\n"):(n=i.join(", ")||"void 0",i.length>1&&t.level>=E?"("+n+")":n)},e.prototype.compileRoot=function(t){var e,n,i,r,s,a;return t.indent=t.bare?"":H,t.scope=new P(null,this,null),t.level=T,this.spaced=!0,r="",t.bare||(s=function(){var t,e,r,s;for(r=this.expressions,s=[],i=t=0,e=r.length;e>t&&(n=r[i],n.unwrap()instanceof l);i=++t)s.push(n);return s}.call(this),a=this.expressions.slice(s.length),this.expressions=s,s.length&&(r=""+this.compileNode(se(t,{indent:""}))+"\n"),this.expressions=a),e=this.compileWithDeclarations(t),t.bare?e:""+r+"(function() {\n"+e+"\n}).call(this);\n"},e.prototype.compileWithDeclarations=function(t){var e,n,i,r,s,a,o,c,h,p,u,d,f,m;for(n=a="",d=this.expressions,s=p=0,u=d.length;u>p&&(r=d[s],r=r.unwrap(),r instanceof l||r instanceof x);s=++p);return t=se(t,{level:T}),s&&(o=this.expressions.splice(s,9e9),f=[this.spaced,!1],h=f[0],this.spaced=f[1],m=[this.compileNode(t),h],n=m[0],this.spaced=m[1],this.expressions=o),a=this.compileNode(t),c=t.scope,c.expressions===this&&(i=t.scope.hasDeclarations(),e=c.hasAssignments,(i||e)&&(s&&(n+="\n"),n+=""+this.tab+"var ",i&&(n+=c.declaredVariables().join(", ")),e&&(i&&(n+=",\n"+(this.tab+H)),n+=c.assignedVariables().join(",\n"+(this.tab+H))),n+=";\n")),n+a},e.wrap=function(t){return 1===t.length&&t[0]instanceof e?t[0]:new e(t)},e}(r),t.Literal=x=function(t){function e(t){this.value=t}return fe(e,t),e.prototype.makeReturn=function(){return this.isStatement()?this:e.__super__.makeReturn.apply(this,arguments)},e.prototype.isAssignable=function(){return f.test(this.value)},e.prototype.isStatement=function(){var t;return"break"===(t=this.value)||"continue"===t||"debugger"===t},e.prototype.isComplex=F,e.prototype.assigns=function(t){return t===this.value},e.prototype.jumps=function(t){return"break"!==this.value||(null!=t?t.loop:void 0)||(null!=t?t.block:void 0)?"continue"!==this.value||(null!=t?t.loop:void 0)?void 0:this:this},e.prototype.compileNode=function(t){var e,n;return e="this"===this.value?(null!=(n=t.scope.method)?n.bound:void 0)?t.scope.method.context:this.value:this.value.reserved?'"'+this.value+'"':this.value,this.isStatement()?""+this.tab+e+";":e},e.prototype.toString=function(){return' "'+this.value+'"'},e}(r),t.Undefined=function(t){function e(){e.__super__.constructor.apply(this,arguments)}return fe(e,t),e.prototype.isAssignable=F,e.prototype.isComplex=F,e.prototype.compileNode=function(t){return t.level>=w?"(void 0)":"void 0"},e}(r),t.Null=function(t){function e(){e.__super__.constructor.apply(this,arguments)}return fe(e,t),e.prototype.isAssignable=F,e.prototype.isComplex=F,e.prototype.compileNode=function(){return"null"},e}(r),t.Bool=function(t){function e(t){this.val=t}return fe(e,t),e.prototype.isAssignable=F,e.prototype.isComplex=F,e.prototype.compileNode=function(){return this.val},e}(r),t.Return=O=function(t){function e(t){t&&!t.unwrap().isUndefined&&(this.expression=t)}return fe(e,t),e.prototype.children=["expression"],e.prototype.isStatement=z,e.prototype.makeReturn=q,e.prototype.jumps=q,e.prototype.compile=function(t,n){var i,r;return i=null!=(r=this.expression)?r.makeReturn():void 0,!i||i instanceof e?e.__super__.compile.call(this,t,n):i.compile(t,n)},e.prototype.compileNode=function(t){return this.tab+("return"+[this.expression?" "+this.expression.compile(t,N):void 0]+";")},e}(r),t.Value=Y=function(t){function e(t,e,n){this.base=t,this.properties=e,this.properties||(this.properties=[]),"this"===n&&(this["this"]=!0)}return fe(e,t),e.wrap=function(t,n,i){return!n&&t instanceof e?t:new e(t,n,i)},e.prototype.children=["base","properties"],e.prototype.add=function(t){return this.properties=this.properties.concat(t),this},e.prototype.hasProperties=function(){return!!this.properties.length},e.prototype.isArray=function(){return!this.properties.length&&this.base instanceof n},e.prototype.isComplex=function(){return this.hasProperties()||this.base.isComplex()},e.prototype.isAssignable=function(){return this.hasProperties()||this.base.isAssignable()},e.prototype.isSimpleNumber=function(){return this.base instanceof x&&j.test(this.base.value)},e.prototype.isString=function(){return this.base instanceof x&&b.test(this.base.value)},e.prototype.isAtomic=function(){var t,e,n,i;for(i=this.properties.concat(this.base),e=0,n=i.length;n>e;e++)if(t=i[e],t.soak||t instanceof a)return!1;return!0},e.prototype.isStatement=function(t){return!this.properties.length&&this.base.isStatement(t)},e.prototype.assigns=function(t){return!this.properties.length&&this.base.assigns(t)},e.prototype.jumps=function(t){return!this.properties.length&&this.base.jumps(t)},e.prototype.isObject=function(t){return this.properties.length?!1:this.base instanceof R&&(!t||this.base.generated)},e.prototype.isSplice=function(){return ie(this.properties)instanceof V},e.prototype.unwrap=function(){return this.properties.length?this:this.base},e.prototype.cacheReference=function(t){var n,r,s,a;return s=ie(this.properties),2>this.properties.length&&!this.base.isComplex()&&!(null!=s?s.isComplex():void 0)?[this,this]:(n=e.wrap(this.base,this.properties.slice(0,-1)),n.isComplex()&&(r=new x(t.scope.freeVariable("base")),n=e.wrap(new $(new i(r,n)))),s?(s.isComplex()&&(a=new x(t.scope.freeVariable("name")),s=new g(new i(a,s.index)),a=new g(a)),[n.add(s),e.wrap(r||n.base,[a||s])]):[n,r])},e.prototype.compileNode=function(t){var e,n,i,r,s;for(this.base.front=this.front,i=this.properties,e=this.base.compile(t,i.length?w:null),(this.base instanceof $||i.length)&&j.test(e)&&(e=""+e+"."),r=0,s=i.length;s>r;r++)n=i[r],e+=n.compile(t);return e},e.prototype.unfoldSoak=function(t){var n,r=this;return null!=(n=this.unfoldedSoak)?n:this.unfoldedSoak=function(){var n,s,a,o,c,h,l,u,d,f;if(a=r.base.unfoldSoak(t))return(d=a.body.properties).push.apply(d,r.properties),a;for(f=r.properties,s=l=0,u=f.length;u>l;s=++l)if(o=f[s],o.soak)return o.soak=!1,n=e.wrap(r.base,r.properties.slice(0,s)),h=e.wrap(r.base,r.properties.slice(s)),n.isComplex()&&(c=new x(t.scope.freeVariable("ref")),n=new $(new i(c,n)),h.base=c),new y(new p(n),h,{soak:!0});return!1}()},e}(r),t.Comment=l=function(t){function e(t){this.comment=t}return fe(e,t),e.prototype.isStatement=z,e.prototype.makeReturn=q,e.prototype.compileNode=function(t,e){var n;return n="/*"+ae(this.comment,this.tab)+("\n"+this.tab+"*/\n"),(e||t.level)===T&&(n=t.indent+n),n},e}(r),t.Call=a=function(t){function n(t,e,n){this.args=null!=e?e:[],this.soak=n,this.isNew=!1,this.isSuper="super"===t,this.variable=this.isSuper?null:t}return fe(n,t),n.prototype.children=["variable","args"],n.prototype.newInstance=function(){var t,e;return t=(null!=(e=this.variable)?e.base:void 0)||this.variable,t instanceof n&&!t.isNew?t.newInstance():this.isNew=!0,this},n.prototype.superReference=function(t){var n,i,r;if(i=t.scope.namedMethod(),!i)throw SyntaxError("cannot call super outside of a function.");if(r=i.name,null==r)throw SyntaxError("cannot call super on an anonymous function.");return i.klass?(n=[new e(new x("__super__"))],i["static"]&&n.push(new e(new x("constructor"))),n.push(new e(new x(r))),Y.wrap(new x(i.klass),n).compile(t)):""+r+".__super__.constructor"},n.prototype.superThis=function(t){var e;return e=t.scope.method,e&&!e.klass&&e.context||"this"},n.prototype.unfoldSoak=function(t){var e,i,r,s,a,o,c,h,l;if(this.soak){if(this.variable){if(i=he(t,this,"variable"))return i;h=Y.wrap(this.variable).cacheReference(t),r=h[0],a=h[1]}else r=new x(this.superReference(t)),a=Y.wrap(r);return a=new n(a,this.args),a.isNew=this.isNew,r=new x("typeof "+r.compile(t)+' === "function"'),new y(r,Y.wrap(a),{soak:!0})}for(e=this,s=[];;)if(e.variable instanceof n)s.push(e),e=e.variable;else{if(!(e.variable instanceof Y))break;if(s.push(e),!((e=e.variable.base)instanceof n))break}for(l=s.reverse(),o=0,c=l.length;c>o;o++)e=l[o],i&&(e.variable instanceof n?e.variable=i:e.variable.base=i),i=he(t,e,"variable");return i},n.prototype.filterImplicitObjects=function(t){var e,n,r,s,a,o,c,h,p,u;for(n=[],o=0,h=t.length;h>o;o++)if(e=t[o],("function"==typeof e.isObject?e.isObject():void 0)&&e.base.generated)for(r=null,u=e.base.properties,c=0,p=u.length;p>c;c++)s=u[c],s instanceof i||s instanceof l?(r||n.push(r=new R(a=[],!0)),a.push(s)):(n.push(s),r=null);else n.push(e);return n},n.prototype.compileNode=function(t){var e,n,i,r;return null!=(r=this.variable)&&(r.front=this.front),(i=U.compileSplattedArray(t,this.args,!0))?this.compileSplat(t,i):(n=this.filterImplicitObjects(this.args),n=function(){var i,r,s;for(s=[],i=0,r=n.length;r>i;i++)e=n[i],s.push(e.compile(t,E));return s}().join(", "),this.isSuper?this.superReference(t)+(".call("+this.superThis(t)+(n&&", "+n)+")"):(this.isNew?"new ":"")+this.variable.compile(t,w)+("("+n+")"))},n.prototype.compileSplat=function(t,e){var n,i,r,s,a;return this.isSuper?""+this.superReference(t)+".apply("+this.superThis(t)+", "+e+")":this.isNew?(r=this.tab+H,"(function(func, args, ctor) {\n"+r+"ctor.prototype = func.prototype;\n"+r+"var child = new ctor, result = func.apply(child, args);\n"+r+"return Object(result) === result ? result : child;\n"+this.tab+"})("+this.variable.compile(t,E)+", "+e+", function(){})"):(n=Y.wrap(this.variable),(s=n.properties.pop())&&n.isComplex()?(a=t.scope.freeVariable("ref"),i="("+a+" = "+n.compile(t,E)+")"+s.compile(t)):(i=n.compile(t,w),j.test(i)&&(i="("+i+")"),s?(a=i,i+=s.compile(t)):a="null"),""+i+".apply("+a+", "+e+")")},n}(r),t.Extends=u=function(t){function e(t,e){this.child=t,this.parent=e}return fe(e,t),e.prototype.children=["child","parent"],e.prototype.compile=function(t){return new a(Y.wrap(new x(le("extends"))),[this.child,this.parent]).compile(t)},e}(r),t.Access=e=function(t){function e(t,e){this.name=t,this.name.asKey=!0,this.soak="soak"===e}return fe(e,t),e.prototype.children=["name"],e.prototype.compile=function(t){var e;return e=this.name.compile(t),f.test(e)?"."+e:"["+e+"]"},e.prototype.isComplex=F,e}(r),t.Index=g=function(t){function e(t){this.index=t}return fe(e,t),e.prototype.children=["index"],e.prototype.compile=function(t){return"["+this.index.compile(t,N)+"]"},e.prototype.isComplex=function(){return this.index.isComplex()},e}(r),t.Range=C=function(t){function e(t,e,n){this.from=t,this.to=e,this.exclusive="exclusive"===n,this.equals=this.exclusive?"":"="}return fe(e,t),e.prototype.children=["from","to"],e.prototype.compileVariables=function(t){var e,n,i,r,s;return t=se(t,{top:!0}),n=this.from.cache(t,E),this.fromC=n[0],this.fromVar=n[1],i=this.to.cache(t,E),this.toC=i[0],this.toVar=i[1],(e=Q(t,"step"))&&(r=e.cache(t,E),this.step=r[0],this.stepVar=r[1]),s=[this.fromVar.match(j),this.toVar.match(j)],this.fromNum=s[0],this.toNum=s[1],this.stepVar?this.stepNum=this.stepVar.match(j):void 0},e.prototype.compileNode=function(t){var e,n,i,r,s,a,o,c,h,l,p,u,d,f;return this.fromVar||this.compileVariables(t),t.index?(o=this.fromNum&&this.toNum,s=Q(t,"index"),a=Q(t,"name"),h=a&&a!==s,u=""+s+" = "+this.fromC,this.toC!==this.toVar&&(u+=", "+this.toC),this.step!==this.stepVar&&(u+=", "+this.step),d=[""+s+" <"+this.equals,""+s+" >"+this.equals],c=d[0],r=d[1],n=this.stepNum?+this.stepNum>0?""+c+" "+this.toVar:""+r+" "+this.toVar:o?(f=[+this.fromNum,+this.toNum],i=f[0],p=f[1],f,p>=i?""+c+" "+p:""+r+" "+p):(e=this.stepVar?""+this.stepVar+" > 0":""+this.fromVar+" <= "+this.toVar,""+e+" ? "+c+" "+this.toVar+" : "+r+" "+this.toVar),l=this.stepVar?""+s+" += "+this.stepVar:o?h?p>=i?"++"+s:"--"+s:p>=i?""+s+"++":""+s+"--":h?""+e+" ? ++"+s+" : --"+s:""+e+" ? "+s+"++ : "+s+"--",h&&(u=""+a+" = "+u),h&&(l=""+a+" = "+l),""+u+"; "+n+"; "+l):this.compileArray(t)},e.prototype.compileArray=function(t){var e,n,i,r,s,a,o,c,h,l,p,u,d;return this.fromNum&&this.toNum&&20>=Math.abs(this.fromNum-this.toNum)?(h=function(){d=[];for(var t=u=+this.fromNum,e=+this.toNum;e>=u?e>=t:t>=e;e>=u?t++:t--)d.push(t);return d}.apply(this),this.exclusive&&h.pop(),"["+h.join(", ")+"]"):(a=this.tab+H,s=t.scope.freeVariable("i"),l=t.scope.freeVariable("results"),c="\n"+a+l+" = [];",this.fromNum&&this.toNum?(t.index=s,n=this.compileNode(t)):(p=""+s+" = "+this.fromC+(this.toC!==this.toVar?", "+this.toC:""),i=""+this.fromVar+" <= "+this.toVar,n="var "+p+"; "+i+" ? "+s+" <"+this.equals+" "+this.toVar+" : "+s+" >"+this.equals+" "+this.toVar+"; "+i+" ? "+s+"++ : "+s+"--"),o="{ "+l+".push("+s+"); }\n"+a+"return "+l+";\n"+t.indent,r=function(t){return null!=t?t.contains(function(t){return t instanceof x&&"arguments"===t.value&&!t.asKey}):void 0},(r(this.from)||r(this.to))&&(e=", arguments"),"(function() {"+c+"\n"+a+"for ("+n+")"+o+"}).apply(this"+(null!=e?e:"")+")")},e}(r),t.Slice=V=function(t){function e(t){this.range=t,e.__super__.constructor.call(this)}return fe(e,t),e.prototype.children=["range"],e.prototype.compileNode=function(t){var e,n,i,r,s,a;return a=this.range,r=a.to,n=a.from,i=n&&n.compile(t,N)||"0",e=r&&r.compile(t,N),r&&(this.range.exclusive||-1!==+e)&&(s=", "+(this.range.exclusive?e:j.test(e)?""+(+e+1):(e=r.compile(t,w),"+"+e+" + 1 || 9e9"))),".slice("+i+(s||"")+")"},e}(r),t.Obj=R=function(t){function e(t,e){this.generated=null!=e?e:!1,this.objects=this.properties=t||[]}return fe(e,t),e.prototype.children=["properties"],e.prototype.compileNode=function(t){var e,n,r,s,a,o,c,h,p,u,d;if(p=this.properties,!p.length)return this.front?"({})":"{}";if(this.generated)for(u=0,d=p.length;d>u;u++)if(o=p[u],o instanceof Y)throw Error("cannot have an implicit value in an implicit object");return n=t.indent+=H,a=this.lastNonComment(this.properties),p=function(){var o,c,u;for(u=[],e=o=0,c=p.length;c>o;e=++o)h=p[e],s=e===p.length-1?"":h===a||h instanceof l?"\n":",\n",r=h instanceof l?"":n,h instanceof Y&&h["this"]&&(h=new i(h.properties[0].name,h,"object")),h instanceof l||(h instanceof i||(h=new i(h,h,"object")),(h.variable.base||h.variable).asKey=!0),u.push(r+h.compile(t,T)+s);return u}(),p=p.join(""),c="{"+(p&&"\n"+p+"\n"+this.tab)+"}",this.front?"("+c+")":c},e.prototype.assigns=function(t){var e,n,i,r;for(r=this.properties,n=0,i=r.length;i>n;n++)if(e=r[n],e.assigns(t))return!0;return!1},e}(r),t.Arr=n=function(t){function e(t){this.objects=t||[]}return fe(e,t),e.prototype.children=["objects"],e.prototype.filterImplicitObjects=a.prototype.filterImplicitObjects,e.prototype.compileNode=function(t){var e,n,i;return this.objects.length?(t.indent+=H,i=this.filterImplicitObjects(this.objects),(e=U.compileSplattedArray(t,i))?e:(e=function(){var e,r,s;for(s=[],e=0,r=i.length;r>e;e++)n=i[e],s.push(n.compile(t,E));return s}().join(", "),e.indexOf("\n")>=0?"[\n"+t.indent+e+"\n"+this.tab+"]":"["+e+"]")):"[]"},e.prototype.assigns=function(t){var e,n,i,r;for(r=this.objects,n=0,i=r.length;i>n;n++)if(e=r[n],e.assigns(t))return!0;return!1},e}(r),t.Class=o=function(t){function n(t,e,n){this.variable=t,this.parent=e,this.body=null!=n?n:new s,this.boundFuncs=[],this.body.classBody=!0}return fe(n,t),n.prototype.children=["variable","parent","body"],n.prototype.determineName=function(){var t,n;if(!this.variable)return null;if(t=(n=ie(this.variable.properties))?n instanceof e&&n.name.value:this.variable.base.value,me.call(M,t)>=0)throw SyntaxError("variable name may not be "+t);return t&&(t=f.test(t)&&t)},n.prototype.setContext=function(t){return this.body.traverseChildren(!1,function(e){return e.classBody?!1:e instanceof x&&"this"===e.value?e.value=t:e instanceof h&&(e.klass=t,e.bound)?e.context=t:void 0})},n.prototype.addBoundFunctions=function(t){var n,i,r,s,a;for(a=this.boundFuncs,r=0,s=a.length;s>r;r++)n=a[r],i=Y.wrap(new x("this"),[new e(n)]).compile(t),this.ctor.body.unshift(new x(""+i+" = "+le("bind")+"("+i+", this)"))},n.prototype.addProperties=function(t,n,r){var s,a,o,c,l;return l=t.base.properties.slice(0),o=function(){var t;for(t=[];s=l.shift();){if(s instanceof i)if(a=s.variable.base,delete s.context,c=s.value,"constructor"===a.value){if(this.ctor)throw Error("cannot define more than one constructor in a class");if(c.bound)throw Error("cannot define a constructor as a bound function");c instanceof h?s=this.ctor=c:(this.externalCtor=r.scope.freeVariable("class"),s=new i(new x(this.externalCtor),c))}else s.variable["this"]?(c["static"]=!0,c.bound&&(c.context=n)):(s.variable=Y.wrap(new x(n),[new e(new x("prototype")),new e(a)]),c instanceof h&&c.bound&&(this.boundFuncs.push(a),c.bound=!1));t.push(s)}return t}.call(this),Z(o)},n.prototype.walkBody=function(t,e){var i=this;return this.traverseChildren(!1,function(r){var a,o,c,h,l,p;if(r instanceof n)return!1;if(r instanceof s){for(p=a=r.expressions,o=h=0,l=p.length;l>h;o=++h)c=p[o],c instanceof Y&&c.isObject(!0)&&(a[o]=i.addProperties(c,t,e));return r.expressions=a=ne(a)}})},n.prototype.hoistDirectivePrologue=function(){var t,e,n;for(e=0,t=this.body.expressions;(n=t[e])&&n instanceof l||n instanceof Y&&n.isString();)++e;return this.directives=t.splice(0,e)},n.prototype.ensureConstructor=function(t,e){var n;if(this.ctor||(this.ctor=new h,this.parent&&this.ctor.body.push(new x(""+t+".__super__.constructor.apply(this, arguments)")),this.externalCtor&&this.ctor.body.push(new x(""+this.externalCtor+".apply(this, arguments)")),this.body.expressions.unshift(this.ctor)),this.ctor.ctor=this.ctor.name=t,this.ctor.klass=null,this.ctor.noReturn=!0,n=null,this.ctor.body.traverseChildren(!1,function(t){return t instanceof O&&(n=t.expression)?!1:void 0}),n)throw SyntaxError('cannot return a value from a constructor: "'+n.compileNode(e)+'" in class '+t)},n.prototype.compileNode=function(t){var e,n,r,s,a,o,l;return n=this.determineName(),a=n||"_Class",a.reserved&&(a="_"+a),s=new x(a),this.hoistDirectivePrologue(),this.setContext(a),this.walkBody(a,t),this.ensureConstructor(a,t),this.body.spaced=!0,this.ctor instanceof h||this.body.expressions.unshift(this.ctor),this.body.expressions.push(s),(l=this.body.expressions).unshift.apply(l,this.directives),this.addBoundFunctions(t),e=c.wrap(this.body),this.parent&&(this.superClass=new x(t.scope.freeVariable("super",!1)),this.body.expressions.unshift(new u(s,this.superClass)),e.args.push(this.parent),o=e.variable.params||e.variable.base.params,o.push(new A(this.superClass))),r=new $(e,!0),this.variable&&(r=new i(this.variable,r)),r.compile(t)},n}(r),t.Assign=i=function(t){function n(t,e,n,i){var r,s,a;if(this.variable=t,this.value=e,this.context=n,this.param=i&&i.param,this.subpattern=i&&i.subpattern,a=s=this.variable.unwrapAll().value,r=me.call(M,a)>=0,r&&"object"!==this.context)throw SyntaxError('variable name may not be "'+s+'"')}return fe(n,t),n.prototype.children=["variable","value"],n.prototype.isStatement=function(t){return(null!=t?t.level:void 0)===T&&null!=this.context&&me.call(this.context,"?")>=0},n.prototype.assigns=function(t){return this["object"===this.context?"value":"variable"].assigns(t)},n.prototype.unfoldSoak=function(t){return he(t,this,"variable")},n.prototype.compileNode=function(t){var e,n,i,r,s,a,o,c,l;if(e=this.variable instanceof Y){if(this.variable.isArray()||this.variable.isObject())return this.compilePatternMatch(t);if(this.variable.isSplice())return this.compileSplice(t);if("||="===(a=this.context)||"&&="===a||"?="===a)return this.compileConditional(t)}if(i=this.variable.compile(t,E),!this.context){if(!(s=this.variable.unwrapAll()).isAssignable())throw SyntaxError('"'+this.variable.compile(t)+'" cannot be assigned.');("function"==typeof s.hasProperties?s.hasProperties():void 0)||(this.param?t.scope.add(i,"var"):t.scope.find(i))}return this.value instanceof h&&(n=D.exec(i))&&(n[1]&&(this.value.klass=n[1]),this.value.name=null!=(o=null!=(c=null!=(l=n[2])?l:n[3])?c:n[4])?o:n[5]),r=this.value.compile(t,E),"object"===this.context?""+i+": "+r:(r=i+(" "+(this.context||"=")+" ")+r,E>=t.level?r:"("+r+")")},n.prototype.compilePatternMatch=function(t){var i,r,s,a,o,c,h,l,p,u,d,m,b,y,v,w,k,N,D,S,F,R,I,A,C,O;if(v=t.level===T,k=this.value,u=this.variable.base.objects,!(d=u.length))return s=k.compile(t),t.level>=L?"("+s+")":s;if(c=this.variable.isObject(),v&&1===d&&!((p=u[0])instanceof U)){if(p instanceof n?(F=p,R=F.variable,o=R.base,p=F.value):o=c?p["this"]?p.properties[0].name:p:new x(0),i=f.test(o.unwrap().value||0),k=Y.wrap(k),k.properties.push(new(i?e:g)(o)),I=p.unwrap().value,me.call(_,I)>=0)throw new SyntaxError("assignment to a reserved word: "+p.compile(t)+" = "+k.compile(t));return new n(p,k,null,{param:this.param}).compile(t,T)}for(N=k.compile(t,E),r=[],y=!1,(!f.test(N)||this.variable.assigns(N))&&(r.push(""+(m=t.scope.freeVariable("ref"))+" = "+N),N=m),a=D=0,S=u.length;S>D;a=++D){if(p=u[a],o=a,c&&(p instanceof n?(A=p,C=A.variable,o=C.base,p=A.value):p.base instanceof $?(O=Y.wrap(p.unwrapAll()).cacheReference(t),p=O[0],o=O[1]):o=p["this"]?p.properties[0].name:p),!y&&p instanceof U)l=p.name.unwrap().value,p=p.unwrap(),w=""+d+" <= "+N+".length ? "+le("slice")+".call("+N+", "+a,(b=d-a-1)?(h=t.scope.freeVariable("i"),w+=", "+h+" = "+N+".length - "+b+") : ("+h+" = "+a+", [])"):w+=") : []",w=new x(w),y=""+h+"++";else{if(l=p.unwrap().value,p instanceof U)throw p=p.name.compile(t),new SyntaxError("multiple splats are disallowed in an assignment: "+p+"...");"number"==typeof o?(o=new x(y||o),i=!1):i=c&&f.test(o.unwrap().value||0),w=Y.wrap(new x(N),[new(i?e:g)(o)])}if(null!=l&&me.call(_,l)>=0)throw new SyntaxError("assignment to a reserved word: "+p.compile(t)+" = "+w.compile(t));r.push(new n(p,w,null,{param:this.param,subpattern:!0}).compile(t,E))}return v||this.subpattern||r.push(N),s=r.join(", "),E>t.level?s:"("+s+")"},n.prototype.compileConditional=function(t){var e,i,r;if(r=this.variable.cacheReference(t),e=r[0],i=r[1],!e.properties.length&&e.base instanceof x&&"this"!==e.base.value&&!t.scope.check(e.base.value))throw Error('the variable "'+e.base.value+"\" can't be assigned with "+this.context+" because it has not been defined.");return me.call(this.context,"?")>=0&&(t.isExistentialEquals=!0),I.create(this.context.slice(0,-1),e,new n(i,this.value,"=")).compile(t)},n.prototype.compileSplice=function(t){var e,n,i,r,s,a,o,c,h,l,p,u;return l=this.variable.properties.pop().range,i=l.from,o=l.to,n=l.exclusive,a=this.variable.compile(t),p=(null!=i?i.cache(t,L):void 0)||["0","0"],r=p[0],s=p[1],o?(null!=i?i.isSimpleNumber():void 0)&&o.isSimpleNumber()?(o=+o.compile(t)-+s,n||(o+=1)):(o=o.compile(t,w)+" - "+s,n||(o+=" + 1")):o="9e9",u=this.value.cache(t,E),c=u[0],h=u[1],e="[].splice.apply("+a+", ["+r+", "+o+"].concat("+c+")), "+h,t.level>T?"("+e+")":e},n}(r),t.Code=h=function(t){function e(t,e,n){this.params=t||[],this.body=e||new s,this.bound="boundfunc"===n,this.bound&&(this.context="_this")}return fe(e,t),e.prototype.children=["params","body"],e.prototype.isStatement=function(){return!!this.ctor},e.prototype.jumps=F,e.prototype.compileNode=function(t){var e,r,s,a,o,c,h,l,p,u,d,f,m,b,v,g,k,E,L,N,T,D,S,F,R,A,$,_,C,O,j,M,V;for(t.scope=new P(t.scope,this.body,this),t.scope.shared=Q(t,"sharedScope"),t.indent+=H,delete t.bare,delete t.isExistentialEquals,p=[],r=[],$=this.paramNames(),v=0,L=$.length;L>v;v++)c=$[v],t.scope.check(c)||t.scope.parameter(c);for(_=this.params,g=0,N=_.length;N>g;g++)if(l=_[g],l.splat){for(C=this.params,k=0,T=C.length;T>k;k++)h=C[k].name,h["this"]&&(h=h.properties[0].name),h.value&&t.scope.add(h.value,"var",!0); -d=new i(Y.wrap(new n(function(){var e,n,i,r;for(i=this.params,r=[],e=0,n=i.length;n>e;e++)h=i[e],r.push(h.asReference(t));return r}.call(this))),Y.wrap(new x("arguments")));break}for(O=this.params,E=0,D=O.length;D>E;E++)l=O[E],l.isComplex()?(m=u=l.asReference(t),l.value&&(m=I.create("?",u,l.value)),r.push(new i(Y.wrap(l.name),m,"=",{param:!0}))):(u=l,l.value&&(o=new x(u.name.value+" == null"),m=new i(Y.wrap(l.name),l.value,"="),r.push(new y(o,m)))),d||p.push(u);for(b=this.body.isEmpty(),d&&r.unshift(d),r.length&&(j=this.body.expressions).unshift.apply(j,r),s=R=0,S=p.length;S>R;s=++R)h=p[s],t.scope.parameter(p[s]=h.compile(t));for(f=[],M=this.paramNames(),A=0,F=M.length;F>A;A++){if(c=M[A],me.call(f,c)>=0)throw SyntaxError("multiple parameters named '"+c+"'");f.push(c)}return b||this.noReturn||this.body.makeReturn(),this.bound&&((null!=(V=t.scope.parent.method)?V.bound:void 0)?this.bound=this.context=t.scope.parent.method.context:this["static"]||t.scope.parent.assign("_this","this")),a=t.indent,e="function",this.ctor&&(e+=" "+this.name),e+="("+p.join(", ")+") {",this.body.isEmpty()||(e+="\n"+this.body.compileWithDeclarations(t)+"\n"+this.tab),e+="}",this.ctor?this.tab+e:this.front||t.level>=w?"("+e+")":e},e.prototype.paramNames=function(){var t,e,n,i,r;for(t=[],r=this.params,n=0,i=r.length;i>n;n++)e=r[n],t.push.apply(t,e.names());return t},e.prototype.traverseChildren=function(t,n){return t?e.__super__.traverseChildren.call(this,t,n):void 0},e}(r),t.Param=A=function(t){function e(t,e,n){var i;if(this.name=t,this.value=e,this.splat=n,i=t=this.name.unwrapAll().value,me.call(M,i)>=0)throw SyntaxError('parameter name "'+t+'" is not allowed')}return fe(e,t),e.prototype.children=["name","value"],e.prototype.compile=function(t){return this.name.compile(t,E)},e.prototype.asReference=function(t){var e;return this.reference?this.reference:(e=this.name,e["this"]?(e=e.properties[0].name,e.value.reserved&&(e=new x(t.scope.freeVariable(e.value)))):e.isComplex()&&(e=new x(t.scope.freeVariable("arg"))),e=Y.wrap(e),this.splat&&(e=new U(e)),this.reference=e)},e.prototype.isComplex=function(){return this.name.isComplex()},e.prototype.names=function(t){var e,n,r,s,a,o;if(null==t&&(t=this.name),e=function(t){var e;return e=t.properties[0].name.value,e.reserved?[]:[e]},t instanceof x)return[t.value];if(t instanceof Y)return e(t);for(n=[],o=t.objects,s=0,a=o.length;a>s;s++)if(r=o[s],r instanceof i)n.push.apply(n,this.names(r.value.unwrap()));else if(r instanceof U)n.push(r.name.unwrap().value);else{if(!(r instanceof Y))throw SyntaxError("illegal parameter "+r.compile());r.isArray()||r.isObject()?n.push.apply(n,this.names(r.base)):r["this"]?n.push.apply(n,e(r)):n.push(r.base.value)}return n},e}(r),t.Splat=U=function(t){function e(t){this.name=t.compile?t:new x(t)}return fe(e,t),e.prototype.children=["name"],e.prototype.isAssignable=z,e.prototype.assigns=function(t){return this.name.assigns(t)},e.prototype.compile=function(t){return this.name.compile(t)},e.prototype.unwrap=function(){return this.name},e.compileSplattedArray=function(t,n,i){var r,s,a,o,c,h,l,p;for(c=-1;(h=n[++c])&&!(h instanceof e););if(c>=n.length)return"";if(1===n.length)return a=n[0].compile(t,E),i?a:""+le("slice")+".call("+a+")";for(r=n.slice(c),o=l=0,p=r.length;p>l;o=++l)h=r[o],a=h.compile(t,E),r[o]=h instanceof e?""+le("slice")+".call("+a+")":"["+a+"]";return 0===c?r[0]+(".concat("+r.slice(1).join(", ")+")"):(s=function(){var e,i,r,s;for(r=n.slice(0,c),s=[],e=0,i=r.length;i>e;e++)h=r[e],s.push(h.compile(t,E));return s}(),"["+s.join(", ")+"].concat("+r.join(", ")+")")},e}(r),t.While=K=function(t){function e(t,e){this.condition=(null!=e?e.invert:void 0)?t.invert():t,this.guard=null!=e?e.guard:void 0}return fe(e,t),e.prototype.children=["condition","guard","body"],e.prototype.isStatement=z,e.prototype.makeReturn=function(t){return t?e.__super__.makeReturn.apply(this,arguments):(this.returns=!this.jumps({loop:!0}),this)},e.prototype.addBody=function(t){return this.body=t,this},e.prototype.jumps=function(){var t,e,n,i;if(t=this.body.expressions,!t.length)return!1;for(n=0,i=t.length;i>n;n++)if(e=t[n],e.jumps({loop:!0}))return e;return!1},e.prototype.compileNode=function(t){var e,n,i,r;return t.indent+=H,r="",e=this.body,e.isEmpty()?e="":(this.returns&&(e.makeReturn(i=t.scope.freeVariable("results")),r=""+this.tab+i+" = [];\n"),this.guard&&(e.expressions.length>1?e.expressions.unshift(new y(new $(this.guard).invert(),new x("continue"))):this.guard&&(e=s.wrap([new y(this.guard,e)]))),e="\n"+e.compile(t,T)+"\n"+this.tab),n=r+this.tab+("while ("+this.condition.compile(t,N)+") {"+e+"}"),this.returns&&(n+="\n"+this.tab+"return "+i+";"),n},e}(r),t.Op=I=function(t){function e(t,e,i,r){this.first=e,this.second=i,this.operator=n[t]||t,this.flip=!!r}var n,r;return fe(e,t),e.create=function(t,n,i,r){if("in"===t)return new v(n,i);if("do"===t)return this.generateDo(n);if("new"===t){if(n instanceof a&&!n["do"]&&!n.isNew)return n.newInstance();(n instanceof h&&n.bound||n["do"])&&(n=new $(n))}return new e(t,n,i,r)},n={"==":"===","!=":"!==",of:"in"},r={"!==":"===","===":"!=="},e.prototype.children=["first","second"],e.prototype.isSimpleNumber=F,e.prototype.isUnary=function(){return!this.second},e.prototype.isComplex=function(){var t;return!(this.isUnary()&&("+"===(t=this.operator)||"-"===t))||this.first.isComplex()},e.prototype.isChainable=function(){var t;return"<"===(t=this.operator)||">"===t||">="===t||"<="===t||"==="===t||"!=="===t},e.prototype.invert=function(){var t,n,i,s,a;if(this.isChainable()&&this.first.isChainable()){for(t=!0,n=this;n&&n.operator;)t&&(t=n.operator in r),n=n.first;if(!t)return new $(this).invert();for(n=this;n&&n.operator;)n.invert=!n.invert,n.operator=r[n.operator],n=n.first;return this}return(s=r[this.operator])?(this.operator=s,this.first.unwrap()instanceof e&&this.first.invert(),this):this.second?new $(this).invert():"!"===this.operator&&(i=this.first.unwrap())instanceof e&&("!"===(a=i.operator)||"in"===a||"instanceof"===a)?i:e.create("!",this)},e.prototype.unfoldSoak=function(t){var e;return("++"===(e=this.operator)||"--"===e||"delete"===e)&&he(t,this,"first")},e.generateDo=function(t){var e,n,r,s,o,c,l,p;for(s=[],n=t instanceof i&&(o=t.value.unwrap())instanceof h?o:t,p=n.params||[],c=0,l=p.length;l>c;c++)r=p[c],r.value?(s.push(r.value),delete r.value):s.push(r);return e=new a(t,s),e["do"]=!0,e},e.prototype.compileNode=function(t){var e,n,i,r;if(n=this.isChainable()&&this.first.isChainable(),n||(this.first.front=this.front),"delete"===this.operator&&t.scope.check(this.first.unwrapAll().value))throw SyntaxError("delete operand may not be argument or var");if(("--"===(i=this.operator)||"++"===i)&&(r=this.first.unwrapAll().value,me.call(M,r)>=0))throw SyntaxError("prefix increment/decrement may not have eval or arguments operand");return this.isUnary()?this.compileUnary(t):n?this.compileChain(t):"?"===this.operator?this.compileExistence(t):(e=this.first.compile(t,L)+" "+this.operator+" "+this.second.compile(t,L),L>=t.level?e:"("+e+")")},e.prototype.compileChain=function(t){var e,n,i,r;return r=this.first.second.cache(t),this.first.second=r[0],i=r[1],n=this.first.compile(t,L),e=""+n+" "+(this.invert?"&&":"||")+" "+i.compile(t)+" "+this.operator+" "+this.second.compile(t,L),"("+e+")"},e.prototype.compileExistence=function(t){var e,n;return this.first.isComplex()?(n=new x(t.scope.freeVariable("ref")),e=new $(new i(n,this.first))):(e=this.first,n=e),new y(new p(e),n,{type:"if"}).addElse(this.second).compile(t)},e.prototype.compileUnary=function(t){var n,i,r;return i=[n=this.operator],"!"===n&&this.first instanceof p?(this.first.negated=!this.first.negated,this.first.compile(t)):t.level>=w?new $(this).compile(t):(r="+"===n||"-"===n,("new"===n||"typeof"===n||"delete"===n||r&&this.first instanceof e&&this.first.operator===n)&&i.push(" "),(r&&this.first instanceof e||"new"===n&&this.first.isStatement(t))&&(this.first=new $(this.first)),i.push(this.first.compile(t,L)),this.flip&&i.reverse(),i.join(""))},e.prototype.toString=function(t){return e.__super__.toString.call(this,t,this.constructor.name+" "+this.operator)},e}(r),t.In=v=function(t){function e(t,e){this.object=t,this.array=e}return fe(e,t),e.prototype.children=["object","array"],e.prototype.invert=S,e.prototype.compileNode=function(t){var e,n,i,r,s;if(this.array instanceof Y&&this.array.isArray()){for(s=this.array.base.objects,i=0,r=s.length;r>i;i++)if(n=s[i],n instanceof U){e=!0;break}if(!e)return this.compileOrTest(t)}return this.compileLoopTest(t)},e.prototype.compileOrTest=function(t){var e,n,i,r,s,a,o,c,h;return 0===this.array.base.objects.length?""+!!this.negated:(c=this.object.cache(t,L),a=c[0],s=c[1],h=this.negated?[" !== "," && "]:[" === "," || "],e=h[0],n=h[1],o=function(){var n,o,c,h;for(c=this.array.base.objects,h=[],i=n=0,o=c.length;o>n;i=++n)r=c[i],h.push((i?s:a)+e+r.compile(t,w));return h}.call(this),o=o.join(n),L>t.level?o:"("+o+")")},e.prototype.compileLoopTest=function(t){var e,n,i,r;return r=this.object.cache(t,E),i=r[0],n=r[1],e=le("indexOf")+(".call("+this.array.compile(t,E)+", "+n+") ")+(this.negated?"< 0":">= 0"),i===n?e:(e=i+", "+e,E>t.level?e:"("+e+")")},e.prototype.toString=function(t){return e.__super__.toString.call(this,t,this.constructor.name+(this.negated?"!":""))},e}(r),t.Try=W=function(t){function e(t,e,n,i){this.attempt=t,this.error=e,this.recovery=n,this.ensure=i}return fe(e,t),e.prototype.children=["attempt","recovery","ensure"],e.prototype.isStatement=z,e.prototype.jumps=function(t){var e;return this.attempt.jumps(t)||(null!=(e=this.recovery)?e.jumps(t):void 0)},e.prototype.makeReturn=function(t){return this.attempt&&(this.attempt=this.attempt.makeReturn(t)),this.recovery&&(this.recovery=this.recovery.makeReturn(t)),this},e.prototype.compileNode=function(t){var e,n,r,s;return t.indent+=H,s=this.attempt.compile(t,T),e=function(){var e,n;if(this.recovery){if(("function"==typeof(e=this.error).isObject?e.isObject():void 0)&&(r=new x("_error"),this.recovery.unshift(new i(this.error,r)),this.error=r),n=this.error.value,me.call(M,n)>=0)throw SyntaxError('catch variable may not be "'+this.error.value+'"');return t.scope.check(this.error.value)||t.scope.add(this.error.value,"param")," catch ("+this.error.compile(t)+") {\n"+this.recovery.compile(t,T)+"\n"+this.tab+"}"}return this.ensure||this.recovery?void 0:" catch (_error) {}"}.call(this),n=this.ensure?" finally {\n"+this.ensure.compile(t,T)+"\n"+this.tab+"}":"",""+this.tab+"try {\n"+s+"\n"+this.tab+"}"+(e||"")+n},e}(r),t.Throw=G=function(t){function e(t){this.expression=t}return fe(e,t),e.prototype.children=["expression"],e.prototype.isStatement=z,e.prototype.jumps=F,e.prototype.makeReturn=q,e.prototype.compileNode=function(t){return this.tab+("throw "+this.expression.compile(t)+";")},e}(r),t.Existence=p=function(t){function e(t){this.expression=t}return fe(e,t),e.prototype.children=["expression"],e.prototype.invert=S,e.prototype.compileNode=function(t){var e,n,i,r;return this.expression.front=this.front,i=this.expression.compile(t,L),f.test(i)&&!t.scope.check(i)?(r=this.negated?["===","||"]:["!==","&&"],e=r[0],n=r[1],i="typeof "+i+" "+e+' "undefined" '+n+" "+i+" "+e+" null"):i=""+i+" "+(this.negated?"==":"!=")+" null",k>=t.level?i:"("+i+")"},e}(r),t.Parens=$=function(t){function e(t){this.body=t}return fe(e,t),e.prototype.children=["body"],e.prototype.unwrap=function(){return this.body},e.prototype.isComplex=function(){return this.body.isComplex()},e.prototype.compileNode=function(t){var e,n,i;return i=this.body.unwrap(),i instanceof Y&&i.isAtomic()?(i.front=this.front,i.compile(t)):(n=i.compile(t,N),e=L>t.level&&(i instanceof I||i instanceof a||i instanceof d&&i.returns),e?n:"("+n+")")},e}(r),t.For=d=function(t){function e(t,e){var n;if(this.source=e.source,this.guard=e.guard,this.step=e.step,this.name=e.name,this.index=e.index,this.body=s.wrap([t]),this.own=!!e.own,this.object=!!e.object,this.object&&(n=[this.index,this.name],this.name=n[0],this.index=n[1]),this.index instanceof Y)throw SyntaxError("index cannot be a pattern matching expression");if(this.range=this.source instanceof Y&&this.source.base instanceof C&&!this.source.properties.length,this.pattern=this.name instanceof Y,this.range&&this.index)throw SyntaxError("indexes do not apply to range loops");if(this.range&&this.pattern)throw SyntaxError("cannot pattern match over range loops");this.returns=!1}return fe(e,t),e.prototype.children=["body","source","guard","step"],e.prototype.compileNode=function(t){var e,n,r,a,o,c,h,l,p,u,d,m,b,v,g,w,k,L,N,D,S,F,R,I,A,_,C,M,P,V,U,B;return e=s.wrap([this.body]),w=null!=(U=ie(e.expressions))?U.jumps():void 0,w&&w instanceof O&&(this.returns=!1),A=this.range?this.source.base:this.source,I=t.scope,L=this.name&&this.name.compile(t,E),m=this.index&&this.index.compile(t,E),L&&!this.pattern&&I.find(L),m&&I.find(m),this.returns&&(R=I.freeVariable("results")),b=this.object&&m||I.freeVariable("i"),v=this.range&&L||m||b,g=v!==b?""+v+" = ":"",this.step&&!this.range&&(B=this.step.cache(t,E),_=B[0],M=B[1],C=M.match(j)),this.pattern&&(L=b),V="",p="",c="",u=this.tab+H,this.range?l=A.compile(se(t,{index:b,name:L,step:this.step})):(P=this.source.compile(t,E),!L&&!this.own||f.test(P)||(c+=""+this.tab+(D=I.freeVariable("ref"))+" = "+P+";\n",P=D),L&&!this.pattern&&(N=""+L+" = "+P+"["+v+"]"),this.object||(_!==M&&(c+=""+this.tab+_+";\n"),this.step&&C&&(h=0>+C)||(k=I.freeVariable("len")),a=""+g+b+" = 0, "+k+" = "+P+".length",o=""+g+b+" = "+P+".length - 1",n=""+b+" < "+k,r=""+b+" >= 0",this.step?(C?h&&(n=r,a=o):(n=""+M+" > 0 ? "+n+" : "+r,a="("+M+" > 0 ? ("+a+") : "+o+")"),d=""+b+" += "+M):d=""+(v!==b?"++"+b:""+b+"++"),l=""+a+"; "+n+"; "+g+d)),this.returns&&(S=""+this.tab+R+" = [];\n",F="\n"+this.tab+"return "+R+";",e.makeReturn(R)),this.guard&&(e.expressions.length>1?e.expressions.unshift(new y(new $(this.guard).invert(),new x("continue"))):this.guard&&(e=s.wrap([new y(this.guard,e)]))),this.pattern&&e.expressions.unshift(new i(this.name,new x(""+P+"["+v+"]"))),c+=this.pluckDirectCall(t,e),N&&(V="\n"+u+N+";"),this.object&&(l=""+v+" in "+P,this.own&&(p="\n"+u+"if (!"+le("hasProp")+".call("+P+", "+v+")) continue;")),e=e.compile(se(t,{indent:u}),T),e&&(e="\n"+e+"\n"),""+c+(S||"")+this.tab+"for ("+l+") {"+p+V+e+this.tab+"}"+(F||"")},e.prototype.pluckDirectCall=function(t,e){var n,r,s,o,c,l,p,u,d,f,m,b,y,v,g;for(r="",f=e.expressions,c=u=0,d=f.length;d>u;c=++u)s=f[c],s=s.unwrapAll(),s instanceof a&&(p=s.variable.unwrapAll(),(p instanceof h||p instanceof Y&&(null!=(m=p.base)?m.unwrapAll():void 0)instanceof h&&1===p.properties.length&&("call"===(b=null!=(y=p.properties[0].name)?y.value:void 0)||"apply"===b))&&(o=(null!=(v=p.base)?v.unwrapAll():void 0)||p,l=new x(t.scope.freeVariable("fn")),n=Y.wrap(l),p.base&&(g=[n,p],p.base=g[0],n=g[1]),e.expressions[c]=new a(n,s.args),r+=this.tab+new i(l,o).compile(t,T)+";\n"));return r},e}(K),t.Switch=B=function(t){function e(t,e,n){this.subject=t,this.cases=e,this.otherwise=n}return fe(e,t),e.prototype.children=["subject","cases","otherwise"],e.prototype.isStatement=z,e.prototype.jumps=function(t){var e,n,i,r,s,a,o;for(null==t&&(t={block:!0}),s=this.cases,i=0,r=s.length;r>i;i++)if(a=s[i],n=a[0],e=a[1],e.jumps(t))return e;return null!=(o=this.otherwise)?o.jumps(t):void 0},e.prototype.makeReturn=function(t){var e,n,i,r,a;for(r=this.cases,n=0,i=r.length;i>n;n++)e=r[n],e[1].makeReturn(t);return t&&(this.otherwise||(this.otherwise=new s([new x("void 0")]))),null!=(a=this.otherwise)&&a.makeReturn(t),this},e.prototype.compileNode=function(t){var e,n,i,r,s,a,o,c,h,l,p,u,d,f,m,b,y;for(c=t.indent+H,h=t.indent=c+H,i=this.tab+("switch ("+((null!=(f=this.subject)?f.compile(t,N):void 0)||!1)+") {\n"),m=this.cases,o=l=0,u=m.length;u>l;o=++l){for(b=m[o],s=b[0],e=b[1],y=ne([s]),p=0,d=y.length;d>p;p++)r=y[p],this.subject||(r=r.invert()),i+=c+("case "+r.compile(t,N)+":\n");if((n=e.compile(t,T))&&(i+=n+"\n"),o===this.cases.length-1&&!this.otherwise)break;a=this.lastNonComment(e.expressions),a instanceof O||a instanceof x&&a.jumps()&&"debugger"!==a.value||(i+=h+"break;\n")}return this.otherwise&&this.otherwise.expressions.length&&(i+=c+("default:\n"+this.otherwise.compile(t,T)+"\n")),i+this.tab+"}"},e}(r),t.If=y=function(t){function e(t,e,n){this.body=e,null==n&&(n={}),this.condition="unless"===n.type?t.invert():t,this.elseBody=null,this.isChain=!1,this.soak=n.soak}return fe(e,t),e.prototype.children=["condition","body","elseBody"],e.prototype.bodyNode=function(){var t;return null!=(t=this.body)?t.unwrap():void 0},e.prototype.elseBodyNode=function(){var t;return null!=(t=this.elseBody)?t.unwrap():void 0},e.prototype.addElse=function(t){return this.isChain?this.elseBodyNode().addElse(t):(this.isChain=t instanceof e,this.elseBody=this.ensureBlock(t)),this},e.prototype.isStatement=function(t){var e;return(null!=t?t.level:void 0)===T||this.bodyNode().isStatement(t)||(null!=(e=this.elseBodyNode())?e.isStatement(t):void 0)},e.prototype.jumps=function(t){var e;return this.body.jumps(t)||(null!=(e=this.elseBody)?e.jumps(t):void 0)},e.prototype.compileNode=function(t){return this.isStatement(t)?this.compileStatement(t):this.compileExpression(t)},e.prototype.makeReturn=function(t){return t&&(this.elseBody||(this.elseBody=new s([new x("void 0")]))),this.body&&(this.body=new s([this.body.makeReturn(t)])),this.elseBody&&(this.elseBody=new s([this.elseBody.makeReturn(t)])),this},e.prototype.ensureBlock=function(t){return t instanceof s?t:new s([t])},e.prototype.compileStatement=function(t){var n,i,r,s,a;return i=Q(t,"chainChild"),(s=Q(t,"isExistentialEquals"))?new e(this.condition.invert(),this.elseBodyNode(),{type:"if"}).compile(t):(r=this.condition.compile(t,N),t.indent+=H,n=this.ensureBlock(this.body),a="if ("+r+") {\n"+n.compile(t)+"\n"+this.tab+"}",i||(a=this.tab+a),this.elseBody?a+" else "+(this.isChain?(t.indent=this.tab,t.chainChild=!0,this.elseBody.unwrap().compile(t,T)):"{\n"+this.elseBody.compile(t,T)+"\n"+this.tab+"}"):a)},e.prototype.compileExpression=function(t){var e,n,i,r;return r=this.condition.compile(t,k),n=this.bodyNode().compile(t,E),e=this.elseBodyNode()?this.elseBodyNode().compile(t,E):"void 0",i=""+r+" ? "+n+" : "+e,t.level>=k?"("+i+")":i},e.prototype.unfoldSoak=function(){return this.soak&&this},e}(r),c={wrap:function(t,n,i){var r,o,c,l,p;if(t.jumps())return t;if(c=new h([],s.wrap([t])),r=[],(l=t.contains(this.literalArgs))||t.contains(this.literalThis)){if(l&&t.classBody)throw SyntaxError("Class bodies shouldn't reference arguments");p=new x(l?"apply":"call"),r=[new x("this")],l&&r.push(new x("arguments")),c=Y.wrap(c,[new e(p)])}return c.noReturn=i,o=new a(c,r),n?s.wrap([o]):o},literalArgs:function(t){return t instanceof x&&"arguments"===t.value&&!t.asKey},literalThis:function(t){return t instanceof x&&"this"===t.value&&!t.asKey||t instanceof h&&t.bound||t instanceof a&&t.isSuper}},he=function(t,e,n){var i;if(i=e[n].unfoldSoak(t))return e[n]=i.body,i.body=Y.wrap(e),i},X={"extends":function(){return"function(child, parent) { for (var key in parent) { if ("+le("hasProp")+".call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }"},bind:function(){return"function(fn, me){ return function(){ return fn.apply(me, arguments); }; }"},indexOf:function(){return"[].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }"},hasProp:function(){return"{}.hasOwnProperty"},slice:function(){return"[].slice"}},T=1,N=2,E=3,k=4,L=5,w=6,H=" ",m="[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*",f=RegExp("^"+m+"$"),j=/^[+-]?\d+$/,D=RegExp("^(?:("+m+")\\.prototype(?:\\.("+m+")|\\[(\"(?:[^\\\\\"\\r\\n]|\\\\.)*\"|'(?:[^\\\\'\\r\\n]|\\\\.)*')\\]|\\[(0x[\\da-fA-F]+|\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\]))|("+m+")$"),b=/^['"]/,le=function(t){var e;return e="__"+t,P.root.assign(e,X[t]()),e},ae=function(t,e){return t=t.replace(/\n/g,"$&"+e),t.replace(/\s+$/,"")}}).call(this)},require["./coffee-script"]=new function(){var t=this;(function(){var e,n,i,r,s,a,o,c,h,l,p,u,d=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1},f={}.hasOwnProperty;if(s=require("fs"),h=require("path"),e=require("./lexer").Lexer,c=require("./parser").parser,l=require("vm"),r=[".coffee",".litcoffee"],o=function(t,e){var i,r;return i=s.readFileSync(e,"utf8"),r=65279===i.charCodeAt(0)?i.substring(1):i,t._compile(n(r,{filename:e}),e)},require.extensions)for(p=0,u=r.length;u>p;p++)i=r[p],require.extensions[i]=o;t.VERSION="1.5.0",t.helpers=require("./helpers"),t.compile=n=function(e,n){var i,r,s;null==n&&(n={}),s=t.helpers.merge;try{if(r=c.parse(a.tokenize(e,n)).compile(n),!n.header)return r}catch(o){throw n.filename&&(o.message="In "+n.filename+", "+o.message),o}return i="Generated by CoffeeScript "+this.VERSION,"// "+i+"\n"+r},t.tokens=function(t,e){return a.tokenize(t,e)},t.nodes=function(t,e){return"string"==typeof t?c.parse(a.tokenize(t,e)):c.parse(t)},t.run=function(t,e){var i,a;return null==e&&(e={}),i=require.main,i.filename=process.argv[1]=e.filename?s.realpathSync(e.filename):".",i.moduleCache&&(i.moduleCache={}),i.paths=require("module")._nodeModulePaths(h.dirname(s.realpathSync(e.filename))),a=h.extname(i.filename),0>d.call(r,a)||require.extensions?i._compile(n(t,e),i.filename):i._compile(t,i.filename)},t.eval=function(t,e){var i,r,s,a,o,c,p,u,d,m,b,y,v,g;if(null==e&&(e={}),t=t.trim()){if(r=l.Script){if(null!=e.sandbox){if(e.sandbox instanceof r.createContext().constructor)p=e.sandbox;else{p=r.createContext(),y=e.sandbox;for(a in y)f.call(y,a)&&(u=y[a],p[a]=u)}p.global=p.root=p.GLOBAL=p}else p=global;if(p.__filename=e.filename||"eval",p.__dirname=h.dirname(p.__filename),p===global&&!p.module&&!p.require){for(i=require("module"),p.module=b=new i(e.modulename||"eval"),p.require=g=function(t){return i._load(t,b,!0)},b.filename=p.__filename,v=Object.getOwnPropertyNames(require),d=0,m=v.length;m>d;d++)c=v[d],"paths"!==c&&(g[c]=require[c]);g.paths=b.paths=i._nodeModulePaths(process.cwd()),g.resolve=function(t){return i._resolveFilename(t,b)}}}o={};for(a in e)f.call(e,a)&&(u=e[a],o[a]=u);return o.bare=!0,s=n(t,o),p===global?l.runInThisContext(s):l.runInContext(s,p)}},a=new e,c.lexer={lex:function(){var t,e;return e=this.tokens[this.pos++],e?(t=e[0],this.yytext=e[1],this.yylloc=e[2],this.yylineno=this.yylloc.first_line):t="",t},setInput:function(t){return this.tokens=t,this.pos=0},upcomingInput:function(){return""}},c.yy=require("./nodes")}).call(this)},require["./browser"]=new function(){var exports=this;(function(){var CoffeeScript,runScripts;CoffeeScript=require("./coffee-script"),CoffeeScript.require=require,CoffeeScript.eval=function(code,options){var _ref;return null==options&&(options={}),null==(_ref=options.bare)&&(options.bare=!0),eval(CoffeeScript.compile(code,options))},CoffeeScript.run=function(t,e){return null==e&&(e={}),e.bare=!0,Function(CoffeeScript.compile(t,e))()},"undefined"!=typeof window&&null!==window&&(CoffeeScript.load=function(t,e){var n;return n=window.ActiveXObject?new window.ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest,n.open("GET",t,!0),"overrideMimeType"in n&&n.overrideMimeType("text/plain"),n.onreadystatechange=function(){var i;if(4===n.readyState){if(0!==(i=n.status)&&200!==i)throw Error("Could not load "+t);if(CoffeeScript.run(n.responseText),e)return e()}},n.send(null)},runScripts=function(){var t,e,n,i,r,s;return s=document.getElementsByTagName("script"),t=function(){var t,e,n;for(n=[],t=0,e=s.length;e>t;t++)r=s[t],"text/coffeescript"===r.type&&n.push(r);return n}(),n=0,i=t.length,(e=function(){var i;return i=t[n++],"text/coffeescript"===(null!=i?i.type:void 0)?i.src?CoffeeScript.load(i.src,e):(CoffeeScript.run(i.innerHTML),e()):void 0})(),null},window.addEventListener?addEventListener("DOMContentLoaded",runScripts,!1):attachEvent("onload",runScripts))}).call(this)},require["./coffee-script"]}();"function"==typeof define&&define.amd?define(function(){return CoffeeScript}):root.CoffeeScript=CoffeeScript})(this); \ No newline at end of file +(function(root){var CoffeeScript=function(){function require(e){return require[e]}return require["./helpers"]=new function(){var e=this;(function(){var t,n,i,s;e.starts=function(e,t,n){return t===e.substr(n,t.length)},e.ends=function(e,t,n){var i;return i=t.length,t===e.substr(e.length-i-(n||0),i)},e.compact=function(e){var t,n,i,s;for(s=[],n=0,i=e.length;i>n;n++)t=e[n],t&&s.push(t);return s},e.count=function(e,t){var n,i;if(n=i=0,!t.length)return 1/0;for(;i=1+e.indexOf(t,i);)n++;return n},e.merge=function(e,t){return n(n({},e),t)},n=e.extend=function(e,t){var n,i;for(n in t)i=t[n],e[n]=i;return e},e.flatten=i=function(e){var t,n,s,r;for(n=[],s=0,r=e.length;r>s;s++)t=e[s],t instanceof Array?n=n.concat(i(t)):n.push(t);return n},e.del=function(e,t){var n;return n=e[t],delete e[t],n},e.last=function(e,t){return e[e.length-(t||0)-1]},e.some=null!=(s=Array.prototype.some)?s:function(e){var t,n,i;for(n=0,i=this.length;i>n;n++)if(t=this[n],e(t))return!0;return!1},t=function(e,t){return t?{first_line:e.first_line,first_column:e.first_column,last_line:t.last_line,last_column:t.last_column}:e},e.addLocationDataFn=function(e,n){return function(i){return"object"==typeof i&&i.updateLocationDataIfMissing&&i.updateLocationDataIfMissing(t(e,n)),i}},e.locationDataToString=function(e){var t;return"2"in e&&"first_line"in e[2]?t=e[2]:"first_line"in e&&(t=e),t?""+(t.first_line+1)+":"+(t.first_column+1)+"-"+(""+(t.last_line+1)+":"+(t.last_column+1)):"No location data"},e.isCoffee=function(e){return/\.((lit)?coffee|coffee\.md)$/.test(e)},e.isLiterate=function(e){return/\.(litcoffee|coffee\.md)$/.test(e)}}).call(this)},require["./rewriter"]=new function(){var e=this;(function(){var t,n,i,s,r,a,o,c,h,l,u,p,d,f,m,b,k,g,y,v=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1},w=[].slice;for(f=function(e,t){var n;return n=[e,t],n.generated=!0,n},e.Rewriter=function(){function e(){}return e.prototype.rewrite=function(e){return this.tokens=e,this.removeLeadingNewlines(),this.removeMidExpressionNewlines(),this.closeOpenCalls(),this.closeOpenIndexes(),this.addImplicitIndentation(),this.tagPostfixConditionals(),this.addImplicitBracesAndParens(),this.addLocationDataToGeneratedTokens(),this.tokens},e.prototype.scanTokens=function(e){var t,n,i;for(i=this.tokens,t=0;n=i[t];)t+=e.call(this,n,t,i);return!0},e.prototype.detectEnd=function(e,t,n){var r,a,o,c,h;for(o=this.tokens,r=0;a=o[e];){if(0===r&&t.call(this,a,e))return n.call(this,a,e);if(!a||0>r)return n.call(this,a,e-1);c=a[0],v.call(s,c)>=0?r+=1:(h=a[0],v.call(i,h)>=0&&(r-=1)),e+=1}return e-1},e.prototype.removeLeadingNewlines=function(){var e,t,n,i,s;for(s=this.tokens,e=n=0,i=s.length;i>n&&(t=s[e][0],"TERMINATOR"===t);e=++n);return e?this.tokens.splice(0,e):void 0},e.prototype.removeMidExpressionNewlines=function(){return this.scanTokens(function(e,t,i){var s;return"TERMINATOR"===e[0]&&(s=this.tag(t+1),v.call(n,s)>=0)?(i.splice(t,1),0):1})},e.prototype.closeOpenCalls=function(){var e,t;return t=function(e,t){var n;return")"===(n=e[0])||"CALL_END"===n||"OUTDENT"===e[0]&&")"===this.tag(t-1)},e=function(e,t){return this.tokens["OUTDENT"===e[0]?t-1:t][0]="CALL_END"},this.scanTokens(function(n,i){return"CALL_START"===n[0]&&this.detectEnd(i+1,t,e),1})},e.prototype.closeOpenIndexes=function(){var e,t;return t=function(e){var t;return"]"===(t=e[0])||"INDEX_END"===t},e=function(e){return e[0]="INDEX_END"},this.scanTokens(function(n,i){return"INDEX_START"===n[0]&&this.detectEnd(i+1,t,e),1})},e.prototype.matchTags=function(){var e,t,n,i,s,r,a;for(t=arguments[0],i=arguments.length>=2?w.call(arguments,1):[],e=0,n=s=0,r=i.length;r>=0?r>s:s>r;n=r>=0?++s:--s){for(;"HERECOMMENT"===this.tag(t+n+e);)e+=2;if(null!=i[n]&&("string"==typeof i[n]&&(i[n]=[i[n]]),a=this.tag(t+n+e),0>v.call(i[n],a)))return!1}return!0},e.prototype.looksObjectish=function(e){return this.matchTags(e,"@",null,":")||this.matchTags(e,null,":")},e.prototype.findTagsBackwards=function(e,t){var n,r,a,o,c,h,l;for(n=[];e>=0&&(n.length||(o=this.tag(e),0>v.call(t,o)&&(c=this.tag(e),0>v.call(s,c)||this.tokens[e].generated)&&(h=this.tag(e),0>v.call(u,h))));)r=this.tag(e),v.call(i,r)>=0&&n.push(this.tag(e)),a=this.tag(e),v.call(s,a)>=0&&n.length&&n.pop(),e-=1;return l=this.tag(e),v.call(t,l)>=0},e.prototype.addImplicitBracesAndParens=function(){var e;return e=[],this.scanTokens(function(t,n,r){var l,p,d,m,b,k,g,y,w,T,F,C,L,E,N,x,D,S,A,R,I,_,$,O,j,B;if(R=t[0],T=(n>0?r[n-1]:[])[0],y=(r.length-1>n?r[n+1]:[])[0],N=function(){return e[e.length-1]},x=n,d=function(e){return n-x+e},m=function(){var e,t;return null!=(e=N())?null!=(t=e[2])?t.ours:void 0:void 0},b=function(){var e;return m()&&"("===(null!=(e=N())?e[0]:void 0)},g=function(){var e;return m()&&"{"===(null!=(e=N())?e[0]:void 0)},k=function(){var e;return m&&"CONTROL"===(null!=(e=N())?e[0]:void 0)},D=function(t){var i;return i=null!=t?t:n,e.push(["(",i,{ours:!0}]),r.splice(i,0,f("CALL_START","(")),null==t?n+=1:void 0},l=function(){return e.pop(),r.splice(n,0,f("CALL_END",")")),n+=1},S=function(t,i){var s;return null==i&&(i=!0),s=null!=t?t:n,e.push(["{",s,{sameLine:!0,startsLine:i,ours:!0}]),r.splice(s,0,f("{",f(new String("{")))),null==t?n+=1:void 0},p=function(t){return t=null!=t?t:n,e.pop(),r.splice(t,0,f("}","}")),n+=1},b()&&("IF"===R||"TRY"===R||"FINALLY"===R||"CATCH"===R||"CLASS"===R||"SWITCH"===R))return e.push(["CONTROL",n,{ours:!0}]),d(1);if("INDENT"===R&&m()){if("=>"!==T&&"->"!==T&&"["!==T&&"("!==T&&","!==T&&"{"!==T&&"TRY"!==T&&"ELSE"!==T&&"="!==T)for(;b();)l();return k()&&e.pop(),e.push([R,n]),d(1)}if(v.call(s,R)>=0)return e.push([R,n]),d(1);if(v.call(i,R)>=0){for(;m();)b()?l():g()?p():e.pop();e.pop()}if((v.call(c,R)>=0&&t.spaced||"?"===R&&n>0&&!r[n-1].spaced)&&(v.call(a,y)>=0||v.call(h,y)>=0&&!(null!=(I=r[n+1])?I.spaced:void 0)&&!(null!=(_=r[n+1])?_.newLine:void 0)))return"?"===R&&(R=t[0]="FUNC_EXIST"),D(n+1),d(2);if(this.matchTags(n,c,"INDENT",null,":")&&!this.findTagsBackwards(n,["CLASS","EXTENDS","IF","CATCH","SWITCH","LEADING_WHEN","FOR","WHILE","UNTIL"]))return D(n+1),e.push(["INDENT",n+2]),d(3);if(":"===R){for(F="@"===this.tag(n-2)?n-2:n-1;"HERECOMMENT"===this.tag(F-2);)F-=2;return A=0===F||($=this.tag(F-1),v.call(u,$)>=0)||r[F-1].newLine,N()&&(O=N(),E=O[0],L=O[1],("{"===E||"INDENT"===E&&"{"===this.tag(L-1))&&(A||","===this.tag(F-1)||"{"===this.tag(F-1)))?d(1):(S(F,!!A),d(2))}if("OUTDENT"===T&&b()&&("."===R||"?."===R||"::"===R||"?::"===R))return l(),d(1);if(g()&&v.call(u,R)>=0&&(N()[2].sameLine=!1),v.call(o,R)>=0)for(;m();)if(j=N(),E=j[0],L=j[1],B=j[2],C=B.sameLine,A=B.startsLine,b()&&","!==T)l();else if(g()&&C&&!A)p();else{if(!g()||"TERMINATOR"!==R||","===T||A&&this.looksObjectish(n+1))break;p()}if(","===R&&!this.looksObjectish(n+1)&&g()&&("TERMINATOR"!==y||!this.looksObjectish(n+2)))for(w="OUTDENT"===y?1:0;g();)p(n+w);return d(1)})},e.prototype.addLocationDataToGeneratedTokens=function(){return this.scanTokens(function(e,t,n){var i,s,r,a,o;return e[2]?1:e.generated||e.explicit?(o=null!=(r=null!=(a=n[t-1])?a[2]:void 0)?r:{last_line:0,last_column:0},s=o.last_line,i=o.last_column,e[2]={first_line:s,first_column:i,last_line:s,last_column:i},1):1})},e.prototype.addImplicitIndentation=function(){var e,t,n,i,s;return s=n=i=null,t=function(e){var t;return";"!==e[1]&&(t=e[0],v.call(p,t)>=0)&&!("ELSE"===e[0]&&"IF"!==s&&"THEN"!==s)},e=function(e,t){return this.tokens.splice(","===this.tag(t-1)?t-1:t,0,i)},this.scanTokens(function(r,a,o){var c,h,l;return c=r[0],"TERMINATOR"===c&&"THEN"===this.tag(a+1)?(o.splice(a,1),0):"ELSE"===c&&"OUTDENT"!==this.tag(a-1)?(o.splice.apply(o,[a,0].concat(w.call(this.indentation(r)))),2):"CATCH"!==c||"OUTDENT"!==(h=this.tag(a+2))&&"TERMINATOR"!==h&&"FINALLY"!==h?v.call(d,c)>=0&&"INDENT"!==this.tag(a+1)&&("ELSE"!==c||"IF"!==this.tag(a+1))?(s=c,l=this.indentation(r,!0),n=l[0],i=l[1],"THEN"===s&&(n.fromThen=!0),o.splice(a+1,0,n),this.detectEnd(a+2,t,e),"THEN"===c&&o.splice(a,1),1):1:(o.splice.apply(o,[a+2,0].concat(w.call(this.indentation(r)))),4)})},e.prototype.tagPostfixConditionals=function(){var e,t,n;return n=null,t=function(e){var t;return"TERMINATOR"===(t=e[0])||"INDENT"===t},e=function(e){return"INDENT"!==e[0]||e.generated&&!e.fromThen?n[0]="POST_"+n[0]:void 0},this.scanTokens(function(i,s){return"IF"!==i[0]?1:(n=i,this.detectEnd(s+1,t,e),1)})},e.prototype.indentation=function(e,t){var n,i;return null==t&&(t=!1),n=["INDENT",2],i=["OUTDENT",2],t&&(n.generated=i.generated=!0),t||(n.explicit=i.explicit=!0),[n,i]},e.prototype.generate=f,e.prototype.tag=function(e){var t;return null!=(t=this.tokens[e])?t[0]:void 0},e}(),t=[["(",")"],["[","]"],["{","}"],["INDENT","OUTDENT"],["CALL_START","CALL_END"],["PARAM_START","PARAM_END"],["INDEX_START","INDEX_END"]],e.INVERSES=l={},s=[],i=[],k=0,g=t.length;g>k;k++)y=t[k],m=y[0],b=y[1],s.push(l[b]=m),i.push(l[m]=b);n=["CATCH","WHEN","ELSE","FINALLY"].concat(i),c=["IDENTIFIER","SUPER",")","CALL_END","]","INDEX_END","@","THIS"],a=["IDENTIFIER","NUMBER","STRING","JS","REGEX","NEW","PARAM_START","CLASS","IF","TRY","SWITCH","THIS","BOOL","NULL","UNDEFINED","UNARY","SUPER","@","->","=>","[","(","{","--","++"],h=["+","-"],r=["->","=>","{","[",","],o=["POST_IF","FOR","WHILE","UNTIL","WHEN","BY","LOOP","TERMINATOR"],d=["ELSE","->","=>","TRY","FINALLY","THEN"],p=["TERMINATOR","CATCH","FINALLY","ELSE","OUTDENT","LEADING_WHEN"],u=["TERMINATOR","INDENT","OUTDENT"]}).call(this)},require["./lexer"]=new function(){var e=this;(function(){var t,n,i,s,r,a,o,c,h,l,u,p,d,f,m,b,k,g,y,v,w,T,F,C,L,E,N,x,D,S,A,R,I,_,$,O,j,B,M,V,P,U,H,q,G,W,X,Y,K,z,J,Z=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1};z=require("./rewriter"),j=z.Rewriter,g=z.INVERSES,J=require("./helpers"),G=J.count,K=J.starts,q=J.compact,X=J.last,Y=J.locationDataToString,e.Lexer=E=function(){function e(){}return e.prototype.tokenize=function(e,t){var n,i,s,r;for(null==t&&(t={}),this.literate=t.literate,this.indent=0,this.indebt=0,this.outdebt=0,this.indents=[],this.ends=[],this.tokens=[],this.chunkLine=t.line||0,this.chunkColumn=t.column||0,e=this.clean(e),i=0;this.chunk=e.slice(i);)n=this.identifierToken()||this.commentToken()||this.whitespaceToken()||this.lineToken()||this.heredocToken()||this.stringToken()||this.numberToken()||this.regexToken()||this.jsToken()||this.literalToken(),r=this.getLineAndColumnFromChunk(n),this.chunkLine=r[0],this.chunkColumn=r[1],i+=n;return this.closeIndentation(),(s=this.ends.pop())&&this.error("missing "+s),t.rewrite===!1?this.tokens:(new j).rewrite(this.tokens)},e.prototype.clean=function(e){var n,i,s;return e.charCodeAt(0)===t&&(e=e.slice(1)),e=e.replace(/\r/g,"").replace(P,""),H.test(e)&&(e="\n"+e,this.chunkLine--),this.literate&&(i=function(){var t,i,r,a;for(r=e.split("\n"),a=[],t=0,i=r.length;i>t;t++)n=r[t],(s=C.exec(n))?a.push(n.slice(s[0].length)):a.push("# "+n);return a}(),e=i.join("\n")),e},e.prototype.identifierToken=function(){var e,t,n,i,s,c,h,l,u,p,d,f,m,k;return(h=b.exec(this.chunk))?(c=h[0],i=h[1],e=h[2],s=i.length,l=void 0,"own"===i&&"FOR"===this.tag()?(this.token("OWN",i),i.length):(n=e||(u=X(this.tokens))&&("."===(f=u[0])||"?."===f||"::"===f||"?::"===f||!u.spaced&&"@"===u[0]),p="IDENTIFIER",!n&&(Z.call(w,i)>=0||Z.call(o,i)>=0)&&(p=i.toUpperCase(),"WHEN"===p&&(m=this.tag(),Z.call(T,m)>=0)?p="LEADING_WHEN":"FOR"===p?this.seenFor=!0:"UNLESS"===p?p="IF":Z.call(U,p)>=0?p="UNARY":Z.call($,p)>=0&&("INSTANCEOF"!==p&&this.seenFor?(p="FOR"+p,this.seenFor=!1):(p="RELATION","!"===this.value()&&(l=this.tokens.pop(),i="!"+i)))),Z.call(v,i)>=0&&(n?(p="IDENTIFIER",i=new String(i),i.reserved=!0):Z.call(O,i)>=0&&this.error('reserved word "'+i+'"')),n||(Z.call(r,i)>=0&&(i=a[i]),p=function(){switch(i){case"!":return"UNARY";case"==":case"!=":return"COMPARE";case"&&":case"||":return"LOGIC";case"true":case"false":return"BOOL";case"break":case"continue":return"STATEMENT";default:return p}}()),d=this.token(p,i,0,s),l&&(k=[l[2].first_line,l[2].first_column],d[2].first_line=k[0],d[2].first_column=k[1]),e&&(t=c.lastIndexOf(":"),this.token(":",":",t,e.length)),c.length)):0},e.prototype.numberToken=function(){var e,t,n,i,s;return(n=R.exec(this.chunk))?(i=n[0],/^0[BOX]/.test(i)?this.error("radix prefix '"+i+"' must be lowercase"):/E/.test(i)&&!/^0x/.test(i)?this.error("exponential notation '"+i+"' must be indicated with a lowercase 'e'"):/^0\d*[89]/.test(i)?this.error("decimal literal '"+i+"' must not be prefixed with '0'"):/^0\d+/.test(i)&&this.error("octal literal '"+i+"' must be prefixed with '0o'"),t=i.length,(s=/^0o([0-7]+)/.exec(i))&&(i="0x"+parseInt(s[1],8).toString(16)),(e=/^0b([01]+)/.exec(i))&&(i="0x"+parseInt(e[1],2).toString(16)),this.token("NUMBER",i,0,t),t):0},e.prototype.stringToken=function(){var e,t,n;switch(this.chunk.charAt(0)){case"'":if(!(e=M.exec(this.chunk)))return 0;n=e[0],this.token("STRING",n.replace(x,"\\\n"),0,n.length);break;case'"':if(!(n=this.balancedString(this.chunk,'"')))return 0;n.indexOf("#{",1)>0?this.interpolateString(n.slice(1,-1),{strOffset:1,lexedLength:n.length}):this.token("STRING",this.escapeLines(n,0,n.length));break;default:return 0}return(t=/^(?:\\.|[^\\])*\\(?:0[0-7]|[1-7])/.test(n))&&this.error("octal escape sequences "+n+" are not allowed"),n.length},e.prototype.heredocToken=function(){var e,t,n,i;return(n=u.exec(this.chunk))?(t=n[0],i=t.charAt(0),e=this.sanitizeHeredoc(n[2],{quote:i,indent:null}),'"'===i&&e.indexOf("#{")>=0?this.interpolateString(e,{heredoc:!0,strOffset:3,lexedLength:t.length}):this.token("STRING",this.makeString(e,i,!0),0,t.length),t.length):0},e.prototype.commentToken=function(){var e,t,n;return(n=this.chunk.match(c))?(e=n[0],t=n[1],t&&this.token("HERECOMMENT",this.sanitizeHeredoc(t,{herecomment:!0,indent:Array(this.indent+1).join(" ")}),0,e.length),e.length):0},e.prototype.jsToken=function(){var e,t;return"`"===this.chunk.charAt(0)&&(e=y.exec(this.chunk))?(this.token("JS",(t=e[0]).slice(1,-1),0,t.length),t.length):0},e.prototype.regexToken=function(){var e,t,n,i,s,r,a;return"/"!==this.chunk.charAt(0)?0:(n=f.exec(this.chunk))?t=this.heregexToken(n):(i=X(this.tokens),i&&(r=i[0],Z.call(i.spaced?S:A,r)>=0)?0:(n=_.exec(this.chunk))?(a=n,n=a[0],s=a[1],e=a[2],"/*"===s.slice(0,2)&&this.error("regular expressions cannot begin with `*`"),"//"===s&&(s="/(?:)/"),this.token("REGEX",""+s+e,0,n.length),n.length):0)},e.prototype.heregexToken=function(e){var t,n,i,s,r,a,o,c,h,l,u,p,d,f,b,k;if(s=e[0],t=e[1],n=e[2],0>t.indexOf("#{"))return o=t.replace(m,"").replace(/\//g,"\\/"),o.match(/^\*/)&&this.error("regular expressions cannot begin with `*`"),this.token("REGEX","/"+(o||"(?:)")+"/"+n,0,s.length),s.length;for(this.token("IDENTIFIER","RegExp",0,0),this.token("CALL_START","(",0,0),l=[],f=this.interpolateString(t,{regex:!0}),p=0,d=f.length;d>p;p++){if(h=f[p],c=h[0],u=h[1],"TOKENS"===c)l.push.apply(l,u);else if("NEOSTRING"===c){if(!(u=u.replace(m,"")))continue;u=u.replace(/\\/g,"\\\\"),h[0]="STRING",h[1]=this.makeString(u,'"',!0),l.push(h)}else this.error("Unexpected "+c);a=X(this.tokens),r=["+","+"],r[2]=a[2],l.push(r)}return l.pop(),"STRING"!==(null!=(b=l[0])?b[0]:void 0)&&(this.token("STRING",'""',0,0),this.token("+","+",0,0)),(k=this.tokens).push.apply(k,l),n&&(i=s.lastIndexOf(n),this.token(",",",",i,0),this.token("STRING",'"'+n+'"',i,n.length)),this.token(")",")",s.length-1,0),s.length},e.prototype.lineToken=function(){var e,t,n,i,s;if(!(n=D.exec(this.chunk)))return 0;if(t=n[0],this.seenFor=!1,s=t.length-1-t.lastIndexOf("\n"),i=this.unfinished(),s-this.indebt===this.indent)return i?this.suppressNewlines():this.newlineToken(0),t.length;if(s>this.indent){if(i)return this.indebt=s-this.indent,this.suppressNewlines(),t.length;e=s-this.indent+this.outdebt,this.token("INDENT",e,0,t.length),this.indents.push(e),this.ends.push("OUTDENT"),this.outdebt=this.indebt=0}else this.indebt=0,this.outdentToken(this.indent-s,i,t.length);return this.indent=s,t.length},e.prototype.outdentToken=function(e,t,n){for(var i,s;e>0;)s=this.indents.length-1,void 0===this.indents[s]?e=0:this.indents[s]===this.outdebt?(e-=this.outdebt,this.outdebt=0):this.indents[s]=0)&&this.error('reserved word "'+this.value()+"\" can't be assigned"),"||"===(o=t[1])||"&&"===o))return t[0]="COMPOUND_ASSIGN",t[1]+="=",r.length;if(";"===r)this.seenFor=!1,n="TERMINATOR";else if(Z.call(N,r)>=0)n="MATH";else if(Z.call(h,r)>=0)n="COMPARE";else if(Z.call(l,r)>=0)n="COMPOUND_ASSIGN";else if(Z.call(U,r)>=0)n="UNARY";else if(Z.call(B,r)>=0)n="SHIFT";else if(Z.call(L,r)>=0||"?"===r&&(null!=t?t.spaced:void 0))n="LOGIC";else if(t&&!t.spaced)if("("===r&&(c=t[0],Z.call(i,c)>=0))"?"===t[0]&&(t[0]="FUNC_EXIST"),n="CALL_START";else if("["===r&&(u=t[0],Z.call(k,u)>=0))switch(n="INDEX_START",t[0]){case"?":t[0]="INDEX_SOAK"}switch(r){case"(":case"{":case"[":this.ends.push(g[r]);break;case")":case"}":case"]":this.pair(r)}return this.token(n,r),r.length},e.prototype.sanitizeHeredoc=function(e,t){var n,i,s,r,a;if(s=t.indent,i=t.herecomment){if(p.test(e)&&this.error('block comment cannot contain "*/", starting'),0>e.indexOf("\n"))return e}else for(;r=d.exec(e);)n=r[1],(null===s||(a=n.length)>0&&s.length>a)&&(s=n);return s&&(e=e.replace(RegExp("\\n"+s,"g"),"\n")),this.literate&&(e=e.replace(/\n# \n/g,"\n\n")),i||(e=e.replace(/^\n/,"")),e},e.prototype.tagParameters=function(){var e,t,n,i;if(")"!==this.tag())return this;for(t=[],i=this.tokens,e=i.length,i[--e][0]="PARAM_END";n=i[--e];)switch(n[0]){case")":t.push(n);break;case"(":case"CALL_START":if(!t.length)return"("===n[0]?(n[0]="PARAM_START",this):this;t.pop()}return this},e.prototype.closeIndentation=function(){return this.outdentToken(this.indent)},e.prototype.balancedString=function(e,t){var n,i,s,r,a,o,c,h;for(n=0,o=[t],i=c=1,h=e.length;h>=1?h>c:c>h;i=h>=1?++c:--c)if(n)--n;else{switch(s=e.charAt(i)){case"\\":++n;continue;case t:if(o.pop(),!o.length)return e.slice(0,+i+1||9e9);t=o[o.length-1];continue}"}"!==t||'"'!==s&&"'"!==s?"}"===t&&"/"===s&&(r=f.exec(e.slice(i))||_.exec(e.slice(i)))?n+=r[0].length-1:"}"===t&&"{"===s?o.push(t="}"):'"'===t&&"#"===a&&"{"===s&&o.push(t="}"):o.push(t=s),a=s}return this.error("missing "+o.pop()+", starting")},e.prototype.interpolateString=function(t,n){var i,s,r,a,o,c,h,l,u,p,d,f,m,b,k,g,y,v,w,T,F,C,L,E,N,x,D;for(null==n&&(n={}),r=n.heredoc,y=n.regex,m=n.offsetInChunk,v=n.strOffset,u=n.lexedLength,m=m||0,v=v||0,u=u||t.length,r&&t.length>0&&"\n"===t[0]&&(t=t.slice(1),v++),F=[],b=0,a=-1;l=t.charAt(a+=1);)"\\"!==l?"#"===l&&"{"===t.charAt(a+1)&&(s=this.balancedString(t.slice(a+1),"}"))&&(a>b&&F.push(this.makeToken("NEOSTRING",t.slice(b,a),v+b)),o=s.slice(1,-1),o.length&&(N=this.getLineAndColumnFromChunk(v+a+1),p=N[0],i=N[1],f=(new e).tokenize(o,{line:p,column:i,rewrite:!1}),g=f.pop(),"TERMINATOR"===(null!=(x=f[0])?x[0]:void 0)&&(g=f.shift()),(h=f.length)&&(h>1&&(f.unshift(this.makeToken("(","(",v+a+1,0)),f.push(this.makeToken(")",")",v+a+1+o.length,0))),F.push(["TOKENS",f]))),a+=s.length,b=a+1):a+=1;if(a>b&&t.length>b&&F.push(this.makeToken("NEOSTRING",t.slice(b),v+b)),y)return F;if(!F.length)return this.token("STRING",'""',m,u);for("NEOSTRING"!==F[0][0]&&F.unshift(this.makeToken("NEOSTRING","",m)),(c=F.length>1)&&this.token("(","(",m,0),a=L=0,E=F.length;E>L;a=++L)T=F[a],w=T[0],C=T[1],a&&(a&&(k=this.token("+","+")),d="TOKENS"===w?C[0]:T,k[2]={first_line:d[2].first_line,first_column:d[2].first_column,last_line:d[2].first_line,last_column:d[2].first_column}),"TOKENS"===w?(D=this.tokens).push.apply(D,C):"NEOSTRING"===w?(T[0]="STRING",T[1]=this.makeString(C,'"',r),this.tokens.push(T)):this.error("Unexpected "+w);return c&&this.token(")",")",m+u,0),F},e.prototype.pair=function(e){var t,n;return e!==(n=X(this.ends))?("OUTDENT"!==n&&this.error("unmatched "+e),this.indent-=t=X(this.indents),this.outdentToken(t,!0),this.pair(e)):this.ends.pop()},e.prototype.getLineAndColumnFromChunk=function(e){var t,n,i,s;return 0===e?[this.chunkLine,this.chunkColumn]:(s=e>=this.chunk.length?this.chunk:this.chunk.slice(0,+(e-1)+1||9e9),n=G(s,"\n"),t=this.chunkColumn,n>0?(i=s.split("\n"),t=X(i).length):t+=s.length,[this.chunkLine+n,t])},e.prototype.makeToken=function(e,t,n,i){var s,r,a,o,c;return null==n&&(n=0),null==i&&(i=t.length),r={},o=this.getLineAndColumnFromChunk(n),r.first_line=o[0],r.first_column=o[1],s=Math.max(0,i-1),c=this.getLineAndColumnFromChunk(n+(i-1)),r.last_line=c[0],r.last_column=c[1],a=[e,t,r]},e.prototype.token=function(e,t,n,i){var s;return s=this.makeToken(e,t,n,i),this.tokens.push(s),s},e.prototype.tag=function(e,t){var n;return(n=X(this.tokens,e))&&(t?n[0]=t:n[0])},e.prototype.value=function(e,t){var n;return(n=X(this.tokens,e))&&(t?n[1]=t:n[1])},e.prototype.unfinished=function(){var e;return F.test(this.chunk)||"\\"===(e=this.tag())||"."===e||"?."===e||"?::"===e||"UNARY"===e||"MATH"===e||"+"===e||"-"===e||"SHIFT"===e||"RELATION"===e||"COMPARE"===e||"LOGIC"===e||"THROW"===e||"EXTENDS"===e},e.prototype.escapeLines=function(e,t){return e.replace(x,t?"\\n":"")},e.prototype.makeString=function(e,t,n){return e?(e=e.replace(/\\([\s\S])/g,function(e,n){return"\n"===n||n===t?n:e}),e=e.replace(RegExp(""+t,"g"),"\\$&"),t+this.escapeLines(e,n)+t):t+t},e.prototype.error=function(e){throw SyntaxError(""+e+" on line "+(this.chunkLine+1))},e}(),w=["true","false","null","this","new","delete","typeof","in","instanceof","return","throw","break","continue","debugger","if","else","switch","for","while","do","try","catch","finally","class","extends","super"],o=["undefined","then","unless","until","loop","of","by","when"],a={and:"&&",or:"||",is:"==",isnt:"!=",not:"!",yes:"true",no:"false",on:"true",off:"false"},r=function(){var e;e=[];for(W in a)e.push(W);return e}(),o=o.concat(r),O=["case","default","function","var","void","with","const","let","enum","export","import","native","__hasProp","__extends","__slice","__bind","__indexOf","implements","interface","package","private","protected","public","static","yield"],V=["arguments","eval"],v=w.concat(O).concat(V),e.RESERVED=O.concat(w).concat(o).concat(V),e.STRICT_PROSCRIBED=V,t=65279,b=/^([$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)([^\n\S]*:(?!:))?/,R=/^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i,u=/^("""|''')([\s\S]*?)(?:\n[^\n\S]*)?\1/,I=/^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>])\2=?|\?(\.|::)|\.{2,3})/,H=/^[^\n\S]+/,c=/^###([^#][\s\S]*?)(?:###[^\n\S]*|(?:###)$)|^(?:\s*#(?!##[^#]).*)+/,C=/^([ ]{4}|\t)/,s=/^[-=]>/,D=/^(?:\n[^\n\S]*)+/,M=/^'[^\\']*(?:\\.[^\\']*)*'/,y=/^`[^\\`]*(?:\\.[^\\`]*)*`/,_=/^(\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)([imgy]{0,4})(?!\w)/,f=/^\/{3}([\s\S]+?)\/{3}([imgy]{0,4})(?!\w)/,m=/\s+(?:#.*)?/g,x=/\n/g,d=/\n+([^\n\S]*)/g,p=/\*\//,F=/^\s*(?:,|\??\.(?![.\d])|::)/,P=/\s+$/,l=["-=","+=","/=","*=","%=","||=","&&=","?=","<<=",">>=",">>>=","&=","^=","|="],U=["!","~","NEW","TYPEOF","DELETE","DO"],L=["&&","||","&","|","^"],B=["<<",">>",">>>"],h=["==","!=","<",">","<=",">="],N=["*","/","%"],$=["IN","OF","INSTANCEOF"],n=["TRUE","FALSE"],S=["NUMBER","REGEX","BOOL","NULL","UNDEFINED","++","--","]"],A=S.concat(")","}","THIS","IDENTIFIER","STRING"),i=["IDENTIFIER","STRING","REGEX",")","]","}","?","::","@","THIS","SUPER"],k=i.concat("NUMBER","BOOL","NULL","UNDEFINED"),T=["INDENT","OUTDENT","TERMINATOR"]}).call(this)},require["./parser"]=new function(){var e=this,t=function(){function e(){this.yy={}}var t={trace:function(){},yy:{},symbols_:{error:2,Root:3,Body:4,Block:5,TERMINATOR:6,Line:7,Expression:8,Statement:9,Return:10,Comment:11,STATEMENT:12,Value:13,Invocation:14,Code:15,Operation:16,Assign:17,If:18,Try:19,While:20,For:21,Switch:22,Class:23,Throw:24,INDENT:25,OUTDENT:26,Identifier:27,IDENTIFIER:28,AlphaNumeric:29,NUMBER:30,STRING:31,Literal:32,JS:33,REGEX:34,DEBUGGER:35,UNDEFINED:36,NULL:37,BOOL:38,Assignable:39,"=":40,AssignObj:41,ObjAssignable:42,":":43,ThisProperty:44,RETURN:45,HERECOMMENT:46,PARAM_START:47,ParamList:48,PARAM_END:49,FuncGlyph:50,"->":51,"=>":52,OptComma:53,",":54,Param:55,ParamVar:56,"...":57,Array:58,Object:59,Splat:60,SimpleAssignable:61,Accessor:62,Parenthetical:63,Range:64,This:65,".":66,"?.":67,"::":68,"?::":69,Index:70,INDEX_START:71,IndexValue:72,INDEX_END:73,INDEX_SOAK:74,Slice:75,"{":76,AssignList:77,"}":78,CLASS:79,EXTENDS:80,OptFuncExist:81,Arguments:82,SUPER:83,FUNC_EXIST:84,CALL_START:85,CALL_END:86,ArgList:87,THIS:88,"@":89,"[":90,"]":91,RangeDots:92,"..":93,Arg:94,SimpleArgs:95,TRY:96,Catch:97,FINALLY:98,CATCH:99,THROW:100,"(":101,")":102,WhileSource:103,WHILE:104,WHEN:105,UNTIL:106,Loop:107,LOOP:108,ForBody:109,FOR:110,ForStart:111,ForSource:112,ForVariables:113,OWN:114,ForValue:115,FORIN:116,FOROF:117,BY:118,SWITCH:119,Whens:120,ELSE:121,When:122,LEADING_WHEN:123,IfBlock:124,IF:125,POST_IF:126,UNARY:127,"-":128,"+":129,"--":130,"++":131,"?":132,MATH:133,SHIFT:134,COMPARE:135,LOGIC:136,RELATION:137,COMPOUND_ASSIGN:138,$accept:0,$end:1},terminals_:{2:"error",6:"TERMINATOR",12:"STATEMENT",25:"INDENT",26:"OUTDENT",28:"IDENTIFIER",30:"NUMBER",31:"STRING",33:"JS",34:"REGEX",35:"DEBUGGER",36:"UNDEFINED",37:"NULL",38:"BOOL",40:"=",43:":",45:"RETURN",46:"HERECOMMENT",47:"PARAM_START",49:"PARAM_END",51:"->",52:"=>",54:",",57:"...",66:".",67:"?.",68:"::",69:"?::",71:"INDEX_START",73:"INDEX_END",74:"INDEX_SOAK",76:"{",78:"}",79:"CLASS",80:"EXTENDS",83:"SUPER",84:"FUNC_EXIST",85:"CALL_START",86:"CALL_END",88:"THIS",89:"@",90:"[",91:"]",93:"..",96:"TRY",98:"FINALLY",99:"CATCH",100:"THROW",101:"(",102:")",104:"WHILE",105:"WHEN",106:"UNTIL",108:"LOOP",110:"FOR",114:"OWN",116:"FORIN",117:"FOROF",118:"BY",119:"SWITCH",121:"ELSE",123:"LEADING_WHEN",125:"IF",126:"POST_IF",127:"UNARY",128:"-",129:"+",130:"--",131:"++",132:"?",133:"MATH",134:"SHIFT",135:"COMPARE",136:"LOGIC",137:"RELATION",138:"COMPOUND_ASSIGN"},productions_:[0,[3,0],[3,1],[3,2],[4,1],[4,3],[4,2],[7,1],[7,1],[9,1],[9,1],[9,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[5,2],[5,3],[27,1],[29,1],[29,1],[32,1],[32,1],[32,1],[32,1],[32,1],[32,1],[32,1],[17,3],[17,4],[17,5],[41,1],[41,3],[41,5],[41,1],[42,1],[42,1],[42,1],[10,2],[10,1],[11,1],[15,5],[15,2],[50,1],[50,1],[53,0],[53,1],[48,0],[48,1],[48,3],[48,4],[48,6],[55,1],[55,2],[55,3],[56,1],[56,1],[56,1],[56,1],[60,2],[61,1],[61,2],[61,2],[61,1],[39,1],[39,1],[39,1],[13,1],[13,1],[13,1],[13,1],[13,1],[62,2],[62,2],[62,2],[62,2],[62,1],[62,1],[70,3],[70,2],[72,1],[72,1],[59,4],[77,0],[77,1],[77,3],[77,4],[77,6],[23,1],[23,2],[23,3],[23,4],[23,2],[23,3],[23,4],[23,5],[14,3],[14,3],[14,1],[14,2],[81,0],[81,1],[82,2],[82,4],[65,1],[65,1],[44,2],[58,2],[58,4],[92,1],[92,1],[64,5],[75,3],[75,2],[75,2],[75,1],[87,1],[87,3],[87,4],[87,4],[87,6],[94,1],[94,1],[95,1],[95,3],[19,2],[19,3],[19,4],[19,5],[97,3],[97,3],[24,2],[63,3],[63,5],[103,2],[103,4],[103,2],[103,4],[20,2],[20,2],[20,2],[20,1],[107,2],[107,2],[21,2],[21,2],[21,2],[109,2],[109,2],[111,2],[111,3],[115,1],[115,1],[115,1],[115,1],[113,1],[113,3],[112,2],[112,2],[112,4],[112,4],[112,4],[112,6],[112,6],[22,5],[22,7],[22,4],[22,6],[120,1],[120,2],[122,3],[122,4],[124,3],[124,5],[18,1],[18,3],[18,3],[18,3],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,5],[16,4],[16,3]],performAction:function(e,t,n,i,s,r,a){var o=r.length-1;switch(s){case 1:return this.$=i.addLocationDataFn(a[o],a[o])(new i.Block);case 2:return this.$=r[o];case 3:return this.$=r[o-1];case 4:this.$=i.addLocationDataFn(a[o],a[o])(i.Block.wrap([r[o]]));break;case 5:this.$=i.addLocationDataFn(a[o-2],a[o])(r[o-2].push(r[o]));break;case 6:this.$=r[o-1];break;case 7:this.$=r[o];break;case 8:this.$=r[o];break;case 9:this.$=r[o];break;case 10:this.$=r[o];break;case 11:this.$=i.addLocationDataFn(a[o],a[o])(new i.Literal(r[o]));break;case 12:this.$=r[o];break;case 13:this.$=r[o];break;case 14:this.$=r[o];break;case 15:this.$=r[o];break;case 16:this.$=r[o];break;case 17:this.$=r[o];break;case 18:this.$=r[o];break;case 19:this.$=r[o];break;case 20:this.$=r[o];break;case 21:this.$=r[o];break;case 22:this.$=r[o];break;case 23:this.$=r[o];break;case 24:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Block);break;case 25:this.$=i.addLocationDataFn(a[o-2],a[o])(r[o-1]);break;case 26:this.$=i.addLocationDataFn(a[o],a[o])(new i.Literal(r[o]));break;case 27:this.$=i.addLocationDataFn(a[o],a[o])(new i.Literal(r[o]));break;case 28:this.$=i.addLocationDataFn(a[o],a[o])(new i.Literal(r[o]));break;case 29:this.$=r[o];break;case 30:this.$=i.addLocationDataFn(a[o],a[o])(new i.Literal(r[o]));break;case 31:this.$=i.addLocationDataFn(a[o],a[o])(new i.Literal(r[o]));break;case 32:this.$=i.addLocationDataFn(a[o],a[o])(new i.Literal(r[o]));break;case 33:this.$=i.addLocationDataFn(a[o],a[o])(new i.Undefined);break;case 34:this.$=i.addLocationDataFn(a[o],a[o])(new i.Null);break;case 35:this.$=i.addLocationDataFn(a[o],a[o])(new i.Bool(r[o]));break;case 36:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Assign(r[o-2],r[o]));break;case 37:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.Assign(r[o-3],r[o]));break;case 38:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Assign(r[o-4],r[o-1]));break;case 39:this.$=i.addLocationDataFn(a[o],a[o])(new i.Value(r[o]));break;case 40:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Assign(i.addLocationDataFn(a[o-2])(new i.Value(r[o-2])),r[o],"object"));break;case 41:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Assign(i.addLocationDataFn(a[o-4])(new i.Value(r[o-4])),r[o-1],"object"));break;case 42:this.$=r[o];break;case 43:this.$=r[o];break;case 44:this.$=r[o];break;case 45:this.$=r[o];break;case 46:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Return(r[o]));break;case 47:this.$=i.addLocationDataFn(a[o],a[o])(new i.Return);break;case 48:this.$=i.addLocationDataFn(a[o],a[o])(new i.Comment(r[o]));break;case 49:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Code(r[o-3],r[o],r[o-1]));break;case 50:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Code([],r[o],r[o-1]));break;case 51:this.$=i.addLocationDataFn(a[o],a[o])("func");break;case 52:this.$=i.addLocationDataFn(a[o],a[o])("boundfunc");break;case 53:this.$=r[o];break;case 54:this.$=r[o];break;case 55:this.$=i.addLocationDataFn(a[o],a[o])([]);break;case 56:this.$=i.addLocationDataFn(a[o],a[o])([r[o]]);break;case 57:this.$=i.addLocationDataFn(a[o-2],a[o])(r[o-2].concat(r[o]));break;case 58:this.$=i.addLocationDataFn(a[o-3],a[o])(r[o-3].concat(r[o]));break;case 59:this.$=i.addLocationDataFn(a[o-5],a[o])(r[o-5].concat(r[o-2]));break;case 60:this.$=i.addLocationDataFn(a[o],a[o])(new i.Param(r[o]));break;case 61:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Param(r[o-1],null,!0));break;case 62:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Param(r[o-2],r[o]));break;case 63:this.$=r[o];break;case 64:this.$=r[o];break;case 65:this.$=r[o];break;case 66:this.$=r[o];break;case 67:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Splat(r[o-1]));break;case 68:this.$=i.addLocationDataFn(a[o],a[o])(new i.Value(r[o]));break;case 69:this.$=i.addLocationDataFn(a[o-1],a[o])(r[o-1].add(r[o]));break;case 70:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Value(r[o-1],[].concat(r[o])));break;case 71:this.$=r[o];break;case 72:this.$=r[o];break;case 73:this.$=i.addLocationDataFn(a[o],a[o])(new i.Value(r[o])); +break;case 74:this.$=i.addLocationDataFn(a[o],a[o])(new i.Value(r[o]));break;case 75:this.$=r[o];break;case 76:this.$=i.addLocationDataFn(a[o],a[o])(new i.Value(r[o]));break;case 77:this.$=i.addLocationDataFn(a[o],a[o])(new i.Value(r[o]));break;case 78:this.$=i.addLocationDataFn(a[o],a[o])(new i.Value(r[o]));break;case 79:this.$=r[o];break;case 80:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Access(r[o]));break;case 81:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Access(r[o],"soak"));break;case 82:this.$=i.addLocationDataFn(a[o-1],a[o])([i.addLocationDataFn(a[o-1])(new i.Access(new i.Literal("prototype"))),i.addLocationDataFn(a[o])(new i.Access(r[o]))]);break;case 83:this.$=i.addLocationDataFn(a[o-1],a[o])([i.addLocationDataFn(a[o-1])(new i.Access(new i.Literal("prototype"),"soak")),i.addLocationDataFn(a[o])(new i.Access(r[o]))]);break;case 84:this.$=i.addLocationDataFn(a[o],a[o])(new i.Access(new i.Literal("prototype")));break;case 85:this.$=r[o];break;case 86:this.$=i.addLocationDataFn(a[o-2],a[o])(r[o-1]);break;case 87:this.$=i.addLocationDataFn(a[o-1],a[o])(i.extend(r[o],{soak:!0}));break;case 88:this.$=i.addLocationDataFn(a[o],a[o])(new i.Index(r[o]));break;case 89:this.$=i.addLocationDataFn(a[o],a[o])(new i.Slice(r[o]));break;case 90:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.Obj(r[o-2],r[o-3].generated));break;case 91:this.$=i.addLocationDataFn(a[o],a[o])([]);break;case 92:this.$=i.addLocationDataFn(a[o],a[o])([r[o]]);break;case 93:this.$=i.addLocationDataFn(a[o-2],a[o])(r[o-2].concat(r[o]));break;case 94:this.$=i.addLocationDataFn(a[o-3],a[o])(r[o-3].concat(r[o]));break;case 95:this.$=i.addLocationDataFn(a[o-5],a[o])(r[o-5].concat(r[o-2]));break;case 96:this.$=i.addLocationDataFn(a[o],a[o])(new i.Class);break;case 97:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Class(null,null,r[o]));break;case 98:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Class(null,r[o]));break;case 99:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.Class(null,r[o-1],r[o]));break;case 100:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Class(r[o]));break;case 101:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Class(r[o-1],null,r[o]));break;case 102:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.Class(r[o-2],r[o]));break;case 103:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Class(r[o-3],r[o-1],r[o]));break;case 104:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Call(r[o-2],r[o],r[o-1]));break;case 105:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Call(r[o-2],r[o],r[o-1]));break;case 106:this.$=i.addLocationDataFn(a[o],a[o])(new i.Call("super",[new i.Splat(new i.Literal("arguments"))]));break;case 107:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Call("super",r[o]));break;case 108:this.$=i.addLocationDataFn(a[o],a[o])(!1);break;case 109:this.$=i.addLocationDataFn(a[o],a[o])(!0);break;case 110:this.$=i.addLocationDataFn(a[o-1],a[o])([]);break;case 111:this.$=i.addLocationDataFn(a[o-3],a[o])(r[o-2]);break;case 112:this.$=i.addLocationDataFn(a[o],a[o])(new i.Value(new i.Literal("this")));break;case 113:this.$=i.addLocationDataFn(a[o],a[o])(new i.Value(new i.Literal("this")));break;case 114:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Value(i.addLocationDataFn(a[o-1])(new i.Literal("this")),[i.addLocationDataFn(a[o])(new i.Access(r[o]))],"this"));break;case 115:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Arr([]));break;case 116:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.Arr(r[o-2]));break;case 117:this.$=i.addLocationDataFn(a[o],a[o])("inclusive");break;case 118:this.$=i.addLocationDataFn(a[o],a[o])("exclusive");break;case 119:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Range(r[o-3],r[o-1],r[o-2]));break;case 120:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Range(r[o-2],r[o],r[o-1]));break;case 121:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Range(r[o-1],null,r[o]));break;case 122:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Range(null,r[o],r[o-1]));break;case 123:this.$=i.addLocationDataFn(a[o],a[o])(new i.Range(null,null,r[o]));break;case 124:this.$=i.addLocationDataFn(a[o],a[o])([r[o]]);break;case 125:this.$=i.addLocationDataFn(a[o-2],a[o])(r[o-2].concat(r[o]));break;case 126:this.$=i.addLocationDataFn(a[o-3],a[o])(r[o-3].concat(r[o]));break;case 127:this.$=i.addLocationDataFn(a[o-3],a[o])(r[o-2]);break;case 128:this.$=i.addLocationDataFn(a[o-5],a[o])(r[o-5].concat(r[o-2]));break;case 129:this.$=r[o];break;case 130:this.$=r[o];break;case 131:this.$=r[o];break;case 132:this.$=i.addLocationDataFn(a[o-2],a[o])([].concat(r[o-2],r[o]));break;case 133:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Try(r[o]));break;case 134:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Try(r[o-1],r[o][0],r[o][1]));break;case 135:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.Try(r[o-2],null,null,r[o]));break;case 136:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Try(r[o-3],r[o-2][0],r[o-2][1],r[o]));break;case 137:this.$=i.addLocationDataFn(a[o-2],a[o])([r[o-1],r[o]]);break;case 138:this.$=i.addLocationDataFn(a[o-2],a[o])([i.addLocationDataFn(a[o-1])(new i.Value(r[o-1])),r[o]]);break;case 139:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Throw(r[o]));break;case 140:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Parens(r[o-1]));break;case 141:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Parens(r[o-2]));break;case 142:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.While(r[o]));break;case 143:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.While(r[o-2],{guard:r[o]}));break;case 144:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.While(r[o],{invert:!0}));break;case 145:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.While(r[o-2],{invert:!0,guard:r[o]}));break;case 146:this.$=i.addLocationDataFn(a[o-1],a[o])(r[o-1].addBody(r[o]));break;case 147:this.$=i.addLocationDataFn(a[o-1],a[o])(r[o].addBody(i.addLocationDataFn(a[o-1])(i.Block.wrap([r[o-1]]))));break;case 148:this.$=i.addLocationDataFn(a[o-1],a[o])(r[o].addBody(i.addLocationDataFn(a[o-1])(i.Block.wrap([r[o-1]]))));break;case 149:this.$=i.addLocationDataFn(a[o],a[o])(r[o]);break;case 150:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.While(i.addLocationDataFn(a[o-1])(new i.Literal("true"))).addBody(r[o]));break;case 151:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.While(i.addLocationDataFn(a[o-1])(new i.Literal("true"))).addBody(i.addLocationDataFn(a[o])(i.Block.wrap([r[o]]))));break;case 152:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.For(r[o-1],r[o]));break;case 153:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.For(r[o-1],r[o]));break;case 154:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.For(r[o],r[o-1]));break;case 155:this.$=i.addLocationDataFn(a[o-1],a[o])({source:i.addLocationDataFn(a[o])(new i.Value(r[o]))});break;case 156:this.$=i.addLocationDataFn(a[o-1],a[o])(function(){return r[o].own=r[o-1].own,r[o].name=r[o-1][0],r[o].index=r[o-1][1],r[o]}());break;case 157:this.$=i.addLocationDataFn(a[o-1],a[o])(r[o]);break;case 158:this.$=i.addLocationDataFn(a[o-2],a[o])(function(){return r[o].own=!0,r[o]}());break;case 159:this.$=r[o];break;case 160:this.$=r[o];break;case 161:this.$=i.addLocationDataFn(a[o],a[o])(new i.Value(r[o]));break;case 162:this.$=i.addLocationDataFn(a[o],a[o])(new i.Value(r[o]));break;case 163:this.$=i.addLocationDataFn(a[o],a[o])([r[o]]);break;case 164:this.$=i.addLocationDataFn(a[o-2],a[o])([r[o-2],r[o]]);break;case 165:this.$=i.addLocationDataFn(a[o-1],a[o])({source:r[o]});break;case 166:this.$=i.addLocationDataFn(a[o-1],a[o])({source:r[o],object:!0});break;case 167:this.$=i.addLocationDataFn(a[o-3],a[o])({source:r[o-2],guard:r[o]});break;case 168:this.$=i.addLocationDataFn(a[o-3],a[o])({source:r[o-2],guard:r[o],object:!0});break;case 169:this.$=i.addLocationDataFn(a[o-3],a[o])({source:r[o-2],step:r[o]});break;case 170:this.$=i.addLocationDataFn(a[o-5],a[o])({source:r[o-4],guard:r[o-2],step:r[o]});break;case 171:this.$=i.addLocationDataFn(a[o-5],a[o])({source:r[o-4],step:r[o-2],guard:r[o]});break;case 172:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Switch(r[o-3],r[o-1]));break;case 173:this.$=i.addLocationDataFn(a[o-6],a[o])(new i.Switch(r[o-5],r[o-3],r[o-1]));break;case 174:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.Switch(null,r[o-1]));break;case 175:this.$=i.addLocationDataFn(a[o-5],a[o])(new i.Switch(null,r[o-3],r[o-1]));break;case 176:this.$=r[o];break;case 177:this.$=i.addLocationDataFn(a[o-1],a[o])(r[o-1].concat(r[o]));break;case 178:this.$=i.addLocationDataFn(a[o-2],a[o])([[r[o-1],r[o]]]);break;case 179:this.$=i.addLocationDataFn(a[o-3],a[o])([[r[o-2],r[o-1]]]);break;case 180:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.If(r[o-1],r[o],{type:r[o-2]}));break;case 181:this.$=i.addLocationDataFn(a[o-4],a[o])(r[o-4].addElse(new i.If(r[o-1],r[o],{type:r[o-2]})));break;case 182:this.$=r[o];break;case 183:this.$=i.addLocationDataFn(a[o-2],a[o])(r[o-2].addElse(r[o]));break;case 184:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.If(r[o],i.addLocationDataFn(a[o-2])(i.Block.wrap([r[o-2]])),{type:r[o-1],statement:!0}));break;case 185:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.If(r[o],i.addLocationDataFn(a[o-2])(i.Block.wrap([r[o-2]])),{type:r[o-1],statement:!0}));break;case 186:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Op(r[o-1],r[o]));break;case 187:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Op("-",r[o]));break;case 188:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Op("+",r[o]));break;case 189:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Op("--",r[o]));break;case 190:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Op("++",r[o]));break;case 191:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Op("--",r[o-1],null,!0));break;case 192:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Op("++",r[o-1],null,!0));break;case 193:this.$=i.addLocationDataFn(a[o-1],a[o])(new i.Existence(r[o-1]));break;case 194:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Op("+",r[o-2],r[o]));break;case 195:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Op("-",r[o-2],r[o]));break;case 196:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Op(r[o-1],r[o-2],r[o]));break;case 197:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Op(r[o-1],r[o-2],r[o]));break;case 198:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Op(r[o-1],r[o-2],r[o]));break;case 199:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Op(r[o-1],r[o-2],r[o]));break;case 200:this.$=i.addLocationDataFn(a[o-2],a[o])(function(){return"!"===r[o-1].charAt(0)?new i.Op(r[o-1].slice(1),r[o-2],r[o]).invert():new i.Op(r[o-1],r[o-2],r[o])}());break;case 201:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Assign(r[o-2],r[o],r[o-1]));break;case 202:this.$=i.addLocationDataFn(a[o-4],a[o])(new i.Assign(r[o-4],r[o-1],r[o-3]));break;case 203:this.$=i.addLocationDataFn(a[o-3],a[o])(new i.Assign(r[o-3],r[o],r[o-2]));break;case 204:this.$=i.addLocationDataFn(a[o-2],a[o])(new i.Extends(r[o-2],r[o]))}},table:[{1:[2,1],3:1,4:2,5:3,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,5],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[3]},{1:[2,2],6:[1,74]},{6:[1,75]},{1:[2,4],6:[2,4],26:[2,4],102:[2,4]},{4:77,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[1,76],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,7],6:[2,7],26:[2,7],102:[2,7],103:87,104:[1,65],106:[1,66],109:88,110:[1,68],111:69,126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,8],6:[2,8],26:[2,8],102:[2,8],103:90,104:[1,65],106:[1,66],109:91,110:[1,68],111:69,126:[1,89]},{1:[2,12],6:[2,12],25:[2,12],26:[2,12],49:[2,12],54:[2,12],57:[2,12],62:93,66:[1,95],67:[1,96],68:[1,97],69:[1,98],70:99,71:[1,100],73:[2,12],74:[1,101],78:[2,12],81:92,84:[1,94],85:[2,108],86:[2,12],91:[2,12],93:[2,12],102:[2,12],104:[2,12],105:[2,12],106:[2,12],110:[2,12],118:[2,12],126:[2,12],128:[2,12],129:[2,12],132:[2,12],133:[2,12],134:[2,12],135:[2,12],136:[2,12],137:[2,12]},{1:[2,13],6:[2,13],25:[2,13],26:[2,13],49:[2,13],54:[2,13],57:[2,13],62:103,66:[1,95],67:[1,96],68:[1,97],69:[1,98],70:99,71:[1,100],73:[2,13],74:[1,101],78:[2,13],81:102,84:[1,94],85:[2,108],86:[2,13],91:[2,13],93:[2,13],102:[2,13],104:[2,13],105:[2,13],106:[2,13],110:[2,13],118:[2,13],126:[2,13],128:[2,13],129:[2,13],132:[2,13],133:[2,13],134:[2,13],135:[2,13],136:[2,13],137:[2,13]},{1:[2,14],6:[2,14],25:[2,14],26:[2,14],49:[2,14],54:[2,14],57:[2,14],73:[2,14],78:[2,14],86:[2,14],91:[2,14],93:[2,14],102:[2,14],104:[2,14],105:[2,14],106:[2,14],110:[2,14],118:[2,14],126:[2,14],128:[2,14],129:[2,14],132:[2,14],133:[2,14],134:[2,14],135:[2,14],136:[2,14],137:[2,14]},{1:[2,15],6:[2,15],25:[2,15],26:[2,15],49:[2,15],54:[2,15],57:[2,15],73:[2,15],78:[2,15],86:[2,15],91:[2,15],93:[2,15],102:[2,15],104:[2,15],105:[2,15],106:[2,15],110:[2,15],118:[2,15],126:[2,15],128:[2,15],129:[2,15],132:[2,15],133:[2,15],134:[2,15],135:[2,15],136:[2,15],137:[2,15]},{1:[2,16],6:[2,16],25:[2,16],26:[2,16],49:[2,16],54:[2,16],57:[2,16],73:[2,16],78:[2,16],86:[2,16],91:[2,16],93:[2,16],102:[2,16],104:[2,16],105:[2,16],106:[2,16],110:[2,16],118:[2,16],126:[2,16],128:[2,16],129:[2,16],132:[2,16],133:[2,16],134:[2,16],135:[2,16],136:[2,16],137:[2,16]},{1:[2,17],6:[2,17],25:[2,17],26:[2,17],49:[2,17],54:[2,17],57:[2,17],73:[2,17],78:[2,17],86:[2,17],91:[2,17],93:[2,17],102:[2,17],104:[2,17],105:[2,17],106:[2,17],110:[2,17],118:[2,17],126:[2,17],128:[2,17],129:[2,17],132:[2,17],133:[2,17],134:[2,17],135:[2,17],136:[2,17],137:[2,17]},{1:[2,18],6:[2,18],25:[2,18],26:[2,18],49:[2,18],54:[2,18],57:[2,18],73:[2,18],78:[2,18],86:[2,18],91:[2,18],93:[2,18],102:[2,18],104:[2,18],105:[2,18],106:[2,18],110:[2,18],118:[2,18],126:[2,18],128:[2,18],129:[2,18],132:[2,18],133:[2,18],134:[2,18],135:[2,18],136:[2,18],137:[2,18]},{1:[2,19],6:[2,19],25:[2,19],26:[2,19],49:[2,19],54:[2,19],57:[2,19],73:[2,19],78:[2,19],86:[2,19],91:[2,19],93:[2,19],102:[2,19],104:[2,19],105:[2,19],106:[2,19],110:[2,19],118:[2,19],126:[2,19],128:[2,19],129:[2,19],132:[2,19],133:[2,19],134:[2,19],135:[2,19],136:[2,19],137:[2,19]},{1:[2,20],6:[2,20],25:[2,20],26:[2,20],49:[2,20],54:[2,20],57:[2,20],73:[2,20],78:[2,20],86:[2,20],91:[2,20],93:[2,20],102:[2,20],104:[2,20],105:[2,20],106:[2,20],110:[2,20],118:[2,20],126:[2,20],128:[2,20],129:[2,20],132:[2,20],133:[2,20],134:[2,20],135:[2,20],136:[2,20],137:[2,20]},{1:[2,21],6:[2,21],25:[2,21],26:[2,21],49:[2,21],54:[2,21],57:[2,21],73:[2,21],78:[2,21],86:[2,21],91:[2,21],93:[2,21],102:[2,21],104:[2,21],105:[2,21],106:[2,21],110:[2,21],118:[2,21],126:[2,21],128:[2,21],129:[2,21],132:[2,21],133:[2,21],134:[2,21],135:[2,21],136:[2,21],137:[2,21]},{1:[2,22],6:[2,22],25:[2,22],26:[2,22],49:[2,22],54:[2,22],57:[2,22],73:[2,22],78:[2,22],86:[2,22],91:[2,22],93:[2,22],102:[2,22],104:[2,22],105:[2,22],106:[2,22],110:[2,22],118:[2,22],126:[2,22],128:[2,22],129:[2,22],132:[2,22],133:[2,22],134:[2,22],135:[2,22],136:[2,22],137:[2,22]},{1:[2,23],6:[2,23],25:[2,23],26:[2,23],49:[2,23],54:[2,23],57:[2,23],73:[2,23],78:[2,23],86:[2,23],91:[2,23],93:[2,23],102:[2,23],104:[2,23],105:[2,23],106:[2,23],110:[2,23],118:[2,23],126:[2,23],128:[2,23],129:[2,23],132:[2,23],133:[2,23],134:[2,23],135:[2,23],136:[2,23],137:[2,23]},{1:[2,9],6:[2,9],26:[2,9],102:[2,9],104:[2,9],106:[2,9],110:[2,9],126:[2,9]},{1:[2,10],6:[2,10],26:[2,10],102:[2,10],104:[2,10],106:[2,10],110:[2,10],126:[2,10]},{1:[2,11],6:[2,11],26:[2,11],102:[2,11],104:[2,11],106:[2,11],110:[2,11],126:[2,11]},{1:[2,75],6:[2,75],25:[2,75],26:[2,75],40:[1,104],49:[2,75],54:[2,75],57:[2,75],66:[2,75],67:[2,75],68:[2,75],69:[2,75],71:[2,75],73:[2,75],74:[2,75],78:[2,75],84:[2,75],85:[2,75],86:[2,75],91:[2,75],93:[2,75],102:[2,75],104:[2,75],105:[2,75],106:[2,75],110:[2,75],118:[2,75],126:[2,75],128:[2,75],129:[2,75],132:[2,75],133:[2,75],134:[2,75],135:[2,75],136:[2,75],137:[2,75]},{1:[2,76],6:[2,76],25:[2,76],26:[2,76],49:[2,76],54:[2,76],57:[2,76],66:[2,76],67:[2,76],68:[2,76],69:[2,76],71:[2,76],73:[2,76],74:[2,76],78:[2,76],84:[2,76],85:[2,76],86:[2,76],91:[2,76],93:[2,76],102:[2,76],104:[2,76],105:[2,76],106:[2,76],110:[2,76],118:[2,76],126:[2,76],128:[2,76],129:[2,76],132:[2,76],133:[2,76],134:[2,76],135:[2,76],136:[2,76],137:[2,76]},{1:[2,77],6:[2,77],25:[2,77],26:[2,77],49:[2,77],54:[2,77],57:[2,77],66:[2,77],67:[2,77],68:[2,77],69:[2,77],71:[2,77],73:[2,77],74:[2,77],78:[2,77],84:[2,77],85:[2,77],86:[2,77],91:[2,77],93:[2,77],102:[2,77],104:[2,77],105:[2,77],106:[2,77],110:[2,77],118:[2,77],126:[2,77],128:[2,77],129:[2,77],132:[2,77],133:[2,77],134:[2,77],135:[2,77],136:[2,77],137:[2,77]},{1:[2,78],6:[2,78],25:[2,78],26:[2,78],49:[2,78],54:[2,78],57:[2,78],66:[2,78],67:[2,78],68:[2,78],69:[2,78],71:[2,78],73:[2,78],74:[2,78],78:[2,78],84:[2,78],85:[2,78],86:[2,78],91:[2,78],93:[2,78],102:[2,78],104:[2,78],105:[2,78],106:[2,78],110:[2,78],118:[2,78],126:[2,78],128:[2,78],129:[2,78],132:[2,78],133:[2,78],134:[2,78],135:[2,78],136:[2,78],137:[2,78]},{1:[2,79],6:[2,79],25:[2,79],26:[2,79],49:[2,79],54:[2,79],57:[2,79],66:[2,79],67:[2,79],68:[2,79],69:[2,79],71:[2,79],73:[2,79],74:[2,79],78:[2,79],84:[2,79],85:[2,79],86:[2,79],91:[2,79],93:[2,79],102:[2,79],104:[2,79],105:[2,79],106:[2,79],110:[2,79],118:[2,79],126:[2,79],128:[2,79],129:[2,79],132:[2,79],133:[2,79],134:[2,79],135:[2,79],136:[2,79],137:[2,79]},{1:[2,106],6:[2,106],25:[2,106],26:[2,106],49:[2,106],54:[2,106],57:[2,106],66:[2,106],67:[2,106],68:[2,106],69:[2,106],71:[2,106],73:[2,106],74:[2,106],78:[2,106],82:105,84:[2,106],85:[1,106],86:[2,106],91:[2,106],93:[2,106],102:[2,106],104:[2,106],105:[2,106],106:[2,106],110:[2,106],118:[2,106],126:[2,106],128:[2,106],129:[2,106],132:[2,106],133:[2,106],134:[2,106],135:[2,106],136:[2,106],137:[2,106]},{6:[2,55],25:[2,55],27:110,28:[1,73],44:111,48:107,49:[2,55],54:[2,55],55:108,56:109,58:112,59:113,76:[1,70],89:[1,114],90:[1,115]},{5:116,25:[1,5]},{8:117,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:119,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:120,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{13:122,14:123,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:124,44:63,58:47,59:48,61:121,63:25,64:26,65:27,76:[1,70],83:[1,28],88:[1,58],89:[1,59],90:[1,57],101:[1,56]},{13:122,14:123,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:124,44:63,58:47,59:48,61:125,63:25,64:26,65:27,76:[1,70],83:[1,28],88:[1,58],89:[1,59],90:[1,57],101:[1,56]},{1:[2,72],6:[2,72],25:[2,72],26:[2,72],40:[2,72],49:[2,72],54:[2,72],57:[2,72],66:[2,72],67:[2,72],68:[2,72],69:[2,72],71:[2,72],73:[2,72],74:[2,72],78:[2,72],80:[1,129],84:[2,72],85:[2,72],86:[2,72],91:[2,72],93:[2,72],102:[2,72],104:[2,72],105:[2,72],106:[2,72],110:[2,72],118:[2,72],126:[2,72],128:[2,72],129:[2,72],130:[1,126],131:[1,127],132:[2,72],133:[2,72],134:[2,72],135:[2,72],136:[2,72],137:[2,72],138:[1,128]},{1:[2,182],6:[2,182],25:[2,182],26:[2,182],49:[2,182],54:[2,182],57:[2,182],73:[2,182],78:[2,182],86:[2,182],91:[2,182],93:[2,182],102:[2,182],104:[2,182],105:[2,182],106:[2,182],110:[2,182],118:[2,182],121:[1,130],126:[2,182],128:[2,182],129:[2,182],132:[2,182],133:[2,182],134:[2,182],135:[2,182],136:[2,182],137:[2,182]},{5:131,25:[1,5]},{5:132,25:[1,5]},{1:[2,149],6:[2,149],25:[2,149],26:[2,149],49:[2,149],54:[2,149],57:[2,149],73:[2,149],78:[2,149],86:[2,149],91:[2,149],93:[2,149],102:[2,149],104:[2,149],105:[2,149],106:[2,149],110:[2,149],118:[2,149],126:[2,149],128:[2,149],129:[2,149],132:[2,149],133:[2,149],134:[2,149],135:[2,149],136:[2,149],137:[2,149]},{5:133,25:[1,5]},{8:134,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,135],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,96],5:136,6:[2,96],13:122,14:123,25:[1,5],26:[2,96],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:124,44:63,49:[2,96],54:[2,96],57:[2,96],58:47,59:48,61:138,63:25,64:26,65:27,73:[2,96],76:[1,70],78:[2,96],80:[1,137],83:[1,28],86:[2,96],88:[1,58],89:[1,59],90:[1,57],91:[2,96],93:[2,96],101:[1,56],102:[2,96],104:[2,96],105:[2,96],106:[2,96],110:[2,96],118:[2,96],126:[2,96],128:[2,96],129:[2,96],132:[2,96],133:[2,96],134:[2,96],135:[2,96],136:[2,96],137:[2,96]},{8:139,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,47],6:[2,47],8:140,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[2,47],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],102:[2,47],103:39,104:[2,47],106:[2,47],107:40,108:[1,67],109:41,110:[2,47],111:69,119:[1,42],124:37,125:[1,64],126:[2,47],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,48],6:[2,48],25:[2,48],26:[2,48],54:[2,48],78:[2,48],102:[2,48],104:[2,48],106:[2,48],110:[2,48],126:[2,48]},{1:[2,73],6:[2,73],25:[2,73],26:[2,73],40:[2,73],49:[2,73],54:[2,73],57:[2,73],66:[2,73],67:[2,73],68:[2,73],69:[2,73],71:[2,73],73:[2,73],74:[2,73],78:[2,73],84:[2,73],85:[2,73],86:[2,73],91:[2,73],93:[2,73],102:[2,73],104:[2,73],105:[2,73],106:[2,73],110:[2,73],118:[2,73],126:[2,73],128:[2,73],129:[2,73],132:[2,73],133:[2,73],134:[2,73],135:[2,73],136:[2,73],137:[2,73]},{1:[2,74],6:[2,74],25:[2,74],26:[2,74],40:[2,74],49:[2,74],54:[2,74],57:[2,74],66:[2,74],67:[2,74],68:[2,74],69:[2,74],71:[2,74],73:[2,74],74:[2,74],78:[2,74],84:[2,74],85:[2,74],86:[2,74],91:[2,74],93:[2,74],102:[2,74],104:[2,74],105:[2,74],106:[2,74],110:[2,74],118:[2,74],126:[2,74],128:[2,74],129:[2,74],132:[2,74],133:[2,74],134:[2,74],135:[2,74],136:[2,74],137:[2,74]},{1:[2,29],6:[2,29],25:[2,29],26:[2,29],49:[2,29],54:[2,29],57:[2,29],66:[2,29],67:[2,29],68:[2,29],69:[2,29],71:[2,29],73:[2,29],74:[2,29],78:[2,29],84:[2,29],85:[2,29],86:[2,29],91:[2,29],93:[2,29],102:[2,29],104:[2,29],105:[2,29],106:[2,29],110:[2,29],118:[2,29],126:[2,29],128:[2,29],129:[2,29],132:[2,29],133:[2,29],134:[2,29],135:[2,29],136:[2,29],137:[2,29]},{1:[2,30],6:[2,30],25:[2,30],26:[2,30],49:[2,30],54:[2,30],57:[2,30],66:[2,30],67:[2,30],68:[2,30],69:[2,30],71:[2,30],73:[2,30],74:[2,30],78:[2,30],84:[2,30],85:[2,30],86:[2,30],91:[2,30],93:[2,30],102:[2,30],104:[2,30],105:[2,30],106:[2,30],110:[2,30],118:[2,30],126:[2,30],128:[2,30],129:[2,30],132:[2,30],133:[2,30],134:[2,30],135:[2,30],136:[2,30],137:[2,30]},{1:[2,31],6:[2,31],25:[2,31],26:[2,31],49:[2,31],54:[2,31],57:[2,31],66:[2,31],67:[2,31],68:[2,31],69:[2,31],71:[2,31],73:[2,31],74:[2,31],78:[2,31],84:[2,31],85:[2,31],86:[2,31],91:[2,31],93:[2,31],102:[2,31],104:[2,31],105:[2,31],106:[2,31],110:[2,31],118:[2,31],126:[2,31],128:[2,31],129:[2,31],132:[2,31],133:[2,31],134:[2,31],135:[2,31],136:[2,31],137:[2,31]},{1:[2,32],6:[2,32],25:[2,32],26:[2,32],49:[2,32],54:[2,32],57:[2,32],66:[2,32],67:[2,32],68:[2,32],69:[2,32],71:[2,32],73:[2,32],74:[2,32],78:[2,32],84:[2,32],85:[2,32],86:[2,32],91:[2,32],93:[2,32],102:[2,32],104:[2,32],105:[2,32],106:[2,32],110:[2,32],118:[2,32],126:[2,32],128:[2,32],129:[2,32],132:[2,32],133:[2,32],134:[2,32],135:[2,32],136:[2,32],137:[2,32]},{1:[2,33],6:[2,33],25:[2,33],26:[2,33],49:[2,33],54:[2,33],57:[2,33],66:[2,33],67:[2,33],68:[2,33],69:[2,33],71:[2,33],73:[2,33],74:[2,33],78:[2,33],84:[2,33],85:[2,33],86:[2,33],91:[2,33],93:[2,33],102:[2,33],104:[2,33],105:[2,33],106:[2,33],110:[2,33],118:[2,33],126:[2,33],128:[2,33],129:[2,33],132:[2,33],133:[2,33],134:[2,33],135:[2,33],136:[2,33],137:[2,33]},{1:[2,34],6:[2,34],25:[2,34],26:[2,34],49:[2,34],54:[2,34],57:[2,34],66:[2,34],67:[2,34],68:[2,34],69:[2,34],71:[2,34],73:[2,34],74:[2,34],78:[2,34],84:[2,34],85:[2,34],86:[2,34],91:[2,34],93:[2,34],102:[2,34],104:[2,34],105:[2,34],106:[2,34],110:[2,34],118:[2,34],126:[2,34],128:[2,34],129:[2,34],132:[2,34],133:[2,34],134:[2,34],135:[2,34],136:[2,34],137:[2,34]},{1:[2,35],6:[2,35],25:[2,35],26:[2,35],49:[2,35],54:[2,35],57:[2,35],66:[2,35],67:[2,35],68:[2,35],69:[2,35],71:[2,35],73:[2,35],74:[2,35],78:[2,35],84:[2,35],85:[2,35],86:[2,35],91:[2,35],93:[2,35],102:[2,35],104:[2,35],105:[2,35],106:[2,35],110:[2,35],118:[2,35],126:[2,35],128:[2,35],129:[2,35],132:[2,35],133:[2,35],134:[2,35],135:[2,35],136:[2,35],137:[2,35]},{4:141,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,142],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:143,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,147],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:148,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],87:145,88:[1,58],89:[1,59],90:[1,57],91:[1,144],94:146,96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,112],6:[2,112],25:[2,112],26:[2,112],49:[2,112],54:[2,112],57:[2,112],66:[2,112],67:[2,112],68:[2,112],69:[2,112],71:[2,112],73:[2,112],74:[2,112],78:[2,112],84:[2,112],85:[2,112],86:[2,112],91:[2,112],93:[2,112],102:[2,112],104:[2,112],105:[2,112],106:[2,112],110:[2,112],118:[2,112],126:[2,112],128:[2,112],129:[2,112],132:[2,112],133:[2,112],134:[2,112],135:[2,112],136:[2,112],137:[2,112]},{1:[2,113],6:[2,113],25:[2,113],26:[2,113],27:149,28:[1,73],49:[2,113],54:[2,113],57:[2,113],66:[2,113],67:[2,113],68:[2,113],69:[2,113],71:[2,113],73:[2,113],74:[2,113],78:[2,113],84:[2,113],85:[2,113],86:[2,113],91:[2,113],93:[2,113],102:[2,113],104:[2,113],105:[2,113],106:[2,113],110:[2,113],118:[2,113],126:[2,113],128:[2,113],129:[2,113],132:[2,113],133:[2,113],134:[2,113],135:[2,113],136:[2,113],137:[2,113]},{25:[2,51]},{25:[2,52]},{1:[2,68],6:[2,68],25:[2,68],26:[2,68],40:[2,68],49:[2,68],54:[2,68],57:[2,68],66:[2,68],67:[2,68],68:[2,68],69:[2,68],71:[2,68],73:[2,68],74:[2,68],78:[2,68],80:[2,68],84:[2,68],85:[2,68],86:[2,68],91:[2,68],93:[2,68],102:[2,68],104:[2,68],105:[2,68],106:[2,68],110:[2,68],118:[2,68],126:[2,68],128:[2,68],129:[2,68],130:[2,68],131:[2,68],132:[2,68],133:[2,68],134:[2,68],135:[2,68],136:[2,68],137:[2,68],138:[2,68]},{1:[2,71],6:[2,71],25:[2,71],26:[2,71],40:[2,71],49:[2,71],54:[2,71],57:[2,71],66:[2,71],67:[2,71],68:[2,71],69:[2,71],71:[2,71],73:[2,71],74:[2,71],78:[2,71],80:[2,71],84:[2,71],85:[2,71],86:[2,71],91:[2,71],93:[2,71],102:[2,71],104:[2,71],105:[2,71],106:[2,71],110:[2,71],118:[2,71],126:[2,71],128:[2,71],129:[2,71],130:[2,71],131:[2,71],132:[2,71],133:[2,71],134:[2,71],135:[2,71],136:[2,71],137:[2,71],138:[2,71]},{8:150,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:151,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:152,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{5:153,8:154,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,5],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{27:159,28:[1,73],44:160,58:161,59:162,64:155,76:[1,70],89:[1,114],90:[1,57],113:156,114:[1,157],115:158},{112:163,116:[1,164],117:[1,165]},{6:[2,91],11:169,25:[2,91],27:170,28:[1,73],29:171,30:[1,71],31:[1,72],41:167,42:168,44:172,46:[1,46],54:[2,91],77:166,78:[2,91],89:[1,114]},{1:[2,27],6:[2,27],25:[2,27],26:[2,27],43:[2,27],49:[2,27],54:[2,27],57:[2,27],66:[2,27],67:[2,27],68:[2,27],69:[2,27],71:[2,27],73:[2,27],74:[2,27],78:[2,27],84:[2,27],85:[2,27],86:[2,27],91:[2,27],93:[2,27],102:[2,27],104:[2,27],105:[2,27],106:[2,27],110:[2,27],118:[2,27],126:[2,27],128:[2,27],129:[2,27],132:[2,27],133:[2,27],134:[2,27],135:[2,27],136:[2,27],137:[2,27]},{1:[2,28],6:[2,28],25:[2,28],26:[2,28],43:[2,28],49:[2,28],54:[2,28],57:[2,28],66:[2,28],67:[2,28],68:[2,28],69:[2,28],71:[2,28],73:[2,28],74:[2,28],78:[2,28],84:[2,28],85:[2,28],86:[2,28],91:[2,28],93:[2,28],102:[2,28],104:[2,28],105:[2,28],106:[2,28],110:[2,28],118:[2,28],126:[2,28],128:[2,28],129:[2,28],132:[2,28],133:[2,28],134:[2,28],135:[2,28],136:[2,28],137:[2,28]},{1:[2,26],6:[2,26],25:[2,26],26:[2,26],40:[2,26],43:[2,26],49:[2,26],54:[2,26],57:[2,26],66:[2,26],67:[2,26],68:[2,26],69:[2,26],71:[2,26],73:[2,26],74:[2,26],78:[2,26],80:[2,26],84:[2,26],85:[2,26],86:[2,26],91:[2,26],93:[2,26],102:[2,26],104:[2,26],105:[2,26],106:[2,26],110:[2,26],116:[2,26],117:[2,26],118:[2,26],126:[2,26],128:[2,26],129:[2,26],130:[2,26],131:[2,26],132:[2,26],133:[2,26],134:[2,26],135:[2,26],136:[2,26],137:[2,26],138:[2,26]},{1:[2,6],6:[2,6],7:173,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[2,6],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],102:[2,6],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,3]},{1:[2,24],6:[2,24],25:[2,24],26:[2,24],49:[2,24],54:[2,24],57:[2,24],73:[2,24],78:[2,24],86:[2,24],91:[2,24],93:[2,24],98:[2,24],99:[2,24],102:[2,24],104:[2,24],105:[2,24],106:[2,24],110:[2,24],118:[2,24],121:[2,24],123:[2,24],126:[2,24],128:[2,24],129:[2,24],132:[2,24],133:[2,24],134:[2,24],135:[2,24],136:[2,24],137:[2,24]},{6:[1,74],26:[1,174]},{1:[2,193],6:[2,193],25:[2,193],26:[2,193],49:[2,193],54:[2,193],57:[2,193],73:[2,193],78:[2,193],86:[2,193],91:[2,193],93:[2,193],102:[2,193],104:[2,193],105:[2,193],106:[2,193],110:[2,193],118:[2,193],126:[2,193],128:[2,193],129:[2,193],132:[2,193],133:[2,193],134:[2,193],135:[2,193],136:[2,193],137:[2,193]},{8:175,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:176,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:177,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:178,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:179,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:180,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:181,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:182,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,148],6:[2,148],25:[2,148],26:[2,148],49:[2,148],54:[2,148],57:[2,148],73:[2,148],78:[2,148],86:[2,148],91:[2,148],93:[2,148],102:[2,148],104:[2,148],105:[2,148],106:[2,148],110:[2,148],118:[2,148],126:[2,148],128:[2,148],129:[2,148],132:[2,148],133:[2,148],134:[2,148],135:[2,148],136:[2,148],137:[2,148]},{1:[2,153],6:[2,153],25:[2,153],26:[2,153],49:[2,153],54:[2,153],57:[2,153],73:[2,153],78:[2,153],86:[2,153],91:[2,153],93:[2,153],102:[2,153],104:[2,153],105:[2,153],106:[2,153],110:[2,153],118:[2,153],126:[2,153],128:[2,153],129:[2,153],132:[2,153],133:[2,153],134:[2,153],135:[2,153],136:[2,153],137:[2,153]},{8:183,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,147],6:[2,147],25:[2,147],26:[2,147],49:[2,147],54:[2,147],57:[2,147],73:[2,147],78:[2,147],86:[2,147],91:[2,147],93:[2,147],102:[2,147],104:[2,147],105:[2,147],106:[2,147],110:[2,147],118:[2,147],126:[2,147],128:[2,147],129:[2,147],132:[2,147],133:[2,147],134:[2,147],135:[2,147],136:[2,147],137:[2,147]},{1:[2,152],6:[2,152],25:[2,152],26:[2,152],49:[2,152],54:[2,152],57:[2,152],73:[2,152],78:[2,152],86:[2,152],91:[2,152],93:[2,152],102:[2,152],104:[2,152],105:[2,152],106:[2,152],110:[2,152],118:[2,152],126:[2,152],128:[2,152],129:[2,152],132:[2,152],133:[2,152],134:[2,152],135:[2,152],136:[2,152],137:[2,152]},{82:184,85:[1,106]},{1:[2,69],6:[2,69],25:[2,69],26:[2,69],40:[2,69],49:[2,69],54:[2,69],57:[2,69],66:[2,69],67:[2,69],68:[2,69],69:[2,69],71:[2,69],73:[2,69],74:[2,69],78:[2,69],80:[2,69],84:[2,69],85:[2,69],86:[2,69],91:[2,69],93:[2,69],102:[2,69],104:[2,69],105:[2,69],106:[2,69],110:[2,69],118:[2,69],126:[2,69],128:[2,69],129:[2,69],130:[2,69],131:[2,69],132:[2,69],133:[2,69],134:[2,69],135:[2,69],136:[2,69],137:[2,69],138:[2,69]},{85:[2,109]},{27:185,28:[1,73]},{27:186,28:[1,73]},{1:[2,84],6:[2,84],25:[2,84],26:[2,84],27:187,28:[1,73],40:[2,84],49:[2,84],54:[2,84],57:[2,84],66:[2,84],67:[2,84],68:[2,84],69:[2,84],71:[2,84],73:[2,84],74:[2,84],78:[2,84],80:[2,84],84:[2,84],85:[2,84],86:[2,84],91:[2,84],93:[2,84],102:[2,84],104:[2,84],105:[2,84],106:[2,84],110:[2,84],118:[2,84],126:[2,84],128:[2,84],129:[2,84],130:[2,84],131:[2,84],132:[2,84],133:[2,84],134:[2,84],135:[2,84],136:[2,84],137:[2,84],138:[2,84]},{27:188,28:[1,73]},{1:[2,85],6:[2,85],25:[2,85],26:[2,85],40:[2,85],49:[2,85],54:[2,85],57:[2,85],66:[2,85],67:[2,85],68:[2,85],69:[2,85],71:[2,85],73:[2,85],74:[2,85],78:[2,85],80:[2,85],84:[2,85],85:[2,85],86:[2,85],91:[2,85],93:[2,85],102:[2,85],104:[2,85],105:[2,85],106:[2,85],110:[2,85],118:[2,85],126:[2,85],128:[2,85],129:[2,85],130:[2,85],131:[2,85],132:[2,85],133:[2,85],134:[2,85],135:[2,85],136:[2,85],137:[2,85],138:[2,85]},{8:190,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],57:[1,194],58:47,59:48,61:36,63:25,64:26,65:27,72:189,75:191,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],92:192,93:[1,193],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{70:195,71:[1,100],74:[1,101]},{82:196,85:[1,106]},{1:[2,70],6:[2,70],25:[2,70],26:[2,70],40:[2,70],49:[2,70],54:[2,70],57:[2,70],66:[2,70],67:[2,70],68:[2,70],69:[2,70],71:[2,70],73:[2,70],74:[2,70],78:[2,70],80:[2,70],84:[2,70],85:[2,70],86:[2,70],91:[2,70],93:[2,70],102:[2,70],104:[2,70],105:[2,70],106:[2,70],110:[2,70],118:[2,70],126:[2,70],128:[2,70],129:[2,70],130:[2,70],131:[2,70],132:[2,70],133:[2,70],134:[2,70],135:[2,70],136:[2,70],137:[2,70],138:[2,70]},{6:[1,198],8:197,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,199],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,107],6:[2,107],25:[2,107],26:[2,107],49:[2,107],54:[2,107],57:[2,107],66:[2,107],67:[2,107],68:[2,107],69:[2,107],71:[2,107],73:[2,107],74:[2,107],78:[2,107],84:[2,107],85:[2,107],86:[2,107],91:[2,107],93:[2,107],102:[2,107],104:[2,107],105:[2,107],106:[2,107],110:[2,107],118:[2,107],126:[2,107],128:[2,107],129:[2,107],132:[2,107],133:[2,107],134:[2,107],135:[2,107],136:[2,107],137:[2,107]},{8:202,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,147],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:148,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],86:[1,200],87:201,88:[1,58],89:[1,59],90:[1,57],94:146,96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{6:[2,53],25:[2,53],49:[1,203],53:205,54:[1,204]},{6:[2,56],25:[2,56],26:[2,56],49:[2,56],54:[2,56]},{6:[2,60],25:[2,60],26:[2,60],40:[1,207],49:[2,60],54:[2,60],57:[1,206]},{6:[2,63],25:[2,63],26:[2,63],40:[2,63],49:[2,63],54:[2,63],57:[2,63]},{6:[2,64],25:[2,64],26:[2,64],40:[2,64],49:[2,64],54:[2,64],57:[2,64]},{6:[2,65],25:[2,65],26:[2,65],40:[2,65],49:[2,65],54:[2,65],57:[2,65]},{6:[2,66],25:[2,66],26:[2,66],40:[2,66],49:[2,66],54:[2,66],57:[2,66]},{27:149,28:[1,73]},{8:202,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,147],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:148,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],87:145,88:[1,58],89:[1,59],90:[1,57],91:[1,144],94:146,96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,50],6:[2,50],25:[2,50],26:[2,50],49:[2,50],54:[2,50],57:[2,50],73:[2,50],78:[2,50],86:[2,50],91:[2,50],93:[2,50],102:[2,50],104:[2,50],105:[2,50],106:[2,50],110:[2,50],118:[2,50],126:[2,50],128:[2,50],129:[2,50],132:[2,50],133:[2,50],134:[2,50],135:[2,50],136:[2,50],137:[2,50]},{1:[2,186],6:[2,186],25:[2,186],26:[2,186],49:[2,186],54:[2,186],57:[2,186],73:[2,186],78:[2,186],86:[2,186],91:[2,186],93:[2,186],102:[2,186],103:87,104:[2,186],105:[2,186],106:[2,186],109:88,110:[2,186],111:69,118:[2,186],126:[2,186],128:[2,186],129:[2,186],132:[1,78],133:[2,186],134:[2,186],135:[2,186],136:[2,186],137:[2,186]},{103:90,104:[1,65],106:[1,66],109:91,110:[1,68],111:69,126:[1,89]},{1:[2,187],6:[2,187],25:[2,187],26:[2,187],49:[2,187],54:[2,187],57:[2,187],73:[2,187],78:[2,187],86:[2,187],91:[2,187],93:[2,187],102:[2,187],103:87,104:[2,187],105:[2,187],106:[2,187],109:88,110:[2,187],111:69,118:[2,187],126:[2,187],128:[2,187],129:[2,187],132:[1,78],133:[2,187],134:[2,187],135:[2,187],136:[2,187],137:[2,187]},{1:[2,188],6:[2,188],25:[2,188],26:[2,188],49:[2,188],54:[2,188],57:[2,188],73:[2,188],78:[2,188],86:[2,188],91:[2,188],93:[2,188],102:[2,188],103:87,104:[2,188],105:[2,188],106:[2,188],109:88,110:[2,188],111:69,118:[2,188],126:[2,188],128:[2,188],129:[2,188],132:[1,78],133:[2,188],134:[2,188],135:[2,188],136:[2,188],137:[2,188]},{1:[2,189],6:[2,189],25:[2,189],26:[2,189],49:[2,189],54:[2,189],57:[2,189],66:[2,72],67:[2,72],68:[2,72],69:[2,72],71:[2,72],73:[2,189],74:[2,72],78:[2,189],84:[2,72],85:[2,72],86:[2,189],91:[2,189],93:[2,189],102:[2,189],104:[2,189],105:[2,189],106:[2,189],110:[2,189],118:[2,189],126:[2,189],128:[2,189],129:[2,189],132:[2,189],133:[2,189],134:[2,189],135:[2,189],136:[2,189],137:[2,189]},{62:93,66:[1,95],67:[1,96],68:[1,97],69:[1,98],70:99,71:[1,100],74:[1,101],81:92,84:[1,94],85:[2,108]},{62:103,66:[1,95],67:[1,96],68:[1,97],69:[1,98],70:99,71:[1,100],74:[1,101],81:102,84:[1,94],85:[2,108]},{66:[2,75],67:[2,75],68:[2,75],69:[2,75],71:[2,75],74:[2,75],84:[2,75],85:[2,75]},{1:[2,190],6:[2,190],25:[2,190],26:[2,190],49:[2,190],54:[2,190],57:[2,190],66:[2,72],67:[2,72],68:[2,72],69:[2,72],71:[2,72],73:[2,190],74:[2,72],78:[2,190],84:[2,72],85:[2,72],86:[2,190],91:[2,190],93:[2,190],102:[2,190],104:[2,190],105:[2,190],106:[2,190],110:[2,190],118:[2,190],126:[2,190],128:[2,190],129:[2,190],132:[2,190],133:[2,190],134:[2,190],135:[2,190],136:[2,190],137:[2,190]},{1:[2,191],6:[2,191],25:[2,191],26:[2,191],49:[2,191],54:[2,191],57:[2,191],73:[2,191],78:[2,191],86:[2,191],91:[2,191],93:[2,191],102:[2,191],104:[2,191],105:[2,191],106:[2,191],110:[2,191],118:[2,191],126:[2,191],128:[2,191],129:[2,191],132:[2,191],133:[2,191],134:[2,191],135:[2,191],136:[2,191],137:[2,191]},{1:[2,192],6:[2,192],25:[2,192],26:[2,192],49:[2,192],54:[2,192],57:[2,192],73:[2,192],78:[2,192],86:[2,192],91:[2,192],93:[2,192],102:[2,192],104:[2,192],105:[2,192],106:[2,192],110:[2,192],118:[2,192],126:[2,192],128:[2,192],129:[2,192],132:[2,192],133:[2,192],134:[2,192],135:[2,192],136:[2,192],137:[2,192]},{6:[1,210],8:208,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,209],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:211,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{5:212,25:[1,5],125:[1,213]},{1:[2,133],6:[2,133],25:[2,133],26:[2,133],49:[2,133],54:[2,133],57:[2,133],73:[2,133],78:[2,133],86:[2,133],91:[2,133],93:[2,133],97:214,98:[1,215],99:[1,216],102:[2,133],104:[2,133],105:[2,133],106:[2,133],110:[2,133],118:[2,133],126:[2,133],128:[2,133],129:[2,133],132:[2,133],133:[2,133],134:[2,133],135:[2,133],136:[2,133],137:[2,133]},{1:[2,146],6:[2,146],25:[2,146],26:[2,146],49:[2,146],54:[2,146],57:[2,146],73:[2,146],78:[2,146],86:[2,146],91:[2,146],93:[2,146],102:[2,146],104:[2,146],105:[2,146],106:[2,146],110:[2,146],118:[2,146],126:[2,146],128:[2,146],129:[2,146],132:[2,146],133:[2,146],134:[2,146],135:[2,146],136:[2,146],137:[2,146]},{1:[2,154],6:[2,154],25:[2,154],26:[2,154],49:[2,154],54:[2,154],57:[2,154],73:[2,154],78:[2,154],86:[2,154],91:[2,154],93:[2,154],102:[2,154],104:[2,154],105:[2,154],106:[2,154],110:[2,154],118:[2,154],126:[2,154],128:[2,154],129:[2,154],132:[2,154],133:[2,154],134:[2,154],135:[2,154],136:[2,154],137:[2,154]},{25:[1,217],103:87,104:[1,65],106:[1,66],109:88,110:[1,68],111:69,126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{120:218,122:219,123:[1,220]},{1:[2,97],6:[2,97],25:[2,97],26:[2,97],49:[2,97],54:[2,97],57:[2,97],73:[2,97],78:[2,97],86:[2,97],91:[2,97],93:[2,97],102:[2,97],104:[2,97],105:[2,97],106:[2,97],110:[2,97],118:[2,97],126:[2,97],128:[2,97],129:[2,97],132:[2,97],133:[2,97],134:[2,97],135:[2,97],136:[2,97],137:[2,97]},{8:221,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,100],5:222,6:[2,100],25:[1,5],26:[2,100],49:[2,100],54:[2,100],57:[2,100],66:[2,72],67:[2,72],68:[2,72],69:[2,72],71:[2,72],73:[2,100],74:[2,72],78:[2,100],80:[1,223],84:[2,72],85:[2,72],86:[2,100],91:[2,100],93:[2,100],102:[2,100],104:[2,100],105:[2,100],106:[2,100],110:[2,100],118:[2,100],126:[2,100],128:[2,100],129:[2,100],132:[2,100],133:[2,100],134:[2,100],135:[2,100],136:[2,100],137:[2,100]},{1:[2,139],6:[2,139],25:[2,139],26:[2,139],49:[2,139],54:[2,139],57:[2,139],73:[2,139],78:[2,139],86:[2,139],91:[2,139],93:[2,139],102:[2,139],103:87,104:[2,139],105:[2,139],106:[2,139],109:88,110:[2,139],111:69,118:[2,139],126:[2,139],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,46],6:[2,46],26:[2,46],102:[2,46],103:87,104:[2,46],106:[2,46],109:88,110:[2,46],111:69,126:[2,46],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{6:[1,74],102:[1,224]},{4:225,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{6:[2,129],25:[2,129],54:[2,129],57:[1,227],91:[2,129],92:226,93:[1,193],103:87,104:[1,65],106:[1,66],109:88,110:[1,68],111:69,126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,115],6:[2,115],25:[2,115],26:[2,115],40:[2,115],49:[2,115],54:[2,115],57:[2,115],66:[2,115],67:[2,115],68:[2,115],69:[2,115],71:[2,115],73:[2,115],74:[2,115],78:[2,115],84:[2,115],85:[2,115],86:[2,115],91:[2,115],93:[2,115],102:[2,115],104:[2,115],105:[2,115],106:[2,115],110:[2,115],116:[2,115],117:[2,115],118:[2,115],126:[2,115],128:[2,115],129:[2,115],132:[2,115],133:[2,115],134:[2,115],135:[2,115],136:[2,115],137:[2,115]},{6:[2,53],25:[2,53],53:228,54:[1,229],91:[2,53]},{6:[2,124],25:[2,124],26:[2,124],54:[2,124],86:[2,124],91:[2,124]},{8:202,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,147],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:148,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],87:230,88:[1,58],89:[1,59],90:[1,57],94:146,96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{6:[2,130],25:[2,130],26:[2,130],54:[2,130],86:[2,130],91:[2,130]},{1:[2,114],6:[2,114],25:[2,114],26:[2,114],40:[2,114],43:[2,114],49:[2,114],54:[2,114],57:[2,114],66:[2,114],67:[2,114],68:[2,114],69:[2,114],71:[2,114],73:[2,114],74:[2,114],78:[2,114],80:[2,114],84:[2,114],85:[2,114],86:[2,114],91:[2,114],93:[2,114],102:[2,114],104:[2,114],105:[2,114],106:[2,114],110:[2,114],116:[2,114],117:[2,114],118:[2,114],126:[2,114],128:[2,114],129:[2,114],130:[2,114],131:[2,114],132:[2,114],133:[2,114],134:[2,114],135:[2,114],136:[2,114],137:[2,114],138:[2,114]},{5:231,25:[1,5],103:87,104:[1,65],106:[1,66],109:88,110:[1,68],111:69,126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,142],6:[2,142],25:[2,142],26:[2,142],49:[2,142],54:[2,142],57:[2,142],73:[2,142],78:[2,142],86:[2,142],91:[2,142],93:[2,142],102:[2,142],103:87,104:[1,65],105:[1,232],106:[1,66],109:88,110:[1,68],111:69,118:[2,142],126:[2,142],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,144],6:[2,144],25:[2,144],26:[2,144],49:[2,144],54:[2,144],57:[2,144],73:[2,144],78:[2,144],86:[2,144],91:[2,144],93:[2,144],102:[2,144],103:87,104:[1,65],105:[1,233],106:[1,66],109:88,110:[1,68],111:69,118:[2,144],126:[2,144],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,150],6:[2,150],25:[2,150],26:[2,150],49:[2,150],54:[2,150],57:[2,150],73:[2,150],78:[2,150],86:[2,150],91:[2,150],93:[2,150],102:[2,150],104:[2,150],105:[2,150],106:[2,150],110:[2,150],118:[2,150],126:[2,150],128:[2,150],129:[2,150],132:[2,150],133:[2,150],134:[2,150],135:[2,150],136:[2,150],137:[2,150]},{1:[2,151],6:[2,151],25:[2,151],26:[2,151],49:[2,151],54:[2,151],57:[2,151],73:[2,151],78:[2,151],86:[2,151],91:[2,151],93:[2,151],102:[2,151],103:87,104:[1,65],105:[2,151],106:[1,66],109:88,110:[1,68],111:69,118:[2,151],126:[2,151],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,155],6:[2,155],25:[2,155],26:[2,155],49:[2,155],54:[2,155],57:[2,155],73:[2,155],78:[2,155],86:[2,155],91:[2,155],93:[2,155],102:[2,155],104:[2,155],105:[2,155],106:[2,155],110:[2,155],118:[2,155],126:[2,155],128:[2,155],129:[2,155],132:[2,155],133:[2,155],134:[2,155],135:[2,155],136:[2,155],137:[2,155]},{116:[2,157],117:[2,157]},{27:159,28:[1,73],44:160,58:161,59:162,76:[1,70],89:[1,114],90:[1,115],113:234,115:158},{54:[1,235],116:[2,163],117:[2,163]},{54:[2,159],116:[2,159],117:[2,159]},{54:[2,160],116:[2,160],117:[2,160]},{54:[2,161],116:[2,161],117:[2,161]},{54:[2,162],116:[2,162],117:[2,162]},{1:[2,156],6:[2,156],25:[2,156],26:[2,156],49:[2,156],54:[2,156],57:[2,156],73:[2,156],78:[2,156],86:[2,156],91:[2,156],93:[2,156],102:[2,156],104:[2,156],105:[2,156],106:[2,156],110:[2,156],118:[2,156],126:[2,156],128:[2,156],129:[2,156],132:[2,156],133:[2,156],134:[2,156],135:[2,156],136:[2,156],137:[2,156]},{8:236,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:237,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{6:[2,53],25:[2,53],53:238,54:[1,239],78:[2,53]},{6:[2,92],25:[2,92],26:[2,92],54:[2,92],78:[2,92]},{6:[2,39],25:[2,39],26:[2,39],43:[1,240],54:[2,39],78:[2,39]},{6:[2,42],25:[2,42],26:[2,42],54:[2,42],78:[2,42]},{6:[2,43],25:[2,43],26:[2,43],43:[2,43],54:[2,43],78:[2,43]},{6:[2,44],25:[2,44],26:[2,44],43:[2,44],54:[2,44],78:[2,44]},{6:[2,45],25:[2,45],26:[2,45],43:[2,45],54:[2,45],78:[2,45]},{1:[2,5],6:[2,5],26:[2,5],102:[2,5]},{1:[2,25],6:[2,25],25:[2,25],26:[2,25],49:[2,25],54:[2,25],57:[2,25],73:[2,25],78:[2,25],86:[2,25],91:[2,25],93:[2,25],98:[2,25],99:[2,25],102:[2,25],104:[2,25],105:[2,25],106:[2,25],110:[2,25],118:[2,25],121:[2,25],123:[2,25],126:[2,25],128:[2,25],129:[2,25],132:[2,25],133:[2,25],134:[2,25],135:[2,25],136:[2,25],137:[2,25]},{1:[2,194],6:[2,194],25:[2,194],26:[2,194],49:[2,194],54:[2,194],57:[2,194],73:[2,194],78:[2,194],86:[2,194],91:[2,194],93:[2,194],102:[2,194],103:87,104:[2,194],105:[2,194],106:[2,194],109:88,110:[2,194],111:69,118:[2,194],126:[2,194],128:[2,194],129:[2,194],132:[1,78],133:[1,81],134:[2,194],135:[2,194],136:[2,194],137:[2,194]},{1:[2,195],6:[2,195],25:[2,195],26:[2,195],49:[2,195],54:[2,195],57:[2,195],73:[2,195],78:[2,195],86:[2,195],91:[2,195],93:[2,195],102:[2,195],103:87,104:[2,195],105:[2,195],106:[2,195],109:88,110:[2,195],111:69,118:[2,195],126:[2,195],128:[2,195],129:[2,195],132:[1,78],133:[1,81],134:[2,195],135:[2,195],136:[2,195],137:[2,195]},{1:[2,196],6:[2,196],25:[2,196],26:[2,196],49:[2,196],54:[2,196],57:[2,196],73:[2,196],78:[2,196],86:[2,196],91:[2,196],93:[2,196],102:[2,196],103:87,104:[2,196],105:[2,196],106:[2,196],109:88,110:[2,196],111:69,118:[2,196],126:[2,196],128:[2,196],129:[2,196],132:[1,78],133:[2,196],134:[2,196],135:[2,196],136:[2,196],137:[2,196]},{1:[2,197],6:[2,197],25:[2,197],26:[2,197],49:[2,197],54:[2,197],57:[2,197],73:[2,197],78:[2,197],86:[2,197],91:[2,197],93:[2,197],102:[2,197],103:87,104:[2,197],105:[2,197],106:[2,197],109:88,110:[2,197],111:69,118:[2,197],126:[2,197],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[2,197],135:[2,197],136:[2,197],137:[2,197]},{1:[2,198],6:[2,198],25:[2,198],26:[2,198],49:[2,198],54:[2,198],57:[2,198],73:[2,198],78:[2,198],86:[2,198],91:[2,198],93:[2,198],102:[2,198],103:87,104:[2,198],105:[2,198],106:[2,198],109:88,110:[2,198],111:69,118:[2,198],126:[2,198],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[2,198],136:[2,198],137:[1,85]},{1:[2,199],6:[2,199],25:[2,199],26:[2,199],49:[2,199],54:[2,199],57:[2,199],73:[2,199],78:[2,199],86:[2,199],91:[2,199],93:[2,199],102:[2,199],103:87,104:[2,199],105:[2,199],106:[2,199],109:88,110:[2,199],111:69,118:[2,199],126:[2,199],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[2,199],137:[1,85]},{1:[2,200],6:[2,200],25:[2,200],26:[2,200],49:[2,200],54:[2,200],57:[2,200],73:[2,200],78:[2,200],86:[2,200],91:[2,200],93:[2,200],102:[2,200],103:87,104:[2,200],105:[2,200],106:[2,200],109:88,110:[2,200],111:69,118:[2,200],126:[2,200],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[2,200],136:[2,200],137:[2,200]},{1:[2,185],6:[2,185],25:[2,185],26:[2,185],49:[2,185],54:[2,185],57:[2,185],73:[2,185],78:[2,185],86:[2,185],91:[2,185],93:[2,185],102:[2,185],103:87,104:[1,65],105:[2,185],106:[1,66],109:88,110:[1,68],111:69,118:[2,185],126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,184],6:[2,184],25:[2,184],26:[2,184],49:[2,184],54:[2,184],57:[2,184],73:[2,184],78:[2,184],86:[2,184],91:[2,184],93:[2,184],102:[2,184],103:87,104:[1,65],105:[2,184],106:[1,66],109:88,110:[1,68],111:69,118:[2,184],126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,104],6:[2,104],25:[2,104],26:[2,104],49:[2,104],54:[2,104],57:[2,104],66:[2,104],67:[2,104],68:[2,104],69:[2,104],71:[2,104],73:[2,104],74:[2,104],78:[2,104],84:[2,104],85:[2,104],86:[2,104],91:[2,104],93:[2,104],102:[2,104],104:[2,104],105:[2,104],106:[2,104],110:[2,104],118:[2,104],126:[2,104],128:[2,104],129:[2,104],132:[2,104],133:[2,104],134:[2,104],135:[2,104],136:[2,104],137:[2,104]},{1:[2,80],6:[2,80],25:[2,80],26:[2,80],40:[2,80],49:[2,80],54:[2,80],57:[2,80],66:[2,80],67:[2,80],68:[2,80],69:[2,80],71:[2,80],73:[2,80],74:[2,80],78:[2,80],80:[2,80],84:[2,80],85:[2,80],86:[2,80],91:[2,80],93:[2,80],102:[2,80],104:[2,80],105:[2,80],106:[2,80],110:[2,80],118:[2,80],126:[2,80],128:[2,80],129:[2,80],130:[2,80],131:[2,80],132:[2,80],133:[2,80],134:[2,80],135:[2,80],136:[2,80],137:[2,80],138:[2,80]},{1:[2,81],6:[2,81],25:[2,81],26:[2,81],40:[2,81],49:[2,81],54:[2,81],57:[2,81],66:[2,81],67:[2,81],68:[2,81],69:[2,81],71:[2,81],73:[2,81],74:[2,81],78:[2,81],80:[2,81],84:[2,81],85:[2,81],86:[2,81],91:[2,81],93:[2,81],102:[2,81],104:[2,81],105:[2,81],106:[2,81],110:[2,81],118:[2,81],126:[2,81],128:[2,81],129:[2,81],130:[2,81],131:[2,81],132:[2,81],133:[2,81],134:[2,81],135:[2,81],136:[2,81],137:[2,81],138:[2,81]},{1:[2,82],6:[2,82],25:[2,82],26:[2,82],40:[2,82],49:[2,82],54:[2,82],57:[2,82],66:[2,82],67:[2,82],68:[2,82],69:[2,82],71:[2,82],73:[2,82],74:[2,82],78:[2,82],80:[2,82],84:[2,82],85:[2,82],86:[2,82],91:[2,82],93:[2,82],102:[2,82],104:[2,82],105:[2,82],106:[2,82],110:[2,82],118:[2,82],126:[2,82],128:[2,82],129:[2,82],130:[2,82],131:[2,82],132:[2,82],133:[2,82],134:[2,82],135:[2,82],136:[2,82],137:[2,82],138:[2,82]},{1:[2,83],6:[2,83],25:[2,83],26:[2,83],40:[2,83],49:[2,83],54:[2,83],57:[2,83],66:[2,83],67:[2,83],68:[2,83],69:[2,83],71:[2,83],73:[2,83],74:[2,83],78:[2,83],80:[2,83],84:[2,83],85:[2,83],86:[2,83],91:[2,83],93:[2,83],102:[2,83],104:[2,83],105:[2,83],106:[2,83],110:[2,83],118:[2,83],126:[2,83],128:[2,83],129:[2,83],130:[2,83],131:[2,83],132:[2,83],133:[2,83],134:[2,83],135:[2,83],136:[2,83],137:[2,83],138:[2,83]},{73:[1,241]},{57:[1,194],73:[2,88],92:242,93:[1,193],103:87,104:[1,65],106:[1,66],109:88,110:[1,68],111:69,126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{73:[2,89]},{8:243,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,73:[2,123],76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{12:[2,117],28:[2,117],30:[2,117],31:[2,117],33:[2,117],34:[2,117],35:[2,117],36:[2,117],37:[2,117],38:[2,117],45:[2,117],46:[2,117],47:[2,117],51:[2,117],52:[2,117],73:[2,117],76:[2,117],79:[2,117],83:[2,117],88:[2,117],89:[2,117],90:[2,117],96:[2,117],100:[2,117],101:[2,117],104:[2,117],106:[2,117],108:[2,117],110:[2,117],119:[2,117],125:[2,117],127:[2,117],128:[2,117],129:[2,117],130:[2,117],131:[2,117]},{12:[2,118],28:[2,118],30:[2,118],31:[2,118],33:[2,118],34:[2,118],35:[2,118],36:[2,118],37:[2,118],38:[2,118],45:[2,118],46:[2,118],47:[2,118],51:[2,118],52:[2,118],73:[2,118],76:[2,118],79:[2,118],83:[2,118],88:[2,118],89:[2,118],90:[2,118],96:[2,118],100:[2,118],101:[2,118],104:[2,118],106:[2,118],108:[2,118],110:[2,118],119:[2,118],125:[2,118],127:[2,118],128:[2,118],129:[2,118],130:[2,118],131:[2,118]},{1:[2,87],6:[2,87],25:[2,87],26:[2,87],40:[2,87],49:[2,87],54:[2,87],57:[2,87],66:[2,87],67:[2,87],68:[2,87],69:[2,87],71:[2,87],73:[2,87],74:[2,87],78:[2,87],80:[2,87],84:[2,87],85:[2,87],86:[2,87],91:[2,87],93:[2,87],102:[2,87],104:[2,87],105:[2,87],106:[2,87],110:[2,87],118:[2,87],126:[2,87],128:[2,87],129:[2,87],130:[2,87],131:[2,87],132:[2,87],133:[2,87],134:[2,87],135:[2,87],136:[2,87],137:[2,87],138:[2,87]},{1:[2,105],6:[2,105],25:[2,105],26:[2,105],49:[2,105],54:[2,105],57:[2,105],66:[2,105],67:[2,105],68:[2,105],69:[2,105],71:[2,105],73:[2,105],74:[2,105],78:[2,105],84:[2,105],85:[2,105],86:[2,105],91:[2,105],93:[2,105],102:[2,105],104:[2,105],105:[2,105],106:[2,105],110:[2,105],118:[2,105],126:[2,105],128:[2,105],129:[2,105],132:[2,105],133:[2,105],134:[2,105],135:[2,105],136:[2,105],137:[2,105]},{1:[2,36],6:[2,36],25:[2,36],26:[2,36],49:[2,36],54:[2,36],57:[2,36],73:[2,36],78:[2,36],86:[2,36],91:[2,36],93:[2,36],102:[2,36],103:87,104:[2,36],105:[2,36],106:[2,36],109:88,110:[2,36],111:69,118:[2,36],126:[2,36],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{8:244,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:245,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,110],6:[2,110],25:[2,110],26:[2,110],49:[2,110],54:[2,110],57:[2,110],66:[2,110],67:[2,110],68:[2,110],69:[2,110],71:[2,110],73:[2,110],74:[2,110],78:[2,110],84:[2,110],85:[2,110],86:[2,110],91:[2,110],93:[2,110],102:[2,110],104:[2,110],105:[2,110],106:[2,110],110:[2,110],118:[2,110],126:[2,110],128:[2,110],129:[2,110],132:[2,110],133:[2,110],134:[2,110],135:[2,110],136:[2,110],137:[2,110]},{6:[2,53],25:[2,53],53:246,54:[1,229],86:[2,53]},{6:[2,129],25:[2,129],26:[2,129],54:[2,129],57:[1,247],86:[2,129],91:[2,129],103:87,104:[1,65],106:[1,66],109:88,110:[1,68],111:69,126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{50:248,51:[1,60],52:[1,61]},{6:[2,54],25:[2,54],26:[2,54],27:110,28:[1,73],44:111,55:249,56:109,58:112,59:113,76:[1,70],89:[1,114],90:[1,115]},{6:[1,250],25:[1,251]},{6:[2,61],25:[2,61],26:[2,61],49:[2,61],54:[2,61]},{8:252,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,201],6:[2,201],25:[2,201],26:[2,201],49:[2,201],54:[2,201],57:[2,201],73:[2,201],78:[2,201],86:[2,201],91:[2,201],93:[2,201],102:[2,201],103:87,104:[2,201],105:[2,201],106:[2,201],109:88,110:[2,201],111:69,118:[2,201],126:[2,201],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{8:253,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:254,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,204],6:[2,204],25:[2,204],26:[2,204],49:[2,204],54:[2,204],57:[2,204],73:[2,204],78:[2,204],86:[2,204],91:[2,204],93:[2,204],102:[2,204],103:87,104:[2,204],105:[2,204],106:[2,204],109:88,110:[2,204],111:69,118:[2,204],126:[2,204],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,183],6:[2,183],25:[2,183],26:[2,183],49:[2,183],54:[2,183],57:[2,183],73:[2,183],78:[2,183],86:[2,183],91:[2,183],93:[2,183],102:[2,183],104:[2,183],105:[2,183],106:[2,183],110:[2,183],118:[2,183],126:[2,183],128:[2,183],129:[2,183],132:[2,183],133:[2,183],134:[2,183],135:[2,183],136:[2,183],137:[2,183]},{8:255,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,134],6:[2,134],25:[2,134],26:[2,134],49:[2,134],54:[2,134],57:[2,134],73:[2,134],78:[2,134],86:[2,134],91:[2,134],93:[2,134],98:[1,256],102:[2,134],104:[2,134],105:[2,134],106:[2,134],110:[2,134],118:[2,134],126:[2,134],128:[2,134],129:[2,134],132:[2,134],133:[2,134],134:[2,134],135:[2,134],136:[2,134],137:[2,134]},{5:257,25:[1,5]},{27:258,28:[1,73],59:259,76:[1,70]},{120:260,122:219,123:[1,220]},{26:[1,261],121:[1,262],122:263,123:[1,220]},{26:[2,176],121:[2,176],123:[2,176]},{8:265,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],95:264,96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,98],5:266,6:[2,98],25:[1,5],26:[2,98],49:[2,98],54:[2,98],57:[2,98],73:[2,98],78:[2,98],86:[2,98],91:[2,98],93:[2,98],102:[2,98],103:87,104:[1,65],105:[2,98],106:[1,66],109:88,110:[1,68],111:69,118:[2,98],126:[2,98],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,101],6:[2,101],25:[2,101],26:[2,101],49:[2,101],54:[2,101],57:[2,101],73:[2,101],78:[2,101],86:[2,101],91:[2,101],93:[2,101],102:[2,101],104:[2,101],105:[2,101],106:[2,101],110:[2,101],118:[2,101],126:[2,101],128:[2,101],129:[2,101],132:[2,101],133:[2,101],134:[2,101],135:[2,101],136:[2,101],137:[2,101]},{8:267,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,140],6:[2,140],25:[2,140],26:[2,140],49:[2,140],54:[2,140],57:[2,140],66:[2,140],67:[2,140],68:[2,140],69:[2,140],71:[2,140],73:[2,140],74:[2,140],78:[2,140],84:[2,140],85:[2,140],86:[2,140],91:[2,140],93:[2,140],102:[2,140],104:[2,140],105:[2,140],106:[2,140],110:[2,140],118:[2,140],126:[2,140],128:[2,140],129:[2,140],132:[2,140],133:[2,140],134:[2,140],135:[2,140],136:[2,140],137:[2,140]},{6:[1,74],26:[1,268]},{8:269,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{6:[2,67],12:[2,118],25:[2,67],28:[2,118],30:[2,118],31:[2,118],33:[2,118],34:[2,118],35:[2,118],36:[2,118],37:[2,118],38:[2,118],45:[2,118],46:[2,118],47:[2,118],51:[2,118],52:[2,118],54:[2,67],76:[2,118],79:[2,118],83:[2,118],88:[2,118],89:[2,118],90:[2,118],91:[2,67],96:[2,118],100:[2,118],101:[2,118],104:[2,118],106:[2,118],108:[2,118],110:[2,118],119:[2,118],125:[2,118],127:[2,118],128:[2,118],129:[2,118],130:[2,118],131:[2,118]},{6:[1,271],25:[1,272],91:[1,270]},{6:[2,54],8:202,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[2,54],26:[2,54],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:148,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],86:[2,54],88:[1,58],89:[1,59],90:[1,57],91:[2,54],94:273,96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{6:[2,53],25:[2,53],26:[2,53],53:274,54:[1,229]},{1:[2,180],6:[2,180],25:[2,180],26:[2,180],49:[2,180],54:[2,180],57:[2,180],73:[2,180],78:[2,180],86:[2,180],91:[2,180],93:[2,180],102:[2,180],104:[2,180],105:[2,180],106:[2,180],110:[2,180],118:[2,180],121:[2,180],126:[2,180],128:[2,180],129:[2,180],132:[2,180],133:[2,180],134:[2,180],135:[2,180],136:[2,180],137:[2,180]},{8:275,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:276,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{116:[2,158],117:[2,158]},{27:159,28:[1,73],44:160,58:161,59:162,76:[1,70],89:[1,114],90:[1,115],115:277},{1:[2,165],6:[2,165],25:[2,165],26:[2,165],49:[2,165],54:[2,165],57:[2,165],73:[2,165],78:[2,165],86:[2,165],91:[2,165],93:[2,165],102:[2,165],103:87,104:[2,165],105:[1,278],106:[2,165],109:88,110:[2,165],111:69,118:[1,279],126:[2,165],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,166],6:[2,166],25:[2,166],26:[2,166],49:[2,166],54:[2,166],57:[2,166],73:[2,166],78:[2,166],86:[2,166],91:[2,166],93:[2,166],102:[2,166],103:87,104:[2,166],105:[1,280],106:[2,166],109:88,110:[2,166],111:69,118:[2,166],126:[2,166],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{6:[1,282],25:[1,283],78:[1,281]},{6:[2,54],11:169,25:[2,54],26:[2,54],27:170,28:[1,73],29:171,30:[1,71],31:[1,72],41:284,42:168,44:172,46:[1,46],78:[2,54],89:[1,114]},{8:285,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,286],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,86],6:[2,86],25:[2,86],26:[2,86],40:[2,86],49:[2,86],54:[2,86],57:[2,86],66:[2,86],67:[2,86],68:[2,86],69:[2,86],71:[2,86],73:[2,86],74:[2,86],78:[2,86],80:[2,86],84:[2,86],85:[2,86],86:[2,86],91:[2,86],93:[2,86],102:[2,86],104:[2,86],105:[2,86],106:[2,86],110:[2,86],118:[2,86],126:[2,86],128:[2,86],129:[2,86],130:[2,86],131:[2,86],132:[2,86],133:[2,86],134:[2,86],135:[2,86],136:[2,86],137:[2,86],138:[2,86]},{8:287,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,73:[2,121],76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{73:[2,122],103:87,104:[1,65],106:[1,66],109:88,110:[1,68],111:69,126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,37],6:[2,37],25:[2,37],26:[2,37],49:[2,37],54:[2,37],57:[2,37],73:[2,37],78:[2,37],86:[2,37],91:[2,37],93:[2,37],102:[2,37],103:87,104:[2,37],105:[2,37],106:[2,37],109:88,110:[2,37],111:69,118:[2,37],126:[2,37],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{26:[1,288],103:87,104:[1,65],106:[1,66],109:88,110:[1,68],111:69,126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{6:[1,271],25:[1,272],86:[1,289]},{6:[2,67],25:[2,67],26:[2,67],54:[2,67],86:[2,67],91:[2,67]},{5:290,25:[1,5]},{6:[2,57],25:[2,57],26:[2,57],49:[2,57],54:[2,57]},{27:110,28:[1,73],44:111,55:291,56:109,58:112,59:113,76:[1,70],89:[1,114],90:[1,115]},{6:[2,55],25:[2,55],26:[2,55],27:110,28:[1,73],44:111,48:292,54:[2,55],55:108,56:109,58:112,59:113,76:[1,70],89:[1,114],90:[1,115]},{6:[2,62],25:[2,62],26:[2,62],49:[2,62],54:[2,62],103:87,104:[1,65],106:[1,66],109:88,110:[1,68],111:69,126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{26:[1,293],103:87,104:[1,65],106:[1,66],109:88,110:[1,68],111:69,126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,203],6:[2,203],25:[2,203],26:[2,203],49:[2,203],54:[2,203],57:[2,203],73:[2,203],78:[2,203],86:[2,203],91:[2,203],93:[2,203],102:[2,203],103:87,104:[2,203],105:[2,203],106:[2,203],109:88,110:[2,203],111:69,118:[2,203],126:[2,203],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{5:294,25:[1,5],103:87,104:[1,65],106:[1,66],109:88,110:[1,68],111:69,126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{5:295,25:[1,5]},{1:[2,135],6:[2,135],25:[2,135],26:[2,135],49:[2,135],54:[2,135],57:[2,135],73:[2,135],78:[2,135],86:[2,135],91:[2,135],93:[2,135],102:[2,135],104:[2,135],105:[2,135],106:[2,135],110:[2,135],118:[2,135],126:[2,135],128:[2,135],129:[2,135],132:[2,135],133:[2,135],134:[2,135],135:[2,135],136:[2,135],137:[2,135]},{5:296,25:[1,5]},{5:297,25:[1,5]},{26:[1,298],121:[1,299],122:263,123:[1,220]},{1:[2,174],6:[2,174],25:[2,174],26:[2,174],49:[2,174],54:[2,174],57:[2,174],73:[2,174],78:[2,174],86:[2,174],91:[2,174],93:[2,174],102:[2,174],104:[2,174],105:[2,174],106:[2,174],110:[2,174],118:[2,174],126:[2,174],128:[2,174],129:[2,174],132:[2,174],133:[2,174],134:[2,174],135:[2,174],136:[2,174],137:[2,174]},{5:300,25:[1,5]},{26:[2,177],121:[2,177],123:[2,177]},{5:301,25:[1,5],54:[1,302]},{25:[2,131],54:[2,131],103:87,104:[1,65],106:[1,66],109:88,110:[1,68],111:69,126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,99],6:[2,99],25:[2,99],26:[2,99],49:[2,99],54:[2,99],57:[2,99],73:[2,99],78:[2,99],86:[2,99],91:[2,99],93:[2,99],102:[2,99],104:[2,99],105:[2,99],106:[2,99],110:[2,99],118:[2,99],126:[2,99],128:[2,99],129:[2,99],132:[2,99],133:[2,99],134:[2,99],135:[2,99],136:[2,99],137:[2,99]},{1:[2,102],5:303,6:[2,102],25:[1,5],26:[2,102],49:[2,102],54:[2,102],57:[2,102],73:[2,102],78:[2,102],86:[2,102],91:[2,102],93:[2,102],102:[2,102],103:87,104:[1,65],105:[2,102],106:[1,66],109:88,110:[1,68],111:69,118:[2,102],126:[2,102],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{102:[1,304]},{91:[1,305],103:87,104:[1,65],106:[1,66],109:88,110:[1,68],111:69,126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,116],6:[2,116],25:[2,116],26:[2,116],40:[2,116],49:[2,116],54:[2,116],57:[2,116],66:[2,116],67:[2,116],68:[2,116],69:[2,116],71:[2,116],73:[2,116],74:[2,116],78:[2,116],84:[2,116],85:[2,116],86:[2,116],91:[2,116],93:[2,116],102:[2,116],104:[2,116],105:[2,116],106:[2,116],110:[2,116],116:[2,116],117:[2,116],118:[2,116],126:[2,116],128:[2,116],129:[2,116],132:[2,116],133:[2,116],134:[2,116],135:[2,116],136:[2,116],137:[2,116]},{8:202,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:148,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],94:306,96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:202,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,147],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:148,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],87:307,88:[1,58],89:[1,59],90:[1,57],94:146,96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{6:[2,125],25:[2,125],26:[2,125],54:[2,125],86:[2,125],91:[2,125]},{6:[1,271],25:[1,272],26:[1,308]},{1:[2,143],6:[2,143],25:[2,143],26:[2,143],49:[2,143],54:[2,143],57:[2,143],73:[2,143],78:[2,143],86:[2,143],91:[2,143],93:[2,143],102:[2,143],103:87,104:[1,65],105:[2,143],106:[1,66],109:88,110:[1,68],111:69,118:[2,143],126:[2,143],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,145],6:[2,145],25:[2,145],26:[2,145],49:[2,145],54:[2,145],57:[2,145],73:[2,145],78:[2,145],86:[2,145],91:[2,145],93:[2,145],102:[2,145],103:87,104:[1,65],105:[2,145],106:[1,66],109:88,110:[1,68],111:69,118:[2,145],126:[2,145],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{116:[2,164],117:[2,164]},{8:309,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:310,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:311,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,90],6:[2,90],25:[2,90],26:[2,90],40:[2,90],49:[2,90],54:[2,90],57:[2,90],66:[2,90],67:[2,90],68:[2,90],69:[2,90],71:[2,90],73:[2,90],74:[2,90],78:[2,90],84:[2,90],85:[2,90],86:[2,90],91:[2,90],93:[2,90],102:[2,90],104:[2,90],105:[2,90],106:[2,90],110:[2,90],116:[2,90],117:[2,90],118:[2,90],126:[2,90],128:[2,90],129:[2,90],132:[2,90],133:[2,90],134:[2,90],135:[2,90],136:[2,90],137:[2,90]},{11:169,27:170,28:[1,73],29:171,30:[1,71],31:[1,72],41:312,42:168,44:172,46:[1,46],89:[1,114]},{6:[2,91],11:169,25:[2,91],26:[2,91],27:170,28:[1,73],29:171,30:[1,71],31:[1,72],41:167,42:168,44:172,46:[1,46],54:[2,91],77:313,89:[1,114]},{6:[2,93],25:[2,93],26:[2,93],54:[2,93],78:[2,93]},{6:[2,40],25:[2,40],26:[2,40],54:[2,40],78:[2,40],103:87,104:[1,65],106:[1,66],109:88,110:[1,68],111:69,126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{8:314,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{73:[2,120],103:87,104:[1,65],106:[1,66],109:88,110:[1,68],111:69,126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,38],6:[2,38],25:[2,38],26:[2,38],49:[2,38],54:[2,38],57:[2,38],73:[2,38],78:[2,38],86:[2,38],91:[2,38],93:[2,38],102:[2,38],104:[2,38],105:[2,38],106:[2,38],110:[2,38],118:[2,38],126:[2,38],128:[2,38],129:[2,38],132:[2,38],133:[2,38],134:[2,38],135:[2,38],136:[2,38],137:[2,38]},{1:[2,111],6:[2,111],25:[2,111],26:[2,111],49:[2,111],54:[2,111],57:[2,111],66:[2,111],67:[2,111],68:[2,111],69:[2,111],71:[2,111],73:[2,111],74:[2,111],78:[2,111],84:[2,111],85:[2,111],86:[2,111],91:[2,111],93:[2,111],102:[2,111],104:[2,111],105:[2,111],106:[2,111],110:[2,111],118:[2,111],126:[2,111],128:[2,111],129:[2,111],132:[2,111],133:[2,111],134:[2,111],135:[2,111],136:[2,111],137:[2,111]},{1:[2,49],6:[2,49],25:[2,49],26:[2,49],49:[2,49],54:[2,49],57:[2,49],73:[2,49],78:[2,49],86:[2,49],91:[2,49],93:[2,49],102:[2,49],104:[2,49],105:[2,49],106:[2,49],110:[2,49],118:[2,49],126:[2,49],128:[2,49],129:[2,49],132:[2,49],133:[2,49],134:[2,49],135:[2,49],136:[2,49],137:[2,49]},{6:[2,58],25:[2,58],26:[2,58],49:[2,58],54:[2,58]},{6:[2,53],25:[2,53],26:[2,53],53:315,54:[1,204]},{1:[2,202],6:[2,202],25:[2,202],26:[2,202],49:[2,202],54:[2,202],57:[2,202],73:[2,202],78:[2,202],86:[2,202],91:[2,202],93:[2,202],102:[2,202],104:[2,202],105:[2,202],106:[2,202],110:[2,202],118:[2,202],126:[2,202],128:[2,202],129:[2,202],132:[2,202],133:[2,202],134:[2,202],135:[2,202],136:[2,202],137:[2,202]},{1:[2,181],6:[2,181],25:[2,181],26:[2,181],49:[2,181],54:[2,181],57:[2,181],73:[2,181],78:[2,181],86:[2,181],91:[2,181],93:[2,181],102:[2,181],104:[2,181],105:[2,181],106:[2,181],110:[2,181],118:[2,181],121:[2,181],126:[2,181],128:[2,181],129:[2,181],132:[2,181],133:[2,181],134:[2,181],135:[2,181],136:[2,181],137:[2,181]},{1:[2,136],6:[2,136],25:[2,136],26:[2,136],49:[2,136],54:[2,136],57:[2,136],73:[2,136],78:[2,136],86:[2,136],91:[2,136],93:[2,136],102:[2,136],104:[2,136],105:[2,136],106:[2,136],110:[2,136],118:[2,136],126:[2,136],128:[2,136],129:[2,136],132:[2,136],133:[2,136],134:[2,136],135:[2,136],136:[2,136],137:[2,136]},{1:[2,137],6:[2,137],25:[2,137],26:[2,137],49:[2,137],54:[2,137],57:[2,137],73:[2,137],78:[2,137],86:[2,137],91:[2,137],93:[2,137],98:[2,137],102:[2,137],104:[2,137],105:[2,137],106:[2,137],110:[2,137],118:[2,137],126:[2,137],128:[2,137],129:[2,137],132:[2,137],133:[2,137],134:[2,137],135:[2,137],136:[2,137],137:[2,137]},{1:[2,138],6:[2,138],25:[2,138],26:[2,138],49:[2,138],54:[2,138],57:[2,138],73:[2,138],78:[2,138],86:[2,138],91:[2,138],93:[2,138],98:[2,138],102:[2,138],104:[2,138],105:[2,138],106:[2,138],110:[2,138],118:[2,138],126:[2,138],128:[2,138],129:[2,138],132:[2,138],133:[2,138],134:[2,138],135:[2,138],136:[2,138],137:[2,138]},{1:[2,172],6:[2,172],25:[2,172],26:[2,172],49:[2,172],54:[2,172],57:[2,172],73:[2,172],78:[2,172],86:[2,172],91:[2,172],93:[2,172],102:[2,172],104:[2,172],105:[2,172],106:[2,172],110:[2,172],118:[2,172],126:[2,172],128:[2,172],129:[2,172],132:[2,172],133:[2,172],134:[2,172],135:[2,172],136:[2,172],137:[2,172]},{5:316,25:[1,5]},{26:[1,317]},{6:[1,318],26:[2,178],121:[2,178],123:[2,178]},{8:319,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{1:[2,103],6:[2,103],25:[2,103],26:[2,103],49:[2,103],54:[2,103],57:[2,103],73:[2,103],78:[2,103],86:[2,103],91:[2,103],93:[2,103],102:[2,103],104:[2,103],105:[2,103],106:[2,103],110:[2,103],118:[2,103],126:[2,103],128:[2,103],129:[2,103],132:[2,103],133:[2,103],134:[2,103],135:[2,103],136:[2,103],137:[2,103]},{1:[2,141],6:[2,141],25:[2,141],26:[2,141],49:[2,141],54:[2,141],57:[2,141],66:[2,141],67:[2,141],68:[2,141],69:[2,141],71:[2,141],73:[2,141],74:[2,141],78:[2,141],84:[2,141],85:[2,141],86:[2,141],91:[2,141],93:[2,141],102:[2,141],104:[2,141],105:[2,141],106:[2,141],110:[2,141],118:[2,141],126:[2,141],128:[2,141],129:[2,141],132:[2,141],133:[2,141],134:[2,141],135:[2,141],136:[2,141],137:[2,141]},{1:[2,119],6:[2,119],25:[2,119],26:[2,119],49:[2,119],54:[2,119],57:[2,119],66:[2,119],67:[2,119],68:[2,119],69:[2,119],71:[2,119],73:[2,119],74:[2,119],78:[2,119],84:[2,119],85:[2,119],86:[2,119],91:[2,119],93:[2,119],102:[2,119],104:[2,119],105:[2,119],106:[2,119],110:[2,119],118:[2,119],126:[2,119],128:[2,119],129:[2,119],132:[2,119],133:[2,119],134:[2,119],135:[2,119],136:[2,119],137:[2,119]},{6:[2,126],25:[2,126],26:[2,126],54:[2,126],86:[2,126],91:[2,126]},{6:[2,53],25:[2,53],26:[2,53],53:320,54:[1,229]},{6:[2,127],25:[2,127],26:[2,127],54:[2,127],86:[2,127],91:[2,127]},{1:[2,167],6:[2,167],25:[2,167],26:[2,167],49:[2,167],54:[2,167],57:[2,167],73:[2,167],78:[2,167],86:[2,167],91:[2,167],93:[2,167],102:[2,167],103:87,104:[2,167],105:[2,167],106:[2,167],109:88,110:[2,167],111:69,118:[1,321],126:[2,167],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,169],6:[2,169],25:[2,169],26:[2,169],49:[2,169],54:[2,169],57:[2,169],73:[2,169],78:[2,169],86:[2,169],91:[2,169],93:[2,169],102:[2,169],103:87,104:[2,169],105:[1,322],106:[2,169],109:88,110:[2,169],111:69,118:[2,169],126:[2,169],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,168],6:[2,168],25:[2,168],26:[2,168],49:[2,168],54:[2,168],57:[2,168],73:[2,168],78:[2,168],86:[2,168],91:[2,168],93:[2,168],102:[2,168],103:87,104:[2,168],105:[2,168],106:[2,168],109:88,110:[2,168],111:69,118:[2,168],126:[2,168],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{6:[2,94],25:[2,94],26:[2,94],54:[2,94],78:[2,94]},{6:[2,53],25:[2,53],26:[2,53],53:323,54:[1,239]},{26:[1,324],103:87,104:[1,65],106:[1,66],109:88,110:[1,68],111:69,126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{6:[1,250],25:[1,251],26:[1,325]},{26:[1,326]},{1:[2,175],6:[2,175],25:[2,175],26:[2,175],49:[2,175],54:[2,175],57:[2,175],73:[2,175],78:[2,175],86:[2,175],91:[2,175],93:[2,175],102:[2,175],104:[2,175],105:[2,175],106:[2,175],110:[2,175],118:[2,175],126:[2,175],128:[2,175],129:[2,175],132:[2,175],133:[2,175],134:[2,175],135:[2,175],136:[2,175],137:[2,175]},{26:[2,179],121:[2,179],123:[2,179]},{25:[2,132],54:[2,132],103:87,104:[1,65],106:[1,66],109:88,110:[1,68],111:69,126:[1,86],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{6:[1,271],25:[1,272],26:[1,327]},{8:328,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{8:329,9:118,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,76:[1,70],79:[1,43],83:[1,28],88:[1,58],89:[1,59],90:[1,57],96:[1,38],100:[1,44],101:[1,56],103:39,104:[1,65],106:[1,66],107:40,108:[1,67],109:41,110:[1,68],111:69,119:[1,42],124:37,125:[1,64],127:[1,31],128:[1,32],129:[1,33],130:[1,34],131:[1,35]},{6:[1,282],25:[1,283],26:[1,330]},{6:[2,41],25:[2,41],26:[2,41],54:[2,41],78:[2,41]},{6:[2,59],25:[2,59],26:[2,59],49:[2,59],54:[2,59]},{1:[2,173],6:[2,173],25:[2,173],26:[2,173],49:[2,173],54:[2,173],57:[2,173],73:[2,173],78:[2,173],86:[2,173],91:[2,173],93:[2,173],102:[2,173],104:[2,173],105:[2,173],106:[2,173],110:[2,173],118:[2,173],126:[2,173],128:[2,173],129:[2,173],132:[2,173],133:[2,173],134:[2,173],135:[2,173],136:[2,173],137:[2,173]},{6:[2,128],25:[2,128],26:[2,128],54:[2,128],86:[2,128],91:[2,128]},{1:[2,170],6:[2,170],25:[2,170],26:[2,170],49:[2,170],54:[2,170],57:[2,170],73:[2,170],78:[2,170],86:[2,170],91:[2,170],93:[2,170],102:[2,170],103:87,104:[2,170],105:[2,170],106:[2,170],109:88,110:[2,170],111:69,118:[2,170],126:[2,170],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{1:[2,171],6:[2,171],25:[2,171],26:[2,171],49:[2,171],54:[2,171],57:[2,171],73:[2,171],78:[2,171],86:[2,171],91:[2,171],93:[2,171],102:[2,171],103:87,104:[2,171],105:[2,171],106:[2,171],109:88,110:[2,171],111:69,118:[2,171],126:[2,171],128:[1,80],129:[1,79],132:[1,78],133:[1,81],134:[1,82],135:[1,83],136:[1,84],137:[1,85]},{6:[2,95],25:[2,95],26:[2,95],54:[2,95],78:[2,95]}],defaultActions:{60:[2,51],61:[2,52],75:[2,3],94:[2,109],191:[2,89]},parseError:function(e){throw Error(e) +},parse:function(e){function t(){var e;return e=n.lexer.lex()||1,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,i=[0],s=[null],r=[],a=this.table,o="",c=0,h=0,l=0;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,this.lexer.yylloc===void 0&&(this.lexer.yylloc={});var u=this.lexer.yylloc;r.push(u);var p=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var d,f,m,b,k,g,y,v,w,T={};;){if(m=i[i.length-1],this.defaultActions[m]?b=this.defaultActions[m]:((null===d||d===void 0)&&(d=t()),b=a[m]&&a[m][d]),b===void 0||!b.length||!b[0]){var F="";if(!l){w=[];for(g in a[m])this.terminals_[g]&&g>2&&w.push("'"+this.terminals_[g]+"'");F=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+w.join(", ")+", got '"+(this.terminals_[d]||d)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==d?"end of input":"'"+(this.terminals_[d]||d)+"'"),this.parseError(F,{text:this.lexer.match,token:this.terminals_[d]||d,line:this.lexer.yylineno,loc:u,expected:w})}}if(b[0]instanceof Array&&b.length>1)throw Error("Parse Error: multiple actions possible at state: "+m+", token: "+d);switch(b[0]){case 1:i.push(d),s.push(this.lexer.yytext),r.push(this.lexer.yylloc),i.push(b[1]),d=null,f?(d=f,f=null):(h=this.lexer.yyleng,o=this.lexer.yytext,c=this.lexer.yylineno,u=this.lexer.yylloc,l>0&&l--);break;case 2:if(y=this.productions_[b[1]][1],T.$=s[s.length-y],T._$={first_line:r[r.length-(y||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(y||1)].first_column,last_column:r[r.length-1].last_column},p&&(T._$.range=[r[r.length-(y||1)].range[0],r[r.length-1].range[1]]),k=this.performAction.call(T,o,h,c,this.yy,b[1],s,r),k!==void 0)return k;y&&(i=i.slice(0,2*-1*y),s=s.slice(0,-1*y),r=r.slice(0,-1*y)),i.push(this.productions_[b[1]][0]),s.push(T.$),r.push(T._$),v=a[i[i.length-2]][i[i.length-1]],i.push(v);break;case 3:return!0}}return!0}};return e.prototype=t,t.Parser=e,new e}();require!==void 0&&e!==void 0&&(e.parser=t,e.Parser=t.Parser,e.parse=function(){return t.parse.apply(t,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var n=require("fs").readFileSync(require("path").normalize(t[1]),"utf8");return e.parser.parse(n)},"undefined"!=typeof module&&require.main===module&&e.main(process.argv.slice(1)))},require["./scope"]=new function(){var e=this;(function(){var t,n,i,s;s=require("./helpers"),n=s.extend,i=s.last,e.Scope=t=function(){function e(t,n,i){this.parent=t,this.expressions=n,this.method=i,this.variables=[{name:"arguments",type:"arguments"}],this.positions={},this.parent||(e.root=this)}return e.root=null,e.prototype.add=function(e,t,n){return this.shared&&!n?this.parent.add(e,t,n):Object.prototype.hasOwnProperty.call(this.positions,e)?this.variables[this.positions[e]].type=t:this.positions[e]=this.variables.push({name:e,type:t})-1},e.prototype.namedMethod=function(){var e;return(null!=(e=this.method)?e.name:void 0)||!this.parent?this.method:this.parent.namedMethod()},e.prototype.find=function(e){return this.check(e)?!0:(this.add(e,"var"),!1)},e.prototype.parameter=function(e){return this.shared&&this.parent.check(e,!0)?void 0:this.add(e,"param")},e.prototype.check=function(e){var t;return!!(this.type(e)||(null!=(t=this.parent)?t.check(e):void 0))},e.prototype.temporary=function(e,t){return e.length>1?"_"+e+(t>1?t-1:""):"_"+(t+parseInt(e,36)).toString(36).replace(/\d/g,"a")},e.prototype.type=function(e){var t,n,i,s;for(s=this.variables,n=0,i=s.length;i>n;n++)if(t=s[n],t.name===e)return t.type;return null},e.prototype.freeVariable=function(e,t){var n,i;for(null==t&&(t=!0),n=0;this.check(i=this.temporary(e,n));)n++;return t&&this.add(i,"var",!0),i},e.prototype.assign=function(e,t){return this.add(e,{value:t,assigned:!0},!0),this.hasAssignments=!0},e.prototype.hasDeclarations=function(){return!!this.declaredVariables().length},e.prototype.declaredVariables=function(){var e,t,n,i,s,r;for(e=[],t=[],r=this.variables,i=0,s=r.length;s>i;i++)n=r[i],"var"===n.type&&("_"===n.name.charAt(0)?t:e).push(n.name);return e.sort().concat(t.sort())},e.prototype.assignedVariables=function(){var e,t,n,i,s;for(i=this.variables,s=[],t=0,n=i.length;n>t;t++)e=i[t],e.type.assigned&&s.push(""+e.name+" = "+e.type.value);return s},e}()}).call(this)},require["./nodes"]=new function(){var e=this;(function(){var t,n,i,s,r,a,o,c,h,l,u,p,d,f,m,b,k,g,y,v,w,T,F,C,L,E,N,x,D,S,A,R,I,_,$,O,j,B,M,V,P,U,H,q,G,W,X,Y,K,z,J,Z,Q,et,tt,nt,it,st,rt,at,ot,ct,ht,lt,ut,pt,dt,ft,mt={}.hasOwnProperty,bt=function(e,t){function n(){this.constructor=e}for(var i in t)mt.call(t,i)&&(e[i]=t[i]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},kt=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1},gt=[].slice;Error.stackTraceLimit=1/0,V=require("./scope").Scope,dt=require("./lexer"),$=dt.RESERVED,M=dt.STRICT_PROSCRIBED,ft=require("./helpers"),Q=ft.compact,it=ft.flatten,nt=ft.extend,ot=ft.merge,et=ft.del,lt=ft.starts,tt=ft.ends,rt=ft.last,ht=ft.some,Z=ft.addLocationDataFn,at=ft.locationDataToString,e.extend=nt,e.addLocationDataFn=Z,J=function(){return!0},S=function(){return!1},G=function(){return this},D=function(){return this.negated=!this.negated,this},e.CodeFragment=l=function(){function e(e,t){var n;this.code=""+t,this.locationData=null!=e?e.locationData:void 0,this.type=(null!=e?null!=(n=e.constructor)?n.name:void 0:void 0)||"unknown"}return e.prototype.toString=function(){return""+this.code+[this.locationData?": "+at(this.locationData):void 0]},e}(),st=function(e){var t;return function(){var n,i,s;for(s=[],n=0,i=e.length;i>n;n++)t=e[n],s.push(t.code);return s}().join("")},e.Base=s=function(){function e(){}return e.prototype.compile=function(e,t){return st(this.compileToFragments(e,t))},e.prototype.compileToFragments=function(e,t){var n;return e=nt({},e),t&&(e.level=t),n=this.unfoldSoak(e)||this,n.tab=e.indent,e.level!==E&&n.isStatement(e)?n.compileClosure(e):n.compileNode(e)},e.prototype.compileClosure=function(e){if(this.jumps())throw SyntaxError("cannot use a pure statement in an expression.");return e.sharedScope=!0,c.wrap(this).compileNode(e)},e.prototype.cache=function(e,t,n){var s,r;return this.isComplex()?(s=new N(n||e.scope.freeVariable("ref")),r=new i(s,this),t?[r.compileToFragments(e,t),[this.makeCode(s.value)]]:[r,s]):(s=t?this.compileToFragments(e,t):this,[s,s])},e.prototype.cacheToCodeFragments=function(e){return[st(e[0]),st(e[1])]},e.prototype.makeReturn=function(e){var t;return t=this.unwrapAll(),e?new a(new N(""+e+".push"),[t]):new j(t)},e.prototype.contains=function(e){var t;return t=!1,this.traverseChildren(!1,function(n){return e(n)?(t=!0,!1):void 0}),t},e.prototype.containsType=function(e){return this instanceof e||this.contains(function(t){return t instanceof e})},e.prototype.lastNonComment=function(e){var t;for(t=e.length;t--;)if(!(e[t]instanceof u))return e[t];return null},e.prototype.toString=function(e,t){var n,i;return null==e&&(e=""),null==t&&(t=this.constructor.name),n=this.locationData?at(this.locationData):"??",i="\n"+e+n+": "+t,this.soak&&(i+="?"),this.eachChild(function(t){return i+=t.toString(e+q)}),i},e.prototype.eachChild=function(e){var t,n,i,s,r,a,o,c;if(!this.children)return this;for(o=this.children,i=0,r=o.length;r>i;i++)if(t=o[i],this[t])for(c=it([this[t]]),s=0,a=c.length;a>s;s++)if(n=c[s],e(n)===!1)return this;return this},e.prototype.traverseChildren=function(e,t){return this.eachChild(function(n){return t(n)===!1?!1:n.traverseChildren(e,t)})},e.prototype.invert=function(){return new R("!",this)},e.prototype.unwrapAll=function(){var e;for(e=this;e!==(e=e.unwrap()););return e},e.prototype.children=[],e.prototype.isStatement=S,e.prototype.jumps=S,e.prototype.isComplex=J,e.prototype.isChainable=S,e.prototype.isAssignable=S,e.prototype.unwrap=G,e.prototype.unfoldSoak=S,e.prototype.assigns=S,e.prototype.updateLocationDataIfMissing=function(e){return this.locationData||(this.locationData={},nt(this.locationData,e)),this.eachChild(function(t){return t.updateLocationDataIfMissing(e)})},e.prototype.makeCode=function(e){return new l(this,e)},e.prototype.wrapInBraces=function(e){return[].concat(this.makeCode("("),e,this.makeCode(")"))},e.prototype.joinFragmentArrays=function(e,t){var n,i,s,r,a;for(n=[],s=r=0,a=e.length;a>r;s=++r)i=e[s],s&&n.push(this.makeCode(t)),n=n.concat(i);return n},e}(),e.Block=r=function(e){function t(e){this.expressions=Q(it(e||[]))}return bt(t,e),t.prototype.children=["expressions"],t.prototype.push=function(e){return this.expressions.push(e),this},t.prototype.pop=function(){return this.expressions.pop()},t.prototype.unshift=function(e){return this.expressions.unshift(e),this},t.prototype.unwrap=function(){return 1===this.expressions.length?this.expressions[0]:this},t.prototype.isEmpty=function(){return!this.expressions.length},t.prototype.isStatement=function(e){var t,n,i,s;for(s=this.expressions,n=0,i=s.length;i>n;n++)if(t=s[n],t.isStatement(e))return!0;return!1},t.prototype.jumps=function(e){var t,n,i,s;for(s=this.expressions,n=0,i=s.length;i>n;n++)if(t=s[n],t.jumps(e))return t},t.prototype.makeReturn=function(e){var t,n;for(n=this.expressions.length;n--;)if(t=this.expressions[n],!(t instanceof u)){this.expressions[n]=t.makeReturn(e),t instanceof j&&!t.expression&&this.expressions.splice(n,1);break}return this},t.prototype.compileToFragments=function(e,n){return null==e&&(e={}),e.scope?t.__super__.compileToFragments.call(this,e,n):this.compileRoot(e)},t.prototype.compileNode=function(e){var n,i,s,r,a,o,c,h,l;for(this.tab=e.indent,o=e.level===E,i=[],l=this.expressions,r=c=0,h=l.length;h>c;r=++c)a=l[r],a=a.unwrapAll(),a=a.unfoldSoak(e)||a,a instanceof t?i.push(a.compileNode(e)):o?(a.front=!0,s=a.compileToFragments(e),a.isStatement(e)||(s.unshift(this.makeCode(""+this.tab)),s.push(this.makeCode(";"))),i.push(s)):i.push(a.compileToFragments(e,F));return o?this.spaced?[].concat(this.makeCode("\n"),this.joinFragmentArrays(i,"\n\n"),this.makeCode("\n")):this.joinFragmentArrays(i,"\n"):(n=i.length?this.joinFragmentArrays(i,", "):[this.makeCode("void 0")],i.length>1&&e.level>=F?this.wrapInBraces(n):n)},t.prototype.compileRoot=function(e){var t,n,i,s,r,a;return e.indent=e.bare?"":q,e.scope=new V(null,this,null),e.level=E,this.spaced=!0,s=[],e.bare||(r=function(){var e,n,s,r;for(s=this.expressions,r=[],i=e=0,n=s.length;n>e&&(t=s[i],t.unwrap()instanceof u);i=++e)r.push(t);return r}.call(this),a=this.expressions.slice(r.length),this.expressions=r,r.length&&(s=this.compileNode(ot(e,{indent:""})),s.push(this.makeCode("\n"))),this.expressions=a),n=this.compileWithDeclarations(e),e.bare?n:[].concat(s,this.makeCode("(function() {\n"),n,this.makeCode("\n}).call(this);\n"))},t.prototype.compileWithDeclarations=function(e){var t,n,i,s,r,a,o,c,h,l,p,d,f,m;for(s=[],a=[],d=this.expressions,r=l=0,p=d.length;p>l&&(i=d[r],i=i.unwrap(),i instanceof u||i instanceof N);r=++l);return e=ot(e,{level:E}),r&&(o=this.expressions.splice(r,9e9),f=[this.spaced,!1],h=f[0],this.spaced=f[1],m=[this.compileNode(e),h],s=m[0],this.spaced=m[1],this.expressions=o),a=this.compileNode(e),c=e.scope,c.expressions===this&&(n=e.scope.hasDeclarations(),t=c.hasAssignments,(n||t)&&(r&&s.push(this.makeCode("\n")),s.push(this.makeCode(""+this.tab+"var ")),n&&s.push(this.makeCode(c.declaredVariables().join(", "))),t&&(n&&s.push(this.makeCode(",\n"+(this.tab+q))),s.push(this.makeCode(c.assignedVariables().join(",\n"+(this.tab+q))))),s.push(this.makeCode(";\n")))),s.concat(a)},t.wrap=function(e){return 1===e.length&&e[0]instanceof t?e[0]:new t(e)},t}(s),e.Literal=N=function(e){function t(e){this.value=e}return bt(t,e),t.prototype.makeReturn=function(){return this.isStatement()?this:t.__super__.makeReturn.apply(this,arguments)},t.prototype.isAssignable=function(){return m.test(this.value)},t.prototype.isStatement=function(){var e;return"break"===(e=this.value)||"continue"===e||"debugger"===e},t.prototype.isComplex=S,t.prototype.assigns=function(e){return e===this.value},t.prototype.jumps=function(e){return"break"!==this.value||(null!=e?e.loop:void 0)||(null!=e?e.block:void 0)?"continue"!==this.value||(null!=e?e.loop:void 0)?void 0:this:this},t.prototype.compileNode=function(e){var t,n,i;return n="this"===this.value?(null!=(i=e.scope.method)?i.bound:void 0)?e.scope.method.context:this.value:this.value.reserved?'"'+this.value+'"':this.value,t=this.isStatement()?""+this.tab+n+";":n,[this.makeCode(t)]},t.prototype.toString=function(){return' "'+this.value+'"'},t}(s),e.Undefined=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return bt(t,e),t.prototype.isAssignable=S,t.prototype.isComplex=S,t.prototype.compileNode=function(e){return[this.makeCode(e.level>=w?"(void 0)":"void 0")]},t}(s),e.Null=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return bt(t,e),t.prototype.isAssignable=S,t.prototype.isComplex=S,t.prototype.compileNode=function(){return[this.makeCode("null")]},t}(s),e.Bool=function(e){function t(e){this.val=e}return bt(t,e),t.prototype.isAssignable=S,t.prototype.isComplex=S,t.prototype.compileNode=function(){return[this.makeCode(this.val)]},t}(s),e.Return=j=function(e){function t(e){e&&!e.unwrap().isUndefined&&(this.expression=e)}return bt(t,e),t.prototype.children=["expression"],t.prototype.isStatement=J,t.prototype.makeReturn=G,t.prototype.jumps=G,t.prototype.compileToFragments=function(e,n){var i,s;return i=null!=(s=this.expression)?s.makeReturn():void 0,!i||i instanceof t?t.__super__.compileToFragments.call(this,e,n):i.compileToFragments(e,n)},t.prototype.compileNode=function(e){var t;return t=[],t.push(this.makeCode(this.tab+("return"+[this.expression?" ":void 0]))),this.expression&&(t=t.concat(this.expression.compileToFragments(e,L))),t.push(this.makeCode(";")),t},t}(s),e.Value=K=function(e){function t(e,n,i){return!n&&e instanceof t?e:(this.base=e,this.properties=n||[],i&&(this[i]=!0),this)}return bt(t,e),t.prototype.children=["base","properties"],t.prototype.add=function(e){return this.properties=this.properties.concat(e),this},t.prototype.hasProperties=function(){return!!this.properties.length},t.prototype.isArray=function(){return!this.properties.length&&this.base instanceof n},t.prototype.isComplex=function(){return this.hasProperties()||this.base.isComplex()},t.prototype.isAssignable=function(){return this.hasProperties()||this.base.isAssignable()},t.prototype.isSimpleNumber=function(){return this.base instanceof N&&B.test(this.base.value)},t.prototype.isString=function(){return this.base instanceof N&&k.test(this.base.value)},t.prototype.isAtomic=function(){var e,t,n,i;for(i=this.properties.concat(this.base),t=0,n=i.length;n>t;t++)if(e=i[t],e.soak||e instanceof a)return!1;return!0},t.prototype.isStatement=function(e){return!this.properties.length&&this.base.isStatement(e)},t.prototype.assigns=function(e){return!this.properties.length&&this.base.assigns(e)},t.prototype.jumps=function(e){return!this.properties.length&&this.base.jumps(e)},t.prototype.isObject=function(e){return this.properties.length?!1:this.base instanceof A&&(!e||this.base.generated)},t.prototype.isSplice=function(){return rt(this.properties)instanceof P},t.prototype.unwrap=function(){return this.properties.length?this:this.base},t.prototype.cacheReference=function(e){var n,s,r,a;return r=rt(this.properties),2>this.properties.length&&!this.base.isComplex()&&!(null!=r?r.isComplex():void 0)?[this,this]:(n=new t(this.base,this.properties.slice(0,-1)),n.isComplex()&&(s=new N(e.scope.freeVariable("base")),n=new t(new _(new i(s,n)))),r?(r.isComplex()&&(a=new N(e.scope.freeVariable("name")),r=new v(new i(a,r.index)),a=new v(a)),[n.add(r),new t(s||n.base,[a||r])]):[n,s])},t.prototype.compileNode=function(e){var t,n,i,s,r;for(this.base.front=this.front,i=this.properties,t=this.base.compileToFragments(e,i.length?w:null),(this.base instanceof _||i.length)&&B.test(st(t))&&t.push(this.makeCode(".")),s=0,r=i.length;r>s;s++)n=i[s],t.push.apply(t,n.compileToFragments(e));return t},t.prototype.unfoldSoak=function(e){var n,s=this;return null!=(n=this.unfoldedSoak)?n:this.unfoldedSoak=function(){var n,r,a,o,c,h,l,u,d,f;if(a=s.base.unfoldSoak(e))return(d=a.body.properties).push.apply(d,s.properties),a;for(f=s.properties,r=l=0,u=f.length;u>l;r=++l)if(o=f[r],o.soak)return o.soak=!1,n=new t(s.base,s.properties.slice(0,r)),h=new t(s.base,s.properties.slice(r)),n.isComplex()&&(c=new N(e.scope.freeVariable("ref")),n=new _(new i(c,n)),h.base=c),new g(new p(n),h,{soak:!0});return!1}()},t}(s),e.Comment=u=function(e){function t(e){this.comment=e}return bt(t,e),t.prototype.isStatement=J,t.prototype.makeReturn=G,t.prototype.compileNode=function(e,t){var n;return n="/*"+ct(this.comment,this.tab)+("\n"+this.tab+"*/\n"),(t||e.level)===E&&(n=e.indent+n),[this.makeCode(n)]},t}(s),e.Call=a=function(e){function n(e,t,n){this.args=null!=t?t:[],this.soak=n,this.isNew=!1,this.isSuper="super"===e,this.variable=this.isSuper?null:e}return bt(n,e),n.prototype.children=["variable","args"],n.prototype.newInstance=function(){var e,t;return e=(null!=(t=this.variable)?t.base:void 0)||this.variable,e instanceof n&&!e.isNew?e.newInstance():this.isNew=!0,this},n.prototype.superReference=function(e){var n,i;if(i=e.scope.namedMethod(),null!=i?i.klass:void 0)return n=[new t(new N("__super__"))],i["static"]&&n.push(new t(new N("constructor"))),n.push(new t(new N(i.name))),new K(new N(i.klass),n).compile(e);if(null!=i?i.ctor:void 0)return""+i.name+".__super__.constructor";throw SyntaxError("cannot call super outside of an instance method.")},n.prototype.superThis=function(e){var t;return t=e.scope.method,t&&!t.klass&&t.context||"this"},n.prototype.unfoldSoak=function(e){var t,i,s,r,a,o,c,h,l;if(this.soak){if(this.variable){if(i=ut(e,this,"variable"))return i;h=new K(this.variable).cacheReference(e),s=h[0],a=h[1]}else s=new N(this.superReference(e)),a=new K(s);return a=new n(a,this.args),a.isNew=this.isNew,s=new N("typeof "+s.compile(e)+' === "function"'),new g(s,new K(a),{soak:!0})}for(t=this,r=[];;)if(t.variable instanceof n)r.push(t),t=t.variable;else{if(!(t.variable instanceof K))break;if(r.push(t),!((t=t.variable.base)instanceof n))break}for(l=r.reverse(),o=0,c=l.length;c>o;o++)t=l[o],i&&(t.variable instanceof n?t.variable=i:t.variable.base=i),i=ut(e,t,"variable");return i},n.prototype.compileNode=function(e){var t,n,i,s,r,a,o,c,h,l;if(null!=(h=this.variable)&&(h.front=this.front),s=U.compileSplattedArray(e,this.args,!0),s.length)return this.compileSplat(e,s);for(i=[],l=this.args,n=o=0,c=l.length;c>o;n=++o)t=l[n],n&&i.push(this.makeCode(", ")),i.push.apply(i,t.compileToFragments(e,F));return r=[],this.isSuper?(a=this.superReference(e)+(".call("+this.superThis(e)),i.length&&(a+=", "),r.push(this.makeCode(a))):(this.isNew&&r.push(this.makeCode("new ")),r.push.apply(r,this.variable.compileToFragments(e,w)),r.push(this.makeCode("("))),r.push.apply(r,i),r.push(this.makeCode(")")),r},n.prototype.compileSplat=function(e,t){var n,i,s,r,a,o;return this.isSuper?[].concat(this.makeCode(""+this.superReference(e)+".apply("+this.superThis(e)+", "),t,this.makeCode(")")):this.isNew?(r=this.tab+q,[].concat(this.makeCode("(function(func, args, ctor) {\n"+r+"ctor.prototype = func.prototype;\n"+r+"var child = new ctor, result = func.apply(child, args);\n"+r+"return Object(result) === result ? result : child;\n"+this.tab+"})("),this.variable.compileToFragments(e,F),this.makeCode(", "),t,this.makeCode(", function(){})"))):(n=[],i=new K(this.variable),(a=i.properties.pop())&&i.isComplex()?(o=e.scope.freeVariable("ref"),n=n.concat(this.makeCode("("+o+" = "),i.compileToFragments(e,F),this.makeCode(")"),a.compileToFragments(e))):(s=i.compileToFragments(e,w),B.test(st(s))&&(s=this.wrapInBraces(s)),a?(o=st(s),s.push.apply(s,a.compileToFragments(e))):o="null",n=n.concat(s)),n=n.concat(this.makeCode(".apply("+o+", "),t,this.makeCode(")")))},n}(s),e.Extends=d=function(e){function t(e,t){this.child=e,this.parent=t}return bt(t,e),t.prototype.children=["child","parent"],t.prototype.compileToFragments=function(e){return new a(new K(new N(pt("extends"))),[this.child,this.parent]).compileToFragments(e)},t}(s),e.Access=t=function(e){function t(e,t){this.name=e,this.name.asKey=!0,this.soak="soak"===t}return bt(t,e),t.prototype.children=["name"],t.prototype.compileToFragments=function(e){var t;return t=this.name.compileToFragments(e),m.test(st(t))?t.unshift(this.makeCode(".")):(t.unshift(this.makeCode("[")),t.push(this.makeCode("]"))),t},t.prototype.isComplex=S,t}(s),e.Index=v=function(e){function t(e){this.index=e}return bt(t,e),t.prototype.children=["index"],t.prototype.compileToFragments=function(e){return[].concat(this.makeCode("["),this.index.compileToFragments(e,L),this.makeCode("]"))},t.prototype.isComplex=function(){return this.index.isComplex()},t}(s),e.Range=O=function(e){function t(e,t,n){this.from=e,this.to=t,this.exclusive="exclusive"===n,this.equals=this.exclusive?"":"="}return bt(t,e),t.prototype.children=["from","to"],t.prototype.compileVariables=function(e){var t,n,i,s,r;return e=ot(e,{top:!0}),n=this.cacheToCodeFragments(this.from.cache(e,F)),this.fromC=n[0],this.fromVar=n[1],i=this.cacheToCodeFragments(this.to.cache(e,F)),this.toC=i[0],this.toVar=i[1],(t=et(e,"step"))&&(s=this.cacheToCodeFragments(t.cache(e,F)),this.step=s[0],this.stepVar=s[1]),r=[this.fromVar.match(B),this.toVar.match(B)],this.fromNum=r[0],this.toNum=r[1],this.stepVar?this.stepNum=this.stepVar.match(B):void 0},t.prototype.compileNode=function(e){var t,n,i,s,r,a,o,c,h,l,u,p,d,f;return this.fromVar||this.compileVariables(e),e.index?(o=this.fromNum&&this.toNum,r=et(e,"index"),a=et(e,"name"),h=a&&a!==r,p=""+r+" = "+this.fromC,this.toC!==this.toVar&&(p+=", "+this.toC),this.step!==this.stepVar&&(p+=", "+this.step),d=[""+r+" <"+this.equals,""+r+" >"+this.equals],c=d[0],s=d[1],n=this.stepNum?+this.stepNum>0?""+c+" "+this.toVar:""+s+" "+this.toVar:o?(f=[+this.fromNum,+this.toNum],i=f[0],u=f[1],f,u>=i?""+c+" "+u:""+s+" "+u):(t=this.stepVar?""+this.stepVar+" > 0":""+this.fromVar+" <= "+this.toVar,""+t+" ? "+c+" "+this.toVar+" : "+s+" "+this.toVar),l=this.stepVar?""+r+" += "+this.stepVar:o?h?u>=i?"++"+r:"--"+r:u>=i?""+r+"++":""+r+"--":h?""+t+" ? ++"+r+" : --"+r:""+t+" ? "+r+"++ : "+r+"--",h&&(p=""+a+" = "+p),h&&(l=""+a+" = "+l),[this.makeCode(""+p+"; "+n+"; "+l)]):this.compileArray(e)},t.prototype.compileArray=function(e){var t,n,i,s,r,a,o,c,h,l,u,p,d;return this.fromNum&&this.toNum&&20>=Math.abs(this.fromNum-this.toNum)?(h=function(){d=[];for(var e=p=+this.fromNum,t=+this.toNum;t>=p?t>=e:e>=t;t>=p?e++:e--)d.push(e);return d}.apply(this),this.exclusive&&h.pop(),[this.makeCode("["+h.join(", ")+"]")]):(a=this.tab+q,r=e.scope.freeVariable("i"),l=e.scope.freeVariable("results"),c="\n"+a+l+" = [];",this.fromNum&&this.toNum?(e.index=r,n=st(this.compileNode(e))):(u=""+r+" = "+this.fromC+(this.toC!==this.toVar?", "+this.toC:""),i=""+this.fromVar+" <= "+this.toVar,n="var "+u+"; "+i+" ? "+r+" <"+this.equals+" "+this.toVar+" : "+r+" >"+this.equals+" "+this.toVar+"; "+i+" ? "+r+"++ : "+r+"--"),o="{ "+l+".push("+r+"); }\n"+a+"return "+l+";\n"+e.indent,s=function(e){return null!=e?e.contains(function(e){return e instanceof N&&"arguments"===e.value&&!e.asKey}):void 0},(s(this.from)||s(this.to))&&(t=", arguments"),[this.makeCode("(function() {"+c+"\n"+a+"for ("+n+")"+o+"}).apply(this"+(null!=t?t:"")+")")])},t}(s),e.Slice=P=function(e){function t(e){this.range=e,t.__super__.constructor.call(this)}return bt(t,e),t.prototype.children=["range"],t.prototype.compileNode=function(e){var t,n,i,s,r,a,o;return o=this.range,r=o.to,i=o.from,s=i&&i.compileToFragments(e,L)||[this.makeCode("0")],r&&(t=r.compileToFragments(e,L),n=st(t),(this.range.exclusive||-1!==+n)&&(a=", "+(this.range.exclusive?n:B.test(n)?""+(+n+1):(t=r.compileToFragments(e,w),"+"+st(t)+" + 1 || 9e9")))),[this.makeCode(".slice("+st(s)+(a||"")+")")]},t}(s),e.Obj=A=function(e){function t(e,t){this.generated=null!=t?t:!1,this.objects=this.properties=e||[]}return bt(t,e),t.prototype.children=["properties"],t.prototype.compileNode=function(e){var t,n,s,r,a,o,c,h,l,p,d,f,m;if(l=this.properties,!l.length)return[this.makeCode(this.front?"({})":"{}")];if(this.generated)for(p=0,f=l.length;f>p;p++)if(c=l[p],c instanceof K)throw Error("cannot have an implicit value in an implicit object");for(s=e.indent+=q,o=this.lastNonComment(this.properties),t=[],n=d=0,m=l.length;m>d;n=++d)h=l[n],a=n===l.length-1?"":h===o||h instanceof u?"\n":",\n",r=h instanceof u?"":s,h instanceof K&&h["this"]&&(h=new i(h.properties[0].name,h,"object")),h instanceof u||(h instanceof i||(h=new i(h,h,"object")),(h.variable.base||h.variable).asKey=!0),r&&t.push(this.makeCode(r)),t.push.apply(t,h.compileToFragments(e,E)),a&&t.push(this.makeCode(a));return t.unshift(this.makeCode("{"+(l.length&&"\n"))),t.push(this.makeCode(""+(l.length&&"\n"+this.tab)+"}")),this.front?this.wrapInBraces(t):t},t.prototype.assigns=function(e){var t,n,i,s;for(s=this.properties,n=0,i=s.length;i>n;n++)if(t=s[n],t.assigns(e))return!0;return!1},t}(s),e.Arr=n=function(e){function t(e){this.objects=e||[]}return bt(t,e),t.prototype.children=["objects"],t.prototype.compileNode=function(e){var t,n,i,s,r,a,o;if(!this.objects.length)return[this.makeCode("[]")];if(e.indent+=q,t=U.compileSplattedArray(e,this.objects),t.length)return t;for(t=[],n=function(){var t,n,i,s;for(i=this.objects,s=[],t=0,n=i.length;n>t;t++)r=i[t],s.push(r.compileToFragments(e,F));return s}.call(this),s=a=0,o=n.length;o>a;s=++a)i=n[s],s&&t.push(this.makeCode(", ")),t.push.apply(t,i);return st(t).indexOf("\n")>=0?(t.unshift(this.makeCode("[\n"+e.indent)),t.push(this.makeCode("\n"+this.tab+"]"))):(t.unshift(this.makeCode("[")),t.push(this.makeCode("]"))),t},t.prototype.assigns=function(e){var t,n,i,s;for(s=this.objects,n=0,i=s.length;i>n;n++)if(t=s[n],t.assigns(e))return!0;return!1},t}(s),e.Class=o=function(e){function n(e,t,n){this.variable=e,this.parent=t,this.body=null!=n?n:new r,this.boundFuncs=[],this.body.classBody=!0}return bt(n,e),n.prototype.children=["variable","parent","body"],n.prototype.determineName=function(){var e,n;if(!this.variable)return null;if(e=(n=rt(this.variable.properties))?n instanceof t&&n.name.value:this.variable.base.value,kt.call(M,e)>=0)throw SyntaxError("variable name may not be "+e);return e&&(e=m.test(e)&&e)},n.prototype.setContext=function(e){return this.body.traverseChildren(!1,function(t){return t.classBody?!1:t instanceof N&&"this"===t.value?t.value=e:t instanceof h&&(t.klass=e,t.bound)?t.context=e:void 0})},n.prototype.addBoundFunctions=function(e){var n,s,a,o,c,l,u,p,d,f;if(this.boundFuncs.length)for(e.scope.assign("_this","this"),d=this.boundFuncs,u=0,p=d.length;p>u;u++)f=d[u],c=f[0],a=f[1],o=new K(new N("this"),[new t(c)]),n=new r([new j(new N(""+this.ctor.name+".prototype."+c.value+".apply(_this, arguments)"))]),l=new h(a.params,n,"boundfunc"),s=new i(o,l),this.ctor.body.unshift(s)},n.prototype.addProperties=function(e,n,s){var r,a,o,c,l;return l=e.base.properties.slice(0),o=function(){var e;for(e=[];r=l.shift();){if(r instanceof i)if(a=r.variable.base,delete r.context,c=r.value,"constructor"===a.value){if(this.ctor)throw Error("cannot define more than one constructor in a class");if(c.bound)throw Error("cannot define a constructor as a bound function");c instanceof h?r=this.ctor=c:(this.externalCtor=s.scope.freeVariable("class"),r=new i(new N(this.externalCtor),c))}else r.variable["this"]?(c["static"]=!0,c.bound&&(c.context=n)):(r.variable=new K(new N(n),[new t(new N("prototype")),new t(a)]),c instanceof h&&c.bound&&(this.boundFuncs.push([a,c]),c.bound=!1));e.push(r)}return e}.call(this),Q(o)},n.prototype.walkBody=function(e,t){var i=this;return this.traverseChildren(!1,function(s){var a,o,c,h,l,u,p;if(a=!0,s instanceof n)return!1;if(s instanceof r){for(p=o=s.expressions,c=l=0,u=p.length;u>l;c=++l)h=p[c],h instanceof K&&h.isObject(!0)&&(a=!1,o[c]=i.addProperties(h,e,t));s.expressions=o=it(o)}return a&&!(s instanceof n)})},n.prototype.hoistDirectivePrologue=function(){var e,t,n;for(t=0,e=this.body.expressions;(n=e[t])&&n instanceof u||n instanceof K&&n.isString();)++t;return this.directives=e.splice(0,t)},n.prototype.ensureConstructor=function(e){return this.ctor||(this.ctor=new h,this.parent&&this.ctor.body.push(new N(""+e+".__super__.constructor.apply(this, arguments)")),this.externalCtor&&this.ctor.body.push(new N(""+this.externalCtor+".apply(this, arguments)")),this.ctor.body.makeReturn(),this.body.expressions.unshift(this.ctor)),this.ctor.ctor=this.ctor.name=e,this.ctor.klass=null,this.ctor.noReturn=!0},n.prototype.compileNode=function(e){var t,n,s,r,a,o,l;return n=this.determineName(),a=n||"_Class",a.reserved&&(a="_"+a),r=new N(a),this.hoistDirectivePrologue(),this.setContext(a),this.walkBody(a,e),this.ensureConstructor(a),this.body.spaced=!0,this.ctor instanceof h||this.body.expressions.unshift(this.ctor),this.body.expressions.push(r),(l=this.body.expressions).unshift.apply(l,this.directives),this.addBoundFunctions(e),t=c.wrap(this.body),this.parent&&(this.superClass=new N(e.scope.freeVariable("super",!1)),this.body.expressions.unshift(new d(r,this.superClass)),t.args.push(this.parent),o=t.variable.params||t.variable.base.params,o.push(new I(this.superClass))),s=new _(t,!0),this.variable&&(s=new i(this.variable,s)),s.compileToFragments(e)},n}(s),e.Assign=i=function(e){function n(e,t,n,i){var s,r,a;if(this.variable=e,this.value=t,this.context=n,this.param=i&&i.param,this.subpattern=i&&i.subpattern,a=r=this.variable.unwrapAll().value,s=kt.call(M,a)>=0,s&&"object"!==this.context)throw SyntaxError('variable name may not be "'+r+'"')}return bt(n,e),n.prototype.children=["variable","value"],n.prototype.isStatement=function(e){return(null!=e?e.level:void 0)===E&&null!=this.context&&kt.call(this.context,"?")>=0},n.prototype.assigns=function(e){return this["object"===this.context?"value":"variable"].assigns(e)},n.prototype.unfoldSoak=function(e){return ut(e,this,"variable")},n.prototype.compileNode=function(e){var t,n,i,s,r,a,o,c,l,u,p;if(i=this.variable instanceof K){if(this.variable.isArray()||this.variable.isObject())return this.compilePatternMatch(e);if(this.variable.isSplice())return this.compileSplice(e);if("||="===(c=this.context)||"&&="===c||"?="===c)return this.compileConditional(e)}if(n=this.variable.compileToFragments(e,F),r=st(n),!this.context){if(!(o=this.variable.unwrapAll()).isAssignable())throw SyntaxError('"'+this.variable.compile(e)+'" cannot be assigned.');("function"==typeof o.hasProperties?o.hasProperties():void 0)||(this.param?e.scope.add(r,"var"):e.scope.find(r))}return this.value instanceof h&&(s=x.exec(r))&&(s[1]&&(this.value.klass=s[1]),this.value.name=null!=(l=null!=(u=null!=(p=s[2])?p:s[3])?u:s[4])?l:s[5]),a=this.value.compileToFragments(e,F),"object"===this.context?n.concat(this.makeCode(": "),a):(t=n.concat(this.makeCode(" "+(this.context||"=")+" "),a),F>=e.level?t:this.wrapInBraces(t))},n.prototype.compilePatternMatch=function(e){var i,s,r,a,o,c,h,l,u,p,d,f,b,k,g,y,w,T,L,x,D,S,A,R,I,O,j,B;if(y=e.level===E,T=this.value,d=this.variable.base.objects,!(f=d.length))return r=T.compileToFragments(e),e.level>=C?this.wrapInBraces(r):r;if(h=this.variable.isObject(),y&&1===f&&!((p=d[0])instanceof U)){if(p instanceof n?(A=p,R=A.variable,c=R.base,p=A.value):c=h?p["this"]?p.properties[0].name:p:new N(0),i=m.test(c.unwrap().value||0),T=new K(T),T.properties.push(new(i?t:v)(c)),I=p.unwrap().value,kt.call($,I)>=0)throw new SyntaxError("assignment to a reserved word: "+p.compile(e)+" = "+T.compile(e));return new n(p,T,null,{param:this.param}).compileToFragments(e,E)}for(L=T.compileToFragments(e,F),x=st(L),s=[],g=!1,(!m.test(x)||this.variable.assigns(x))&&(s.push([this.makeCode(""+(b=e.scope.freeVariable("ref"))+" = ")].concat(gt.call(L))),L=[this.makeCode(b)],x=b),o=D=0,S=d.length;S>D;o=++D){if(p=d[o],c=o,h&&(p instanceof n?(O=p,j=O.variable,c=j.base,p=O.value):p.base instanceof _?(B=new K(p.unwrapAll()).cacheReference(e),p=B[0],c=B[1]):c=p["this"]?p.properties[0].name:p),!g&&p instanceof U)u=p.name.unwrap().value,p=p.unwrap(),w=""+f+" <= "+x+".length ? "+pt("slice")+".call("+x+", "+o,(k=f-o-1)?(l=e.scope.freeVariable("i"),w+=", "+l+" = "+x+".length - "+k+") : ("+l+" = "+o+", [])"):w+=") : []",w=new N(w),g=""+l+"++"; +else{if(u=p.unwrap().value,p instanceof U)throw p=p.name.compileToFragments(e),new SyntaxError("multiple splats are disallowed in an assignment: "+p+"...");"number"==typeof c?(c=new N(g||c),i=!1):i=h&&m.test(c.unwrap().value||0),w=new K(new N(x),[new(i?t:v)(c)])}if(null!=u&&kt.call($,u)>=0)throw new SyntaxError("assignment to a reserved word: "+p.compile(e)+" = "+w.compile(e));s.push(new n(p,w,null,{param:this.param,subpattern:!0}).compileToFragments(e,F))}return y||this.subpattern||s.push(L),a=this.joinFragmentArrays(s,", "),F>e.level?a:this.wrapInBraces(a)},n.prototype.compileConditional=function(e){var t,i,s;if(s=this.variable.cacheReference(e),t=s[0],i=s[1],!t.properties.length&&t.base instanceof N&&"this"!==t.base.value&&!e.scope.check(t.base.value))throw Error('the variable "'+t.base.value+"\" can't be assigned with "+this.context+" because it has not been defined.");return kt.call(this.context,"?")>=0&&(e.isExistentialEquals=!0),new R(this.context.slice(0,-1),t,new n(i,this.value,"=")).compileToFragments(e)},n.prototype.compileSplice=function(e){var t,n,i,s,r,a,o,c,h,l,u,p;return l=this.variable.properties.pop().range,i=l.from,o=l.to,n=l.exclusive,a=this.variable.compile(e),i?(u=this.cacheToCodeFragments(i.cache(e,C)),s=u[0],r=u[1]):s=r="0",o?(null!=i?i.isSimpleNumber():void 0)&&o.isSimpleNumber()?(o=+o.compile(e)-+r,n||(o+=1)):(o=o.compile(e,w)+" - "+r,n||(o+=" + 1")):o="9e9",p=this.value.cache(e,F),c=p[0],h=p[1],t=[].concat(this.makeCode("[].splice.apply("+a+", ["+s+", "+o+"].concat("),c,this.makeCode(")), "),h),e.level>E?this.wrapInBraces(t):t},n}(s),e.Code=h=function(e){function t(e,t,n){this.params=e||[],this.body=t||new r,this.bound="boundfunc"===n,this.bound&&(this.context="_this")}return bt(t,e),t.prototype.children=["params","body"],t.prototype.isStatement=function(){return!!this.ctor},t.prototype.jumps=S,t.prototype.compileNode=function(e){var t,s,r,a,o,c,h,l,u,p,d,f,m,b,k,y,v,T,F,C,L,E,x,D,S,A,I,_,$,O,j,B,M,P,U,H;for(e.scope=new V(e.scope,this.body,this),e.scope.shared=et(e,"sharedScope"),e.indent+=q,delete e.bare,delete e.isExistentialEquals,p=[],r=[],O=this.paramNames(),y=0,C=O.length;C>y;y++)h=O[y],e.scope.check(h)||e.scope.parameter(h);for(j=this.params,v=0,L=j.length;L>v;v++)if(u=j[v],u.splat){for(B=this.params,T=0,E=B.length;E>T;T++)l=B[T].name,l["this"]&&(l=l.properties[0].name),l.value&&e.scope.add(l.value,"var",!0);f=new i(new K(new n(function(){var t,n,i,s;for(i=this.params,s=[],t=0,n=i.length;n>t;t++)l=i[t],s.push(l.asReference(e));return s}.call(this))),new K(new N("arguments")));break}for(M=this.params,F=0,x=M.length;x>F;F++)u=M[F],u.isComplex()?(b=d=u.asReference(e),u.value&&(b=new R("?",d,u.value)),r.push(new i(new K(u.name),b,"=",{param:!0}))):(d=u,u.value&&(c=new N(d.name.value+" == null"),b=new i(new K(u.name),u.value,"="),r.push(new g(c,b)))),f||p.push(d);for(k=this.body.isEmpty(),f&&r.unshift(f),r.length&&(P=this.body.expressions).unshift.apply(P,r),a=I=0,D=p.length;D>I;a=++I)l=p[a],p[a]=l.compileToFragments(e),e.scope.parameter(st(p[a]));for(m=[],U=this.paramNames(),_=0,S=U.length;S>_;_++){if(h=U[_],kt.call(m,h)>=0)throw SyntaxError("multiple parameters named '"+h+"'");m.push(h)}for(k||this.noReturn||this.body.makeReturn(),this.bound&&((null!=(H=e.scope.parent.method)?H.bound:void 0)?this.bound=this.context=e.scope.parent.method.context:this["static"]||e.scope.parent.assign("_this","this")),o=e.indent,s="function",this.ctor&&(s+=" "+this.name),s+="(",t=[this.makeCode(s)],a=$=0,A=p.length;A>$;a=++$)l=p[a],a&&t.push(this.makeCode(", ")),t.push.apply(t,l);return t.push(this.makeCode(") {")),this.body.isEmpty()||(t=t.concat(this.makeCode("\n"),this.body.compileWithDeclarations(e),this.makeCode("\n"+this.tab))),t.push(this.makeCode("}")),this.ctor?[this.makeCode(this.tab)].concat(gt.call(t)):this.front||e.level>=w?this.wrapInBraces(t):t},t.prototype.paramNames=function(){var e,t,n,i,s;for(e=[],s=this.params,n=0,i=s.length;i>n;n++)t=s[n],e.push.apply(e,t.names());return e},t.prototype.traverseChildren=function(e,n){return e?t.__super__.traverseChildren.call(this,e,n):void 0},t}(s),e.Param=I=function(e){function t(e,t,n){var i;if(this.name=e,this.value=t,this.splat=n,i=e=this.name.unwrapAll().value,kt.call(M,i)>=0)throw SyntaxError('parameter name "'+e+'" is not allowed')}return bt(t,e),t.prototype.children=["name","value"],t.prototype.compileToFragments=function(e){return this.name.compileToFragments(e,F)},t.prototype.asReference=function(e){var t;return this.reference?this.reference:(t=this.name,t["this"]?(t=t.properties[0].name,t.value.reserved&&(t=new N(e.scope.freeVariable(t.value)))):t.isComplex()&&(t=new N(e.scope.freeVariable("arg"))),t=new K(t),this.splat&&(t=new U(t)),this.reference=t)},t.prototype.isComplex=function(){return this.name.isComplex()},t.prototype.names=function(e){var t,n,s,r,a,o;if(null==e&&(e=this.name),t=function(e){var t;return t=e.properties[0].name.value,t.reserved?[]:[t]},e instanceof N)return[e.value];if(e instanceof K)return t(e);for(n=[],o=e.objects,r=0,a=o.length;a>r;r++)if(s=o[r],s instanceof i)n.push.apply(n,this.names(s.value.unwrap()));else if(s instanceof U)n.push(s.name.unwrap().value);else{if(!(s instanceof K))throw SyntaxError("illegal parameter "+s.compile());s.isArray()||s.isObject()?n.push.apply(n,this.names(s.base)):s["this"]?n.push.apply(n,t(s)):n.push(s.base.value)}return n},t}(s),e.Splat=U=function(e){function t(e){this.name=e.compile?e:new N(e)}return bt(t,e),t.prototype.children=["name"],t.prototype.isAssignable=J,t.prototype.assigns=function(e){return this.name.assigns(e)},t.prototype.compileToFragments=function(e){return this.name.compileToFragments(e)},t.prototype.unwrap=function(){return this.name},t.compileSplattedArray=function(e,n,i){var s,r,a,o,c,h,l,u,p,d;for(l=-1;(u=n[++l])&&!(u instanceof t););if(l>=n.length)return[];if(1===n.length)return u=n[0],c=u.compileToFragments(e,F),i?c:[].concat(u.makeCode(""+pt("slice")+".call("),c,u.makeCode(")"));for(s=n.slice(l),h=p=0,d=s.length;d>p;h=++p)u=s[h],a=u.compileToFragments(e,F),s[h]=u instanceof t?[].concat(u.makeCode(""+pt("slice")+".call("),a,u.makeCode(")")):[].concat(u.makeCode("["),a,u.makeCode("]"));return 0===l?(u=n[0],o=u.joinFragmentArrays(s.slice(1),", "),s[0].concat(u.makeCode(".concat("),o,u.makeCode(")"))):(r=function(){var t,i,s,r;for(s=n.slice(0,l),r=[],t=0,i=s.length;i>t;t++)u=s[t],r.push(u.compileToFragments(e,F));return r}(),r=n[0].joinFragmentArrays(r,", "),o=n[l].joinFragmentArrays(s,", "),[].concat(n[0].makeCode("["),r,n[l].makeCode("].concat("),o,rt(n).makeCode(")")))},t}(s),e.While=z=function(e){function t(e,t){this.condition=(null!=t?t.invert:void 0)?e.invert():e,this.guard=null!=t?t.guard:void 0}return bt(t,e),t.prototype.children=["condition","guard","body"],t.prototype.isStatement=J,t.prototype.makeReturn=function(e){return e?t.__super__.makeReturn.apply(this,arguments):(this.returns=!this.jumps({loop:!0}),this)},t.prototype.addBody=function(e){return this.body=e,this},t.prototype.jumps=function(){var e,t,n,i;if(e=this.body.expressions,!e.length)return!1;for(n=0,i=e.length;i>n;n++)if(t=e[n],t.jumps({loop:!0}))return t;return!1},t.prototype.compileNode=function(e){var t,n,i,s;return e.indent+=q,s="",n=this.body,n.isEmpty()?n="":(this.returns&&(n.makeReturn(i=e.scope.freeVariable("results")),s=""+this.tab+i+" = [];\n"),this.guard&&(n.expressions.length>1?n.expressions.unshift(new g(new _(this.guard).invert(),new N("continue"))):this.guard&&(n=r.wrap([new g(this.guard,n)]))),n=[].concat(this.makeCode("\n"),n.compileToFragments(e,E),this.makeCode("\n"+this.tab))),t=[].concat(this.makeCode(s+this.tab+"while ("),this.condition.compileToFragments(e,L),this.makeCode(") {"),n,this.makeCode("}")),this.returns&&t.push(this.makeCode("\n"+this.tab+"return "+i+";")),t},t}(s),e.Op=R=function(e){function t(e,t,i,s){if("in"===e)return new y(t,i);if("do"===e)return this.generateDo(t);if("new"===e){if(t instanceof a&&!t["do"]&&!t.isNew)return t.newInstance();(t instanceof h&&t.bound||t["do"])&&(t=new _(t))}return this.operator=n[e]||e,this.first=t,this.second=i,this.flip=!!s,this}var n,s;return bt(t,e),n={"==":"===","!=":"!==",of:"in"},s={"!==":"===","===":"!=="},t.prototype.children=["first","second"],t.prototype.isSimpleNumber=S,t.prototype.isUnary=function(){return!this.second},t.prototype.isComplex=function(){var e;return!(this.isUnary()&&("+"===(e=this.operator)||"-"===e))||this.first.isComplex()},t.prototype.isChainable=function(){var e;return"<"===(e=this.operator)||">"===e||">="===e||"<="===e||"==="===e||"!=="===e},t.prototype.invert=function(){var e,n,i,r,a;if(this.isChainable()&&this.first.isChainable()){for(e=!0,n=this;n&&n.operator;)e&&(e=n.operator in s),n=n.first;if(!e)return new _(this).invert();for(n=this;n&&n.operator;)n.invert=!n.invert,n.operator=s[n.operator],n=n.first;return this}return(r=s[this.operator])?(this.operator=r,this.first.unwrap()instanceof t&&this.first.invert(),this):this.second?new _(this).invert():"!"===this.operator&&(i=this.first.unwrap())instanceof t&&("!"===(a=i.operator)||"in"===a||"instanceof"===a)?i:new t("!",this)},t.prototype.unfoldSoak=function(e){var t;return("++"===(t=this.operator)||"--"===t||"delete"===t)&&ut(e,this,"first")},t.prototype.generateDo=function(e){var t,n,s,r,o,c,l,u;for(r=[],n=e instanceof i&&(o=e.value.unwrap())instanceof h?o:e,u=n.params||[],c=0,l=u.length;l>c;c++)s=u[c],s.value?(r.push(s.value),delete s.value):r.push(s);return t=new a(e,r),t["do"]=!0,t},t.prototype.compileNode=function(e){var t,n,i,s;if(n=this.isChainable()&&this.first.isChainable(),n||(this.first.front=this.front),"delete"===this.operator&&e.scope.check(this.first.unwrapAll().value))throw SyntaxError("delete operand may not be argument or var");if(("--"===(i=this.operator)||"++"===i)&&(s=this.first.unwrapAll().value,kt.call(M,s)>=0))throw SyntaxError("prefix increment/decrement may not have eval or arguments operand");return this.isUnary()?this.compileUnary(e):n?this.compileChain(e):"?"===this.operator?this.compileExistence(e):(t=[].concat(this.first.compileToFragments(e,C),this.makeCode(" "+this.operator+" "),this.second.compileToFragments(e,C)),C>=e.level?t:this.wrapInBraces(t))},t.prototype.compileChain=function(e){var t,n,i,s;return s=this.first.second.cache(e),this.first.second=s[0],i=s[1],n=this.first.compileToFragments(e,C),t=n.concat(this.makeCode(" "+(this.invert?"&&":"||")+" "),i.compileToFragments(e),this.makeCode(" "+this.operator+" "),this.second.compileToFragments(e,C)),this.wrapInBraces(t)},t.prototype.compileExistence=function(e){var t,n;return this.first.isComplex()?(n=new N(e.scope.freeVariable("ref")),t=new _(new i(n,this.first))):(t=this.first,n=t),new g(new p(t),n,{type:"if"}).addElse(this.second).compileToFragments(e)},t.prototype.compileUnary=function(e){var n,i,s;return i=[],n=this.operator,i.push([this.makeCode(n)]),"!"===n&&this.first instanceof p?(this.first.negated=!this.first.negated,this.first.compileToFragments(e)):e.level>=w?new _(this).compileToFragments(e):(s="+"===n||"-"===n,("new"===n||"typeof"===n||"delete"===n||s&&this.first instanceof t&&this.first.operator===n)&&i.push([this.makeCode(" ")]),(s&&this.first instanceof t||"new"===n&&this.first.isStatement(e))&&(this.first=new _(this.first)),i.push(this.first.compileToFragments(e,C)),this.flip&&i.reverse(),this.joinFragmentArrays(i,""))},t.prototype.toString=function(e){return t.__super__.toString.call(this,e,this.constructor.name+" "+this.operator)},t}(s),e.In=y=function(e){function t(e,t){this.object=e,this.array=t}return bt(t,e),t.prototype.children=["object","array"],t.prototype.invert=D,t.prototype.compileNode=function(e){var t,n,i,s,r;if(this.array instanceof K&&this.array.isArray()){for(r=this.array.base.objects,i=0,s=r.length;s>i;i++)if(n=r[i],n instanceof U){t=!0;break}if(!t)return this.compileOrTest(e)}return this.compileLoopTest(e)},t.prototype.compileOrTest=function(e){var t,n,i,s,r,a,o,c,h,l,u,p;if(0===this.array.base.objects.length)return[this.makeCode(""+!!this.negated)];for(l=this.object.cache(e,C),a=l[0],r=l[1],u=this.negated?[" !== "," && "]:[" === "," || "],t=u[0],n=u[1],o=[],p=this.array.base.objects,i=c=0,h=p.length;h>c;i=++c)s=p[i],i&&o.push(this.makeCode(n)),o=o.concat(i?r:a,this.makeCode(t),s.compileToFragments(e,w));return C>e.level?o:this.wrapInBraces(o)},t.prototype.compileLoopTest=function(e){var t,n,i,s;return s=this.object.cache(e,F),i=s[0],n=s[1],t=[].concat(this.makeCode(pt("indexOf")+".call("),this.array.compileToFragments(e,F),this.makeCode(", "),n,this.makeCode(") "+(this.negated?"< 0":">= 0"))),st(i)===st(n)?t:(t=i.concat(this.makeCode(", "),t),F>e.level?t:this.wrapInBraces(t))},t.prototype.toString=function(e){return t.__super__.toString.call(this,e,this.constructor.name+(this.negated?"!":""))},t}(s),e.Try=X=function(e){function t(e,t,n,i){this.attempt=e,this.error=t,this.recovery=n,this.ensure=i}return bt(t,e),t.prototype.children=["attempt","recovery","ensure"],t.prototype.isStatement=J,t.prototype.jumps=function(e){var t;return this.attempt.jumps(e)||(null!=(t=this.recovery)?t.jumps(e):void 0)},t.prototype.makeReturn=function(e){return this.attempt&&(this.attempt=this.attempt.makeReturn(e)),this.recovery&&(this.recovery=this.recovery.makeReturn(e)),this},t.prototype.compileNode=function(e){var t,n,s,r;return e.indent+=q,r=this.attempt.compileToFragments(e,E),t=function(){var t,n;if(this.recovery){if(("function"==typeof(t=this.error).isObject?t.isObject():void 0)&&(s=new N("_error"),this.recovery.unshift(new i(this.error,s)),this.error=s),n=this.error.value,kt.call(M,n)>=0)throw SyntaxError('catch variable may not be "'+this.error.value+'"');return e.scope.check(this.error.value)||e.scope.add(this.error.value,"param"),[].concat(this.makeCode(" catch ("),this.error.compileToFragments(e),this.makeCode(") {\n"),this.recovery.compileToFragments(e,E),this.makeCode("\n"+this.tab+"}"))}return this.ensure||this.recovery?[]:[this.makeCode(" catch (_error) {}")]}.call(this),n=this.ensure?[].concat(this.makeCode(" finally {\n"),this.ensure.compileToFragments(e,E),this.makeCode("\n"+this.tab+"}")):[],[].concat(this.makeCode(""+this.tab+"try {\n"),r,this.makeCode("\n"+this.tab+"}"),t,n)},t}(s),e.Throw=W=function(e){function t(e){this.expression=e}return bt(t,e),t.prototype.children=["expression"],t.prototype.isStatement=J,t.prototype.jumps=S,t.prototype.makeReturn=G,t.prototype.compileNode=function(e){return[].concat(this.makeCode(this.tab+"throw "),this.expression.compileToFragments(e),this.makeCode(";"))},t}(s),e.Existence=p=function(e){function t(e){this.expression=e}return bt(t,e),t.prototype.children=["expression"],t.prototype.invert=D,t.prototype.compileNode=function(e){var t,n,i,s;return this.expression.front=this.front,i=this.expression.compile(e,C),m.test(i)&&!e.scope.check(i)?(s=this.negated?["===","||"]:["!==","&&"],t=s[0],n=s[1],i="typeof "+i+" "+t+' "undefined" '+n+" "+i+" "+t+" null"):i=""+i+" "+(this.negated?"==":"!=")+" null",[this.makeCode(T>=e.level?i:"("+i+")")]},t}(s),e.Parens=_=function(e){function t(e){this.body=e}return bt(t,e),t.prototype.children=["body"],t.prototype.unwrap=function(){return this.body},t.prototype.isComplex=function(){return this.body.isComplex()},t.prototype.compileNode=function(e){var t,n,i;return n=this.body.unwrap(),n instanceof K&&n.isAtomic()?(n.front=this.front,n.compileToFragments(e)):(i=n.compileToFragments(e,L),t=C>e.level&&(n instanceof R||n instanceof a||n instanceof f&&n.returns),t?i:this.wrapInBraces(i))},t}(s),e.For=f=function(e){function t(e,t){var n;if(this.source=t.source,this.guard=t.guard,this.step=t.step,this.name=t.name,this.index=t.index,this.body=r.wrap([e]),this.own=!!t.own,this.object=!!t.object,this.object&&(n=[this.index,this.name],this.name=n[0],this.index=n[1]),this.index instanceof K)throw SyntaxError("index cannot be a pattern matching expression");if(this.range=this.source instanceof K&&this.source.base instanceof O&&!this.source.properties.length,this.pattern=this.name instanceof K,this.range&&this.index)throw SyntaxError("indexes do not apply to range loops");if(this.range&&this.pattern)throw SyntaxError("cannot pattern match over range loops");this.returns=!1}return bt(t,e),t.prototype.children=["body","source","guard","step"],t.prototype.compileNode=function(e){var t,n,s,a,o,c,h,l,u,p,d,f,b,k,y,v,w,T,C,L,x,D,S,A,R,I,$,O,M,V,P,U,H,G;return t=r.wrap([this.body]),T=null!=(H=rt(t.expressions))?H.jumps():void 0,T&&T instanceof j&&(this.returns=!1),$=this.range?this.source.base:this.source,I=e.scope,L=this.name&&this.name.compile(e,F),k=this.index&&this.index.compile(e,F),L&&!this.pattern&&I.find(L),k&&I.find(k),this.returns&&(R=I.freeVariable("results")),y=this.object&&k||I.freeVariable("i"),v=this.range&&L||k||y,w=v!==y?""+v+" = ":"",this.step&&!this.range&&(G=this.cacheToCodeFragments(this.step.cache(e,F)),O=G[0],V=G[1],M=V.match(B)),this.pattern&&(L=y),U="",d="",h="",f=this.tab+q,this.range?p=$.compileToFragments(ot(e,{index:y,name:L,step:this.step})):(P=this.source.compile(e,F),!L&&!this.own||m.test(P)||(h+=""+this.tab+(D=I.freeVariable("ref"))+" = "+P+";\n",P=D),L&&!this.pattern&&(x=""+L+" = "+P+"["+v+"]"),this.object||(O!==V&&(h+=""+this.tab+O+";\n"),this.step&&M&&(u=0>+M)||(C=I.freeVariable("len")),o=""+w+y+" = 0, "+C+" = "+P+".length",c=""+w+y+" = "+P+".length - 1",s=""+y+" < "+C,a=""+y+" >= 0",this.step?(M?u&&(s=a,o=c):(s=""+V+" > 0 ? "+s+" : "+a,o="("+V+" > 0 ? ("+o+") : "+c+")"),b=""+y+" += "+V):b=""+(v!==y?"++"+y:""+y+"++"),p=[this.makeCode(""+o+"; "+s+"; "+w+b)])),this.returns&&(S=""+this.tab+R+" = [];\n",A="\n"+this.tab+"return "+R+";",t.makeReturn(R)),this.guard&&(t.expressions.length>1?t.expressions.unshift(new g(new _(this.guard).invert(),new N("continue"))):this.guard&&(t=r.wrap([new g(this.guard,t)]))),this.pattern&&t.expressions.unshift(new i(this.name,new N(""+P+"["+v+"]"))),l=[].concat(this.makeCode(h),this.pluckDirectCall(e,t)),x&&(U="\n"+f+x+";"),this.object&&(p=[this.makeCode(""+v+" in "+P)],this.own&&(d="\n"+f+"if (!"+pt("hasProp")+".call("+P+", "+v+")) continue;")),n=t.compileToFragments(ot(e,{indent:f}),E),n&&n.length>0&&(n=[].concat(this.makeCode("\n"),n,this.makeCode("\n"))),[].concat(l,this.makeCode(""+(S||"")+this.tab+"for ("),p,this.makeCode(") {"+d+U),n,this.makeCode(""+this.tab+"}"+(A||"")))},t.prototype.pluckDirectCall=function(e,t){var n,s,r,o,c,l,u,p,d,f,m,b,k,g,y;for(s=[],f=t.expressions,c=p=0,d=f.length;d>p;c=++p)r=f[c],r=r.unwrapAll(),r instanceof a&&(u=r.variable.unwrapAll(),(u instanceof h||u instanceof K&&(null!=(m=u.base)?m.unwrapAll():void 0)instanceof h&&1===u.properties.length&&("call"===(b=null!=(k=u.properties[0].name)?k.value:void 0)||"apply"===b))&&(o=(null!=(g=u.base)?g.unwrapAll():void 0)||u,l=new N(e.scope.freeVariable("fn")),n=new K(l),u.base&&(y=[n,u],u.base=y[0],n=y[1]),t.expressions[c]=new a(n,r.args),s=s.concat(this.makeCode(this.tab),new i(l,o).compileToFragments(e,E),this.makeCode(";\n"))));return s},t}(z),e.Switch=H=function(e){function t(e,t,n){this.subject=e,this.cases=t,this.otherwise=n}return bt(t,e),t.prototype.children=["subject","cases","otherwise"],t.prototype.isStatement=J,t.prototype.jumps=function(e){var t,n,i,s,r,a,o;for(null==e&&(e={block:!0}),r=this.cases,i=0,s=r.length;s>i;i++)if(a=r[i],n=a[0],t=a[1],t.jumps(e))return t;return null!=(o=this.otherwise)?o.jumps(e):void 0},t.prototype.makeReturn=function(e){var t,n,i,s,a;for(s=this.cases,n=0,i=s.length;i>n;n++)t=s[n],t[1].makeReturn(e);return e&&(this.otherwise||(this.otherwise=new r([new N("void 0")]))),null!=(a=this.otherwise)&&a.makeReturn(e),this},t.prototype.compileNode=function(e){var t,n,i,s,r,a,o,c,h,l,u,p,d,f,m,b;for(c=e.indent+q,h=e.indent=c+q,a=[].concat(this.makeCode(this.tab+"switch ("),this.subject?this.subject.compileToFragments(e,L):this.makeCode("false"),this.makeCode(") {\n")),f=this.cases,o=l=0,p=f.length;p>l;o=++l){for(m=f[o],s=m[0],t=m[1],b=it([s]),u=0,d=b.length;d>u;u++)i=b[u],this.subject||(i=i.invert()),a=a.concat(this.makeCode(c+"case "),i.compileToFragments(e,L),this.makeCode(":\n"));if((n=t.compileToFragments(e,E)).length>0&&(a=a.concat(n,this.makeCode("\n"))),o===this.cases.length-1&&!this.otherwise)break;r=this.lastNonComment(t.expressions),r instanceof j||r instanceof N&&r.jumps()&&"debugger"!==r.value||a.push(i.makeCode(h+"break;\n"))}return this.otherwise&&this.otherwise.expressions.length&&a.push.apply(a,[this.makeCode(c+"default:\n")].concat(gt.call(this.otherwise.compileToFragments(e,E)),[this.makeCode("\n")])),a.push(this.makeCode(this.tab+"}")),a},t}(s),e.If=g=function(e){function t(e,t,n){this.body=t,null==n&&(n={}),this.condition="unless"===n.type?e.invert():e,this.elseBody=null,this.isChain=!1,this.soak=n.soak}return bt(t,e),t.prototype.children=["condition","body","elseBody"],t.prototype.bodyNode=function(){var e;return null!=(e=this.body)?e.unwrap():void 0},t.prototype.elseBodyNode=function(){var e;return null!=(e=this.elseBody)?e.unwrap():void 0},t.prototype.addElse=function(e){return this.isChain?this.elseBodyNode().addElse(e):(this.isChain=e instanceof t,this.elseBody=this.ensureBlock(e)),this},t.prototype.isStatement=function(e){var t;return(null!=e?e.level:void 0)===E||this.bodyNode().isStatement(e)||(null!=(t=this.elseBodyNode())?t.isStatement(e):void 0)},t.prototype.jumps=function(e){var t;return this.body.jumps(e)||(null!=(t=this.elseBody)?t.jumps(e):void 0)},t.prototype.compileNode=function(e){return this.isStatement(e)?this.compileStatement(e):this.compileExpression(e)},t.prototype.makeReturn=function(e){return e&&(this.elseBody||(this.elseBody=new r([new N("void 0")]))),this.body&&(this.body=new r([this.body.makeReturn(e)])),this.elseBody&&(this.elseBody=new r([this.elseBody.makeReturn(e)])),this},t.prototype.ensureBlock=function(e){return e instanceof r?e:new r([e])},t.prototype.compileStatement=function(e){var n,i,s,r,a,o,c;return s=et(e,"chainChild"),(a=et(e,"isExistentialEquals"))?new t(this.condition.invert(),this.elseBodyNode(),{type:"if"}).compileToFragments(e):(c=e.indent+q,r=this.condition.compileToFragments(e,L),i=this.ensureBlock(this.body).compileToFragments(ot(e,{indent:c})),o=[].concat(this.makeCode("if ("),r,this.makeCode(") {\n"),i,this.makeCode("\n"+this.tab+"}")),s||o.unshift(this.makeCode(this.tab)),this.elseBody?(n=o.concat(this.makeCode(" else ")),this.isChain?(e.chainChild=!0,n=n.concat(this.elseBody.unwrap().compileToFragments(e,E))):n=n.concat(this.makeCode("{\n"),this.elseBody.compileToFragments(ot(e,{indent:c}),E),this.makeCode("\n"+this.tab+"}")),n):o)},t.prototype.compileExpression=function(e){var t,n,i,s;return i=this.condition.compileToFragments(e,T),n=this.bodyNode().compileToFragments(e,F),t=this.elseBodyNode()?this.elseBodyNode().compileToFragments(e,F):[this.makeCode("void 0")],s=i.concat(this.makeCode(" ? "),n,this.makeCode(" : "),t),e.level>=T?this.wrapInBraces(s):s},t.prototype.unfoldSoak=function(){return this.soak&&this},t}(s),c={wrap:function(e,n,i){var s,o,c,l,u;if(e.jumps())return e;if(c=new h([],r.wrap([e])),s=[],(l=e.contains(this.literalArgs))||e.contains(this.literalThis)){if(l&&e.classBody)throw SyntaxError("Class bodies shouldn't reference arguments");u=new N(l?"apply":"call"),s=[new N("this")],l&&s.push(new N("arguments")),c=new K(c,[new t(u)])}return c.noReturn=i,o=new a(c,s),n?r.wrap([o]):o},literalArgs:function(e){return e instanceof N&&"arguments"===e.value&&!e.asKey},literalThis:function(e){return e instanceof N&&"this"===e.value&&!e.asKey||e instanceof h&&e.bound||e instanceof a&&e.isSuper}},ut=function(e,t,n){var i;if(i=t[n].unfoldSoak(e))return t[n]=i.body,i.body=new K(t),i},Y={"extends":function(){return"function(child, parent) { for (var key in parent) { if ("+pt("hasProp")+".call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }"},indexOf:function(){return"[].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }"},hasProp:function(){return"{}.hasOwnProperty"},slice:function(){return"[].slice"}},E=1,L=2,F=3,T=4,C=5,w=6,q=" ",b="[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*",m=RegExp("^"+b+"$"),B=/^[+-]?\d+$/,x=RegExp("^(?:("+b+")\\.prototype(?:\\.("+b+")|\\[(\"(?:[^\\\\\"\\r\\n]|\\\\.)*\"|'(?:[^\\\\'\\r\\n]|\\\\.)*')\\]|\\[(0x[\\da-fA-F]+|\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\]))|("+b+")$"),k=/^['"]/,pt=function(e){var t;return t="__"+e,V.root.assign(t,Y[e]()),t},ct=function(e,t){return e=e.replace(/\n/g,"$&"+t),e.replace(/\s+$/,"")}}).call(this)},require["./coffee-script"]=new function(){var e=this;(function(){var t,n,i,s,r,a,o,c,h,l,u,p,d,f,m,b={}.hasOwnProperty;if(r=require("fs"),l=require("path"),t=require("./lexer").Lexer,h=require("./parser").parser,a=require("./helpers"),p=require("vm"),u=require("./sourcemap"),c=function(e,t){var n,s;return n=r.readFileSync(t,"utf8"),s=65279===n.charCodeAt(0)?n.substring(1):n,e._compile(i(s,{filename:t,literate:a.isLiterate(t)}),t)},require.extensions)for(m=[".coffee",".litcoffee",".md",".coffee.md"],d=0,f=m.length;f>d;d++)s=m[d],require.extensions[s]=c;e.VERSION="1.6.0",e.helpers=require("./helpers"),n=function(e){var t;return t=l.extname(e),l.basename(e,t)},e.compile=i=function(t,i){var s,r,c,p,d,f,m,b,k,g,y,v,w,T;null==i&&(i={}),g=e.helpers.merge;try{for(i.sourceMap&&(r=l.basename(i.filename),k=n(i.filename)+".js",v=new u.SourceMap),f=h.parse(o.tokenize(t,i)).compileToFragments(i),p=0,c=0,b="",w=0,T=f.length;T>w;w++)d=f[w],v&&(d.locationData&&v.addMapping([d.locationData.first_line,d.locationData.first_column],[p,c],{noReplace:!0}),y=a.count(d.code,"\n"),p+=y,c=d.code.length-(y?d.code.lastIndexOf("\n"):0)),b+=d.code}catch(F){throw i.filename&&(F.message="In "+i.filename+", "+F.message),F}return i.header&&(m="Generated by CoffeeScript "+this.VERSION,b="// "+m+"\n"+b),i.sourceMap||i.returnObject?(s={js:b},v&&(s.sourceMap=v,s.v3SourceMap=u.generateV3SourceMap(v,r,k)),s):b},e.tokens=function(e,t){return o.tokenize(e,t)},e.nodes=function(e,t){return"string"==typeof e?h.parse(o.tokenize(e,t)):h.parse(e)},e.run=function(e,t){var n;return null==t&&(t={}),n=require.main,n.filename=process.argv[1]=t.filename?r.realpathSync(t.filename):".",n.moduleCache&&(n.moduleCache={}),n.paths=require("module")._nodeModulePaths(l.dirname(r.realpathSync(t.filename))),!a.isCoffee(n.filename)||require.extensions?n._compile(i(e,t),n.filename):n._compile(e,n.filename)},e.eval=function(e,t){var n,s,r,a,o,c,h,u,d,f,m,k,g,y;if(null==t&&(t={}),e=e.trim()){if(s=p.Script){if(null!=t.sandbox){if(t.sandbox instanceof s.createContext().constructor)h=t.sandbox;else{h=s.createContext(),k=t.sandbox;for(a in k)b.call(k,a)&&(u=k[a],h[a]=u)}h.global=h.root=h.GLOBAL=h}else h=global;if(h.__filename=t.filename||"eval",h.__dirname=l.dirname(h.__filename),h===global&&!h.module&&!h.require){for(n=require("module"),h.module=m=new n(t.modulename||"eval"),h.require=y=function(e){return n._load(e,m,!0)},m.filename=h.__filename,g=Object.getOwnPropertyNames(require),d=0,f=g.length;f>d;d++)c=g[d],"paths"!==c&&(y[c]=require[c]);y.paths=m.paths=n._nodeModulePaths(process.cwd()),y.resolve=function(e){return n._resolveFilename(e,m)}}}o={};for(a in t)b.call(t,a)&&(u=t[a],o[a]=u);return o.bare=!0,r=i(e,o),h===global?p.runInThisContext(r):p.runInContext(r,h)}},o=new t,h.lexer={lex:function(){var e,t;return t=this.tokens[this.pos++],t?(e=t[0],this.yytext=t[1],this.yylloc=t[2],this.yylineno=this.yylloc.first_line):e="",e},setInput:function(e){return this.tokens=e,this.pos=0},upcomingInput:function(){return""}},h.yy=require("./nodes")}).call(this)},require["./browser"]=new function(){var exports=this;(function(){var CoffeeScript,runScripts,__indexOf=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1};CoffeeScript=require("./coffee-script"),CoffeeScript.require=require,CoffeeScript.eval=function(code,options){var _ref;return null==options&&(options={}),null==(_ref=options.bare)&&(options.bare=!0),eval(CoffeeScript.compile(code,options))},CoffeeScript.run=function(e,t){return null==t&&(t={}),t.bare=!0,Function(CoffeeScript.compile(e,t))()},"undefined"!=typeof window&&null!==window&&(CoffeeScript.load=function(e,t,n){var i;return null==n&&(n={}),i=window.ActiveXObject?new window.ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest,i.open("GET",e,!0),"overrideMimeType"in i&&i.overrideMimeType("text/plain"),i.onreadystatechange=function(){var s;if(4===i.readyState){if(0!==(s=i.status)&&200!==s)throw Error("Could not load "+e);if(CoffeeScript.run(i.responseText,n),t)return t()}},i.send(null)},runScripts=function(){var e,t,n,i,s,r,a;return a=document.getElementsByTagName("script"),t=["text/coffeescript","text/literate-coffeescript"],e=function(){var e,n,i,s;for(s=[],e=0,n=a.length;n>e;e++)r=a[e],i=r.type,__indexOf.call(t,i)>=0&&s.push(r);return s}(),i=0,s=e.length,(n=function(){var s,r,a;return a=e[i++],s=null!=a?a.type:void 0,__indexOf.call(t,s)>=0?(r={literate:"text/literate-coffeescript"===s},a.src?CoffeeScript.load(a.src,n,r):(CoffeeScript.run(a.innerHTML,r),n())):void 0})(),null},window.addEventListener?addEventListener("DOMContentLoaded",runScripts,!1):attachEvent("onload",runScripts))}).call(this)},require["./coffee-script"]}();"function"==typeof define&&define.amd?define(function(){return CoffeeScript}):root.CoffeeScript=CoffeeScript})(this); \ No newline at end of file diff --git a/index.html b/index.html index cff2e2e6..73ef7007 100644 --- a/index.html +++ b/index.html @@ -28,7 +28,7 @@ Literate CoffeeScript Language Reference Literals: Functions, Objects and Arrays - Lexical Scoping and Variable Safety + Lexical Scoping and Variable Safety If, Else, Unless, and Conditional Assignment Splats... Loops and Comprehensions @@ -37,13 +37,14 @@ Operators and Aliases Classes, Inheritance, and Super Destructuring Assignment - Function Binding + Function Binding Embedded JavaScript Switch and Try/Catch Chained Comparisons String Interpolation, Block Strings, and Block Comments Block Regular Expressions Cake, and Cakefiles + Source Maps "text/coffeescript" Script Tags Books, Screencasts, Examples and Resources Change Log @@ -86,6 +87,7 @@ "coffee" Command-Line Utility — src/command Option Parsing — src/optparse Interactive REPL — src/repl + Source Maps — src/sourcemap

@@ -114,9 +116,12 @@

Latest Version: - 1.5.0 + 1.6.0

+
+sudo npm install -g coffee-script
+

Overview @@ -311,6 +316,13 @@ sudo bin/cake install of the same name.

+ + + + @@ -476,8 +488,9 @@ Expressions

I'm fairly excited about this direction for the language, and am looking forward to writing (and more importantly, reading) more programs in this style. - As 1.5.0 is the first version of CoffeeScript that supports it, let us know - if you have any ideas for improving the feature. + More information about Literate CoffeeScript, including an + example program, + are available in this blog post.

@@ -667,7 +680,7 @@ log object.class
load

- + Lexical Scoping and Variable Safety The CoffeeScript compiler takes care to make sure that all of your variables are properly declared within lexical scope — you never need to write @@ -1519,7 +1532,7 @@ Snake = (function(_sup __extends(Snake, _super); function Snake() { - Snake.__super__.constructor.apply(this, arguments); + return Snake.__super__.constructor.apply(this, arguments); } Snake.prototype.move = function() { @@ -1536,7 +1549,7 @@ Horse = (function(_sup __extends(Horse, _super); function Horse() { - Horse.__super__.constructor.apply(this, arguments); + return Horse.__super__.constructor.apply(this, arguments); } Horse.prototype.move = function() { @@ -1578,7 +1591,7 @@ Snake = (function(_super) { __extends(Snake, _super); function Snake() { - Snake.__super__.constructor.apply(this, arguments); + return Snake.__super__.constructor.apply(this, arguments); } Snake.prototype.move = function() { @@ -1595,7 +1608,7 @@ Horse = (function(_super) { __extends(Horse, _super); function Horse() { - Horse.__super__.constructor.apply(this, arguments); + return Horse.__super__.constructor.apply(this, arguments); } Horse.prototype.move = function() { @@ -1776,7 +1789,7 @@ _ref = tag.split(""), open = _ref[0], contents = 3 <= _ref.length ? __slice.call ;alert(contents.join(""));'>run: contents.join("")

- + Function binding In JavaScript, the this keyword is dynamically scoped to mean the object that the current function is attached to. If you pass a function as @@ -2025,18 +2038,18 @@ html = "\n cup of coffeescript\n"; are preserved in the generated code.

###
-CoffeeScript Compiler v1.5.0
+CoffeeScript Compiler v1.6.0
 Released under the MIT License
 ###
 
 
 
/*
-CoffeeScript Compiler v1.5.0
+CoffeeScript Compiler v1.6.0
 Released under the MIT License
 */
 
 
-
load

+
load

@@ -2120,6 +2133,26 @@ task('build:parser + Source Maps +

+ +

+ CoffeeScript 1.6.0 and above include support for generating source maps, + a way to tell your JavaScript engine what part of your CoffeeScript + program matches up with the code being evaluated. Browsers that support it + can automatically use source maps to show your original source code + in the debugger. To generate source maps alongside your JavaScript files, + pass the --map or -m flag to the compiler. +

+ +

+ For a full introduction to source maps, how they work, and how to hook + them up in your browser, read the + HTML5 Tutorial. +

+

"text/coffeescript" Script Tags @@ -2329,6 +2362,35 @@ task('build:parser + 1.6.0 + March 5, 2013 + +
    +
  • + First release of source maps. Pass the + --map flag to the compiler, and off you go. Direct all your + thanks over to Jason Walton. +
  • +
  • + Fixed a 1.5.0 regression with multiple implicit calls against an + indented implicit object. Combinations of implicit function calls + and implicit objects should generally be parsed better now — + but it still isn't good style to nest them too heavily. +
  • +
  • + .coffee.md is now also supported as a Literate CoffeeScript + file extension, for existing tooling. + .litcoffee remains the canonical one. +
  • +
  • + Several minor fixes surrounding member properties, bound methods and + super in class declarations. +
  • +
+

+

1.5.0 diff --git a/lib/coffee-script/browser.js b/lib/coffee-script/browser.js index 3b51fee2..338e836d 100644 --- a/lib/coffee-script/browser.js +++ b/lib/coffee-script/browser.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 (function() { var CoffeeScript, runScripts, __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; diff --git a/lib/coffee-script/cake.js b/lib/coffee-script/cake.js index afa53ca3..86d13373 100644 --- a/lib/coffee-script/cake.js +++ b/lib/coffee-script/cake.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 (function() { var CoffeeScript, cakefileDirectory, existsSync, fatalError, fs, helpers, missingTask, oparse, options, optparse, path, printTasks, switches, tasks; diff --git a/lib/coffee-script/coffee-script.js b/lib/coffee-script/coffee-script.js index b1c51bfc..24e90267 100644 --- a/lib/coffee-script/coffee-script.js +++ b/lib/coffee-script/coffee-script.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 (function() { var Lexer, baseFileName, compile, ext, fs, helpers, lexer, loadFile, parser, path, sourcemap, vm, _i, _len, _ref, __hasProp = {}.hasOwnProperty; @@ -35,7 +35,7 @@ } } - exports.VERSION = '1.5.0'; + exports.VERSION = '1.6.0'; exports.helpers = require('./helpers'); diff --git a/lib/coffee-script/command.js b/lib/coffee-script/command.js index 54f8a6a5..6d566d86 100644 --- a/lib/coffee-script/command.js +++ b/lib/coffee-script/command.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 (function() { var BANNER, CoffeeScript, EventEmitter, SWITCHES, compileJoin, compileOptions, compilePath, compileScript, compileStdio, exec, exists, forkNode, fs, helpers, hidden, joinTimeout, lint, notSources, optionParser, optparse, opts, outputPath, parseOptions, path, printLine, printTokens, printWarn, removeSource, sourceCode, sources, spawn, timeLog, unwatchDir, usage, version, wait, watch, watchDir, watchers, writeJs, _ref; diff --git a/lib/coffee-script/grammar.js b/lib/coffee-script/grammar.js index 9ec53bf2..323bf138 100644 --- a/lib/coffee-script/grammar.js +++ b/lib/coffee-script/grammar.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 (function() { var Parser, alt, alternatives, grammar, name, o, operators, token, tokens, unwrap; diff --git a/lib/coffee-script/helpers.js b/lib/coffee-script/helpers.js index 08ef7ee8..10f5e352 100644 --- a/lib/coffee-script/helpers.js +++ b/lib/coffee-script/helpers.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 (function() { var buildLocationData, extend, flatten, _ref; diff --git a/lib/coffee-script/index.js b/lib/coffee-script/index.js index 8f382c57..6bc76f2e 100644 --- a/lib/coffee-script/index.js +++ b/lib/coffee-script/index.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 (function() { var key, val, _ref; diff --git a/lib/coffee-script/lexer.js b/lib/coffee-script/lexer.js index 72f4dcf0..53a76ad5 100644 --- a/lib/coffee-script/lexer.js +++ b/lib/coffee-script/lexer.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 (function() { var BOM, BOOL, CALLABLE, CODE, COFFEE_ALIASES, COFFEE_ALIAS_MAP, COFFEE_KEYWORDS, COMMENT, COMPARE, COMPOUND_ASSIGN, HEREDOC, HEREDOC_ILLEGAL, HEREDOC_INDENT, HEREGEX, HEREGEX_OMIT, IDENTIFIER, INDEXABLE, INVERSES, JSTOKEN, JS_FORBIDDEN, JS_KEYWORDS, LINE_BREAK, LINE_CONTINUER, LITERATE, LOGIC, Lexer, MATH, MULTILINER, MULTI_DENT, NOT_REGEX, NOT_SPACED_REGEX, NUMBER, OPERATOR, REGEX, RELATION, RESERVED, Rewriter, SHIFT, SIMPLESTR, STRICT_PROSCRIBED, TRAILING_SPACES, UNARY, WHITESPACE, compact, count, key, last, locationDataToString, starts, _ref, _ref1, __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; diff --git a/lib/coffee-script/nodes.js b/lib/coffee-script/nodes.js index ba66e4a3..2e3a8fe5 100644 --- a/lib/coffee-script/nodes.js +++ b/lib/coffee-script/nodes.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 (function() { var Access, Arr, Assign, Base, Block, Call, Class, Closure, Code, CodeFragment, Comment, Existence, Extends, For, IDENTIFIER, IDENTIFIER_STR, IS_STRING, If, In, Index, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, METHOD_DEF, NEGATE, NO, Obj, Op, Param, Parens, RESERVED, Range, Return, SIMPLENUM, STRICT_PROSCRIBED, Scope, Slice, Splat, Switch, TAB, THIS, Throw, Try, UTILITIES, Value, While, YES, addLocationDataFn, compact, del, ends, extend, flatten, fragmentsToText, last, locationDataToString, merge, multident, some, starts, unfoldSoak, utility, _ref, _ref1, __hasProp = {}.hasOwnProperty, diff --git a/lib/coffee-script/optparse.js b/lib/coffee-script/optparse.js index a3390cc5..f52b5134 100644 --- a/lib/coffee-script/optparse.js +++ b/lib/coffee-script/optparse.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 (function() { var LONG_FLAG, MULTI_FLAG, OPTIONAL, OptionParser, SHORT_FLAG, buildRule, buildRules, normalizeArguments; diff --git a/lib/coffee-script/repl.js b/lib/coffee-script/repl.js index 27876937..e9e771cf 100644 --- a/lib/coffee-script/repl.js +++ b/lib/coffee-script/repl.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 (function() { var CoffeeScript, addMultilineHandler, merge, nodeREPL, replDefaults, vm; diff --git a/lib/coffee-script/rewriter.js b/lib/coffee-script/rewriter.js index e40b3d8c..e226222d 100644 --- a/lib/coffee-script/rewriter.js +++ b/lib/coffee-script/rewriter.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 (function() { var BALANCED_PAIRS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_BLOCK, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, SINGLE_CLOSERS, SINGLE_LINERS, generate, left, rite, _i, _len, _ref, __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }, diff --git a/lib/coffee-script/scope.js b/lib/coffee-script/scope.js index 7b741bea..a51c3698 100644 --- a/lib/coffee-script/scope.js +++ b/lib/coffee-script/scope.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 (function() { var Scope, extend, last, _ref; diff --git a/lib/coffee-script/sourcemap.js b/lib/coffee-script/sourcemap.js index b980565d..a7656ef9 100644 --- a/lib/coffee-script/sourcemap.js +++ b/lib/coffee-script/sourcemap.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.5.0 +// Generated by CoffeeScript 1.6.0 (function() { var BASE64_CHARS, LineMapping, MAX_BASE64_VALUE, VLQ_CONTINUATION_BIT, VLQ_SHIFT, VLQ_VALUE_MASK, decodeBase64Char, encodeBase64Char; diff --git a/package.json b/package.json index 4e9da41d..f4044a3c 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "Unfancy JavaScript", "keywords": ["javascript", "language", "coffeescript", "compiler"], "author": "Jeremy Ashkenas", - "version": "1.5.0", + "version": "1.6.0", "licenses": [{ "type": "MIT", "url": "https://raw.github.com/jashkenas/coffee-script/master/LICENSE" diff --git a/src/coffee-script.coffee b/src/coffee-script.coffee index 16ee5c81..60cfd82a 100644 --- a/src/coffee-script.coffee +++ b/src/coffee-script.coffee @@ -25,7 +25,7 @@ if require.extensions require.extensions[ext] = loadFile # The current CoffeeScript version number. -exports.VERSION = '1.5.0' +exports.VERSION = '1.6.0' # Expose helpers for testing. exports.helpers = require './helpers' diff --git a/test/sourcemap.coffee b/test/sourcemap.coffee index af8af78a..2770fb6c 100644 --- a/test/sourcemap.coffee +++ b/test/sourcemap.coffee @@ -1,3 +1,5 @@ +return if global.testingBrowser + sourcemap = require '../src/sourcemap' vlqEncodedValues = [

rewriter.coffee

The CoffeeScript language has a good deal of optional syntax, implicit syntax, + rewriter.coffee

rewriter.coffee

The CoffeeScript language has a good deal of optional syntax, implicit syntax, and shorthand syntax. This can greatly complicate a grammar and bloat the resulting parse table. Instead of making the parser handle it all, we take a series of passes over the token stream, using this Rewriter to convert shorthand into the unambiguous long form, add implicit indentation and -parentheses, and generally clean things up.

The Rewriter class is used by the Lexer, directly against -its internal array of tokens.

class exports.Rewriter

Helpful snippet for debugging: - console.log (t[0] + '/' + t[1] for t in @tokens).join ' '

Rewrite the token stream in multiple passes, one logical filter at +parentheses, and generally clean things up.

Create a generated token: one that exists due to a use of implicit syntax.

generate = (tag, value) ->
+    tok = [tag, value]
+    tok.generated = yes
+    tok

The Rewriter class is used by the Lexer, directly against +its internal array of tokens.

class exports.Rewriter

Helpful snippet for debugging: + console.log (t[0] + '/' + t[1] for t in @tokens).join ' '

Rewrite the token stream in multiple passes, one logical filter at a time. This could certainly be changed into a single pass through the stream, with a big ol' efficient switch, but it's much nicer to work with like this. The order of these passes matters -- indentation must be @@ -16,10 +19,9 @@ corrected before implicit parentheses can be wrapped around blocks of code.

@closeOpenIndexes() @addImplicitIndentation() @tagPostfixConditionals() - @addImplicitBraces() - @addImplicitParentheses() + @addImplicitBracesAndParens() @addLocationDataToGeneratedTokens() - @tokens

Rewrite the token stream, looking one token ahead and behind. + @tokens

Rewrite the token stream, looking one token ahead and behind. Allow the return value of the block to tell us how many tokens to move forwards (or backwards) in the stream, to make sure we don't miss anything as tokens are inserted and removed, and the stream changes length under @@ -40,18 +42,17 @@ our feet.

else if token[0] in EXPRESSION_END levels -= 1 i += 1 - i - 1

Leading newlines would introduce an ambiguity in the grammar, so we + i - 1

Leading newlines would introduce an ambiguity in the grammar, so we dispatch them here.

  removeLeadingNewlines: ->
     break for [tag], i in @tokens when tag isnt 'TERMINATOR'
-    @tokens.splice 0, i if i

Some blocks occur in the middle of expressions -- when we're expecting + @tokens.splice 0, i if i

Some blocks occur in the middle of expressions -- when we're expecting this, remove their trailing newlines.

  removeMidExpressionNewlines: ->
     @scanTokens (token, i, tokens) ->
       return 1 unless token[0] is 'TERMINATOR' and @tag(i + 1) in EXPRESSION_CLOSE
       tokens.splice i, 1
-      0

The lexer has tagged the opening parenthesis of a method call. Match it with + 0

The lexer has tagged the opening parenthesis of a method call. Match it with its paired close. We have the mis-nested outdent case included here for calls that close on the same line, just before their outdent.

  closeOpenCalls: ->
-
     condition = (token, i) ->
       token[0] in [')', 'CALL_END'] or
       token[0] is 'OUTDENT' and @tag(i - 1) is ')'
@@ -61,9 +62,8 @@ calls that close on the same line, just before their outdent.

@scanTokens (token, i) -> @detectEnd i + 1, condition, action if token[0] is 'CALL_START' - 1

The lexer has tagged the opening parenthesis of an indexing operation call. + 1

The lexer has tagged the opening parenthesis of an indexing operation call. Match it with its paired close.

  closeOpenIndexes: ->
-
     condition = (token, i) ->
       token[0] in [']', 'INDEX_END']
 
@@ -72,114 +72,176 @@ Match it with its paired close.

@scanTokens (token, i) -> @detectEnd i + 1, condition, action if token[0] is 'INDEX_START' - 1

Object literals may be written with implicit braces, for simple cases. -Insert the missing braces here, so that the parser doesn't have to.

  addImplicitBraces: ->
-
-    stack       = []
-    start       = null
-    startsLine  = null
-    sameLine    = yes
-    startIndent = 0
-    startIndex  = 0
-
-    condition = (token, i) ->
-      [one, two, three] = @tokens[i + 1 .. i + 3]
-      return no if 'HERECOMMENT' is one?[0]
-      [tag] = token
-      sameLine = no if tag in LINEBREAKS
-      return (
-        (tag in ['TERMINATOR', 'OUTDENT'] or
-          (tag in IMPLICIT_END and sameLine and not (i - startIndex is 1))) and
-        ((!startsLine and @tag(i - 1) isnt ',') or
-          not (two?[0] is ':' or one?[0] is '@' and three?[0] is ':'))) or
-        (tag is ',' and one and
-          one[0] not in ['IDENTIFIER', 'NUMBER', 'STRING', '@', 'TERMINATOR', 'OUTDENT']
-      )
-
-    action = (token, i) ->
-      tok = @generate '}', '}'
-      @tokens.splice i, 0, tok
+      1

Match tags in token stream starting at i with pattern, skipping HERECOMMENTs +Pattern may consist of strings (equality), an array of strings (one of) +or null (wildcard)

  matchTags: (i, pattern...) ->
+    fuzz = 0
+    for j in [0 ... pattern.length]
+      fuzz += 2 while @tag(i + j + fuzz) is 'HERECOMMENT'
+      continue if not pattern[j]?
+      pattern[j] = [pattern[j]] if typeof pattern[j] is 'string'
+      return no if @tag(i + j + fuzz) not in pattern[j]
+    yes

yes iff standing in front of something looking like +@: or :, skipping over 'HERECOMMENT's

  looksObjectish: (j) ->
+    @matchTags(j, '@', null, ':') or @matchTags(j, null, ':')

yes iff current line of tokens contain an element of tags on same +expression level. Stop searching at LINEBREAKS or explicit start of +containing balanced expression.

  findTagsBackwards: (i, tags) ->
+    backStack = []
+    while i >= 0 and (backStack.length or
+          @tag(i) not in tags and
+          (@tag(i) not in EXPRESSION_START or @tokens[i].generated) and
+          @tag(i) not in LINEBREAKS)
+      backStack.push @tag(i) if @tag(i) in EXPRESSION_END
+      backStack.pop() if @tag(i) in EXPRESSION_START and backStack.length
+      i -= 1
+    @tag(i) in tags

Look for signs of implicit calls and objects in the token stream and +add them.

  addImplicitBracesAndParens: ->

Track current balancing depth (both implicit and explicit) on stack.

    stack = []
 
     @scanTokens (token, i, tokens) ->
-      if (tag = token[0]) in EXPRESSION_START
-        stack.push [(if tag is 'INDENT' and @tag(i - 1) is '{' then '{' else tag), i]
-        return 1
-      if tag in EXPRESSION_END
-        start = stack.pop()
-        return 1
-      return 1 unless tag is ':' and
-        ((ago = @tag i - 2) is ':' or stack[stack.length - 1]?[0] isnt '{')
-      sameLine = yes
-      startIndex = i + 1
-      stack.push ['{']
-      idx =  if ago is '@' then i - 2 else i - 1
-      idx -= 2 while @tag(idx - 2) is 'HERECOMMENT'
-      prevTag = @tag(idx - 1)
-      startsLine = not prevTag or (prevTag in LINEBREAKS)
-      value = new String('{')
-      value.generated = yes
-      tok = @generate '{', value
-      tokens.splice idx, 0, tok
-      @detectEnd i + 2, condition, action
-      2

Methods may be optionally called without parentheses, for simple cases. -Insert the implicit parentheses here, so that the parser doesn't have to -deal with them.

  addImplicitParentheses: ->
+      [tag]     = token
+      [prevTag] = if i > 0 then tokens[i - 1] else []
+      [nextTag] = if i < tokens.length - 1 then tokens[i + 1] else []
+      stackTop  = -> stack[stack.length - 1]
+      startIdx  = i

Helper function, used for keeping track of the number of tokens consumed +and spliced, when returning for getting a new token.

      forward   = (n) -> i - startIdx + n

Helper functions

      inImplicit        = -> stackTop()?[2]?.ours
+      inImplicitCall    = -> inImplicit() and stackTop()?[0] is '('
+      inImplicitObject  = -> inImplicit() and stackTop()?[0] is '{'

Unclosed control statement inside implicit parens (like +class declaration or if-conditionals)

      inImplicitControl = -> inImplicit and stackTop()?[0] is 'CONTROL'
 
-    noCall = seenSingle = seenControl = no
-    callIndex = null
+      startImplicitCall = (j) ->
+        idx = j ? i
+        stack.push ['(', idx, ours: yes]
+        tokens.splice idx, 0, generate 'CALL_START', '('
+        i += 1 if not j?
 
-    condition = (token, i) ->
-      [tag] = token
-      return yes if not seenSingle and token.fromThen
-      seenSingle  = yes if tag in ['IF', 'ELSE', 'CATCH', '->', '=>', 'CLASS']
-      seenControl = yes if tag in ['IF', 'ELSE', 'SWITCH', 'TRY', '=']
-      return yes if tag in ['.', '?.', '::'] and @tag(i - 1) is 'OUTDENT'
-      not token.generated and @tag(i - 1) isnt ',' and (tag in IMPLICIT_END or
-        (tag is 'INDENT' and not seenControl)) and
-        (tag isnt 'INDENT' or
-          (@tag(i - 2) not in ['CLASS', 'EXTENDS'] and @tag(i - 1) not in IMPLICIT_BLOCK and
-          not (callIndex is i - 1 and (post = @tokens[i + 1]) and post.generated and post[0] is '{')))
+      endImplicitCall = ->
+        stack.pop()
+        tokens.splice i, 0, generate 'CALL_END', ')'
+        i += 1
 
-    action = (token, i) ->
-      @tokens.splice i, 0, @generate 'CALL_END', ')'
+      startImplicitObject = (j, startsLine = yes) ->
+        idx = j ? i
+        stack.push ['{', idx, sameLine: yes, startsLine: startsLine, ours: yes]
+        tokens.splice idx, 0, generate '{', generate(new String('{'))
+        i += 1 if not j?
 
+      endImplicitObject = (j) ->
+        j = j ? i
+        stack.pop()
+        tokens.splice j, 0, generate '}', '}'
+        i += 1

Don't end an implicit call on next indent if any of these are in an argument

      if inImplicitCall() and tag in ['IF', 'TRY', 'FINALLY', 'CATCH',
+        'CLASS', 'SWITCH']
+        stack.push ['CONTROL', i, ours: true]
+        return forward(1)
+
+      if tag is 'INDENT' and inImplicit()

An INDENT closes an implicit call unless +1. We have seen a CONTROL argument on the line. +2. The last token before the indent is part of the list below

        if prevTag not in ['=>', '->', '[', '(', ',', '{', 'TRY', 'ELSE', '=']
+          endImplicitCall() while inImplicitCall()
+        stack.pop() if inImplicitControl()
+        stack.push [tag, i]
+        return forward(1)

Straightforward start of explicit expression

      if tag in EXPRESSION_START
+        stack.push [tag, i]
+        return forward(1)

Close all implicit expressions inside of explicitly closed expressions.

      if tag in EXPRESSION_END
+        while inImplicit()
+          if inImplicitCall()
+            endImplicitCall()
+          else if inImplicitObject()
+            endImplicitObject()
+          else
+            stack.pop()
+        stack.pop()

Recognize standard implicit calls like +f a, f() b, f? c, h[0] d etc.

      if (tag in IMPLICIT_FUNC and token.spaced or
+          tag is '?' and i > 0 and not tokens[i - 1].spaced) and
+         (nextTag in IMPLICIT_CALL or
+          nextTag in IMPLICIT_UNSPACED_CALL and
+          not tokens[i + 1]?.spaced and not tokens[i + 1]?.newLine)
+        tag = token[0] = 'FUNC_EXIST' if tag is '?'
+        startImplicitCall i + 1
+        return forward(2)

Implicit call taking an implicit indented object as first argument. +f + a: b + c: d +and +f + 1 + a: b + b: c +Don't accept implicit calls of this type, when on the same line +as the control strucutures below as that may misinterpret constructs like: +if f + a: 1 +as +if f(a: 1) +which is probably always unintended. +Furthermore don't allow this in literal arrays, as +that creates grammatical ambiguities.

      if @matchTags(i, IMPLICIT_FUNC, 'INDENT', null, ':') and
+         not @findTagsBackwards(i, ['CLASS', 'EXTENDS', 'IF', 'CATCH',
+          'SWITCH', 'LEADING_WHEN', 'FOR', 'WHILE', 'UNTIL'])
+        startImplicitCall i + 1
+        stack.push ['INDENT', i + 2]
+        return forward(3)

Implicit objects start here

      if tag is ':'

Go back to the (implicit) start of the object

        if @tag(i - 2) is '@' then s = i - 2 else s = i - 1
+        s -= 2 while @tag(s - 2) is 'HERECOMMENT'
+
+        startsLine = s is 0 or @tag(s - 1) in LINEBREAKS or tokens[s - 1].newLine

Are we just continuing an already declared object?

        if stackTop()
+          [stackTag, stackIdx] = stackTop()
+          if (stackTag is '{' or stackTag is 'INDENT' and @tag(stackIdx - 1) is '{') and
+             (startsLine or @tag(s - 1) is ',' or @tag(s - 1) is '{')
+            return forward(1)
+
+        startImplicitObject(s, !!startsLine)
+        return forward(2)

End implicit calls when chaining method calls +like e.g.: +f -> + a +.g b, -> + c +.h a

      if prevTag is 'OUTDENT' and inImplicitCall() and tag in ['.', '?.', '::', '?::']
+        endImplicitCall()
+        return forward(1)
+
+      stackTop()[2].sameLine = no if inImplicitObject() and tag in LINEBREAKS
+
+      if tag in IMPLICIT_END
+        while inImplicit()
+          [stackTag, stackIdx, {sameLine, startsLine}] = stackTop()

Close implicit calls when reached end of argument list

          if inImplicitCall() and prevTag isnt ','
+            endImplicitCall()

Close implicit objects such as: +return a: 1, b: 2 unless true

          else if inImplicitObject() and sameLine and not startsLine
+            endImplicitObject()

Close implicit objects when at end of line, line didn't end with a comma +and the implicit object didn't start the line or the next line doesn't look like +the continuation of an object.

          else if inImplicitObject() and tag is 'TERMINATOR' and prevTag isnt ',' and
+                  not (startsLine and @looksObjectish(i + 1))
+            endImplicitObject()
+          else
+            break

Close implicit object if comma is the last character +and what comes after doesn't look like it belongs. +This is used for trailing commas and calls, like: +x = + a: b, + c: d, +e = 2

+ +

and

+ +

f a, b: c, d: e, f, g: h: i, j

      if tag is ',' and not @looksObjectish(i + 1) and inImplicitObject() and
+         (nextTag isnt 'TERMINATOR' or not @looksObjectish(i + 2))

When nextTag is OUTDENT the comma is insignificant and +should just be ignored so embed it in the implicit object.

+ +

When it isn't the comma go on to play a role in a call or +array further up the stack, so give it a chance.

        offset = if nextTag is 'OUTDENT' then 1 else 0
+        while inImplicitObject()
+          endImplicitObject i + offset
+      return forward(1)

Add location data to all tokens generated by the rewriter.

  addLocationDataToGeneratedTokens: ->
     @scanTokens (token, i, tokens) ->
-      tag     = token[0]
-      noCall  = yes if tag in ['CLASS', 'IF', 'FOR', 'WHILE']
-      [prev, current, next] = tokens[i - 1 .. i + 1]
-      callObject  = not noCall and tag is 'INDENT' and
-                    next and next.generated and next[0] is '{' and
-                    prev and prev[0] in IMPLICIT_FUNC
-      seenSingle  = no
-      seenControl = no
-      noCall      = no if tag in LINEBREAKS
-      token.call  = yes if prev and not prev.spaced and tag is '?'
-      return 1 if token.fromThen
-      return 1 unless callObject or
-        prev?.spaced and (prev.call or prev[0] in IMPLICIT_FUNC) and
-        (tag in IMPLICIT_CALL or not (token.spaced or token.newLine) and tag in IMPLICIT_UNSPACED_CALL)
-        callIndex = i
-      tokens.splice i, 0, @generate 'CALL_START', '(', token[2]
-      @detectEnd i + 1, condition, action
-      prev[0] = 'FUNC_EXIST' if prev[0] is '?'
-      2

Add location data to all tokens generated by the rewriter.

  addLocationDataToGeneratedTokens: ->
-    @scanTokens (token, i, tokens) ->
-      tag = token[0]
-      if (token.generated or token.explicit) and (not token[2])
-        if i > 0
-          prevToken = tokens[i-1]
-          token[2] =
-            first_line: prevToken[2].last_line
-            first_column: prevToken[2].last_column
-            last_line: prevToken[2].last_line
-            last_column: prevToken[2].last_column
-        else
-          token[2] =
-            first_line: 0
-            first_column: 0
-            last_line: 0
-            last_column: 0
-      return 1

Because our grammar is LALR(1), it can't handle some single-line + return 1 if token[2] + return 1 unless token.generated or token.explicit + {last_line, last_column} = tokens[i - 1]?[2] ? last_line: 0, last_column: 0 + token[2] = + first_line: last_line + first_column: last_column + last_line: last_line + last_column: last_column + 1

Because our grammar is LALR(1), it can't handle some single-line expressions that lack ending delimiters. The Rewriter adds the implicit blocks, so it doesn't need to. ')' can close a single-line block, but we need to make sure it's balanced.

  addImplicitIndentation: ->
@@ -212,7 +274,7 @@ but we need to make sure it's balanced.

@detectEnd i + 2, condition, action tokens.splice i, 1 if tag is 'THEN' return 1 - return 1

Tag postfix conditionals as such, so that we can parse them with a + return 1

Tag postfix conditionals as such, so that we can parse them with a different precedence.

  tagPostfixConditionals: ->
 
     original = null
@@ -228,15 +290,14 @@ different precedence.

return 1 unless token[0] is 'IF' original = token @detectEnd i + 1, condition, action - 1

Generate the indentation tokens, based on another token on the same line.

  indentation: (token, implicit = no) ->
+      1

Generate the indentation tokens, based on another token on the same line.

  indentation: (token, implicit = no) ->
     indent  = ['INDENT', 2]
     outdent = ['OUTDENT', 2]
     indent.generated = outdent.generated = yes if implicit
     indent.explicit = outdent.explicit = yes if not implicit
-    [indent, outdent]

Create a generated token: one that exists due to a use of implicit syntax.

  generate: (tag, value) ->
-    tok = [tag, value]
-    tok.generated = yes
-    tok

Look up a tag by token index.

  tag: (i) -> @tokens[i]?[0]

Constants

List of the token pairs that must be balanced.

BALANCED_PAIRS = [
+    [indent, outdent]
+
+  generate: generate

Look up a tag by token index.

  tag: (i) -> @tokens[i]?[0]

Constants

List of the token pairs that must be balanced.

BALANCED_PAIRS = [
   ['(', ')']
   ['[', ']']
   ['{', '}']
@@ -244,20 +305,21 @@ different precedence.

['CALL_START', 'CALL_END'] ['PARAM_START', 'PARAM_END'] ['INDEX_START', 'INDEX_END'] -]

The inverse mappings of BALANCED_PAIRS we're trying to fix up, so we can -look things up from either end.

exports.INVERSES = INVERSES = {}

The tokens that signal the start/end of a balanced pair.

EXPRESSION_START = []
+]

The inverse mappings of BALANCED_PAIRS we're trying to fix up, so we can +look things up from either end.

exports.INVERSES = INVERSES = {}

The tokens that signal the start/end of a balanced pair.

EXPRESSION_START = []
 EXPRESSION_END   = []
 
 for [left, rite] in BALANCED_PAIRS
   EXPRESSION_START.push INVERSES[rite] = left
-  EXPRESSION_END  .push INVERSES[left] = rite

Tokens that indicate the close of a clause of an expression.

EXPRESSION_CLOSE = ['CATCH', 'WHEN', 'ELSE', 'FINALLY'].concat EXPRESSION_END

Tokens that, if followed by an IMPLICIT_CALL, indicate a function invocation.

IMPLICIT_FUNC    = ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '@', 'THIS']

If preceded by an IMPLICIT_FUNC, indicates a function invocation.

IMPLICIT_CALL    = [
+  EXPRESSION_END  .push INVERSES[left] = rite

Tokens that indicate the close of a clause of an expression.

EXPRESSION_CLOSE = ['CATCH', 'WHEN', 'ELSE', 'FINALLY'].concat EXPRESSION_END

Tokens that, if followed by an IMPLICIT_CALL, indicate a function invocation.

IMPLICIT_FUNC    = ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '@', 'THIS']

If preceded by an IMPLICIT_FUNC, indicates a function invocation.

IMPLICIT_CALL    = [
   'IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START', 'CLASS'
   'IF', 'TRY', 'SWITCH', 'THIS', 'BOOL', 'NULL', 'UNDEFINED', 'UNARY', 'SUPER'
   '@', '->', '=>', '[', '(', '{', '--', '++'
 ]
 
-IMPLICIT_UNSPACED_CALL = ['+', '-']

Tokens indicating that the implicit call must enclose a block of expressions.

IMPLICIT_BLOCK   = ['->', '=>', '{', '[', ',']

Tokens that always mark the end of an implicit call for single-liners.

IMPLICIT_END     = ['POST_IF', 'FOR', 'WHILE', 'UNTIL', 'WHEN', 'BY', 'LOOP', 'TERMINATOR']

Single-line flavors of block expressions that have unclosed endings. +IMPLICIT_UNSPACED_CALL = ['+', '-']

Tokens indicating that the implicit call must enclose a block of expressions.

IMPLICIT_BLOCK   = ['->', '=>', '{', '[', ',']

Tokens that always mark the end of an implicit call for single-liners.

IMPLICIT_END     = ['POST_IF', 'FOR', 'WHILE', 'UNTIL', 'WHEN', 'BY',
+  'LOOP', 'TERMINATOR']

Single-line flavors of block expressions that have unclosed endings. The grammar can't disambiguate them, so we insert the implicit indentation.

SINGLE_LINERS    = ['ELSE', '->', '=>', 'TRY', 'FINALLY', 'THEN']
-SINGLE_CLOSERS   = ['TERMINATOR', 'CATCH', 'FINALLY', 'ELSE', 'OUTDENT', 'LEADING_WHEN']

Tokens that end a line.

LINEBREAKS       = ['TERMINATOR', 'INDENT', 'OUTDENT']
+SINGLE_CLOSERS   = ['TERMINATOR', 'CATCH', 'FINALLY', 'ELSE', 'OUTDENT', 'LEADING_WHEN']

Tokens that end a line.

LINEBREAKS       = ['TERMINATOR', 'INDENT', 'OUTDENT']
 
 
\ No newline at end of file diff --git a/documentation/docs/sourcemap.html b/documentation/docs/sourcemap.html new file mode 100644 index 00000000..0d1bca45 --- /dev/null +++ b/documentation/docs/sourcemap.html @@ -0,0 +1,155 @@ + sourcemap.coffee

sourcemap.coffee

LineMapping

Hold data about mappings for one line of generated source code.

class LineMapping
+  constructor: (@generatedLine) ->

columnMap keeps track of which columns we've already mapped.

    @columnMap = {}

columnMappings is an array of all column mappings, sorted by generated-column.

    @columnMappings = []
+
+  addMapping: (generatedColumn, [sourceLine, sourceColumn], options={}) ->
+    if @columnMap[generatedColumn] and options.noReplace

We already have a mapping for this column.

      return
+
+    @columnMap[generatedColumn] = {
+      generatedLine: @generatedLine
+      generatedColumn
+      sourceLine
+      sourceColumn
+    }
+
+    @columnMappings.push @columnMap[generatedColumn]
+    @columnMappings.sort (a,b) -> a.generatedColumn - b.generatedColumn
+
+  getSourcePosition: (generatedColumn) ->
+    answer = null
+    lastColumnMapping = null
+    for columnMapping in @columnMappings
+      if columnMapping.generatedColumn > generatedColumn
+        break
+      else
+        lastColumnMapping = columnMapping
+    if lastColumnMapping
+      answer = [lastColumnMapping.sourceLine, lastColumnMapping.sourceColumn]

SourceMap

Maps locations in a generated source file back to locations in the original source file.

+ +

This is intentionally agnostic towards how a source map might be represented on disk. A +SourceMap can be converted to a "v3" style sourcemap with #generateV3SourceMap(), for example +but the SourceMap class itself knows nothing about v3 source maps.

class exports.SourceMap
+  constructor: () ->

generatedLines is an array of LineMappings, one per generated line.

    @generatedLines = []

Adds a mapping to this SourceMap.

+ +

sourceLocation and generatedLocation are both [line, column] arrays.

+ +

If options.noReplace is true, then if there is already a mapping for +the specified generatedLine and generatedColumn, this will have no effect.

  addMapping: (sourceLocation, generatedLocation, options={}) ->
+    [generatedLine, generatedColumn] = generatedLocation
+
+    lineMapping = @generatedLines[generatedLine]
+    if not lineMapping
+      lineMapping = @generatedLines[generatedLine] = new LineMapping(generatedLine)
+
+    lineMapping.addMapping generatedColumn, sourceLocation, options

Returns [sourceLine, sourceColumn], or null if no mapping could be found.

  getSourcePosition: ([generatedLine, generatedColumn]) ->
+    answer = null
+    lineMapping = @generatedLines[generatedLine]
+    if not lineMapping

TODO: Search backwards for the line?

    else
+      answer = lineMapping.getSourcePosition generatedColumn
+
+    answer

fn will be called once for every recorded mapping, in the order in +which they occur in the generated source. fn will be passed an object +with four properties: sourceLine, sourceColumn, generatedLine, and +generatedColumn.

  forEachMapping: (fn) ->
+    for lineMapping, generatedLineNumber in @generatedLines
+      if lineMapping
+        for columnMapping in lineMapping.columnMappings
+          fn(columnMapping)

generateV3SourceMap

Builds a V3 source map from a SourceMap object. +Returns the generated JSON as a string.

exports.generateV3SourceMap = (sourceMap, sourceFile=null, generatedFile=null) ->
+  writingGeneratedLine = 0
+  lastGeneratedColumnWritten = 0
+  lastSourceLineWritten = 0
+  lastSourceColumnWritten = 0
+  needComma = no
+
+  mappings = ""
+
+  sourceMap.forEachMapping (mapping) ->
+    while writingGeneratedLine < mapping.generatedLine
+      lastGeneratedColumnWritten = 0
+      needComma = no
+      mappings += ";"
+      writingGeneratedLine++

Write a comma if we've already written a segment on this line.

    if needComma
+      mappings += ","
+      needComma = no

Write the next segment. +Segments can be 1, 4, or 5 values. If just one, then it is a generated column which +doesn't match anything in the source code.

+ +

Fields are all zero-based, and relative to the previous occurence unless otherwise noted: + * starting-column in generated source, relative to previous occurence for the current line. + * index into the "sources" list + * starting line in the original source + * starting column in the original source + * index into the "names" list associated with this segment.

Add the generated start-column

    mappings += exports.vlqEncodeValue(mapping.generatedColumn - lastGeneratedColumnWritten)
+    lastGeneratedColumnWritten = mapping.generatedColumn

Add the index into the sources list

    mappings += exports.vlqEncodeValue(0)

Add the source start-line

    mappings += exports.vlqEncodeValue(mapping.sourceLine - lastSourceLineWritten)
+    lastSourceLineWritten = mapping.sourceLine

Add the source start-column

    mappings += exports.vlqEncodeValue(mapping.sourceColumn - lastSourceColumnWritten)
+    lastSourceColumnWritten = mapping.sourceColumn

TODO: Do we care about symbol names for CoffeeScript? Probably not.

    needComma = yes
+
+  answer = {
+    version: 3
+    file: generatedFile
+    sourceRoot: ""
+    sources: if sourceFile then [sourceFile] else []
+    names: []
+    mappings
+  }
+
+  return JSON.stringify answer, null, 2

Load a SourceMap from a JSON string. Returns the SourceMap object.

exports.loadV3SourceMap = (sourceMap) ->
+  todo()

Base64 encoding helpers

BASE64_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
+MAX_BASE64_VALUE = BASE64_CHARS.length - 1
+
+encodeBase64Char = (value) ->
+  if value > MAX_BASE64_VALUE
+    throw new Error "Cannot encode value #{value} > #{MAX_BASE64_VALUE}"
+  else if value < 0
+    throw new Error "Cannot encode value #{value} < 0"
+  BASE64_CHARS[value]
+
+decodeBase64Char = (char) ->
+  value = BASE64_CHARS.indexOf char
+  if value == -1
+    throw new Error "Invalid Base 64 character: #{char}"
+  value

Base 64 VLQ encoding/decoding helpers

Note that SourceMap VLQ encoding is "backwards". MIDI style VLQ encoding puts the +most-significant-bit (MSB) from the original value into the MSB of the VLQ encoded value +(see http://en.wikipedia.org/wiki/File:Uintvar_coding.svg). SourceMap VLQ does things +the other way around, with the least significat four bits of the original value encoded +into the first byte of the VLQ encoded value.

VLQ_SHIFT      = 5
+VLQ_CONTINUATION_BIT = 1 << VLQ_SHIFT # 0010 0000
+VLQ_VALUE_MASK       = VLQ_CONTINUATION_BIT - 1 # 0001 1111

Encode a value as Base 64 VLQ.

exports.vlqEncodeValue = (value) ->

Least significant bit represents the sign.

  signBit = if value < 0 then 1 else 0

Next bits are the actual value

  valueToEncode = (Math.abs(value) << 1) + signBit
+
+  answer = ""

Make sure we encode at least one character, even if valueToEncode is 0.

  while valueToEncode || !answer
+    nextVlqChunk = valueToEncode & VLQ_VALUE_MASK
+    valueToEncode = valueToEncode >> VLQ_SHIFT
+
+    if valueToEncode
+      nextVlqChunk |= VLQ_CONTINUATION_BIT
+
+    answer += encodeBase64Char(nextVlqChunk)
+
+  return answer

Decode a Base 64 VLQ value.

+ +

Returns [value, consumed] where value is the decoded value, and consumed is the number +of characters consumed from str.

exports.vlqDecodeValue = (str, offset=0) ->
+  position = offset
+  done = false
+
+  value = 0
+  continuationShift = 0
+
+  while !done
+    nextVlqChunk = decodeBase64Char(str[position])
+    position += 1
+
+    nextChunkValue = nextVlqChunk & VLQ_VALUE_MASK
+    value += (nextChunkValue << continuationShift)
+
+    if !(nextVlqChunk & VLQ_CONTINUATION_BIT)

We'll be done after this character.

      done = true

Bits are encoded least-significant first (opposite of MIDI VLQ). Increase the +continuationShift, so the next byte will end up where it should in the value.

    continuationShift += VLQ_SHIFT
+
+  consumed = position - offset

Least significant bit represents the sign.

  signBit = value & 1
+  value = value >> 1
+
+  if signBit then value = -value
+
+  return [value, consumed]
+
+
\ No newline at end of file diff --git a/documentation/index.html.erb b/documentation/index.html.erb index e739567d..d4710b6e 100644 --- a/documentation/index.html.erb +++ b/documentation/index.html.erb @@ -51,7 +51,7 @@ Literate CoffeeScript Language Reference Literals: Functions, Objects and Arrays - Lexical Scoping and Variable Safety + Lexical Scoping and Variable Safety If, Else, Unless, and Conditional Assignment Splats... Loops and Comprehensions @@ -60,13 +60,14 @@ Operators and Aliases Classes, Inheritance, and Super Destructuring Assignment - Function Binding + Function Binding Embedded JavaScript Switch and Try/Catch Chained Comparisons String Interpolation, Block Strings, and Block Comments Block Regular Expressions Cake, and Cakefiles + Source Maps "text/coffeescript" Script Tags Books, Screencasts, Examples and Resources Change Log @@ -109,6 +110,7 @@ "coffee" Command-Line Utility — src/command Option Parsing — src/optparse Interactive REPL — src/repl + Source Maps — src/sourcemap @@ -137,9 +139,12 @@

Latest Version: - 1.5.0 + 1.6.0

+
+sudo npm install -g coffee-script
+

Overview @@ -218,6 +223,13 @@ sudo bin/cake install of the same name.

-m, --map + Generate source maps alongside the compiled JavaScript files. Adds + sourceMappingURL directives to the JavaScript as well. +
-i, --interactive @@ -290,7 +302,7 @@ sudo bin/cake install -b, --bare Compile the JavaScript without the - top-level function safety wrapper. + top-level function safety wrapper.
-m, --map + Generate source maps alongside the compiled JavaScript files. Adds + sourceMappingURL directives to the JavaScript as well. +
-i, --interactive @@ -383,7 +395,7 @@ sudo bin/cake install -b, --bare Compile the JavaScript without the - top-level function safety wrapper. + top-level function safety wrapper.